サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
今年の「#文学」
higeorange.hatenablog.jp
ブログを書くまでがお花見です 今年も去年に続き g1983ers の花見が開催された.去年の反省を生かして今年は静かなところで. 朝9時に新橋に買出し.この時点で4人.11時になって5人.13時すぎてからようやく人があつまる. 遅い!!やっぱり集合時間をきちんときめないとですね. キャッチボールしたりバドミントンしたり. 同年代の人とわいわいするのは楽しい. 妙な力を入れなくてすむ. 思いっきり笑える. ほんと楽しい. 来年もやるよ. 写真たち
なんとなく携帯電話の歴史を振り返ってみる 初代 携帯電話を持ったのは高校2年の夏か秋だったと思う.機種は N207s.液晶はもちろん白黒.E-mail はなくてショートメール.ゲームなんてついていない. 2代目 高校3年.AU に鞍替え.ここでソニーエリクソンケータイ(正確にはまだソニエリじゃない). C404S. 液晶はカラーに.E-mail はここから.メモリースティックを使えて,音楽を聴いた(コンポにつないでコピーしてた.itunes store 的なものはつかってなかた.).このころのソニエリケータイはなんといってもジョグダイアルが最高だった Xperia にもつければいいのに(冗談です 3代目 高校卒業後すぐ.C1002S(オレンジ).続けてソニエリ.これがソニエリブランド日本最初の携帯電話らしい(さっき知った).折りたたみで上部の外側を入れ替えることできた. 4代目 大学入学前
Opera 11.10 の最新 weekly で CSS3 Columns なるものが使えるようになったので早速試してみた. CSS3 Columns は簡単にいうと今まで float や position などを使って行っていた段組を簡単に行えるプロパティたち. 導入したのはこのブログのフッタ部分. HTML <div id="footer"> <div class="section"> </div> <!-- 中略 --> <div class="section"> </div> </div> CSS #footer { -moz-column-count: 3; -webkit-column-count: 3; column-count: 3; } #footer div.section { break-inside: avoid; } 解説 column-count プロパティでカ
:target セレクタの便利さを試してみたかったので作ってみた. デモ: jQuery Slideshow with CSS3 :target selector 上下キーでページ切り替え.単純なページ切り替えしか実装していない.文字が追加で表示されるとか横から何か飛び出てくるとかはできない. JavaScript 側ではフラグメント識別子を変更しているだけという手抜き仕様. スライドショーといえば Opera Show が手軽なんだけど,Opera 以外じゃ動かないからね. コード 使い方 HTML <div> <p>page 1</p> </div> <div> <p>page 2</p> </div> <script type="text/javascript"> $("div").slideShow(); //それぞれの div を 1 スライドに <script> 指定した要素に
先週の土曜日新宿で開催された 1983 パーリィ #2 に参加した。実家にいたからウェブから。 Ust で流れていたから見ていたんだけど Ust やってるよって告知がなかった*1せいで見ている人が1,2名(私も含めて)。IRC に参加している人も会場にいる数名と私だけというものすごく寂しい感じだった。唯一私の発言に反応してくれた kei-s さんありがとうございます*2。飲みメインのイベントだと会場とウェブの向こうとのつながりが難しいのかなぁ (課題)。あと ライブ映像 + IRC はプロジェクタで投影は必須だなと感じた。 第3回は絶対に参加したいと思います。皆様お疲れ様です。 kei-s++ ikkou++ june29++ g1983ers++ *1:見つけられなかっただけかも *2:私いるのにだれもいないねっていわれてた。
function hasClass(elm, _class) { if(!elm || !_class) return; // var regexp = new RegExp('\\b'+ _class + '\\b'); // \ をエスケープしないと駄目なことを知らずにはまった // var regexp = new RegExp('(^|[^\\w-])' + _class + '([^\\w-]|$)'); var regexp = new RegExp('(^|\\s)' + _class + '(\\s|$)'); // 単純にこれでいける? return regexp.test(elm.className); } function addClass(elm, _class) { if(!elm || !_class) return; if(!hasClass(elm, _cl
久しぶりにこういうの書いたな。 querySelector, querySelctorAll メソッドを使ってるので Opera 10, Firefox 3.1*1 以上でないと動かない。 // ==UserScript== // @name hatebu counter at delicious // @namespace http://opera.higeorange.com/ // @incude http://delicious.com/* // ==/UserScript== (function() { var hatebuBaseUrl = 'http://b.hatena.ne.jp/entry/'; var hatebuImageBaseUrl = hatebuBaseUrl + 'image/'; var posts = document.querySelectorAll
カメラ関係の人が多かったのは気のせい。一眼レフ持ってた人も多かった。 撮った写真の一部 http://jp.zooomr.com/photos/higeorange/sets/46028/ 参加者のうち何人か写っているので顔出しまずいという方はコメントしてください。 なんかひどくテンションをあげすぎて*1後半大変なことになってまして、本当に申し訳ないです。 まとめ 1983パーリィはきっかけでしかない パーリィ(飲み会) だけじゃなくいろいろしたいよね 勉強会とか 撮影会とか (ぐるさつ) もっといろんな業界の人が集まればいいね ikkou++ june29++ higeorange-- while(1) { higeorange-- } 追記 デクリメント具合が足りなかったようです。 *1:前回の反省をふまえて
<p>hog<span style="display:none;">fuga</span>e</p> <p>hog<span style="visibility:hidden;">fuga</span>e</p> 上記のような HTML だと 1行目は 'hoge' 2行目 は 'hog e' と表示される。 このようなページで 'hoge' とページ内検索をしたらどうなるかを各ブラウザで調べてみた。 IE & Firefox 1, 2行目いずれもマッチせず。 Opera 1 行目のみマッチ。 Safari 1, 2行目ともにマッチ。 だいぶ違うなぁ。 結論としてはページ内検索されるような要素の中に display: none; な要素を含まないってことかな。 参考: 気づいたページ Firefox のキーボードショートカット | Firefox ヘルプ キーボードショートカット(Ctrl
input や textarea にフォーカスがあったってる状態でタブを切り替えたときに focus, blur イベントがどのように起こるか各ブラウザを調べてみた。 テスト内容 テストページ ページには input[type=text], textarea, button が並んでる。 各要素はフォーカスすると 要素名を書き出し、フォーカスが外れると 要素名: blur と書き出すようになっている。 やったことはテストページと別のページを開いておき、input or textarea or button のいづれかの要素にフォーカスした状態でもう一方のページに切り替え、テストページに戻るというテスト。ページの切り替えはタブバーを使った。 テストしたブラウザは IE 7, Firefox 3.0.6, Opera 9.64, Safari 3.2.2 の 4 つ。いづれも Windows
jQuery の $.each は for で書くよりさくっとかけて便利だ。 *1 使い方は $.each([0, 1, 2], function() { alert(this); }) のように、第1引数に Array (or Object)、 第2引数に各要素に対する処理 Function を書く。 this は それぞれの値(この例だと 0, 1, 2)が入ってくるんだけど、ここで注意すべき点は型が Number から Object に変換されること*2。 つまり下のようなコード*3だと、'a', 'b', 'c' と順にアラートすると思ったら 'hoge' としかアラートされない。これは、switch が '===' で比較しているため。 $.each(['a', 'b', 'c'], function(){ alert(typeof this) // object switch(
input に事前に値を入力しておく - higeorange's blog を例に jQuery のプラグイン(メソッド追加)書き方のポイントを書いて見る。(あくまでも私の書き方) メソッドの追加法 (function($) { $.fn.[メソッド名] = function() {} })(jQuery) という書き方をしているけど、 jQuery.fn.[メソッド名] = function() {} でも jQuery.fn.extend({ '[メソッド名]': function() {} }) でもいけるので好きな書き方で。 メソッドの引数 $.fn.preInput = function(txt, options) { var default_options = { class_name: 'pre-input' }; // options = $.merge(default_
input に事前に入力値を入力しておいてフォーカスするとその値が消える jQuery プラグインを書いた。 (function($) { $.fn.preInput = function(txt, options) { var default_options = { class_name: 'pre-input' }; options = $.extend(default_options, options || {}); return this.each(function(){ if(typeof this.value == 'undefined') return; var elm = $(this); elm.val(txt) elm.addClass(options.class_name) elm.focus(function(){ if(elm.val() == txt) { el
(function($) { $.fn.ajaxPost = function(callback, options) { var default_options = { data_type: 'html', before_send: function() {}, error_handler: function() {} }; options = $.extend(default_options, options) return this.each(function(){ if(this.tagName.toLowerCase() != 'form') return; var f = $(this); var submit = f.find('button[@type="submit"], input[@type="submit"]') f.submit(function(e) { e.pr
jQuery でイベントの伝播を止めたり、デフォルトの動作を殺したりするには element.click(function(evt) { evt.preventDefault(); evt.stopPropagation(); alert('hoge'); }); のように書くんだけどこれは, IE の event.returnValue = false; と event.cancelBubble = true; もやってくれるのね。 そりゃそうだよな。同じ名前だからやってくれてないのかと一瞬思った。
del.icio.us で network, tag などのページから save this というリンクをクリックしてブックマークする時に他人のつけているコメントをそのままコピーするスクリプト.わかりにくい. // ==UserScript== // @name del.icio.us Copy Note // @namespace http://opera.higeorange.com // @include http://del.icio.us/* // ==/UserScript== (function() { var posts = document.evaluate('//li[@class="post"]', document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); for(var i = 0, l = pos
http://d.hatena.ne.jp/javascripter/20080514/1210791575 より unshift で Number.prototype.fillZero = function(n) { var r = this.toString().split(''); while(r.length <= n) { r.unshift('0'); } return r.join(''); } 2 Number.prototype.fillZero = function(n) { return Array((n+1) - this.toString().split('').length).join('0') + this; } 小数や負の数の場合も考えて if(this < 0 || (this - Math.floor(this) != 0)) return this;
Pipes 使っていますか? フィードを全文にしたりまぜまぜしたりといろいろ便利な Pipes ですが、ここで知っておくときっと(多分)便利な事をメモ。 フィードのタイトルや概要に何かつけ加えたい・書き換えたいときは Operators > Replace モジュールを使う。 そこに既存の要素を付け加えたいときにどうするか。 実際に作ったもので説明。 http://pipes.yahoo.com/higeorange/deloperajapanese ashizuka さんが作ったものをちょこっと改造した、Opera の日本人ユーザーの del.icio.us opera タグをまとめたフィード。 改造したところは タイトルに誰がブックマークしたのかを付けたこと。*1 ポイントは "${要素名}" としているところ。 上のだと行頭 (^) に [ユーザー名 (${dc:creator})
重要 Tumblr 側のしよう変更によりうごかなくなりました。 ダウンロード falstladder でも使えるよ。 mala++ 更新 リンクを画像に。 04/06 参考 http://la.ma.la/blog/diary_200610182325.htm
del.icio.us にはポストするときに "こんなタグつけたらいいんじゃないの" ってのが recommended tags と popular tags と 2 つある。 popular tags はそのページに多く付けられたタグ。 recommended tags は popular tags のうち自分が過去に使っているタグ。*1 問題なのが recommended tags に追加されるべきタグなのに、アルファベットの大文字小文字の違いで追加されない場合があること。 その問題を直すスクリプトを書いた。 // ==UserScript== // @name del.icio.us recommended tags fix // @namespace http://opera.higeorange.com/ // @include http://del.icio.us/*?*url
null値の扱いの不思議 - hogehoge @teramako より。 null > 0は 11.8.5 抽象的関係比較アルゴリズム (The Abstract Relational Comparison Algorithm) によると null が 0 になって 0 > 0 // falsenull >= 0も同じく 0 >= 0 // truenull == 0 // falseは、11.9.3 抽象的等価比較アルゴリズム (The Abstract Equality Comparison Algorithm)にしたがって 型変換は行われず falseになる。 == のときも 0 に変換してもよさそうなのに。
10まで を数える。 for(var i = 1; i <= 10; i++) { setTimeout(function() { print(i); }, i * 1000); } いっけん間違ってなさそうだけど 11 しか表示されない。タイムアウト後はすでにループを抜けて i は 11 になってるため。 for(var i = 1; i <= 10; i++) { setTimeout((function(i) { return function() { print(i) } })(i), i * 1000) } これで OK. タイムアウトがセットされた時点で外側の function は評価されて、タイムアウト後に返された function を実行てことかな。 http://la.ma.la/misc/userjs/amazon_gift.user.js より。 setTimeout
del.icio.usのポストページを俺仕様にするユーザスクリプト - #june29jp の別アプローチ tabindex を使ってみる。 tab を押したときのフォーカス順を tags -> notes -> save にしただけ。 // ==UserScript== // @name delicious Post Costomize // @namespace http://opera.higeorange.com/ // @inlcude http://del.icio.us/*?*url=* // ==/UserScript== (function() { var notes = document.getElementById('notes'); var tags = document.getElementById('tags'); var save = document.eva
http://cotocoto.jp/event/2880 に参加してきた。 気になったコード js> "hoge".charAt(1) o js> "hoge"[1] o // 実装によってはうごかないらしい。 new String() vs. String() js> typeof("hoge") string js> typeof(String("hoge")) string js> typeof(new String("hoge")) object js> typeof(3) number js> typeof(Number(3)) number js> typeof(new Number(3)) object 文字列 -> 数値 js> "10" - 0 10 js> "10" + 0 100 Array.fill js> new Array(10 + 1).join("*").
HTMLを書くときにDOCTYPE とか どの文章でも同じ構造(html, head, body) といちいちかくのはめんどくさい。 そこで html ファイルを新しく作ったときに自動でその辺を挿入してくれると便利だ。 まず, テンプレートファイルを用意 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title></title> </head> <body> </body> </html> これを skel.html として ~/.vim/templates/ にでも保存する
var KeyBind = {}; KeyBind.add = function(elm, key, func) { var keycode; var m = null; var sp = { "Up" : 38, "Down" : 40, "Right" : 39, "Left" : 37 } if(key) { key.replace(/^(([CSA])-)?(\w+)$/, function($0, $1, $2, $3) { if($2) { m = ({ C : "ctrl", S : "shift", A : "alt" })[$2] + "Key"; } keycode = sp[$3] || $3.toUpperCase().charCodeAt(0); }); elm.addEventListener('keydown', function(evt) { if(m) {
1. http://twitter.com/statuses/followers.json を取得。 2. 取得したファイルを follower.js と改名。 3. follwer.js を以下のように編集。 var followers = [{ ..... }] // 取得したJSON 部分。 String.prototype.println = function () { print(this); } "<html>".println() "<head>".println() "</head>".println() "<body>".println() for(var i=0;i<follwers.length;i++) { if(follwers[i]["url"] != null) { ("<p><a href=\"" + follwers[i]["url"] + "\">" +
// ==UserScript== // @name del.icio.us comments replace URL // @namespace http://opera.higeorange.com/ // @include http://del.icio.us/* // ==/UserScript== (function() { var comments = document.evaluate( '//p[@class="notes"]', document, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null ); var notes; while(notes = comments.iterateNext()) { notes.innerHTML = notes.innerHTML.replace( /(https?|ftp)(:\
// ==UserScript== // @name del.icio.us show only commented post // @namespace http://opera.higeorange.com/ // @include http://del.icio.us/* // ==/UserScript== (function() { var posts = document.evaluate( '//li[@class="post"]', document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null ); for(var i=0,len=posts.snapshotLength;i<len;i++) { if(!document.evaluate( './p[@class="notes"]', posts.snapsho
次のページ
このページを最初にブックマークしてみませんか?
『higeorange's blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く