Hatena::Groupchris4403

rm -Rf

2010-04-06

Re:jQueryでcheckboxがcheckされてるかの値をとる

23:50 | Re:jQueryでcheckboxがcheckされてるかの値をとる - rm -Rf を含むブックマーク はてなブックマーク - Re:jQueryでcheckboxがcheckされてるかの値をとる - rm -Rf

checkboxがcheckされてるかどうかを判別するメソッドってjQuery側に用意されてないんですよね。

http://webtech-walker.com/archive/2010/04/06155654.html

こんな感じでどうでしょう。

jQuery.fn.checked = function() {
    if (!this.size()) return false;
    var result = true;
    this.each(function(){if(!this.checked) result = false;});
    return result;
};

jQueryオブジェクトがすべてcheckedならtrueを返すようにしてます。

obj.attr('checked')でチェックすると、objの中に1つでもchckedがあればtrueを返します。

といっても上の実装だと実際に必要とするシーンがあまり思いつかないので、イマイチかな。素直にobj.attr('checked')を使えば良い気がしました。

2010-03-25

mysqlのsoundex

| 23:47 | mysqlのsoundex - rm -Rf を含むブックマーク はてなブックマーク - mysqlのsoundex - rm -Rf

以前に参加していたIIR輪講で自分が担当したパートにsoundexというものが紹介されていました。

これは単語をあるルールにしたがって、発音を記号化したハッシュを生成してindexとするものです。IIRの中で紹介されていたのは次のようなルールでした。

1.最初の文字を残す。

2.次の文字をすべて0に置き換える : A, E, I, O,U, H, W, Y

3.以下の文字を数字に置き換える

B, F, P, V to 1.

C, G, J, K, Q, S, X, Z to 2.

D, T to 3.

L to 4.

M, N to 5.

R to 6.

4. 連続した同じ数字のうち1つを取り除いていくことを繰り返す。

5. 0を結果の文字列から削除する。ゼロ詰めして、最初の4文字を取得する。その文字列は、最初がアルファベットで3つの数字が連続したものになっている。

このルールに従うと、Hermannという単語からはH655という文字列が生成されます。このsoudexを使うと、同じ発音、似た発音の文字列を検索できます。

mysqlマニュアルを眺めていたら、このsoundexがアルファベット限定ですが、利用できると書いてあったので、ちょっと試してみました。

セットアップ

soundex_testというdatabaseにdataというテーブルを作成して、いくつか単語を入れておきます。

create database soundex_test;
use soundex_test;
create table data (
  word VARCHAR(255)
);
INSERT INTO data VALUES('mouth');
INSERT INTO data VALUES('nose');
INSERT INTO data VALUES('north');
INSERT INTO data VALUES('air');
INSERT INTO data VALUES('bare');
INSERT INTO data VALUES('buy');
INSERT INTO data VALUES('bye');

soundexを使ってselect

あとはsounds like構文を使って検索するだけです。

mysql> select * from data where word sounds like 'bear';
+------+
| word |
+------+
| bare |
+------+
1 row in set (0.01 sec)

bearと同じ発音のbareが抽出できました。

mysql> select * from data where word sounds like 'by';
+------+
| word |
+------+
| buy  |
| bye  |
+------+
2 rows in set (0.01 sec)

もちろん複数の結果も返ってきます。

異なる綴りで同じような発音のバリエーションが発生しやすい人名などの検索に役立ちそうです。

2010-03-11

Google DevFest2010 まとめ

| 01:11 | Google DevFest2010 まとめ - rm -Rf を含むブックマーク はてなブックマーク - Google DevFest2010 まとめ - rm -Rf

全体

たのしい Android: カスタム UIAndroid アプリにワクワク感を加えよう

  • UIで工夫をして、アプリケーションを使っていてわくわくする感じにしましょうというエクスキューズは良かったです。
  • ただ、それがeasingとデザインの話だけで終わっていたのが、物足りなかったです。
  • タブは下に持ってきた方が良いという提案がありましたが、そういうUI上の工夫出来るところをもっと聞きたかったなぁ。

やさしい Android: ユーザフレンドリかつデベロッパーフレンドリーな Android アプリケーション開発手法

  • バグのように見えたら、それはバグです」はまさしくそのとおりで、「仕様です」じゃダメなんですよね。
  • 国際化のところの話は頷けるものばかりでした。
    • 日本のモバイルと言うと避けて通れないのが「絵文字」ですが、すでにコード上の対応はされているそうです。
  • Android開発において、互換性を保つために公開されているAPIだけを使いましょうと言われていましたが、その前のセッションでは、ソースを見て公開されていないAPIをHackする的な内容だっただけに、ちょっと苦笑してしまいました。
    • 個人的な意見だと、Androidのように、開発が頻繁で多くのデバイス上で動作するようなプラットフォームでは、やはい公開されているAPIだけで頑張る方が良いのではと思います。
  • その他、Androidアプリを開発する上で気を付けた方が良いところがいくつか紹介されていました。

モバイルマッピング: Google Maps を利用した様々なモバイルマッピングの手法

Google Wave API による Google Waveの拡張 

  • Google Wave APIでできることの基本的な解説でした。
  • Waveへの発言をHockして、何かインタラクションをおこしたり、Wave上にガジェットを作ることができるそうです。
  • Waveの特徴である操作変換という仕組みがあるのは分かったのですが、Google Docsとどう違うのか、どう差別化しようとしているのかが今ひとつぴんときませんでした。
  • Waveのアプリを作ってみたいですが、実際使っている人が少ないからちょっとやる気がでないですねぇ。

Task QueueはMapReduceの夢を見るか?

  • GAEのTask Queueを使ってMapReduceのような分散並列処理をどういう風に実装するかという話でした。
  • GAEな方はかなり楽しめたセッションだと思います。
  • プレゼンツールにPreziを利用していて、そちらも目を引いていました。
  • 最後の方はGAEの制限されたAPIの中でどうやって並列処理を管理するのかというテクい話だったので、京都会場からはプレゼン資料がつぶれて読めず、ちょっと残念でした。

Google DevFest 2010

| 08:59 | Google DevFest 2010 - rm -Rf を含むブックマーク はてなブックマーク - Google DevFest 2010 - rm -Rf

Google DevFest 2010@京都会場のメモエントリです。

基調講演

  • 10:00~10:45
  • ジョセフ・ターナスキ,及川卓也,石原直樹
ジョセフさん
  • Google Apps Marketplaceの話
  • Google JapanのEngineer Teamが増えてきている
  • devfest.Printf(speakers) / devfest = new Volunteer(); www
  • 京都会場は東京会場の雰囲気が伝わりにくいなぁ。
及川さん

石原さん
  • 東京会場で300人超えるくらいが参加している(立ち見も出てるらしい)
  • GoogleのDeveloper Events
  • 外部の開発者コミュニティとの成功例
  • イベントの音楽、ナレーションとかもGoogleの社員がやっているらしい
    • 暖かい、血の入ったイベント
  • 地方にもイベントを提供したい
  • DevQuiz
    • 導入したいきさつ
      • イベントの来場者が先着順で良いのかという疑問があった
      • より熱狂的、熱心な人に楽しく参加して欲しかった
      • 1週間2113人 参加461
      • 36.6 - 22 / 46 点数の幅
    • 11問目
      • Google DevFest 2010 Japanを採点してください
      • 22点を超えた場合はクイズを次回も導入します

たのしい Android: カスタム UIAndroid アプリにワクワク感を加えよう

  • 11:00~11:45
  • 矢野りん (日本 Android の会),adamrocker (日本 Android の会)
矢野さん, adamrockerさん
  • なんか変なかぶりものしている
  • shimejiは変なIMEらしい(だからきのこのかぶりものか)
  • 矢野さんはデザイン,adamrockerさんはソースの解説
  • インタラクションの肝"easing"
  • "easing"をDialogにとりれよう
  • "easing"つき横スクロール
    • HorizontalScrollView
      • smoothScrollBy
    • reflectionで適用する
      • テクい(もしくはキモい)
    • + インタラクション + グラフィック
      • テーマを作るときの手順
        • 利用者とかを仮設定
  • こだわりのスクロールアニメーション
    • 移動幅に応じてテンションの値/アニメーション時間を変更
    • DEFAULT_DURATIONをreflectionしようとしたけどfinalでした
      • extendしてコピペ拡張(どうなんだろうなー)
    • 女性の手の大きさを考えて、タブを下に持ってきた
    • 移動量が大きいと、普通にしているとOvershootが大きくなりすぎる
質疑応答
  • プログラマとデザイナの共存方法は?
    • デザインツールはない
    • XML化するのはプログラマの仕事
    • 動き的な部分のデザイナとプログラマの分担って微妙なところだなぁ
    • 品質責任者が自分でコントロールできる何かがあるといいなぁ
      • SIer的な発想ですね
  • タブを下に
    • 上と下、どっちでしょう?
    • 個人的には「下」だと思います
  • Google Mapでピンを落とすアニメーションの難易度は?
    • そんなに難しくはなさそう
  • Activityをアニメーション

やさしい Android: ユーザフレンドリかつデベロッパーフレンドリーな Android アプリケーション開発手法

  • 12:00~12:45
  • 宮川 大輔
  • みやかわさん
  • 2007年新卒入社
  • Androidの日本語化
    • 連絡帳
      • 「indexer」を「あ」「か」・・・
      • 日本の電話番号が入った時の -
      • vCardサポート
      • 絵文字サポート
      • git logでチェック
    • やさしい は Friendly (not Easy)
  • やさしい
    • ユーザにとって
      • クラッシュしない
      • 期待通りに動作
    • 開発者
      • wherever
      • バグを容易に発見
  • 互換性
    • 変化するプラットフォームにどう対応するか
    • Andoroid Market
    • 公開APIを使う(SDK
      • 公開SDKにないpublicメソッドは非公開→非推奨
        • さっきの話とは真逆だな
      • targetSDK ->4 /minSDK ->3
    • 複数解像度対応
      • 解像度ごとにディレクトリをつくりデータを管理
        • drawable-XXX drawable-ldpi
        • supports-screens
    • XMLレイアウトする
  • i18n
    • 本質的には非常に難しい
      • 右から左に書く言語
      • 10 out of 1000
        • 10件中の1000件目?
    • 世界の多くのユーザに使ってもらうのが目的
    • 英語圏を意識してください
    • Javaに文字列を直接書かない
    • 絵文字の話
      • Unicode Emojiに画像をかぶせてみる
      • Spannable
  • バグ
    • ユニットテスト
    • Log.d (printf => Log)
    • テスト用の別プロジェクトを作成して、親プロジェクトを参照させる
    • Loggingでバグ検出が便利
    • adb logcat
      • adb logcat "*:e" "Hello-World:d"
  • ユーザビリティ
    • バグのように見えたら、それはバグです
      • ユーザが「あれ?」と思うところがあれば、まだ改善の余地がある
      • 次の動作を表示する
        • メニューをおしてください
        • 新規文書の作成
      • とりあえず試してもらう
        • 操作方法に気づくまで何十秒もかかる
          • UIが不親切
      • 続きはOffice Hourで。
  • Being friendly is not easy , but it is worth striving for.

モバイルマッピング: Google Maps を利用した様々なモバイルマッピングの手法

  • 13:00~13:45
  • マノ・マークス
  • Mobile Mapping
  • やはりmobileとはスマートフォンのことか
  • GeoLocation,Cumpas, Camera, mapと機能がつまったスマートフォン
  • Map
  • mobile development diffrent
    • スクリーンサイズ
    • Latency
    • User interface and interaction
    • Speed
    • Location Based Services
  • latency
    • ページのロード(つかえるようになるまで)
    • User perceived (ユーザに表示されるまで)
  • Causes of Latency
  • Browser Advantages
  • Native API Advantages
    • Native UI
    • One language to learn, per device
    • Easy integration with your app
    • App store discoverability
    • Lower latency
  • やっぱレイテンシが重要だよなぁ
  • Start
    • Static : JSが使えないところでstatic map
    • Native : iphone / Androidどちらかでのみ開発するとき
    • Browser only V3 app : スマートフォンだけでなくブラウザ展開もしたいとき
    • Hybrid : V3mapをnative appへロードして使う
  • Static Map API
    • Version2
      • polyline / mobile tiles / custom icons
    • No slippy-ness
  • Native API
  • Browser Only
  • Hybrid Native + JavaScript
    • User WebView and UIWebView to load V3 page
    • これがいいらしい
  • Google Maps API V3
    • Reducing JS page load latency
      • Compile/obfuscale code
      • delay load code until required
      • Model-View-Controller architecture
    • Combine image fetches using sprites
    • Reducing JS pereceived latency
      • まずはStatic MapをロードしてからJS
    • verion2 では190KBだったのが、version3では35KBの基本を落として表示
    • MVC Architecture
  • V3でできること
    • ここでAndroidのデモ
    • コードの解説が入るけど、文字が潰れて見えず…残念。
    • No Keys Required!
      • これいいね!

プログラミング言語 Go

(昼食のため離席)

  • 最後の方だけちょろっと
  • DevQuizの解答例をGoを使ってどうやって解くかを解説
    • goroutineはpatchwork問題には適さない

Google Wave API による Google Waveの拡張 

Task QueueはMapReduceの夢を見るか?

  • 16:00~16:45
  • 佐藤 一憲 (有限会社スティルハウス)
  • Task Queueの話
  • MapReduceのような並列処理をGAEのTask Queueを動かす
  • GAEでは30sec以内に処理が終わる必要がある
    • Task Queueの登場
  • Web Hook の形でWebHook
  • 複数のサーバタスクが処理されるので、同一の処理が2回行われる可能性を考慮しておく
  • TaskQueue Limitationがあるが、超える場合はGoogleに要相談
  • Demo
    • Google Talksからメッセージを入力してGAEで受け取ってTaskQueueが動いて、メッセージを返す
  • コードを画面に映す系のセッションはちょっとつらいなぁ
  • 普通にタスクを突っ込んで、タスクが終わったこともちゃんとチェック
  • AppServerの台数をカウント
  • プレゼンツールがおもろい
  • 30の同時リクエスト制限はGoogleに申請すると外してもらえることがあるらしい
  • Spin Up
    • 新しいApp Server Instanceが起動する
  • 仕組み的にmap reduceに似ている
  • 最後の方はかなりテクい話になってきた

2009-12-28

Compact Calendar 2010

23:45 | Compact Calendar 2010 - rm -Rf を含むブックマーク はてなブックマーク - Compact Calendar 2010 - rm -Rf

2010年のCompact Calendar日本語版です。

f:id:chris4403:20091228234826j:image

Compact Calendar 2010(月曜始まり)

Compact Calendar 2010(日曜始まり)

Compact Calendar 2010(月曜始まり)(PDF)

Compact Calendar 2010(日曜始まり)(PDF)

↓日付を指定して作りたい方は、こちらをどうぞ。

Compact Calendar Creator

↓オリジナルはこちらです。

The Compact Calendar »

2009-11-27

ページを180度ひっくりかえすChrome extension

22:56 | ページを180度ひっくりかえすChrome extension - rm -Rf を含むブックマーク はてなブックマーク - ページを180度ひっくりかえすChrome extension - rm -Rf

via. 横Google・・・ | IDEA*IDEA

作ってみました。

(90度ではなく180度ひっくり返します)

chris4403/sideways ? GitHub

Chrome extensionというよりユーザスタイルシートですね。