Skip to content

Instantly share code, notes, and snippets.

View Leko's full-sized avatar
🏠
Working from home

Shingo Inoue Leko

🏠
Working from home
View GitHub Profile
@Leko
Leko / gist:7e7bd71b1d5d45966a7b
Last active August 29, 2015 14:06
音声入力と音声出力を一発で行うための関数(Chromeでのみ動作確認)
var RECORDER_LANG = 'ja-JP',
SPEAKER_LANG = 'ja-JP';
/**
* 音声入力を行う関数
* 入力のパース処理は冗長なので内側で処理して、コールバック関数にはパース後の結果を渡す
*
* @param function onResult 音声解析した結果を受け取って実行する関数
* @param function onError 音声入力中にエラーが有った場合に実行する関数
* @return void
@Leko
Leko / phpunit.xml
Last active August 29, 2015 14:07
PHPUnitの設定ファイルのスケルトン。testsというディレクトリ名でcloneして下さい。
<phpunit
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
forceCoversAnnotation="false"
printerClass="PHPUnit_TextUI_ResultPrinter"
stopOnError="true"
strict="true"
verbose="true">
@Leko
Leko / README.md
Last active August 29, 2015 14:08
Testemという複数ブラウザテストツールについての調査メモ

前置き

テストは完全な動作の保証をしてくれるものではなく、ある程度の品質担保の指標でしか無いので、
結局は実機での動作検証が必要になるので要注意。

Testemとは?

複数ブラウザでのテスト自動化するためのツール。
NodeJSで各ブラウザと通信して、テスト実行結果をCLI経由で閲覧することができる。
主要ブラウザはほぼ全て対応済み。

https://github.com/airportyh/testem

@Leko
Leko / demo.php
Last active August 29, 2015 14:10
PHPでCLIのプログレスバーを作るぞーうおー
<?php
$max = 100;
$progress = new \Cli\ProgressBar(STDOUT, $max);
for($i = 1; $i <= $max; $i++) {
$progress->current($i);
sleep(1);
}
$progress->done();
@Leko
Leko / book.php
Last active August 29, 2015 14:15
FuelPHPでMecabを使用して分かち書きするオブザーバ
<?php
class Model_Book extends \Orm\Model
{
const DROP_WORD_LENGTH = 2;
protected static $_properties = array(
'id',
'title',
'content',
@Leko
Leko / .gitignore
Last active August 29, 2015 14:16
結局PHPでCSVを扱う時は何を使えばいいのさ?
/vendor/
@Leko
Leko / deep-clone.js
Last active August 29, 2015 14:17
deep clone object/array mixed
function isArray(obj) {
var str = Object.prototype.toString.call(obj).slice(8, -1);
return (str === 'Array');
}
function deepClone(obj) {
var copy = isArray(obj) ? [] : {};
for(var p in obj) {
if(!obj.hasOwnProperty(p)) continue;
@Leko
Leko / backbone.collection.throttleRequest.js
Last active August 29, 2015 14:17
Backbone.jsのModelとCollectionで最大接続数を絞ってAjaxリクエストするスニペット。listenしてるイベント名やコールバックの反応のさせ方を変えれば他のライブラリにも適応可能かと。
var SomeCollection = Backbone.Collection.extend({
/**
* 同時リクエスト数を制限したリクエストを行う
*
* RESTに寄せて1個1個のモデルを更新する場合、一気に大量のAjaxが走ることになる。
* サーバ側の不可を考慮し、同時リクエスト数を絞ったAjaxリクエストを行う。
*
* 最初に同時リクエスト数分のリクエストを作成し、その後は1個1個の通信が完了するたびに1つずつ次の通信へ移る。
*
* 各モデルの保存が完了するごとに...といった処理は事前にイベントリスナを定義しておくこと。
@Leko
Leko / cli.php
Last active August 29, 2015 14:23
古いPHP向けのCLIオプションパーサ
<?php
class CLI {
/**
* CLIオプションを取得する
*
* PHPのgetopt関数はプラットフォーム依存であり、Macで正常動作しなかった。
* 動作環境に依らないオプションのパースをするには時前パースしか無かった。
* PHP5.1にも対応したライブラリがあればそちらを使うほうが懸命。
*
* ## オプションの仕様
@Leko
Leko / range-access.php
Last active August 29, 2015 14:23
PHPでもRubyみたいに..や...で範囲アクセスしたかった...おまけでインデックスの反転も実装しています。
<?php
class Ary implements \ArrayAccess
{
protected $list;
public function __construct(/* $args... */)
{
$this->list = func_get_args();
}