サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
デスク環境を整える
atzy.hatenadiary.org
数年前の私の話です。以下のような話を耳にします。 マルチスレッドにすると、スレッドセーフにプログラムを作るのがめんどくさいんだよね−。 で、日和ってsynchronizedとかつけて同期を取ると、パフォーマンスが落ちるんだよね−。 何を言っているのか、さっぱり分かりませんでした。 というのは、私はJavaベースのウェブアプリを作ったことがなかったからです。簡単に言うと、何も知らない素人であったということです。 といって、私は素人から毛くらいは生えたかというレベルですので、理解に誤りなどもあるかもしれません。ということで、少しまとめてみます。 マルチスレッド マルチスレッドは非常に役に立つ処理です。 あなたが、ウェブアプリなどを作っているとしましょう。何かブラウザからのリクエストを受け付けて、例えばデータベースの値を取ってくるものです。その時、昔ながらのCGIなどは、リクエストのたびに新たな
電話番号、郵便番号にマッチする真の正規表現 - にぽたん研究所 これ、実用には全くならない(使ってはいけない)けど面白いなあ。 この手の正規表現をどうやって生成するのかということですが、(自称)正規表現専門家の私が推測してみます。(ただの推測なので、正解かどうかは保証しません。) 簡単かつ等価な正規表現 結局、狂ったような正規表現に見えますが、本当は、次のような正規表現でも全く等価なものを正しく受理するのです。 (1010001|1010002|...) ←正しい郵便番号の並びが10万以上続く これは、郵便番号データさえあれば、誰でも作れる正規表現です。しかし、これをブログやらスライドに載せても「はいはい。楽しいですか?」といわれるだけです。これを難しげな正規表現に変換しないとネタになりません。 正規表現をコンパイル(NFA生成) この正規表現をコンパイルします。つまり、中身を解釈してNF
私は、つい最近まで仕事ではPerlを使っていなかったのですが、例外もありました。それがワンライナーです。 どんなときに使うのかといえば、ログ(例えばApacheのアクセスログ)の集計です。私はこの手のワンライナーを何百作ったか知れません。(そして次々と使い捨てています。) ワンライナー ファイル処理のPerlワンライナーは次のように書きます。 perl -ne 'コード' fileこれは大まかには次のような意味となります。 while (<>) { コード } つまり、標準入力やファイルからデータを読み取って、一行ずつ処理します。 基本形 ファイルの集計は基本的に次の形となります。 perl -ne 'if(/パターンマッチ/){$c{$1}++}END{for(keys %c){print "$_ $c{$_}\n"}}' fileつまりは大まかには次の意味。 while (<>) {
お手軽な美人フィルタ 私の勤める会社で今度ちょっとした発表をするのですが、久々にHTMLを題材にすることにしました。 昔から美人フィルタとかそういったものがありましたが、これをサーバや専用ソフトなしでHTML5のcanvasとJavaScriptを使って実現しようという話。さらにカンタンに誰でも使えるようにブックマークレットにしてしまいます。お手軽ですね! 不細工化 オリジナル画像 美人化 Loading... 画像はモデルピースさんで配布されているフリー素材です。藤浦真菜さんという方の写真をトリミング、サイズ縮小させていただいています。 そして本題のブックマークレット ブックマークレットは以下の通りです。なお、FirefoxとChromeとSafari(全てWindowsで最新版)では動くのを確認しました。AndroidでもOK(マウスでなぞるのはできませんが。)。 javascript
犯人は東京電力であり、民主党であり、自民党であり、霞ヶ関の官僚であり、原発利権であり、御用学者なのです。 彼らが起こした人災であり、我々一般庶民は被害者なのです。 原発はコストだって最終的にはかなりかかります。廃棄物のことを考えれば、まったくもってクリーンではありません。原発ハンタイ!最初からそう思ってました! というような、「(自分ではない誰かという)犯人探しと糾弾」のフェーズに入りました。(少なくとも入っている人たちが大勢います。) 当事者意識 その論自体(例えば「東京電力が悪い」)を否定するわけではありませんし、批判というものは(ただのデマは別として)有用なものも多いでしょう。 しかし、私が共通して感じるのが「当事者意識のなさ」です。 国、あるいは国という言い方がいやならば共同体というものは、我々一人ひとりが作っていくものであって、誰かが勝手に作って、与えてくれるものではありません。
分かっているようで分かっていない正規表現の欲張り戦略。 欲張りとバックトラック 基本的には正規表現(の実装)は欲張りです。できるだけ長い文字列をマッチしようと心がけます。しかし、それによってマッチに失敗しそうであったときにはしぶしぶ手放します。 と、これが何を意味するのか。 単純な例 正規表現 A* マッチ対象 AAAAAAAAAAAAAAAAAAAAA A*のマッチ箇所 AAAAAAAAAAAAAAAAAAAAA (全体にマッチする)A* というのは、0文字以上のAですから、AAAやらAやら、あるいはAの前の空の部分にさえマッチしますが、欲張って最大限にマッチしようとします。 少しだけ複雑に 正規表現 \w*\w マッチ対象 AAAAA \w*\wのマッチ箇所 AAAAA (全体) \w*のマッチ箇所 AAAA (4文字分)\w*\wという正規表現です。この場合は、\w*は1文字分だけ「
仕事でPerlを使うことになり、先週から久々に(本格的に)使ってみました。大体プログラミング言語なんてものは特殊なやつを除けばどれも根本は同じなので、それ自体で詰まるということはありません。 が、10数年ぶりのPerlを使いながら、懐かしいことを思い出してみました。思えば遠くへ来たものだ。 アンパサンド Perl5以降では当然のようにサブルーチンを hoge() と呼び出しますが、Perl4では &hoge と呼び出します。 my!our! Perl4では、my*1だとかありませんし、our*2ももちろんありません。 当然ながら、localを使います。 myはまさにレキシカルスコープ、ourはパッケージローカルな変数となります。で、Perl4に存在した(というか、今も存在しますが)localというのは、特殊なグローバル変数。その時点でグローバル変数の値を置き換えてしまい、ブロックを出た後で
mdounin(Maxim Dounin)さんが開発しているmemcached、あるいはrepcachedのforkがあるのですが、そこではrepcachedがmemcached 1.4.5に対応しています。 https://github.com/mdounin/memcached/tree/repcached KLabで開発されていたrepcached(2.2まであります)は、memcached 1.2.8までの対応ですので、モダンなmemcached 1.4系を使うことができなかったわけですが、このmdounin版を使えばレプリ機能を使いつつ、memcached 1.4を使うことができるわけです。(ただ、おそらくマルチスレッドは無効化される。) mdounin版の最新のものはrepcached 2.3と称していますが、あくまでブランチコードと思われます。なお、この最新版は、repcac
「東大に行ったらみんな高収入」というような伝説があるようです。その伝説は完全なる嘘ではないと思いますが、その「高収入」という言葉は何を意味しているのでしょうか? 本日は生々しいお金の話をしてみましょう。ちなみに、私も別に人に会うたびに「お前年収いくら?」と聞いて回っているわけではありませんから、噂レベルのものが加味されていることをご承知下さい。 大学に残ると金は残らない? 東大の理系では民間企業や官庁に就職する人も多いわけですが、大学に残る人も数多くいます。 大学院で修士課程二年、博士課程三年を経て、大学の助教、あるいは准教授として学問にいそしむことになります。博士課程を修了後、あるいは修了前にもポストの空きがあれば(かつ優秀ならば)すぐにも大学から給与をもらうことになります。 しかし、必ずしもそういうわけにはいきませんで、私大などの非常勤講師をしながら研究生を行う人物も多いわけです。(こ
グラフのクラスタリングというものを少し考えてみます。既にあちこちで研究されているものですので、「どこかで誰かが書いてたなあ」という話を少しまとめます。 グラフとは 大前提として、グラフとは何かということになります。グラフといって、この世界では棒グラフだの円グラフだのを意味しません。 この世界ではズバリこれです。 ノード(図の○)がエッジ(図の線)によって結ばれているものをいいます。ノードにはそれぞれ番号を振ってあります。さらにこの図では、エッジに数字が書いてありますが、これはエッジの重みです。重みを規定しないグラフもありますが、重みをつけたグラフを特に「重み付きグラフ」と呼びます。 これが何を意味するのかといえば、例えばノードを「都市」、エッジを「線路」、エッジの重みを「時間」だとすれば、路線図となります。 最短経路問題 さて、グラフの中で古典的な問題に「最短経路問題」があります。Shor
本日は、たまに風邪による(と思われる)頭痛がするので、仕事がはかどりませんでした。 この痛みをとる薬というのはどうやって選べばよいのでしょうか? いくつか今日は覚えて帰って下さい。 鎮痛薬は、大抵は、プロスタグランジンという痛みを発生させる原因となる物質を作らせないことで効く(COX阻害)。 市販鎮痛薬は、主に「アスピリン」「イブプロフェン」「アセトアミノフェン」である。 同じブランドの製品でも成分は異なることがある。成分をきちんとチェックするべき。 お薬 大体、鎮痛剤というのはノーシンだのバファリンだのといっぱいありますが、基本的にはプロスタグランジン(PG)の合成を阻害するものです。 正確に言えば、アラキドン酸からプロスタグランジンを合成するシクロオキシゲナーゼ(COX)を阻害する(例えば、別の物質に変えてしまう)というものであり、COX阻害と呼ばれます。しかし、このあたりの詳しい話は
歴史を見ておりますと「後」なんとか天皇という方々が出てきます。特に有名なのは「後醍醐天皇」です。後醍醐天皇の前に醍醐天皇という方がおりまして、その治世を「延喜の治」と呼びます。あとは「後白河天皇」「後鳥羽天皇」あたりでしょうか。 なぜ「後」なのか、その問題を緊急徹底究明いたします。 追号 天皇の名前は一般的には、死後におくられるものであり、これを「追号」と呼びます。ここで、いや「追号」でなく「諡号」というのもあって…と話を始めると長くなりますし、面倒ですので、とりあえずこの記事では全て「追号」と呼ぶことにいたします。厳密には異なります。 明治以降は元号と追号が一致しており、「昭和天皇」は、元号「昭和」の時代の方です。しかし、それ以前はそもそも一世一元でもありません。明治天皇の前の孝明天皇は、弘化、嘉永、安政、万延、文久、元治、慶応*1の元号の時代が在位期間です。 崩御した天皇への追号 天皇
クラスローダ Javaのクラスローダというのは、すなわちJavaのクラスをロードするものですが、従って非常に難しげなわけです。何たって「クラス」「ローダ」です。このかっこよさにはしびれますし、「参りました」というほかありません。 このクラスローダを定義しろと言われたら、私など「私めなどが、『クラスローダ』様を定義するなどと大それたことを試みまして悪うございました。まさか私が『クラスローダ』様のような高貴で難解な方の定義を差し上げるなど、恐悦至極に存じます。究極の栄誉でございますが、これはもう、お断り申し上げるしかございません。」とへりくだるしかありません。 しかし、今日はこのクラスローダについて書いてみます。何をどうしてよいか分からなくなったので。 クラスローダとは Javaのクラスローダには「ブートストラップクラスローダ」と…などと色々あるわけですが、とにかくそれらのもとからある「クラス
Apache AXIS2というApacheのソフトがあります。これを知っている人は、一般レベルでは非常に少ないと思いますが、なかなかに面白いソフトなのです。 何とこれは、「Webサービス」を作るためのものなのです。 Webサービスとは 「Webサービス」というのは、何となく一般的な語に見えます。「Web」ときて「サービス」と来れば「あぁ、ウェブ上で提供されているサービスなのね。」と感じてしまうのが人情というものですが、実はそうではない意味で使われているのです。 実は、Webサービスというのは、HTTPを利用してアプリケーションをリモートから呼び出すことを可能とする手法でして、SOAPやRESTを利用してXMLのやりとりをするものなのです。ここでの通信は「機械 to 機械」であり、人間は介在しないのです。 こんなわかりにくい言葉を選定するのもどうかと思いますし、「Webサービス」で、人間が利
別に完全保存してくれなくていいんですが。 完全保存版(?)携帯電話・PHS企業の系譜図の別バージョン。消費者金融に特化したものは適当版消費者金融の系譜 信販系|アプラス━━(三和系)━━━━━━━━━━━━━━━━━━━━━(新生銀行)━アプラス | (↑TSUTAYAのやつとか) |広島の信販━━━━━━━━━━━━━━━━━━(アイフル傘下へ)━━━━━━ライフ |セントラルファイナンス━(東海銀行系)━━━━━━━━━━━━┓ (ちょっと業績が…) | (ジャックスとの統合を拒否→)┃(←UFJから離脱へ) |クオーク━━━━(住友系)━━━━━━━━━━━━━━━━━━┫ |オリコ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ |アコム━━━━━━━━━━━━━
私は、外食を控え、自炊をしております。 この、自炊というやつですが、一般になかなかに続かないものです。それはなぜなのか? めんどくさい この一言に尽きます。 リアル・システムキッチン・実践篇など、(当然やったことはないですが)非常によいお話なんでしょうが、これを実践できる人はかなり手慣れた人です。 一般ピープルである私たちがまねできるとはとても思えません。 つまり、我々が学ぶべきものは、道場六三郎の鮮やかな料理でも、山岡士郎の作る究極のメニューでもなく、毎日続けることができるレベルの料理です。これ基本。テストに出ます。 目的 目的は「実際問題、どうやれば自炊できるのか」というものであり、究極に食費を切り詰めるとか、そんなことはどうでもよい。目的が異なりますので、先の参照エントリーを否定するものではありません。というか、私にはとうていできないだろうなと思っただけで、否定するようなレベルにあり
先日、「正規表現」の話を書きました(d:id:atzy:20080905)が、(自称)正規表現専門家の私が、ほとんど使われていないけれど、すさまじいパワーを持つ機能を紹介しましょう。 それが「田中哲スペシャル」です。私はこれを使い始めてから肩こりは治るわ、イボ痔はよくなるわ、女の子にモテモテになるわと、人生が変わりました。 田中哲スペシャルとは このような一風変わった名前がついているのは、田中哲(たなかあきら)さんが最初のアイデアを生み出したためです。 2002年4月3日に「鬼車」と呼ばれる正規表現ライブラリ関連で提案され,そして使えるようになりました。鬼車はRuby 1.9やらPHP5やらで利用することができます。 (ruby-dev:16732) sharing sub-regexp 簡単にいいますと「同じ表現を何度も書くのがウザイ」というものです。例えば「ホスト名(FQDN)にマッチ
ふと思ったのですが、多くのサラリーマンはどれくらいの税金や保険料を払ってるのでしょう。 前提 税金の中でも固定資産税とか、たばこ税、酒税、自動車関係、その他諸々の人によって異なる部分はとりあえず置いといて、所得税、住民税、消費税について。扶養や医療費、生命保険などの人によって異なる控除もなしとしましょう。独身で賃貸に一人暮し、酒もタバコもあまりなしということで。 サラリーマンの平均年収がどれくらいかよく知りませんが額面で500万円ということにしましょう。大体どれくらい払っているのか。 税金 直接税 年収500万円とすると課税所得はだいたい300万円といったところでしょうか。 ということで、所得税が10%で10万円控除として20万円、住民税も10%として30万円。概算で50万円と言えます。 消費税 さて、消費税ですが、いい加減にいえば消費の5%となるわけです。500万円の年収では税金や社会保
とりあえず、プラグインの連鎖とでも呼べるものを作ってみました。 ATOKに限らず、あるファイルの絶対パスを入力したいときにいちいちエクスプローラなどをたどるのがめんどくさいものです。それをしなくてすむようなプラグインが例です。 ソース 例によってソースを書いておきます。大したことはしていません。 #! /usr/bin/ruby -Ku require 'dbm' require 'kconv' DB_FILE = 'filepath_plugin' module Atok_plugin def run_process(request) path = request['composition_string'] path.sub!(/\/[^\/]+\/\.\.$/, "") testpath = path.sub(/^(\w:)$/, "\\1/") if FileTest::direct
自分がプラグインを作るのはそれはそれで楽しいのですが、人様が作ったのを見るのも楽しいものです。いくつか探してみました。 ATOKダイレクトAPI for Perl/Rubyで気軽にATOKを拡張しよう!はクジラ飛行机さんによる作り方の記事です。(11/04 追記) スクリプトをそのまま実行 既に、数日前にも出しましたがATOK で ruby の実行結果を返すプラグインというものがあります。 それから、ATOKのAPIでPerl電卓を作ったではPerlで同様のものができています。 しかし、evalさせるものが出回っていると、安易にネットワーク連携させるものと組み合わせると、システムを全部フォーマットさせる輩とかがでてきかねない罠。 Social IMEに接続 ATOKダイレクトAPIが公開されたのでさっそく作ってみた これは、Social IMEに接続して、変換を行うというものです。わたしは
昨日(d:id:atzy:20081030:p1)の続き。もう少し汎用的なサービスもATOKダイレクトで作れるかもしれない。 例えば、ATOKをRSSリーダにしてみましょう。 (はてなの情報をRSSで表示したもの) これで、天気もニュースも何でもATOKから呼び出せることになります(のはず)。 以下、作り方や説明など。 RSSを解釈 RSSをRubyで解釈するのも、そんなに頑張らなくてもREXMLでXPath検索すれば十分とも言えますが、どうせなので、専用のRSSパーサを使ってみます。 RSS Parser これを用いて、RSSから次のものをとってくることにしました。 title description link これだけです。 ソース ソースは以下の通り。RSS_SITESというところは、好きなように書き換えて追加して下さい。この設定では「はてな」で呼び出すとはてなのグループのRSSが解
ジャストシステムが今日発表した、「ATOKダイレクト API for Perl/Ruby」は面白そうです。面白そうというのと、役に立つというのはまた別の話だったりするのですが、工夫すればいろいろと作ることができるはず。(続編(ATOKでRSSリーダ)はd:id:atzy:20081031:p1) ATOKダイレクト API for Perl/Ruby 天気予報を探す とりあえず、簡単なところで、天気予報Webサービスを呼び出してみます。 天気予報をXMLで提供しているのは、私が知る限りではライブドアのサービス*1があります。つまりお天気Webサービスというやつです。無駄にSOAPとかで提供しておらず、また、JSONなどでもありません。RESTですので運よくRubyでも処理がしやすい*2と言えます。 ウェブサービスを呼び出す どうやら、地域と日付(今日・明日・明後日)を指定して取り出せるとい
最近何も書いておりませんが、いろいろと考えていることがあります。 いろいろとやっておりますので、それらはいつか書きます。 PHSでローグをしたい 昔(たぶん四年くらい前)に作ったのが、Krogueというソフトウェアです。これは「ローグ」、すなわちトルネコの大冒険の元祖の元祖のようなソフトウェアを楽しむためのものです。(機能は大きく劣りますが。) Krogue Classic カーソルキー(移動) Enterキー(足踏み) PageDown(階段を下りる) このソフトには、武器を加えようという話があったけれども、それがそのまま忘れ去られています。上記URLで公開されているものは、ちょっと中途半端なバージョンですね。「クラシック版」となっています。 このソフトは非常に重要な学術的理由から開発されたものです。当時大学院博士課程にあった私は、計算機科学的に非常に大事なことがら、すなわち「大学の行き
Ajaxと「戻る」 Q-pedia 私の作っている事典サイトのQ-pediaは、画面の切替をAjaxで行っています。これはこれでよいのですが、非常に大きな問題がありました。それは「戻る」ボタンが使えないということです。これを解決しておいたのが今日のお題です。 賢明な読者様ならば御存じのように、Ajaxでは真の意味での「画面遷移」をしません。それに対して、非Ajaxでは「画面遷移」を行います。画面遷移を行うということは対応する「戻る」(そして「進む」)が存在するということになります。 以下は、非Ajax型の「画面遷移」です。遷移でURL自体が書き換わります。 以下はAjax型の「画面遷移」です。JavaScriptによって、元のURLの画面の一部を書き換えているだけです。 というわけで、普通にAjaxを使うと「戻る」ボタンが使えないという問題が起きます。戻り先URLなるものが存在しないので当
村ができました。新しい村です。 村の始まり 最初の頃は、小さな村でした。腕に覚えがある人とか、今までの村に飽き飽きしていた人が徐々に移住してきました。この村は、他の村とは少し変わった雰囲気を持っていました。それは元々は村の創造主が「変な」人だったからかもしれません。そして、それにひかれて村に入ってきた人たちの性質に起因することも大きかったことでしょう。 強いツナガリ この村は創造主が作った緩やかな掟がありました。「みんなで同じ仕事をしようね」と。 そうです。他の村は、てんでバラバラにいろんなことをやっているのです。でも、この村では、共通の仕事を行い、その成果をみんなで愛でることが行われるのです。「みんなで大きくしていこうね。育てていこうね。世界で一番いい村にしようね。村どころか、世界一の都会にしていこうね。」 先進的なボクら 村人たちは、自分の村は先進的だと誇りました。「オラたちの村は最高
私は時代劇が好きなのですが、特に好きなのは「水戸黄門」「暴れん坊将軍」です。最近はテレビを見なくなりましたから、見ることはありませんが、子供の頃は本当によく見ていました。(これは私の祖母の影響かと思います。) 水戸黄門ですが、私個人は悪役俳優の東野英治郎さんが初代黄門様を演じていた時期から、西村晃(またまた悪役ですな)さんを経て佐野浅夫さんになったあたりまでを見ていました。 いくつか、明日すぐに使える水戸黄門(ドラマ)知識をお教えいたしましょう。 最近のものは見ておりませんので、お許し下さい。 初級編 助さんは剣の達人、格さんは柔術の達人 例の曲は「あゝ人生に涙あり」という うっかり八兵衛が風車の弥七を「親分」と呼ぶのは本当に(盗賊としての)親分であったから 黄門様より偉い公家が出てきて「控えおろ」に屈しなかったことがある(追記:追加情報はコメント欄参照) 風車の弥七は最初は敵(?)だった
正規表現の問題集1(基本編)なるものが、CodeZineで公開されています。 筆者が運営するサイト『正規表現パズル』で扱っている、正規表現の問題とその答えを、EmEditorの正規表現を使って解説していきます。 http://codezine.jp/article/detail/1573 正規表現をこよなく愛しており、正規表現のライブラリも実装したことがあり、正規表現の論文も書いたことがあり、正規表現たんを抱き枕にしている、(自称)正規表現専門家の私といたしましては、最大の敬意をもってこのサイトを読ませていただきました。 その上で私なりの、正規表現を使いこなすためのポイントをいくつか紹介していきたいと思います。 正規表現を使いこなすための3つのポイント 使うな どうしても使うときは基本機能だけにしろ 先読みよりプログラミング言語のwhileやifを使え 使うな 身もフタもありませんが、余計
マクドナルドのコーヒーは、価格の割にはかなりおいしいと思うのですが、残念ながら100円から120円に値上げされてしまいました。(Sサイズの場合。) もっとも、Mサイズは据え置きのようです。 Sサイズの料金でたくさんの量を飲む方法 しかし、ご存じの方もいらっしゃると思いますが、Sサイズを頼んでもMサイズ分のコーヒーを飲むことも可能です。(ごく一部の店舗では不可能。) それは、非常に原始的な方法ですが、なかなか使いづらいという性質も持ちます。 それは… まず、Sサイズのホットコーヒー(プレミアムなんたら)を頼みます。そして、心ゆくまでその味を楽しみます。 そして、マクドナルドの店員のところに行きます。 そして…、 「お代わり下さい」と発声します。 すると、店員さんがスマイルとともにカップにホットコーヒーを注いでくれますので、また心ゆくまでその味を楽しみます。 (以下、無限ループ可能ですが、あま
はてなを題材にして地図を(自動的に)書いているのですが、それが適切かどうかを感覚的にでも確かめるために、本当にあちこちを見て回りました。 刺すか刺されるか 普通に生きていれば知らなくて済むような、あるいは胸くそが悪くなるようなことを知ってしまいます。「お前が自分で知りたくてやってるんだろ」といわれればその通りで、知りたくて知りたくてしょうがないのですからそれは仕方ありません。 大体、はてなからその手の胸くそが悪くなるような毒を抜いてしまって、「今日はこんなスイーツを食べました。」ばかりになると、私は読む気がいたしません。 現在のような、刺すか刺されるかの混沌と喧噪のはてなだから、面白いわけです。 話題 「非モテ」「はてな論」「歴史修正主義」「y_arimがどうこう言った」などという、ある意味「どうでもいいこと」、この手の「世間から見てわざわざブログで熱く論じないこと」こそがはてなで盛り上が
次のページ
このページを最初にブックマークしてみませんか?
『Atzy->getLog()』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く