【クラスローダ】JVMが読み込むクラスを見つける仕組み【パッケージ】

NoClassDefFoundError や ClassNotFoundException に遭遇した時など,Java で書くならクラスローディングについてある程度知っておいたほうがよいケースというのはあるかなあと思い調べたときのメモ.なんとなくの概要. クラスローダ 基本的な仕組み Java …

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

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

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

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

PHPコードのコンパイルの流れメモ

PHP

久しぶりに PHP を触り処理系の動きがどんな感じだったのか忘れたのでおさらいメモ.ざっくりと大枠. PHP では実行時にソースコードがコンパイルされます.で,最終的にオペコードと呼ばれる中間コードに変換され,実行マシンによって逐次的に実行されます…

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

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

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

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

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

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

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

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

JetBrains IDE でカーソルの位置にある単語を削除するショートカットを作る

IDE

普段 IntelliJ や RubyMine などの JetBrains IDE を使っているのですが,環境設定の Keymap を見ても,カーソルが置いてある場所にある単語を単語ごと削除するショートカットが見当たりませんでした. 今回は Macro を使ってこのショートカットを作る方法を…

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

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

ブロックチェーンとは何なのか、ややこしいところを中心に概要をざっくりと

ここ数年でブロックチェーンという単語をよく耳にするようになりました。が、イマイチ理解できていなかったので、自分なりにまとめ。備忘メモ。 具体的な動作や理論については書きません、概要をざっくりと書きます。 ブロックチェーン is 何 思想などは後回…

gulpとかGruntとか

gulp を知った時のメモ。 Rails で開発していた時に scss(sass) に触れて、便利だなーと思ってました。で、最近静的な Web サイトを作る機会があって、そこでも scss で書きたくて書いたのはいいのですが、いちいち手動でコンパイルや圧縮、自動ベンダープレ…

【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ブラウザ操作の自動化ツールを使えばそのようなスクレイピ…

RubyでHTTPクライアント→HTTPプロキシ→サーバの流れを実装してみる

● HTTPクライアント (httpclient) ● HTTPプロキシ (webrick) ● サーバ (CGI) を書いて、HTTP クライアントからプロキシ経由でリクエストを投げてサーバで受け取る、という一連の流れを実装してみようと思った時のメモ。 受け取り側のサーバだけ CGI を…

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

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

DebianにNVIDIAのドライバを入れたかったけど躓いた

いくつか躓くポイントがあったのでメモ。 以下、手順を書いていきます。 ドライバのダウンロード これが無ければ始まりません。以下から自分のビデオカードに対応するドライバを適当な場所にダウンロードします。 NVIDIAドライバダウンロード ドライバのイン…

AWSのAutoScalingの設定をしてみる

AWS

AWS の AutoScaling 機能を使う機会があったので、忘れないうちに設定方法を書いておきます。 AutoScaling とは 負荷に応じて EC2 インスタンスの数を自動的に増減してくれる機能です。水平方向の負荷分散、所謂スケールアウトを動的に実現します。また、増…

重複行をまとめた上でのカウントはGROUP BYではなくDISTINCTを使う

"重複したカラムをまとめた上でのカウント" がしたい時に、いつもどおりGROUP BYを使ったらうまくカウントできませんでした。 そりゃそうだろ、という話ではありますが。 以下、MySQLを使っています。 例えば、ユーザが何かしらの投稿をするサイトがあって、…

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

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

【Elasticache】ELB配下の複数インスタンス間でのセッション管理【Laravel】

AWS の ELB に複数のインスタンスをぶら下げて負荷分散をしようと思った際に、Laravel アプリのセッション管理について考えたメモです。 ユーザにログインさせる必要があるアプリは、ELB によって接続先インスタンスを振り分けられたとしても、そのセッショ…

Apache2.4 を event MPM + FastCGI で動かす

ApacheのMPMとして、プロセスベースの並列実行をする prefork を使用していたのですが、省メモリのためにスレッドベースの並列実行をする event へ変更しました。構成としては、Apache2.4 + event + mod_proxy_fcgi + php-fpm です。 それぞれの MPM の特徴…

Apache MPMとはなんぞやという話

Apache のチューニングにあたって MPM について知ったしたときのメモ、なんとなくの概要。 Apache MPM is 何か、ざっくりと。 Webサーバの実装モデルの話 MPMの話に入る前に、Webサーバの基本的な並行処理のモデルをおさえておきます。 Webサーバに接続する…

EC2インスタンスがCloundWatchにカスタムメトリクスの情報を送信してくれなかった

CloudWatchでEC2インスタンスのメモリ情報とかをモニタリングしたいと思った時にうまく行かなかった時のメモ。 流れとしてはこのような感じです。 必要な情報(メモリ使用率とか)をCloudWatchに送信する設定が完了したインスタンスを作成 作成したインスタ…

MySQL バイナリログとInnoDBログについて調べたメモ

MySQLのストレージエンジンであるInnoDBに備わっているバイナリログとInnoDBログについてよく分からなかったので軽く触れてみることにしましたが、ちょっと情報が古いかもしれません。 InnoDBには、InnoDBログとバイナリログが存在します。InnoDBログはInnoD…

変数を使ってORDER BYで指定するカラムを動的に変えようとしたらうまくいかなかった

変数に格納されている値によってSQLのORDER BY句を変化させてみよう、と思ったらうまくいかなかったのでその時のメモです。 また、ここではキャッシュの使用ついては考えません。ちなみにLaravelを使ってます。 php - How do I set ORDER BY params using pr…

VagrantとAnsibleでEC2インスタンスを起動してみる

試します。 前提 作業はEC2インスタンスにSSHでログインしてEC2インスタンス上で行う AMIには、作業するインスタンスと立ち上げるインスタンス共にAmazon Linuxを使用する VPC使用、上記2つのインスタンスは同じVPC内の同じサブネット内に作成 立ち上げたイ…

LaravelでS3に画像アップロードしようと思ったらエラー

league/flysystem-aws-s3-v3 を使って画像アップロードしようとしたら怒られました。 クライアント側ではなくサーバ側でアップロード処理を行うケースです。 リソース型でも文字列型でもないオブジェクトをアップロードメソッドに渡してアップロードしようと…

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

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