タグ

ブックマーク / labs.gmo.jp (31)

  • スクレイピングはもっと簡単にならなければいけない - bits and bytes

    スクレイピングをやったことがあるひとならばわかると思うけど、スクレイピングはとてもつまらない作業だ。 HTMLの中から抜き出したい部分を見つけて、その周辺にある特徴的な部分に着目して正規表現を書いたりして抜き出す。あるいはHTMLからDOMを生成して特定のクラスがついているエレメントを抜き出したりする。HTMLをXHTMLに整形、変換してXPathで抜き出す方法もある。どの方法もやることは単純で簡単なことだけれど、極めてめんどくさい。 そういうものだと思って数年間過ごしてきたけれど、去年の夏に出てきた Dapper: The Data Mapper は、そんな退屈な常識をモダーンなajaxでもって吹き飛ばした。もしDapperがどんなのなのか知らなかったら、ちょっと長くてはじめ退屈なんだけど デモムービー を見てみてください。 Dapperが教えてくれたことは、スクレイピングなんて、欲し

    yuiseki
    yuiseki 2010/09/22
  • ノキアの携帯向けApache Nokia Mobile Web Server - bits and bytes

    最近は日でも2.0になったといってますが、海外ではNokiaが去年の終わりに NRC - Mobile Web Server というのを発表していました。あのApacheを携帯電話のSymbianOS用に移植して、ついでに mod_python も移植したから携帯電話上だけで完結して動くウェブアプリケーションが作れるよ、というわけです。すげーよ! なににつかうの? でも冷静に考えると、携帯電話にサーバがあったところでそんなんどーすんだ、というかんじです。とうぜんNokiaの作ったひとも何度も聞かれたみたいで、そのへんはwikiの Rationale という項目に書かれています。 以下てきとうにまとめつつの訳です。 携帯端末上にあるウェブサイトはふつうとどう違うか Personal Content 携帯端末には写真とかビデオとか電話帳とかメールとかいろんな情報が入ってて、ふつうのウェブサー

    yuiseki
    yuiseki 2010/04/07
  • javascriptで作るGearmanクライアント - bits and bytes

    Webアプリケーションの中には、ときどき時間がかかる処理をしないといけない部分があります。アップロードされた画像のサムネイルを多数生成するときや、クライアントからのリクエストに応じてさらにリモートのサーバからファイルを取得してきたりするとき、ふつうに作るとユーザは処理が終わるまでの数秒~数十秒間待たされるのでイライラしてきます。 こんなときには昨年のYAPCでLiveJournal: Behind The Scenesの中で紹介されている、perlで書かれた非同期処理サーバのGearmanが役に立ちます。Webアプリケーションから時間のかかる処理を別プロセスで動いているGearmanに依頼しておくことで、時間のかかる処理が終わるまで待つことなくユーザにレスポンスを返すことができます。 ほんとうは、時間のかる処理の性質と、必要とされる機能に応じてGearmanとTheSchwartzとを使い

    yuiseki
    yuiseki 2009/07/22
  • TheSchwartzで仕事をあとにまわす - bits and bytes

    web2.0 時代のジョブキューサーバー Gearman と TheSchwartz の関係について - TokuLog 改めB日記に書かれているとおり、Gearmanは仕事を投げられたらすぐやって返す前提になっていて今やりたくないけどあとでやるみたいなのができません。 たとえば、10分後にならできるんだけど、という仕事が来たとします。 このときGearmanのワーカの中でsleepして10分待つと、後から来たほかの仕事を一切しないで10分待つことになってしまって、後から来た仕事が今すぐできるものだったとしても10分待たれさるのでGearmanだと今来た仕事のためにsleepして待つわけにはいきません。 結果としてGearmanだとやってきた仕事を今すぐやるか、絶対やらないか、の二択になってしまいます。 それだと困るので、もう一方のTheSchwartzだと、今やりたくないけどあとでやる、

    yuiseki
    yuiseki 2009/07/11
  • Firebugクックブック #2 - bits and bytes

    前回に引き続き、自分がよくあるブラウザ上での単純作業をFirebugコンソールで片付けている方法の紹介です。前回はブラウザに表示されているデータをこっち側に持ってくる作業をどうやっやるかでした。今回はブラウザの向こう側のデータをFirebugで操作するにはどうするかです。 ボタンをクリックさせる ウェブのサービスを使っていて、今までに投稿したものを全部消したくなったり(でもアカウントは消したくないとか)することがあります。管理画面で投稿を消すことはできるけど、いちいちクリックしていかないといけなくて面倒.... という時にはFirebugでフェイクのクリックイベントを作って送れば、自動でクリックさせることができます。 Twitterのfavoritesを全部外したい、というのを例としてあげます。TwitterのfavoritesはAPIがあるのでAPIを使う手もありますが、サービスによって

    yuiseki
    yuiseki 2009/02/05
  • google maps API + IFRAMEで地図タイル画像のロードが止まるのを回避する - bits and bytes

    google maps API を使うときにIEの存在はアタマが痛い。まずは google maps API の初期化を window.onload でやらないと"操作は中断されました"というエラーが出ることがある、というタイミング依存のめんどうな問題を思い出す。おそらくこの問題はIEがDOMを構築するタイミングに関連しているのだと思われる。DOMが完全に出来上がっていない状態で中身を参照するとエラーが出たりするのだろう。 今まで google maps API + IE の組み合わせで使ってきた中でよく遭遇し、かつ解決困難だったのが、地図の画像のロードが途中で止まる問題だ。 google maps API で表示される地図が左上の1枚目だけロードされて表示されるけれど2枚目以降が出てこない。ページの中でjavascriptのエラーが出たりするとロードが止まったりするけれど、そのエラーも出

    yuiseki
    yuiseki 2008/09/19
  • bits and bytes - Firefoxのヒストリぜんぶをfaviconにして見る!

    最近はほとんどどのサイトにfaviconが置かれるようになりました。Ruby on Railに似せて作られたPHPのアプリケーションフレームワークCakePHPではデフォルトでcakePHPのfaviconが入るようになっていたりします。 サイトのfaviconは、ブラウザのブックマークから目的のサイトを探す時のように、大量にあるリストから自分の探しているものを見つける手がかりになります。ロシアで最大のシェアを誇るサーチエンジンyandexの検索結果にはfaviconが一緒に表示されるようになっています。 yandexで表示されているfaviconのURLはhttp://favicon.yandex.net/favicon/ru.wikipedia.orgという形式になっていて、faviconよりあとの部分を変えればそのURLのfaviconが表示されるようになっていました。が、さすがにロ

  • Firefox3の新機能 SmartBookmarkを使ってブックマークや履歴を一定の基準でリストアップする - bits and bytes

    (たしか)Firefox3beta5から、ブックマークツールバーに"Most Visited"や"Recently Bookmarked"という項目がデフォルトで入っているようになりました。プロパティをみてもタイトルしか表示されず、どういう仕組みになっているのかわかりません。表示する情報をいろいろ変えられるのならおもしそうだなーと思って、これの作り方を調べました。 以前からあるlivemarkと同じようなみためで、自分のブラウザの履歴やブックマークから一定の基準でフィルタされたデータがリスト表示されます。 ちなみにlivemarkはSafariやIE7にもついているRSSをブックマークのフォルダとして登録できて、RSSのアイテムひとつひとつがブックマークとして表示される機能のことです。ほかにもFirefoxにはmicrosummariesというXPathでページの特定の部分を取り出して表示

    yuiseki
    yuiseki 2008/06/01
  • Google Gearsの位置情報取得機能(まだぜんぜん実装されてないけど) - bits and bytes

    気がついたらGoogle Gears API Blog: Gears and Standardsを読んでいて、この中に and we're working on resumable uploads, a geolocation API, and lots more fun things for the future. と書かれているのを発見(強調は自分によるものです)。 "geolocation API"と聞いてはじめは住所から緯度経度を返すジオコーダのことかと思ったけどそうではなくて、クライアントのデバイスの現在位置を取得するためのものです。日のケータイでいう位置情報取得APIみたいなもの。 そんな機能が実装される予定になっているとは、と思って調べたらいつのまにかいくつかの機能が追加されていました。API History - Google Gears API - Google Code

    yuiseki
    yuiseki 2008/05/11
  • Firefox3でいちばんべんりな新機能 - bits and bytes

    Firefox3のbeta5が公開されました。 Firefox web browser | International versions: Get Firefox in your languageでダウンロードすることができます。 Firefox3はFirefox2とくらべて、メモリの使用量が減ったとか、レンダリングやjavascriptの実行が速くなったとか、いろいろ変わっています。でも個人的にダントツで一番便利になったと感じているのはアドレスバーでのURL補完機能が強化されたところです。 今のブラウザはみんなアドレスバーにURLを入れると、前にアクセスしたことのあるページでそのURLから始まっているページのリストが表示されます。よく覚えてないけどこの機能は Netscape Navigator 4.0で(自分の知る範囲では)はじめて導入されて、その後IEにも導入された機能です。でもこ

    yuiseki
    yuiseki 2008/04/06
  • WiiリモコンとFirefoxをjavascriptでつなげるWiiRemoCom Firefox3対応版 - bits and bytes

    以前に作ったWiiリモコンをFirefoxにつなげてイベントを取得したりするための拡張機能 WiiRemoComがFirefox3では動かなくなっていたのでFirefox3で動くように修正して、ヌンチャクをマウスとして使用できるようにしたり、いくつか機能を追加しました。 Download wiiremocom.xpi (for OSX+Firefox3) 動作環境 Firefox3beta2, Firefox3beta3 + MacBookPro内蔵Bluetooth + OSX10.4(intel) で動作確認済み Firefox2用のものはWiiリモコンをFirefoxにつなげてイベントを取得したりするための拡張機能 WiiRemoComにあります(ただしXPCOMのインターフェイス等が異なります)。 概要 WiiRemoComはWiiリモコンをFirefoxに繋いで直接操作できるよう

    yuiseki
    yuiseki 2008/04/03
  • Firefox3でSQLite3の全文検索機能を使って日本語を検索する - bits and bytes

    mal_blue@tumblrでFirefox3に載っているSQLiteに全文検索機能がついたのを知りました。昨年12月にGoogle Japan Blog: Google デベロッパー交流会 ( 第 4 回 )に参加させていただいたとき、Google Gearsの開発者がGoogle Gearsでサポートされているlocal storage(実体はsqliteのデータベースでSQLを使ってデータを読み書きできます)について非ASCIIのfull-text searchをサポートしたいと言われていたのを思い出しました。 その後どうなったかなー、と思ってちょっと検索してみたらGoogle Gearsと直接関係ないけどSQLite Full Text Search with MeCab - mynoteという記事が。この記事はSQLiteのCのAPIにはtokenizerを指定することができて

    yuiseki
    yuiseki 2008/03/21
  • スイスのなんちゃってリアルタイム鉄道マップ - bits and bytes

    今日はMoMB: swisstrainsに載っていた、スイスの鉄道の動いてる様子を google maps 上で見られる SBB trains live がちょっとかわいかったのでご紹介。 google maps の上に路線図を描いたりするのはよく見かけますが、これはその上に電車の運行状況をリアルタイムで反映させたもの。一定時間ごとに電車の位置を表しいてるSのマークがじりじりと動いていきます。位置はGPSでリアルタイム更新、というわけではなくて電車の位置は時刻表を割り算して出しているだけ。そういえば東急とかのバスはGPSがついていてほんとの現在位置がわかるようになっていますね。 このちいさく動くところがかわいいなと思って、東京バージョンもあったらいいのにと思っていたら、聞くところによると@niftyデイリーポータルZにも手のなかの山手線というちょっと似たかんじのネタがあったというのを教え

    yuiseki
    yuiseki 2008/02/18
  • Web::Scraperのjavascriptバージョンwebscraper.js - bits and bytes

    perlのWeb::Scraperみたいな記述で、ページの中からデータを取り出すwebscraper.jsという小さなjavascriptのライブラリを書きました。 ブックマークレット データを取り出したいページでブックマークレットでwebscraper.jsを読み込んでFirebugコンソールで使います。 ブックマークレット webscraper コードwebscraper.js つかいかた Web::ScraperのSYNOPSISで例としてあげられているebayでapple ipod nanoを検索した結果からデータを取り出すときは 検索結果ページで上のブックマークレットを呼び出してFirebugコンソールで取り出す部分を記述します。 こんなかんじ。 SYNOPSISのperlのコードで変数$ebay_auctionに一度代入されている部分をそのままインラインで書き直すと my $e

    yuiseki
    yuiseki 2008/02/16
  • WWW::Mechanize::AutoPager+Web::Scraperで複数ページにまたがるデータを扱う - bits and bytes

    AutoPagerizeのSITEINFOに含まれている、次のページへのリンクを示すXPathはAutoPagerize以外の用途でも使うことができます。 CPANにこのSITEINFOをパースすめたるの HTML::AutoPagerize - Utility to load AutoPagerize SITEINFO stuff というモジュールがあるのは知っていたのですが、ページのロードと次のページのURLの解決もやってくれる WWW::Mechanize::AutoPager - Automatic Pagination using AutoPagerize というモジュールがあるのはさっき知りました... このモジュールを使うと、MechanizeでロードしたページがAutoPagerizeのSITEINFOに記述されていれば、自動的にSITEINFOのnextLinkを参照して

    yuiseki
    yuiseki 2008/02/01
  • Lilyで視覚的にHTTPDサーバを作る - bits and bytes

    なんか気がついたらノキアの携帯向けApache Nokia Mobile Web ServerからはじまってWindows Mobile, iPhone, mozJSHTTPとキワモノHTTPサーバ紹介ブログみたいになってますが、今回のHTTPサーバはFirefox上で動くLily | Visual Programming for the Mozilla Frameworkのhttpdパッチです。去年Yahoo! Pipesが話題になったちょっとあとでその存在を知りました。Yahoo! PipesはXMLデータを視覚的に処理するためのツールでしたが、Lilyは視覚的にプログラムを作るためのツールです。その中になぜかHTTPサーバが含まれているのです。 プログラムを視覚的に作るものを文章で説明してもしょうがないので、どんなものかはLily: Demo Archivesのビデオをみてみてくださ

    yuiseki
    yuiseki 2008/01/25
  • HTMLのドキュメントから繰り返し部分をみつけてSITEINFOをつくるAutoPagerize Iteration Detector - bits and bytes

    HTMLのドキュメントから繰り返し部分をみつけてSITEINFOをつくるAutoPagerize Iteration Detector HTMLのドキュメントから繰り返し部分をみつける - bits and bytesをベースにして、(ページによるけど)3回くらいクリックしたらSITEINFOが作れるAutoPagerize Iteration Detectorという長い名前のFirefox extensionを作りました。 インストール iterd.xpi version 0.12 (supports Firefox 2.0-3.0.0.*) つかいかた 今回はスターバックスさんの店舗検索結果(住所・店名・条件から探す)を例としてご紹介します。 AutoPagerize Iteration Detectorをインストールすると、リンクを右クリックしたときに出てくるメニューにDetect

    yuiseki
    yuiseki 2008/01/05
  • 次のページへのリンクをみつけるFastForwardアプローチの定量的評価 - bits and bytes

    AutoPagerize0.0.18で、SITEINFOにexampleUrlという項目が含まれるようになりました。そのSITEINFOが動くことを想定している実際のURLを記述するためのものです。 このexampleUrlを利用してSITEINFOが壊れていないかをチェックするAutoPagerize SITEINFO Test – Userscripts.orgというのが作られています。 このようにSITEINFOを参照して、ルールが壊れていないかをチェックしてかわいく表示してくれます。 これをちょこっといじってOperaのFast Forwardはどうやって次のページを決定しているのかで心残りだった、FastForwardの特定のキーワードが入っているリンクを次のページへのリンクだということにするアプローチがどれくらいうまく機能するか定量的に調べてみました。 次のページへのリンク子要

    yuiseki
    yuiseki 2007/12/17
  • HTMLのドキュメントから繰り返し部分をみつける - bits and bytes

    RSSを生成していないページからRSSを生成するなんでもRSS 0.1bは、公開されているJSAI2005: なんでもRSS - HTML文書からのRSS自動生成によると、日付情報を目印にしてそのHTMLドキュメントの構造を推測して、各エントリ(item要素)のタイトルと文を単語の統計的に処理して決定し、フィードを生成していると書かれています。 ウェブ上にあるHTMLドキュメントは Ask.jp : "xml" Search results. のように、RSSitem要素に相当する部分に日付が含まれていないものもあります。 その中でも、大量のデータを複数のページにわけて表示しているHTMLドキュメントを対象に、ドキュメント中に含まれる繰り返し部分のXPathを生成するブログラムをjavascriptで作りました。 アプローチ 大量のデータを複数のページわけて表示しているドキュメントを

    yuiseki
    yuiseki 2007/11/02
  • OperaのFast Forwardはどうやって次のページを決定しているのか - bits and bytes

    Operaはその独特なUIになじめなくてほとんどつかったことがないのですが、先日OperaにはFast Forwardという他のブラウザにはない機能があるのを知りました。 Fast Forwardはおおざっぱにいうと、ページが一番下までスクロールしているときにスペースキーを押すと、自動的にページの中から次のページだと思われるリンクを探してそのリンクの先をロードするという機能です。ひとが各サイトごとに手で記述したSITEINFOを外部から持ってきるAutoPagerizeとは違って、Operaに組み込まれたプログラムとデータを用いて次のページを表示するので、すべてのページで機能します。ただしAutoPagerizeのようにページが継ぎ足されていくのではなく、次のページ全体が今見ているウインドウにロードされます。 Fast Forwardについて詳しいことはFast Forward for q

    yuiseki
    yuiseki 2007/10/26