そらとぶへび

仕事・プライベートを通しての気づき、JavaやPHP、データベースやサーバの話などこつこつと書いていきます

習慣化のためのフレームワーク ~習慣は第二の天性なり~

キケロ「至善至高論」〕
「習慣は第二の天性なり」
身についた習慣は,生まれつきの性質におとらないほどその人の生活に影響するものである。

習慣は第二の天性なりの意味 生活に関連する慣用句 - Weblio辞書

元から備わっている才能なんて特にないけれども、誰にも負けないものを持っている人って、きっとよい習慣を持っている人なのでしょうね。よい習慣を身に着けるために必要なものは、高い意識や努力とかそんなものは必要なく、ただやる気を保って地道に続けられるかどうか。
これから新しい習慣を始めるにあたって入りやすく、辞めにくくするための手法を整理してみました。

習慣化の壁を低くする

習慣化にするための壁の高さは、過去の経験が効くかどうか、初期費用の大きさがどうか、スケール効果が効くかどうかというで決まってくます。
新しい習慣へのアプローチとして、焦らずじっくりと1つずつ選んでいくこと。

1)できている人のマネをする

習慣化の入り口の一つとして有益なのが、できている人にやり方を聞いて真似ること。良い習慣、良い考え方、良い整理術を持っている人に、どうやって身に着けたかを聞いてみる。ただし、自分の習慣とするには繰り返しが必要になる。
あれもこれもではなく、出来そうなものに的を絞ってまずは1つを選ぶこと。

2)既存の習慣に紐づける

習慣になっている作業の「前」「同時」「後」に何をするかを決めておく。
例)
・メールのチェックの後に・・・
・日報を送る前に・・・
・コーヒーを淹れるときに・・・

「・・・」の箇所に新しい習慣をくっつける。焦らずじっくりと1つずつ。

3)まずは3回チャレンジしてみる

どんな習慣を身に着けるにせよ「やってみないとわからない。」そして繰り返しやるのだから、「失敗しても大ごとではない。」気を張りすぎず、まずは気楽にやってみる。それで習慣になるかどうかの見極めをはつく。習慣にならなくても、なにか得るものはある。

習慣化からの退路を狭くする

ヒトというのは基本的に、モノを手放すことにが苦手であることと、他者とのつながりを大事にするという2つの特性があります。それらの特性を活かして、自分自身の感情的に止めにくい状態にもっていくのが有益。

1)記録を取る

習慣によって何かしら成果物は生まれる。ノートでも電子媒体でも記録として残していく。一つの箇所にまとめて置き、少しづつ増えていくのがわかるようにする。習慣を止めることで、捨てるものが多くなるのであれば、習慣は止めにくくい状態になってくる。

2)他人に宣言する

他人とのつながりを大事にする特性を活かして、退路に壁を設ける。
自分がどんな人になると宣言をするなど、ある種の自己プロデュースをする。TwitterSNSのプロフィール欄に、自分は〇〇好きな人、〇〇を目指している人と宣言するのも、有益だと思う。

3)グループでやる

勉強会や、コミュニティに参加するなどで、自分よりできる人から学ぶことはもちろん、人に教えることで新たな学びがある。
ただし一つの集まりに集中してしまうと、余計なしがらみが生まれることもあるので、縛りにならない集まりをよく選ぶ、あるいは複数グループに参加していくことがよいかもしれない。


まとめ

昔はすごく難しかったことが、時間が経つと、慣れてくると、いとも簡単にできているようになっていることがあります。
むしろ、元から自分がそうであったかのように感じます。

習慣化するまで、何度失敗しても大したことのないこと。
大事なのは積み重ねであり、焦らず、じっくりやっていけば、大抵のことでやってできないことはないのかなぁと思います。

SSL通信時にプロキシのトンネリングでエラーになる場合の対処

プロキシサーバを通して、wget,curlなどでSSLでアクセスする際、プロキシサーバのトンネリングでSSLを通せずエラーになる。

[hogehoge@hogehoge ~]$ wget --no-check-certificate -e HTTPS_PROXY=proxy.com:8080 "https://info.finance.yahoo.co.jp/fx/convert/?a=1&s=JPY&t=USD"
--2018-02-23 17:10:44--  https://info.finance.yahoo.co.jp/fx/convert/?a=1&s=JPY&t=USD
proxy.com をDNSに問いあわせています... 192.168.0.100
proxy.com|192.168.0.100|:8080 に接続しています... 接続しました。
プロクシのトンネリングに失敗しました: Internal Server ErrorSSL による接続が確立 できません。
[hogehoge@hogehoge ~]$

Apacheのサイトによると、以下モジュールが必要。
Apache モジュール mod_proxy_connect
http://web.archive.org/web/20140119065146/http://httpd.apache.org:80/docs/2.2/ja/mod/mod_proxy_connect.htmlhttp://web.archive.org/web/20140119065146/http://httpd.apache.org:80/docs/2.2/ja/mod/mod_proxy_connect.html

本モジュールには mod_proxy が必要です。 CONNECT HTTP メソッドをサポートします。 このメソッドは主にプロキシに SSL リクエストを通す (訳注: SSLトンネリング)に使われます。


つまり、SSLリクエストでプロキシを通す場合は、以下のモジュールをconfに設定する必要がある。

LoadModule proxy_module modules/mod_proxy.so   
LoadModule proxy_connect_module modules/mod_proxy_connect.so

以下、設定と確認手順。

■プロキシサーバのhttpd.confの編集してmod_proxy_connect.soを読み込むようにする。

[root@proxy ~]# cd /home/webs/proxy/conf/
[root@proxy conf]# cp httpd.conf httpd.conf.bk
[root@proxy conf]# vi httpd.conf
[root@proxy conf]# diff httpd.conf httpd.conf.bk
5,6d4
< LoadModule proxy_module modules/mod_proxy.so   
< LoadModule proxy_connect_module modules/mod_proxy_connect.so
<

■構文チェック

[root@proxy conf]# /usr/local/apache2/bin/apachectl -t
Syntax OK
[root@proxy conf]#

■再起動して設定を反映する。

[root@proxy conf]# /etc/init.d/httpd restart
httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]

■正常にSSL通信ができるようになった。

[hogehoge@hogehoge ~]$ wget --no-check-certificate -e HTTPS_PROXY=proxy.com:8080 "https://info.finance.yahoo.co.jp/fx/convert/?a=1&s=JPY&t=USD"
--2018-02-26 09:55:12--  https://info.finance.yahoo.co.jp/fx/convert/?a=1&s=JPY&t=USD
proxy.com をDNSに問いあわせています... 192.168.0.100
proxy.com|192.168.0.100|:8080 に接続しています... 接続しました。
Proxy による接続要求を送信しました、応答を待っています... 200 OK
長さ: 特定できません [text/html]
`index.html?a=1&s=JPY&t=USD' に保存中

    [ <=>                                   ] 48,550      --.-K/s 時間 0.01s

2018-02-26 09:55:12 (3.18 MB/s) - `index.html?a=1&s=JPY&t=USD' へ保存終了 [48550]

以上。

CentOS ディスクの追加、パーティションの新規作成、マウント処理

仕事でCentOSのディスク新規追加や、取り外しをした際の作業Tips。


対象OS:CentOS 6.6 64bit Plain (CentOS 64bit)


アンマウント、ディスクを取り外す場合に、対象ディスクを認識したまま切断すると、
異常な状態になるので、以下の処理を行う。


マウントを解除

 #umount -l /home/test

認識を外すデバイスを確認する

# dmesg | grep -i 'Attached SCSI disk'
sd 2:0:0:0: [sda] Attached SCSI disk
sd 2:0:1:0: [sdb] Attached SCSI disk

外すデバイスを指定。

/sys/class/scsi_device/2:0:1:0/device/delete

正常に外れているかを確認をする。

# fdisk -l



ディスクを再接続後、スキャンで追加されたDISKが見えるようにする

# for i in $(find /sys/class/scsi_host -name 'scan') $(find /sys/devices -name 'scan') ;do echo "- - -" > $i ; done

追加されたDISKを確認

# fdisk -l
ディスク /dev/sda: 32.2 GB, 32212254720 バイト
ヘッド 255, セクタ 63, シリンダ 3916
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x0004bc0c

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sda1   *           1          66      524288   83  Linux
パーティション 1 は、シリンダ境界で終わっていません。
/dev/sda2              66         334     2150400   82  Linux スワップ / Solaris
パーティション 2 は、シリンダ境界で終わっていません。
/dev/sda3             334        3917    28781568   83  Linux

ディスク /dev/sdb: 107.4 GB, 107374182400 バイト
ヘッド 255, セクタ 63, シリンダ 13054
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x00000000

領域を作成します。

# fdisk /dev/sdb

警告: DOS互換モードは廃止予定です。このモード (コマンド 'c') を止めることを
      強く推奨します。 and change display units to
         sectors (command 'u').

コマンド (m でヘルプ): m
コマンドの動作
   a   ブート可能フラグをつける
   b   bsd ディスクラベルを編集する
   c   dos 互換フラグをつける
   d   領域を削除する
   l   既知の領域タイプをリスト表示する
   m   このメニューを表示する
   n   新たに領域を作成する
   o   新たに空の DOS 領域テーブルを作成する
   p   領域テーブルを表示する
   q   変更を保存せずに終了する
   s   空の Sun ディスクラベルを作成する
   t   領域のシステム ID を変更する
   u   表示/項目ユニットを変更する
   v   領域テーブルを照合する
   w   テーブルをディスクに書き込み、終了する
   x   特別な機能 (エキスパート専用)

コマンド (m でヘルプ): n
コマンドアクション
   e   拡張
   p   基本パーティション (1-4)
p
パーティション番号 (1-4): 1
最初 シリンダ (1-13054, 初期値 1):
初期値 1 を使います
Last シリンダ, +シリンダ数 or +size{K,M,G} (1-13054, 初期値 13054):
初期値 13054 を使います

コマンド (m でヘルプ): p

ディスク /dev/sdb: 107.4 GB, 107374182400 バイト
ヘッド 255, セクタ 63, シリンダ 13054
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x083d66ef

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sdb1               1       13054   104856223+  83  Linux

コマンド (m でヘルプ): w
パーティションテーブルは変更されました!

ioctl() を呼び出してパーティションテーブルを再読込みします。
ディスクを同期しています。

パーティションの更新情報を認識させます。

# partprobe

パーティションをフォーマットします。

# mkfs -t ext4 /dev/sdb1

自動マウント設定を行ないます。再起動した場合も自動的にマウントするよう設定を行ないます。

# vi /etc/fstab
# diff /etc/fstab /etc/fstab.ORG
12d11
< /dev/sdb1               /home/test                   ext4    defaults        1 2

作成したディレクトリにマウントします。

# mount /dev/sdb1 /home/test

マウントしたディスクが認識されているか、確認。

# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda3       28198044 1297680  25461288   5% /
tmpfs            4028756       0   4028756   0% /dev/shm
/dev/sda1         499656   30892    442552   7% /boot
/dev/sdb1      103079868   61044  97776016   1% /home/test


一応、これで完成。


なお、同じディスクで、パーティションの削除、作成を繰り返していると、下記のエラーが出ることがあります。

コマンド (m でヘルプ): w
領域テーブルは交換されました!

ioctl() を呼び出して領域テーブルを再読込みします。

警告: 領域テーブルの再読込みがエラー 16 で失敗しました: デバイスもしくはリソースがビジー状態です。
カーネルはまだ古いテーブルを使っています。
新しいテーブルは次回リブート時に使えるようになるでしょう。
ディスクを同期させます。

メッセージを読むとリブートするの??って思いますが、partprobe コマンドで再読み込みをすれば、OSを再起動しなくても認識されます。

からだ作りをしなければと

体重計にのって思い立った5月から7月にかけて5Kg減を成功、その後11月現在に至るまで、たいしたリバウンドもなく緩やかに維持しています。
毎週、大好きな酒を飲みつつも無理なく続けられそう。
そんなわけで、今回行ったダイエットについて食事と運動それぞれを軸に書いていこうと思います。
あくまで自分が行っている方法を書いただけで、万人向けではないかもしれませんが、参考になれば幸いです。

食事については、最近コンビニでもよく見かけるロカボを取り入れ、食べることも飲むことも好きなので、無理な食事制限はしたくありません。
そこで、糖質制限、なかでももゆるやかなパターンで行うことにしました。運動は、ときたま行っていた水泳を主にすることにしました。

  • ロカボな食事は空腹知らず
  • 運動について
  • まとめ
続きを読む

AWS S3へのファイルアップロード

[環境]
AWS EC2
php:5.6.30
FuelPHP:1.8

AWS SDK for PHPを使って、S3にファイルをアップロード・ダウンロードする方法をまとめます。
バージョンによって違ったりするので、今回使用した一連のパターンをまとめました。

なお、使用したバージョンはAWS SDK for PHP(バージョン3)です。

続きを読む

Oracle エンキューとは

Oracle周りのトラブル時の調査対応ためのメモ。


エンキューとは、共有メモリ以外の共有リソースを排他制御するためのロック・メカニズム
セッション・トランザクションと対応付けられる。
V$LOCKのTYPEで確認することができる。

エンキュー名の一覧
http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19228-04/enqueues.htm

続きを読む

ALTER TABLEによるセッションのロック

MYSQLトランザクション中のテーブルに対し、ALTER TABLEを実行したらどうなるのか?
試してみたところ、トランザクションを終了するまで、他のセッションをロックしてしまう。

続きを読む