#iphone

ブックマークレット(Bookmarklet)とは

簡単に言うとJavaScriptをブックマークしたものです。 普通はURLをブックマークするに対し、JavaScriptをブックマークします。 そしてこのブックマークを選ぶときは保存されたJavaScriptが実行されます。 iPhoneのブラウザ関連のアプリでは結構使われています。

最下部へ移動するJavaScriptをiPhoneに登録する方法

javascript:<span class="synStatement">window</span>.scrollTo(0,<span class="synStatement">document</span>.documentElement.scrollHeight);
  • まずSafariで任意のサイトをブックマークする
  • そのブックマークを編集する
  • 一行名に好きな名前(ここではPage Bottom)を記入し、二行目を上記のJavaScriptを貼付けで保存する

  • ページの最下部へ移動したい時はブックマークからさっき登録したブックマークレットをタップすればOK。

参考サイト:

#diary
専門家ではないので記事のテーマがちょっとでかすぎるかもしれませんが、 最近気になったニュースをベースにざっと述べようと思います。

2010年注目の資格、一位が仮想化技術

これは@ITの記事による結果です。 仮想化といえばVMWareくらいは知ってますけど、 Mac上でWindowsのアプリをたまたま実行する時に使ってました。 「運用コスト削減のためのサーバ統合やクラウドの活用」などのことにどう繋いでいるのか全然イメージできません。。。 少し興味はあるんで、後で勉強しとこう。 関連の資格は以下のようです。
  • ヴイエムウェアの「VCP」(VMware Certified Professional)
  • マイクロソフトの「Hyper-V仮想化検定」「MCP」(Microsoft Certification Program)
  • シトリックスの「CCEA」(Citrix XenServerのCitrix Certified Enterprise Administrator)

クラウド

このキーワードもITユースから頻繁に出てきますが、 どのようにプログラマのキャリアに影響するか、 知りたいですね。

JDK 7 Milestone 5 build

Java7のニュースはずっと聞いてたんですが、 なかなか使ってみる時間がないですね。 今日雑誌でちらっと読んだのですが、 モジュール化、多言語の対応などの機能が追加されたそうです。 特にモジュールのサポートは「JAR HELL」(Jarの地獄)から救う有力な機能だそうです。これからクラスパスなど特に気にしなくてモジュール単位になりますと。 またコレクション周りの使い方も強化されましたね。 実は一番気に入ったのがswitch文がやっとString文字列をサポートしたことです。 今までJavaのswtich文があんまり使えないなと何となく感じましたが、 Java7になるとやっと文字列できましたね! ```java String s = "..."; switch (s) { case "quux": processQuux(s); // fall-through case "foo": case "bar": processFooOrBar(s); break; case "baz": processBaz(s); // fall-through default: processDefault(s); break; } ```

In the end..

ということでIT業界どんどん進化していきます。 Java7,,,やってみたいっす!
#diary

@ITよりこんな意味深い記事を読みました。

自分にぴったりだと思うので、一部抜粋して引用させていただきます。

技術者は技術に専念。ただ、ビジネスにも興味は持て - @IT自分戦略研究所

所感

私もビジネスにあまり興味がなく、プログラミングが好きです。そして、決してプログラミングの天才じゃないこともわかってます。そう、天才ではないけど、努力はできる、そのほうが自分に向いてると思います。


CTOは格好いい、そして常に論理的に物事を考えそれを行動とコードに移す、一人前の魅力的な人類だと考えています。私は技術に特化していきます。

技術者にとっての社長

わたしは、CTOは「技術者にとっての社長」になるべきではないかと思っています。技術者とは、根本のところではビジネスに興味が持てない生き物だと思っています。わたし自身がそうですから。究極的には、ビジネスがどう、経営的にどうという部分よりも、問題があって、技術的にどう解決するか、という方が好きなんです。でも、社長はそうではいけない。社長はビジネスのことを24時間、考えている。そうなると、技術者は社長に、根本のところで付いていけなくなってしまう。上層部がみんなビジネスのことしか考えていなかったら、技術者は付いてきません。そういう意味で、CTOが「技術者にとっての社長」としての役割を果たすべきなのです。

特化

技術者は自分にとって最適な仕事を見つけるべきです。よく、プログラマからシステムエンジニアになって、そのあとプロジェクトマネージャになって……というキャリアパスが示されますが、わたしはそういう考え方は嫌いです。だって、プログラマとプロジェクトマネージャって、全然違う仕事ですよ。プログラマは機械相手、プロジェクトマネージャは人間相手で、そもそも向く方向すら違う。適性だって異なります。向いている方に専念した方がいい。これは私見ですが、プログラマとしての才能がある人がプロジェクトマネージャをやると、「プログラマの才能がマイナスに働く」ことすらあると思います。プロジェクトマネージャは大局からものを見なければいけないのだけれど、プログラマとしての才能にあふれている人は、細かい部分を見てしまいがちです。やはり、どちらかに特化した方がいい。

 「餅は餅屋」です。プログラマなりプロジェクトマネージャなり、自分に向いている部分に特化した方がいい。ましてや、技術者にビジネスセンスを求めるなんて馬鹿げています。

#ie

現象

まず画像を見てみましょう。

最初の二つ白い背景のエリアに注目してください。

一番目は背景色を白い色(#FFFFFF)に設定したもので、

二番目が背景色をnullに設定したものです。

白い色に明確に設定したほうのborderの左と上の表示が少し違ってます。


またIE8の開発ツール(F12で呼ばれる、Firebugと似たデバッグツール)で見ても

background-colorが#ffffffになってる以外に、何の余計なスタイルもありませんでした。

なのでやはりbackground-colorが指定してないものと#ffffffに指定したものには差異が存在してます。


サンプルコード

<div>
<input id="foo" type="text" />
<input id="bar" type="text" />
</div>
<div>
<input id="hoge" class="gray" type="text" />
<input class="gray" type="text" />
</div>
$(document).ready(function(){
  // 元の背景色を保持
  var original = $("#foo").css("background-color");
  alert(original);	// output is "ffffff"
  // 元の背景色を再設定、値は同じはず
  $("#foo").css("background-color",original);
  // 他の背景色はこんな現象がないみたい
  // あるとしても発見しづらい
  var hogeColor = $("#hoge").css("background-color");
  alert(hogeColor);	// output is "gray"
  $("#hoge").css("background-color",hogeColor);
});
#php apache

Apache

ダウンロード&インストール
  • Welcome! - The Apache HTTP Server Projectから最新版を入手
  • インストールファイルを実行、下記2点注意すればOK
  • [Network Domain]と[Server Name]のところはlocalhostと記入
  • [Custom]インストールでインストール先が指定できる
設定

[Apache Home]\conf\httpd.confを開いて下記のパスを自分の環境にあわせて

設定してください。このパスはサーバが立ち上がった際のrootとして使います。

  • DocumentRoot "D:/www"
  • <Directory "D:/www">

PHP

  • PHP: Downloadsから入手
    • Windows BinariesからPHP 5.2.11 zip packageをダウンロード

拡張子がMSIのinstaller版もあるが、マニュアルでのインストールがすすめられる

  • zipファイルを適当な場所に解凍。今回はd:\phpに。
  • Windowsの環境変数pathに設定
  • コマンドプロンプトで下記コマンドでインストール成功かを確認

php -v

php.ini

  • php.ini-recommendedをphp.iniにリネーム
  • doc_rootを検索し内容を編集

doc_root = d:\www

Apacheサーバと同じルート(httpd.confの DocumentRoot)

ApacheサーバとPHPの連携

httpd.confの修正

LoadModule php5_module d:/php/php5apache2_2.dll

AddType application/x-httpd-php .php

PHPIniDir "d:/php"

ディレクトリは自分の環境に合わせて修正してください。


動作確認

d:/phpにtest.phpというファイルを作ります。内容は下記になります。

注意!!は動かない!

Apacheサーバを再起動し、http://localhost/test.phpを叩いてPHPのページが表示されればOKです。

参考サイト

Apache2 + PHP5をWindowsXPにインストール

php.iniの配置場所の指定(PHPIniDir) - PHP利用のための設定 - Apache入門

#flash

gihyoサイトの「ここが危ない!Web2.0のセキュリティ」連載の第4回:「Flash,JSONでのクロスドメインアクセス」の勉強メモです。

Flashのクロスドメインアクセス

動作原理

データ提供側で認証のファイルを設置するだけです。 ファイル名は「crossdomain.xml」で、これが例なのかこう書かなければならないのかは明確に書いてません。

<cross-domain-policy>
  <allow-access-from domain="www.securesky-tech.com" />
</cross-domain-policy>

JSONでも実はクロスドメインアクセスが可能

動作原理

eval()関数でデータを評価するだけで使用可能になる

var obj = eval("("+req.responseText+")");

クロスドメインの実現

setterメソッドをサポートしているブラウザ(FirefoxやSafari 3等)では,setterメソッドを再定義することによって,JSONもSCRIPTタグで呼び出して使うことが可能になる。

<html>
  <script>
    Object.prototype.__defineSetter__('name', function(x){sendtoAttacker(x);});
  </script>
  <script src="http://www.securesky-tech.com/object.dat">
  </script>
</html>
#webservice

gihyoサイトの「ここが危ない!Web2.0のセキュリティ」連載の第2回:「Same-Originポリシーと迂回技術」の勉強メモです。

定義

他のドメインのサイトへはリクエストを送信できない制限のことをSame-Originポリシーと呼びます。同じドメインであってもポート番号やプロトコル(HTTPとHTTPSなど)が異なれば,異なるサイト(クロスドメイン)とみなされアクセスできません。クロスドメインアクセスは機能として実装されていないのではなく,セキュリティ上の理由から禁止されているそうです。

必要性

俺があの黒の攻撃者とし、攻撃目標がユーザのメールアカウント情報だとします。もしクロスドメインにアクセスする制限がなければ、事前に用意したスクリプトで(urlをメールサーバに設定)メールアカウントの情報が取得できるようになってしまいます。(この辺りはCookieの話が出てきます)

ウェブの基本ルール

Ajaxだけではなく、フレームやサブウインドウの情報にアクセスする場合などにも存在する

クロスドメインでデータを取得する方法

* リバースPorxy

* SCRIPTタグ(JSONP)

* Flash

* 画像

* スタイルシート

リバースProxy

データ提供サーバにとってユーザの身元は隠れているため、攻撃者に利用しやすい

ユーザの身元を確認しようとすると、ユーザ情報を扱わなければならない

ユーザ情報-->サーバ-->データ提供サーバ