Shibuya.js TT#2 IIJ 大会議室

やー、楽しかった。

「まとめなげーよw」とか突っ込まれましたが気にしない方向でいきたいと思います。少しずつプレゼン技術を磨いてスプーメソッドを使いこなしたいと思うます。


資料: GreaseMonkey Driven Development / Shibuya.js Technical Talk #2

詳しい部分は全部飛ばして言いたいことだけ言ったので、資料にごちゃごちゃ書いてあります。unsafeWindow は夢がひろがりんぐですが、使い方次第で微妙にあぶないので注意ですよ!みたいな。


めも。夏目漱石とか、文字ちっちゃすぎとか、長門さんとか、いろいろ。イラレの自動操作をやってみたい。でもイラレ高い。

  1. トップ
  2. js
  3. Shibuya.js TT #2 お疲れ様でした

今月25日に引っ越し。

とりあえず住所電話番号が確定し、ネット回線もすぐに繋がる見込みだけれど、なんかいまいちよくわかってなくて不安だ。

ネットは光になる。NTT から光アダプタ?みたいなのがこっちの家に送られてくるらしい。それを持って光の工事 (引越し少し前) に立ち会え的な何か。

とりあえず、ちゃんとグローバル IP があって、ddns で外からアクセスできればいいけど、それまでが面倒くさすぎる。


ここには小学校入学と同時に引っ越してきたから、結構長く住んでいる。引っ越すと市が変わるから、成人式はアレになるのかな。出ないことになりそう。学校から・都心から遠くなる。自分ももう隠居したい気分。

成人式は普通に侵入できるらしい。

そういえばとっくに成人の人が成人式に出る記事をどっかで読んだ。

  1. トップ
  2. life
  3. 引越し

どうも XML 書くのが面倒くさくなってきた。もう全部 Trac wiki 記法で書きたい。


やっぱバックエンドに svn を使った日記とか CMS が欲しい。バージョン管理システムを既存のを使えば、どこでもチェックアウトしコンテンツ書き換えられる感じに。


なーんも考えてない。英語キーボードを試してみたい。ノートPC (たぶん MacBook) が欲しいので15万ぐらい溜める。すげぇ長い。やだなぁ。はやく欲しいなぁ。明日地震がくるかもよ。かもよ。明日死ぬかもよ。やりのこしたことはない? あるよ。あるけど実現できないよ。あるけど実現できないよ。可愛い女の子と青春したかった、なんて叶わないことさ。

ここ数日なぜか中年とすっ飛ばして、このまま老人になって、ああ、みたいなこと考えて、だめだなぁと思った。中年になったって、どうせ、ごちゃごちゃ言ったって、ぎりぎりになった未来の俺はぎりぎりでどうにかするんだろうし、それが詰まらないことでも、どうせ死なないんだろうなぁって。全部やめたい、とか今も思ってるのに結局続けているわけで、なんなのよと、思わないでもない。何なのよなんてわかってはいると思うけど。

最後の砦、みたいなのがいつも必要だと思う。今はまだぎりぎりあるけれど、そのうち無くなることは分かりきっている。もうない人も世の中にはいっぱいいる。


他人を見下してると、見下されてるほうは絶対わかるものだ。だから「見下さない振り」じゃなくて、見下さないことを心がけるんだよ。本当はそんな人はいないのだから!

そんな無意識の自信過剰をまわりは感じる。「ぶっちゃけそんなに自分は頭よくないよ」って何をぶっちゃけているのだろうかとか、そういう。そして見て見ぬふり。しないように意識しないと

まず間違いなく、自分以下の理解力の人はいない。いない。伝わらないなぁってときは、まず間違いなく自分の説明が悪く、まれにそもそも思考レイヤーの差のせいで話が通じないことがあるぐらい。思考レイヤーの違う人とは話していても結局意味がないから、できるだけ話さないように。思考レイヤーの違いは、思考方法の回路が違うから、理解力がどうとかで比べられない。あうか、あわないか、それだけだと思う。

何かが起きたなら、原因があるはず。でもどうしてか理不尽さを感じることがある。例えばちっぽけだけれど、歩きタバコしてる人の後ろを歩いたとき。なんで自分が被害をうけているんだろうと思う。例えばちっぽけだけれど、こんな無駄に長い日記を書いていること。なんで自分はこんなもの書かなければならない情況にいるんだろうと思う。もっと大きく。病気・事故、何に繋がっているんだろう。

携帯電話の「電話」機能が好きじゃない。携帯電話なのに電話機能が好きじゃないとか無駄さが溢れているけど、特にかかってくるのがあんまり好きじゃない。その場の、目の前にいる人間との会話に、半強制的に割り込みをかける感じが好きじゃない。だからあんまりとらない。あんまりかかってこないけど。メールでいいじゃん。メールもこないけど。

それに、そもそも電話が好きじゃない。電話で話すのは気持ち悪い。理由は知らない。考えても無駄だと思う。どうせ理由なんて、殆どこじつけなんだし。上のも、無駄。無駄。


授業とかで Flash を強制されたり、「Flash はこんなに素晴らしい!」みたいな話を聴くたび、Flash のことが嫌いになっていくんだよね。

Flash を何かに置き換えてもいい。Java とか (やってないけど)、VB とか (やってないけど)、ユーザーインターフェイス設計とか (やってないけど)

  1. トップ
  2. net
  3. あーあーあー
  1. トップ
  2. life
  3. あーあーあー

Flash が苦手なのはもう仕方ない気がしてきた。開発環境もそうだし、雰囲気もそうだし、みたいな……コンテンツとしては悪くはないと思う。でもアプリケーションみたいになってくるとちょっと気持ち悪くて耐えられない。そしてひっぱられてコンテンツもうまく作れない。楽しくない。


Flash のユーザの主導権をにぎるやりかたは、全然消えていない (消そうとしてない?)。ユーザは「こうしないといけない」って Flash アプリケーションに暗に言われる。強制されるのはいつも気分が悪い。その「デザイン」に気付けない Flash アプリケーションは優秀かもしれないけど、デザインに気付いてしまったら、また「操られている」感じが不快だ。どっちにしろ Flash が今のようなユーザにフックを許さないような構造な限り、フックしたい人には不快感を与え続けると思う。

かっこよく動いてるアプリケーションを使ってる俺はオシャレなんだぜ、みたいな、そういう雰囲気、そこで止まってしまう感じ、そんなのもなんかちょっとだめな原因かもしれない。モテ系。

かっこよく動いて、デフォルトのデザインも気持ちいいけど、さらに自分の手をそこに加えたい。そういうことができて欲しい。押し付けがましいのを排除したい。目立たないデザイン。表にでないところが綺麗になっていて欲しい。あなたの自由にしていいですよってことができて欲しい。ほんとに


なんかネガティブなことが多すぎる。もっといいこと考えないとなぁ。いいこと。大学行くと嫌なことばっかり入ってくるなぁ……

  1. トップ
  2. flash
  3. やっぱり Flash はにがてだ
  1. トップ
  2. net
  3. やっぱり Flash はにがてだ
  1. トップ
  2. web
  3. やっぱり Flash はにがてだ

前に 短めの bf コードを吐くスクリプト 書いた。

数学が分からなくて、これが本当に最短なのかわからない。そのうえ、255 以上 (より上?) の数値を最適化するとき無限ループさせるコードを吐いてしまうバグがある。よくわからない。

mixi で一時期書いてた bf はこれで生成していた。

  1. トップ
  2. prog
  3. Brainfuck といえば

今時 Ajax とか (口に出すのが) ワロスだけど、選択式レポートで Ajax について書けみたいなの (他には既存システム推測・ルータの設定詳細) があったので、これを選択することにしようとか思った。

Ajax で実装された何かを取り上げて利点をあげよとかいうのがあって、何をとりあげるか悩む。あんまり Ajax! Ajax! してるのってないしなぁ……

どっかのコメントフォームのやつとか投票みたいな簡単なのにするか、LDR みたいなアプリケーションにするか。どっちがいいんだろう。


むしろ既存システム推測のほうが簡単な気もしてきた。推測だからてきとーに想像しても割りとよさそうだし(ダメすぎ

  1. トップ
  2. js
  3. Ajax 課題

メイリオを試してみた。

ヒラギノとか IPA Gothic に比べると、雰囲気が丸くて、柔らかい感じ。SHARP のなんかのフォント (名前忘れた) に似てる気がする。あんまり好きじゃない。

文字小さめのほうが綺麗に感じる。ClearType のせいかな。

Windows はアンチエイリアスのかけたかがいくつか選べたらいいのになぁ。IPA Gothic も Windows だと汚く感じる。もったいない。

システム系フォントを全てメイリオにしてみた。なんか思ったよりいい感じ。

  1. トップ
  2. design
  3. メイリオ
  1. トップ
  2. font
  3. メイリオ

カタチのあるものを全然作れない。うーん。

プログラムより、ちゃんと物理的に形が見えるのを作りたい。

  1. トップ
  2. life
  3. もっと、カタチのあるものを作りたい
  1. トップ
  2. thinking
  3. もっと、カタチのあるものを作りたい

"CSS3 media queries for Opera" ハックで処理していた部分が修正されたおかげで逆に変になっていたのでコメントアウト。おぺらーな人は 9.0 に乗り換えるよね、乗り換えるよ、乗り換えてくださいよ、って感じで過去のバージョンはざっくり知らんふりします。

でも、このサイトのナヴィゲーション部分が Opera だとなんかズレてるんだよなぁ。なんでだろう……

イソムラさんが面白いバグを発見したので動画にしてみます。他人のサイトを録画とか趣味悪いですが、とりあえず圧倒的に楽しい。

Opera 9 の楽しいバグ

動画を見るより実際やってみるほうが圧倒的に楽しいです。

404 | Opera 9 アンダーグラウンド に詳細な手順が! Flash ダウンロードするのめんどくさい人はとっとと試しやがれですよ。楽しいから

  1. トップ
  2. web
  3. Opera 9 出現に伴い@ヘッドフォン娘 wiki

DHH 本がきたので、ちゃんと入門するよ!

ところで全然どうでもいいけど、本を読むと本のマジックというかなんというか、読んでいる間は「うわすげぇー簡単じゃーん」とかわかった気になるんだけど、実際のケース (今作ろうとしているのも) に当てはめようとするとことごとくうまく行かないという泣きたくなる情況が頻発して凹む。

とりあえず多対多の場合 ActiveRecords は id カラムを持たないテーブルを一個仲介役に作ってあげるみたい。んでテーブル名は二つのテーブルをアンダースコアでつなげたものにするらしい。(244 ページ, has_and_belongs_to_many)

それで、一個疑問は解けたけど、実際にやってみようとすると問題がまたでてくる。例えば vote っていうのはそれぞれの Topic に対して User がそれぞれ投票できるような感じ (Topic と User が多対多で、vote という意味で繋がってる) だけど、っていうかコード書いてみよう。

class Topic < ActiveRecord::Base
has_and_belongs_to_many :users
end
class User < ActiveRecord::Base
has_and_belongs_to_many :topics
end

とかやると vote っていう名前が一切でてこなくなる。

でもってどうするんのよ!って聞いてみたけど、要は has_and_belongs_to_many のリファレンス嫁ってことらしく読んでみる。実際実行して試したいけど、どうやって試せばいいか分からない。うーん気持ち悪い

下のようにするっぽい?

class Topic < ActiveRecord::Base
has_and_belongs_to_many :votes,
:join_table => "topic_votes"
:class_name => "User",
:foreign_key => "user_id"
end
class User < ActiveRecord::Base
has_and_belongs_to_many :voted_topics,
:join_table => "topic_votes"
:class_name => "Topic",
:foreign_key => "topic_id"
end

この has_* 系メソッドの第一引数は、そのまま@をつけてインスタンス変数名になるのかな。そうっぽいけど明確に書いてあるリソースが見つけられない。ソース嫁ってか。


それにしてもテーブル作って、generate model した直後でテストが通らない。もっと小さいアプリケーションからやるべきだなぁ……でもそういうアプリケーションで作りたいのがない。

  1. トップ
  2. rails
  3. Rails 入門, DB/ORM
  1. トップ
  2. ruby
  3. Rails 入門, DB/ORM

長い夢を見た。昨日学校の図書館で爆睡したときに見た夢と、昨日の夜妙に早く (8時ごろ) 寝て、今まで見ていた夢 (15時間)。続いていたけど、前半を覚えていない。クライマックス付近だけ覚えている。アルファギークはでてこなかった。むしろ珍しいことに現実にいる人が一人しかでてこなかった。


  • なんかの拍子に別の世界に紛れ込んだ。電車・トンネル
  • 高校生ぐらいの人たち (ないし人じゃない何か) が集まる四年制の学校
  • 廊下の奥の奥、生徒会役員とその周りの人が所属する人たちのための食堂がある。薄暗い。というかこの世界自体が薄暗い。関係者以外は入ってはいけない。
  • 一年生と二年生はライン (パシリの意味らしい) と呼ばれている。三年生・四年生にも呼び方があったけど忘れた。
  • 生徒会長は痩せ気味・身長はあまり高くないが、能力がアレらしい。結局見れなかったので不明
  • 彼女 (こちらの人間・髪が長い・身長が高い・微妙に天然入ってる) は時を止められるが、とめる時間帯が決まっている。ついでに準備が必要。周りに数名協力者がいる。
  • 彼女 (というより彼女の中にある何か) と、郊外のアパートの101号室に住むネコはキーである。
  • ある入り口がない建物の前にマットがしいてあるが、そこがトビラ。最後まで気付かない。というより気付けない。

キーパーソン (彼女とネコ) といろいろあるけど忘れた。ネコは人語を喋れる。アパートの一人暮らししている時点でただのネコじゃない。ネコのほうは純粋にキーだけど、彼女は元々こちらの人間なので、紛れ込んだときにキーが混入したみたいだ。たぶんそのキーのおかげで彼女の使える力が大きかったんだと思う。

なかなか死なない人がいた。だいぶひどいことをしたと思うけど、結局弱りもしなかった。気持ち悪かった。というか人じゃないんだなあれ。多摩川・長い道路・本

生徒会役員に味方が一人いる。と思いきや、割と味方がいる。というよりむしろ一緒にまぎれこんだ人たちは基本的に仲間のようだ。が、誰がまぎれこんだ人なのか正確に知る方法がないため信用できる数名で動く。


専用食堂で食事をしていると生徒会長が来る。逃げる。違う人間がターゲットになる。よかった。騒ぎが大きくなる。どうでもいいけどエロ本は一万円の罰金 (高すぎじゃない?)。ここで時が止まる (これは誰の協力ない。彼女の独断によるもの。協力がないため、動けたのは彼女と自分だけで、時間も短い)。手紙をもらう (内容は忘れた)。それとは別に口頭で、次の時間は4:00だと告げられる。

急いでこの世界がでないと、という話になる。このへん曖昧。先輩関係でネコがキーワードになっていることが判明し、アパートのネコを尋ねる。学校に帰る途中、今まで入り口がないことが変とは思いながらそれ以上を考えなかった場所がトビラであることに気付く。マーキング (あとで戻るためのしるし) をつけて学校へ。

他の人たちをまとめてマーキング位置に転送し、扉を開いてもとの世界へ。

  1. トップ
  2. dream
  3. 長い夢を見た。
  1. トップ
  2. life
  3. 長い夢を見た。

ビューって何。つまり、使うと何が嬉しいのかよくわからない。パフォーマンスのために云々っぽいけど、実際どういうケースで使うんだろう。


最近分かったこと。というか教えてもらったこと。

カラムに配列 (のようなもの) を突っ込みたいときは、配列の要素をテーブルにして、元の行の id とデータを複数突っ込むらしい。

/* この例だと当たり前な感じがするなぁ。 */
CREATE TABLE entries (
id INT PRIMARY KEY,
body TEXT,
...
);
CREATE TABLE comments (
id INT PRIMARY KEY,
entry_id INT,
body TEXT
);

多対多な関係の場合は仲介テーブルを作るみたい。

CREATE TABLE ideas (
id INT PRIMARY KEY,
body TEXT
);
CREATE TABLE users (
id INT PRIMARY_KEY,
name VARCHAR(60)
);
CREATE TABLE votes (
id INT PRIMARY KEY,
idea_id INT,
user_id INT
);
  1. トップ
  2. sql
  3. SQL わかんね
  1. トップ
  2. prog
  3. SQL わかんね

見て不愉快になる物は見なければいい、と人は言う。例えば自分に対する陰口が書かれた匿名掲示板。例えば自分に向けた悪意が積み重ねられているソーシャルブックマーク。身分の目に入るところにそれを入れなければいい、そう言う人は多い。中にはシステム的にそれをやってしまう人もいる。リンク先のさとうさんはそういう人のようだ。

これはちょっと違うんだよね。あのスクリプト書いたのはもうちょっと違う理由があって、まぁスクリプト自体はそういう風にも使えるんだけど、もともとは違うって意味でちょっと違う。

自分が「何を」消したかったかというと、見たくないものというより、もっとなんていうか、有害なものを消したかった。例えば、本当に例えばだけど「さっさとクソして寝ろ」とか「くだらない」とかしかコメントに書いてないブックマーク (ブックマーカー) って、その文に価値がないうえに、自分にとって不愉快になるという点で「有害」なんです。だから消したかった。読むに値しない以上に有害なのを消したかった。

不愉快になるけど、批判は全うで、読んでおくべきだなぁと思ったらそれを消したりはしない。

何も得るものがないうえに不愉快になるとか、そのこと自体がまた不愉快なのでスクリプトを書くに至った的何かで、そこまで感じなかったらスクリプトなんて書かないわけです。そうじゃなかったら $X("//div[@class='bookmarklist']/ul/li[a["+xpath_fl+"]]/text()[last()]") なんてめんどくさいコード書かないです。

  1. トップ
  2. life
  3. 無価値じゃなくて有害
  1. トップ
  2. web
  3. 無価値じゃなくて有害

LDR でのメインフィード (RSS) の購読数が100を超えてた。

なんとなくメインのフィードが100いくのが区切りな気がしてたので書いてみる。


Atom は 23, RSS は 102。Bloglines は 100 いってない。

  1. トップ
  2. net
  3. フィードの登録数

確認がとれたものと修正して動いたもの

ずばばっと表示させるやつはどうも挙動が怪しいです。動的にレンダリングするのを変えるのはやっぱちょっと苦手っぽい。

require 000.user.js

ignore-not-cc-photo.user.js を書き換えた。flickr が gamma になったときぐらいに HTML の構造を変えたらしく、もっと簡単に書けるようになっていた。ついでに $X 使うように修正した。

  1. トップ
  2. js
  3. flickr 系 user.js for Opera
  1. トップ
  2. gm
  3. flickr 系 user.js for Opera
  1. トップ
  2. opera
  3. flickr 系 user.js for Opera

  1. 半分の月がのぼる空7
  2. さよなら、いもうと。

半月は短編集の前編らしい。なんかもうどうでもいいよ!

さよなら、いもうと。いもうと以外のキャラがいい。負荷軽減のためにわざとやっているのかなんなのかしらないけどそういう雰囲気。実際登場時間も少ない気がする。

「俺だって今日、死ぬかもしれない。明日、死ぬかもしれない。そのことがわかったはずなのに、少しも必死じゃない」 「必死じゃないといけないの?」 「いけないわけじゃないかもしれないけど……なんつうんだろ? 明日死ぬかもしれないのにさ、今日をやけにのんびり生きてるんだよな。死ぬ前にやっておきたいこととか思いつかない。だからそのことを考えないようにして、また明日とか平気で言ってしまう。そんな自分のままじゃダメなんだって思うんだけど、でもどうするんでもないんだよな」

開始早々のアレとか、途中のイベントとか、最後のアレとか、随所に新井輝臭のようなものが漂っています。当たり前だけど

  1. トップ
  2. book
  3. 半月7, さよなら、いもうと。を読んだ

9.0 がリリースされたのでいろいろ調べて書く。

XPath は割と普通に使えるっぽい。時々変な挙動な気もするけど。$X は書き換え無しに動く。と思いきや createNSResolver は動かない

innerHTML 使ってパースさせるやつ は Opera でもできるようだ。


Array#forEach や GM_xmlhttpRequest がないため、殆どの GreaseMonkey スクリプトは動かない (が、後述するスクリプトでほぼ解決)。ついでに Opera はハイパートリッキーなことをしないとドメインを超えられないようだ。

Opera 用のラッパは 000.user.js とか最初のほうに呼ばれそうなファイルに書いてあげればいいっぽい。000.user.js . インターフェイスのラッパだけです。ドメイン超えるのも 000.user.js に書けば普通にいけるかもしれない。

作ったスクリプトで確認がとれたやつを列挙する。


E4X とかクロスドメインとかでひっかかる。E4X を innerHTML + XPath にし、クロスドメインのハックをすれば動くと思われる。

それと、日本語は素でかけないようです。\u でエンコードする必要あり。スクリプトを直接編集する場合もです。(GreaseMonkey はインストールするときに化けるらしく、直接編集している限りは日本語は普通にかけます。)

  1. トップ
  2. js
  3. GreaseMonkey Script on Opera 9.00
  1. トップ
  2. gm
  3. GreaseMonkey Script on Opera 9.00
  1. トップ
  2. soft
  3. GreaseMonkey Script on Opera 9.00
  1. トップ
  2. opera
  3. GreaseMonkey Script on Opera 9.00

データベースの設計ができないからなんだと思う。Rails ってまずはじめにデータベース設計ありき、みたいな雰囲気があって、どうしたらいいかわからない。きっとこの辺が分かれば高速に開発できるのだろうけど、いかんせんデータベースって「レスポンスがいいけど面倒くさい」というイメージがずっとある。

というか実際問題面倒くさい。ロックが効かないシステム (学校の鯖) でやろうとするとデータベース使うって段階で既に躓く。自宅鯖でやるとなると、デーモンが一個動いたりするから、セキュリティ云々で面倒くさい (SQLite を使うのはスタンダードじゃなくて躓く)。セキュリティ云々が面倒くさいとかいう人間に公開サーバーを運用する資格なんてないので、この辺で脱落する。公開できないサービスなんて面白くない。だからといって開発用に鯖を借りる金は出てこない。そこまでモチベーションがあるわけじゃない。

データベースありき。データベース側からやっていくと、そのものの表面的カタチ (インターフェイス) がなかなか見えてこなくてつまらないし、いざインターフェイスを作る段階になると、ロジックで疲れ果てててきとーなモノになってしまう (「よしじゃあ rhtml と CSS 書こうか、でももう一応できてる (scaffold のおかげ) しなぁ、めんどいからいいや」みたいな)。

ユーザーインターフェイスなんて後からどうにでもなる、わけない。最初に作ったイメージはあとあとまで引き継がれてしまう。最初のできが悪いと、ずっと悪いまま。すごく優秀な「別の」人が関わらない限り、それは直らない。(自分としてはこういう新しい視点を提供してくれる頭のいい女の子に憧れる。関係ない)

CSS 書くときと、プログラムのロジックを書くときの脳みその状態が全然違う。切り替えるのが面倒くさい。先に見た目を作ると、あとで「あーこれが本当に動いたらなぁ」なんて気分になってロジック書く気になるけど、逆だとならない。

根本的に何か勘違いしている可能性がありまくるけど、現状だといまいちやる気にならない。今作りたいものはあるけど、データベース設計で既に躓いている (だいたいテーブルの数が5個ぐらい)。だからとりあえず UI だけ作ろうかと思った。そのうち。いつか。

  1. トップ
  2. rails
  3. Rails ができない
  1. トップ
  2. ruby
  3. Rails ができない

いろんなところでカリー化と普通に言われて、カリー化って何だよって思っていたけど、ふとした拍子に理解した (と思う)

引数を一個とって関数を返す関数をカリー化された関数というらしい。なんか言葉にするとそこらの説明と大して変わらないなぁ。

檜山正幸のキマイラ飼育記 - JavaScriptでカリー化 の最初に「カリー化ってなに?」って書いてあるけど、今はこれが一番わかりやすい例だと思える。前読んだときはよくわからなかった。2引数の関数f(x, y)に対して、「gがfのカリー化」だとは、f(x, y) = g(x)(y) が常に成立すること。ちなみに「なに?」の部分以外はわからない (読んでもいない)

モナドもわからない。ほっといてもそのうち分かるんだろうな

  1. トップ
  2. prog
  3. カリー化をふと理解した?