サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
今年の「#文学」
blog.sarabande.jp
まずは GET リクエストを送信してみよう。 require 'faraday' res = Faraday.get 'http://httpbin.org/get' puts res.body レスポンスが JSON の場合、ミドルウェアを使う。 require 'faraday' require 'faraday_middleware' client = Faraday.new 'http://httpbin.org' do |b| b.response :json, :content_type => /\bjson$/ b.adapter Faraday.default_adapter end res = client.get 'get' puts res.body['headers']['User-Agent'] 次は POST リクエストを送信してみよう。 require 'fa
WordPress: WP Mail SMTP を導入して Gmail からメールを送信するWordPress: Contact Form 7 で WebPay の課金リクエストを送信するWordPress: Contact Form 7 のフィールドから値を得るWordPress: Contact Form 7 のフィールドで注文金額を計算するWordPress: Contact Form 7 の複数のフィールドの注文金額を計算する 複数のフィールドから注文金額を集計する方法について問い合わせがあったので記事を書くことにした。例題としてりんごとバナナの注文金額を計算してみよう。 りんご <br/> 価格 <br/> [number price1 readonly "120"] <br/> 個数 <br/> [number amount1 min:0 "0"] <br/> 合計金額 <br
Golang: HTML の特殊文字をエスケープするGolang: テンプレートを使うGolang: JSON を扱うGolang: bcrypt を使ってパスワードハッシュを生成するGolang: 文字列を base64 にエンコードするGolang: 疑似乱数の文字列を生成する bcrypt パッケージを導入。ハッシュを比較する場合、タイミング攻撃対策のために CompareHashAndPassword を使う。実装には subtle パッケージの ConstantTimeCompare が使われている。 package main import ( "code.google.com/p/go.crypto/bcrypt" ) func main() { password := []byte("MyPassword") cost := 10 hash, _ := bcrypt.Gene
NSURLSession を使って GET リクエストを送信してみよう。コマンドラインアプリの場合、NSRunLoop を実行する必要がある。プレイグラウンドの場合、XCPlayground をインポートした上で、XCPSetExecutionShouldContinueIndefinitely() を呼び出す。 import Foundation var url = NSURL(string: "http://localhost/") var waiting = true var task = NSURLSession.sharedSession().dataTaskWithURL(url) {(data, response, error) in println(NSString(data: data, encoding: NSUTF8StringEncoding)) waiting =
Python: HTTP サーバーをつくるPython: JSON を返す HTTP サーバーをつくるPython: socket モジュールを使って JSON を返す HTTPS サーバーをつくる ソケットの学習のために書いた。SSL への対応は ssl モジュールの wrap_socket でソケットオブジェクトをつつめばよい。 import socket import ssl import json address = '127.0.0.1' port = 8000 socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) socket = ssl.wrap_socket(socket, certfile='cert.pem', server_side=True) socket.bind((address, port)) s
追記。Github にコードをアップロードしました (gen-compose)。 koajs の compose を参考に、複数のジェネレーターを1つにまとめてみた。 function compose(...$middleware) { return function ($next) use ($middleware) { if (!$next) { $next = noop(); } $i = count($middleware); while ($i--) { $next = $middleware[$i]($next)->next(); } yield $next; }; } function noop() { yield; } $one = function ($next) { yield $next; echo 'test', PHP_EOL; }; $two = functio
normalizer_normalize を使って Unicode 正規化を行うtransliterator_transliterate を使って Unicode エスケープシーケンスを文字に変換するPHP: Collator を使って文字列の照合を行うPHP: IntlBreakIterator を使って文字数を求めるPHP: IntlBreakIterator を使って1文字単位でコールバックを適用する関数を定義するPHP: IntlCodePointBreakIterator を使ってコードポイントを求めるPHP: ResourceBundle を使って複数のロケールのメッセージを管理する2014年7月20日追記:「濁点」が「半濁点」に誤表記されていたのを修正しました。 2013年6月20日追記:Unicode 正規化によって全角記号が ASCII に変換されることで生み出される脆弱
/login.php にアクセスして /login-callback.php で認証して /account.php にリダイレクトする。アクセストークンの有効期限を延ばすために、getLongLivedAccessToken メソッドを使う。 リダイレクト後に #_=_ が URL の末尾に追加されてしまうバグの対応のために JavaScript のコードを追加した。ログインのフローに関して Facebook Login Flow & Best Practices の記事がとても参考になる。 JavaScript SDK との連携はこちらの記事を参照。 // composer.json { "require" : { "facebook/php-sdk-v4" : "~5.0" } } // init.php require 'vendor/autoload.php'; session_s
homebrew を使ってインストールできます。設定ファイルのパスは /usr/local/etc/h2o/h2o.conf で、ポート番号は8080になります。 brew install h2o ln -sfv /usr/local/opt/h2o/*.plist ~/Library/LaunchAgents launchctl load ~/Library/LaunchAgents/homebrew.mxcl.h2o.plist h2o 1.3 とそれ以降であれば、PHP-FPM が利用できます。/usr/local/etc/h2o/h2o.conf の例です。 file.custom-handler: extension: .php fastcgi.connect: host: 127.0.0.1 port: 9000 type: tcp listen: port: 8080 ssl
Java: HttpURLConnection を使って HTTP リクエストを送信するJava: OkHttp を使って HTTP リクエストを送信するJava: Async Http Client を使って HTTP リクエストを送信するJava: Apache HttpComponents を使って HTTP リクエストを送信する 決済サービスの Square が開発しており、SPDY をサポートする。 まずは GET リクエストを送信してみよう。 package myproject; import com.squareup.okhttp.OkHttpClient; import com.squareup.okhttp.Request; import com.squareup.okhttp.Response; import java.io.IOException; public cl
curl をインストール時に nghttp2 を有効にすれば、バージョン番号と一緒に表示される。 curl --version curl 7.40.0 (x86_64-apple-darwin14.1.0) libcurl/7.40.0 OpenSSL/1.0.1l zlib/1.2.5 nghttp2/0.6.6 Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp Features: IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP HTTP2 UnixSockets Mac OS X に homebrew で curl をインストールしたところ、brew link
Guzzle 5 で Promise による非同期通信がサポートされるようになった。Composer によるセットアップは次のとおり。 composer require guzzlehttp/guzzle:* POST リクエストを送信してみよう。 require 'vendor/autoload.php'; $client = new GuzzleHttp\Client(); $client ->post( 'http://httpbin.org/post', [ 'future' => true, 'body' => 'foo=bar' ] ) ->then(function ($response) { var_dump( $response->getStatusCode(), $response->getHeader('Content-Type'), (string) $respon
Nginx や Apache などの HTTP サーバーを利用せずに FastCGI プロトコルで通信するためのライブラリがいくつか公開されている。adoy/fastcgi-client を試してみよう。Composer によるインストールは次のとおり。 composer require adoy/fastcgi-client:dev-master クライアントとサーバーのコードを書いてみよう。 // client.php require 'vendor/autoload.php'; use Adoy\FastCGI\Client; $client = new Client('localhost', '9000'); $content = 'foo=bar'; echo $client->request([ 'GATEWAY_INTERFACE' => 'FastCGI/1.0', 'RE
Node.js: GET リクエストを行うExpress: POST リクエストを処理するNode.js: request モジュールを使って GET リクエストを行うNode.js: request モジュールを使って POST リクエストを行うNode.js: superagent モジュールを使って GET、POST リクエストを行うNode.js: Restler を使って GET、POST リクエストを行うNode.js: connect を使って http サーバーを立ち上げる http.get メソッドを使えば、サーバーに GET リクエストを行うことができる。JSON を GET してみよう。 var http = require('http'); var url = 'http://localhost:9000/'; http.get(url, function(res)
筆者の自作プラグインを紹介する。このプラグインを導入すれば、ショートコード (例: [webpay amount=1000]) を埋め込むことでクレジットカードによる決済フォームを各ページで使えるようになる。会費や寄付金、ショッピングカードを導入するまでもない少数の商品の販売などの用途を想定している。先行事例として Stripe の決済フォームを導入するプラグインが挙げられる。 記事を書いた時点(2014年8月7日時点)で、このプラグインは試作品段階なので、今後大きく仕様やコードが変更される予定である。まずは定期購読にも対応させたい。開発に協力して下さる方も絶賛募集中である。 プラグインの導入方法を説明する。まずは Github のリポジトリからプラグインのコードをダウンロードしよう。Github のページの右下にある「Download ZIP」をクリックするか、次の git コマンドをコ
JavaScript: サロゲートペアと不正なバイト列を考慮して文字列の長さを求めるJavaScript: String.prototype.codePointAt を定義するJavaScript: String.fromCodePoint を定義するJavaScript: 孤立したサロゲートを考慮してコードポイントから文字列を生成する JavaScript: for…of 構文を使ってコードポイント単位で文字にアクセスするJavaScript: 文字列を配列に変換するJavaScript: 文字列を逆順に並べ替えるJavaScript: サロゲートペアを考慮して部分文字列を求める サロゲートペアを考慮して1文字ずつ取得することを学んだので、次は部分文字列に取り組む。EcmaScript 6 の for…of 構文を使う場合、次のようになる。 if (!String.prototype.s
異体字セレクターのコードポイントは U+E0100 から U+E01EF の範囲にあり、基底文字との組み合わせはユニコードコンソーシアムのデータベースで公開されている。記事の読みやすさを考慮して、コードに記載した異体字セレクターの組み合わせはテストケースに必要なものだけにした。 if (!String.prototype.getIvsLength) { String.prototype.getIvsLength = function() { var ret = 0; var length = this.getFullLength(); var db = { 0x845B: [ 0xE0100, 0xE0101, 0xE0102, 0xE0103, 0xE0104, 0xE0105, 0xE0106, 0xE0107, 0xE0108, 0xE0109 ] }; for (var index
Golang: HTTP リクエストを送信するGolang: HTTP サーバーをつくる まずは GET リクエストをやってみよう。 package main import ( "net/http" "io/ioutil" ) func main() { response, _ := http.Get("http://httpbin.org/get") body, _ := ioutil.ReadAll(response.Body) defer response.Body.Close() println(string(body)) } Cookie やヘッダーを指定したいのであれば、http.NewRequest を使う。Basic 認証のユーザーとパスワードは SetBasicAuth を使って指定できる。 package main import ( "net/http" "net/ht
コードを書く練習において、データベースを使う代わりに JSON をファイルに保存する方法を選ぶことができる。 var fs = require('fs'); var file = 'test.txt'; fs.writeFile(file, JSON.stringify({ 'foo': 'bar'})); fs.readFile(file, 'utf8', function (err, data) { console.log(JSON.parse(data)); }); atm09td reblogged this from act2012bl
Golang: HTTP リクエストを送信するGolang: HTTP サーバーをつくる net/http パッケージを使う。 package main import ( "net/http" "log" ) func rootHandler(w http.ResponseWriter, r *http.Request) { w.WriteHeader(200) w.Header().Set("Content-Type", "text/html; charset=utf8") w.Write([]byte("こんにちは")) } func main() { http.HandleFunc("/", rootHandler) log.Fatal(http.ListenAndServe(":3000", nil)) } HTTP サーバーを起動させながら、ファイルの修正を検出してオートロードさ
PHP 5.5 でパスワードハッシュ関数が導入されるPHP: パスワードハッシュライブラリのコードスニペットPHP: PBKDF2 を使ってパスワードハッシュを生成するPHP: 疑似乱数の文字列を生成するPHP: openssl_random_pseudo_bytes で疑似乱数を生成するPHP: openssl_random_pseudo_bytes と mcrypt_create_iv の比較PHP: フォームに CSRF 対策のトークンを導入するPHP: フォームに CSRF 対策のトークンを導入する (その2)JavaScript: CSRF 対策のトークンヘッダーを送信する CSRF 対策の方法として、リクエスト送信に際に送られてくるトークンをチェックするやり方が主要な Web フレームワークで広く採用されている。トークンは暗号論的擬似乱数生成器で生成する。ここで、フォームの h
Mountaion Lion で Apache を起動させるMac OSX: defaults コマンドを使ってあらかじめインストールされている Apache が自動起動しないようにするMac OS X の Apache で自己証明書をセットアップするMac OSX: Apache 2.4 と php-fpm を利用するMac OSX: homebrew を使って nginx と php-fpm をインストールするUbuntu 12.04 LTS に nginx 1.2 と PHP 5.4 の FPM を導入する自己証明書で nginx の SSL 設定を練習するRapidSSL 発行の SSL 証明書を nginx に導入Mac OSX: homebrew を使って MySQL を導入するMac OSX: Postfix を使ってメールを送信するMac OSX: PHP のセッションを
公式リポジトリを利用する。Ubuntu 14.04 の場合、次のとおり。 #https://github.com/facebook/hhvm/wiki/Prebuilt-packages-on-Ubuntu-14.04 wget -O - http://dl.hhvm.com/conf/hhvm.gpg.key | sudo apt-key add - echo deb http://dl.hhvm.com/ubuntu trusty main | sudo tee /etc/apt/sources.list.d/hhvm.list sudo apt-get update sudo apt-get install hhvm hhvm の fastcgi マネージャを使う場合、php5-fpm と同じ9000番のポートを使うので、php5-fpm のサービスを停止させるか ポート番号を変更す
Python: HTTP サーバーをつくるPython: JSON を返す HTTP サーバーをつくるPython: socket モジュールを使って JSON を返す HTTPS サーバーをつくる 静的なファイルに限定するのであれば、コマンドラインから HTTP サーバーを起動させることができる。 python3 -m http.server 80000 スクリプトで書くならマニュアルにサンプルコードが掲載されている。 from http.server import HTTPServer, SimpleHTTPRequestHandler host = 'localhost' port = 8000 httpd = HTTPServer((host, port), SimpleHTTPRequestHandler) print('serving at port', port) httpd
git リポジトリから入手した PHP のソースコードをコンパイルする際に bison 2.7.1 ではコンパイルできず、2.7 をインストールする必要があった。インストールできる古いバージョンのフォーミュラを調べるには versions コマンドを使う。以上は gist で公開されていたミニチュートリアルを参考にした。 brew versions bison 2.7.1 git checkout 804bcf6 /usr/local/Library/Formula/bison.rb 2.7 git checkout adf87c6 /usr/local/Library/Formula/bison.rb cd `brew --prefix` git checkout adf87c6 /usr/local/Library/Formula/bison.rb brew install bison
PHP: PCRE 関数の正規表現にコードポイントを指定するPHP: PCRE 関数で拡張書記素クラスターを扱うPHP: preg_match と preg_match_all のオフセットは負の値を指定できる コードポイントを指定する場合、\x{xxxx} という表記を使う。桁数は固定長ではなく、BMP 外の文字も指定できる。 $str = '𠮷野家のコピペ'; // 𠮷野家 $pattern = '/\x{20BB7}\x{91CE}\x{5BB6}/us'; var_dump( 1 === preg_match($pattern, $str) );
C++: 文字列の一部を取り出す (std::string)C++: Mac OSX で std::wcout を使ってワイド文字を表示させようとするとクラッシュするC++ : wchar_t、char32_t、char16_t 型の文字列の長さを求めるC++: std::wstring、std::u32string、std::u16string を1文字ずつ表示するC++: std::wstring、std::u32string、std::u16string と c_str メソッドの戻り値についてC++: 文字列を連結するC++: 文字列イテレーターのインデックスを求めるC++: UTF-8 の文字列を1文字ずつ表示する (std::string)C++: UTF-8 の文字列の長さを求める (std::string)C++: コードポイントから UTF-8 の文字を生成する (std
次のページ
このページを最初にブックマークしてみませんか?
『Sarabande.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く