2014-01-01から1年間の記事一覧

ローカルな ip ベース VirtualHost

ループバック ip アドレス(127.0.0.1 と 127.0.0.2) で DocumentRoot を 2 つ持つ OS CentOS 6.5 lib apache2 Implements /etc/hots 127.0.0.1 localhost.localdomain localhost_hello 127.0.0.2 localhost.localdomain localhost_world ::1 localhost6.loca…

覚書き

Config/routing.php 8 Router::connect('/example/resource', array('controller' => 'example', 'action' => 'put_resource' , '[method]' => 'PUT')); Controller/ExampleController.php 1

結合テストを構築できるようにすること CakePHP + PHPUnit

はじめに 表題を実現する為のコードベタ貼り 経緯 PHPUnit 使って結合テスト(アクション単体に対する MVC の結合)は構築できるの? -> 公式Docsに出来る旨が書いてある -> やる app/Controller 1 結合テストファイル[Test/Case/Request/UserTest.php] $ m…

memo; git-plugin Repository URL と Credential

Given Jenkins に git-plugin を入れている credential-plugin を入れている Jenkins_ROOT > ジョブリストのリンク > 設定 > ソースコード管理 > Git に遷移している Repository-URL とは git clone で checkout する時の URL ssh 使うなら git@github.com:U…

git-plugin で remote repo から clone するとき ssh passphrase は空でなければいけない

現象 jenkins ユーザーで ssh-keygen から「パスフレーズを入力して」公開鍵と秘密鍵を作った [root@localhost jenkins]# su - jenkins -bash-4.1$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/var/lib/jenk…

edit(更新処理) で put メソッドを使う CakePHP

v 2.5.6 より 乗り越えるべき課題 CakePHP では X. View で $this->Form->Create を定義したとき、デフォルトで method="post" が定義される Y. Model が更新値を save する時primary key が request->data['Model'] になかった場合更新処理(update)ではなく…

ページごとに特定のjsを読込む CakePHP

やりたいこと 標題の通り 方法 jQuery を用意する {CAKE_ROOT}/webroot/js に jquery-{stable_ver}.min.js を配置する View で jQuery を読み込む {CAKE_ROOT}/app/View/Layouts/default.ctp で echo $this->fetch('script') している行を探す の行より上に…

複数のバリデーションを実行する CakePHP

前提 posts テーブルは下記の通り id title created_at updated_at やりたいこと プロパティ title に以下の 2 validation が実行されること アルファベットもしくは数字であること 8 - 255 文字以内であること 方法 app/Model/Post.php 1 array( 5 'alphaN…

Call to a member function setFlash() on null への対策

現象 post 処理をした post 処理の中で setFlash を叩いた(X) Call to a member function setFlash() on null が発生する (CakePHP 2.5.6 より) (X) 18 public function add() { 21 if($this->request->is('post')) { 22 if ($this->User->save($this->reque…

I18n.t の翻訳言語を明示的に変更する

目的 表題を Rails app で実現する 前提 app のデフォルト言語は ja になっている config/application.rb 16 module Sampapp 17 class Application < Rails::Application 18 config.i18n.default_locale = :ja 19 end 20 end locales/*.yml に各言語の文言が…

雑多記録 -- expect(Some).to receive(:my_method) の記述方法

expect(Some).to receive(:my_method) は何を検証するのか 一つの処理の中で Some が my_method を呼び出していること どのような場面で使うか ex.) 例外処理内で例外が発生したとき、確かに、例外が発生した後の処理が実行されていないことを確認するとき …

覚え書き -- Rails から呼び出した Gem で Rails.root を使えるようにする

目的 Rails から呼び出した Gem で Rails.root を使えるようにすること (以下の条件での対応方法は、結論、Gemfile で gem 'some_gem', require: false すること である) 目的のイメージ Given {Rails root}/Gemfile gem 'my_gem', path: 'lib/my_gem' {Rail…

Authenticate と Authorization の略語

Authenticate(認証) は AuthN Authorization(認可) は AuthZ 参考ページ Short alternatives of the word Authentication and the word Authorisation [closed] 知るって大事ね

一時変数を使わずに2値を swap する

個人 memo swap: (pointer to a, pointer to b) a = a + b b = b - a b = b - a END Swap two numbers without tmp var

main.cf, my.* の設定 ; Postfix

memo myhostname システムのホスト名を FQDN もしくは non-FQDN で割り当てる myorigin のエイリアスを myhostname にするときは FQDN にする ex. mail.footest.jp mydomain メールサーバーのドメイン名を FQDN で割り当てる ex. footest.jp myorigin locall…

HTTP status code ; 400 と 403 が起こる原因 ; メモ

400 サーバーの立場で 理解できない、よく分からない request が送られてきたのでエラーを起こす 403 サーバーの立場で request は理解できたが、何らかの理由でその request を禁止しなければいけず、エラーを起こす ニュアンスとしては「要求は分かった。…

controller における concern の書き方 ; Rails

先ず concern とは? 機能を集約する手段 (今回は ApplicationController によく書かれる session_required を concerns ディレクトリ下のモジュールに集約する) controller の「一機能」を concerns のモジュールとして集約する app/controllers/concerns/se…

Model に散らばる validates メソッドを concern で集約する

よくある事例 validates だけで 10 行ぐらいクラスを食いつぶす app/models/book.rb class Book < ActiveRecord::Base validates_presence_of :name, :password ... validates_length_of :title, max ... validates_foo validates_bar validates_qux . . . v…

MySQL における CHECK の扱い

クエリとしてパースされるが、実行上は無視される The CHECK clause is parsed but ignored by all storage engines 公式 Docs より メモレベルで... 仕様の意図が分からない

autoload # Ruby

これは何か 怠惰なモジュール(クラス)参照メソッド autoload の前に require require の挙動 require した時点で即読込み #!/usr/bin/env ruby require 'pathname' #=> true require 'lib/foo' #=> true autoload autoload の挙動 定数を参照するまで読み込…

RbConfig # Ruby

これは何か Ruby インタプリタ作成時に設定された情報を格納したライブラリ 何のために使う(と考えられる)か gem で制約作りたいとき(おそらく) 例 2.1.2 :016 > require 'rbconfig' 2.1.2 :016 > RbConfig::MAKEFILE_CONFIG['prefix'] => "/home/matsu/.rvm…

Pathname # Ruby

v2.1.2 より これは何か パス名をオブジェクト指向らしく扱うクラス どのように使うか pwd children ~/Prog/check 21:12 $ ls -R .: bar foo.txt pathname.rb ./bar: bar.txt pathname.rb 1 #!/usr/bin/env ruby 2 3 require 'pathname' 4 pathname = Pathna…

FileUtils # Ruby

v2.1.2 より これは何か ファイル操作をする標準モジュール どのように使うか ファイルをrmする ~/Prog/check 20:45 $ ls bar.txt foo.txt fileutils.rb 1 #!/usr/bin/env ruby 2 3 require 'fileutils' 4 FileUtils.rm(['foo.txt', 'bar.txt']) ~/Prog/chec…

コミット時のエディタを変更する ; Subversion and Linux

~/.profile の SVN_EDITOR 変数に使いたいエディタを allocate する ~/.profile export SVN_EDITOR=vi $ source ~/.profile vi 派です 昔は emacs 使ってましたけど、小指が多感だったので

Windows 8 / SSH (UNPROTECTED PRIVATE KEY FILE) # SSH

Windows 8 * Cygwin Git * SSH ssh-keygen を実行し、id_rsa.pub キー を Github へ登録 git clone でレポジトリ を clone を実行する UNPROTECTED PRIVATE KYE FILE のエラーが出て clone できない 何が原因 秘密鍵(id_rsa) のパーミッションがセキュリティ…

Cygwin で コピペ(Ctrl + Shift + v) する前に

もっと早く知りたかった、ターミナルのショートカット より(情報ありがとうございます) Cygwin でもできるかどうか できる however 設定が必要 赤囲みをチェックしなければいけない Options > Keys > Ctrl+Shift+letters shortcuts

レポジトリ共通の .gitignore を設置する # git

Git

明らかに毎回 ignore している形式がある .gitignore 作成する毎に書き込むのは面倒、漏れがあると厄介 ファイル編集 vi ~/.gitignore ~/.gitignore --- *.swp --- コマンド実行 git config --global core.excludesfile ~/.gitignore

gem 作成中に binding.pry で undefined method `pry' for #<Binding:XXXXX> が出たとき対応すること ; Ruby

環境差異があるかもしれないが、事例として残す 前提 pry, pry-doc は gem に install されている gem install pry pry-doc 状況 gem モジュールを作成した bundle gem sample gem の実装部を弄っていた lib/sample.rb lib/sample/*.rb lib/sample.rb module…

ListView をクリックしても onItemClick が実行しない時の対処 # Android

原因 レイアウト内に ListView と Button が共存していて、Button の onClick が onItemClickListener の機能を吸収しているから。 対処方法は 2 つのうちいずれか Button のレイアウトに項目を追加する ListView にリスナーを登録する Button のレイアウト…

Button event (without anonymous class) ; Android

memo ボタンを押下したときにイベントを発火する 匿名クラスを使わない import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.EditText; import android.widget.Button; public class MainActivity ext…