仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)Hiroaki KOBAYASHI
id:otsune さんの RT 論を読んで あと「公式RTだろうが非公式だろうが返信だろうが何でもいいけど、オレはタイムラインに◯◯の文字が見えるのが嫌なんだ」って要望は3年前から存在する。オレの持論は何十回も言ってるけど「すべてのブラウザはNGワード機能を搭載すべき」 @otsuneさんのRT論 - Togetter なるほどー、たしかしー というわけで グリースモンキーを書いて見たよ! こんな感じです 良かったら使ってください! NG ワードのところに好きな単語を書き込むと、その単語を含む要素が消滅します!*1 // ==UserScript== // @name NG Filter! // @namespace http://d.hatena.ne.jp/amachang/ // @include http://* // ==/UserScript== (function() {
ちょっとアレなタイトルですが、GreasemonkeyでAutoPagerize対応のスクリプトを自作する時の注意点を2つメモ。 自分はひよっこですが、これからGreasemonkeyスクリプト書いてみようかなという人の助けに少しでもなれば嬉しいです。 継ぎ足されたページに適用する方法 AutoPagerizeで継ぎ足された部分に自分のスクリプトを適用する方法あれこれ - 0xFF を参考に、AutoPagerize_DOMNodeInsertedを使うことにする。 以前はaddFilterとかGM_AutoPagerizeLoadedとか出てくる書き方をしていたんだけれど、この方法がやはり簡単・シンプルなので採用させて頂きました。 継ぎ足されたページ「のみに」適用する方法 新しく継ぎ足されたページのみに、スクリプトの内容を適用・反映したい場合。 注意しないと、継ぎ足されたページのみに適用
米 Yahoo! が Yahoo! Pipes みたいに自由度が高くて、またちょっと毛色が違うサービスが出てきた。題して、Yahoo! Query Language。YQL と呼ぶようだ。SQL 風の言語を REST で投げて、結果を XML や JSON で受け取ることができる。具体的にやってみないと分かりにくいので、とりあえず試してみた。RSS からデータ取得YQL を使って RSS から最新のタイトル10個を取ってきてみる。こんな YQL になるらしい。 select title from rss where url='http://d.hatena.ne.jp/nitoyon/rss' rss テーブルに対して select を発行している。実際にこの YQL を試すには YQL 用の console を利用するとよい。(※要ログイン)console の左上に YQL を入力して
2008-10-06追記:リンク一つ毎に改行タグ(br)を入れる部分のコードが消えていたので引用記法からpre記法に変更しました。 XPathの練習として作ってみました。 yourfilehostへのリンク以外を抹殺します。yourfilehostへのリンク以外は全て騙しリンクというページで使います。 ページの読み込みが完了する前に実行できるので、騙しリンクや画像の描写に無駄なCPU時間を使わなくて済むという地球に優しい仕様となっております(グリーンIT)。 Firefox 3とGoogle Chromeで動作確認しました。 コード javascript:(function(){document.body.style.display='none';var a='//body/*';var b=document.evaluate(a,document,null,7,null);for(var
XMLパス言語 (XPath) Version 1.0 この文書は、W3Cにより作成されW3C勧告として公開されている "XML Path Language (XPath) Version 1.0" (http://www.w3.org/TR/1999/REC-xpath-19991116) を、どら猫本舗が翻訳したものです。 この文書の原文はワーキングドラフトです。将来の改訂が予定されていることにご注意ください。最新版の仕様書は http://www.w3.org/TR/xpath にあります。 正式な仕様書はW3Cサイトにある英語版です。この日本語版は参考にすぎません。 この文書には翻訳上の誤りがあるかもしれません。どら猫本舗は翻訳の正確性を保証しません。あくまでご自身の責任でご利用ください。 お気付きの点がありましたらどら猫本舗までお知らせください。 XMLパス言語 (XPath)
すべての要素 //* div直下のp //div/p style属性を持つspan //span[@style] alt属性のないimg //img[not(@alt)] idがheaderな要素 id("header") rel属性がshortcut iconなlink要素 //link[@rel="shortcut icon"] 子要素にimgを持つa要素 //a[./img] 子、子孫にa要素を持つh2要素 //h2[.//a] 子要素にulがないdiv //div[not(.//ul)] javascript:から始まるhref属性を持つa要素 //a[starts-with(@href,"javascript:")] alt属性の値がsrc属性の値と同じであるimg要素 //img[@alt=@src] alt属性の値がsrc属性の値と異なるimg要素 //img[@alt!=@
結論特定のclass属性を持った任意の要素にマッチするXPath(hogeは指定したいclass属性名) //*[contains(concat(" ",normalize-space(@class)," "), " hoge ")] 特定の要素にしたい場合は適当に div[contains(concat(" ",normalize-space(@class)," "), " hoge ")] などとする. 概要特定のclass属性を持った任意の要素にマッチするXPathというのはアドオンやUserJavaScript,スクレイピングの際にDOMノードを特定するために良く使いますが,XPathの書き方がマズイ人がたまにいます.普通に考えたらXPathはこうなります. XPath1:: //*[@class="hoge"] class属性は以下の引用部分に書かれているとおり,スタイルシート以
ただいま6月7日以降に新しく作成したグラフが更新されない不具合を確認しています。原因調査中ですが、マッシュアップ先のはてなグラフの影響の可能性もあり解決までしばらく掛かるかもしれません。ご不便をお掛けしまして申し訳ございません。作成済みのグラフに関しては問題なく更新されています。また登録についても(更新はされないものの)可能です。 XPathからグラフを生成。 XPathGraphはウェブサイト上にある数値を定期的に取得し、自動的にグラフを作成するサービスです。取得したい数値を含むノードをXPathで指定すると、その日に巡回した結果をグラフに追加していきます。[詳しく] 例えば こんなグラフを作成出来ます 為替 no description 2008年11月12日 18:28 怖い絵2Amazonランキング no description 2008年12月18日 20:09 microSDH
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
この XPath 使いたい>< って思うことよくありませんか? サイト見てて、あ、このボタンにグリモンであんな機能やこんな機能付けたい><!って思うこととかありますよね! そんなときに、いちいち要素の位置とか考えずに右クリックで XPath をコピペできたら嬉しいですよね>< ってことで 作ってみた イメージはこんな感じです。 これをクリックすると、右クリックされた要素の XPath がクリップボードにコピーされます。 この機能を Firebug に実装する手順 1. Firefox のプロファイルディレクトリに行く 環境 プロファイルディレクトリ WinVista C:\Users\[ユーザ名]\AppData\Roaming\Mozilla\Firefox\Profiles\[ランダムな文字].default\ WinXP C:\Documents and Settings\[ユーザ名
以下のサイトからダウンロードしてお使いください。 Prototype.js 用 http://coderepos.org/share/wiki/JavaScript-XPath/bindings/Prototype jQuery 用 http://coderepos.org/share/wiki/JavaScript-XPath/bindings/jQuery 使いにくいところがあれば すぐになおしますので、コメントやブックマークなどで教えていただければ嬉しいです。 他のライブラリのプラグインに関して そのうち、開発したいなあとは思っているのですが。 そのライブラリの空気感(コンセプト)を読めないと、なかなか使いやすいプラグインは書けないので時間がかかりそうです。 もし 誰か書いてくれる人がいればとてもありがたいなあ。。。とか思っています。 いませんよねいませんよね><? 「こんな、感じで
昨日のエントリのブクマやコメントで jQuery からの移行がめんどう 時代は jQuery のようなコメントがありました。 これらのコメントから おそらく、「XPath が jQuery や YUI、Prototype.js、Dojo、MochiKit などの汎用 JS ライブラリと競合する」と思ってる方が多いのかなと思いました。 結論 XPath は汎用 JS ライブラリとは競合する技術ではなく、共存する技術だと僕は考えています。 理由 汎用的な JS のライブラリには、大きく以下のような機能があります。 DOM ツリー上の要素やノードを取得する DOM に新しい要素やノード、属性、プロパティ、イベントなどを追加する その他、クロスブラウザとか それに対して XPath が提供するのは DOM ツリー上の要素やノードを取得する というシンプルな機能だけです。 つまり、 XPath は汎
JavaScript-XPath とは JavaScript-XPath は、 DOM 3 XPath を実装していないブラウザに対して、実用的な速度で動作する DOM 3 XPath のエンジンを追加します。 一言で乱暴に言ってしまえば、どのブラウザでも document.evaluate って関数で XPath 使えるようになるよ!ってことです。 以下が公式サイトになります。 http://coderepos.org/share/wiki/JavaScript-XPath DOM 3 XPath ってなんなの!? めっちゃ簡単(で、ちょっとだけ適当)なDOM 3 XPath の説明をします><。 JavaScript でよく使う document.getElementById や document.getElementsByTagName って関数ありますよね? DOM 3 XPath
8 年。 世界が XPath の真の実力を発見するのに要した時間である。 1999 年、W3C により勧告された XPath は、「なにコレ読めねえwww XPath きめえwww」などと言われもした、 ともすれば不遇とすらいい得る歳月を経て、あたりのそこここに満ち充ちていた「DOM まじめんどくせえ」という思いによって、ふたたび表舞台に招来された。 XPath は、DOM ツリーの「ancestor」と「descendant」、「lastChild」と「firstChild」とを取り結ぶ、もっとも古くてもっとも新しい、そして、もっとも重要な技術だ。次の 8 年を自らの手で創り出すために、私は DOM 3 XPath に注目した。 XPath
RSSを生成していないページからRSSを生成するなんでもRSS 0.1bは、公開されているJSAI2005: なんでもRSS - HTML文書からのRSS自動生成によると、日付情報を目印にしてそのHTMLドキュメントの構造を推測して、各エントリ(item要素)のタイトルと本文を単語の統計的に処理して決定し、フィードを生成していると書かれています。 ウェブ上にあるHTMLドキュメントは Ask.jp : "xml" Search results. のように、RSSのitem要素に相当する部分に日付が含まれていないものもあります。 その中でも、大量のデータを複数のページにわけて表示しているHTMLドキュメントを対象に、ドキュメント中に含まれる繰り返し部分のXPathを生成するブログラムをjavascriptで作りました。 アプローチ 大量のデータを複数のページわけて表示しているドキュメントを
AutoPagerize用のXPathをかんたんに作るためのブックマークレット AutoPagerize IDE - bits and bytesみたいに、ブラウザ上でクリックした要素を表すXPathがほしいことがよくある。perlだったらこないだのXML::LibXML::ElementのnodePathでおしまい。 jsだとFirebugが中にそういうのを持ってる。コンソールに出力されたHTML要素の上にマウスを持っていくと、その要素を表すXPathが表示されるやつ。 extensionからだったらFirebugLib経由で呼び出すことができます。 /** * Gets an XPath for an element which describes its hierarchical location. */ this.getElementXPath = function(element
実際に使われている XPath のデータを大量に欲しかったので どうしよーって悩んでたら 。。。!!!AutoPagerize があるじゃん!!! ってことで SITEINFO を JSON 化するブックマークレット作った。(既出? ブックマークレット javascript:(function(){var result = document.evaluate('//textarea[@class="autopagerize_data"]',document, null, 7, null); var array = [];for (var i = 0, l = result.snapshotLength; i < l; i ++) {var data = result.snapshotItem(i).value;var json = '({' + data.replace(/\s*$/, '
こんな感じ ここでテストできます(DOM 3 XPath 対応ブラウザでしか動きません) XPath Functional Test テストしてみると Safari 3.0.3 Public Beta はバグが多い Opera と Firefox はかなり優秀 要素名は大文字? あと、特に気になった点として、 name 関数の復帰値が Firefox では大文字となって Opera, Safari は小文字となる。 なので、クロスブラウザ的には以下のように or で繋いであげないといけない。めんどくさいなあ // <p>hoge</p> var result = document.evaluate('//*[name() = "P" or name() = "p"]', document, null, 7, null);
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く