[バファリンズ]
半分はやさしくないものでできています
- 2010-12-28 bufferings
- 2010-12-28 soundTrick
- 2010-06-14 bufferings
- 2010-06-14 hiro_nemu
- 2010-05-10 bufferings
|
bufferings
[バファリンズ] 半分はやさしくないものでできています カテゴリー
カレンダー
最近のコメント
リンク
|
2011-11-20変態アドベントカレンダー 2011 11日目こんばんは!変態アドベントカレンダー( http://atnd.org/events/22020 )の11日目です。 Chrome拡張作りました。Chrome Web Store - 変態アドベントカレンダー 2011 11日目 ソースjavascriptの書き方わからんのやけど(´・ω・`)。一応書いとくね。 manifest.json設定ファイルね。 browser_actionがブラウザの右上に出てるアイコンの部分。 content_scriptsがページ読み込んだときの動作。
{
"name": "変態アドベントカレンダー 2011 11日目",
"version": "1.2",
"description": "\"変態アドベントカレンダー2011\"の11日目のChrome拡張です。",
"icons": {
"16": "icons/hen16.png",
"32": "icons/hen32.png",
"48": "icons/hen48.png",
"128": "icons/hen128.png"
},
"browser_action": {
"default_icon": "icons/hen19.png",
"default_title": "変態アドベントカレンダー2011"
},
"background_page": "background.html",
"content_scripts": [ {
"js": [ "content.js" ],
"matches": [ "http://www.google.com/search?*", "http://www.google.co.jp/search?*" ],
"run_at": "document_end"
} ],
"permissions": [
"tabs",
"http://www.google.com/search?*",
"http://www.google.co.jp/search?*"
]
}
background.htmlアイコンクリックしたらatndに飛ぶようにしたー。
<html>
<head>
<script>
const ATND_URL = "http://atnd.org/events/22020";
function goToAtnd() {
chrome.tabs.getAllInWindow(undefined, function(tabs) {
for (var i = 0, tab; tab = tabs[i]; i++) {
if (tab.url && isAtndUrl(tab.url)) {
chrome.tabs.update(tab.id, {selected: true});
return;
}
}
chrome.tabs.create({url: ATND_URL});
});
}
function isAtndUrl(url) {
return (url == ATND_URL);
}
chrome.browserAction.onClicked.addListener(function(tab) {
goToAtnd();
});
</script>
</head>
</html>
content.jsもしかして: 変態?
var topstuffElem = document.getElementById('topstuff')
if(topstuffElem) {
var element = document.createElement('p');
element.className='ssp';
element.innerHTML = '<span class="spell ng">もしかして: </span><a href="http://atnd.org/events/22020" class="spell"><b>変態</b></a> <br>';
topstuffElem.appendChild(element);
}
ちなみにChromeWebStoreで"変態"で検索かけると... わーい 続くといいなぁ。おやすみ。 2011-11-13「やきに駆動 秋のJava祭典スペシャル in 大阪〜こりん星 #yakiniku4j 」 に参加したatndtogetter前座
という感じで。濃い話をきき。その勢いで。コリン星(港区?)に乗り込んで焼肉食う。 流れゆうこりんの動画をみるために四苦八苦するおじさんたちなう ↓ 肉の画像が出た瞬間にテンションが上がる勉強会 ↓ 「読める!読めるぞ!!私にもバイトコードが読めるっ!」 「読めるかー!」 ↓ お菓子がいっぱいあるけど、食べ過ぎると肉が食えなくなる罠。 ↓ #yakiniku4j ってなに? Yakiniku APIのJava ラッパ? ↓ まさかのエスペラント語での発表!! ↓ 「小倉優子に学ぶプログラマとして知るべきたったひとつのこと 2011-11-13 at やきに駆動 秋のJava祭典スペシャル in 大阪〜こりん星」 ↓ きのこ/たけのこ戦争勃発 ↓ @tan_go238 さん、たけのこの里出身らしい ↓ ウラガミはセキュリティーに弱いし廃棄コストがかかるとのこと 本番会場到着 ↓ ソーセージ長い!! あとは食ったり喋ったりに必死。 お疲れさまでした。これをよめっつーことがわかった。
面白かった。次は鍋のついでにテストの話ききたいな。|ω・) 2011-09-07Scrum Boot Camp 関西 2011 ( #scrumbc ) に参加したのやagile | | すごく面白かった9/7(WED)に神戸国際会議場で開催されたScrum BC 関西に参加した。 すごく面白かった。 Scrum BC 関西 http://codezine.jp/devsumi/2011/kansai/special Scrum BCが気になっている人たちへ是非行っとくべき! Scrumやりたいなぁとか やろうとしてるけど難しいなぁとか やってるけど悩んでるとか そういう人は是非行くとヨイと思います。 コーチのみなさんがとても丁寧に応えてくれます。 メンバーもみんな前を向いているので とても良いチーム経験をすることができます。 形式形式は座学+ワークショップ。なので。知識だけでなく体験も得られ。 その体験によって知識を噛み砕くことができる。 さらに。噛み砕いていく中で疑問が生まれても。 経験豊富なコーチ陣がその場で応えてくれる。(答えてくれるというより応えてくれる。) チームまず最初に参加者でチームを組んだ。6or5人×6チーム。 イイ方法でイイ具合に分けてくれたので。レベル偏らず。 そして僕はイイメンバーと出会うことができたのだ。わーい。 まぁ僕のチームに限らず。どこのチームもイイ感じだったなぁ。 皆が前向きってスバラシイ。 今日はそういう集まりだから当たり前といえば当たり前なんだけど。>前向き コーチアジャイル実践者でありアジャイルコーチでもある経験豊富な方々。 この方々が講師やファシリテーターをしてくれる。 このコーチが6人いる。・・・贅沢すぎるやろ。 高校の授業を6人の先生から教えてもらってる感じ。といえば分かりやすいかな。 コーチ・チーム講師をしている方のフォローを他のコーチがしたり。 コーチ同士で説明を補いあったり。 何かの質問に対してのコーチ達の意見もそれぞれ違う部分があって。 だから一人の意見だけに偏らない。 なんかチームっぽいよね。これがまた為になる。 コーチ自体がなるほど。良いチーム。 Q&A質問を壁に貼っといたら。時間があるときにコーチが回答してくれるという ステキシステム。 全体の流れ最初は
ふむふむ。 んで。ランチ混んでるからずらそうってことで。 急遽予定を変えて。もひとつ
ほほー。実際自分の中でココが一番難しい。 昼ごはん食べて心地良く眠ろうかというところで。
スプリントについて学んだ。・・・でも、きぃくやしー。 次は あれ?オレ今日会社で仕事してるんだっけ?と思った。 そんなこんなであっという間に時間がオーバーして。
Problemに「相談できる人があまりいない」とあげたら。 それをTryに移して「よかったら相談してよ」と言ってくれた。 イイチームだなぁ。。゚(゚´Д`゚)゚。 感想整理本やウェブサイトで自分なりに勉強していたが。 実践者の口から聞くとまた印象が違って良かった。 また、参加者同士で組んだチームのメンバーの話も とても参考になった。 今まで頭の中にランダムに放りこまれていた情報を このブートキャンプによって大分整理することができたなぁ。 制約本には「こうやるべき」ということが書いてあるんだけど。 実際には色々な制約の中でやらないといけなくて。 自分は従うことができてないことの方が多い。 アジャイルやってる他の人はどんな感じなんだろう?と思っていたので 現場の状況を聞いたり話したりすることができてとても参考になった。 体験ワークショップで実際にこれらを体験することができた。 とても貴重な体験をさせてもらった。 取り入れたいのぅ・・・。 どうやるのが自分のいる環境にとって良いのかを考えなきゃいけない。 最後にコーチの皆さん。チームの皆さん。 めっちゃ面白かったです。ありがとうございました。 それにしても川口さんのスベリ芸は超絶かっこよかったナー。 2011-06-11からあげ合宿に参加してきた #rkaraage金曜の夜から土曜の夜まで八王子の山寺にてもくもくコーディングしてきた。 ツイッター上で同じ会社の東京の人たちが「開発合宿やろーぜ」的な話をしてたので。 軽い気持ちで「俺もいきたいのー」とつぶやいたら。本当に社内メールでお誘いが来た! ので行ってきた。 目標一日中もくもくコーディングしたいなーと思ってただけで。 特に何を作るかは決めてなかったんだけど。緊張感と達成感のためにゴールは決めてました。 ゴール:最終的に動作して成果発表できるものを作るコト
じゃないと。できあがらない。 作ろうとしたもの会場までの移動時間に。ぼけーっ。 ↓ インターネットTVが家にあったらどうだろう?と妄想。 ↓ Webサイト開いて買い物とかするんだろか。 ↓ テレビといえばリモコンだよね。 ↓ あ。インターネットにつながってるなら携帯で操作できるんじゃね? ということで。リモコン作ることにしました。 アンドロイドアプリ作ってみたいなーと思ったけど。全く知らないので今回は無理。欲張らない。 てことは。Webサイトを操作できるWebアプリ作ろう。てことか。 欲張らずに。画面スクロールだけの機能をもったリモコンにしよう。 悩む自作のページにスクリプト埋めておいたらリモコン操作できるだろうけど。 「bufferingsのブログをリモコン操作できます」ってだれとく? どんなサイトでも操作できたほうがいいよね。 で。しばらく考える。 Chrome Extensionなら実現できるんじゃね? ・・・なんとなく。 Chrome ExtensionChrome Extensionは、お手軽につくれるとはよく耳にするものの。 全く無知だったもので。まずはドキュメントを読む。 Hello There! - Google Chrome Extensions - Google Code Getting Startedを読んで画像ポップアップ作った。うへー。すげー簡単なんだなー。 そしてBrowser Actions、Page Actionsへ読み進もうとするも1行ごとに意識がとぶ。 あきらめて布団でさくっと寝た。 朝起きて。自分がやりたいのはBrowser Actionsでできそうだと理解。 Background Pages、Content Scripts、Tabsを読んだ。 他にも色々ドキュメント読みたかったけど、こだわらずに。必要そうな部分だけを読んだ。 Channel APIリモコンを作ろうと思ったときから頭の中にはGAEのChannelAPIがあった。 これでプッシュすればできそうだよねと。 これも使ったことなかったので。かずのりさん、すぎゃーんさん、しゅーじさんのサイトを見ながらfmfm。 ユーザー毎に異なるトークンを作れたらいいけどそれは後回しにしよう。(そしてやっぱりその対応の時間はなかった) GAE+GWTのプロジェクトを作って。今回DataStoreを使わないので。Slim3も使わず。 単純なServletとGwt-RPCだけを使った。本当はRequestFactoryを使ってみたかったけど、こだわら(ry。 joinサーブレットを作ってトークンがbackground.htmlに返されるところまでを確認。 GWT上スクロールボタンと下スクロールボタンを持った画面を用意すれば良いよね。 と。GwtDesignerを起動。やっぱり起動が遅いものの。起動後の動作は案外軽快。 レイアウトパネルとボタンを適当にぺたっとして。サイズをプロパティパネルで設定。 結構きれいなコードが生成された。GwtDesigner結構便利カモ。 サクっとできた。GwtDesigner結構便利カモ。 プッシュしてみたけど反応なし。あれ? しばらく悩んで。試しにデプロイしてみた。 ら、プッシュに反応。おー。 Content Scriptsあとは。Content Scriptsでと思ったけど。 どうもExtensionのフォルダに入ってないものの読み込ませ方が分からなかったので。 例えばGoogleのjQueryとか。どうやって突っ込むんだっけー?とか。 結局Content Scriptsも使わずに 「スクロールさせる」という処理をexecuteScriptで埋め込んだ。 発表ぎりぎりなんとか。発表できる程度のものができた。 GAE上のWebアプリの上下ボタンを押したら。Chromeで開いてるサイトが上下に移動する。というシンプルなもの。 リモコンっぽく画面に向けて操作してしまうけど。 いや。アメリカで画面開いてても操作できるわけだ。一人でちょっと感動した。 そして。満足した。 最後に@rainydragon さん すばらしい会場を提供して下さりありがとうございます。 さすがの環境構築に惚れました。そして眠りっぷりも見事でしたw! @kogee さん 色々手配や調整ありがとうございました。 誘ってくれてありがとーございました! @参加されたみなさん。 もくもくしてたので全然会話なかったけど楽しかったです。 途中ほむほむ言ってて何語か分からなかったりしましたがwww。 それも含めてとてもいい刺激を受けました。ありがとうございました。 @自分 仕事では調整ごととかレビューとかが多くてコーディングをがつがつやれてなかったので なんかもうすっきりした。かなりすっきりした。 あと自分の知識のなさに絶望した。がんばろう。 みなさんすばらしいエンジニアで一緒にいれて嬉しかったです。 2011-06-07#slim3 のentityToModelが遅い?Slim3 | | てあったので。気になって見てみた。
@Override
public Navigation run() throws Exception {
StringBuilder time = new StringBuilder();
long start = System.currentTimeMillis();
AsyncDatastoreService ds =
DatastoreServiceFactory
.getAsyncDatastoreService(DatastoreServiceConfig.Builder
.withDefaults());
List<Entity> entityList =
ds.prepare(new Query("Bar")).asList(
FetchOptions.Builder.withDefaults());
time.append(System.currentTimeMillis() - start).append(" ");
for (Entity e : entityList) {
Bar model = new Bar();
model.setKey(e.getKey());
model.setSortValue((java.lang.String) e.getProperty("sortValue"));
}
time.append(System.currentTimeMillis() - start).append(" ");
sessionScope("getSlim3", time.toString());
return redirect(basePath);
}
結果は 1 1316 millis。 でもktrwjrでentityToModelを10000回呼び出しても数十msで終わる。 なんだろなー。 追記 こういうことでした。 |