まおさんの備忘録

会社やら家やらで調べた事に関する備忘録

debian系(ubuntu含む)でのPHP Session の お話

調べた結果を書き込みたかったけど、Twitterだと流れてしまうのでここに。


PHPを使っていてSession情報がおかしい。
なんか時間が短い。
って思ったら

PHPのSession情報を保持するディレクトリが
rootじゃないと読み書きできないエリアに存在するため、
PHPでの管理ではなく、cronを使ってごにょごにょしているのだとか。

詳しくは

d.hatena.ne.jp

とか

phpMyAdminでセッションタイムアウトの時間を伸ばしても反映されない | 創作メモ帳

をみてわかったことなのだけれど。

そりゃローカルで色々試しても無理だわよ。

JqueryオブジェクトになったSelectから 選択された物を取得する方法

var $select = $("#selectId");

このような状態になっている Jqueryオブジェクトが存在した時
中身を取得した。


$select.find(":selected");

これで取得でけたー!

$select.find(":selected").text();

で ラベル は取れるし

$select.find(":selected").val();

で 値が取れる!


$("#selectId :selected");
での セレクトの値の取得方法が見つからなかったので、ちょっと悩んだのよね。

キャメルケースとハイフネーション

Zendを使っている以上で、必須になってくるこの2つ。

いつも手動置換していてめんどくさいなーって思ってたんだよね。

なので!!


作りました。

これで今までめんどくさかったことが楽になるう〜♪

Redmineのwikiで改行する方法

探したけれど見つからなかったので。。。

<notextile>
</notextile>

これを入れると1行改行。
2行改行したいときは

<notextile>
</notextile>
<notextile>
</notextile>

とする。

みんな知ってるからなのか、全然ひっかからなくて。。

誰かの参考になればっ!

追記 2016.08.30

整形済みテキスト( < pre > で囲った場合や 半角スペースで開始した以下のような状態)でも利用可能でした。
f:id:mao1020:20160830105224p:plain

Chrome リモート デスクトップ で MacからWindowsのctrlボタンを!!!

どうも。
悪いことするために、リモートデスクトップを入れて
ウマーしているまおさんです。

さて、今日はmacからいじっていて
winのctrlボタンが押せなくて悶絶しておりましたが
ついに発見したのでお知らせいたします。


fn + ⌘ + option

この3ボタンでwinに ctrl を 発信することが出来ました><b

ということは、

fn + ⌘ + option + control + del で 強制終了ができる。。。のか?w
(このコマンドを探した元記事がどっかいってしまってリンク付けられなくなっちゃった。。
ごめんなさい><

DateTimePickerAddon の グリッドがリセットできない><

Qiitaに投稿しようとして、
md形式で掛けなかったので断念しました。
どうもお久しぶりです。maoです。

このアカウントにログインしようとしたら、
ダイアリーを使った形式のあるアカウントに偶然ログインできてビックリしました。
(そっちのほうはお気に入りの写真がアイコンになっていてこっちにも持って来たいとwktkしております)

以前投稿した時に使った
http://jsdo.it/に投稿しようとして
思いのほか、使い方を忘れてしまい投稿に時間かかりそうだったので

ひとまずネタだけ投稿。

先日、バグチケットで以下のようなチケットが。。

「リセットボタンを押下しても、カレンダーの時間がクリアされません」

使っているカレンダーとは以下のaddon

http://trentrichardson.com/examples/timepicker/

optionの解説を信じて

$(".datetimepicker").datetimepicker({
hour: '00',
minute: '00'
});


としてみても、該当部分に反映する気配無し。。。


結果

無理矢理以下のように設定した。
(リセットする日付は今日でよかったので。)

var resetDate = new Date();
resetDate.setHours(0);
resetDate.setMinutes(0);
$(".datetimepicker").timepicker('setTime',resetDate);

これだけだと、input:text に値が入ってしまうので
そのあと、中身をクリアする処理を忘れずに。



これ、setTimeに関して、書いてないんだよね、オプションに。

無理矢理過ぎて嫌だなー。。。

経路列挙モデルのデータを配列化する

PHPのarray_mergeの仕様により苦しめられたり

そもそもそのロジックに行き当たるまでに1時間は頭を悩ませていたという経緯から

ちゃんとログに残そうかと。

経路列挙モデルというのはDBの話で

親子関係をPath形式で所持する方法。(だと思ってるw

経路列挙モデル(検索編):MySQLで階層化データを使う | MAKIZOU.COM

ここら辺がわかりやすい感じ。

これを、PHPで扱う時

どうやって再帰的に処理を行うかで頭をすごく悩ませた本日の午前中。

なんとか形になったので、忘れないうちにログに残します。

    function pathToArray(){

        $path = ".1.2.5.";

        $rows = array(
            array("id" => 1 , "path" => ".1.","name"=>"name1"),
            array("id" => 2 , "path" => ".1.2.","name"=>"name2"),
            array("id" => 5 , "path" => ".1.2.5.","name"=>"name5"),
            array("id" => 6 , "path" => ".1.6.","name"=>"name6"),

        );

        $result  = array();

        foreach($rows as $row){
            $path = $row["path"];
            $temp = explode(".",$path);
            $temp = array_filter($temp);

            $prev["row"] = $row;//配列最初のキー取得

            foreach(array_reverse ($temp)  as $tempS){
                $res["$tempS"] = $prev;
                $prev = array();
                $prev["ID$tempS"] =$res["$tempS"];//array_mergeの仕様で数値型になると再振り分けしちゃうので文字列型に無理矢理w
            }

            if(count($result) != 0){
                $result = array_merge_recursive($result,$prev);
            }else{
                $result = $prev;
            }

            $prev = array();
        }


        var_dump($result);

    }

これを実行すると

array (size=1)
  'ID1' => 
    array (size=3)
      'row' => 
        array (size=3)
          'id' => int 1
          'path' => string '.1.' (length=3)
          'name' => string 'name1' (length=5)
      'ID2' => 
        array (size=2)
          'row' => 
            array (size=3)
              'id' => int 2
              'path' => string '.1.2.' (length=5)
              'name' => string 'name2' (length=5)
          'ID5' => 
            array (size=1)
              'row' => 
                array (size=3)
                  'id' => int 5
                  'path' => string '.1.2.5.' (length=7)
                  'name' => string 'name5' (length=5)
      'ID6' => 
        array (size=1)
          'row' => 
            array (size=3)
              'id' => int 6
              'path' => string '.1.6.' (length=5)
              'name' => string 'name6' (length=5)

こうなるので、rowがあったら処理をして
なければ処理しない的な再帰的なものを作ってあげれば
Pathの順序にいろいろとできるよっていう。

いやー頭を痛ませました。

(はてぶろのソース記法についても一瞬悩まされましたよ。。。orz

変数名がアレなのはつっこまないでください。。。