Screaming Loud

研究・プログラミングなど気づいたことをメモをしています。読書記録はこちらに記載しています。https://bookmeter.com/users/75944

プログラミング

ScalikeJDBCのInsertで予約語を使う

今更ペルソナ5を始めました。 背景 MySQLのカラムに予約語を使う場合、バッククオートで以下のように囲むことが一般的です。 create table log(id int auto_increment, user_id int, from datetime, to datetime); insert into log(`user_id`, `from`, `to`)…

play2.4向けにi18n(国際化)をアップデートした話

概要 以前GlobalSettingの撲滅に関してブログを書きましたが、言語対応に関して書いていなかったので、続編ということでブログにまとめました。 yuutookun.hatenablog.com 概要 前提 根本対応 1.コントローラーをInjectionの形に移行 2.DefaultMessageAp…

技術力を高めるだけがエンジニアの生存戦略なのか?

以前からエンジニアの生存戦略というのはホウボウで語られている。*1 それぞれ色んなエンジニアとして生き方があるが、共通して皆が言っているのはどのポイントで尖るかということだ。 しかし、自分は「信頼」だと思っている。 エンジニアとして生き残る →職…

SprayからAkkaHTTPへ ~ライブラリのマイグレーション~

みなさんいかがお過ごしでしょうか? 最近NierAutomataクリアしました。 今回はSprayからAkkaHTTPへの移行に関して紹介します。 SprayとAkkaHTTPとは? SprayとはシンプルなScalaのHTTPフレームワーク(というよりモジュール)。すでに開発がストップしてお…

Scala用のコレクション操作の拡張ライブラリsansyo(山椒)を作りました

タイトルの通り、Scala用のコレクション操作の拡張ライブラリを作りました。 名前はsansyoです。 意味としては、 「山椒は小粒でもぴりりと辛い」 から来ていて、コレクションの拡張ライブラリのため、小さいですが便利になるものとして作りました。 ライブ…

Play2.4で非推奨のGlobalSettingをなくす

Play2.4で非推奨、かつPlay2.5ではなくなっているGlobalSettingの消し方を紹介します。 なかなか大変なので、ブログにまとめておきました。 Global.scalaで書いていたコード Play2.3で書いていたGlobal.scalaのコードを記載します。 object Global extends W…

fileを開いて指定行数分取得する

fileを開いて、指定行数の分だけ取得するというロジックを作成していたのですが、 そもそもinputが指定行数以上あるかどうかを知りたかったので、そこもうまく取得できるような実装にする必要がありました。BufferedReaderで最後の値が、nullになるので、nul…

Scalaの値クラスのバグ?

値クラスを使っていて不可解な挙動があったので、まとめたのとその対処法をメモしておきます。 値クラスとは 値クラスとはIntやStringが継承しているAnyValを継承させたクラスです。 一つの値しか持ちませんが拡張メソッドを実装できるため、DDDなどを実現す…

ServerlessConf Tokyoに参加してきました。

serverlessconfに参加してきました。 serverlessに関しての知見があまりなかったので、すごい有意義な勉強会となりました。 そもそもserverlessとは serverlessによって実現できること serverlessの思想 現状 そもそもserverlessとは パネルディスカッション…

spray-canで何故か同時に接続できずconnection reset by peerが発生する

sprayフレームワークを使っていると、HTTPリクエストの部分はspray-canを利用すると思います。しばらく、spray-canを使っていたのですが、いくつか重い処理を走らせるとCPUを使い切っていないのに、sprayがリクエストを受け付けなくなってしまい、502 BadGat…

最短でsbtのコマンドを追加する方法

sbtと打つとREPLが起動し、runしたりtestが走らせられたり色んな挙動をさせられる。しかし、自分でコマンドを作ろうと調べてみると、案外出てこない。ということで最短でコマンド作成を紹介します。 最短でHelloという文字を出力させる Helloという文字列を…

scalaNLPに含まれているライブラリを調べてみる

Scalaにもnumpy, scipyのような数値計算ライブラリがあります。ScalaNLPというレポジトリで登録されています。 github.comでは、どんなものがあるか調べてみます。 breeze Breezeは、数値計算ライブラリです。 numpyのようなもので、行列計算などを操作する…

scalaからProcessを使って違うディレクトリでshを叩く

scalaでは他の言語でもできるように、コマンドを叩くことができます。実際に色んな方が、Processの仕方を紹介をしています。 scala.sys.process | Scalaの標準ライブラリを使ってみる | mwSoft Scala 2.9.0のscala.sys.processパッケージが便利過ぎる件につ…

The server quit without updating PID fileが発生して起動できない。

YosemiteからEICapitanにアップデートしたんですが、 その際にMySQLが起動できなくなったので、その解決法を共有します。【環境】 MacOSX 10.11.2 $ mysql --version mysql Ver 14.14 Distrib 5.6.26, for osx10.10 (x86_64) using EditLine wrapper (brew…

新しいfirefoxのweb extensionsがChromeExtentionとの互換性そのままだった

今回、firefox dev conferenceに参加してきました。www.mozilla.jp そこで聞いてきた、webextensionsに関して試してみたので、ログっておきます。firefoxはアドオンの機能に関して、Chromeの拡張機能と同じ仕様を搭載することを発表しています。dev.mozilla.…

単層パーセプトロンをScalaで実装

久しぶりに実装してみました。 多分実装できていると思います。。実装に関してはPythonと同じ位簡単なんですが、 Scalaでやる場合は、データセットの読み込みとかランダムデータを作るのが結構めんどいんで、どうするのがいいのかってところが困りますね。以…

ScalaにおけるSeq, Option, Futureとmap,flatMap の扱い

Scalaにおける一つ目の関門は、forやmapを使ってOption型を操作することだと思います。そこで、forやOptionやFutureを理解しやすいようなイメージを共有したいと思います。 Scalaでのmap 「Scalaの型でのラッピングは同じ扱い」 これは何かというと、Seqであ…

あなたはPlayに貢献していますか?

少し偉そうなタイトルをつけてしまったのですが、Playを使っている方はぜひやるといいなーと思ったことを紹介します。それは・・・・、 PlayFrameworkの翻訳 です。あんまり気づかないかもしれませんが、じつはプルリクで全て管理しています。 (別に自分は…

プロジェクトを始める前に確認しておきたいこと

Web開発などをスタートする際に、どういうスタートを切ればいいかに困った、プラス、プロジェクトを始めるという経験をして振り返ったときに、こうすればよかったみたいなのがあったので、次のプロジェクトではそれを活かせるように書き留めておこうと思いま…

GitLFSを触ってみた

最近GitHubが発表したGitLFSを触ってみたので、まとめました。話題のGOで作られています。ただGitLFSということで、なんかすごいことをやってるのかと思いきや、案外ふつうのコトをやっていたので、内容は薄いです。さらに、GOに対する知識が少ないからかテ…

ドメイン駆動設計についてのまとめ その1

ドメイン駆動設計について勉強・実践しているため、そのアウトプットととして、まとめていきたいと思います。 【ソフトウェアはなぜ作る必要があるのか?】 大前提として、ソフトウェアはなぜ作るのか?ということを認識している必要があります。 【なぜ導入…

influxDBとMySQLの比較

influxDB 時系列用のデータベースとして作られています。 Goで書かれており、導入に際して特に依存しているものはありません。 用途 DevOpsのためのデータ計測の格納先としての利用です。2013年に大きく盛り上がったinfluxDBを少し遊んでみようと思い、いく…

scalaでssh処理(ssh, scpなど)

scalaでssh処理をしたい!ってなった時に、まず思いつくのは、sys.processだと思います。 sys.processを使えば、生のコマンドが実行できますので、自由にsshだったりなんだったりできます。しかし、sprayやAkkaのコミッターである sirthias (Mathias) · GitH…

slickのupdateで動的にクエリを作れなくてハマった

slickでは、SQLを書かずにクエリを投げられます。その書き方に関しては、 Coming from SQL to Slick — Slick 2.1.0 documentationに書いてあります。ただ、少し違ったことをしようとするとなかなか実現できません。 今回実現しようとしていたこと update文で…

slickのcode generatorをmysqlで動かしてみた

slickのcode generatorを使ってみました。code generatorとは、DBの接続するscalaファイルをsbtコマンドを使うことで作成してくれるものです。slick/slick-codegen-example slick/slick-codegen-example · GitHub では、H2Driverを使っての例なため、MySQLDr…

ScalaBlitzの使い方

ScalaBlitzの使い方をめちゃくちゃ簡単にまとめてみました。 ScalaBlitzとはなんなのか? ユーザが何も気にすることなく、並列化を行えるライブラリ、それがScalaBlitzである。 なんで作った? Scala2.9で並列コレクションがリリースされた。 ネイティブに並…

PyConJp2014に参加してきた

この季節は、カンファレンスてんこ盛りですね。今日は、PyConJpに参加してきました。 基調講演 HerokuのKenneth Reitz氏でした。 普通にPython3をdisってましたねw DeepLearning for Image Recognition in Python DeepLeaning自体の難しいことは話さず、ラ…

sprayの起動とテストなど

ベンチマークがくっそ速くて、JVM最速と思われるspray*1の日本語記事が全然ないです。ってことで、起動方法とテストの方法をメモしておきます。sprayの起動などの操作は、sbtのコンソール上で行います。 起動 $ sbt [info] Set current project to workspace…

ScalaのListとVector適当に比較してみた。

まだまだscalaをよくわかってないんですが、 以下のように乱数リストを作って、 それを文字列にするというめっちゃくちゃなことをしてみたら java.lang.OutOfMemoryErrorが出ちゃいました。 調べたら、色々出てきました。モバイル開発系(K)-Scala Tips JVMの…

今日のawkコマンド 最初or 最後のフィールドの値のみ除外

以下のようなファイルがあった時、先頭の数値のみ取り除きたいときのawkコマンド $ cat a.txt 1 ls 2 touch test 3 test 4 echo "hoge hoge" > test こんな場合、$0と代入を組み合わせるとできる! # 最初のフィールドを除外する場合 $ awk '{$1="";print $0…