プログラミング

Javaでtail -fならcommons-ioが楽

Java で tail -f のようなファイルの監視をしたい時に0から実装するのもなかなか面倒くさいです.Apache commons-io というライブラリにそれを簡単に実現できる機能があったのでメモしておきます. Commons IO IO 系をよしなに扱うためのオープンソースライ…

JavaでShell的に使えるコマンドラインツールを作る

Java でコマンドラインツールを作ったときのメモ.あえて Java でやる必要性は無いのですが,なんとなく Java で書きたいこともあるでしょう. JCommanderを使ってコマンドライン引数の管理する 基本的にコマンドはオプションありきなので,引数をパースして…

Javaにおける検査例外の有効性と非検査例外との使い分けについて考えたこと

Java での検査例外と非検査例外の使い分けについて少し考えたときのメモ.どうやら検査例外を使う使わないについては賛否両論あるらしく,ネットで検索してみても,ブログ等でいくらか議論されていることがわかります.それらの記事を眺めながら,検査例外に…

【Java6から】古いJavaのサンプルコードを用意してモダン化してみる【Java10まで】

勉強用にやってみた時のメモ。アップデートと共に書き方が変わるのは Java に限った話ではありませんが、Java は特に昔と今で書き方を大きく変えられる言語な印象があります。Java の勉強中にネット記事を眺めていても、バージョンの異なる色々な書き方が混…

なぜJavaの文字列(String)はイミュータブルなのか

Java における String は不変(イミュータブル)であるというのはよく知られていることだと思います.が,なぜそうなっているのかということについては考えたことがありませんでした.今回はその理由についてメモ. 理由① String Pool のため Java では Stri…

【図解】値渡し、アドレス渡し、参照渡しをメモリマップ的な視点でまとめる

結論 値渡し 仮引数が確保したメモリの値に引数の値をコピーする方法 アドレス渡し 仮引数が確保したメモリの値に引数のアドレスをコピーする方法 参照渡し 仮引数に引数と同じメモリ領域を指させる方法 背景 プログラムを書いていると「◯◯渡し」という言葉…

Mansory で表示した時に要素が重なる件

Webページを作っていて,画像などの大きさの異なる要素を繰り返しで表示する場合にはタイル状(レンガ状?)に敷き詰めて配置できると綺麗ですね.Masonry という JavaScript ライブラリを使うとこれを非常に簡単にやってくれるので便利.なのですが,配置し…

【Rails】関連(アソシエーション)をもったモデルを構造化してElasticsearchに格納する

RailsでElasticsearchを使ってみたときのメモ. Articles <-> Authorships <-> Authors という関連を持ったモデル群があるときに,例えば記事(Article)を全文検索したら著者名も検索対象に入れたい. gem 'elasticsearch-rails' gem 'elasticsearch-model' …

RubyでHashをfreezeして定数にしたけど要素にアクセスできなかった

Hashを定数として扱おうと思ったときのメモ. Rubyの定数はミュータブルなので,freezeメソッドを使って明示的にイミュータブルにしておく必要があります.それから,ArrayやHashなどのコレクションを定数にするときには要素もfreezeします.これをしないと…

AmazonLinux(EC2) + Selenium + Ruby でスクレイピング

Seleniumを使ってAmazonLinux上でスクレイピングをやってみたときのメモ. nokogiri単体とかだとJavascriptで動的にHTMLが書き換わるようなサイトのスクレイピングはできませんが,SeleniumというWebブラウザ操作の自動化ツールを使えばそのようなスクレイピ…

【Twitter4J】特定のキーワードを呟いた人をフォローする的なやつ【Bot】

※ 追記 こんな記事を書いておいてアレですが、どうやら Twitter では自動フォローは規約で禁止されているみたいです。ここに書いてあるようなことを実行してバレると、アカウントを凍結されます。注意。 support.twitter.com ===============…

Slack上で日程調整するアプリをGASで書いてみる

最近 GAS(Google Apps Script) や SlackBot の存在を知って、慣れていけばいろいろ捗りそうな気がしたので触ってみた時のメモ。 今は特に GAS で自動化したいようなものは無かったので、SlackBot と連携して簡易的な日程調整、出席管理アプリを作って遊んで…

Laravel で定期的にジョブを実行する

タイトルの通りです。 まとめていきます。 Laravel5 のタスクスケジュール Laravel4 まで、コンソールコマンドをスケジュールする場合にはCronエントリーを毎回作成して、SSH接続しサーバ側に追加する必要がありました。 これは、ジョブを追加したい側にとっ…