プログラム言語 セッション操作

読込

セッション変数
$name = $_SESSION[‘name’];
$this->session = $this->request->session();
$name = $this->session->read(‘name’));
セッションタイムアウト
※php.ini
セッション有効期限
session.gc_maxlifetime = 1440 ※秒

セッション削除頻度
session.gc_probability = 1
session.gc_divisor = 1000

session.gc_probability / session.gc_divisor
例の設定ではセッション発行1000回に1回セッションファイルを削除する
<?php
return [
  略
  'Session' => [
    'defaults' => 'php',
    'timeout' => 1,
  ],
];

書込

セッション変数
$_SESSION[‘name’] = ‘test’;
$this->session = $this->request->session();
$this->session->write(‘name’, ‘test’));

Linux iptables

firewalld

無効

# systemctl stop firewalld.service
# systemctl mask firewalld.service
# systemctl list-unit-files | grep firewalld

iptables

インストール

# yum install iptables-services
# systemctl start iptables-services
# systemctl enable iptables-services

設定

※/etc/sysconfig/iptables

# SSH, HTTP, HTTPS
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 443 -j ACCEPT

小さな会社No.1のルール

1位の分野を持つ必要性

・顧客は1位からしか買わない
・1位でないと安売りになる

1位になると起きる現象

1.お客が他から流出して1位の会社にやってくる
2.口コミや紹介が増える
3.集客コストが下がる

1位作りの為の「6つのステップ」

1.顧客の洗い出し
2.理想の顧客を発掘する
3.顧客が商品を買った原因を考察する
4.競合の弱点にフォーカスする
5.絞り込む
6.経験を用いる

経営を構成する8要素

1.商品
2.地域
3.業界・顧客
4.営業
5.顧客維持
6.組織
7.会計
8.業務時間
1~5のどれか1つで1位を目指す

商品細分化法

1.大型/中型/小型
2.厚い/薄い
3.用途別/機能別
4.高級向け/中級/大衆向け
5.プロ用/業務用/一般用
6.外観/デザイン/好み
7.所得別/世帯構成別

なぜあなたのECサイトは価格で勝負するのか?

唯一化

・最安値より価値の高いものを持つ
・売上(一時的な成功)を最大の目標にしない

ストーリーを伝える

・大企業の陰謀との戦いを演出し、買い物を楽しいものに変える(髭剃り販売サイト)
・ジーンズの製造工程をアップする事で世界で唯一の商品をアピール(ジーンズ販売サイト)

カスタマーサービスの充実

・24時間対応コールセンター
・送料・返送料無料
・365日返品OK
・最速8時間配送サービス

品質をアピール

品質が良くてもそれを伝えられなければ品質が悪いのと同じ

社会貢献という付加価値

・売上の一部が寄付される
・フェアトレード商品(経済的な発展を促す発展途上国で作られた商品)を販売する
購入者により高い満足感を提供する

コンセプト(人格)を持つ

人格=個性、魅力が顧客に伝わる事でファンになってもらえる
・創業時の原点
・顧客ターゲット
・強み
コンセプトからサービス、デザインに一貫性を持たせる事で更にコンセプトが伝わりやすくなる

オンラインコンテンツを充実させる

・YouTubeに化粧のやり方を豊富にアップしてサイトと連携(化粧品販売サイト)
・購入前に宝石について勉強できる(宝石販売サイト)
・ブログを毎日更新

 

PHP デバッグ方法(XAMPP/Eclipse/Xdebug)

Xdebugモジュール

ダウンロード

phpinfo()を出力


https://xdebug.org/wizard.php
のテキストエリアにphp_info()の出力結果を貼り付け


「Analyse my phpinfo() output」ボタン押下


分析されたモジュールをダウンロード
例:php_xdebug-2.6.1-7.2-vc15.dll

保存

C:\xampp\php\ext\
に保存

XAMPP

読み込み

C:\xampp\php\php.ini
に以下を追加

[XDebug]
;; Only Zend OR (!) XDebug
zend_extension_ts="C:\xampp\php\ext\php_xdebug.dll"
xdebug.remote_enable=true
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.profiler_enable=1
xdebug.profiler_output_dir="C:\xampp\tmp"

Eclipse

デバッグの構成

サーバータブ

「PHP Webアプリケーション」をダブルクリック
名前を保存可能

ファイル:デバッグ対象のファイルを選択
URL:CakePHPの場合、URLが実ファイルと変更されるのでブラウザに表示されるURLを入力

サーバー:構成
ベースURL:ポート番号等変更がある場合

デバッガータブ


デバッカー:XDebugを選択

Vi/Vim/GVim使用方法

コマンドモード

モード変更

入力 機能
ESC コマンドモード

カーソル移動

入力 機能
h
j
k
l
^ 行頭へ
$ 行末へ
↑の行頭に移動
+ ↓の行頭に移動
( ↑の文に移動
) ↓の文に移動
{ ↑の段落に移動
} ↓の段落に移動
Ctrl+f ↓のページへ
Ctrl+b ↑のページへ
gg ファイルの先頭へ
G ファイルの末尾へ
w →の単語の先頭へ
b ←の単語の先頭へ
e →の単語の末尾へ
ge ←の単語の末尾へ

終了

入力 機能
:q 保存無し終了
:q! 変更有でも保存無し終了
:w 保存&終了しない
:wq 保存&終了

コピー&ペースト

ヤンク(コピー)

入力 機能
yy 1行全体
yw 単語の末尾まで
y$ 行末まで

カット(削除)

入力 機能
dd 1行全体
dw 単語の末尾まで
d$ カーソルから行末まで
x カーソル位置の1文字
X カーソルの前の1文字
D カーソルから末尾
D カーソル位置の改行

プット(貼付)

入力 機能
p カーソルの後ろへ
P カーソル位置(前)へ

Undo/Redo

入力 機能
u Undo(Ctrl+Z)
Ctrl+u Redo(Ctrl+Y)
. 直前の動作の繰り返し

検索・置換

入力 機能
/(正規表現) 前方検索
?(正規表現) 後方検索
# カーソル位置の単語を検索
n 次の候補
N 前の候補
:%s/(検索文字列)/(置換文字列)/g 全て置換
:%s/(検索文字列)/(置換文字列)/gc 置換を順に確認

画面分割

入力 機能
Ctrl+w+w 分割した画面へ移動
gt → のタブへ移動
gT ← のタブへ移動

入力 機能
:e (パス) ファイルを開く
:set number 行番号を表示
:(行番号) 番号の行へ移動
:!(シェルコマンド) シェルコマンドを実行。例 :!ls
Ctrl+Ins クリップボードにコピー
Shift+Del クリップボードに切取
Shift+Ins クリップボードから貼付

挿入モード

モード変更

入力 機能
i カーソル位置から
a カーソル位置の右から
o ↓ に行挿入してから
O ↑ に行挿入してから
I 行頭から
A 行末から

挿入モードでの操作

Ctrl+h ← の1文字を削除
Ctrl+j 改行
Ctrl+g Ctrl+j ↑ へ移動 ※連続入力
Ctrl+g Ctrl+k ↓ へ移動 ※連続入力

ビジュアルモード

モード変更

入力 機能
v 文字単位で
V 行単位で
Ctrl+v 短形選択で

ビジュアルモードでの操作

I ビジュアルモード中に挿入モードに
y ビジュアルモード中にヤンク
d ビジュアルモード中にカット
p ビジュアルモード中に貼付
Ctrl+0 ビジュアルモード中に矩形選択状態で貼付
レジスタ0から貼り付け

上書モード

入力 機能
R 上書き

書き込み禁止モード

入力 機能
view (ファイル名) 書き込み禁止モードで起動

MySQL バックアップ/リストア

バックアップ

スクリプト形式

mysqldump -x (DB名) -u (ユーザ名) -p > (出力先ファイル名)
mysqldump -x testdb -u testuser -p > test.dump

リストア

スクリプト形式

mysql -x (DB名) -u (ユーザ名) -p < (入力先パス)

MySQL コマンド

接続前

バージョン

mysql --version

接続

mysql -x (DB名) -u (ユーザ名) -p
mysql -x testdb -u testuser -p

接続後

切断

$ \q
$ exit
$ quite

DB一覧

show databases;

ユーザ一覧

select host, user from mysql.user;

Let’s Encrypt 使用方法

[TAB]

Let’s Encryptとは

「インターネットを介した安全な通信を行う際の、経済面・技術面・教育面での障壁を減らす」を使命としている、非営利団体ISRGが開発したサービス
無料、簡単にWEBサイトをSSL化できる

インストール

Pythonインストール
yum install certbot certbot-apache
# yum install scl-utils python27 python27-python-tools
# scl enable python27 bash

certbotインストール

certbot=Let’s Encryptが提供する証明書発行・更新ツール

# cd /usr/local
# git clone https://github.com/letsencrypt/letsencrypt

certbot-autoインストール

certbot-auto=Let’s Encryptが提供する証明書発行・更新ツール
Let’s Encryptから証明書を取得し、サーバのHTTPSを有効化する

# curl https://dl.eff.org/certbot-auto -o /usr/bin/certbot-auto
# chmod 700 /usr/bin/certbot-auto

証明書生成

apacheを停止しておく事

通常

# letsencrypt/letsencrypt-auto certonly -a standalone -d ドメイン名
# letsencrypt/letsencrypt-auto certonly -a standalone -d office-yone.com

DNS使用

certbot certonly
–manual
–domain *.office-yone.com
–email yone@office-yone.com
–agree-tos
–manual-public-ip-logging-ok
–preferred-challenges dns-01
–server https://acme-v02.api.letsencrypt.org/directory

実行後メッセージ
Please deploy a DNS TXT record under the name

_acme-challenge.office-yone.com with the following value:

↓をDNS登録(TXTレコード)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Before continuing, verify the record is deployed.

結果

↓ に証明書、秘密鍵が生成される
/etc/letsencrypt/live/office-yone.com/
└cert.pem
└privkey.pem
└chain.pem

設定

証明書設定

※ /etc/httpd/conf.d/ssl.conf
SSLCertificateFile /etc/letsencrypt/live/office-yone.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/office-yone.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/office-yone.com/chain.pem

設定後、apacheを起動しておく事


Let’s Encryptの証明期限は3カ月

WEBサイトのリンク修正

上記設定によりSSL化は完了。

サイト内で「Http://~」でリンクを張っている場合、
上記画像の様に「保護された通信」とならず、「!」が表示されている場合は、「Https://~」に変更する

HTTP→HTTPSへリダイレクト

.htaccessファイル
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

証明書の自動定期更新

# crontab -e
00 04 01 * * ~/certbot-auto renew ̠–force-renew && service httpd graceful
毎月1日4:00にcertbot-autoを定期実行

Linux CRON」参照

Git Git/SourceTree使用方法

個人での利用

ステージング
作業コピーの変更をインデックスに登録

全てインデックスに追加
git add .

指定ファイルをインデックスに追加
git add test.txt

コミット
ステージングされた作業コピーの変更をローカルブランチに登録

コミット
git commit -m “コメント”

ブランチ
現在のコミットからブランチを作成
ローカルブランチを複製

現在のコミットからTESTブランチを作成
git branch test

beforeブランチからafterブランチを作成
git branch after before

チェックアウト

過去/未来のコミットに移動
別ブランチのコミットに移動
→ 作業コピーのファイル状態は移動先のコミット状態に変更される

別ブランチのコミットに移動
git checkout paypal_sandbox

マージ
チェックアウトしているブランチへ別ブランチの変更を取り込む

更新されたリモート追跡ブランチを、現在のローカルブランチにマージする
git merge FETCH_HEAD

リセット
コミット状態を戻す
git reset (オプション) (戻す位置)

戻す対象

オプション HEAD インデックス 作業ツリー
–hard
–mixed
–soft

戻す位置

位置 機能
HEAD^ 直前のコミット
HEAD 現在のコミット

HEAD、インデックス、作業ツリーを戻す
git reset –hard ~

HEAD、インデックスを戻す
git reset –mixed ~

HEADを戻す
git reset –soft ~

HEAD^(直前のコミット)を戻す
git reset –hard HEAD^

コミット後の変更を戻す
git reset –hard HEAD

スタッシュ
作業コピーの変更を退避

チームでの利用

クローン
リモートブランチをローカルブランチとしてコピー

【手順】
「ファイル」メニュー > 「新規/クローンを作成する」

git clone https://github.com/ユーザ名/レポジトリ.git

フェッチ
リモートブランチの変更をリモート追跡ブランチに更新(1)
その後、リモート追跡ブランチの変更を作業コピーにマージ(2)する必要がある
PULLは(1)~(2)を同時実行する
リポジトリ:originのmasterブランチのコミットをリモート追跡ブランチに更新
git fetch origin master

プル
リモートブランチのコミットをローカルブランチに更新
リポジトリ名:originのmasterブランチのコミットをローカルブランチに更新
git pull origin master

レポジトリ名設定
git remote add 別名 https://github.com/ユーザ名/レポジトリ.git

【強制pull】
コンフリクトを無視してリモートに合わせる

フェッチ
git fetch origin master

②リモート追跡ブランチのorigin/masterまで戻す
git reset –hard origin/master

プッシュ
ローカルブランチのコミットをリモートブランチに更新
リポジトリ名:originへローカルのmasterブランチのコミットを更新
git push origin master

リポジトリ名:originのmasterブランチへ、ローカルのtestブランチのコミットを更新
git push origin test:master