脳みそスワップアウト

揮発性なもので。おもにPHPのこととか。

Windows版php-7.1 で UTF8 の CSV をパースする

Windows版PHP(xampp) の fgetcsv() が、php-5.6 と php-7.1 で挙動が変わったことがわかった。 たぶん php-7.0 から。

Berkeley DB

Key Value型の組み込みDBの元祖。 トランザクションやレプリケーション、SQLなどが使えるバージョンもあるが、 最もシンプルな使い方をするには以下の2つを覚えておけばよい。 たとえば vsftpd では vuser をこれで管理したりしている。(pam_userdb) DBファ…

テーブル、DBの容量

テーブル SELECT table_name "Table", engine, table_rows "Table Rows", ( data_length + index_length ) / 1024 / 1024 / 1024 "Total (GB)", ( data_length ) / 1024 / 1024 / 1024 "Data (GB)", ( index_length ) / 1024 / 1024 / 1024 "Index (GB)", ( …

リモートでkillall

C:\apps\tsence>taskkill /S 192.168.1.103 /IM firefox.exe gray\pen のパスワードを入力してください:******** 成功: プロセス "firefox.exe" (PID 2620) は強制終了されました。 もしくは SysinternalSuite を使って c:\Apps\SysinternalSuite>PsExec.exe…

LibreOffice Calc でCSVを編集する際のメモ

起動 CSVファイルをD&D フィールドの左上をクリック→テキスト。読み込むときの型の指定になる。 Ctrl+A 右クリック→セルの書式設定→テキスト 書き込むときの型の指定になる。 改行コードはプラットフォーム依存で、変更はできない模様・・。 WindowsならCRLF…

TLSバージョンを指定して接続確認

会社のiOSアプリ開発チームより、 ガラケー対応の外部の古いウェブサイトにアプリからHTTPS接続できないとのこと。 詳しく聞いてみると、iOSのバージョン10未満で発生していて、 TLS1.2 → 1.1 → 1.0 のfallbackする箇所がうまく動いてなさそうに見える。 対…

WindowsのMarkdownエディタ

しばらくろくなものが存在しなかったWindows用のMarkdownエディタだけど、 最近は選択肢も増えてきたのでメモ。 自分で書くときは テキストエディタ + MarkCat、 他人のを読むときは Firefox か Typora を使っている。

.vbox が消えた

.vbox が消えて、VMを起動できなくなった。 .vbox-prev と vbox-tmp という2つのファイルがあった。 内容は の lastStateChange が、prevの方が古いだけで他は一緒だった。 これを .vbox にリネームしたら起動した。

m4a を mp3 に変換

iPhone のボイスメモで録音したものを共有するときなど。 ffmpeg -i input.m4a -ab 192k output.mp3

composerでローカルディスクのgitリポジトリを使う

repositories でディレクトリを指定すればよい。 Bareリポジトリじゃなくて大丈夫。 バージョンは、ブランチ名-dev を指定する。 指定したディレクトリ直下の composer.json の name が、require した名前と合致していればいい。 composer.json { "repositor…

DmImage の 回転/反転 フィルタ

画像処理の DmImage というライブラリがある。 gd のラッパで、なかなか使いやすいので現在のプロジェクトに導入している。 携帯からの画像アップロードの要件が加わり、Exif の Orientation に基づく 回転/反転 処理が必要になった。 この機能は DmImage に…

null を 空文字にしたい

js

そんな時、みんなどうやっているのだろうか。 たとえば WebAPI から JSON で何らかのデータを取得して、 HTMLを描画しようと innerText を使うと値が null だった場合に "null" と表示されてしまう。 JSは経験が少なくてプラクティスがわからない。 /** * nu…

オブジェクトのフィールドをループする

js

var obj = {foo:"HOGE", bar:"FUGA"}; Object.keys(obj).forEach(function(v, i){ console.log(i + " " + v + " = " + obj[v]); }); prototype は辿らない。 大抵の場合はこれ。

slow_log 関連

オンライン変更の時にいつも忘れるのでメモ set global slow_query_log_file='/var/log/mysqld/slow_query.log'; set global long_query_time=0.1; set global slow_query_log=1; show global variables LIKE '%long%'; show global variables LIKE '%slow%';

openssl でサーバ証明書もろもろ

先日 GlobalSign で証明書を取得したところ、x509 と PKCS7 の両方の形式で証明書が送られてきて、 x509 の場合はさらに中間証明書をこのウェブページから探してねと書かれていて、 どれがどれやらよくわからず探すのが面倒だった。 openssl を使って、PKCS7…

paco が porg に

paco が porg に変わってた。 正確には後継プロジェクトらしい。 http://paco.sourceforge.net/ → http://porg.sourceforge.net/ configure の --disable-gpaco は --disable-grop に。 make logme は無くなっている。 -a, -lD make install, -lp xxx make i…

Windows10のセーフモードは厄介

Windows10のお試し中なのだけど、 Win7で使っていた常駐ソフトがWin10では動かないようで、起動後1分くらいでフリーズしてしまう。 こんな時、従来ならセーフモードで起動して、 問題となるソフトのアンインストールもしくはサービスの自動起動停止をしてい…

php5 + JSON-C では JSON_BIGINT_AS_STRING が効かない

phpには、JSONを扱うためのjson拡張が同梱されている。(ext-json(JSON_parser)) しかしこのソース中の以下の一文が問題で、各種Linuxディストリで配布できないことになっている。 ext/json/JSON_parser.c The Software shall be used for Good, not Evil. Bu…

浮動小数点は安全じゃない

php

浮動小数点数は誤差が出て安全じゃないから、重要な計算の時は使っちゃいけないよという話。 PHP に限った話ではなく、コンピュータ全般。 若手エンジニアからこんな質問がきた。 「5761800 を 小数切り捨てしたら 5761799 になっちゃった!」

リダイレクトは絶対URI?

RFCによると、絶対URIらしい RFC2616 (HTTP/1.1) で、 「HTTPのリダイレクトレスポンスでは、Location は絶対URI(absoluteURI)で書かなければならない」 というのが定められているけど、これはあんまり守っていない。

BASEトランザクションとCAP定理

BASEトランザクションとCAP定理 クラウドや分散システムで使われる用語 BASEトランザクションとは Basically Available 可用性が高く常に利用できることを重視。 楽観ロックやキュー。 Soft State あるノードの状態はその内部に埋め込まれた情報によって決ま…

ブライスの法則 (Bryce)

Good Systems Design + Good Programming = Great Systems Good Systems Design + Bad Programming = Good Systems Bad Systems Design + Good Programming = Bad Systems Bad Systems Design + Bad Programming = Chaos

メトリクス

oop

継承 ANDC 直接の子孫の平均数 AHH 継承ツリーの平均の深さ サイズと複雑度 NOP パッケージ数 NOC クラス数 NOM メソッド数 LOC コード行数 結合度 CYCLO 循環的複雑度 CALL メソッド当たりの呼び出し数 FONOUT ある特定のメソッドが呼び出す他のメソッド数

STUPID

良くないコードの兆候 Singleton (シングルトン) ※古典的なパターン Tight Coupling (密結合) Untestability (テスト不能) Premature Optimization (時期尚早な最適化) Indescriptive Naming (説明的ではない名前) Duplication (重複)

illuminate/database

私の携わったプロジェクトではORMが採用されないケースが多い。 メリットデメリットともにあるし、向き不向きもあるし、アレルギーを持ってる人がいたりするし、論争に興味もないのでそれ自体はいいのだけど、 たとえORMを使わない場合でも、クエリビルダだ…

リモートデバッグ開始のブックマークレット

xdebug + phpstorm で、リモートデバッグを開始するためのブックマークレット。 開始 javascript:(/**%20@version%200.5.2%20*/function()%20{document.cookie='XDEBUG_SESSION='+'PHPSTORM'+';path=/;';})() 終了(XDEBUG_SESSIONというクッキーを消してもい…

behatでラジオボタン選択

Minkにはどういうわけかラジオボタンのタスク(?)がない。 (behat-3.0.15, mink-1.7.0) 自分で作る必要がある。 作ってみた。英語は怪しい。

ウィンドウが画面外に出た場合

Alt+Space → M → カーソル or マウスぐりぐり

PhpStormランチャ

PhpStormから実行するスクリプトが環境変数を期待している場合、 PhpStormを起動するシェルで環境変数を設定する必要がある。 そして大抵それはプロジェクトごとに固有のものだったりする。 PHPバイナリだったり、BEHAT_PARAMS だったり。 環境変数を設定し…

PhpStormから日本語behat

Windows7 + PhpStorm-8.0.3 + behat-3.0.15 Behatを使い始めた。 多言語に対応していない PhpStorm(8, 9, 10) は、Behatの多言語に対応していない。 英語以外のステップは補完できないし、IDEからテストの実行すらできない。 2014-05-15 に issue が上がって…