PHP in_arrayで、大文字小文字を区別しない

件名の通り。備忘録も兼ねている。

in_array(strtolower($needle), array_map('strtolower', $haystack));

$needleで、$haystackを検索する。
array_mapにより、haystackの中身を全て小文字に変換し、strtolowerで検索する文字列も小文字にする。
このため、大文字小文字を区別しない検索ができる。

PHP7から追加された機能について

PHP7から追加された機能について検証してみました。

以下では4項目のみ取り上げますが、もっと盛りだくさんの機能追加がされています。

1. "??"(null比較演算子)
与えられた左辺がnullの場合、右辺で定義した値を返す
たとえば、下記のような書き方をします。

$arr1['abc'] = 'def';
return $arr1['abc'] ?? false; // ptn1: $arr1['abc']は定義されているので、'def'が返る
return $arr2['abc'] ?? false; // ptn2: $arr2['abc']は定義されていないため、falseが返る

ptn2の場合は、isnullやissetを利用して通常確認するため
isnull、isset地獄から抜け出せる可能性大ですね。

2. "<=>"(組み合わせ比較演算子)
左辺が大きい場合に1、右辺が大きい場合に-1を返す)
例:

return 1 <=> 2 // -1
return 2 <=> 1 // 1


威力を発揮するのは、usort等でしょうか。
たとえばこんな感じの。

usort($array, function($a, $b) {
    return $a <=> $b;
});

「PHP7から追加された機能について」続きを読む

Apache2.4.18+PHP7.0.1+mod_mono3.12(仮)の環境を作る

PHP7の正式版が発表されてから2週間で、PHP7.0.1が出ましたね。

これは流行にのらねば。というわけで、Apache2.4.x+PHP7.0.1+mono(おまけ)の環境を作りたいと思います。

私が使っているのはDebian Stretchです。ですが、全てソースビルドするので、ライブラリがそろっていれば
CentやRedHat, SLinuxの方も同じ方法でできます。

ではいってみましょう。

「Apache2.4.18+PHP7.0.1+mod_mono3.12(仮)の環境を作る」続きを読む

モバイル向け開発の今と今後

お久しぶりでございます。

これからは、毎日1記事は更新していきたいと思います(思うだけかもしれません)

本日のトピックは、「モバイル向け開発の今と今後」です。

モバイル向けのアプリ(ゲーム含む)は、今非常に簡単な時代になりました。
VisualStudioでも書こうと思えばかけるし(Xamarin+Xcode必須ですが)
Android+iOS向けにC言語で書いてもいけるわけで。(と書いてる私はC言語はあまり得意ではありません)
また、俗に言うブラウザゲーであれば、専門の知識が無くても
HTML5が書ければ、なんとかなる。という。

そんな中、注目しているのが、

・Android: JAVA
・iOS: swift
・WindowsPhone: PowerApps

です。

「モバイル向け開発の今と今後」続きを読む

Windowsの共有フォルダをLinuxでマウントして使う

いっつもやり方忘れるのでメモ。

以下、SLinuxを前提
RHELもCentも同じ手順でいけるはず。

1. cifs-utilsのインストール
# yum -y install cifs-utils

2. マウント先フォルダの作成
# mkdir winshare

以下、マウントフォルダをwinshare、Windowsの共有フォルダをshareとする。

「Windowsの共有フォルダをLinuxでマウントして使う」続きを読む

spinlock, blocking lockをトイレに例える

「FreeBSDはもう時代遅れになります。」スレより。



506 :504 :04/01/27 11:27
>>505
で、Lock ContentionがLinux並になるのマダー?
503の話だと、開発者のマンパワーが同じだとして4年ちょっとだよね。

じつはもっと進んでる!というなら(2.3の後半とか?)あと何年かかるか予想できますか?

510 :500 :04/01/29 01:17
>>506
> で、Lock ContentionがLinux並になるのマダー?
基本はspinlockマンセーなLinuxと、極力blocking lockを使おうとしている
FreeBSD5では方向性が全然違うんで、
「Lock ContentionがLinux並になる」ってのはあまり意味のない比較だということを
あらかじめ念を押しておく。

で、FreeBSDのロックの細粒度化については以下の文書を見るといい。
ttp://www.freebsd.org/doc/en_US.ISO8859-1/articles/5-roadmap/major-issues.html#SMPNG
残っている大物というと、やはりVMとVFSまわり。
とはいえ、これも今年中にはほとんどGiant freeなところまで持っていけると
俺は思っている。



はい。もはや地球語ではないですね。
大雑把に説明すると、あるリソースが一つあるとき、一方が使っている間はもう一方が使えないようにするための構造のお話です。
わかりやすく説明すると、



512 名前: 名無しさん@お腹いっぱい。 [sage] 投稿日: 04/01/31 00:06
すまん 
spinlock 
やさしく説明してくれ。 

513 名前: 名無しさん@お腹いっぱい。 [sage] 投稿日: 04/01/31 00:48
>>512 
小便しに行って便器が全て使用中だった場合に便器の後ろで 
ウロウロするのがspinlock。大便しに行って、全ての個室が使用中で 
別の便所に移動するのがblocking lock。 
どちらを使うと得であるかは、待たされる時間がどの程度かによって異なる。 

514 :名無しさん@お腹いっぱい。 :04/01/31 01:33

>>513
非常にワロタ。

516 名前: 名無しさん@お腹いっぱい。 [sage] 投稿日: 04/01/31 13:39
>>513 
すまん 
想像力が働かず 
より一層わからん。 

517 名前: 名無しさん@お腹いっぱい。 [sage] 投稿日: 04/01/31 13:56
Linux: ウンコは家でするのが基本 
FreeBSD: ウロウロするのは「ダサい」 
Solaris: 便所は十分用意してある 

518 名前: 名無しさん@お腹いっぱい。 [sage] 投稿日: 04/01/31 14:03
吹き出したよ。なんとかしてくれ 

「spinlock, blocking lockをトイレに例える」続きを読む

CPUアーキテクチャについて語れ!

[x86]CPUアーキテクチャについて語れ![RISC] 
「おしっこをして手をあらってでてくる」。 トイレが一室しかないと混雑時は長蛇の列ができます。 1.おしっこをする 2.手を洗う。 二段のパイプにすると、手を洗ってる間に別の人が用を足せるようになり ます。 トイレ一室で二人が気持ちよくなれて、効率が倍になります。 もうすこし深くしてみましょう。 1.ジッパーを下げる 2.ちんちんとりだす 3.放尿する 4.しずくを切ってちんちんしまう。 5.ジッパーをあげる 6.手を洗う 7.紙を使って手をふく 7ステージに分解すると、なんと 7人が同時に処理できます。 これがパイプラインです。

「CPUアーキテクチャについて語れ! 」続きを読む

VMWare 11でMac OSX Yosemiteを動かす

タイトルの通り、Windows上のVMware 11でOSX Yosemiteを動かしてみるのを目的としたエントリです。

※MacOSXは有償です。また、通常VMware上では、Mac全般は動きません。そこはよしなにやります。

1. VMwareをインストール
 これはもう、誰でも出来るかと

2. VMware unlockerの導入
 unlocker 2.0.4でいけました。
 導入方法はちゃんとReadMEついてるので其方を参照ください。

3. VMware Yosemiteが既にインストールされているVMイメージの準備
 ここが一番ネック。でも、ネットで調べると出て来ます。
 こことか

「VMWare 11でMac OSX Yosemiteを動かす」続きを読む

Smartyで0抜き(4/1)表示等々

Smartyで0抜き表示

{$smarty.now|date_format:"%-m月%-d日"}

のように、-m -d とする。

※ただし、2015-4-1 というフォーマットはできなくなる

Google ChartとSmarty

Google Chartでは、月は0~11の表記。
Smartyで普通に月フォーマットすると、1~12
以下のようにすると、実は月を -1 できる。

{$smarty.now|date_format:"%Y,%-m-1,%-d"}
  • entry10ツイート
  • Google+