ウィンドウ>設定>一般>JStyleで「改行」のチェックを外す。
月別アーカイブ: 2010年9月
eclipseでコードヒントを出す
ctrl + space
Google Chrome Exctensionを開発してみた
PEARのインストールディレクトリを一時的に変える
時にはプロジェクトのディレクトリにPEARを配置したい時だってある。
■準備
以下のコマンドを実行し、現在のインストールディレクトリを確認してメモる。
pear config-get php_dir C:\xampp\php\PEAR
■実行
以下のコマンドを実行し、ディレクトリを変更する。
pear config-set php_dir [インストールしたいディレクトリ]
いろいろ作業が終わったら、以下のコマンドで元のディレクトリに戻す。
pear config-set php_dir /usr/local/lib/php
おまけ
以下のようにしてもファイルをダウンロードできるが、場合によってはゴミファイルがいっぱいついてくる。
pear install -R [dir] [package]
Windows環境のxamppでmb_send_mailを使えるようにする
php.iniを編集する。
SMTP = localhost sendmail_from = postmaster@localhost
保存したらxamppコントロールパネルで、apacheを再起動しMercuryを起動する。
mysqliを使ってPHPでMySQLにSSLで接続する
MySQLサーバがクライアントとは別のコンピュータにある場合、ネットワークを平文で流れるデータを途中でキャプチャされる可能性がある。そこでSSL接続することにする。
■ソース
以下のように、リソースを生成後にmysqli_ssl_setでSSLをセットしてから、mysqli_real_connectを使って接続する。
$dbh = mysqli_init(); $isSSL = @ mysqli_ssl_set( $dbh, '/home/ssl/key.pem', null, null, null, null ); $isConnected = @ mysqli_real_connect( $dbh, DB_HOST, DB_USER, DB_PASS, DB_NAME, DB_PORT, null, MYSQLI_CLIENT_SSL );
CentOSのポートを開く(ファイアーウォールの設定)
WebSocketsに触ってみる
WebSocketsでWebアプリケーションは次の段階を迎える。node.jsと共に触ってみる。((((o゚▽゚)o)))
■準備
npmをインストールする
node.jsのパッケージ管理システムである。
curl http://npmjs.org/install.sh | sh
node-websocket-serverをインストールする
WebSocketsに適した感じのサーバだ。
npm install http://github.com/miksago/node-websocket-server/tarball/master
expressをインストールする
node.jsのフレームワークとでもいうんだろうか。
npm install http://github.com/visionmedia/express/tarball/master
■サーバー側(server.js)
サーバーを作る。→各種イベントをセットアップする。→特にデータが来たらブロードキャストする。といった流れ。
var sys = require('sys'); var ws = require('websocket-server'); var express = require('express'); var app = express.createServer(); var coord = []; // set up the websokets server app.configure(function(){ app.use(express.staticProvider(__dirname + '/public'));// 公開ディレクトリをセットアップ }); var server = ws.createServer({"server" : app}); // set up the events of server server.addListener( 'listening', function(){ sys.log('listening'); } ); server.addListener( 'connection', function(conn){ sys.log('connection'); if(coord.length > 0){// 最初の接続で最後の位置をクライアントに反映させる conn.send(coord[coord.length - 1]); } conn.addListener( 'message', function(message){ coord.push(message); server.broadcast(message); } ); } ); server.addListener( 'close', function(conn){ sys.log('close'); } ); server.listen(80);
■クライアント側(/public/client.js)
ドラッグ&ドロップで座標を送信する感じ。データが飛んできたら逆に座標をセットする感じ。ちなみにGoogle Chromeでしか動作テストはしてない。
$(function(){ var conn = new WebSocket("ws://192.168.11.3/"); conn.onmessage = function(e){// データが飛んできた時 var data = JSON.parse(e.data); $('p#box').css({ "left" : data['left'], "top" : data['top'] }); } $('p#box').draggable({ "cursor" : "pointer", "drag" : function(e, ui){// ドラッグした時 if(conn){ conn.send(JSON.stringify(ui.position)); } } }); });
html(/public/index.html)
まぁコンナ感じ。logo.pngにはchromiumのロゴを使用させていただいた。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>title</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.7.3/jquery-ui.min.js"></script> <script type="text/javascript" src="client.js"></script> </head> <body> <p id="box"><img src="./img/logo.png" /></p> </body> </html>
■完成
サーバーを起動。
node server.js
キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
片方を動かすともう片方に反映される!
node.jsを触ってみる
既に開いてるポートを使いたいので、apacheを止めて80番のポートを使用し実験する。
/etc/init.d/httpd stop
以下のコードを使用する。オフィシャルサイトに載ってるのをちょっと改造しただけのもの。(・・。)ゞ
var http = require('http'); http.createServer(function(req, res){ res.writeHead(200, {"Content-Type": "text/plain"}); res.end('Hello World\n'); }).listen(80, "192.168.11.3"); console.log('Server running at http://192.168.11.3:80/');
node sample.js
ブラウザで(http://192.168.11.3/)アクセスしてみる。
Hello World
ひゃー。通じる喜び。シンプルな素晴らしさ。ヾ(@^▽^@)ノあー素敵。
PHPとcurlでOAuthしてみる
Zendでもできるがベタに書いてみる。
<?php $url = 'http://example.org/'; $consumer_key = '1235694568147893b0123b15'; $consumer_secret = '663333123263456c8d789f58'; $version = '1.0'; $signature_method = 'HMAC-SHA1'; $timestamp = time(); $nonce = (string)rand(); $realm = 'realm'; $request_body = array('hello' => 'world'); $body_hash = urlencode(base64_encode(hash('SHA1', $request_body, true))); $auth_header = sprintf( 'OAuth realm="%s",oauth_body_hash="%s",oauth_consumer_key="%s",oauth_version="%s",oauth_timestamp="%d",oauth_nonce="%s",oauth_signature_method="%s",oauth_signature="%s', $realm, $body_hash, $consumer_key, $version, $timestamp, $nonce, $signature_method, urlencode( base64_encode( hash_hmac( 'SHA1', 'POST&' . urlencode($url) . '&' . urlencode( "oauth_body_hash={$body_hash}&oauth_consumer_key={$consumer_key}&oauth_nonce={$nonce}&oauth_signature_method={$signature_method}&oauth_timestamp={$timestamp}&oauth_version=$version" ), $consumer_secret . '&', true ) ) ) ); $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $request_body); curl_setopt( $ch, CURLOPT_HTTPHEADER, array( "Authorization: {$auth_header}" ) ); $result = curl_exec($ch); curl_close($ch);
こんな感じ。