Hatena::ブログ(Diary)

イノベートな非日常 Twitter

2016-07-30

2016-07-29

Ruby on Rails 3.0入門

まず、ローカル環境を作る。

dockerで作りたいところだが、mysqlの連携等、docker-composeの設定ががめんどくさいので、vagrantで作る。

ruby単体とかのテストならdockerは便利だが、rorみたいなwebフレームワークとかの場合は、mysqlや、web serverが必要になって来るのでvagrantを使った方が楽かも。

cd vagrant
git clone https://github.com/rails/rails-dev-box.git
cd rails-dev-box
vagrant up

boxにrails入ってるわけじゃないので、インストール必要。

それで、あとはドットインストールを見ておけばいいんじゃね

  • 必要であればrubyも見ておく

2016-07-03

PHPでCLIかどうか判定する

関数でも判定できるが

php_sapi_name() === 'cli'

定数があるので普通はこっちを使う

PHP_SAPI === 'cli'

2016-07-02

php7 未定義変数のデフォルト値を設定

今までは三項演算子とisetを使って冗長だったのが

$key = isset($array['key'])?$array['key']:'default';

php7では

$key = $array['key'] ?? 'default';

に書ける。

さすがに面倒なので、今まではissetkeyみたいな関数作ってた。

参考 php 配列のキー取得いろいろ

2016-06-29

phpでarray_xxx系は使っちゃダメ

結論、現時点でarray_map系で匿名関数をコールバックするのは止めておけ

パフォーマンスが遅くて話にならん。非同期でストリーム処理とかもしないし。

ビックデータをarray_xxxで処理すると重いし、メモリ不足で死んじゃいます。

C#とか、まともな関数言語系だったら、非同期でストリーム処理してくれる筈。

phpは関数言語風に書けますという、なんちゃってコールバックの仕組みなのでだめぽ

altphp作るしか...。だったらphpである必要がねぇ....。

恐らく、tickerや、ストリーム関数あたりを使えば

phpでもおしゃれかつ、パフォーマンスの出る書き方ができると思うのだが、、、。

ライブラリを作るのは多分地獄

Uncaught Error: Syntax error, unrecognized expression: unsupported pseudo: visibleundefined

Uncaught Error: Syntax error, unrecognized expression: unsupported pseudo: visibleundefined

やたら長いスタックトレースが出るが、

未サポートの疑似要素が指定されている、、、

要はjqueryのselectorが間違っている

2016-06-19

local開発環境のphpmyadminの設定

自分のローカルの開発環境でブチブチセッションが切れるのはナンセンスなので、セッションタイムアウトを伸ばす。

※ 本番、インターネット接続環境で設定する場合はセキュリティ上のリスクが発生するので十分注意してください。

ini_set("session.gc_maxlifetime", 43200);
$cfg['LoginCookieValidity'] = 43200;

自分のローカルの開発環境でわざわざログインする必要もないので、自動でログインするように設定

※ 本番、インターネット接続環境で設定する場合はセキュリティ上のリスク...以下略

ini_set("session.gc_maxlifetime", 43200);
    //$cfg['Servers'][$i]['auth_type'] = 'cookie';
    $cfg['Servers'][$i]['auth_type'] = 'config';

参考

2016-06-02

javascriptで array[]= は「でできない

phpとか他の言語ではできるが、javascriptではできないので

素直にpush使うかconcatを使う

arr.push(val)

arr = arr.concat(val)

javascript 配列のmax min

Array.min

Array.max

あたりがあると思いきやない。

Math.max.apply(null, a);
Math.min.apply(null, a);

頻繁に使うならprototypeでメソッド生やしておいてもいいかも

Array.prototype.max = function(){
  return Math.max.apply(null, this);
}

Array.prototype.min = function(){
  return Math.min.apply(null, this);
}

nanやnullに対応しようとするとちょっとめんどくさい。

以下の記事のコメントにあったものをアロー関数で書いたらスマートかも

ただ、パフォーマンスはよくないかもだけど

Math.max.apply(null, list.filter(v =>
  isNumber(v) && !isNaN(v)
);
list.reduce((prev, curr) =>
  (((isNumber(prev) && !isNaN(prev)) ? prev : -Infinity) > ((isNumber(curr) && !isNaN(curr)) ? curr : -Infinity)) ? prev : curr
);