開発メモ

気負わずに、ちょくちょく勉強進めていきたい。。。

ログインが必要なサイトでのスクレイピング

ログインが、うまくいかなくて嵌っている。
とりあえず自分の為に、メモ。

特徴としては下記。

・2回ログインがある
cookieにセッションIDを持つ
・hiddenにログインの都度乱数が生成される

基本的な考え方について

基本はブラウザのリクエストヘッダと
PHPからのリクエストヘッダが合えばうまくいくという理屈で考えている。

ブラウザからのリクエストヘッダの確認の仕方

chromeでの確認方法は下記サイトを参照させてもらった。
http://marubon.info/method-confirm-http-header-2345/

1.chromeで下記にアクセス
chrome://net-internals/#events

2.「type:URL_REQUEST」で絞込み

方法

curlやfile_get_contentsで地道にやってく方法もある。

パーフェクトPHP Part3実践アプリケーション(2)

(1)の続きで、写経。
プログラムの意味を理解しながら進めていった。

今日は下記を書いた。

Router.php
Response.php
DbManager.php

まだまだ先は長い。。。

正規表現での名前付きキャプチャ

知らなかった。
正規表現(preg_match)でこんなことも設定できるのかと参考になった。

「(:P<名前>パターン)」とすると、preg_matchの返り値の配列に
名前をつける事ができるようになる。

ソース
$pattern = '/cc(?P<dev>dd)ee/';
$str     = 'ccdedccddeevertc';
preg_match($pattern, $str, $result);
var_dump($result);
結果
array(3) {
  [0]=>
  string(6) "ccddee"
  ["dev"]=>
  string(2) "dd"
  [1]=>
  string(2) "dd"
}

パーフェクトPHP Part3実践アプリケーション(1)

パーフェクトPHP (PERFECT SERIES 3)

パーフェクトPHP (PERFECT SERIES 3)

写経

フレームワーク作成」の章を写経しながら、進めてます。

フレームワークを書いてみる事によって、これから本格的に使ってみる予定の
FuelPHPCakePHPやZendFrameworkについても飲み込みが早くなるかなと。

本日は、「7.2.12 RequestクラスでのURL制御」まで。

フレームワーク経験

経験としては、ちょろっと触ったレベルなので早く実践で
使いこなせるようになりたい。

やってみたこと

・ZendFramework->googleスプレッドシートを非公開形式で取得
FuelPHP ->インストールして、入門書を少し進めた

勉強計画(殴り書き

これまでの問題点

自分は、「作りたいもの」があるから勉強するのではなく
外(ブログなど)からの煽りによって「やらなくちゃ」と勉強するタイプだ。

ネットで「○○が許されるのは小学生までだよね」的
情報に踊らされたり、なんとなく気になる技術を触ってみたいという欲求から
勉強してみるのだけど、結局入門レベルで終わってしまう。

ドットインストールなどで学んだ後に本を買って読んだはいいが
作りたいものはないので入門レベルの知識は、その後活用されず
風化の道を辿る事が多い。

読みかけの本が積まれている本棚を見て
自己嫌悪に陥ることが、よくある。

計画性のなさと、刹那的な欲求に突き動かされる事が
入門レベルで終わってしまう原因だと思うので、
勉強の計画を立てたい。

計画

ターゲット

・業務で実践できそうな事
 主にPHP,Javascriptを使うので、重視。
 優先順位としては下記。

 1.PHP
 2.MySQL
 3.Javascript

勉強する際に気をつける事

・セキュリティ(脆弱性を出さないプログラムを書くには
・テスト(バグを出さないプログラムを書くには

・性能(無駄な処理をしてないか、どうすれば早く処理できるか
・可読性(読みやすいコードを書くには
・汎用的な知識は、深堀りする

・とりあえず、勉強したらブログにアウトプット
 (入力→出力はセットにすること)

opensslの脆弱性対応【さくらVPS】

opensslの脆弱性対応を、さくらVPSでやったのでまとめ。
反応遅いw

対象

使用している OpenSSL のバージョンが 1.0.1 〜 1.0.1f の場合

やったこと

1.opensslのバージョンチェック

TeraTermで、下記コマンド叩いて確認

・openssl version
yum info openssl (こちらの方が詳しく出る

2.opensslのバージョンアップ

 
・sudo yum update openssl

が、下記のようなエラーが出た。

Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
Error: Cannot find a valid baseurl for repo: base
yum設定ファイル修正

/etc/yum.repos.d/CentOS-Base.repo

[修正内容]
・mirrorlistをコメントアウト
・baseurlを、さくらのftpに変更(全て

下記URLの、mirrorlist,baseurlを参考にした。
http://blog.nadekosnake.com/2012/04/vps-2-yum.html


もう一度
・sudo yum update openssl

★バージョンアップ成功!

4.アップデートされた事を確認

バージョン、リリースが下記になってればOK

Version : 1.0.1e
Release : 16.el6_5.7

yum info openssl

Loaded plugins: fastestmirror, security
Repository base is listed more than once in the configuration
Repository updates is listed more than once in the configuration
Repository extras is listed more than once in the configuration
Repository centosplus is listed more than once in the configuration
Repository contrib is listed more than once in the configuration
Loading mirror speeds from cached hostfile
* epel: ftp.riken.jp
Installed Packages
Name : openssl
Arch : x86_64
Version : 1.0.1e
Release : 16.el6_5.7
Size : 4.0 M
Repo : installed
From repo : updates
Summary : A general purpose cryptography library with TLS implementation
URL : http://www.openssl.org/
License : OpenSSL
Description : The OpenSSL toolkit provides support for secure communications
: between machines. OpenSSL includes a certificate management tool
: and shared libraries which provide various cryptographic
: algorithms and protocols.

Available Packages
Name : openssl
Arch : i686
Version : 1.0.1e
Release : 16.el6_5.7
Size : 1.5 M
Repo : updates
Summary : A general purpose cryptography library with TLS implementation
URL : http://www.openssl.org/
License : OpenSSL
Description : The OpenSSL toolkit provides support for secure communications
: between machines. OpenSSL includes a certificate management tool
: and shared libraries which provide various cryptographic
: algorithms and protocols.

仕事をする上で気を付けたい3点

1.成果が出ている事を長期間続ける

 感情のコントロールが重要。

 自分を客観的に見つめる事は難しい為、成果が出ててもなかなか実感できない。
 また、逆に自分の都合のよいように物事を捉えてしまう傾向もある。

 その為、長期間ひとつの事を続ける事が出来ず
 大きな成果に繋がりにくい。
 

やっちゃいけない事

・人と比べたり、自分の不甲斐なさからせっかく成果が出ている事を辞めてしまう
・サンクコストの呪縛から、成果が出ていない事を辞められない
 
 成果が出ているか・出ていないかを客観的に見て判断する必要があり
 論理的でない感情での判断は厳禁。

KPTを行うのがよさそう

https://speakerdeck.com/ryopeko/devsumi2014-dena-bootcamp2014
http://ryopeko.hatenablog.com/entry/2014/02/13/225714

やってみると、問題やよかった事がどんどん溜まっていって
モチベは上がったし、常に問題意識をもって仕事に取り組めたかなと
思う。

2.PDCAサイクルを回す

 問題を日々の業務で感じるが
 PDCAサイクルを回せているかというと、出来ていない事が多い。

 http://harappa-office.com/about/about-pdca/
 http://matome.naver.jp/odai/2130371108088003901

作業ログをとる事を起点にする

どんな感じでPDCA回すかを考えてみる。

  ■PLAN
  1.作業手順を細かく書き出す
  2.作業予測時間を立てる

  ■DO
  3.実際作業時間を測定

  ■CHECK
  4.つまづいたところ、時間がかかったところを
   問題点として書く→改善策を立てる
  5.予想時間と、実際作業時間でのズレがどの程度かチェック
  6.ズレの原因を考える

  ■ACTION
  7.また類似作業をやるようであればマニュアル化
  8.改善点をログとして次やる時に残しておく

3.作業の規則性を把握→マニュアル化→実践→習慣化

 作業の効率化を進める事で、問題点の改善に時間を割けるようになる。

 頭のメモリに残しておくよりも、外に出力する事で
 より内容が精査される。

下記等式が成り立つのでは?

 理解する=人に説明できる=マニュアル化できる

 マニュアル化には、時間がかかるが自分だけでなく
 他の人にも情報共有する事が出来る。