k4200’s notes and thoughts

Programmer side of k4200

「早稲田大学の理工系におけるコピペ文化について」について

Twitterにこんなのが流れてきた。 早稲田大学の理工系におけるコピペ文化について 自分の周りの状況を「早稲田大学の理工系」って一般化するなよ。とまず言いたい。 これで終了ってのもなんなので、以下、少し細かい話を。読みたい方だけどうぞ。

Chromeのブラウザ拡張(Extension)を作る

最近仕事関連でChrome Extensionを作ったので、ポイントとかを簡単にまとめてみる。 前提 環境とか 古いChromeには対応しない(ChromeのバージョンによってAPIが変わってたりする) manifestのバージョンはv2 作るもの Extensionにはいくつかのタイプがあるが…

昔書いてたblogを復活させた

以前、レンサバで自分のblog持ってたんだけど、しばらく放置してたらスパムコメントが大量についてデータファイルが肥大化して動かなくなってしまった(懐かしのMovableType)。何かこのまま捨てちゃうのも勿体無いので、復活させることにした。でも自分でや…

Squerylでカスタム集計関数(custom aggregate function)を作る

Squerylでsum, avgとか以外の集計関数を使いたい 集計関数とはavgとかsumみたいに、複数の値を受け取って1つの値を返す関数のこと。Squerylではここに載っているものがサポートされてる。でも、今回は、medianを使いたい。中央値。中央値と平均値の違いがわ…

退職エントリーを書いてみたい

退職エントリー書ける人が羨ましい(皮肉とかでなくて) 年度末、期末とかになると退職エントリー花盛りじゃない。正直羨ましいなー。何か名の知れた会社でバリバリ活躍してたエンジニアが、同じく名の知れた違う会社に転職して、前の会社で勉強になったこと…

Play! 2.1のroutesでOption型のパラメータを・・・

やりたいこと あー、タイトル分かりにくくてすみません。今作ってるサイトで、要はこういうことをやりたいんです。 GET /$areaId<[0-9]+> controllers.Foo.bar(areaId: Int, subAreaId: Option[Int] = None) GET /$areaId<[0-9]+>/$subAreaId<[0-9]+> contro…

EC2上のMySQLをRDSに移行する際のポイントとか

Amazon RDSとは、Amazonが提供するマネージドのMySQLサービス(OracleとMicrosoft SQL Serverもあるけど)。最近、いくつかのプロジェクトでEC2上のMySQLからRDSに移行したので、その際に気をつけるポイントとかを書いてみる。

Solr 4にて、基本はbi-gramだけど、1文字の検索にも対応させる

昔はbi-gramの場合、CJKTokenizerFactory ってのを使っていて、自分が持っているSolr本にもそう書いてあるが、最近は、StandardTokenizerFactory + CJKBigramFilterFactory を使うらしい。詳しくはggrks。bi-gramの場合、検索クエリーが1文字の場合に対応出…

PECLのSolrエクステンションをSolr 4に対応させる

PECLのSolrエクステンションはSolr 4では動かない PECLのSolrエクステンションがあるんだけど、Solr 4ではcommitが上手く動かない(モジュールの最新バージョン1.0.2でもNG)。原因は`waitFlush`というパラメータが廃止になった?ため。詳しくはこの辺を参照。

色んなSQLをSquerylで書くと?

Squryl で複雑なSQLを実行させたい ORMって、ちょっと複雑なSQLを実行させようとすると面倒な事が多くて、みんな仕方なしに使ってること多くない?という主観はさておき、Squrylの場合もドキュメントやサンプルプログラムに載っている例以外の事をやろうとす…

SquerylでPostgreSQLのpoint型のデータを書き込む(これは酷い)

やりたい事 他のORMと比べて便利かどうかは特に検討せずに、とりあえずSquerylを使ってる。PostgreSQLにはgeometry関連の型があって、更に詳しく言うとPostGISとそうじゃないやつがあるんだけど、その辺の詳細は省略。今回扱うのは通常のpoint型の話。x, yの…

ElastiCache使用時のクライアント設定の注意点

AWS

AWS版のmemcachedがElastiCache。一度セットアップしちゃえば、使い方は普通のmemcachedとほぼ同じなんだけど、そこはさすが(というか何というか)AWS。AutoDiscoveryという独自の機能もある。詳しくはこの辺を参照。

Impalaのアーキテクチャを少し調べてみた

前回、Dremelの論文を読んで、分かる範囲で説明した。さて、前回の記事を書いた後、BigQueryのホワイトペーパー (miyakawa_taku さんありがとうございます)を紹介されたので読んでみた。論文の要約+BigQueryの紹介と言った内容。今回は、まずはそのホワイ…

Webの負荷テストをEC2上での分散環境で行う。

夢の(悪夢の)TV露出、それに備えて負荷テスト Webサイト・サービスを立ち上げて順調に成長していくと、ニュースサイトや雑誌に載ったり、運が良ければTVに取り上げられたりする。プロモーション視点で言うと夢の様なTVデビューも、インフラ担当に取っては…

Play! 2.0から2.1にアップデート

時代はPlay 2.1だよね(棒 Play 2.0から2.1にアップデートした。丸1日位かかったので、これからやる人に向けてちょっとメモ。 旧環境: Play 2.0.4 新環境: Play 2.1.1 なぜアップデートしようと思ったか ちなみに、元々Play 2.1にアップデートするつもりじゃ…

sbtプロジェクトをデプロイ(sbt 0.11)

rpscala 第100回でやった事。 やりたい事 sbtで出来たプロジェクトがあって、以下のものをリモート環境にデプロイしたい。 自分で書いたコード 依存ライブラリ プロジェクト構成はこんな感じ。multi project構成になっている。モデル等共通部分のcommon、フ…

祝rpscala開催100回!

祝第100回! 自分がちょくちょくに参加している「Scala勉強会 in 東京」、あるいはTwitterのハッシュタグである「rpscala」と言った方が通りがいいかもしれないけど、それがついに開催が100回に!おめでとうございます! >今までrpscalaに関わって来られた全…

CentOS 6.3でのChef Soloの環境設定

はじめに 最近話題の(?)Chefの環境をCentOS 6.3上に構築し、レシピの書き方の基本的な事を説明する。Chef Solo環境構築に関する公式ドキュメントはこちらそこにOS別のインストールドキュメントがあるが、CentOSなどのRed Hat系はこちら。基本はこれに沿っ…

Cloudera ManagerでHadoopやHBaseのクラスタをセットアップする

目的はCloudera Managerで楽にHadoopのクラスタ構築をする クラスターの実験用に自宅サーバーを購入したので、ぼちぼちセットアップしていく。以前VPSで2台構成のクラスタ(しょぼい)を構築した時は、CDHを手動でインストールしたが(過去記事)、今回はメ…

第2回初心者向け分散処理勉強会

第1回に続き、第2回も無事終了。今回は体調不良や急用でキャンセルした方が数名、遅れて来られた方も数名いたため、懇親会でのピザは無し。 発表内容 LTSVをPigで処理する話(みやかわさん) 資料はこちら。数週間前、突如Twitterで大流行した人気ワードLTSV…

CentOS 6のBIND起動時にGenerating /etc/rndc.keyで固まる

CentOS 6.3でBINDを起動しようとすると、以下のメッセージを出して固まる。 Generating /etc/rndc.key:解決策はここにあるように、rndc-confgenコマンドで /etc/rndc.key ファイルを作成する。 # 通常時 rndc-confgen -a -r /dev/urandom # chroot環境の時 r…

Dremelの論文読んで、Impalaのアーキテクチャも少し調べてみた

最近、趣味で検索エンジンみたいなの作ってるし、仕事でも大規模データを扱う話が増えてきた。初心者向け分散処理勉強会なんてのも有志で立ち上げて色々勉強中。さて、ちょっと前にClouderaがImpalaなるものを出した。Googleが2010年に発表したDremelという…

会社作る予定

今まで基本的には個人で仕事してたんだけど、法人にすることにした。3月いっぱいは仕事とかで色々忙しいので、4月か5月に登記する予定。最初は知り合いの休眠会社を引き取る予定だったんだけど、色々検討した結果、新規で作ることに。本店は千葉県茂原市(実…

「マイIP」を使って自宅Linuxサーバーに固定IPを割り当て

自宅サーバーに外からアクセスできるようにしたい カフェとかで仕事したいしー。考えた選択肢は以下の2つ。 固定IPを取得 IPv6で接続 以前OCNのIPv6サービスを使っていたけど、安定感とかその他で何となく使いづらかった記憶があったので、今回は固定IPを取…

ウサギィさんに遊びに行った

誘われたいきさつ 見覚えのあるアイコン 仕事上で仲良くさせてもらっている人から「知り合いで面白い会社があるんですけど、今度遊びに行きません?」みたいに誘われた。こういう話は基本的に断らないので二つ返事でOKした。ちなみに会社名を聞いてみると「…

再び自宅サーバー族に

メモリが欲しい 過去何回か、「検索エンジンを作る(予定)」ってエントリーを書いている。詳しくはそっちを見て欲しいけど、Apache NutchとHBaseをベースとした検索エンジンみたいなのを作っている。直近の回でHBaseをスタンドアローンモードから分散モード…

出来ること、あげられるもの、欲しいもの、して欲しいこと

give and take 最近、ココナラとかWishScopeみたいに自分の出来ることを登録して、安価に(あるいは無料で)簡単な仕事を受ける、みたいサービスがちょこちょこあって、自分もたまに使ってるんだけど、こっちのブログにも同じようなことを書いておこうと思っ…

検索エンジンを作る(予定)その4 〜 NutchをHBase分散モードで動かす

過去の記事 第1回: Nutch + HBaseを動かすまで 第2回: Nutchの動作を解説 第3回: HBaseをスタンドアローンから分散モードに移行 NutchがHBaseのクラスターを使うようにする 前回、HBaseを分散モードに移行したので、NutchがそのHBaseのクラスターを使うよう…

検索エンジンを作る(予定)その3 〜 HBaseを分散モードに移行

過去の記事 第1回: Nutch + HBaseを動かすまで 第2回: Nutchの動作を解説 背景・前提 HBaseじゃなくてMySQLを使えば? Nutch + HBaseのクローラーが動作するようになったが、正直1台で動かすならMySQLを使ったほうが色々楽だし、データの抽出も楽。HBaseを使…

第1回初心者向け分散処理勉強会

第1回初心者向け分散処理勉強会は無事終わりました 11人が集まりました。飲み物無料の懇親会も! 2/4(月)に分散処理勉強会を開催しました。当初は内輪2名で話をしていて、その後Twitterで声をかけたところ何人からか返信を頂いたので、まぁ4〜5人でやろう…

Magnet Patternを使って、type erasureで同じ型になるオーバーロードの問題を解決する

久しぶりにプログラミングネタ。 背景 List[Int]もList[String]もバイトコードでは同じ type erasureについて知ってる人は飛ばしてOK。知らない人向けに簡単に説明すると、Scalaでは(Javaでも同じだけど)以下の様なメソッドのオーバーロードは定義出来ない…

検索エンジンを作る(予定)その2 〜 Nutchについて少し解説

その3はこちら。 概要 前回はNutch + HBaseでクローラーを動かすところまでを書いた。今回はNutchの動作の仕組み、起動オプション、設定項目をちょっと解説。(理解が浅い or 間違っている箇所も多いと思うので、何かあれば指摘して頂けると助かります) Nut…

検索エンジンを作る(予定)その1 〜 Nutch + HBaseのクローラーを動かす

その2はこちら。 目的 個人的に興味があって、ある領域に特化した検索エンジンみたいなのを作ろうとしている。当面の目的としては、以下のような事をやる。 対象のサイト(ある領域に関連するサイト)をクロールして保存 クロールしたページから必要なデータ…

Warning when ssh'ing from OS X Terminal

Connecting to a Linux server from OS X Terminal gave me the following error: -bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8)To fix this, comment out the following line in /etc/ssh_config SendEnv LANG LC_*This blog post ex…

Index "PRIMARY_KEY_B" belongs to a constraint

H2

エラーの概要 H2で、あるテーブルのプライマリーキーを削除しようとした時に以下のようなエラーメッセージが発生("PRIMARY_KEY_A5"の部分はそのテーブルのプライマリーキーの名前で、通常は自動採番)。 Index "PRIMARY_KEY_A5" belongs to a constraint; S…

Play! framework 2.0でのi18n関連

Scala Advent Calendar 2012の2日目、のはずだったけど、諸事情によりこちらの 12/5 の記事になりました。Play! framework 2.0のアプリを国際化する方法についてちょっと書きます。基本はここに書いてある通りだけど、補足とか書いていない事とかハマりポイ…

Compile error with scala.tools.nsc.interactive.FreshRunReq

problem I have a project using Play! framework 2.0.4 together with SecureSocial. It works fine in local environment, but had a problem showing the following error when Jenkins was trying to compile it: [error] {file:/var/lib/jenkins/jobs/s…

PHP & JavaScriptのWebサービスを多言語対応させた(2)

前回は項目列挙しただけなので、今回から具体的に。あくまで自分がやった方法の紹介なので、参考程度に。 事前準備 ライブラリ関連のインストール PHP部分はZend_Translateを使用。Zend Frameworkを使ってる人は特に何もする必要は無し。そうでない場合は、Z…

PHP & JavaScriptのWebサービスを多言語対応させた(1)

第2回はこちら。 はじめに 仕事でWebサービスの国際化対応をしたので、どういう風にやったかを簡単にまとめ。前提・環境等 プログラミング言語はPHPとJavaScript 最初は素のPHPで作成した 途中からZend Framework 1.11に徐々に移行してった 開発には途中から…

Installing PECL GeoIP on EC2 using CheckInstall

EC2

Background I've been working on a web service that runs on Amazon Linux (an RPM based distro specific for Amazon EC2), and recently had to install PHP GeoIP module.You could install it by "sudo pecl install geoip" after installing gcc, mak…

OrientDBをPHPから使う(2)

はじめに 第1回のエントリーはこちら。「OrientDBをPHPから使う」というタイトルなのに、前回はPHPの話がまったく出てこなかったけど、今回はPHP bindingのお話。Webで検索すると多分こっちのページが一番最初に見つかると思うけど、最新版はこっちらしい。…

OrientDBをPHPから使う(1)

OrientDB? 仕事でソーシャル系のサービス作ってるんだけど、グラフデータはやっぱグラフDBを使ったほうが良いよね。一番有名なNeo4jにしようかと思ったけど、以下の理由からOrientDBを試してみることにした。 「有名なの使うのって何かカッコ悪い」って思っ…

既存のPHPプロジェクトをZend Frameworkのプロジェクトに

やりたい事 タイトル通りだけど、既存のPHPプロジェクト(フレームワークとかは特に使っていない)をZend Frameworkのプロジェクトに移行する。 参考ページ 基本はこのページのとおり。具体的な処理の流れは以下の通り。 mod_rewrite で、ディレクトリに対す…

sbteclipseでソース添付

最近またScalaでプログラムを再開した。開発環境はsbt + Eclipse。なので、sbteclipse を使っている。知らない人のために一応書くと、sbteclipseとは、Eclipseの.projectファイルとかを作成してくれて、sbtプロジェクトをEclipseのプロジェクトとして開ける…

PHPUnit 3.6 not supported by ZF 1.11.10

Got the following error when running my 1st db test using PHPUnit and Zend Framework. PHP Fatal error: Class Zend_Test_PHPUnit_Db_Metadata_Generic contains 2 abstract methods and must therefore be declared abstract or implement the remaini…

Zend_Locale in compatibility

Zend_Locale 使ったら以下のようなエラーが出た。 [Wed Apr 11 18:03:11 2012] [error] [client 192.168.56.1] PHP Notice: You are running Zend_Locale in compatibility mode... please migrate your scripts in /path/to/zf/Zend/Locale.php on line 294…

Mustach Template Engine

はじめに JavaScriptとPHPでテンプレートを共用したい 今仕事で作ってるサイトは、フレームワークとかも使っていないプレーンなPHPで出来ている。(自分は開発に途中から参加したので、その辺りの決定には関与していない)。あと、特徴として、(最近のwebサイ…

はてなブログを試しに使ってみる。

はてなは「絶対すべきでないこと」をやらかしたのか?というのを読んで、ソフトウェア開発者として興味を持ったので、はてなブログを試してみる事にした。 そんなにクソなのかな。

ちょい前にLift 2.4が出たので眺めてみた

はじめに Scalaのフレームワークを使おうと・・・ 最近はPHPとJavaScriptにどっぷり浸かってしまったんだけど、新しいサイトを作ろうと思ってるので、Scalaのフレームワークをいじろうと思ってる。先日のScala勉強会in渋谷で、Play! 2.0が実用段階に入るには…

NagiosでEC2上のLinuxのログ監視(3)

はじめに 過去2回(その1、その2)で、Nagiosを使ってローカルのログを監視する所まで説明した。今回は、NRPEというものを使ってリモートのサーバーのログを監視する。前回までで基本的な部分は出来ているので、後はそんなに難しくないはず。今回、紛らわし…