Warning: session_start(): open(/home/var/php/c/u/sess_cuisohgqj1tr9e3jnkrvtmgm66, O_RDWR) failed: No such file or directory (2) in /home/users/web07/2/1/0219112/phyokin/devlog/controllers/controller.php on line 15

Warning: session_start(): Failed to read session data: files (path: 2;/home/var/php) in /home/users/web07/2/1/0219112/phyokin/devlog/controllers/controller.php on line 15
devlog
MW211 EXIT

devlog
ExcelVBA/文字が含まれている判定
2014年07月30日
オーソドックスな方法。文字位置を取得する「InStr()」を利用。
┌──────────────────────────────────────┐
│If InStr("文字列", "文") <> 0 Then                                          │
│    MsgBox "文が含まれている!"                                             │
│End If                                                                      │
└──────────────────────────────────────┘

正規表現による照合を利用する方法。
┌──────────────────────────────────────┐
│If "文字列" Like "*文*" Then                                                │
│    MsgBox "文が含まれている!"                                             │
│End If                                                                      │
└──────────────────────────────────────┘
メタ文字の意味は以下の通り。
┌───┬──────────────────────────────────┐
│?     │任意の1文字                                                         │
├───┼──────────────────────────────────┤
│*     │0文字以上の任意の文字                                               │
├───┼──────────────────────────────────┤
│#     │1文字の数値(0~9)                                                   │
├───┼──────────────────────────────────┤
│[A-Z] │文字群中のいずれか1文字                                             │
├───┼──────────────────────────────────┤
│[!A-Z]│文字群中にないいずれか1文字                                         │
└───┴──────────────────────────────────┘
分類:ExcelVBA
CSS/完成後表示
2014年07月29日
tableタグのなどで、(tdの)列を可変とした場合、
末尾の方に長い文字の行があると、初期表示から列幅が拡大する場合がある。

ちょっと見栄えが悪いので、その対策。

CSSの「visibility」属性の初期値を「hidden」(非表示)としておき、
裏で組み立てを完成させ、JavaScriptの「onload」の最後で
「visible」(表示)すればよい。

jQueryを使っているならばこんな感じとなる(CSSの定義とjQuery)。
┌──────────────────────────────────────┐
│table {                                                                     │
│    visibility          :hidden;                                            │
│}                                                                           │
└──────────────────────────────────────┘
┌──────────────────────────────────────┐
│$(function() {                                                              │
│    $('table').css('visibility', 'visible');                                │
│});                                                                         │
└──────────────────────────────────────┘
分類:CSS
DOSバッチ/バッチ名と実行ファイル名
2014年07月28日
バッチ名を考えるのがめんどくさい時、
つい実行ファイル名と同名をつけてしまうと大変なことになる。

実行ファイルを実行するのではなく、自身のバッチを実行してしまうことになるからだ。

例えば「hoge.exe」を実行する以下のようなバッチを「hoge.bat」として実行した場合。
┌──────────────────────────────────────┐
│hoge                                                                        │
└──────────────────────────────────────┘
再帰的に呼びだされるらしく、DOS窓に実行履歴が大量に出力されて止まらなくなる。
┌──────────────────────────────────────┐
│C:\>hoge                                                                    │
│                                                                            │
│C:\>hoge                                                                    │
│                                                                            │
│C:\>hoge                                                                    │
│                                                                            │
│:                                                                          │
└──────────────────────────────────────┘

次に、標準出力の向き先を変えて指定した場合。
┌──────────────────────────────────────┐
│hoge >log.log                                                               │
└──────────────────────────────────────┘
出力先「log.log」に出力される内容は、自身の実行履歴ただ一行。
┌──────────────────────────────────────┐
│                                                                            │
│C:\>hoge 1>log.log                                                          │
└──────────────────────────────────────┘

とにかく、何気なくはまってしまうので注意。
分類:Windows
正規表現/区切りもしくは行末まで
2014年07月27日
以下のようなCSVデータがあった場合、
「a」から始まるデータを取得したいとする。
(但し、「a」はデータの途中にはないものとする)
┌──────────────────────────────────────┐
│a123,b123,c123,a321,b321,c321                                               │
│b456,a456,c456,b654,a654,c654                                               │
│c789,b789,a789,c987,b987,a987                                               │
└──────────────────────────────────────┘
よって、「a」から区切りの「,」までかもしくは行末までという条件になる。

正規表現にすると以下のような感じになる。
┌──────────────────────────────────────┐
│a.*?(?=(,|$))                                                               │
└──────────────────────────────────────┘
分類:正規表現
PHP/日時の書式
2014年07月26日
現在時刻を「YYYY/mm/dd HH:ii:ss」と出力するのに
以下のように一つ一つ呼び出して文字列結合していた。
┌──────────────────────────────────────┐
│echo date('Y') . '/' . date('m') . '/' . date('d')                          │
│   . ' '                                                                    │
│   . date('H') . ':' . date('i') . ':' . date('s');                         │
└──────────────────────────────────────┘

でも、ちょくせつ書式を中にはめ込むことができるのだね。
┌──────────────────────────────────────┐
│echo date('Y/m/d H:i:s');                                                   │
└──────────────────────────────────────┘

っていうか前者だと、タイミングによって、
時と分とかが違ったりするリスクがありそうだ
例えば、11:59に時を取得し、12:00に分を取得した場合、「11:00」になったりして。
(これは大晦日とかだと年とかまで波及する)
#でも、秒が切り替わるちょっとした隙間だから稀だろうけど。

現に、間に「sleep(1)」とかいれて連続で出力してみると、
前後で値が変わってしまう。

つーことで、一回変数に代入してから分解した方が賢明のようだ。
分類:PHP
ネットワーク/pingの応答がない場合
2014年07月25日
接続は問題ないのに、pingを通すと「要求がタイムアウトしました。」が
返信される場合、以下を確認してみては?

ファイアウォールの設定で、
「ファイルとプリンターの共有 (エコー要求 - ICMPv4 受信)」などが
「いいえ(=□有効)」になっていないか?
分類:ネットワーク
C/ヘッダファイルのインクルード
2014年07月24日
ヘッダファイルのインクルードをソースファイル側でするべきか
インクルードしているヘッダファイル側でするべきか迷うことがある。

ということでまとめた。
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
【1】公開関数や公開グローバル変数を使用する場合
┌──┬───────────────────────────────────┐
│①.h│extern void 公開関数①();                                             │
├──┼───────────────────────────────────┤
│①.c│#include "①.h"                                                       │
│    │void 公開関数①()                                                     │
│    │{                                                                     │
│    │    処理;                                                             │
│    │}                                                                     │
└──┴───────────────────────────────────┘
┌──┬───────────────────────────────────┐
│②.c│#include "①.h"                                                       │
│    │公開関数①();                                                         │
└──┴───────────────────────────────────┘
  ②ではソースファイル側でインクルードする。
  →②のヘッダファイルでインクルードし、
    そのヘッダファイルをソースファイルでインクルードするといった
    まわりくどいことはしなくてもよい
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
【2】define定義はtypdef定義をヘッダ側でも使用する場合
┌──┬───────────────────────────────────┐
│①.h│typedef int 新型;                                                     │
└──┴───────────────────────────────────┘
┌──┬───────────────────────────────────┐
│②.h│#include "①.h"                                                       │
│    │extern void 公開関数②(新型 arg);                                     │
├──┼───────────────────────────────────┤
│②.c│#include "②.h"                                                       │
│    │void 公開関数②(新型 arg)                                             │
│    │{                                                                     │
│    │    処理;                                                             │
│    │}                                                                     │
└──┴───────────────────────────────────┘
┌──┬───────────────────────────────────┐
│③.c│#include "②.h"                                                       │
│    │新型  arg = 0;                                                        │
│    │公開関数②(arg);                                                      │
└──┴───────────────────────────────────┘
  ②のヘッダファイルにとって、①のヘッダファイルは必須なので
  ②ではヘッダファイル側でインクルードする。
  →別の③が、②のヘッダファイルのみをインクルードすれば
    完結する(①のヘッダファイルのインクルードがなくてもよい状態)ように
    なっていればよい
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
分類:C/C++
MySQL/データフォルダ移動
2014年07月20日
以下の順で行う。

(1) MySQLを(サービスの停止にて)停止させる。

(2) 設定ファイル(例えば「C:\Program Files\MySQL\MySQL Server 5.5\my.ini」)にて
   「datadir」の内容を書き換える。
┌──────────────────────────────────────┐
│#datadir="C:/MySQL/data/"                                                   │
│datadir="D:/MySQL/data/"                                                    │
└──────────────────────────────────────┘

(3) 変更前フォルダの内容を変更後フォルダへ移動する。
    #当該フォルダの横に「my.ini」があるので、
      それも移動する(その内容も同様に書き換える)。

(4) MySQLを再度起動させれば完了。
分類:MySQL
Linux/メモリリークの確認
2014年07月19日
メモリ使用量を確認する方法。

全体の空き状況を確認するには「free」コマンドを使う。
┌──────────────────────────────────────┐
│# free                                                                      │
├──────────────────────────────────────┤
│              total         used         free       shared      buffers     │
│  Mem:        66666        44444        22222            0        11111     │
│ Swap:            0            0            0                               │
│Total:        66666        44444        22222                               │
└──────────────────────────────────────┘
「total」=「used」+「free」なので、
「Mem」における「free」の「total」に対する割合がある程度あれば問題なし。

プロセス個別の使用状況を確認するには「top」コマンドを使う。
┌──────────────────────────────────────┐
│# top                                                                       │
├──────────────────────────────────────┤
│Mem: 44444K used, 22222K free, 0K shrd, 11111K buff, 12121K cached          │
│Load average: 0.00, 0.00, 0.00    (State: S=sleeping R=running, W=waiting)  │
│                                                                            │
│  PID USER     STATUS   RSS  PPID %MEM COMMAND                              │
│ 1001 root     S <     6000     1 11.0 process1                             │
│ 1002 root     S <     1000     1  2.4 process2                             │
└──────────────────────────────────────┘
ある期間の前後で計測し、「%MEM」の値が劇的に増加していなければまずはOK。
さらに長期間での前後で計測し、じわりじわりと増加していないかも確認。
分類:Linuxシェル
Linuxシェル/起動中の場合のみkill
2014年07月17日
特定のプロセスを終了させるが、やみくもに「killall」をしても
起動していなければエラーとなる。
ま、気にしないというのもありだが、チェックした上で実行するには…。
┌──────────────────────────────────────┐
│isKill=`ps -ef | grep " プロセス名 " | grep -v grep | wc -l`                │
│if [ $isKill = 1 ]; then                                                    │
│    killall プロセス名                                                      │
│    sleep 1                                                                 │
│fi                                                                          │
└──────────────────────────────────────┘
「ps」コマンドで当該プロセスの行を「grep」して、行数を求める。
但し、そのままだと「grep」している自身の行も含まれてしまうので
それを除いて行数を求める。
で、一行あれば(たぶん二行以上はない)、「kill」実行可ってことだ。
分類:Linuxシェル
前へ 1 2 3 次へ