サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
TGS2024
memo.yomukaku.net
Solrのschema.xmlを変更したら、solrを一度停め、既存のインデックスを削除してからもう一度起動する。 # schema.xmlを編集する sudo nano /path/to/solr/conf/schema.xml # solrを停める sudo /etc/init.d/solr stop # 既存のインデックスを削除する sudo rm -r /path/to/solr/data/index # solrを起動する sudo /etc/init.d/solr start キーワード: solr lucene schema.xml
OS X 10.9に最初から入っているpython 2.7.5にPIL (Python Imaging Library)をインストールします。 先ず、easy_installを使ったインストールを試みます。 sudo easy_install PIL すると、次のようなエラーになります。 _imagingft.c:73:10: fatal error: 'freetype/fterrors.h' file not found #include <freetype/fterrors.h> ^ 1 error generated. error: Setup script exited with error: command 'cc' failed with exit status 1 freetypeのヘッダーが見つからないためにエラーになっているようです。 そこで、freetypeをインスト
1267589832のような形式のunix timestampをrubyで出力する方法は、いたって簡単です。次のようにします。 Time.now.to_i # 1267589832と出力されます。 キーワード: unix timestamp convert db time ruby
開発中のアプリでは、他人または自分の書いたmigrationsやそこから作られたschema.rbを使ってデータベースの構造を更新します。この時rake db:resetやrake db:migrate:resetのようなコマンドを使用します。これらの違いについてまとめます。rake db:resetはdbをドロップし、db/schema.rbにもとづいてcreateします http://guides.rubyonrails.org/migrations.htmlに書かれているように、rake db:resetはデータベースをdropし、db/schema.rbに書かれている現在のschemaをロードします。 db/migrate以下のファイルに書かれているマイグレーションを新たに読み込んだりせず、あくまでも現在のdb/schema.rbの内容でデータベースを作ります。 rake db:m
request.xhr? リクエストがajaxによるものであった場合、request.xhr? はtrueを返します。 controllerの中で、何らかのbefore_filterを使用して、ajaxによるリクエストと普通のリクエストを区別した処理をしたい場合などに使用します。 キーワード: rails xhr ajax
実行可能なrubyのスクリプトを書く場合、ファイルの先頭に #!/usr/local/bin/ruby と書きます。 ところが、使用しているサーバーによっては、ruby本体は/usr/bin/rubyかもしれませんし、/usr/local/bin/rubyかもしれませんし、もっと別なところにあるrubyかもしれません。 そこで、適切なrubyを実行時に自動的に発見できるように、以下のように書きます。 #!/usr/bin/env ruby これで、環境に依存しないrubyの実行スクリプトを書くことができます。 キーワード: ruby shebang shell script
Node.jsで画像ファイルをBase64エンコードする方法、こうしてBase64エンコードされて文字列になった画像ファイルをコピーして、 「Node.jsで文字列をBase64エンコードする方法」で文字列をBase64エンコードする方法と、Base64エンコードされた文字列をデコードする方法を書きました。 ここでは画像ファイルをBase64エンコードされた文字列にする方法と、応用として、このBase64の文字列になった画像をデコードして元の画像ファイルを複製するスクリプトを書きます。 copy.jsという名前で以下の内容を保存します。 encodeという関数で指定したファイルの画像をbase64エンコードされた文字列にして返します。次いでこの文字列をdecodeAndCopyという関数に渡し、新しいバッファにデコードして入れ、別のファイルとして保存するという流れです。 var fs =
Railsにはflash.nowとflashの2つが用意されています。 flashはredirectの前に用いられ、1リクエストの間保持されます。そして、次のページを表示したときに消えます。 つまり、redirectせず、そのままページを表示する場合には、flashは2リクエストの間保持されることになります。 このように、flashが2リクエストに渡って保持されることを臨まない場合に、flash.nowを用います。 flash.nowオブジェクトは、レンダリングされたページにおいて「のみ」flashのメッセージを表示します。 頻繁に用いられる状況の例 def create @article = @article.new(params[:article] if @article.save? flash[:success] = "Success." redirect_to article_pa
rails new skelton -d postgresql -T 上のように、rails new project_nameにオプションを追加することができます。-d postgresqlのように使用するデータベースを指定する -d postgresqlで、データベースにPostgreSQLを使用するように指定できます。 -d mysqlならばMySQLが使用されます。 -TでTest::Unitを使わないようにする -Tは--skip-test-unitと同じ意味で、Test::Unit関連の設定やファイルの生成を行わないようにする指定です。 -Tオプションをつけた場合は、config/application.rbの3行目あたりに以下の内容が追加され、Test::Unitを使わないようになることがわかります。 # Pick the frameworks you want: requir
Ruby 2.0.0-p0がリリースされたので、rbenvを使用してインストールします。あわせて1.9.3系も最新版に更新します。 rbenvのインストールについては「rbenvで複数のバージョンのrubyを使用する環境を整える」を参考にします。rbenvとruby-buildを更新します。更新はgit pullを実行するだけです。 cd ~/.rbenv git pull cd ~/.rbenv/plugins/ruby-build git pull 現在インストール可能なrubyのバージョンの一覧を見ます。 ~% rbenv install -l Available versions: 1.8.6-p383 1.8.6-p420 1.8.7-p249 1.8.7-p302 1.8.7-p334 1.8.7-p352 1.8.7-p357 1.8.7-p358 1.8.7-p370 1.
amzn-ami-pv-2012.09.0.x86_64-ebsに最初からインストールされているパッケージを確認します。 rpm -qa | sortの出力結果です。PyYAML-3.10-3.6.amzn1.x86_64 acl-2.2.49-6.9.amzn1.x86_64 acpid-1.0.10-2.1.6.amzn1.x86_64 alsa-lib-1.0.22-3.9.amzn1.x86_64 at-3.1.10-43.8.amzn1.x86_64 attr-2.4.44-7.9.amzn1.x86_64 audit-2.2-2.17.amzn1.x86_64 audit-libs-2.2-2.17.amzn1.i686 audit-libs-2.2-2.17.amzn1.x86_64 authconfig-6.1.12-10.16.amzn1.x86_64 aws-amito
Rails 4からpublic/index.htmlファイルが自動で生成されなくなります。 実際にどうなるのか、プロジェクトを作りながらみてみます。 「Rails 4 betaのインストール手順」を参考にしてRails 4.0.0.betaをインストールし、blogという名前で新規のプロジェクトを作成します。 ここでは~/codes/rails4というディレクトリを作成し、このディレクトリ以下にRails 4.0.0.betaや新規のプロジェクトを配置することにします。 mkdir -p ~/codes/rails4 cd ~/codes/rails4 # historyがとても大きいので過去のコミットを5つに限定してcloneします git clone https://github.com/rails/rails.git --depth 5 # blogプロジェクトの作成 rails/r
Railsではi18nのAPIが使用できます。 I18n APIって何でしょうか? 何ができるのでしょうか? 荒っぽく書けば、helloというキーが指定された時に、対象言語が英語の場合は「Hello」、日本語の場合には「こんにちは」と出力できるような辞書ファイルを作成し、それを使用することを意味します。 「英語なんか使わない。自分のサイトは日本人しか来ない」という場合でもI18n APIの使用が便利なため、しばしば使われます。 例えば、数人でRailsアプリを開発する場合に、Userモデルの登録のためのビューを作成していたとしましょう。 ある人は、User#emailのラベルを次のように「Eメール」と書きます。 <label for="user_email">Eメール</label> ところが、別の開発者は別の場所で次のように「E-Mail」と書いたりします。 <label for="us
Rails 3のgemの管理に使用されるbundlerの使い方を復習します。 Bundlerの現時点の最新安定版のversion 1.2.3を対象とします。Bundlerを使うと何が嬉しいのか? あるgemが開発環境にはインストールされているが、production環境にはインストールされていない、といった問題が無くなる。 プロジェクトに必要なgemをはっきりさせることができる。 Bundlerのインストール %~ gem install bundler システム標準のrubyを使用している場合はsudoが必要な場合があります。rbenvやrvmを使用している場合はgem install bundlerのみでインストールできます。 bundle checkでインストール必要なgemをチェック Gemfileの中に記載されているgemのうち、これからどれをインストールしなければならないか
zshのautocorrectは便利ですが、不要なときもあります。そのような場合にzshのautocorrectを抑制には、~/.zshrcの中にalias コマンド='nocorrect コマンド'を追加します。zshのautocorrectが有効な場合、 bundle exec rspec spec/requests/foo_spec.rb のようなコマンドを実行すると、 zsh: correct 'rspec' to 'spec' [nyae]? のように訊かれます。 毎回nのように回答することは面倒です。 このような場合は、~/.zshrcの末尾あたりに以下のような記述を追加します。 alias bundle='nocorrect bundle' これでzshはbundleコマンドについて質問をしてこなくなります。 ~/.zshrcを編集したのでsource ~/.zshrcとして
rbenvを使用してruby-2.0.0、ruby-1.9.3、ruby-1.9.2等の異なるバージョンのrubyを使い分けられるような環境を整えます。rbenvのインストール githubのリポジトリからcloneしてインストールします。 git clone git://github.com/sstephenson/rbenv.git ~/.rbenv PATHに$HOME/.rbenv/bin:$PATHを追加しておきます。 また、rbenvのshimsを有効にするために.zshrcにeval "$(rbenv init -)"を追加しておきます。 bashを使用している場合は.bash_profileにeval "$(rbenv init -)"を追加します。 ruby-buildのインストール rbenvはrvmと異なり、rubyのビルドを自動で行いません。 ruby-buildを
Node.jsでnode-mysql(https://github.com/felixge/node-mysql)を使ってMySQLを使用する際に、トランザクションを使用して複数のステートメントを実行し、成功したらcommitを、失敗したらrollbackを行う方法を書きます。使用するテーブルについて 次のER図であらわされるようなusersテーブルとschedulesテーブルを例に用います。 Userと別のuserのミーティングのスケジュールを予約するようなアプリで使用するDBの中のテーブルです。 この設定の中で、あるuserを削除した場合にこのuserに紐づいているscheduleも削除し、なんらかのエラーが発生した場合にはrollbackするような一般的なtransactionを使用した処理をnode-mysqlを用いて書くことが目的です。 なお、InnoDBのテーブルを使用している
GithubでJavaScriptのコードとして分類されており、現時点でwatch数の多い200件の中で、実際に使ったことがあり便利または面白いと感じた20件をまとめてみました。 backbone-boilerplate、requirejs、yeoman、lodashのような定番になってきているものから、TimelineJSのような全く汎用性のないものまであります。 d3.js Data-Driven Documents。サンプル集を観るのが手っ取り早いと思います。 pdf.js JavaScriptだけでPDFをレンダリングできる時代です。1年半ほど前にくらべると、かなりPDF製作者の期待通りにレンダリングできるようになってきています。 backbone-boilerplate Backbone.jsを使ったアプリの骨格構造。サーバー側でいわゆるMVC2のアプリを作っている人にはB
Rails 4から標準で非同期のキューが使えるようになるようです。 Railsの世界にはすでにdelayed_jobやresqueのようなgemがあり、バックグラウンドでジョブを実行することができました。 Initial queue implementationというコミットからは、標準で非同期のキューが使えるようになっています。 これでRailsでもnon-blockingに振舞うアプリや、遅いと思われにくいアプリを書きやすくなると思われます。ActiveSupport::Queueについてはhttp://edgeapi.rubyonrails.org/classes/ActiveSupport/Queue.htmlにより詳しく書かれています。 ActiveSupport::Queueの使い方 例えばPutsTitleというジョブのためのクラスがあり、bookのtitleを出力するだけの
CentOS 6.3へzsh 5.0.0とoh-my-zshをインストールする手順です。zsh 5.0.0のインストール zshの現時点の最新版のver 5.0.0のソースコードをダウンロードし、以下のようにインストールします。 cd src wget http://sourceforge.net/projects/zsh/files/zsh/5.0.0/zsh-5.0.0.tar.gz/download tar zxvf zsh-5.0.0.tar.gz cd zsh-5.0.0 ./configure make sudo make install oh-my-zshのインストール https://github.com/robbyrussell/oh-my-zshの指示に従いoh-my-zshをインストールします。 cd ~ git clone git://github.com/robb
wrkというhttpのベンチマークを行うコマンドがあります。 BSDを使っている人たちの中にabよりwrkを使っている方をしばしば見かけたので、OS XとCentOSにwrkをインストールして使用してみました。 wrkのリポジトリhttps://github.com/wg/wrkには、wrkが以下のように紹介されています。 wrk is a modern HTTP benchmarking tool capable of generating significant load when run on a single multi-core CPU. It combines a multithreaded design with scalable event notification systems such as epoll and kqueue. wrk -t 8 -c 400 -r 1
Rubyで/barや../fooのような相対URLをhttp://example.com/foo/barのような基準のURLと比較してhttp://example.com/barのような絶対URLに変換する方法を書きます。Rubyで相対URLを絶対URLに変換するにはURIのjoinメソッドを使用します。 URI.join(base, relative_url).to_sのように使います。 以下に例として、http://www.example.com/foo/barを基準としてさまざまな相対URLを絶対URLに変換するコードを書きます。 require 'uri' page_url = 'http://www.example.com/foo/bar' hrefs = %w[ http://example.com/ http://puu.example.com/ http://www.exa
主としてNode.jsで動かすプログラムの中で、一部の処理でnodeの子プロセスの中でpythonで書いたコードを動かしたい場合があります。このような場合にnode.jsとpythonでdb接続等の設定を共有できれば便利です。 そこで、node.jsで使用することを前提に書いたJSON形式のconfigファイルをpythonのコードの中から読み込む方法を書きます。例として、MySQLとSolrに接続するようなPythonのプログラムでnode.js側でも使用する設定ファイルを使用する場合を考えます。 Node.js向けのJSON形式のconfigファイルの作成 ./config/development.jsとして例えば以下のような内容を保存します。mysqlやsolrへの接続設定のファイルになります。 module.exports = { "sessionKey": "foo.sess",
Pythonで日時を扱う方法をまとめます。datetimeまたはタイムスタンプで表現された日時を相互に変換する方法と、タイムゾーンの情報を持ったdatetimeを別のタイムゾーンの表現に変換する方法を書きます。 何がしたいのか? 2012-11-10T08:08:01+09:00のようにRFC 3339で表現された日時を2012-11-09 23:08:01+00:00や、より単純にUTCで2012-11-09 23:08:01のような表現に変換したい。実際に手を動かしながらPythonでのdatetime, timeの扱いを学びながら、RFC3339で書かれた日時をPythonのUTCにおけるdatetimeの表現に変換する方法をつかみます。 以下のコードのようになります。各処理ごとに細かくコメントを書きます。 # coding: utf-8 import calendar, datet
公開日時: 2012-06-22 22:30 Javaでgitのサーバーを立てたり、gitのクライアントを作成しようとする場合に使用できそうなライブラリ等をまとめます。 Javaのgitサーバー、クライアントや使用例 JGit JavaによるGitの実装。EDL(new-style BSD)ライセンス。 http://eclipse.org/jgit/ Gitblit JavaによるGitの実装。Apache License, version 2.0 「Gitblit GO」「Gitblit WAR」「Gitblit Express」の3種が用意されている。 「Gitblit GO」はSingle-Stack Solutionとして全ての依存がバンドルされており、付属のJettyを使ってこれだけでgitのサーバーを立てられる。 「Gitblit WAR」は文字通りWAR。好みのコンテナでサ
Pythonを書き始めて、JavaScript、JavaやRubyと比べて躓きがちな書き方上の違和感ある点をメモしておきます。クラスのメソッドの定義の第一引数にselfが必要 class Foo def bar(self) print self.poo # selfを引数に与えなくても宣言はできるが、その関数の中から自分自身は見えない def poo() print 'poo' クラスのインスタンスを作るには関数表記を使う f = Foo() f.bar() f = new Foo()のようには書かない 関数の外の変数は読み出しのみ foo = 'a' def bar(): print foo # 'a' def poo(): foo = 'b' print foo # 'b' print foo # 'a' クラスのデータメンバを参照する際レシーバを省略できない class Foo ba
CentOS 6.3にPython 2.7.3をインストールしてひと通りの環境を整える手順を書きます。Python 2.7.3のインストール cd src wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tgz tar zxvf Python-2.7.3.tgz cd Python-2.7.3 ./configure --prefix=/usr/local make # altinstallを使ってCentOSに標準で入っているpython 2.6.6と別にインストールするようにします。 sudo make altinstall # 確認 which python2.7 # /usr/local/bin/python2.7 distributeのインストール cd src wget http://pypi.python.or
次のページ
このページを最初にブックマークしてみませんか?
『YomuKaku Memo』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く