オープンソースカンファレンス2009 Tokyo/Spring - OSSの春が来る!
http://www.ospn.jp/osc2009-spring/
五階のリナックスとかある部屋に配置されています、
展示物は自分たち自身です
あしたは他の展示スペースも見て回りたい、Asteriskとかが面白いことやってるらしい。
当日展示用のスライド:
http://docs.google.com/Presentation?id=df54q6jk_99jwxvx3dn
今日の展示風景:
関連エントリ:
Hacker's Cafe展示参加@オープンソースカンファレンス 1日目 - 拡張現実ライフ@日本橋
http://d.hatena.ne.jp/akio0911/20090220/p1
OSC 一日目 - 崩壊現実-全てはvirtualに収束する-
Janet2011/10/09 06:12Thanks guys, I just about lost it lokinog for this.
sgpcxth2011/10/10 02:06QNxAoU <a href="http://dfjqwcrlsqff.com/">dfjqwcrlsqff</a>
mjltgzlu2011/10/10 21:06hquNQm , [url=http://axpwfutfxftt.com/]axpwfutfxftt[/url], [link=http://xutdxfleiafp.com/]xutdxfleiafp[/link], http://pbchqotiapbk.com/
shswrjv2011/10/11 23:59zNJd3o <a href="http://ciloynhavxhc.com/">ciloynhavxhc</a>
http://rubyist.g.hatena.ne.jp/yuiseki/
今後ruby限定の話題はこちらに書くことにした。
ここはできたものを載せておく場所とかその他技術関係のネタということにする。
ビミョーなかんじだけどまあ動くので公開しておく
https://wiki.mozilla.org/Labs/Geode
// ==UserScript== // @name twitter with geode // @namespace http://d.hatena.ne.jp/yuiseki/ // @description Update your geolocation on Twitter. // @include http://twitter.com/* // ==/UserScript== //document.f.submit(); ( function(){ var geo_b = document.getElementById("currently"); var script = "navigator.geolocation.getCurrentPosition(function(pos) {document.getElementById('status').value += ' L: '+pos.latitude+', '+pos.longitude;}); "; if(geo_b != null) { geo_b.innerHTML = "<a href=\"javascript:void(0);\" onclick=\"" + script +"\">POST with Geode</a> " + geo_b.innerHTML; } }) ();
user.jsのなかではnavigator.geolocationにアクセスできないので、こんなかんじでボタンを無理矢理生成する流れらしい
ちなみにGearsGeoAPIも公開されましたが、あとそもそもPlaceEngineとかがありましたが、これらはuser.js内で外部ドメインからJavascriptファイルを読み込むとかえらく大変なことになるので…、
既存のサービスに無理矢理位置情報をブッコムにはやっぱりGeodeが一番お手軽っぽい。
固定IP環境ではないのでルーター再起動とかするとIPがかわってしまうのでこまるが、
value-domainは機械的にドメイン名のIPアドレスを更新できるようになっているので
↓のようなスクリプトをcronに設定した。
ip_reload.rb
require 'open-uri' Domain = "yuiseki.net" Pass = "***********" Host = "*"#サブドメインを限定する場合ここで指定 def ipcheck #現在の外から見たIPアドレスを確認 current_ip = open("http://dyn.value-domain.com/cgi-bin/dyn.fcg?ip").read saved_ip = open("saved_ip").read.chomp if saved_ip === current_ip return nil else open("saved_ip", "w").puts current_ip return current_ip end end def ipreload(new_ip) ip_api = "http://dyn.value-domain.com/cgi-bin/dyn.fcg?"#IP更新用API #d=ドメイン名&p=パスワード&h=ホスト名&i=IPアドレス ip_api += "d=#{Domain}&p=#{Pass}&h=#{Host}&i=#{new_ip}" open(ip_api) end if ipcheck ipreload(ipcheck) p "ip reloaded" else p "ip not changed" end
LatashaGosh, I wish I would have had that information earelir!
ywxfusbzv8sxEz , [url=http://irzvppabkpud.com/]irzvppabkpud[/url], [link=http://dielvntugala.com/]dielvntugala[/link], http://emehlrgjhbjc.com/
vbnibsrgmevlIvw <a href="http://dqfmqhdfntxb.com/">dqfmqhdfntxb</a>
twkiezihVKuWhl , [url=http://cpasmfasabyh.com/]cpasmfasabyh[/url], [link=http://lmjairsasxsm.com/]lmjairsasxsm[/link], http://wgnsoommfhxg.com/
6:2 ページのメニューがつねに同じ場所で固定。なるべくページの上のほう
6:3 重要なアイテムがページトップの中央に配置されているかどうか
6:7 垂直か水平にページの要素を並べているかどうか
6:9 スクロール時にページの一番上や下に来たかどうか確実にわかる目印を置く
6:11 スキャンしやすいように、ページの余白を適切にもうける
6:12 行、一文の長さを適度にする。長すぎるときは改行する
6:13 機能をアクセスできるように残しておくときは、フレームを使う
11:1 黒い文字やハイコントラストな背景をつかう
11:4 視覚的な一貫性を保つ
11:6 注意をひきつけるような特徴は非常に関連しているときだけ慎重につかう
11:7 読みやすいように、身近なフォントをつかう
11:8 12ポイント以上の文字サイズ
11:9 色分けの構成がわかりやすいようにする。判例を設けるなど。
11:10 字体の特徴を考えて、強調するときは単語や短い語句にとどめる
14:1 シンプルな背景画像をつかう
14:2 クリッカブルな画像にはラベルをつける
14:3 重たい画像を使わないように確認する
14:4 動画や音声などを使うときは意味をよく考えること
14:5 あらゆるページの一貫した場所に組織のロゴなどを置くこと
14:6 画像をおくときはバナー広告と間違わないようなものにする
14:10 正確なデータが必要なときには、グラフなどを出す
14:11 移り変わるデータを提示するときもグラフを出す
14:13 適切であるときには、実世界のモノなどに似ているイメージを利用する
14:15 学びやすくするために、可能であるときはテキストよりもイメージを利用する
課題でユーザビリティーガイドラインの一部を英語から日本語にする必要があったのでやったやつを乗せておく。
納得できるものもあるけど、けっこう無理に一般化してるかんじ。実際はもっとケースバイケースな気がするなぁ。
まあガイドラインってそういうもんか。
うへぇ。
さっきの配列は、カウントが0のときの曜日が抜けていた。
ないものを0におきかえておいてあげないとnullエラーになってしまう。
単純な配列だったらmerge!とかで抜けを補完できるけど、入れ子配列構造になっているので結局caseを使うしかなくなった。。
full_week=[]
dayofweek.each do |dayname|
def_day = ["0", dayname]
full_week.push(def_day)
end
0.upto(week.size-1) do |i|
day = week[i]
case day[1]
when "Sun"
full_week[0] = day
when "Mon"
full_week[1] = day
when "Tue"
full_week[2] = day
when "Wed"
full_week[3] = day
when "Thu"
full_week[4] = day
when "Fri"
full_week[5] = day
when "Sat"
full_week[6] = day
end
end
きもちわるいわーー。
配列などで、曜日がStringクラスで入っているときにsortするとアルファベット順になってしまう。
caseなどでちまちま条件判定してたら発狂するわーとおもったら、rubyには曜日名を配列として持った定数があるらしい。
英語省略形のばあいは、Date::ABBR_DAYNAMES。
これをつかってループすればなんとかソートできそうだ。
require 'date' week = [[13,"Sun"],[24,"Mon"],[],[],[],[],[]] dayofweek = Date::ABBR_DAYNAMES sort_week=[] 0.upto(6) do |i| week.each do |elem| sort_week[i] = elem if elem[1] === dayofweek[i] end end
こんなかんじ??
はてな記法すっかりわすれてしまった
なんかよくわからんが、
user = User.find(:first)
query = "SELECT count(*) AS ct, videos.site FROM logs JOIN videos ON logs.video_id = videos.id WHERE logs.user_id = 1 GROUP BY videos.site ORDER BY ct DESC LIMIT 10"
user.connection.select_rows(query)
とかするとqueryを自由に実行できる
select_rowsにするとSELECTしたやつが問答無用で入れ子配列でセットになって帰ってくる
select_valuesとかほしいデータの量や形式に応じて変えると便利
テーブルの名前をど忘れしたときは
query = "SHOW TABLES"
とかするとでてくる
あとで追記する | |
![]()
世間ではキャンドルナイトというイベントをやっているらしいので、Hacker'sCafeとその仲間たちであつまって、渋谷のNPO法人Kompositionさんのオフィスを借りてecogeek conferenceというのをやりました。
なんかエコとか環境はいつのまにか新興宗教みたくなってるけど、もっと面白半分でアレゲにファッションエコなかんじでたこ焼きパーティみたいのがしたかったんです!!
けっこう楽しかったのでよかったんじゃないかと思います。みなさんありがとうございましたー。
とりいそぎ結論が無い資料みたいの公開するよ。。