タグ

ブックマーク / www.clear-code.com (20)

  • Ruby on Railsと素のPostgreSQLで日本語全文検索 - 2020-12-22 - ククログ

    PostgreSQLに超高速な日語全文検索機能を追加するPGroongaを開発している須藤です。今回はPGroongaやpg_bigmなど拡張モジュールを使わずにPostgreSQLの組み込み機能だけで日語全文検索を実現する方法を紹介します。PGroongaを使う方法はRuby on RailsでPostgreSQLとPGroongaを使って日語全文検索を実現する方法を参照してください。 Heroku PostgresなどDBaaSとして提供されているPostgreSQLではPGroongaを使えません。(DBaaSとして提供しているベンダーがPGroongaをインストールしてくれないから。)PostgreSQLの組み込み機能だけでは日語全文検索を満足に実現することができないので、DBaaSのPostgreSQLを使っていると次のように日語全文検索で困ってしまいます。 日人のプ

    Ruby on Railsと素のPostgreSQLで日本語全文検索 - 2020-12-22 - ククログ
  • 2019年、fat gemをやめる - 2019-11-22 - ククログ

    fat gemを簡単に作れるようにするgemであるrake-compilerをメンテナンスしている須藤です。過去にfat gemの作り方をまとめたこともあります。 Ruby 1.8.7/1.9.1どちらでも使えるWindows用バイナリ入りgemをDebian GNU/Linux上で作る方法 Windowsの32bit/64bitRuby用バイナリ入りgemをDebian GNU/Linux上で作る方法 fat gemが有用な時代もあったのですが、今はメリットよりもデメリットの方が大きいのでfat gemをやめたらどうか、という話をします。 fat gemについて fat gemとはビルド済みバイナリーが入ったgemのことです。Pythonで言えばwheelのようなものです。 RubyはC言語でRuby用のライブラリーを実装することができます。これを拡張ライブラリーと呼びます。拡張ライブ

    2019年、fat gemをやめる - 2019-11-22 - ククログ
    aki77
    aki77 2019/11/25
  • OSSへフィードバックしてみたいけど、英語でどう書けばいいのか分からない - 2019-07-12 - ククログ

    結城です。 ここまで、OSSへのフィードバックをやってみようとした時に躓きがちなポイントについて、フィードバックするトピックの見つけ方、報告に盛り込むとよい内容、その情報の送り届け先の選び方の知見をそれぞれ述べてきました。 ところで、それらの技術的な内容以前のハードルとして、言語の壁という物もあります。実際にOSS Gateワークショップでも、フィードバック内容をまとめた後、英語でそれを書き直すという段階で手こずっておられる方がかなり多い印象があります。 ITエンジニア向けに「こういう英語表現を覚えよう」という情報を紹介する記事は時々見かけます。ですが、ワークショップでビギナー参加者の方が英語を書くのに苦労している様子を実際に見ている印象では、必要なのはそういった記事で紹介される「実際の現場でよく使われる単語や熟語の情報」ではなく、「実際の現場で英文を書く時に行われる考え方の解説」の方であ

    OSSへフィードバックしてみたいけど、英語でどう書けばいいのか分からない - 2019-07-12 - ククログ
  • 9.html

    株式会社クリアコード > ククログ > PostgreSQL標準添付のpg_trgmでリビルドせずにインデックスを使った日語全文検索をする方法:LC_CTYPEにC.UTF-8を指定 PostgreSQLのソースアーカイブにはcontribというデフォルトではビルドされないモジュールが含まれています。このモジュールの中にはpg_trgmというモジュールがあります。pg_trgmを使うとインデックスを使って高速に全文検索できます。ただし、pg_trgmはデフォルトでは日語に対応しておらず、ソースコードを変更してビルドし直さないといけません。いけないと言われています。 GitLabは8.6からpg_trgmを使って全文検索を高速化しました。ということは、GitLabでは日語で全文検索するとインデックスを使えないということになります。しかし、実際に試してみると日語で全文検索してもインデッ

    9.html
  • わかりやすいコミットメッセージの書き方 - 2013-04-24 - ククログ

    もう1年以上前になりますが、コミットメッセージの書き方を説明しました。ざっくりまとめると、以下のことを説明しています。 わかりやすいコミットメッセージがいかに大切か どのようなコミットメッセージがわかりやすいか(具体例付き) この説明をしてからも、日々コミットしていくなかで新たに得られた「どうすればもっとわかりやすいコミットメッセージになるか」という知見が増えていました。これは、コミットへのコメントサービスの提供を開始した1ことも影響しています。このサービスでは、コミットへコメントするときに「どうして自分は他の書き方よりもこの書き方をわかりやすいと感じるか」を説明しています。その過程で「なんとなくこっちの方がよさそう」だったものを「具体的にこういうときにこう感じるのでこっちの方がよさそう」と何かしら理由を考えるようになりました。これにより、今までそれぞれの開発者でなんとなくだった考えが共有

    わかりやすいコミットメッセージの書き方 - 2013-04-24 - ククログ
    aki77
    aki77 2013/04/26
  • コミットメッセージの書き方 - 2012-02-21 - ククログ

    はじめに 「分かりやすいコードを書く」、「コードと一緒にテストも書く」等はソフトウェア開発において大切なことです。しかしそれと同じくらい大切なことして「分かりやすいコミットメッセージを書く」があります。これはあまり着目されていなく、見過ごされていることです。 今回は、コミットメッセージの分かりやすさの大切さ、そして、分かりやすくするための書き方を説明します。 コミットメッセージとその大切さ バージョン管理システムとコミット 現在、ほとんど全てのソフトウェア開発ではSubversionやGitなどのバージョン管理システムを使っています。バージョン管理システムを使うことによるメリットというのは、ソフトウェアの変更が記録されていくことにあります。 具体的なメリットは3つあります。 ソフトウェアの調査がしやすくなることです。現時点でのコードと、そして変更の履歴とを組み合わせることで、それらから非常

    コミットメッセージの書き方 - 2012-02-21 - ククログ
    aki77
    aki77 2013/01/25
  • シェルスクリプトとMakefileの使い分け - ククログ(2012-10-24)

    先日紹介したシェルスクリプトで「ビルドスクリプト」を作る時に便利なテクニックへのコメントとして「なぜMakefileでやらないのか」「Makefileの方がいいのではないか」といったものがありました。確かにmakeはメジャーなビルドツールなので、そのような疑問が出てくるのも当然でしょう。 なぜシェルスクリプトなのかということの理由はいくつかあります。 1つは、先のエントリの題材としたスクリプトが元々はWindows用のバッチファイルをLinuxのシェルスクリプトに移植したものだったからという理由です。Windowsのバッチファイルのベタ移植として作成したシェルスクリプトを継続的にメンテナンスしてきた間の改良の結果として、いくつかのテクニックが盛り込まれるようになったため、そのテクニックにスポットを当てて紹介しようというのが、先のエントリの発端でした。 もう1つは、シェルスクリプトは「シェル

    シェルスクリプトとMakefileの使い分け - ククログ(2012-10-24)
  • シェルスクリプトで「ビルドスクリプト」を作る時に便利なテクニック - ククログ(2012-10-11)

    プログラムの種類によっては、そのまま実行できるものと、実行できるようにするために「ビルド」が必要なものとがあります。Cなどのコンパイルが必要な言語で書かれたプログラムは当然ビルドが必要ですし、コンパイルが不要な言語であっても、インストーラパッケージを作るというビルド作業が必要な場合はあります。 ビルド作業の自動化のためのツールとしてmakeなどがありますが、そこまで格的な事をやる必要がない場合は、シェルスクリプトで「ビルドスクリプト」を作るのが手軽でおすすめです。この記事では、そのような場合に役立つシェルスクリプトのテクニックを4つご紹介します。 エラーの気付きやすさとデバッグのしやすさを高める メッセージに色を付ける シェル関数をライブラリにする 一時的に作業ディレクトリの中に入る エラーの気付きやすさとデバッグのしやすさを高める はじめに紹介するテクニックは問題が発生した時に気づきや

    シェルスクリプトで「ビルドスクリプト」を作る時に便利なテクニック - ククログ(2012-10-11)
  • Emacs上でカラフルにdiffを表示する - 2012-04-03 - ククログ

    ソフトウェア開発は小さな変更の積み重ねです。ソフトウェア開発ではバージョン管理システムを使うことが当たり前ですが、バージョン管理システムはその変更の積み重ねを記録しています。変更はdiffと呼ばれ、ソフトウェア開発をしていれば頻繁に目にします。例えば、コミット前に変更を最終確認するためにdiffを見ます。また、誰かがコミットすればdiff入りのメールで変更内容が関係者に通知されます。 さて、そんなよく目にするdiffをEmacs上でより見やすく表示する方法を紹介します。 そもそも、どうしてEmacs上でdiffを見るかというと、Emacsにはdiffを表示するための支援機能がたくさんあるからです。編集中のファイルのdiffを見たいならVCが提供するvc-diff(C-x v =)を使います。バージョン管理システムで管理している複数のファイルのdiffを見たいならMagit(git用)やps

    Emacs上でカラフルにdiffを表示する - 2012-04-03 - ククログ
    aki77
    aki77 2012/04/04
  • Emacs実践入門 - おすすめEmacs設定2012 - 2012-03-20 - ククログ

    2012年3月にEmacsの入門書が技術評論社から出版されました。 https://amazon.co.jp/dp/9784774150024 インストール方法やファイルの開き方などから始まっていて初心者向けの始まり方になっています。それでは初心者向けなのかというとそうでもなく、中盤から後半はrequireしないと使えないElispを使った拡張方法の紹介になっています。 おそらく、初心者の人は1/3か1/2くらい進んだところで一度脱落するのではないでしょうか。逆に、ある程度知っている人は中盤から後半にかけて興味のある話題が増えていくことでしょう。脱落してしまった人は、しばらく前半の機能でEmacsを使って、慣れてきてから再挑戦するとよいでしょう。 後半の拡張方法の紹介部分では多くの方法を紹介するためか、1つ1つの方法については簡単に紹介する程度にとどまっています。よりつっこんだ使い方までは

    Emacs実践入門 - おすすめEmacs設定2012 - 2012-03-20 - ククログ
  • クリアなコードの作り方: 意図が伝わるコミットのしかた - 2012-03-13 - ククログ

    コミットメッセージの書き方ではコミットをわかりやすくするためには以下の2つの条件を満たす必要があると書きました。 コミットの内容が分かりやすく説明されていること コミットの内容が小さくまとまっていること このうち「コミットの内容が分かりやすく説明されていること」についてはすでに説明済みです。今回は「コミットの内容が小さくまとまっていること」について説明します。 めざすところ 単純にコミットの内容を小さくするだけではわかりやすくなりません。それでは、どのような基準で小さくすればよいのでしょうか。 よく言われることは1つのコミットには1つの小さな論理的にまとまった変更だけにする、というものです。たしかにこれは重要です。しかし、これだけを基準とすると、人によっては大きめなコミットになってしまいます。人それぞれで論理的なまとまりの大きさが異なるからです。 1つのコミットでどうすればよいかを考えるの

    クリアなコードの作り方: 意図が伝わるコミットのしかた - 2012-03-13 - ククログ
    aki77
    aki77 2012/03/14
  • モーショノロジー2012 #1: rroongaによる検索サービスの実装 - 2012-01-26 - ククログ

    注意: 長いです。 簡単まとめ: 検索サービスを作るにはrroongaが便利です。groongaサポートサービスをはじめます。 CROOZ株式会社が主催する「モーショノロジー2012 #1 全文検索&検索を利用したサービスの使命、利用プロダクト、事例紹介」が開催されました。今回のテーマは検索ということでgroonga開発チームに声をかけてもらいました。groonga関連の枠がいくつかあったのですが、ここではRubyとgroongaを使った検索サービスの作り方についての枠の内容を紹介します。 以下、多少省略しながらスライドの内容を紹介します。 概要 紹介する内容はrroongaを使った場合のメリット・デメリットと入力補完についてです。メリットは事例も交えながら紹介します。入力補完は「Ruby + groongaだからできる」という機能ではなくgroonga単体でも利用できる機能なのですが、最

    モーショノロジー2012 #1: rroongaによる検索サービスの実装 - 2012-01-26 - ククログ
  • logalimacsをリリースしました - 2012-02-13 - ククログ

    2012/2/13にEmacsでlogaling-commandを利用するためのフロントエンドlogalimacsをリリースしました。 logaling-commandとは logaling-commandは翻訳作業に欠かせない訳語の確認や選定をサポートする CUI ツールです。 「対訳用語集」を簡単に作成、編集、検索することができます。 logalimacsとは logalimacsはEmacsからlogalingを利用するためのフロントエンドです。 CUIで対訳用語集を利用するよりもエディタ上でシームレスに対訳用語集を利用できるとより翻訳作業が捗るため、開発に着手しました。 使い方 Emacsを使っていて何らかのドキュメントの翻訳中に英単語を調べる時に、わざわざブラウザに切り替えたくないですよね? そこでlogalimacsの出番です。C-:を押すと、 カーソル位置の単語で対訳用語集を

    logalimacsをリリースしました - 2012-02-13 - ククログ
    aki77
    aki77 2012/02/14
    『カーソル位置の単語で対訳用語集を検索』
  • クリアなコードの作り方: 縦長・横長なメソッドを短くする - 2012-02-07 - ククログ

    最近読んだRubyのコードではYARDのコードがキレイでした。 さて、長いメソッドは不吉なにおいがするからメソッドを分割するなどして短くしましょうとはよく言われることですが、ここでいう「長い」とは「縦に長い」ことを指していることがほとんどです。長いのが問題なのは縦に長いときだけではなく横に長いときもです。 縦に長いメソッド まず、どうして縦に長いメソッドが問題かについてです。縦に長いメソッドには「処理を把握しづらい」という問題がある可能性が高いです。 どうして処理を把握しづらいか 処理を把握しづらい原因はいくつかあります。例えば、抽象度が低いのが原因です。 メソッドが縦に長くなっているときは、多くの処理が行われていることがほとんどです。これらの処理はメソッドになっていないため名前がついていません。処理に名前がついていない場合は実装を読まないとなにをしているかがわかりません。 せっかくなので

    クリアなコードの作り方: 縦長・横長なメソッドを短くする - 2012-02-07 - ククログ
  • すべてのMySQLユーザーに高速な全文検索機能を! - OSC2011.DB用資料 - 2011-11-07 - ククログ

    オープンソースカンファレンス2011 DBのOSSDB MySQLセッションでgroongaストレージエンジンについて紹介してきました。 内容はgroongaストレージエンジンが得意なシチュエーションについてベンチマークデータを紹介するというものです。どういうときにgroongaストレージエンジンが高速に動作するかがわかります。 groongaストレージエンジンが得意なシチュエーション groongaストレージエンジンは以下のような処理が得意です。 全文検索 位置情報検索 リアルタイム更新 groongaストレージエンジンの性能特性を紹介するためにベンチマークデータを紹介しました。ベンチマークはこれらの得意な処理を実行するシチュエーション向けに複数のパターンで行いました。 高速な全文検索 groongaの全文検索処理の性能を示すためにtwitterから取得したデータを利用しました。測定する

    すべてのMySQLユーザーに高速な全文検索機能を! - OSC2011.DB用資料 - 2011-11-07 - ククログ
  • おすすめEmacs設定 - 2011-02-16 - ククログ

    注: これの更新版である2012年版があります。 他の人がEmacsを使っているのを見ていると、「もっと便利に使えるのに」と、もやっとしたり、「え、その便利な機能ってなに?」と、発見があったりします。だれかに「この設定をすると便利ですよ」と話しやすくするために、今のEmacsのおすすめ設定をここに記しておきます。 ディレクトリ構成 長年漬け込んできたEmacsの設定がそこそこの量になっているので、以下のようなディレクトリ構成にして分類しています。 .emacs.d |-- init.el ;; 基的な設定を記述 |-- config ;; 特定のモードや非標準のElispの設定をこの下に置く | |-- builtins.el ;; 標準Elispの設定 | |-- packages.el ;; 非標準Elispの設定 | `-- packages ;; 非標準Elispのうち、設定が多

    おすすめEmacs設定 - 2011-02-16 - ククログ
  • groongaにデータを登録してからインデックスが更新されるまでの流れ - 2011-10-05 - ククログ

    全文検索エンジンgroongaを囲む昼下がり@札幌はたっぷり3時間もあるので、「groongaがどのように動いているか」、「より効率的に検索するためにはどうしたらよいか」などといった話ができるはずです。 この文書は、札幌でのgroonga勉強会で使うための「groongaがどのように動いているか」を説明に使うための文書です。後でgroongaのドキュメントにマージする予定です。 それでは、groongaがどのように全文検索用のインデックスを作成しているかを説明します。まず、全文検索機能で重要なオブジェクトを説明して、その後にそれらを使ってどのようにインデックスを作成しているかを説明します。 主要オブジェクト groongaの全文検索機能で大事なオブジェクトは以下の3つです。 テーブル カラム トークナイザー それぞれ順に説明します。 テーブル groongaでは、ひとまとまりのデータを「レ

    groongaにデータを登録してからインデックスが更新されるまでの流れ - 2011-10-05 - ククログ
  • groongaで高速な位置情報検索 - 2011-09-13 - ククログ

    groongaのドキュメントにも位置情報検索について書かれているのですが、情報の更新が追いついていないため情報が不足しています。そこで、ここに現状に合わせたgroongaの位置情報検索についての情報をまとめておきます。なお、ここにまとめた内容もドキュメントに反映させる予定です。 できること groongaには位置情報を用いた検索機能がついています。位置情報を用いた検索では索引を利用するため、全文検索と同じように高速に検索することができます。ただし、PostGISやMySQLのように1線や面などもデータとして保持できるというわけではなく、点のみをデータとして保持できます。よって、groongaにできることは以下の通りです。 指定した四角の中に含まれている座標を持つレコードを検索する。 指定した円の中に含まれている座標を持つレコードを検索する。 座標間の距離を計算する。 ある座標からの距離が近

    groongaで高速な位置情報検索 - 2011-09-13 - ククログ
  • おすすめzsh設定 - 2011-09-05 - ククログ

    他の人がzshを使っているのを見ていると、「もっと便利に使えるのに」と、もやっとしたり、「え、その便利な機能ってなに?」と、発見があったりします。だれかに「この設定をすると便利ですよ」と話しやすくするために、今のzshのおすすめ設定をここに記しておきます。 もし、Emacsも使っている場合はおすすめEmacs設定もどうぞ。 ディレクトリ構成 長年漬け込んできたzshの設定がそこそこの量になっているので、以下のようなディレクトリ構成にして分類しています。主に、zsh標準機能の設定と追加パッケージの設定を分けるためにこうしています。 ~ ├── .zshrc # シェルを起動する毎に読み込まれる。 │ # ~/.zsh.d/zshrcを読み込んで │ # 標準機能の追加設定を行う。 ├── .zshenv # ログイン時に一度だけ読み込まれる。 │ # ~/.zsh.d/zshenvを読み込ん

    おすすめzsh設定 - 2011-09-05 - ククログ
    aki77
    aki77 2011/09/05
  • 「全文検索エンジンgroongaを囲む夕べ #1」のRuby枠の資料公開 - 2010-12-01 - ククログ

    先月の29日に、全文検索エンジンgroongaを囲む夕べ #1が開催されました。内容はgroonga体について、groongaとRubyについて、groongaとMySQLについて、groongaとPostgreSQLについて、とgroonga三昧の内容でした。 groongaとRubyについての資料は以降で紹介します。groongaとPostgreSQLについてはすでに資料が公開されています(textsearch groonga v0.1)。参加できなかった方は参考にしてください。 それでは、groongaとRubyについての資料を簡単な解説付きで紹介します。 Ustreamで配信したものの録画もあります。Ruby枠は49分くらいからです。 リリース情報 開催日当日の29日、groongaの新しいバージョン1.0.4がリリースされました。もちろん、この夕べに合わせたものです。 さらに、

    「全文検索エンジンgroongaを囲む夕べ #1」のRuby枠の資料公開 - 2010-12-01 - ククログ
  • 1