txqz blog

3893件中1から15件目を表示します。このリソース群のタイトルリスト、またリソースのAtom表現RSS1.0表現も参照できます。

「こうなる。」リリース

sangi.inshuugi.inと続けてきた佐藤研予測市場シリーズですが、このたびより汎用的にいろいろ予測できるサイトとしてkouna.ruをリリースしました。shuugi.inで予測していた次期総理大臣とか民主党の党首選とかのネタもkouna.ruで扱っていますので、シンプルトレード方式の導入などでより便利になったkouna.ruをぜひご利用ください。今日は本当はprediction.jpのリニューアル予定日でもあったのですが、prediction.jpは公開が8月1日に延期になってしまったようですので、predictionファンの方はそれまでの場つなぎにでもぜひご利用ください。

今回はWicketというJavaフレームワークを使って開発しました。あまりにもWicketがすばらしすぎてid:Kishi勉強会でライトニングトークまでするそうです。やっぱりメソッドチェーンができたり無名クラスでいろいろやったりWicketは面白いフレームワークですね。今までのJavaのフレームワークはなんとなく窮屈な感じのプログラミングを強いられることも多かった気がしますが、Wicketは矢野さんのおっしゃるとおりJavaぽくて面白く書けました。確かに、最初のうちは慣れが必要でしたが、そこを乗り越えれば、あと必然的に大量になるファイルの管理がEclipse上でもっとよくできたら (たとえばファイル名でインクリメンタルサーチができるとか) 、さらに画面のどこの部分がどのPanelから生成されているのかちゃんと覚えられたらかなり面白くプログラミングができます。えぇえぇ、面白くできるのです。

タグ

PHPカンファレンス2008のメモ

10時

こうなる。」のリリースを翌日に控えているのにもかかわらず東京まで出張ってPHPカンファレンス2008に参加するなどした。京急の青物横丁~京急蒲田が新規乗車区間にカウントできた。京急蒲田駅が2面3線なのにまずびっくりした。京急蒲田は羽田空港へ向かう線と横浜へ向かう線の分岐駅で、どちらも非常に大量の列車が運行されている。品川から羽田空港行きの快特に乗ったのだが、降りたホームの発車案内に行き先と真反対にある地名が次の列車の行き先として表示されていてはじめてこの駅が2面3線であることに気づいた。これだけ厳しい条件でよく普通に運転できるなあ。平面交差分岐の通過車両数ランキングを作ったら、名鉄の枇杷島分岐点と京急蒲田駅のどちらが上位に来るのだろう。

鉄道話はこれくらいにしてカンファレンスの話。午前のセッションはメモし忘れたので午後から。

13時

まずIPAの人によるセキュリティの話。IPAがセキュリティ向上のためにどんな活動をしているかと、SQLインジェクションの実演。というか、フォームがあったら<script>alert("hoge");</script>と入力するのは礼儀だと思うし、1' or 'b' = 'bというようなハンドルを名乗る人が自分の名で検索したり登録したりすることは普通に行われるものであるから、いちがいに「攻撃」といわれてもしっくりこない。引用符とかカッコの記号とかがまずいのはシステムや言語の勝手な都合であって、そんなのものに人間の都合を縛るべきではない。IPAに報告される脆弱性の割合はXSSが5割でSQLインジェクションが2割とのこと。脆弱性報告を受け付けていますという話のところではまちちゃんのアレについて言及してくれたら神だと思ったが、客層がマジメなのでそういう空気でなかった。

14時

14時のセッションはサイボウズの米川さんによる大規模向けパッケージソフトウェアとPHPの話。PHPはPHP Hypertext Processorの略で、この場合HypertextとはHTMLでつまりPHPはHTMLを出力するのが目的の言語ということになるので企業向けパッケージソフトに採用するというのがまず新しい。いきなり「嫁にするならビアンカ」という自己紹介があって何のことだと思ったがあとのセッションで文脈の説明があった。質問のある人にマイクを持っていくのではなく会場中央のマイクに向かわせるのは良いと思うが、列の間隔があまりに狭くて通路から離れたところに座っている人は質問しにくいだろうなと思った。

15時

15時からはユーザ会の活動報告。16時出社のプログラマでフローラ派のhaltさんによると、ユーザ会の問題を解決するためにCodereposが有効であるとのこと。次いでDo You PHP?の下岡さんによるPHPネタの集め方の話。基本的にRSSを購読して、RSSのないサイトはWWWCを使い、MLからは気になるサブジェクトを拾い読みしている。質のいいネタを効率よく取るため、コミッタやフレームワーク開発者、上級者のブログを主に読む。InfoRSSというFirefoxのプラグインは新着があるとポップアップして知らせてくれるため疲れたときに流し読みするときに使える。尤も、最も重要なのは自分で試したことをネタにすることであるという。「結果にたどり着く家庭が貴重な情報。こうやったら失敗した、その失敗はこうやったらうまくいったという情報があまりない。自分で地雷を踏むのが一番いいネタの探し方。ぜひハマってそれを公開してください」というのはそのとおりだけど、私の場合あとから失敗経験を振り返ろうにもログも記憶もないのでなかなか書けない。もっと作業メモを詳細に取ればいいのだけど、それより何とかして解決させようと言う気持ちが早ってしまう。人に訊かずに自分で試して公開すればいいのにというのは妖精現実にも書かれているとおり。

16時

16時はパネルディスカッション。Perlの人とRubyの人とPythonの人とJavaの人とJavaScriptの人による「PHPの次に学ぶべき言語はどれか」というお話。以下ディクテーション。途中でパソコンのバッテリーが無くなった。

Q 皆さんから見たPHP

レンタルサーバでどこでも動く。XOOPSとかOpenPNEなどキラーアプリが多い。 いろんな関数が標準で入っている。
ウチのまつもとが大変ご迷惑をw 命名規則の不一致、他の言語の真似など言語使用の部分に問題。 実装はいい、他の言語はPHPのまねをするためにがんばっている。 RubyもRailsでそうがんばっている。最近になってやっと追いついてきたくらい。 Rubyは別スレッドになるのでPHPに比べると制御が面倒。 PHPから見ればぜんぜん問題にならないようなことをRubyの人はがんばってやっている。
PHPは大衆向け言語。いい意味でも悪い意味でも。 デザイナなども触るのでどうしてもクオリティが下がる。 なんでも関数というのは一般の人でも開発に取り込めるようにわざとやっている。 PythonはPHPと違って人を選ぶ。 文字列を埋め込むと必ずそれはサニタイズ…サニタイズっていっちゃいけないんだっけw
Flashとの結びつき。
PHPをやっているひとはやさぐれた人が少ない。さわやかな人が多い。モテ言語。 JSはShibuya.jsのせいでもてないイメージがついてしまったw いやなところは(1)Lamdaがない;クロージャがない:レキシカルスコープの保存ができない。 (2)アロー演算子;式と変数を分けて考えるのがキモイ。
PHP5.3からラムダは入るかもしれない。

Q PHPの次に学ぶ言語は? これしか用意していません。

JSです。ブラウザで動く唯一の言語、いろんな言語の人がJSをやらざるを得ない状況。 JSは関数言語でも手続き的でもオブジェクト指向的でもいろいろあがっている。 すべての言語のハブになっている。関数がファーストクラスオブジェクトで純粋な値。 クラス指向にもオブジェクト指向も見渡せる。 PHPとJSのコラボもできるのでモチベーション的にも続く。
AS。仕事に結びつく言語をできればやりたいと思っていると思う。 私がJavaを学んだほうがいいといっても、それが明日急に仕事になるわけではない。 ASはリッチクライアント作成のデファクトスタンダード。 言語的にも面白い。フラッシュプレイヤー8からAS2がでてきて。 AS3はEcmaScriptの実装。 将来的にはJS2.0と一緒になる。 デファクトスタンダードがASとJSが一緒になったJS2.0的なものになるはず。 AS3がいい。
ぜひPythonを学んでください。 実は非常に学びやすい言語です。 予約語の数はもちろんPerlより少ない。Javaよりも、Rubyよりも。30くらいしかない。 記号をあまり使わない。 インデントを使うのでブラケットを使わない。 オブジェクトのつくりが単純で、プロトタイプ指向。 名前空間も非常に明確でハマるところがない。 学びやすい言語。 ウェブの開発がこれから何年続くのかを考えると。 20年後にあるか。 Pythonはウェブ以外にも、サーバやGUIや数値計算やCGもできる非常に広まりのある言語。
ぼくもRedHatのインストール画面でお世話になっていますw
中長期的に学ぶならなんでもいい。 ウェブの開発自体は10年前からあって今もあるので多分10年後もある。 開発の内容自体は大きく変わっている。 自動化ができると言うメリット。 PHPはウェブアプリケーションには向いているが、そこを離れた部分の自動化はがんばらないとしづらい。 バージョンごとの互換性が微妙。 RubyにはRailsというのがありまして、 Rakeで自動インストールができる。 PHPでPHPのインストーラを書くのは結構大変。 自動化ツールのためには他の言語を覚えたほうがいいかな。 Perlが好きならPerlを、Pythonが好きならPythonを。 コマンドラインで使いやすい言語をひとつ覚えると、今のPHP開発のために役立つ。
何で皆さんは言語を学ぶのか。 日本語の次に学ぶ言語って何? PerlにはCPANという文化がある。いろんなモジュールが世界中から登録される。 モーニング娘で検索すると3つひっかかる。 MorningMusume::Base こういうのPEARとかにないですねえ。 多分そういうのが文化。 人を成長させる言語。
Perlは文化だというのはYAPCでも感じた。 PEARとCPANの違いは?
CPANは登録すればできてしまう。PEARは申請をしてアカウントをもらってアドバイスをもらって投票してやっと登録される。普通のライブラリ集に比べれば多いがCPANほどではない
だからモー娘はないんですねw
どこかにあるかもしれないがそれを探すすべがない。 バッティングしないよ派と世界が広がるよ派。
PHP,JS,ASの存在理由、多くの人が使っているの理由は誰でも使えること。 Perlとかだと新しくインストールしないといけない。
PHPからRailsへってJavaからRubyへじゃないですけど。 PHPの文化はあまり見えてこないがRailsの文化はすごくみえてくる。 PHPのいいところをRailsのいいところを足して2で割っても必ずしもいいものにならない。 それが文化。
僕の想像するRailsはこれ。 [東京近郊全路線図] 現実はこうなってる。Javaもいろんなフレームワークがあって。 そんなにRailにしばられなくってもいい。自転車を使うのもいい。
いろんな言語の特徴を混ぜるごとにその言語は悪くなっていく。 焦点がボケる。 Javaはシンプルさがウリだったのにつまみ食いしていくうちにごちゃごちゃしてきた。 いろんな言語から混ぜると危険。
DjangoとかRailsとかをいじりはじめたら、PHPのフレームワークの世界観と違うものがみえた。
いま何の話をしているのか分からないw Perlをやっていて思うのは、自由。 PHPのクラスはどうしようもねーなー。 JSだとfor in文でまわせば全部出てくる。 PerlだとClass Inspectorで分かる。 そういうのがPHPにはない。 JSではフレームワークを使わない派。 クライアントサイドは一人で作っちゃったほうが良くて。 ライブドアリーダーはmalaさんがすべてみたいな、そういう文化の違いがJSにはある。
元の言語がしっかりしていれば無理に使う必要はない。
新しいフレームワークは覚えるのが大変。みんながよく使っているフレームワークを使うのがいい。副都心線より みんながあまり行かないようなところに行こうとすると公共交通機関でないものが必要になる。お金のある人はタクシー。
フロントコントローラが嫌い。 PHP自体が一種のフレームワーク。SESSIONの取り扱いとか。 他の言語のいいやり方がPHPでいいやり方とは限らない。
あと時間が10分しかない。議論がまとまっていないと言う話もありますが。 何か質問があれば。
会場
これは面白い、というのと効率的にこなしたいというのがある。 そういう観点での言語別オススメ点。
効率のよさではC言語。JavaもJSもSpidermonkeyもC++。 スケールアウトやパフォーマンスチューニングをしようと思ったときはCを触れると強い。
じゃあ私もC。 PHPを学ぶ上でCが分かったほうが強い。
CをかけるといいのはPythonも同じ。 Pythonは後方互換性が非常にメリット。
マジメに答えるとSQL。 ボトルネックはSQLの部分が大きい。 SQLをやるほうが開発の効率が高まる。

ここでバッテリーがばたんきゅー。高橋さんがPHPシャツの背中側にRubyマークを用意してたりAmachangのJavaScriptへの想いが炸裂していたのが印象に残った。

17時

最後にライトニングトーク。

デザイナとの協業を本気で考える

「デザイナに優しいテンプレートシステム」Kwartzの紹介。私もまさにいまWicketを触ってその(略)さに(略)。たしかに、wicket:id="hoge"みたいな感じで紐付けようとすると、普通のHTMLエディタは未知の属性wicket:idを警告表示するだろうから、Kwartzのようにid="mark:hoge"とやるのは一つの解だと思う。

PHP meets Ext JS (MA4で受賞するための5つの方法)

マッシュアップアワードで受賞するためにはAPIをたくさん使って、特に地図のAPIを使って、サーバは安いプランでよくて、見た目に気を使って、あとExtJSを使うといいよという話。見た目に気をつけろというくだりの自虐ネタがかなり面白かった。写真を有効に使ってぜひ面白いプレゼンを心がけていきたい。

Flash書き換えPHP extension

フラッシュをいじる話

前日Hackathonでなにがおきたか?

前のセッションでドラクエ5ネタが出てきた件の文脈説明。完全身内ネタであることは、今までとは明らかに感じの異なる笑い声が急に増えたことからも分かる。

家族持ちIT系技術者の交流会in東京・リベンジとこれから

時間が余ることを見越したプレゼンという。よくアルファな人の生い立ちを聞くとやれ6歳からプログラミングしてたとかそういうのが多いけど、いま現役の技術者の皆様はご子息のそういう方面の教育についてどういうプランニングをしているのだろう。

いよいよPHPの人にrhacoを紹介しちゃいますよ

rhacoかわいいよrhaco

PHPで作る携帯の新しい未来

魅せ方として非常に新しいと思うけど、あまり広まってしまうとこの動画が任天堂から削除依頼されたりして?

PHPプログラマ・エンジニア育成のポイント

情報教材のページを読んでいるかのような印象を持ってしまった。シートを分割しすぎて1枚1枚の文字数が少なくなりすぎたのが原因だと思う。高橋メソッドめかすならめかすで文字の大きさにメリハリをつけると良かったのかも。宣伝が強まったとたんにドラが鳴って円満に終了。

19時

上京のもう一つの目的である、北海道フリーパス購入を品川駅で実行。東日本の窓口で北海道フリーパスを買うには北海道(中小国以遠?)まで有効な乗車券を買うか提示する必要があるはずだったのだがすんなり買えた。ついでに指定も取ってもらったのだが、はまなすの寝台車が増1号車でしかも残り2席だったのに対し、まりもはガラガラでびっくりした。そりゃ今夏で廃止になるわ。そんなに夜行バスのほうが快適なのか?

品川から新幹線で帰るのだが、学割きっぷがあるのにex-icつきの予約をしてしまう→変更したと思ったら乗車券購入のままになっていた→発車5分前に気づきまた修正したが手数料210円を決済されてしまった→定期も一緒に改札に入れるのを忘れて改札が閉まった→駆け込んだのはいいが浜松に停まらないひかりだったという5連コンボをキメてしまった。連日の開発でちょっと疲れてたかNa☆

タグ

PagingNavigatorが出すHTMLがアレなので直した

たとえば「全部で100件ある記事を15件ずつ表示したい」というのをWicketでやるにはPageableListViewPagingNavigatorを使う。PagingNavigatorはページャを自動に生成してくれる便利なクラスだが、生成されるHTMLが大変微妙で、たとえば「最初」へのリンクのテキストが"<<"、「次」へのリンクは">"となっている。もちろん「次」へのリンクにrel="next"などついているわけもなく、明らかにユーザビリティが低い。実際にWicketのソースからPagingNavigator.htmlを見ると以下のようになっていた:

<wicket:panel>
    <a wicket:id="first">&lt;&lt;</a>&nbsp;<a wicket:id="prev">&lt;</a>
    <span wicket:id="navigation">
        <a wicket:id="pageLink" href="#"><span wicket:id="pageNumber">5</span></a>
    </span>
    <a wicket:id="next">&gt;</a>&nbsp;<a wicket:id="last">&gt;&gt;</a>
</wicket:panel>

そこで、PagingNavigatorを継承したクラスであるMyPagingNavigatorを作成する。

javaファイルのほうはPagingNavigatorをextendsした上で、PagingNavigator.javaを丸コピしておく。htmlファイルは:

<wicket:panel>
<ol class="pager">
    <li><a rel="first" href="" wicket:id="first">最初</a></li>
    <li><a rel="prev" href="" wicket:id="prev">前</a></li>
    <li wicket:id="navigation"><a wicket:id="pageLink" href="#"><span wicket:id="pageNumber">5</span></a></li>
    <li><a rel="next" href="" wicket:id="next">次</a></li>
    <li><a rel="last" href="" wicket:id="last">最後</a></li>
</ol>
</wicket:panel>

こんな感じ。ただ、実際に表示させてみたところちょっと気になるところがあった。

<ol class="pager">
    <li><span rel="first"><em>最初</em></span></li>
    <li><span rel="prev"><em>前</em></span></li>
    <li><span><em><span>1</span></em></span></li><li><a href="hogehoge"><span>2</span></a></li>
    <li><a href="hogehoge" rel="next">次</a></li>
    <li><a href="hogehoge" rel="last">最後</a></li>
</ol>

リンクがないときにa要素がspan要素とem要素に置き換わり、さらにspan要素にrel属性が残ってしまう。これでは気持ち悪いので、この変換がどこで行われるのか追いかけてみたけど分からなかった。時間があったらもっと詳しく見ていきたい。

タグ

Googleの乗り換え検索は新しい駅名に対応していない

「東京から大阪」という具合に駅をからで結んでやると乗り換え案内がトップに表示されます

これは便利な機能で私もよく使っている (「乗り換え 乗車駅 下車駅」で検索してもできる) のだけれども、新駅や駅名変更に対応していないのが不満。たとえば「名鉄名古屋から山王」で検索しても乗り換え案内は表示されないが、「新名古屋からナゴヤ球場前」だと乗り換え案内が表示される。

ここでGoogleトランジットを選ぶと「新名古屋」も「ナゴヤ球場前」もトランジットのほうの地名データベースには存在しないのか、入力のやり直しを求められる。ここで出発を「名鉄名古屋」、到着を「山王」にするとうまく乗車案内をしてくれるけれども、こういうところでデータの同期みたいなのがうまくいっていない現実を見せられると萎える、とか書いている裏でアップデートされていますたというオチを期待しますが。

また、えきから時刻表 を選ぶと駅名候補がないといわれるが、駅探はなんとそれぞれ「名鉄名古屋」と「山王(愛知)」に読み替えてくれる。すばらしい。ekitan++

タグ

Mozilla Java Html Parserが動いた

5ヶ月前から放置していたMozilla Java Html Parserだが、さっき入れなおしてみたら動いた。前回はMozillaHtmlParser.jarの中に入っていたcom.dappit.Dapper.parser.example.ParserExampleを参考にしたが、今回はQuick Startを参考にした、というかinitメソッドに渡す値が変だったのでそれを直せばよかったみたい。Quick Startに書いてあるとおりに、C:\Program Files\MozillaHtmlParser\mozilla.dist.bin.winとかを環境変数のPATHに加えたのだが、ソースにもその文字列をまた書くことになってしまった。多分もっと頭の良い方法があるのでそのうち調べる。

ソースは以下のとおり:

import java.io.File;

import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;

import com.dappit.Dapper.parser.EnviromentController;
import com.dappit.Dapper.parser.MozillaParser;

public class MJHP {
    public static void main(String[] args) throws Exception {
        File parserLibraryFile = new File("C:\\Program Files\\MozillaHtmlParser\\native\\bin\\MozillaParser" + EnviromentController.getSharedLibraryExtension()); 
        String parseLibrary = parserLibraryFile.getAbsolutePath(); 
        MozillaParser.init(parseLibrary, "C:\\Program Files\\MozillaHtmlParser\\mozilla.dist.bin.win"); 
        MozillaParser parser = new MozillaParser();
        Document document = parser.parse("<html>Hello world!</html>");
        System.out.println(dom2string((Node)document.getDocumentElement()));
    }
    public static String dom2string(Node n) {
        StringBuilder buf = new StringBuilder();
        switch(n.getNodeType()) {
        case Node.TEXT_NODE :
            return n.getNodeValue();
        case Node.ELEMENT_NODE :
            buf.append(String.format("<%s", n.getNodeName()));
            NamedNodeMap attrs = n.getAttributes();
            for(int i = 0; i < attrs.getLength(); i++) {
                Node attr = attrs.item(i);
                buf.append(String.format(" %s=\"%s\"", attr.getNodeName(), attr.getNodeValue()));
            }
            buf.append(">");
            for(Node child = n.getFirstChild(); child != null; child = child.getNextSibling()) {
                buf.append(dom2string(child));
            }
            buf.append(String.format("</%s>", n.getNodeName()));
        }
        return buf.toString();
    }
}

実行させると、以下のような出力を得られる:

Operating system : Windows XP
<html><body>Hello world!</body></html>
Initializing XPCOM from location : C:\Program Files\MozillaHtmlParser\mozilla.dist.bin.win...

ひどいHTML特集Mozilla Java Html Parser編を加えた。table直下にtbodyを補完するHTMLパーサは今のところこれだけ。その一方tr直下にtrが来てしまうなどの問題も見られた。

タグ

ぜひ無責任に記事を書いていきましょう

oquno@tumblr経由ですすむ「はてな」の2ちゃんねる化。なんか「経由で」と書くと湾岸日記みたいでいいですね。それはそれとして。

日本には2ちゃんねるという悪名高い掲示板が存在します。こんな時代に遅れた、そして悪質な掲示板というのは世界でも非常に稀です。海外の間でもなぜこのようなサービスが流行っているのか、しばしば話題にのぼっています。

2ちゃんねるの何が悪質なのか? それは匿名による根拠のない誹謗中傷で溢れかえっているところです。

関連記事から2ちゃんねるでお祭りが起きると光って教えてくれる赤色灯を見ると

デジマガユーザのみなさん、「2ちゃんねる」は見てますか?ベタなボケですが、テレビの2チャンネルじゃないですよ。某巨大掲示板群として有名な「2ちゃんねる」です。

2ちゃんねるの利用人口は1千万人を超えると言われており、膨大な数の掲示板でその人たちが24時間365日口論語り合っています。

一人暮らしの男性必見!ご飯の作り方を見ると

2ちゃんねるの掲示板をまとめたサイト「ぶる速」に、「一人暮らしの飯のときによくありがちなこと」というスレッドの内容がまとめられています。

これを読めばあなたの一人飯ライフも、きっと今よりは楽になるはず!

結局2ちゃんねるなる掲示板が悪質なものなのか人気なものなのか生活に役立つものなのか不明。真実を切り抜いたものが事実だとしても、この切り抜き方は恣意的に過ぎるし、自分が昔書いたことを忘れているか敢えて無視しているかなどのしたたかさがないとここまで読者に読解を期待する記事は書けない。

そこで

デジタルマガジンは「2ちゃんねるの何が悪質なのか? それは匿名による根拠のない誹謗中傷で溢れかえっているところです」と書く一方、関連記事の「一人暮らしの男性必見!ご飯の作り方」では2chまとめサイトを「これを読めばあなたの一人飯ライフも、きっと今よりは楽になるはず」と紹介している

するとmyrmecoleon先生

@youzaka まとめると「本誌は匿名による根拠のない誹謗中傷をまとめたサイトを読者に紹介します」ということですね。

そうなりますね。

タグ

ホムペ作ったー\(^o^)/

勉強会メンバーの一人がハムスター島でホムペを運営しているとのことで私の中で空前のホムペブームが到来、そのままアカウントを取って自分のホムペを立ち上げた。

動作確認かっこわらいをOpera9.27で取りつつ作成したため、Firefox2やIE6で見ると残念な結果になってしまった。FirefoxやIEで見るのは同一保持権の侵害かっこわらいなのでOperaユーザ率を高める意味も込めて皆さんOperaをぜひインストールしてアクセスしていきましょう!でも実際そんなの面倒だと思うので、下にキャプチャを置いておきますね><

IE6
Firefox2
Opera9
Safari3

きょうびはブログ全盛の世の中でみなさんなかなかホムペを持つこともないかもしれませんが、一つ作っておくと名刺代わりにもなっていいよ!オヌヌメ!

などのネタはともかく、気づいたところ:

iframeとかobjectとかはどうなるのかな? まあどうでもいいや。あと、最近はニコニコ動画とかもあるし、はてブのコメントをニコニコ動画風に見るサービスだってあるのだからmarqueeの復権があってもおかしくないのではないか。知らなかったんだけどmarqueeには以下のような愉快な属性が定義されているらしいぞ! みんなでぜひ文字列を上下左右に動かそう!

marquee要素の主な属性
属性名属性値意味
behaviorscroll(初期値。一方向スクロール), slide(端にぶつかると停止), alternate(往復スクロール)スクロールの仕方を指定。
directionleft(初期値。右から左), right(左から右), down(上から下), up(下から上)スクロールの方向を指定。
scrollamount数値スクロールする量をピクセル単位で指定。
scrolldelay数値スクロール間隔をミリ秒単位で指定。

ということで、熱に30分ほど浮かされて正気に戻りました。

タグ

はてブのAtomAPIからまとめてブクマ

はてブはたまにどうしようもなく重いときがあり、タブが30とかあるのにこれ全部ブクマするまでどれだけ待たせるのか不明だし何か手元のOperaだとJavaScriptが重くてそもそもコメントがかけるようになるまで30秒くらい待ち続ける必要があったりしたので2006年に書いたやつのJava版を作った。

package net.txqz.client;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.TimeZone;

import org.apache.commons.codec.binary.Base64;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.StringRequestEntity;

public class HatebClient {
  private HttpClient client;
  private String user;
  private String pass;
  
  public HatebClient(String user, String pass) {
    client = new HttpClient();
    this.user = user;
    this.pass = pass;
  }
  
  public void post(String fileName) throws IOException {
    String format = "<entry xmlns=\"http://purl.org/atom/ns#\"><title>dummy</title><link rel=\"related\" type=\"text/html\" href=\"%s\" /><summary type=\"text/plain\">%s</summary></entry>\n";
    String url = "http://b.hatena.ne.jp/atom/post";
    String contentType = "application/x.atom+xml";
    String encode = "UTF-8";
    
    BufferedReader in = new BufferedReader(new FileReader(fileName));
    String line;
    while((line = in.readLine()) != null) {
      if(!line.startsWith("http")) continue;
      PostMethod post = new PostMethod(url);
      post.setRequestHeader("Content-Type", contentType);
      post.addRequestHeader("X-WSSE", getWsseHeaderValue(user, pass));
      Object[] args = line.split(" ", 2);
      String request = args.length == 2
                     ? String.format(format, args)
                     : String.format(format, args[0], " ");
      
      post.getParams().setContentCharset(encode);
      post.setRequestEntity(new StringRequestEntity(request, contentType, encode));
      int status = client.executeMethod(post);
      System.out.println(status);
    }
  }
  
  protected final String getWsseHeaderValue(String username, String password) {
    // 省略。Java からはてなフォトライフAtomAPIを使う からコピペ。
  }

  public static void main(String[] args) {
    HatebClient client = new HatebClient("aidhi", "pasuwa-do");
    String file = "path/to/filename";
    try {
      client.post(file);
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

どこかのファイルに

http://example.com/bukuma_suru_URI [tag][tagu]comment
http://example.com/bukuma_subeki_URI [tag][tagu]komento

みたいな感じに書いてスクリプトを実行させればおkで、何をブクマしたかの情報がローカルにも残って一石二鳥ですね。

タグ

一文字.laドメイン更新凍結でべっかんこ移転

Z.laが廃止になって、なんでu.laはそのままサービスが継続できているんだと思っていたのが、やはりそううまくはいかないようで、ula.ccに移転ということになったのらしい。gTLDとか自国のccTLDを使わない場合はこういうリスクが高まるのはしょうがないにしても、どうもカネの力というのは汚いものであって万国の労働者は団結して……それはないな。

あと、衆議.院つなが.るみたいなドメインハックはそれがCOOLだと思っているからこそやられているのだけど、いきすぎるとドメイン名の強制変更でURIも変更→ぜんぜんCOOLじゃない! というチキンレースなのかもしれない。政情の安定と語呂のよさを天秤にかけて気持ちよくハックしていきたいですね。

タグ

トークショー アキバ文化論

アキバ文化論を見に武蔵工業大学ことTT大に遊びに行った。最初は東名江田からあざみ野まで歩いてそこから地下鉄で中川駅へ行こうとしていたけど、地図で見たら東名江田バス停はあざみ野駅と中川駅のちょうど中間にあるようだったのでそのまま武蔵工業大学へ向かった。バス停の階段を下りて東名のゲートをくぐり、そのまま坂道を下ると荏田交差点に出る。駅名やバス停の名前が「江田」で地名が「荏田」なのは何か事情があるらしい。荏田交差点で左折して地下鉄をアンダーパス、新石川交差点を右折する。地下鉄をアンダーパスするくらいなので付近は谷になっていて、新石川交差点からは坂道を登ることになる。Xiss社へ行くのにも三ッ沢上町から軽い登山をすることになるため、どうも横浜市といえば坂というイメージが刷り込まれつつある。道が平らになると中川交差点となり、ここで右折する。付近は港北ニュータウンということでマンションが林立している。中川駅前交差点で左折すれば大学は目の前、Google Mapを見てそう判断した。

左折して中川駅まで来たのは良いが、そこをさらに直進すると道が右へ曲がっていく。左を見るとはるか遠くに「武蔵工業大学」の文字と茶色い建物が見えた。ああしまった。左側に道路が現れるのはそれに気づいてからしばらくしてからで、そこで左に曲がったら曲がったでなんか緑豊かなところで親子連れが遊んでいる。武蔵工業大学は緑が豊富で地域に開かれた大学なのかと思ったがどうも大学構内という感じでもない。さらに歩き進めるとまた上り坂になって、さっきの中川駅に戻ってしまった。

後で分かったのだが、ヤマダ電機のところで左折すればすぐに正門に行くことができたのだった。そして、着いて分かったのだが、いまから私が行くのは大学祭の一イベントなのだった。確かに、よくよく紹介ページを見直してみるとMI-TECH横浜と書かれている。注意力が3万になっていますね。普段の注意力は1677万くらいなのですが。会場の建物の前に掲示板があって、校名が「東京都市大学」に変わることを知らせる青いポスターと過激派に気をつけてみたいな赤いポスターが貼られていた。この過激派に注意を促すようなチラシは、そういえば浜松キャンパスには見られないものな気がする。過激派の皆さんはもし余力があれば浜松キャンパスにいらしてアジテーションなどするといいと思いますね。

会場は情報学部でいう旧CALLみたいな部屋で、前向きの机にモニターが3台とマシンが2台置かれている。モニターのために前がよく見えないので、最後列から3列目に移動した。他の人の感想を見ると、私の前に座っていたのがid:YMRL、左向かいの席にいたのが@mapiid:nkozということでよろしかったでしょうか。自信なし。司会の金子さんがうまいMCぶりを発揮してトークショーが始まった。まぐかっぷの3人と@yuisekiことギーク系アイドルid:yuisekiと@shao1555ことid:shao1555と慶応大政策メディア研究科の岡部先生によるトーク。実はまぐかっぷなるユニットを今まで知らなかった。ニコニコ動画のオーディションに合格した3人組で、アニメチャンネル内でラジオもやっているのらしい。ニコニコ動画発のアイドルだけあって同人誌を書いていたりパソコン部の部長だったりつわものぞろいだし、何よりかわいらしい。岡部先生は授業をやるとスレが立つとか池袋のめがねスーツ喫茶に詳しいとか最初にyuisekiに会ったときオススメのメイド喫茶を案内させてメイリッシュに行ったとかとにかくすごい人だと思った。3年生におかれましては、外部の大学院に進学するならぜひ教授リサーチを念入りにやっていただきたいとアドバイスさせていただきたい次第であります。

箱からテーマを選んでトークするという形式で、「ツンデレ」とか「メガネっ娘」とか「メイド」とか「コスプレ」とかが選ばれた。昨今ツンデレは供給過剰で質の低下を招いていると思うわけですが、結局、「他の人には見せない内面を自分だけに見せてくれる」というのがツンデレのキーポイントであると思います。みんなといるときは恥ずかしさのあまり好意を出せずごまかしてしまいますが、二人きりになると普段抑圧されていた好意が爆発してしまう。これです。『まほらば』の早紀ちゃんです。これです。「別にあなたのためじゃないんだからね」などというのがよくツンデレの代名詞として引かれることが多いと思いますが、そんなのより早紀ちゃん語録でも眺めているほうが良いのではないでしょうか。「メガネっ娘」にしてもそうで、メガネっ娘は普段はめがねという枠でごまかした自己をみんなに見せています。しかし二人っきりのときになるとメガネっ娘はメガネを外して素顔を主人公だけに見せてくれるのです。相手は主人公にとって特別な存在であることを、振る舞いや小道具で分かりやすく記号化したのがツンデレでありメガネっ娘であると考えることができます。「萌え」を前面に出した作品はこのように分かりやすく表現されますが、同じようなことは男と女が話に関係する作品すべてにあてはめることができ、近代文学や古典では「文学的に」表現されていることでしょう。


あとドワンゴのマネージャが来てたり上野先生がダンディだった。このあと別件があったのでそこそこに構内から出てしばらくしてからTwitterをチェックしたら@yuisekiからリプライが来ていた。イベント終了後あいさつしようと思っていたけど廊下に出たら姿が見えなかったので出てきてしまったのだ。いろいろ申し訳ないので、次回はもっと日程に余裕を持ちとうございます。帰りはグリーンポイントを消費してひかり425号のG車をキメた。

タグ

小数点以下n桁の表示

doubleやfloatの値をそのままSystem.out.prinlt()すると小数点以下16桁とか出てきて見にくいので、これを小数点以下2桁くらいにできないものかと検索すると、たとえばJava(SE) API 逆引き辞典が引っかかるので、それに則って書くと:

double before = 0.3456789012345678;
double after = new BigDecimal(String.valueOf(before)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println(after);
//=> 0.35

長い。

ここで思い直してみると、小数点以下2桁に丸めた数値をdoubleのまま扱う必要があるのかということに気づく。特に今回の場合、「doubleをprint()すると小数点以下16桁も出てきて長いから小数点以下2桁だけ表示させたい」わけで、ただ小数点以下2桁までを表現した文字列が得られればいい。なので:

double before = 0.3456789012345678;
String after = String.format("%.2f", before);
System.out.println(after);
//=> 0.35

formatメソッドが使えるのはJava5.0ことJava1.5からなので、そこだけ罠。

ていうか、sprintf()みたいなのはほかのLLでは当たり前のように用意されていると思うのに、Javaでの提供が1.5までずれ込んだのはなぜだろう。需要がなかったのかなー。検索してみたら独自にsprintfを実装している例がいくつか見つかったので、需要がなかったわけでもないみたいだけど。

タグ

佐藤研開発合宿3日目

7時半に起きてすぐ朝食。今日は月曜日で、さすがに日曜日→月曜日と旅館に泊まる人は少なく昨日とはうってかわって静か。サービスコーヒーおいしゅうございました。8時10分から成果発表、9時半に片づけを開始、10時20分に出発して途中道の駅でお土産を購入。本当に駐車場とトイレしかない由比PAで10分くらい海を眺め、ひたすら大学を目指す。到着は13時半なので、行きより1時間早かった。行きはゆっくりしてましたからね。合宿の様子を先生に報告したら、1日目に書いたようにびっくりされた。ぼくたちには野菜が足りない。

タグ

佐藤研開発合宿2日目

5時半に寝てすぐ起床~狂気の開発合宿

朝食が8時半にあるということで8時に起きた。釣り部の方は昨晩あれだけ騒いでいたのに今日もまた朝から元気だった。正直見習いたい。OBの2名は月曜から会社なので土曜のみ宿泊、今日は朝食を食べて成果発表をして帰宅なさる。途中コードギアスを見たり海辺まで散歩したり夕食を大量に食べたり、つばさくんがうpしてくれた赤尾先生の例のアレを見たりしつつ、明日は帰りの運転をするので0時半には寝た。

以下「名詞句と単語の勢いを用いた話題抽出手法の提案」の論文を2008年4月18日のとくダネ!実況(長野聖火リレー→学校裏サイト→平井堅PV)に当てはめた結果

単語8時15分~19分8時20分~24分8時25分~29分8時30分~34分8時35分~39分8時40分~44分
ミトラ0.12
善光寺0.240.030.23
日本0.390.170.06
中国0.230.080.14
聖火リレー0.350.070.080.03
聖火0.560.220.110.03
マスゴミ0.09
長野0.020.35
チベット0.060.26
ボートレースガイド0.14
キタ0.110.06
オヅラ0.170.430.430.02
ネット0.060.060.090.05
裏サイト0.060.120.220.13
学校裏サイト0.170.130.03
ゆとり0.050.09
ガキ0.050.09
アッー0.080.2
携帯0.190.130.03
サイト0.020.130.03
ジオシティーズ0.04
フィルタリング0.120.01
PV0.09
宮沢りえ0.07
平井0.11
ホモ0.04
ゲイ0.03
タグ

佐藤研開発合宿 1日目

月曜日に先生に話したら「開発合宿というのは方便で、実際は飲み会をしていたのだと思った」と言われてしまったけど、ガチで開発合宿です。舞台は開発合宿の代名詞ともなっている伊東温泉山喜旅館。7人乗り?のレンタカーに6人で乗車し10時半に大学南門を出発、ゆっくり運転して15時に旅館に着いた。

15時半から開会式として、この合宿で作成するものの宣言をする。メンバーは車で来た佐藤研現役メンバー6人と東京から電車でお越しになったOB2人。私は論文に使うあるものの実装! のはずが普段研究室の母艦マシンで開発していて、手元のノートパソコンはEclipseすらまっとうに起動しない状態。それをまっとうな状態にして設計を練っているともう18時になって夕食となった。前評判どおりのボリュームと味で大満足。ただ残念なことに天気に恵まれなかった。東京の有名私大の釣り部の人たちも旅館に泊まっているのだが、あいにくの天候で釣りができなかっだろう彼らはよほどフラストレーションがたまっているのか、部屋でも食事でもやたら元気だった。あれが青春、あれがリア充、あれが一般的な大学生というものでしょう。

夜中になってコンビニへ買出しに行ってくれるとのことだったので、BLACK BLACKのガムをリクエストした。果たして届けられたのはガムでなくタブレット。ガムのクチャクチャ感で夜を明かそうと思ったのになーと思いつつ買ってきてもらったものをほおばると、ガムのBLACK BLACKのイメージを完全に裏切るめくるめく刺激の世界が口内に広がった。何だこれ! すごい! 顧客の要求を完全に理解した上で顧客の満足度を最大化するためにご提案もする! 顧客から「馬がほしい」と言われたSEは顧客が馬を欲する理由を考察し、もしスピードが要求されていると考察すれば車を用意する。そうですよね市川先生! これが社会人クオリティ! ありがたいことに翌朝5時半までずっとcodingができました。釣り部の人たちは3時ごろまでmahjongをしていました。

タグ

レーベル名でぐぐってAmazonが先に出てくるこんな世の中じゃ

昨日の新聞に宝島SUGOI文庫の広告が載っていて、いかにも宝島社らしい面白そうなネタが揃っているみたいだったのであとでいくつか注文しようと思いつつも今日まで失念していた。手元に新聞がないので、SUGOI文庫のラインナップはどんなだったかなと思いつつアドエスから検索してみたら、Amazon.co.jpとかビーケーワンとかHMVとか本やタウンとかの通販サイトばかりが引っかかって、肝心の宝島社のサイトが出てこなかった。もっとSEOに気合を入れるべき。

実は上から6番目に表示された本やタウンのページは宝島社の本が並んでいる検索結果だったのでこれを見れば用は済んだかもしれないが、titleが「オンライン書店 本やタウン: 本: 検索結果」であったし、上から6番目だったのでこのときは開かなかった。本やタウンも、titleに検索語を含めたりもうすこし検索結果の上のほうに表示されるような仕掛けを打っておけばよかったのに残念でしたね。あ、いや、結局本やタウンで注文して生協受け取りにするつもりなので本やタウンの完全勝利ですかね。

アドエスからの操作だったので、まず検索されたのが通販サイトばかりで出版社のサイトが画面に現れなかったことにまず絶望して、1番目に出てきたAmazonのページに飛んだら「この商品を買った人はこんな商品も買っています」とか「この商品をチェックした人はこんな商品もチェックしています」とかの情報は得られるけど、今私がほしいのは宝島SUGOI文庫の他の出版物のリストなので意味がない。あとでパソコンの画面で見直してみたらSUGOI文庫の出版物が結構リスティングされていたけど、そこのリンクを参照して分かるのは1冊1冊の本の情報であってSUGOI文庫全体の情報ではないし、他の出版社から発行された似たテーマの本も紛れてリスティングされている。通常はそういう並べ方のほうが好ましいけど、今の私の需要には応えていない。

著者名に張られたリンクからはその著者の他の本が参照できるが、出版社名にはリンクが張られていない。出版社名やレーベル名にも、その内容で本を一覧できるページを参照できるようなリンクを張ってほしいと思った。その上にある検索フォームにレーベル名を入れてGO!ボタンを押せば望みのリストが表示されるけど、リンクを参照するだけでこの画面が表示できるようになればもっと便利だと思う。

タグ
© 2001-2008 Chisa YOUZAKA. Some rights reserved.