タグ

ブックマーク / blog.64p.org (22)

  • tokuhirom's blog

    MySQL の X Protocol/X DevAPI 周りについて調査したのをまとめたののメモ MySQL 8 以後では X Protocol がサポートされている(5.7 系では部分的なサポートであり、X Protocol を格的に利用する場合には 8 を利用することが推奨されているようだ) 通信は従来の MySQL Protocol と異なり、Protocol Buffers Based となっていて、各言語のドライバの実装が簡単になっている(protocol buffers がその言語でサポートされていれば、だが) これにより今後 libmysqlclient に依存せずに各言語のドライバが実装されるようになって運用管理が簡単になるんじゃないかと私は考えています。 実際に、mysql-connector-nodejsは X Protocol のみをサポートしていて、libmysq

    send
    send 2018/07/09
  • MacRuby でメニューバーのステータスメニューに常駐するアプリを作るための雛形をつくりました! - tokuhirom's blog.

    MacRuby でささっとメニューバーのステータスメニューに常駐するアプリケーションをつくれたら便利だと思いませんか? メニューバーのステータスメニューとは↓のような領域のことです。 これができると daemontools で常駐とかさせなくても app を start up にいれるだけでいいし、管理が楽です。 この分野では mynu というライブラリが有名なのだが、これはコードが複雑でとりあつかいづらい上に、ドキュメントをよんでも macruby コマンドで走らせようという話しかでてこなくて不安になる。僕がほしいのは .app だ! という気持になるのだ。 というわけで、通常のアプリ開発フローでステータスバーに常駐するアプリをつくるための雛形を作成した。以下のコードを Xcode で生成した雛形の AppDelegate.rb におきかえ、適当な画像(たとえば このへん など)を ic

    send
    send 2013/01/08
  • LTをはじめてやる君へ - tokuhirom's blog

    LT というのは メインのトークは大変なので、簡単に発表できる場をもうけよう5分なのですべっても大丈夫マイナーなネタをしゃべってもゆるされるようになんか一発ネタとかも発表できる場をもうけようなどの目的をもって設置されるものです。それほど気負う必要はないし、その日のうちに思いついてやったりする場合もあります(とくに海外では、飛び込みはあたりまえにあるといいます)。 ただ、一方で5分と話す時間がみじかくなっているので、話しなれていない場合には 自己紹介は手短にスライドの文字は大きくゆっくりしゃべるよく練習するの4点に気をつけましょう。 発表になれてない人ほど自己紹介を長くしがちですが、聴衆はあなたの生い立ちに興味はありません。名前、所属程度をいえば十分です。発表が、あなたのバックグラウンドをしらないと伝わらないものならば、かるく説明する必要はありますが、それでも30秒程度におさめる方がいいでし

    send
    send 2012/09/05
    なるべくゆっくり話そうと思っても速くなることはあるから、もう一歩ゆっくりめで声を張るようにするぐらいでちょうどいいのかもなあ
  • なんてこった…CPANモジュールをnode.jsで動かしてしまうライブラリ「node-perl」 - tokuhirom's blog

    https://github.com/tokuhirom/node-perl/ ここ最近、プログラミング言語同士の壁が徐々に破壊されている気がします。あるプログラミング言語上で別なプログラミング言語を動くようにしたり、置き換えてしまったりするような類です。今回はその一つ、CPAN moduleをnode.js上で動かすという、かなり無茶な気がしなくもない、そんなソフトウェアnode-perlを紹介します。 var Perl = require('../index.js').Perl; var perl = new Perl(); perl.use('LWP::UserAgent'); var ua = perl.getClass('LWP::UserAgent').new(); var res = ua.get('http://mixi.jp/'); console.log(res.as_

    send
    send 2012/08/28
  • TheSchwartz のような RDBMS をつかったジョブキューをリアルタイムに処理するアイディア - tokuhirom's blog

    TheSchwartz のような RDBMS をつかった job queue は、新規に daemon をたてたりする必要がないので楽でいいのですが、一方で job の追加の timing が storage から push でおくられてこないので、若干の delay が生じてしまうのが難点でした。 この問題を解決するために、mysql の binlog API を用いて、処理してみるハックを考えてみました。 binlog API を利用すると更新クエリを streaming で処理できるので、こういったハックも簡単にできちゃいます。おもしろい。 use 5.016000; use MySQL::BinLog; use TheSchwartz; my $sch = TheSchwartz->new(...) or die; $sch->can_do($_) for ...; $sch->w

    send
    send 2012/07/09
  • mysql の binlog api を利用するための Perl Binding を作りました - tokuhirom's blog

    mysql の binlog api をあつかうためのライブラリである libreplication というものがあるのですが、これの perl binding を開発しました。 https://github.com/tokuhirom/MySQL-BinLog とりあえず、examples/basic-2.cpp でやっていることができるところまでつくっておきました。 バイナリログの内容を streaming で処理できるのがおもしろいです。 以下のような用途での応用が考えられるようです。夢がひろがりんぐですね。 libreplication のセットアップ方法については riywo さんの記事をごらんください。 http://blog.riywo.com/2012/07/08/133005 はまりポイントは、streaming 開始時に ROTATE_EVENT が発生して、最新のログ

    send
    send 2012/07/09
  • Node.js で重い処理をしてしまったときにタイムアウトするの法 - tokuhirom's blog

    (この記事は Node.js アドベントカレンダー不参加記事です) チャットサーバー的な使い方とか意外とみんな興味なくて、普通のウェブアプリケーションなどをかく、という用途にちょっと node.js がつかえたらいいのにな、とおもっている人がおおいようにかんじています。Node.js が人気なのは、v8 をうまくパッケージングしているのが node.js ぐらいで、そして v8 をうまくパッケージングするのが結構めんどくさいから、というところが大きいのです。ぶっちゃけ node.js が〜 とさわいでる人のうち8割は I/O multiplexing だからとかそういう理由で支持しているわけではなかったりするのです(偏見)。 さて、普通の web application のようなものを書こうとしたときに Node.js って基シングルスレッドだし、なんかうっかり重い処理したときにどうした

    send
    send 2011/12/13
  • 技術的アドベントカレンダーの有用性について - tokuhirom's blog

    続かないかと思われていた JPerl Advent Calendar ですが、意外にも折り返し地点をまわっております。 http://perl-users.jp/articles/advent-calendar/2008/15.html 15日目は id:miyagawa さんです。perldoc の使い方の解説記事です。 来、アドベントカレンダーというのは、イエスの降誕祭を待ち望み、12月1日からクリスマスまでの間に1日一個ずつクリスマスツリーを模したカードの窓を一個ずつあけていくようなもののことです。 一方、エンジニアの世界では、技術系アドベントカレンダーというものがあります。これは、一日一個ずつ tips 的な記事を掲載していくというものです。Perl の世界では、2000年からはじまっています(発祥がどこかは寡聞にして知りませんが)。 http://www.perladvent.

    send
    send 2010/12/08
  • PHP5 __destruct() and unserialize() function - TokuLog 改メ tokuhirom’s blog

    http://co3k.org/diary/12 このへんみておもったこと。 unserialize() 関数はオブジェクトの unserialize もできるのだが、5 以後では __destruct() が導入されているので、その unserialize したオブジェクトの __destruct() がよばれてしまう。この際に、たとえば cache の処理などで __destruct() でファイルにデータをかきこむ、などの処理をしていると、そのファイルが汚染されてしまったりするということがおきうる。 で、実際に cakephp ではそういう状況になって、任意のコードが実行可能になった、と。 まとめると 5 以後では unserialize() をユーザーからの入力にたいしてはかならず検証してからおこなうようにするべき。 っていうか、ユーザーの入力にたいしては unserialize(

    send
    send 2010/11/18
  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

    send
    send 2009/11/13
  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

    send
    send 2009/04/15
  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

    send
    send 2009/01/12
  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

    send
    send 2009/01/08
  • MENTA というウェブアプリケーションフレームワークをかいてみた - TokuLog 改めB日記

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

    send
    send 2008/11/12
  • tokuhirom blog

    send
    send 2008/10/16
  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

    send
    send 2008/09/04
    ま、マッシュアップ…?
  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

    send
    send 2007/09/13
  • TokuLog 改め だまってコードを書けよハゲ - ドコモでも CSS を外部参照を使える HTML::DoCoMoCSS をリリース

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at