【備忘録】CakePHP2 PHPUnitインストール

 

Thanks.
https://qiita.com/t_kamata/items/59bda5df9d9949bcef25

・composer.json作成後、インストール
composer install

なんだ、このエラー?ext-domを要求してるから調べるとphp-xmlが必要らいしい。
phpunit/phpunit 3.7.10 requires ext-dom * -> the requested PHP extension dom is missing from your system.

・php-xmlのインストール
yum install –enablerepo=remi,remi-php56 php-xml

・app/Config/bootstrap.php
require_once APP . DS . ‘Vendor’ . DS . ‘PHPUnit’ . DS . ‘autoload.php’;
//CakePlugin::load(‘DebugKit’);
CakePlugin::loadAll();

・動作確認
https://192.168.0.10/test.php

【備忘録】CakePHP2 CookieとSession

Thanks.

CakePHPでのSessionとCookie設定でブラウザ終了後もセッションを継続する方法

 

‘Session’ => [
‘defaults’ => ‘php’,
‘cookie’ => ‘cookie_name’, // 任意の文字列
‘timeout’ => 259200, // 180days
‘cookieTimeout’ => 259200, // 180days
‘autoRegenerate’ => false, // 自動でセッションを再生成するのをやめる
‘checkAgent’ => false, // trueにすると毎回セッションが切れることがある
‘ini’ => array(
‘session.cookie_lifetime’ => 15552000, //180days
‘session.gc_divisor’ => 15552000,
‘session.gc_maxlifetime’ => 15552000, //180days
),
‘use_cookies’ => 1, // SessionをCookieにも保存する
‘cookie_lifetime’ => 15552000 //180days
],

【備忘録】CakePHP2 CakeMail SMTP-AUTH

 

EmailConfigにusername,passwordが入ってるとSMTP-AUTHになっちゃうのか。
username,passwordをコメントアウトしたらSMTPか。

public $smtp = array(
‘transport’ => ‘Smtp’,
‘from’ => array(‘info@gomyjet.com’ => ‘info’),
‘host’ => ‘127.0.0.1’,
‘port’ => 1025,
‘timeout’ => 30,
// ‘username’ => ‘info’,
// ‘password’ => ‘passwd’,
‘log’ => true,
‘charset’ => ‘utf-8’,
‘headerCharset’ => ‘utf-8’,
);

ようやくメール送信で来たよ。

【備忘録】mailcatcherを使いたけどruby詳しくないから

Thanks.


https://qiita.com/rorono/items/ae125a23151113032e79

 

・rbenvのインストール
yum install git

cd /opt
git clone git://github.com/sstephenson/rbenv.git
mkdir /opt/rbenv/plugins
cd /opt/rbenv/plugins
git clone git://github.com/sstephenson/ruby-build.git

vi /etc/profile
export RBENV_ROOT=”/opt/rbenv”
export PATH=”${RBENV_ROOT}/bin:/opt/rbenv/versions/2.3.0/bin:${PATH}”
eval “$(rbenv init -)”

・rubyのインストール
yum install gcc make openssl-devel libffi-devel readline-devel
rbenv install 2.3.0

・mailcatcherのインストール
gem install mailcatcher

vi /etc/php.d/mailcatcher.ini
sendmail_path = “/usr/bin/env catchmail”

・httpd再起動
service httpd restart

・mailcatcherの起動と確認
/opt/rbenv/shims/mailcatcher –http-ip 192.168.0.1

http://192.168.0.1:1080/

c言語 なんだこの初期化

今日、障害の調査中に見つけた変な初期化方法

stepが多いと思わないのかな?


int a, b, c;

if (val == 1) {

a = 1;

b = 0;

c = 0;

} else if (val == 2) {

a = 0;

b = 1;

c = 0;

} else {

a = 0;

b = 0;

c = 1;

}


	

プログラマ目指すなら品質もね

ITエンジニアの働き場所として、「SIer系のエンジニア(主には企業や公共の業務システム開発)」と「ネットサービス系エンジニア(クリエイター的なシステム開発)」に分けられる。

SIer系のエンジニア(主には企業や公共の業務システム開発)は、もしかするとプログラムが嫌いになるかも。そこには技術は要らないし情報セキュリティの観点から仕事内容は外部に公開できない。

ネットサービス系エンジニア(クリエイター的なシステム開発)は、いろんな技術を楽しめるし自分なりに追及もできる。またコミュニティーなどに参加し自分の作品などを発表することもできる。

どちらも経験した僕は、共通してテストが非常に楽しい。全く違う経験年数や知識、スキルの人材が集まる中で単体テスト、それもホワイトテストの品質が非常に悪い。だからといって単体テストは変ってあげられる量でもなし、レビューしきれる時間もない。

そんな前提で、結合テスト(ブラックボックステスト)を実施するのが非常に楽しい。仕様のテストパターンはもちろんだが、想定外のテストパターン、品質の悪さが楽しい。

プログラム=品質(テスト技術)です。僕は持っていませんが、こちらもプログラムと一緒に学ぶことで品質の良いプログラムが身に着くと思います。

 

c言語 奇数と偶数の判断

よく使う奇数と偶数の判断する時、どっちのロジックですか?

前者は2で割って余りが0かどうか?後者は2進数で最下位ビットが1かどうか?

表現として分かりやすいのは、2で割って余りが0なら偶数。後者は計算量として無駄がなく、計算機として理にかなっている。

だって計算機は0/1しか分からないからね。

・2で割って余りが0かどうかを判断


#include <stdio.h>

void main(int argc, char **argv) {

  int i = 0;
  int n[5] = {1, 2, 3, 4, 5};

  for (i=0; i<5; i++) {
   if ((n[i] % 2) != 0) {
    printf("奇数[%d]\n", n[i]);
   } else {
    printf("偶数[%d]\n", n[i]);
   }
  }
}


奇数[1]
偶数[2]
奇数[3]
偶数[4]
奇数[5]

・2進数を用い最下位ビットが1かどうかを判断

#include <stdio.h>

void main(int argc, char **argv) {

  int i = 0;
  int n[5] = {1, 2, 3, 4, 5};

  for (i=0; i<5; i++) {
   if (n[i] & 0x1) {
    printf("奇数[%d]\n", n[i]);
   } else {
    printf("偶数[%d]\n", n[i]);
   }
  }
}
奇数[1]
偶数[2]
奇数[3]
偶数[4]
奇数[5]

c言語 enumの便利な使い方

c言語歴は長いんだけど、あまりenumを使う機会がなかったので最近初めて知ったのがenumの使い方。

enumって許容できる値を定義するものと思ってたけど、連続した値を自動で定義で来たんですね。


#include <stdio.h>

// enumでナンバーを定義(10,11,12)

enum number {
E_0=10,
E_1,
E_2
};

void main(int argc, char **argv) {

printf("E_0=%d\n", E_0);
printf("E_1=%d\n", E_1);
printf("E_2=%d\n", E_2);

}

結果は


E_0=10
E_1=11
E_2=12

 

バイトオーダ

最近はあまりバイトオーダを気にしないが、CPUが異なる機種同士で通信などする場合はとても大切です。

バイトオーダとは、メモリの低いアドレスに最下位ビットを含むバイトを格納するか、最上位ビットを含むバイトを格納するかのこと。前者をリトルエディアンと言い、後者をビッグエンディアンと言う。

IntelのCPUはリトルインディアン。最近は殆どがIntelのCPUだからリトルインディアン。

以下はリトルインディアンです。たとえば、「1234567890」と書かれたテキストファイルをダンプ表示すると、
並びが「1234567890」ではなく、「2143658709」と並んでいます。
 
[vagrant@localhost ~]$ cat text
1234567890
[vagrant@localhost ~]$ od -x text
0000000 3231 3433 3635 3837 3039 000a
0000013

これは、ワード(2Byte)表示だから「12」では最下位ビットを含むバイトは「2」。メモリの低いアドレスは0番地。
よって、メモリの0番地に「2」、1番地に「1」が格納され「21」と表示されます。これがビッグエンディアンなら、メモリの0番地に「1」、1番地に「2」が格納され「12」と表示されます。

のようにCPUによってバイトオーダが異なります。1種類にCPUで閉じれば問題ないことですが、異なるCPU間で通信する場合は、ネットワークバイトオーダがあります。ネットワークバイトオーダはビッグエンディアンです。

c言語でTCP/IP通信(ソケット通信)する場合は、ネットワークバイトオーダに変換して通信を行います。