チェ・ゲバムラの日記

脱犬の道を目指す男のブログ

【Postfix+Dovecot】新規にメールサーバを立てたときに送受信できなくてハマった

Postfix,dovecot やりたいこと AWSでEC2をたてて、別サーバから接続してメール送受信をしたい。 環境 EC2(AWS、CentOS7) VPC、セキュリティグループは既存で作れたとある場所と同じものを当て込んだ。 ただし既存のセキュリティグループでは受信ポートが空…

【AWS】2章ハッシュイベントによるビューのルーティング~サーバーレスシングルページアプリケーション(OREILLY本)まとめ~

この章でわかること ・Jasmineを使ったテスト従来のMVC WEBフレームワークはサーバーサイドルータを使用してURLをコントローラに対応づけ、ビューとモデルで動的コンテンツを生成していた。 シングルページアプリケーションではクライアントサイドルータを作…

【AWS】1章シンプルに始める~サーバーレスシングルページアプリケーション(OREILLY本)まとめ~

ちょっと前に掲題の本を買いました。 平日の朝早く出勤して1時間程+土日数時間使って勉強を始めてます。 総学習時間はどれくらいになるか。。 この章でわかること ・サーバーレスの概要とメリットデメリット ・AWS CLIからS3へのデプロイ 1.1.1 サーバーレ…

【Twitter OAuth】もうツイートを見逃さない! 自分のフォローしてる一覧のツイート一覧をいいね数などで表示

またもTwitterOAuthでプログラムを作った。自分のような個人としてはデータがないとなかなかにプロダクトが作りづらいので Instagramと違って審査がないTwitterは手軽に作れて面白い。今回は個人的に欲しいと思ったもの。 すなわち、 一つのサイト内で、Twit…

【PHP】JSONの値を連想配列にしてforeachで取り出すメモ

PHP

Twitterで吐き出されるJSONをループでうまく取り出せなかったのでメモ。JSONだとよくあるだろうが、Twitterで取り出す場合は少なくとも3つくらいの階層になるっぽい。 $test['users'][0]['name']みたいな。 1つずつなら$test['users'][0]['name']とかでとり…

【JS】オブジェクト指向〜Chapter1 ブレイクスルーJavaScript フロントエンジニアとして越えるべき5つの壁〜

今回のChapter1の概要と達成できること 優れたプログラムのための機能について理解する。 すなわち ・プロトタイプ ・クロージャ ・オブザーバー ・this を理解し、最終的にはリアルタイムバリデーションを実装するところまで本記事にてまとめた。 オブジェ…

【JS】vol. 3/3 データ表示(テンプレートエンジン)〜Chapter4 ブレイクスルーJavaScript フロントエンジニアとして越えるべき5つの壁〜

なんだか急に難しくなった気がするw 多分基本をちゃんと理解していないからだと思うのでここはすっとメモしてまたChapter1から整理してみます。 テンプレートエンジンとは テンプレートとデータを合体させて文字列を作る仕組みのこと。 いろんなライブラリ…

【JS】vol. 2/3 データ検索(Underscore.jsライブラリの便利なメソッド)〜Chapter4 ブレイクスルーJavaScript フロントエンジニアとして越えるべき5つの壁〜

Underscore.jsとは 配列を扱う上で役立つライブラリ。 JavaScriptは多言語に比べて配列操作に弱いので補完してくれる。 プロトタイプ汚染もなく、map,filter,invoke,bindAllなど便利な関数が100以上用意されている。 mapメソッド 引数として与えられた関数を…

【JS】vol. 1/3 データ取得(Deferredを使った非同期通信)〜Chapter4 ブレイクスルーJavaScript フロントエンジニアとして越えるべき5つの壁〜

1〜2は前に読んだので省略。 3はCanvasだからすぐには使わない。 ということでChapter4からスタートです。このChapterでの目的は非同期通信処理でデータを取得、 ソート及びフィルタ機能をつけてHTMLに表示するサンプルプログラムを作ること。 データ操作の3…

【TwitterOAuth】Twitterライブラリ+PHPで卒業証書のアプリをつくった

タイトルのものを作った。 OAuthとかたまにしか使わないと忘れるのでメモ的にはっておきます。 ソースコードコピペでそのまま動くようにしました。毎週なんかをつくるっていう課題の元、今週は何にしようかと思っていたらこんなの見つけたので作って見た。 …

【JS】ハッシュタグつきのURLでアクセスしたらページの特定の場所に飛ばす

index.html#sec1とかにしておいたら 押したら通常はページのsec1のIDのところにいくが、そこがアコーディオンだったりタブだったりした場合、 それを押させるんじゃなくてJavaScriptで押させるということがしたい。 そんなときのTips <script> $(function(){ // URL…

【JS】jQueryでAjaxを実装〜JavaScript本格入門 Chapter9〜

汎用的なAjax実装 $.ajaxメソッド <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript"> $( function (){ $('#btnsend').click( //通信開始時にメッセージ表示 $('#result').html('通信中.....'); //Ajax通信開始 $.ajax({ url:'yahooJson.php', type:'GET', dataType:'json', //フォーム内容ハッシュ変換 data…

【JS】ブラウザを自在に操る(ブラウザオブジェクト)〜JavaScript本格入門 Chapter6〜

ここからはブラウザ環境以外では利用できないため注意。 イベントが発生したら処理を行うーイベントドリブンモデルー クライアントサイドJavaScriptとイベントドリブンモデルを理解する イベントドリブンモデルとは ブラウザ上でページ読み込み完了、テキス…

【JS】大規模開発でも通用する書き方を身につけるオブジェクト指向構文(prototype,クラスライクな継承)〜JavaScript本格入門 Chapter5〜

JavaScriptにおけるオブジェクト指向の特徴 クラスではなくプロトタイプ 他言語と違ってインスタンスの概念はあるものの、クラスがなくてプロトタイプという雛形の概念だけがある。 プロトタイプとは要するに「より縛りの弱いクラスのようなもの」と思って差…

【JS】繰り返し利用するコードを一箇所にまとめる(関数定義、スコープ、クロージャ、高階関数)〜JavaScript本格入門 Chapter4〜

4-1.関数とは 関数定義の3つの方法がある functionで定義 function triangle(base, height) { return base * height / 2; }document.writeln('三角形の面積:' + triangle(5,2)); //5名前は動詞+名詞の形式が一般的。 showMessageなど。 Functionコンストラ…

【JS】基本データを操作する〜組み込みオブジェクト〜JavaScript本格入門 Chapter3〜

3-1 オブジェクトとは 「モノ」である。例 Memberオブジェクト [name]山田 [sex]男 [birth]2007/6/25 [address]千葉県JSの構文的には連想配列とオブジェクトは同じであり、名前付きの配列であるが、 言葉の意味としては別のもの。 オブジェクト= プロパティ…

【JS】基本的な書き方を身につける〜JavaScript本格入門 Chapter2〜

配列内の要素を順に処理する オブジェクトの作り方 var book = new Object(); book.title = 'javascript 本格入門'; book.publish = '技術評論社'; book.price = '3000';for(var k in book){ document.writeln(k + 'は' + book[k]); } 結果titleはjavascript…

【CakePHP2.x】Header内で、現在のコントローラーやアクションを指定する方法

引用ですが コントローラー名 $this->name アクション名 $this->action Webroot $this->webroot 現在のURL $this->here Layout/common.ctp if($this->action == 'hoge') { echo $html->css('hoge'); } 参考 CakePHPでコントローラーやアクションごとにCSS&js…

【JS】jQueryを使って簡単にLoading画面をつくる

要所のみ。 JSでimgタグの数を拾ってきて、一つずつ読み込む。 読み込んだらそれをProgressBarのWidthとして吐き出していく。ProgressBarのCSSは適当に色をつけておけば、画像をすべて読み込み終わった時点でLoadingが消える。 HTML <div id="loading"> <div class="logo"> <img src="img/loading.png"> <div class="bar"> <span></span> </div> </div> </div> JavaScript /* *…

【JS】いつか使えそうなJavaScriptライブラリのメモ(随時更新予定)

Webサイトやアプリなどへ複数人によるリアルタイムコラボレーション機能 Mozilla Labs : TogetherJS グリッドレイアウトを究極にカスタマイズできるライブラリ Muuri - Responsive, sortable, filterable and draggable grid layouts 参考 面倒な作業不要で…

【CentOS】SFTPにアクセス制限をかけて他のディレクトリを見られないようにする方法

自分だけのサーバを適当にいじくり回していたが、 遂に他の人にも特定のディレクトリをいじくり回してもらうことになった。 もちろん自分の秘密のディレクトリはディレクトリ名すら見られたくないので上階層は移動もできなくしたいし、 ログインしたら他の人…

【CakePHP2.x】ソーシャル連携(SNS)~CakePHP2実践入門「16章」~

OAuth概要 SNS連携の場合OAuthというセキュアにAPIを承認するためのプロトコルを使用する。 アプリケーションの登録 Twitterの場合、CallbackURLを指定しないと自動的にクライアントアプリケーションとして認識されてしまい、 ブラウザアプリケーション用の…

【CakePHP2.x】キャッシュによるパフォーマンス改善 ~CakePHP2実践入門「15章」~

パフォーマンス計測してボトルネックを探す ボトルネックの調査 計測方法 Xdebug、XHProfなどが代表的だが少し慣れがいるのと、PHP拡張インストールも必要なため、 簡易的に実行時間を記録するBenchmarkコンポーネントを作成、利用する方法もある。public $c…

【CakePHP2.x】公開環境設定とデプロイ ~CakePHP2実践入門「14章」~

動作環境の切り替え テストと本番環境によってDB情報などが違うことはよくある。 その時に設定情報をできるだけ簡単に切り替える方法のイロハ。 ホスト名による切り替え $_SERVER['SERVER_NAME'] の利用 ※簡単だが、コンソール、シェルを使用した場合はホス…

【CakePHP2.x】役立ちそうなコラム ~CakePHP2実践入門~

この本を読んでいて役立ちそうなコラムがちょくちょくあるのでここに書いて置く。 アクションごとにモデルを作る モデルが肥大化するのは特性として仕方のない事ではあるが、 出来るだけ肥大を避けたい場合はアクションごとに切り分けて作成した方が良い。 1…

【CakePHP2.x】セキュリティ~CakePHP2実践入門「13章」~

代表的な攻撃 SQLインジェクション DBに対して外部から任意の操作を許してしまう問題。select * from users where email='a@example.com' and pass='pass01' limit 1; に対してフォームから email : a@example.com pass : pass01' OR 1=1 (最後に半角スペー…

【CakePHP2.x】ユニットテスト ~CakePHP2実践入門「12章」~

ユニットテストとは 単体テストのこと。 「手動」ではなく、テストコードを書いて「自動的」かつ「正確」にテストできる仕組み。 テスティングフレームワーク PHPUnitインストール $ pear upgrade PEAR $ pear config-set auto_discover 1 $ pear install pe…

【CakePHP2.x】コンソール/シェルの利用 ~CakePHP2実践入門「11章」~

あまり使う用途が想像できないwけどせっかくなので流し読みした結果だけ。 コンソールとは CUIを使って実行するアプリケーションを作る仕組みのこと。 コンソールから実装可能なアプリケーションをシェル。 シェルの間で共通の処理をタスクという。 bakeも…

【CakePHP2.x】プラグインを使ったフレームワークの拡張 ~CakePHP2実践入門「10章」~

よく使うプラグイン3選DebugKit デバッグバーを表示Search plugin 検索機能追加MigrationsPlugin データベースのスキーマ機能をバージョン管理 プラグインの自作 bakeコマンドで自動スケルトン作成がおすすめ 1.app/Plugin/ 2.Plugin/ のどちらの配下に作る…

【CakePHP2.x】CakeEmailクラスを使ったメール送信 ~CakePHP2実践入門「9章」~

メールヘッダインジェクション対策 登録フォームでメール、所属を入力してもらい、 それをそのままメールヘッダに入れるプログラムの場合。 改行コードが入ると勝手にCCアドレスも入力できちゃったりする。通常Cake側で自動処理して欲しいところだが、 CakeP…