Hatena::ブログ(Diary)

neotagの雑文 このページをアンテナに追加 RSSフィード

2011-03-10

null は型判定で遅くなる

NULL入れたいときは、 undefined ってして isNullOrUndefined みたいな感じでチェック

2009-10-12

回文さくせいつーる

入力したテキストを反転して結合するスクリプトがあれば回文作りやすいんじゃないかと思って作ってみた。

http://dl.getdropbox.com/u/193176/kaibun/index.html

でも全然回文つくれなかった。頭の問題か。

2009-05-23

Jetpack 使って Twitter でつぶやいてみる。

昨日に引き続きjetpackいじってみた。
今日はjetpack.lib.twitterに挑戦。色々試してたけど機能として形になったはつぶやきだけ orz

注意:twitterのID,PASSをsessionStorageに記憶させているので念のため本垢では使わないようお願いします。いわゆる自己責任で。
例によってセキュリティ的側面に自信がないので公開HTMLは置きません。ご容赦ください。。

使い方

  • スクリプト読み込み直後にidとpassを聞かれると思うので入力してください。一度入力するとsessionStorageに保存されるので次回以降入力の必要はありません。
  • アカウントを変更したい場合や間違えた場合は「SessionStorageのid,passwordをリセット」から下の二行のコメントアウトを一度削除して読み込みなおせば聞かれるはずです。問題なければまたコメントアウトしてください。
  • 右下にtwitterのfaviconが表示されるのでそれをクリックするとつぶやけます。
(function() {
jetpack.statusBar.append({
  html: "<img src=\"http://twitter.com/favicon.ico\">",
  width: 20,
  onReady: function(widget){
    var focusedWindow = jetpack.tabs.focused.contentWindow;
    /* Twitterアイコンをクリックできるっぽく見せる */
    $("body",widget).css({cursor:"pointer"});
    
    /* このプラグイン用のsessionStorageを用意
     * 中身は今のところidとpassだけ。
     * (こういうの保存するってたぶんきっとやばいよね。。
     *  試すときは捨て垢+プロパティ名を変えて使用してください。)
     */
    if (!jetpack.sessionStorage.jpTweet) {
      jpTweetSessionStorage = jetpack.sessionStorage.jpTweet={};
    }else{
      jpTweetSessionStorage = jetpack.sessionStorage.jpTweet;
    }
    
    /* id password のセット
     * SessionStorage使って一度入力したIDは覚えるようにしてる。
     * ID変えたいときは一時的に↓のコメントアウトを取ればいいと思う。
     */
     
     /* SessionStorageのid,passwordをリセット */
     //jpTweetSessionStorage.aID   = null;
     //jpTweetSessionStorage.aPass = null;
     
    if (!jpTweetSessionStorage.aID||!jpTweetSessionStorage.aPass){
      var aID   = jpTweetSessionStorage.aID
                = focusedWindow.prompt('input your twitter id');
      var aPass = jpTweetSessionStorage.aPass
                = focusedWindow.prompt('input your twitter password');
    }else{
      var aID   = jpTweetSessionStorage.aID;
      var aPass = jpTweetSessionStorage.aPass;
    }
    
    var jpTweet = new jetpack.lib.twitter.Twit(aID,aPass);
    
    $(widget).click(function(){
      var aTweet = focusedWindow.prompt('いまなにしてる?');
      if(aTweet){
        jpTweet.tweet(aTweet + " [*jetpack]","",function(){
          jetpack.notifications.show(aID + " is maybe twit !\n" + aTweet);
        });
      }
    });
  }
});
})();

Todo

  • 自分宛のReplyを取得する事は出来たのでその新着のみを表示する。
  • 表示された新着にReplyできるような仕組みを作る。

上の二つが出来れば適度に集中したいときでも自分宛Replyを見逃さずに済むので個人的には色々ちょうど良い。

思ったこと。

Fx3.5にクロスドメインXMLHttpRequestが実装されてれば色々楽になるので気が向いたら実装されてるか調べてみる。

2009-05-22

Jetpack と 英辞朗 で遊んでみた。

Jetpackのアップデートから動かなくなった気がします。後で調べます。090530

id:amachang のエントリを参考にJetpackしてみた。

http://d.hatena.ne.jp/amachang/20090521/1242884854


眠いのでとりあえずソースだけ。英辞朗を活用するJetpackです。

  • Fx3.5にJetpack入れてね。
  • 内容に自信がないので公開用HTMLは作ってません。localhost かなんかに設置するといいと思います。(手抜きでごめんなさい。)
  • たぶんutf-8で保存しないとうまく動かない予感。
  • 右下の"eijiro"をクリックするとプロンプトが出るので検索文言入れるとアクティブなタブに検索結果が表示されるよ。(ただし1ページ目のみ。)
  • 開いてるページにノード突っ込むのでCSSが影響して見た目が崩れるかも!
    • 余力があればiframeかなんかに変える。

公開用ファイル

jetpack-eijiro.js
(function() {
jetpack.statusBar.append({
  html: "eijiro",
  width: 35,
  onReady: function(widget){
    $("body",widget).css({cursor:"pointer"});
    $(widget).click(function(){
      var focusedTabDocument = jetpack.tabs.focused.contentWindow.document;
      // 検索文字列
      $(focusedTabDocument).ready(function(){
        var query = jetpack.tabs.focused.contentWindow
                           .prompt('英単語か日本語を入力してちょーだい');
        var url = "http://eow.alc.co.jp/"+query+"/UTF-8/?ref=sa";
        $.get(url, function(content) {
          $("body",focusedTabDocument).append(
          $(content).find("#resultList>ul").addClass("jetpackResutlList"));
          $("ul.jetpackResutlList",focusedTabDocument).css({
            position:"absolute",
            top:"0",
            right:"0",
            width:"30%",
            border:"solid 1px #333333",
            padding:"20px",
            background:"#fff",
            "z-index":"9999",
            cursor:"pointer"
          }).click(function(){
            $(this).remove();
          })
        });
      });
    });
  }
});
})();
HTML
<!DOCTYPE html>
<html>
<head>
<link rel="jetpack" href="jetpack-eijiro.js" />
<title>じぇっとえいじろう</title>
</head>
<body>
<h1>えいじろうとなかよくするよ!</h1>
</body>
</html>

2009-05-19

arguments.callee で再帰処理

ActionScript 3 触ってて思い出した callee 関数の存在。

たしかJavaScriptでも普通に使えたよね?ってことでFx3で試したら使えた。なんでこんな簡単な再帰を今までつかってなかったんだろう。とりあえず忘れないようにメモ。

サンプル

※注意:アラートが何回か出てうざいです。

function calleeTest(num){
  if(num<1000){
    alert(num*num);
    calleeTest.arguments.callee(num*num);
  }
}
calleeTest(2)

ブックマークレット用 改行抜いてね。

javascript:(function(){function calleeTest(num){if(num<1000)
{alert(num*num);calleeTest.arguments.callee(num*num);}
}calleeTest(2)})()

追記

思い出した。calleeはIEで重いらしいってのを読んで使ってなかったんだった。軽いスクリプトなら使ってもいいかもしれないけど規模とTPOにあわせてしっかり考えるべきだね。

http://d.hatena.ne.jp/os0x/20081127/1227756637

追記その2

@taku_eof さんから下記の情報をいただきました。

arguments.callee は ECMAScript 5 Strict Mode では TypeError になる件 (10.5 & Annex C)

http://twitter.com/taku_eof/status/1844590022

ECMAScriptの仕様書とかまともに読んだこと無いや。。。読まねば。
@taku_eofさんありがとうございます!