マルコフ連鎖の実験のためにMeCabをCentOSにインストール
マルコフ連鎖の実験をしたいがために、 京都大学情報学研究科と日本電信電話株式会社コミュニケーション科学基礎研究所が開発しているオープンソースの形態素解析エンジン「MeCab」 (和布蕪 めかぶ)をインストールするためのメモです。
本体をインストール
$ cd /tmp $ wget https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7cENtOXlicTFaRUE $ tar zxfv mecab-X.X.tar.gz $ cd mecab-X.X $ ./configure --enable-utf8-only $ make $ make check # make install
辞書ファイルをインストール
$ cd /tmp $ wget https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7MWVlSDBCSXZMTXM $ tar zxfv mecab-ipadic-2.7.0-XXXX.tar.gz $ cd mecab-ipadic-2.7.0-XXXX $ ./configure --with-charset=utf8 $ make # make install
試してみる
$ mecab すもももももももものうち すもも 名詞,一般,*,*,*,*,すもも,スモモ,スモモ も 助詞,係助詞,*,*,*,*,も,モ,モ もも 名詞,一般,*,*,*,*,もも,モモ,モモ も 助詞,係助詞,*,*,*,*,も,モ,モ もも 名詞,一般,*,*,*,*,もも,モモ,モモ の 助詞,連体化,*,*,*,*,の,ノ,ノ うち 名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ EOS
うまくいってるっぽい。 このライブラリを使って今後マルコフ連鎖の実験をしていく。
- 作者: Steven Bird,Ewan Klein,Edward Loper,萩原正人,中山敬広,水野貴明
- 出版社/メーカー: オライリージャパン
- 発売日: 2010/11/11
- メディア: 大型本
- 購入: 20人 クリック: 639回
- この商品を含むブログ (44件) を見る
jQueryで$(form).submit()でフォームが送信されない場合の対処法
jQueryで、$(form).submit()などを使っても下記のようなボタンにするとフォームが送信されない場合があります。
<input type="submit" id="submit" value="post" /> <input type="submit" class="submit" value="post" /> <input type="submit" name="submit" value="post" />
submitボタンのid,class,name属性に「submit」という名前を使用すると送信できないので、使わないようにしましょう。
jQueryを使ってフォームの二重送信を防止する方法 複数ボタンの場合編
前回1つのフォームに1つのボタンがあった場合のフォーム2重送信防止方法を記しました。 今回は1つのフォームに複数ボタンが有る場合の2重送信を防止する方法を記します。
<form class="multiBtnForm"> <input class="disableMultiBtn" type="submit" name="post" value="post"> <input class="disableMultiBtn" type="submit" name="back" value="back"> </form> <script> $('.disableMultiBtn').on('click', function(){ $('<input />').attr('type', 'hidden') .attr('name', $(this).attr('name')) .attr('value', $(this).val()) .appendTo('.multiBtnForm'); $(this).text('please wait...'); $(this).attr('disabled', true); $(this).closest('form').submit(); }); </script>
フォームを送信する前にsubmitボタンにある要素を使って、hiddenタグを作成。 その後ボタンをdisabledにして、送信しています。
ボタンタグにある情報を付加するとフォームが送信できなくなります。 その注意点はこちら。
jQueryを使ってフォームの二重送信を防止する方法
サーバーサイド側で2重送信されないように処理するのが一般的ですが、 jQueryを使ってsubmitボタンをダブルクリックを防止するサンプルを記します。
<input type="submit" class="disableBtn" value="post"> <script> $('.disableBtn').on('click', function(){ $(this).text('please wait...'); $(this).attr('disabled', true); $(this).closest('form').submit(); }); </script>
クリックするとボタンの表示が「post」から「please wait...」に変わり、ボタンがクリックできなくなっていることがわかります。
通常なら上記の方法で2重送信を防止することができますが、1つのフォームに複数ボタンがあって、name属性で処理を変更している場合、jQueryの仕様上、submitボタンのname属性が拾えず、上記の方法では対応できません。 その場合の対処法はこちら。
composer install と composer update の違い
PHPの依存管理ツールにComposerついて。installとupdateの違いについてまとめます。
各ファイルの説明
composer.json
必要となるライブラリを記載します。
composer.lock
composer.jsonを元にインストールした各ライブラリのバージョンが記載されています。
コマンドについての説明
composer update
composer.jsonをもとに各ライブラリを最新版に更新します。
その際、composer.lockが生成されます。
カレントディレクトリにcomposer.lockがあっても、そこに記載されているバージョン関係なしに最新版にします。
composer install
composer.lockを元にライブラリをインストールします。
composer.lockが存在しない場合、composer updateと同じくライブラリを最新版にします。
まとめ
composer.lockをチーム内で共有してcomposer installすればライブラリのバージョンは揃いますね。
- 作者: 小川雄大,柄沢聡太郎,橋口誠
- 出版社/メーカー: 技術評論社
- 発売日: 2010/11/12
- メディア: 大型本
- 購入: 32人 クリック: 1,065回
- この商品を含むブログ (60件) を見る
Apacheのmod_expiresというキャッシュモジュールを使ってWEBサイトを高速化しよう
Apacheにはmod_expiresというキャッシュモジュールがあります。 クライアント側で画像やCSSなどファイルをキャッシュさせるモジュールです。 これを利用し、転送量を減少させてWEBサイトの負荷対策します。 キャッシュを利用すると負荷対策ばかりか、表示速度も向上します。
mod_expiresが組み込まれているか確認
通常の方法でApacheをインストールしていた場合、mod_expiresはデフォルトで組み込まれています。 CentOSの場合/etc/httpd/conf/httpd.confに以下の行があることを確認してください。
LoadModule expires_module modules/mod_expires.so
mod_expiresの設定方法
httpd.confの377行目付近に以下を追加してください。
<IfModule mod_expires.c> ExpiresActive on ExpiresByType image/png "access plus 12 hours" ExpiresByType image/jpeg "access plus 12 hours" ExpiresByType image/gif "access plus 12 hours" ExpiresByType text/css "access plus 12 hours" ExpiresByType text/javascript "access plus 12 hours" </IfModule>
これはpng,jpg,gif,css,javascriptを12時間という期限でキャッシュさせるという宣言です。 Apacheを再起動されば反映されます。
mod_expiresの設定が反映されているか確認
Chromeのdev toolで画像のレスポンスヘッダを確認してみましょう。
max-age=43200なので43200秒、つまり12時間にちゃんと設定されていることが確認できました。
mod_expiresの設定するにあたっての注意
もしjavascriptなどに変更があり、更新した場合、クライアント側にキャッシュが残っており表示が意図しなくなる場合があります。
その場合はhoge-v1.jsなどファイル名でバージョン管理するか、hoge.js?123456などパラメータにタイムスタンプなどを付与すれば解決します。(モダンなWEBアプリケーションフレームワークにはこのような機能が含まれていると思います。)
ハイパフォーマンスWebサイト ―高速サイトを実現する14のルール
- 作者: Steve Souders,スティーブサウダーズ,武舎広幸,福地太郎,武舎るみ
- 出版社/メーカー: オライリージャパン
- 発売日: 2008/04/11
- メディア: 大型本
- 購入: 32人 クリック: 676回
- この商品を含むブログ (126件) を見る
gzip圧縮を使ってWEBサイトを高速化しよう
WEBサイトの高速化にはいろんな手法があります。
今回はその中でApacheやNginxなどWEBサーバの機能、gzip圧縮を使って、コンテンツを圧縮、高速化を実現する方法をお送りします。
gzip圧縮とは?
gzip圧縮によるWEBサイト高速化のイメージは下記になります。
- クライアントから、index.htmlのリクエストを投げた時に、"Accept-Encoding: gzip" でブラウザーがgzipをサポートしていることを通知。
- もしサーバがgzip対応していた場合コンテンツをgzip圧縮し、レスポンスヘッダに"Content-Encoding: gzip" を添えて返却。
- クライアントがレスポンスを受信したら"Content-Encoding: gzip"にもとづいて、ページを解凍。
圧縮によってデータの転送量を減らすことができるので、WEBサイトの高速化につながります。 主要のモダンブラウザはgzipに対応しています。
Apacheでのgzip圧縮設定方法
/etc/httpd/conf.d/gzip.confというファイルを新規に作成し、下記をコピペしてください。
<IfModule deflate_module> DeflateFilterNote Input instream DeflateFilterNote Output outstream DeflateFilterNote Ratio ratio LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate CustomLog logs/deflate.log deflate DeflateCompressionLevel 1 <Location /> AddOutputFilterByType DEFLATE \ text/plain \ text/html \ text/xml \ text/css \ application/xml \ application/xhtml+xml \ application/rss+xml \ application/atom_xml \ application/javascript \ application/x-javascript \ application/x-httpd-php # Netscape 4.x has some problems... BrowserMatch ^Mozilla/4 gzip-only-text/html # Netscape 4.06-4.08 have some more problems BrowserMatch ^Mozilla/4\.0[678] no-gzip # MSIE masquerades as Netscape, but it is fine BrowserMatch \bMSIE !no-gzip !gzip-only-text/html BrowserMatch "\bMSIE [1-6]\." no-gzip # Don't compress images SetEnvIfNoCase Request_URI \ \.(?:gif|jpe?g|png)$ no-gzip dont-vary <IfModule headers_module> # Make sure proxies don't deliver the wrong content Header append Vary User-Agent env=!dont-vary </IfModule> </Location> </IfModule>
DeflateCompressionLevel ディレクティブは圧縮の程度を設定します。大きな値では、より圧縮が行なわれますが、 CPU 資源を消費します。 値は1(低圧縮) から2(高圧縮) です。 とりあえず1で良いと思います。 設定したら再起動すれば反映されます。
chromeのdev toolで確認するとちゃんと反映されてますね。
まとめ
もちろん圧縮することによってCPUは通常より消費しますが、ネットワーク帯域に比べれば気にすることはないでしょう。 各々で色々テストして最適な値を見つけてください。
サーバ構築の実際がわかる Apache[実践]運用/管理 (Software Design plus)
- 作者: 鶴長鎮一
- 出版社/メーカー: 技術評論社
- 発売日: 2012/03/23
- メディア: 単行本(ソフトカバー)
- 購入: 6人 クリック: 109回
- この商品を含むブログ (13件) を見る