タグ

ブックマーク / amachang.hatenablog.com (18)

  • MediaQuery まとめ - IT戦記

    Media Query とは CSS3 から導入される Media Type を大幅に拡張する仕様です。 そもそも Media Type とは Media Type とは CSS 2 系に元々ある仕様で CSS を適用するメディア(パソコンの画面、テレビ、プリンタ用紙など)を指定するときに使います。 以下の例だと、 media 属性の中に記述されている all や screen や print が Media Type です。 <link rel="stylesheet" type="text/css" href="共通の.css" media="all" /> <link rel="stylesheet" type="text/css" href="パソコンの画面の.css" media="screen" /> <link rel="stylesheet" type="text/css"

    MediaQuery まとめ - IT戦記
    mooz
    mooz 2011/10/31
  • WebKit サーバーというものを作ってみた - IT戦記

    みなさん お久しぶりですヽ(´ー`)ノ夏休みの宿題終わりました? 毎日が夏休みの最終日みたいな生活してるあまちゃんです! さてさて 今日は WebKit サーバーというものを作ってみたので、紹介してみます。 WebKit って何? WebKit っていうのは Chrome や Safari の中に入ってるブラウザのエンジンのことです! 実はブラウザっていうのは、エンジン部分と見た目の部分(タブとかボタンとかね)に別れていて、意外と違うブラウザでもエンジン部分は同じものを使ってるってことも多いんですよ(*´ー`) ブラウザのサーバーってどういうこと? 要は、サーバーサイドでブラウザを起動して JavaScript を実行したり、 JavaScript が実行されないと読めないページから値を持ってくるのに使ったりしようという魂胆です。 今まではそういうのなかったの? 実は、今までは JavaS

    WebKit サーバーというものを作ってみた - IT戦記
    mooz
    mooz 2011/08/31
    Python から WebKit を触る際の参考にも.
  • Effective Java 読書会 2 日目 「equals night」 - IT戦記

    はじめに 今日もお疲れ気味な君の右足にローキックどーん ってな感じで どーん 今日読んだところ 20 ページ〜 44 ページ 前回はこちら Effective Java 読書会 1 日目「static メソッドの使い方などなど」 - IT戦記 とりあえず Eclipse をインストールしました! わーわーパチパチ。 とりあえず、わからずに JavaEE エディションにしたら、 Super Java Hacker の @hikoma っくすに「普通ので良かったのにー」と言われちょっとしょんぼりーぬ(´・ω・` ) 気をとりなおして static イニシャライザ public class Sample001 { public static final Date HOGE_DATE; static { HOGE_DATE = initDate(); } // (snip) } みたいな? sta

    Effective Java 読書会 2 日目 「equals night」 - IT戦記
    mooz
    mooz 2011/08/16
    WeakHashMap の使いどころ.
  • フェイスブック、ミクシィ、グリーで使われている OGP (Open Graph Protocol) とは何か - IT戦記

    みなさん、こんにちは お元気ですか?僕は元気です。 さて 最近よく、「いいね!」ボタンや「ミクシィチェック」ボタンによって、ウェブページを紹介し合う文化が少しずつ定着してきたなーと思います。 そんな中で、今後重要になってくるんじゃないかと思われる OGP (Open Graph Protocol)と言われる仕様があります。今日はそのことについて書いてみたいと思います。 OGP? おーじーぴー??とはなんでしょうか。 OGP とは 簡単に言うと「このウェブページは何のことを書いているか」という情報を、プログラムから読める形で HTML に付加する記述方法のことです。 まあ、普通のウェブページは人間が読めばだいたい何のことが書いてあるか分かりますよね。 ですが、プログラムは人間ほど頭が良くないので、そのウェブページ内の文章だけではそのページが何のことについて書かれているページなのか正確に識別す

    フェイスブック、ミクシィ、グリーで使われている OGP (Open Graph Protocol) とは何か - IT戦記
    mooz
    mooz 2011/01/17
  • サイボウズで学んだこと - IT戦記

    はじめに 2010 年 9 月 15 日を持ちまして、サイボウズ・ラボを退職いたしたました。 報告も兼ねて、久しぶりにブログを書いてみたいと思います。 (写真はゆうすけべーさんです) この会社に入って、たくさんの学びと思い出がありました。 その一つ一つをまとめていければ、素晴らしい記事になるのかもしれませんが、僕は文章が苦手です。 ですので、うまく退職のエントリを書き上げることができません。 言葉にできない。そんな感じです。 なので、このエントリはサイボウズ・ラボやサイボウズ社の仲間たちへのありがとうの気持ちをこめて、自分らしく最後まで JavaScript のことを書きたいと思います。 サイボウズでの最後の仕事 僕にとって、サイボウズでの最後の仕事は「JavaScript で新しいユーザーインタフェースを作ること」でした。 そして、その中で始めて複数人による大規模な JavaScrip

    サイボウズで学んだこと - IT戦記
    mooz
    mooz 2010/09/17
    大規模 JavaScript プロジェクトにおいて気を付けること.
  • JavaScript 内で無圧縮 ZIP を作って Data URI を生成するライブラリを作りました - IT戦記

    ちょっと思うところあって JavaScript 内で、複数のファイル情報を作って Zip で固めて、 Data URI を生成するライブラリを作ってみました。 ソースは以下の zip.js です。 http://svn.coderepos.org/share/lang/javascript/Zip/ 使うには 以下の base64.js が必要です。 http://svn.coderepos.org/share/lang/javascript/Base64/trunk/ この base64.js は弾さんが作ったものです。 今回 Zip で使うように、ちょっとチューニングさせていただきました。 こんなことができます // zip オブジェクトを作る var zip = new Zip; // 文字列をファイルとして追加する zip.addString('Hello, world!!', '

    JavaScript 内で無圧縮 ZIP を作って Data URI を生成するライブラリを作りました - IT戦記
    mooz
    mooz 2010/07/06
    無圧縮 zip
  • 要素が document につながっているかを高速に調べる方法 - IT戦記

    とある要素が document につながっているかどうかを調べたい! とりあえず、ほとんどすべてのブラウザで出来る方法としては、 parentNode で確認することができますね。 function isElementInDocument(node) { do { if (node === document) { return true; } } while (node = node.parentNode) return false; } でも 前の例だとちょっと遅いので contains や、 compareDocumentPosition を使うといいです! コードにすると以下のような感じ function isElementInDocument(node) { if (document === node) { return true } else if (document.compa

    要素が document につながっているかを高速に調べる方法 - IT戦記
    mooz
    mooz 2010/06/24
    document.documentElement.contains, document.compareDocumentPosition
  • Firefox に outerHTML を実装する - IT戦記

    outerHTML について outerHTML とは Mozilla 系のブラウザ以外のすべてのブラウザで使える要素の HTML が文字列として取得できるプロパティです。 alert(document.body.outerHTML); // => body の HTML がすべて見える(例:<body><h1>It works!</h1></body>) というわけで 以下のコードを書いてみました。 if (!('outerHTML' in document.createElement('div'))) { HTMLElement.prototype.__defineGetter__('outerHTML', function() { return this.ownerDocument.createElement('div').appendChild(this.cloneNode(tru

    Firefox に outerHTML を実装する - IT戦記
    mooz
    mooz 2010/05/31
    HTMLElement.prototype に outerHTML を追加. 一時的に div を作ってその子供として対象要素を格納. div の innerHTML を参照する.
  • Tabnagging の自衛用 User JavaScript を書いてみた - IT戦記

    Tabnagging というフィッシング手法があるそうです。 詳しい内容は、以下の記事をごらんください。 ブラウザでたくさんのタブを開いてネットサーフィン! あなたが知らないうちに非アクティブなタブの内容が偽のGmailページに書き換えられた!(タブのアイコンも変わる!) ← 別にGmailじゃなくてもFacebookでもmixiでも。 あなたがそのタブに戻ってくるとGmail(もしくは他のサービス)のログイン画面が!(URLはおかしいけれどあなたは気づかない!) ID&PWDを入力してしまってあなた終了のお知らせ…orz ブラウザのタブを使ったフィッシングの最新手法『Tabnagging』が巧妙すぎる件… | IDEA*IDEA これは…!! というわけで、とりあえずタイトルを「ホスト名を省いたドメイン」に書き換える User JavaScript を書いてみた。 これをインストールする

    Tabnagging の自衛用 User JavaScript を書いてみた - IT戦記
    mooz
    mooz 2010/05/26
    こんな巧妙な手口が……
  • C++ のお勉強 - IT戦記

    とりあえず daytime のクライアント ほとんどこれの写経 #include <iostream> #include <boost/asio.hpp> int main () { // io_service を介して OS の IO を使う boost::asio::io_service io_service; // ソケットを作る boost::asio::ip::tcp::socket socket(io_service); // 名前解決をする // (ホスト名とサービス名から、 IP とポートを求める) std::cout << "resolving hostname ..." << std::endl; boost::asio::ip::tcp::resolver resolver(io_service); boost::asio::ip::tcp::resolver::qu

    C++ のお勉強 - IT戦記
    mooz
    mooz 2010/05/11
    Boost.Asio を使用. bind とか.
  • JavaScript1.7 の yield を使って、非同期処理を同期処理のように書く方法 - IT戦記

    経緯 id:kazuhooku さんが一年前にやってたことですが Kazuho@Cybozu Labs: JavaScript/1.7 で協調的マルチスレッド 今日やっと挙動が理解できたのと、 Weave のソースを読んでいたらこのテクニックをバリバリ使っていて「ちょwwおまwww」ってなったので、自分でも作ってみようと思いました。 ほとんど id:kazuhooku さんのと同じものなので、既出です><当にありがとうございました>< まず、 yield とは何か yield とは、 JavaScript 1.7 から導入された機能です。 以下に yield の細かい挙動を示しておきます。 function f() { // なんかの処理 yield; // ... (1) // なんかの処理 yield; // ... (2) // なんかの処理 } var g = f(); // こ

    JavaScript1.7 の yield を使って、非同期処理を同期処理のように書く方法 - IT戦記
    mooz
    mooz 2010/05/08
    yield を使って協調的マルチスレッド. 解説.
  • Python の lambda の中で手続き的な書き方をする - IT戦記

    PythonJavaScript は似てる でも、 lambda の中に手続き的な書き方ができない Pythonlambda lambda 引数: 式 で、式の部分にはブロックも書けない。 これでは、 JavaScript 脳の人はコードを書けないではないか!!! というわけで lambda の中で手続きを書く方法を考えてみた 逐次処理 (lambda: ( 式, 式, )[-1]) 条件分岐 (lambda: ( 式, (lambda: ( 式, 式, 式, )[-1]) if (条件) else (lambda: ( 式, 式, 式, )[-1]), 式, )[-1]) 繰り返しは。。。。 まあ、再帰で書くとしておこう でも>< Python の代入 = は文だった>< なので、 lambda の中で文を書けない。困った。 で、以下のような感じにしてみた // print

    Python の lambda の中で手続き的な書き方をする - IT戦記
    mooz
    mooz 2010/03/08
    Plython は lambda 引数: 式. 式の部分にブロックが書けない.
  • Effective Java 読書会 10 日目 「Java の基本テクニック集」 - IT戦記

    はじめに 読書会に参加していないところがあるので、そこは議事録を読みながら、なるべく自分の言葉で書いていきます! 読んだところ 175 ページ〜 222 ページ 前回はこちら Effective Java 読書会 9 日目 「Enum の拡張とアノテーション」 - IT戦記 引数の検査をきちんとして javadoc の @throws に書く IllegalArgumentException IndexOutOfBoundsException NullPointerException などは、事前に引数チェックして出す。たとえば、 OpenJDK の String(byte[], int, int, String) では、以下のような実装になっている、自分で引数チェックをして、その内容を明確に @throws に記述している。 // チェック関数 private static void c

    Effective Java 読書会 10 日目 「Java の基本テクニック集」 - IT戦記
    mooz
    mooz 2010/03/04
    テクニック. 参考になる.
  • Effective Java 読書会 8 日目 「それ enum で出来るよ」 - IT戦記

    はじめに 今日読んだところ 143 ページ〜 159 ページ 前回はこちら Effective Java 読書会 7 日目 「PECS! PECS! PECS!」 - IT戦記 int 定数とか使わない 型安全じゃないから enum 使う enum Hoge { FOO, BAR; } 簡単 メソッドも持てる enum Hoge { FOO, BAR; void a() { /* (snip) */ } } で、以下のように使う Hoge.FOO.a(); シングルトンも 最近の Java では enum でやるらしい! switch 文の代わりに固有メソッド enum Hoge { FOO { void a() { /*snip*/ } }, BAR { void a() { /*snip*/ } }; abstract void a(); } 以下のコードが // これはダメ swit

    mooz
    mooz 2010/02/26
    enum って Java だとこんなに高機能なのか.
  • Y コンビネータって何? - IT戦記

    このエントリの 親友へ。ブログを書こう。 - IT戦記 y がブログを始めたみたいなので、読んでみた。 で、最新のエントリを読んでみたら、 Y コンビネータというものについて書いてあったので、 Y Combinatorが凄すぎる! - yuji1982の日記 Y コンビネータって何ってところから、自分でもいろいろ考えてみた。 結局なんなのかさっぱり分からなかったんですが、自分が考えたことをまとめておく まず、フィボナッチ数を求める fib を定義する var fib = function(n){ return (n <= 2) ? 1 : (arguments.callee(n-1) + arguments.callee(n-2)); }; fib(10); おお! JS すげー!名前は n しか使ってねーよ! めでたし、めでたし。。。。じゃなくて! JS が素晴らし過ぎて話が終わってしま

    Y コンビネータって何? - IT戦記
  • hCalendar を使って予定を公開しよう! - IT戦記

    はじめに みなさん、こんばんわ! さてさて最近のことですが、 Google の検索結果にイベントや予定へのリンクが表示されるようになりましたね!(まだ、英語版だけですけどね^^;) ASCII.jp:Google、リッチスニペットでイベントの日時や場所表示に対応 以下のような感じで表示されるみたいです! ウェブページの中に書かれた「予定」や「イベント」などを Google 先生が理解して表示しているんですね! この予定やイベントはどうやって探してるの? Google は hCalendar という形式のデータを読んで、予定やイベントを探しているようです。 というわけで、今日はこの Google が使っている hCalendar というものが「どういうもので」「どうやって活用すればいいか」を実例を交えながら紹介したいと思います。 hCalendar って何? hCalendar とは「カレン

    hCalendar を使って予定を公開しよう! - IT戦記
    mooz
    mooz 2010/01/28
    hCalendar とは「HTML 上にカレンダーに登録出来るような情報(イベントなど)を HTML 上に置くときはこういう書き方に揃えようよ!」という提案です。
  • ウェブページから NG ワードを消すグリースモンキー - IT戦記

    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() {

    ウェブページから NG ワードを消すグリースモンキー - IT戦記
    mooz
    mooz 2010/01/24
    DOM ノードが変更されたときに NG ワードを含むコンテンツの中身を消去。
  • for 文と無名関数のイディオム - IT戦記

    id:cho45 がチョロっと書いたコードが話題になっている 冬通りに消え行く制服ガールは✖夢物語にリアルを求めない。 - subtech このような書き方は、自分もたまにする。 というわけで、この書き方をする利点を以下の順に解説して見る。 単純な for 文の問題点 with 文を使った解決方法と、その微妙な問題点 無名関数を使った解決方法 単純な for 文の問題点 まずは、以下の HTML に対して <ul> <li>hoge</li> <li>fuga</li> <li>piyo</li> </ul> 以下の JavaScript を実行して var list = document.querySelectorAll('ul > li'); for (var i = 0, len = list.length; i < len; i++) { var node = list[i]; v

    for 文と無名関数のイディオム - IT戦記
    mooz
    mooz 2009/06/10
    ループ使って生成した時とか。
  • 1