_onichannn

【AngularJS】textarea内のカーソル位置を習得する。

便利なディレクティブをみつけたのでペタリ。

https://github.com/eirikb/angular-caret

 

【MySQL】でFULL ONTER JOINしたい場合。

MySQLでは完全外部結合(FULL OUTER JOIN)に対応していないので、
LEFT JOINとRIGHT JOINの結果をUNIONしてやることで再現してやる。

select * from table1 left join table2 on table1.id = table2.id
union
select * from table1 right join table2 on table1.id = table2.id

といった具合。

 

【MacBookAir】バッテーリーが充電されない、ACアダプタが反応しないといった問題に遭遇したら。

SMC(システム管理コントローラ) のリセットを行うと幸せになれる場合がある。

1, PCの電源を落とす。

2, 電源アダプタを接続する。

3, 内蔵キーボードの左側にある「shift-control-option」キーを押しながら電源ボタンを押す。

4, すべてのキーと電源ボタンを同時に放す。

5, 電源を入れる。

この際電源アダプタのLEDの状態が変わったり、一時的に消灯するといった現象が見られれば恐らく成功。

自分の場合この手順で充電できなくなったMacBookAirが復活したので、同様の現象で困ってる人は是非お試しあれ。

 

【Symfony2.3】StofDoctrineExtensionsBundleのSoftdeleteableとJMSSerializerを併せて用いている場合の注意。

結構ハマったのでメモ。

例えばニュースとカテゴリがMany-to-Oneで紐付いていたとする。(ニュースは一つのカテゴリを持つ)
この場合、ニューステーブルにカテゴリIDを保持するが、紐付いているカテゴリが論理削除済みであると、シリアライズ時に解決できないエラーに遭遇してしまうことが判明。

カテゴリを作成した後、そのカテゴリを紐付けてニュースを作成。その後紐付けていたカテゴリ自体を論理削除すると、ニューステーブルにはカテゴリIDが残ったままになる。
この状態でニュースエンティティをシリアライズしようとするとEntityNotFoundExceptionが発生し、処理が止まってしまう。
当然といえば当然だが、無ければ無いでnullをセットしておいて欲しいものである。

下記サイトのやりとりを見て判明。

https://github.com/schmittjoh/serializer/issues/101

 

【Javascript】String.indexOf()メソッドで大文字、小文字を区別せずに処理させる。

indexOf()を実行する前にString.toLowerCase()を挟んでやれば解決。

if ('LOL'.toLowerCase().indexOf('lol') === -1) {
    // do something
}

 

【Javascript】スネークケースをキャメルケースに変換する。

メモ。

var str = 'hoge_fuga_piyo';
var camel = str.replace(/_./g, function(matched) {
    return matched.charAt(1).toUpperCase();
});

console.log(camel);

 

【PHP】名前空間とクラスの動的にロードに関する注意点。

例えば名前空間を用いたクラス内から、名前空間が設定されているクラスのインスタンスを動的に生成したい場合、
生成するクラスまでのパスを名前空間を含めてフルパスで指定してやらないとエラーになってしまう。

例)

$className = 'Hoge';

// エラー
new $className();

$nameSpace = '\\Huga\\Piyo\\';

$className = $nameSpace.'Hoge';

// OK
new $className();

と言った感じ。

 

【AngularJS】で空の配列を判定したい場合。

例えばビューのng-showとかng-hideとかで。

<div ng-hide="!!array.length">配列が空の場合現れる</div>
<div ng-show="!!!array.length">配列が空の場合現れる</div>

配列のlengthプロパティを参照してやればOK。