Perlで2階層目のハッシュを参照するときは注意が必要

use strict; use warnings; my (%hash, $msg); $msg = (exists $hash{key}) ? "exist" : "not exist"; print "$msg\n"; # not exist # 1階層目を参照 my $tmp = $hash{key}; $msg = (exists $hash{key}) ? "exist" : "not exist"; print "$msg\n"; # not exi…

canvasで簡単なお絵かきをしてみたメモ

タイトルのまんまです。 Firefox/Chromeあたりで動きます。デモページ html canvasを用意しとくだけです。 canvas内の座標を取るときに、layerX/Y で取りたいので、styleにposition:relativeを当てておきます。 (positionが当たってないと、layerX/Yは pageX…

html5で videoの任意のフレームをcanvasに描画するメモ

デブサミ2010のhtml5セッションで見たデモ(Movement tracker)*1 が、 衝撃的だったので video x canvas をちょっと勉強した。 1.videoの任意のフレームをそのままcanvasに描画させてみる htmlのbodyに書くにはこれだけ。 <video id="v" src="video.ogv" autobuffer controls></video> <canvas id="c"></canvas> <input type="button" value="copy frame" onclick="copyFrame()" /> copy frameボタン…

Perlで複素数列挙をshort coding

ネタ元は、@javascripter さんのPOST(http://twitter.com/javascripter/statuses/8367943818) for(a=[],b=[],c=1;c++<1E3;)if(!a[c])for(b.push(d=c);d<1E3;a[d+=c]=1);alert("素数" + b); と、id:nitoyon さんのActionScript3 で素数列挙を short coding …

IEだと、style.borderを空値にしてもデフォルトに戻してくれない件

フォーカスされたinput要素をハイライトし、フォーカスが外れたら元に戻すという よくあるフォームを作ろうと思い、以下のようなコードを書いたら、 Firefox3.5 や Chrome4 では思うように動いたが、IE8では駄目だった。 <p>↓↓input↓↓</p> <input type="text" onfocus="this.style.border='solid 2px #69E'" onblur="this.style.border=''" /> <p>↑↑input↑↑</p> onfocus時は何…

ニコ動の検索設定(ソート順)を保存するGreasemonkeyスクリプト

【2010-02-17 追記】 ニコ動のデザイン変更により、設定ボタンの位置がずれていたので修正 - 作りましたので、よければどうぞ。 install >> nico_sort.user.js 「ランキングの設定保存」と同じです。 上のスクリプトをインストールすると、検索結果の画面で…

『キーワードを含むタグ』検索の結果をorder=aで逆順にできた

キーワード検索やタグ検索で、結果の逆順表示をするときのパラメータ『order=a』*1 を、 キーワードを含むタグ検索でも使ってみたら、ちゃんと逆順で表示されたhttp://www.nicovideo.jp/related_tag/test?order=a 使う機会があるかは謎。 *1:「投稿が古い順…

tableの列と行を固定するIEのCSS(expression)をJSで書き直そうとしたけど無理だった

テーブルの列と行を固定したい場面があったので、そのメモ*1。 ググって簡単に出てくるのが、Super Tables というJavaScriptのライブラリだったが、 テーブルの幅や高さを任意の大きさに、任意のタイミングで変えたいという用途には、 向かなそうに見えた。 …

LWP::UserAgentのtimeoutエラー判定法 (Can't connect to (connect: timeout)を出力してる場所のメモ)

LWP::UserAgentでtimeoutをセットしたときに、 「timeout」と「それ以外のエラー」を判別したい。 以下のようなコードを見つけたのだが、 use LWP::UserAgent; use XML::TreePP; my $ua = LWP::UserAgent->new(); $ua->timeout(3); my $tpp = XML::TreePP->n…

小数点xx桁で四捨五入する toFixed() の使いにくいところ

なぜ、戻り値が文字列なのか。 var num = 123.456; alert(typeof num); // number num = num.toFixed(2); alert(typeof num); // string toFixed後に、値を表示するだけなら別に良いけど、 さらにその後、計算を続けるには、わざわざ数値化してあげないとい…

DateのgetTime省略と、Math.floorを使わない切捨て計算

ニコニコのJSを眺めていたら、おもしろいコードがあったのでメモする。 マイページで読み込まれるmy3.jsの236行目*1 var ts = new Date/1000|0; まず、new Date/1000 。 getTime() を書かなくても、勝手にミリ秒にしてくれるとは知りませんでした。 >>> new …

いまさらながら、コメントで頂いたperlのコード(grep)を試してみた

4ヶ月近く前、pythonのコードすげーって記事(ループで配列を作る書き方)を書いたのだけど、それにたいして、perlだとこう書けるよというコメントを頂いていた。 id:tkmc perlだとこんな感じ? return grep $_, @array; そのときは、「へ〜」くらいに思ってい…

親要素がdisplay:noneかどうかを、子要素で確認する方法

<div style="display:none;font-size:14px"> <p><span id="child">子要素(正確には子孫要素)</span></p> </div> こんな感じのhtmlがあったときに、display:none が指定されてるdivを見ずに、 id="child"の要素から、自身が表示されているのかどうかを判別したい。 普通にstyleを見ても当然ながらわかりません。 >>> alert(document.getElemen…

ニコニコ動画(9)になって、過去ランキングのRSSが取れなくなった件について

前は日付指定無しでも、 http://www.nicovideo.jp/ranking/mylist/daily/game?rss=2.0 日付指定有りでも、 http://www.nicovideo.jp/ranking/mylist/daily/game/20081101?rss=2.0 RSSが取れたのに、 今(2009/11/01 現在)は日付指定すると結果が返ってこな…

amazonの表示上のちょっとしたバグ?

2ヶ月も前のネタだけど*1 アマゾンの90%OFFなどの特価商品を簡単に探す方法 | ひとぅブログ 上の記事で紹介されているpct-offというパラメータの値に、 「-」だけを入れると、本来数字が入るべき場所に「{low}」という妙な文字列が表示される。 ...&pct-off=…

Lingua::JA::Regular::Unicode のメモ

全角/半角変換のできる便利なモジュール Lingua::JA::Regular::Unicode 作者様blog: http://d.hatena.ne.jp/tokuhirom/20081018/1224300947 CPAN(ver0.03): Lingua::JA::Regular::Unicode - convert japanese chars. - metacpan.org の使い方(?)メモ フラグ…

はてブのホットエントリで、既読・ブクマ済みのエントリを非表示にするgreasemonkeyスクリプト

かなり自分用のスクリプトですが・・。hatebu_hotentry_filter.user.js機能はほぼタイトルのままです。 既読済み(ブラウザに履歴がある)のエントリを非表示にする ブックマーク済みのエントリを非表示にする 興味無しリスト(後述)に入っているエントリを非…

日付のvalidate

入力文字列が存在する日付かどうかを判定する こんな感じでどうだろう function validDate(str) { var ymd = str.split('/'); // 年月日のデリミタでsplit. var y = ymd[0]; var m = parseInt(ymd[1],10) - 1; // 0 paddingされてる文字列を整数に. "09" => …

はてなダイアリーのぐりもん2つを増田対応した

はてな公認のGreasemonkey をちょっといじって、増田でも以下の2つが動くようにした はてなキーワードリンク無効スクリプト キーワードポップアップ はてなキーワードリンク無効スクリプト 「@include追加」 と 「無効化後のspanのclass追加をコメントアウ…

aタグ要素の href 参照

メモるほどのことでもないけど、a.href だと勝手にフルパスにしてくれる。 http://example.com/dir/ というページだとする。 (ブラウザはFirefox3とIE8で確認) <a href="/hoge" onclick="alert(this.href)">hoge</a> >> http://example.com/hoge <a href="hoge" onclick="alert(this.href)">hoge</a> >> http://example.com/dir/hoge hrefに入っている値がそ…

mixiアプリの開発者用ページが使いにくいので、リンクを張り直すGreasemonkeyスクリプトを作った

久しぶりに見たら、いつの間にかmixiアプリの開発者用ページ(http://platform001.mixi.jp/)が、 結構変わっていた。 まず、各アプリの設定画面*1になかなかたどり着けなかった。というのも、http://platform001.mixi.jp/home.pl や http://platform001.mix…

Unicodeブロック、Unicodeスクリプトで実際に対象となっている文字がなんなのか調べてみた

正規表現で使える、\p{P}(句読点) や \p{S}(記号) や \p{InCjkSymbolsAndPunctuation}(全角記号) などなどは便利だが、実際に中身が何なのかを知らずに使うのは少々こわいので調べてみた unicode.org でも期待する一覧表が発見できず困った*1が、 なんかそれ…

ループで配列を作る書き方

最近、集合知プログラミングを読んでいるんですが、 pythonの書き方がすごいなーと思ったのでメモ。 return [elem for elem in array if elem!=''] (pythonだからarrayと書くよりlistって書いたほうがいいのかも。) 上のと同じ意味。 ret = [] for elem in…

文字列からdatetime型への変換メモ

「YYYY-MM-DDThh:mm:ssZ」形式(ISO 8601 - Wikipedia)で表される文字列を、datetime型に変換する import datetime str = '2009-07-16T11:13:00Z' dt = datetime.datetime.strptime(str, "%Y-%m-%dT%H:%M:%SZ") これで一応、datetime型(UTC)になってるはず。

はてブのRSSを表示する mixiアプリを作ってみた part.2

前回( はてぶのRSSを表示する mixiアプリを試しに作ってみた)できなかった、 Owner設定の永続化をGoogleAppEngine(JSONP)を使ってやってみた(コードは一番下)。 canvasページ はてなのIDを入力するテキストBOXがあり、 設定済みのIDフィードをその下に表示…

ニコニコ動画の公開マイリスト検索(/openlist/sm****)は、AND検索もOR検索もNOT検索もできるっぽい

これは普通に有名なネタ?(有名なネタなら申し訳ないorz)ちょっとググった感じだとそれっぽい記事が見つからなかったので、一応あらましも含めてメモ。 きっかけは、友人との会話 友人> ニコニコって面白い動画探しにくいよね。私 > まーそうだねー。ラ…

はてぶのRSSを表示する mixiアプリを試しに作ってみた

まだ、HelloWorldレベルですが、作ってみました。 <Module> <ModulePrefs title="mixiapp x hatena_bookmark"> <Require feature="opensocial-0.8"/> </ModulePrefs> <Content type="html" view="home, profile">Hotentry</h3> <div id="hotentries"></div>

input要素からの親form参照

this.formで参照できることを知らなかったのでメモ。 <form> <input type="button" value="button" onclick="this.form.submit()" /> </form> わざわざnameとかidとか指定しておかなくていい <form name="form1"> <input type="button" value="button" onclick="document.form1.submit()" /> </form> <form id="form1"> </form>

GoogleAppEngine SDK が python3.0.1 では動かなかった

そりゃまぁ、「http://code.google.com/intl/ja/appengine/docs/python/gettingstarted/devenvironment.html」 とかで、python2.5って書いてますけども。 Googleさんならそれ以降に対応してるだろうなーと思って、一番新しいPython 3.0.1入れたら無理でしたo…

楽天ブックスAPIが仕様変更するらしい

api

メールの内容をまるごとコピペしておく(大事そうなとこには色を付けた) 楽天ウェブサービスご利用の皆様日頃、楽天ウェブサービスのご利用、誠にありがとうございます。さて本日は、楽天ウェブサービスに新しく追加された新しい楽天ブックス系APIのご紹介…