サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
GPT-4o
yssk22.hatenadiary.org
家の録画管理コマンドラインツールが塩漬けで放置されていたので、更新作業をしていました。ほぼスクラッチから作り直しで、しばらくかかりそうです。 requirement はこんな感じです。 特定の芸能人がでる番組は見る見ないに関わらず確実に補足。 オンライン(iPhone)で予約可能。 見ると決めたドラマは1クール連続予約をしたい。 録画がおわったら再生のためにごにょごにょしておいてほしい。 最近ustを垂れ流していることもあるので、ust も"録画"しておきたい。 世の中いいツールがあるのですが、自分で何とかすることにします。特に1, 3辺りを解決しようとすると、TVっ子な自分の脳内チェックアルゴリズム(w を完全に実装する必要があるので既存のツールだとどうにもならない。。。 今度社内勉強会でCouchDBについて話すようなので、こんなアプリ作れるんだよ、という紹介に使おうかと思って作ってみ
久しぶりにブログ。 最近というか今年の4月ぐらいから CloudFoundry に嵌まっています。仕事でもバリバリやってますし、自宅にもおきました。cloudfoundry.com も活用しています。 そんなわけで https://groups.google.com/group/cloudfoundryjp?hl=ja に Google Group があって、 https://github.com/cloudfoundryjp にコミュニティ用のgithubがあったりするわけですが。 CloudFoundry の情報については、まぁソース見てくれってことと、日本語情報を出すモチベーションがなくなってしまったので(ヒント:社内公用語)割愛しますが、CloudFoundry JP のmeetupとかには積極的に参加して発表していきたい。 で、発表するに当たって、このコミュニティでは Commu
2009年7月から使い続けていたiPhone 3G が連続通話時間10分になっていたこともあり、MBAを買ったことで外で作業することが増え、その度にhotspotやfonの1day ticketを購入するのが面倒になったこともあり。 Pocket WiFi にしようかなーといろいろ物色していたら、HTC EVOがWiMax+3GでテザリングOK! というのを見つけて、1時間ぐらいで購入の意志決定が。 とりあえず1日使ってみたのでブログに記載。個人的には自分のユースケースにぴったりですごく満足しています。 まず金額 イニシャルコストとして、iPhone for everybody を申し込み損ねていたこともあり、旧ホワイトプランのままだったこともあり、MNPの解約は手数料の2100円のみのハズ。au側でも手数料で2000円ちょいとられました。 端末代金として、MNP契約で実質金額が10000
Python Hackathon で BigCouch の発表をする予定だったんですが、Membase と CouchOne の合併をうけて、、、Membase のほうに俄然興味が映ってしまったのでその辺をささっと調べて発表してきました。 内容は薄いです... membaseView more presentations from yssk22. が、、、、もうね、 StrategicSqilte3 とかどの辺がStrategicなのかと小一時間問い詰めたいぐらいorzな気分です。 Moxi Proxy とか vBucket Client とかそれなりにいい感じでなので、仕事でも使おうかなーって思ってたんですが、、、すまん、SQLite3 の運用設計なんてしたくないから使いません*1。 *1:この手のセッション系KVSで重要なのってデータのExpirationとそれに伴うメモリ/ディスクか
はてなブックマーク - CSSフレームワーク『BlueTrip』が想像以上にすごい - present 盛り上がってますね。 私のようなCSSの文法はわかるけど効率よくCSS書くにはどうしたらいいの?とか、ぶっちゃけ細かいところめんどくさくて span-24 とか、そりゃやりたくなるよ、という人が多い一方で、「おいおい、そんなことしたら font-size="10.5pt" とHTMLに書いているのとかわらんだろうがー」とご立腹な人もいるわけです。 span-24 とかやるのは「デザインとHTMLを分離する目的で使うのではなくて、単にspan-24って書いて別ファイルにした方が効率的に配信できるじゃん」と割り切ってスルーする、というのもあるんですが、ちょっとカウンタークレームをがんばってみました。 less ですよ、less 要するに、span-24をHTMLファイルに書くんじゃなくて、C
とりあえず、rsync すらめんどくさくなったので githubに登録しておく。 yssk22/sunrise - GitHub アプリは CouchDB のレプリケーションでコピーできるけど、コンテナがまだその辺未対応なので。example はこれから作ります。(今あるヤツはさすがにgitにのっけるには的な...) これを書きながら、貯まってきたノウハウは書籍にまとめつつあります。今、既存のJS資産を利用する的な話を書いているところで、 https://github.com/yssk22/sunrise/blob/master/lib/sunrise/vendor/php.js とか見ると、24500行もある、JavaScriptによるPHP関数の実装なんですが、元々クライアント向けに作られていたものを、がっちゃんこして node.js で使えるようにしたものです。メモリに乗っかるので、
今こんなのを作っています。 exports.setup = function(site, done){ site.all('/posts/admin/*', oauth.requiredWith('twitter')); site.install('posts', function(app){ var posts = app.model; site.get('/', $.title('Home'), posts.byTag('news'), $.render('index.ejs')); done(); }); } node.js とCouchDB で動く、アプリケーションコンテナ的な何か。 フロントエンドからサーバーサイド、果てはデータベースまですべてJavaScriptでやってやろーじゃん、的な勢いで。 普通にアプリを作るだけならCouchDBだけでもいいんですが、認証情報を持ちたくな
id:doryokujin さんが、MongoDB JPを立ち上げる、ということをお聞きしたので、「まずは勉強会、話はそれからだ。そして俺らも混ぜてくれ」ってことで一緒にやってきました。ほとんどmongoに興味のある人ばっかりでしたけどね。 まぁ、CouchDB の本当におもしろいところは @mkouhei さんとか @motokazu さんが発表してくれたので、私の方からは、あまりおもしろくないBigCouchの話です。 CouchDB JP & BigCouchView more presentations from yssk22. やっと(皆が普通期待するサーバーサイドの)分散DBとしての機能がBigCouchで徐々に実装されつつあるなぁ、という感じです。分散DBとしての十分な機能をもつらしいんですけどね。 ふり返ってみると、今年の3月にやったOSCは、CouchDB, MongoD
結局、ActionController::Base のClassメソッドである view_paths=(*paths) を使えばよいと。 続きを読む 以下はRails 1.2時代でもやっていたけれど、render_component がない 2.0 を見据えていた実装。 続きを読む ついついこういうことをしたくなります。 続きを読む
ES5 の仕様書 http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf JSON.stringify(”ほげほげ") は "ほげほげ" となるのが正しい模様。 一方で、RFC http://www.ietf.org/rfc/rfc4627.txt によると、"ほげほげ" は "\\u307b\\u3052\\u307b\\u3052" になってもよいよ、とある。 で、CouchDB は後者のエスケープバージョンのJSONしか受け付けないので、node.js 0.2.30.3 以降, あるいはES5をちゃんと実装しているモダンな(笑 ブラウザだと連携できなくなる.... なんだってー [追記] id:t_43z さんから 0.3 以降じゃね ? という指摘をいただいて、改めてソース確認。 macbo
WebSocket やらない、という選択肢はなさそうなので、家で使っているtwitterボットをパッケージ化しました。 EventEmitter のサブクラスとして再定義しなおして、いろいろできるように。 $ npm install twbotで入ります。 WebSocket のサンプル作るときに使おうと思います。 ちょうどやっている最中に Twitter / cakephper: 英語のTweetを定期的に取得して、Sayに突っ込め ... というのを聴いて、実装してみた。何人か海外の人のtweetみているんだけれど、聴けばいいんじゃね?ってことで。 https://github.com/yssk22/node-twbot/blob/master/lib/plugins/say.js 受け取ったツイートを何も考えずにsayコマンドの入力に与えているだけです。 他にすべてのイベントを Co
わけあって、URLを丸ごとCouchDBの添付ファイルにコピーする需要があって、せっかくなので node.js で書いてみました。 ちょっと長いのでGistにおいてます。 http://gist.github.com/622432 http://gist.github.com/622432 のコードが常に正常に動くのが node.js クオリティ。 c = c + 1; が常に保証されている (ref: http://www.gnegg.ch/2010/09/why-node-js-excites-me/) さらに ev.emit('end') の発火とイベントリスナーの実行完了までが常に保証されている (ここがびっくり) どの単位でコンテキストスイッチをしているのか、調べる必要がありそうです。
> var sys = require('sys'); > sys.inspect(sys) '{ print: [Function]\n, puts: [Function]\n, debug: [Function]\n, error: [Function]\n, inspect: [Function]\n, p: [Function]\n, log: [Function]\n, exec: [Function]\n, pump: [Function]\n, inherits: [Function]\n}' いかにも継承に使えそうな sys.inherits って undocument だけどなんやねん、と思って調べてみた. var Foo = function(){}; var Bar = function(){}; sys.inherits(Bar, Foo) これで Bar を Fo
http://atnd.org/events/6359 すでに満杯なのですが、そして、今年からばりばりPythonで仕事をするようになったのですが、それでもPython Hackathonでnode.js のハンズオンをすることになりました。 Hello World から簡単なWebアプリを書くところまで、データベースは扱うかわかりませんが、扱うとしたらCouchDB。 非同期で動くプログラムのUnitTestの書き方とか Express Web フレームワークとかその辺も広く浅くやろうかなぁと。 自分自身も、実際にコードを書く道具に使うのは始めたばかりですが。 昔々、関数型言語をはじめにやったとき、こういう印象を持ちました。奥に向かって突き進んで戻ってくるような感じ。 その感覚がnode.jsでも味わえます。 node.js の場合、すべてのメソッドが非同期で実行されるので。 var f
bitbucket.org で公開することにしました。自分的にはSphinxの練習ですが。 http://bitbucket.org/yssk22/couchdb-hands-on-materials/src/ それに伴いビルド済みHTMLの公開場所も少し変えました。 Dropbox で 301 Moved Permanently をやるにはどうしたらいいのでしょう...?
以前 node.jsでTwitter ChiarpUserStreamを閲覧するWebアプリを作った - 酒日記 はてな支店 を見て、おもしろいなぁ、と思っていたので、やってみました。 変更点は 単にtwitter streamを垂れ流すのではなく、一度CouchDBに放り込んで、CouchDB から MapReduce した結果をstreamさせるところです。MapReduce のストリーミングは、HadoopでMapReduce に初めて出会ったときからやりたかったので、CouchDB ありがとう。 デモアプリを http://demo.yssk22.info/twitter-couchdb-streaming においておきました。ブラウザを開きながら CouchDB に関するつぶやきをすると、リアルタイムに表示が更新されるかと思います。 以下詳細です。 インフラ構成 実際の構成は下の
CouchDB をメインのアプリケーションサーバーとして使っているものの、サーバーサイドで他のサービスと連携したいときにはちょっと不便さを感じてしまいます。 そういうときは、イマドキ?のWeb Frameworkの上で、CouchDBをデータベースとして扱えば良いんですが、CouchDB のアプリと密に連携する(一部の機能のためだけだから)ためには言語も同じにした方が良いだろう、ということで、node.js を使い始めています。 とりあえず、認証をtwitterに任せよう。 CouchDBでアプリ作った場合、ユーザーDB自体はCouchDBに保持されます。。これはちょっとやだ。CouchDBのインスタンス毎にユーザー抱えるとか。。。 で、イマドキ、ということで、twitter を認証サーバーとして使うんです。OAuth ができればOKってことで。 PHPとかPythonとかRubyとかJa
ご無沙汰しております、生きています。 さて、CouchDB 1.0 がでて、incremental replication もだいぶ安定した感があるので、自宅の CouchDB でロードバランスしたくなりました。 Apache mod_proxy_balancer という手もあるのですが、Incremental (MapReduce + Replication) という環境では、High Performance な Caching Proxy になる Varnish という選択肢もおもしろそうなので試しています。 構成 CPU: Opteron Dual Core 1.8 GHz Memory: 8GB Servers: http://relax:5984/, slave: http://relax:15984/ (master と slave は同じサーバー上。ただし、ディスクは別) で
CouchDB で外部プロセスをHTTPリクエストから起動する方法。Wikiにpythonの例があるので、rubyで。 基本的には update notification と同じ。 #!/usr/bin/env ruby require 'rubygems' require 'json' require 'logger' run = true logger = Logger.new("/tmp/external.log") logger.info "Start CouchDB process" while run do input = gets if input == nil run = false else req = JSON(input) logger.info req.inspect # ここにレスポンスハンドラーを書く # 戻りは JSON 形式で、"標準出力"に書き出す res
元々の目的は、データモデルがいい加減だとスケールする環境でもスケールしなくなるよ!という話のつもりだったんですが。ソースコードを公開しつつチャレンジしていこうと思います。 http://github.com/yssk22/gaecouch 今できることは README.md に書いてあるとおりで、データベース操作とドキュメント操作が行えます。 データモデルについて。 データベース全体を表現するために(CouchDBでは1ファイル)、Database(db.Model) というクラスを定義しています。これは簡単ですね。 次に、データベースに放り込むドキュメントを表現するために、Document(db.Model) というクラスを定義します。 しかしここで問題が。Document は id で一意に特定できるのはインターフェース上であって、内部的には _id と _rev の組み合わせが一意キ
ログの設定とかアラートの設定とか、、いろいろあるとは思うんだけれど、自宅のサーバー運用でわざわざファイルに出すとかsyslogに出すとかgrowlで通知とかmailで通知とか、、、もう面倒なので、twitter 全部飛ばすことにしました。 ソース: http://github.com/yssk22/tweethandler パッケージ情報 http://pypi.python.org/pypi/tweethandler/0.1 今年に入ってPythonをやらなければならなくなった、ということで、はじめてのPythonパッケージ作りをやってみました。 OAuthで認証しておいて、emit するときにupdate_statusするだけです。 尚、同じログが大量にでる場合はtwitterが自動的にブロックしてくれますw ログレベルに応じてDMにするとかmentionにするとかいろいろありそうです
BPStudy32 CouchDB 再入門View more presentations from yssk22. Slideshareにアップしたものの、微妙にフォーマットが崩れたりしてしまいました。オリジナルは http://dl.dropbox.com/u/219436/CouchDB/BPStudy32/BPStudy32-CouchDB.pptx にあるので適当にどうぞ。 必要な分を全部盛りで詰め込んだらちょっとハンズオンの時間が少なくなってしまいました。 http://dl.dropbox.com/u/219436/CouchDB/PythonHackathon3/handson/_build/html/index.html に(作りかけですが)あるので、物足りなかった方はぜひお試しください。 なぜ時間が足りなくなるのか、といえば、ドキュメント指向だとかデータベースがアプリケー
Mac OS X Snow Leopard です。隣でOSCデモ用の普通のLeopardにもいれていてほとんど同じ手順。 準備 hg でダウンロードするのでその準備。日本語環境だとX-MAC-JAPANESEなんてエンコーディングは知らん、といわれるので、hgコマンドを hg --encoding=utf-8 となるようにしておく。 $ sudo port install mercurial $ echo 'alias hg="hg --encoding=utf-8"' >> /.bash_profile $ . ~/.bash_profileでダウンロード。 $ hg clone -r 0.1 http://hg.mozilla.org/labs/raindrop インストール server/python/check-raindrop.py というのがあるのでそれを使う。必要なモジュール
ここにはもうない
jspec が優秀なスペックテストをできるので、ヘルパーを用意。 require と log 関数だけはよく使うので用意してあげます。require は配布時とテスト時の違いを吸収できるような変な書き方をしているけれど。Rhino だと load でJSを読み込めますが、require と互換性を保つために、readFile をして eval します。 // spec/couch-server-main.js sandbox = this; function require(name, parent){ // Application Context: // root should be vendor/crayon/ // name is a key without an extension. // // Test Context: // root should be . // name i
ちょうど大学に入学した頃から、少しづつ読んでいたわけで、もう10周年なのですね。alphaWorks Japan はなくなってしまったけれど、 そんなわけで、記事が紹介されていました。 Web 時代の非リレーショナルデータベース: 第 1 回 Apache CouchDB の概要とインストール 非リレーショナルデータベースを代表するDBといえば、商用では Lotus Domino、非商用ではこの Apache Couch ではないでしょうか?日本人技術者が執筆した5回シリーズの紹介記事を推薦します。 (プログラマーK) いまだに、Web Technology Zone のランキングに常に入っているので、どんだけみんなつまみ食い好きなんだよ、とか思ってしまったりもしますが、昔のRails記事も(Rails 1.0がでるまで) こんな感じだったので期待したりもしてしまいます。 インストールする
ML115をリフレッシュして、完全にCouchDBサーバーにした。いつもLinux入れるときには適当なパフォーマンスモニタツールをいれて、いろいろ集めてほくそ笑んでいるのだが、グラフは canvas で書けるし、データベースは CouchDB で簡単に入るんだから、別に自分でやればいいんじゃね?と、車輪の再発明を試してみました。 これを出すまでにかかった時間は... 15分ぐらい。 とりあえず /proc/ をJSONにする。 最初 awk にしようかと思ったが、JSONに出す、となるとsyntax error が心配だったので、Python。Perl は苦手なので。20行ぐらい。ただJSONにするだけなので、どうでもいいスクリプトです。 #!/usr/bin/env python import json import re from datetime import datetime FI
引用の引用です。 その答えは「Webらしい設計」にある、と筆者は考えています。サービスをWebらしく作ると、ほかのシステムと簡単に連携でき、将来の拡張も楽になるのです。良い設計のWebサービスは、Web全体のアーキテクチャと調和しています。Webらしい良い設計をするためには、Webのアーキテクチャを理解して意識することが大切です。 本書は、WebサービスをいかにWebらしく設計するかをテーマとしています。クライアントとサーバはどのように役割分担するのか、望ましいURIとはどのようなものか、HTTPメソッドはどのように使い分けるのか。Webサービスにおけるこれらの設計課題について、現時点でのベストプラクティスを紹介します。このテーマを実現するために、本書は次の2つの目的を持って執筆しました。 だから、ドキュメント指向とはWebらしく指向することであり、Webは超大規模なドキュメント指向データ
http://blog.madoro.org/mn/54 私もRailsいらねーや、ってくちなので、殆ど同じです。というか、自分で作ったRailsアプリは、仕事のものも含めて、CouchDB への移行したし。 そういうのが嫌で、RDBMSとして正しく使おうと、find()で:includeとか:joinsとか使いだすと、今度はどんどんRoR(Ruby)のコードのSQL成分が増していく。全然楽しくない。 それに加えて、私の周りだとXMLDBサポート、なんてものが入って混沌としていました。XMLいいたいだけだろ的な。XQueryとか、全然人に優しくない。 あとは、RESTの議論というかアプリケーションをみていて、多くのアプリが sql://example.com/ をブラウザでやりたかっただけじゃね?ってところで*1、CouchDBはGood Enough Technologyだと思ったわけで
次のページ
このページを最初にブックマークしてみませんか?
『Web屋の人の日記 || WebJourney 開発ログ』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く