サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
衆院選
1000g.5qk.jp
Jenkins から https 接続で認証付きの Git リポジトリを参照する場合、以下のように URL に直接ユーザー名とパスワードを書く必要がありました。 当然 Jenkins の設定ファイルにパスワードがそのまま書かれてしまいます。個人開発ならいいですが、チーム開発では危険すぎます。これをセキュアにしようとすると、.netrc を使ったりするややこしい手順が必要でした。 ところが、2013年10月22日にリリースされた Git Plugin 2.0 から、Credential Plugin と連携して暗号化したパスワードを保存できるようになったため、大幅に設定が楽になりました。 以下にそのやり方をメモしておきます。 リポジトリの URL は https://foo.com/git/bar.git とします。 “Jenkins の管理 > Credentials > Add doma
Bower とは? BOWER: A package manager for the web Twitter 製の JavaScript パッケージ管理ライブラリ。Ruby の Gem, PHP の Composer みたいなもの。 プロジェクトで使用する JS ライブラリとバージョンをファイルに記述して管理できるため、バージョン管理が容易になります。 インストール CentOS 6 でインストールする手順です。 node.js をインストールする。 EPEL が使えれば yum install nodejs で一発。 npm をインストールする。 パッケージが公開されていないので、ソースからインストールまたは curl http://npmjs.org/install.sh | sh (Fancy install) で。 npm で bower をインストールする。 sudo bower
以下の環境でPHPアプリの開発を行っていたところ、静的コンテンツが正しく反映されない現象に陥りました。 Oracle VirtualBox で CentOS 6.3 VM を起動 ホストOSは Windows 7 ホストOS側の “c:\www\app” を VM 側の “/www” に共有フォルダとしてマウント VM上は Apache 2.2 を稼働させ、PHP アプリサーバーとして利用 この状態でホストOS側で JavaScript などの静的コンテンツを編集し、ブラウザからアプリにアクセスすると、以下のようなエラーが出ました。 Chrome Uncaught SyntaxError: Unexpected end of input または Uncaught SyntaxError: Unexpected token ILLEGAL
$ cd c:/mojamoja/cake2/app $ ./Console/cake.bat bake controller apis $ ./Console/cake.bat bake view apis テストしたいのは Controller だけですが、対応する View が無いとテスト実行時にエラーになるので一緒に作っておきます。 ちなみに逆順でコマンドを叩くとエラーが出ます。View を作る時には、対応する Controller が必要なためです。 この時点でテストを動かすことが可能です。 $ Console\cake.bat test app controller/ApisController Welcome to CakePHP v2.2.5 Console ----------------------------------------------------------
「MySQLの暗黙の型変換には気をつけろ!」というお話です。 下記のように、INTEGER型のカラムと、TEXT型のカラムを持つ簡単なテーブルがある場合を考えます。 +-------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+-------+ | id | int(11) | YES | | NULL | | | name | text | YES | | NULL | | +-------+---------+------+-----+---------+-------+ mysql> INSERT INTO users VALUES(0, "name0"); mysq
最近は Sublime Text 2 をメインのエディタに使っています。しかし、ところどころ「何で?」と思うような不便な点があります。 「Replace All」をクリックするたびに閉じる置換ダイアログも主な不満の一つです。正規表現を連続で試したい時などはいちいち開き直さねばならず、面倒極まりないです。 というわけで、「Replace All」 を実行しても閉じないようにカスタマイズする方法をメモします。 やり方 Preferences -> Key Bindings – User に以下の行を追加します。 { "keys": ["ctrl+alt+enter"], "command": "replace_all", "args": {"close_panel": false}, "context": [ {"key": "panel", "operand": "replace"}, {"
ページ遷移持のイベントの発火タイミングをよくよく理解しておかなければ、jQuery Mobile を使いこなすことはできません。 単純なページ間の遷移で発生するイベントの順番を確認しておきます。 なお、イベント一覧は jQuery Mobile Docs – Events に記されています。 検証コード コードはgistにも公開してあります。→Verify the event firing timings of jQuery Mobile — Gist page1.html <!DOCTYPE HTML> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>page 1</title> <link
依存性注入 (Dependency Injection) は、クラスを単体テスト可能にするために使われるテクニックです。 これが意識されていないが故に単体テストが全くできないコードを少なからず見かけます。 単体テストの際には必ず必要になる知識なので、共有しておきます。 単体テストができないよくあるケース 例えば以下のメソッドは単体テストケースが書けません。 class Foo { public function play() { $bar = new Bar(); if ($bar->getSomething() === 1) { return true; } return false; } } Foo::play() 内で外部クラス Bar をインスタンス化しています。つまり Foo::play() メソッドは Bar に依存しており、単体テストができません。 試しにテストケースを書くと
命名規則に従わないモデルやプラグインをロードする際、使われるのが「App::import」と「ClassRegistry::init」。どういう使い分けをしているのかわからず、使い方によっては期待通り動かなかったりで困っていたので、違いを調べて見ました。 API Book によると、下記のような説明があります。 Finds classes based on $name or specific file(s) to search. Calling App::import() will not construct any classes contained in the files. It will only find and require() the file. 「コンストラクトは行わない。ファイルを探してrequire()するだけ」と書いています。 また、戻り値は boolean tru
LightBoxのように、リンクをクリックするとアクションが発生するスクリプトは数多く存在します。 任意の場所をクリックした時にそのアクションを起動したい場合は、jQueryのclick()メソッドを使うと簡単に実現できます。 例 classが”uso”のaリンクをクリックした時に “a#mojamoja” をクリックした時のアクション起動したい場合は、下記のように書けます。 $(function() { $("a.uso").click(function(e) { e.preventDefault(); $("a#mojamoja").eq(0).click(); }); });
Subversion 1.6にアップグレードしてからというもの、何かsvnコマンドを打つ度に下のメッセージが出るようになりました。 ----------------------------------------------------------------------- ATTENTION! Your password for authentication realm: <http:> TEST SVN repository can only be stored to disk unencrypted! You are advised to configure your system so that Subversion can store passwords encrypted, if possible. See the documentation for details. You
アート・オブ・アジャイル デベロップメントでは、数々のXPプラクティスを以下の5カテゴリに分類しています。 考えること 協力すること リリースすること 計画すること 開発すること また、アジャイル開発においては、1イテレーション内で以下のプロセスを同時に進行します。 計画づくり 分析 設計とコーディング テスティング 導入 各プロセスでどのようなプラクティスを実行すればいいのかは、以下の表を見ればわかります。 XPプラクティス 計画づくり 分析 設計とコーディング テスティング 導入
どれだけコーディングしたかチェックするため、svnのdiffの行数を取得するコマンドを考えました。 下のコマンドを叩くと、変更された行の総数が表示されます。 (2011-08-17修正) 以前のコードはdiffのヘッダ行まで取得してしまっていたので、正しい数値が得られるよう修正しました。 svn diff -r {before}[:{after}] -x -b {path} | grep -E '^[+\-][[:blank:]]' | wc -l
HTTP_Request2::send()でhttpsサイトに接続しようとしたら、下記のようなエラーが返ってきました。 Malformed response: Unable to connect to ssl://www.google.com:443. stream_socket_client(): unable to connect to ssl://www.google.com:443 (Unknown error) Unknown errorというのが一番タチが悪い。エラーが追えません。 検証のためcurlコマンドで同じURLに接続を試みると、ちゃんとレスポンスが返ってきます。何か設定をし忘れているに違いない。 原因 どうやらHTTP_Request::setConfig()で正しい接続設定を行えていない場合、”Malformed response”というエラーが出るようです。 私の
さくらVPS(CentOS 5.5が標準OS)を試用中です。早速gitを使おうと思いましたが、デフォルトでは未インストール。yumで入れようと思いましたが、標準のリポジトリではインストールできません。 というわけで、リポジトリを追加します。 インストール手順 1. 参照リポジトリを追加する /etc/yum.repos.d/rpmforge.repo を作成し、下記のように追記します。 [rpmforge] name = Red Hat Enterprise $releasever - RPMforge.net - dag mirrorlist = http://apt.sw.be/redhat/el5/en/mirrors-rpmforge enabled = 0 gpgcheck = 0 # yum install git --enablerepo=rpmforge Loaded pl
便利なプラグインをまとめて紹介します。 CenterPoint DL先: Smustard(TM) – the Companion to Sketchup(TM) – CenterPoint 選択したオブジェクトの中心点を作成するプラグイン 選択後、[プラグイン] > [Set Center Point]をクリックすると中心に点が作成される 円などの図形の中心点や、2オブジェクトの中点を知りたいときに便利 Hole Punching Tool DL先: Hole Punching Tool (SU Plugin) – Ruby Library Depot 壁面に簡単に穴を開けるプラグイン 窓やドアの形のコンポーネントを作って「Punch」すれば穴が開く コンポーネントを移動させれば穴も追従する 穴をふさぐときは「Undo Punch」するだけなので簡単 解説ページ: 壁に穴を開けるプラグイ
アクションの開発時など、画面にデバッグメッセージが出しづらい時のために、きわめて単純なデバッグ関数を作りました。 function.phpに定義してやれば使えます。 // {template_path}/function.php /** * デバッグメッセージをログファイルに出力する関数 * * @param string $output 出力したい文字列 * @param string $path 出力先のパス(未指定時はテンプレートと同じディレクトリのlog.txt) * @see [030] WordPress のデバッグ | WordPress experiment – twentyten customize- http://experiment.street-square.com/2010/10/04/debug/#more-923 */ function my_log_mess
imgタグのwidth/height要素を指定していない場合、イメージがどう表示されるかはブラウザによって異なる。 すべてのブラウザで画像オリジナルのwidth/heightを取得しようとしても、ブラウザ毎にパラメータやメソッドが異なる jQueryを利用すると、下記コードで画像の実際のサイズを取得できる /* * 画像の実際のサイズを取得する * * @param string image img要素 */ function getActualDimension(image) { var run, mem, w, h, key = "actual"; // for Firefox, Safari, Google Chrome if ("naturalWidth" in image) { return {width: image.naturalWidth, height: image.na
テンプレート内のif文で「isset()」や「empty()」などのPHP関数を使いたかったのですが、エラーになってしまいました。 どうやら、テンプレートのどこかで $default_modifiers を設定すると、使えなくなってしまうようです。 私の場合はEC CUBE改造中にこの問題にぶつかりました。grepしてみたら、/data/class/SC_View.php あたりで設定してしまっている模様。 対策としては、「{if isset($var|smarty:nodefaults)}」のように修飾子を追加して、default_modifiersを無効にすると良いようです。 修飾子のルールが未だによくわかっていないので、なぜこれを追加すると動くのかも理解していません。 (この仕様はあまりSmartとは思えないです) 参考 Smartyでdefault_modifiers指定時に{de
オープンソースコード等を見ていると、リビジョン番号などがソースに記載してあることがあります。 どうやらSubversion(やCVS)で実現できるようです。 私は基本的にWindowsでTortoiseSVNを使ってリポジトリのやりとりをしているので、その設定方法をメモしておきます。 手順 1.TortoiseSVNの設定 今回は例としてPHPファイルが自動変換されるよう設定します。 svn管理下のファイルを右クリック->TortoiseSVN->設定 [一般]カテゴリ内の、「Subversionの設定ファイル」の横にある[編集]ボタンをクリック テキストエディタでconfigファイルが開くので、以下のように修正する enable-auto-props = yes ←コメントアウトを外す [auto-props] *.php = svn:keywords=Id Date Author Re
そもそもテストの条件とは? refs: Ruby on Rails でのモックとスタブの作成 反復可能なこと。テストを自動化する場合には、テスト結果を検証できるように、テスト・ケースは毎回同じ結果を返す必要があります。 実行時間が短いこと。テスト・ケースの実行に時間がかかりすぎるようだと、テスト・ケースを実行しなくなるのでテスト・ケースが役に立ちません。 単純なこと。テストの作成が難しすぎると、テストを作成しなくなります。 スタブやモックが必要になる理由 refs: Start! Ruby – RSpecの構文 全てを「本物」でテストしようとすると、「全てが揃わないとテストできない」という本末転倒な事が起こりかねない。 たとえば時刻に関するオブジェクトのように、システムの構成によって変化してしまうオブジェクトがあると、テスト環境によって差異ができてしまう。 UnitTestが大きな問題に移
遅ればせながら、HTML5の勉強を始めました。divタグだらけの(X)HTMLに比べ、意味のあるタグで構成できるようになり、可読性が上がっています。願わくばHTML5の普及後、クロスブラウザ対策という雑用から解放されますように。 さしあたり、HTML5でページを作るときの最小構成をメモしておきます。The W3C Markup Validation Serviceで問題ないことを確認しています。 <!DOCTYPE HTML> <html lang="ja"> <head> <meta charset="utf-8"> <meta name="description" content="HTML5 Tamplate" /> <meta name="keywords" content="HTML,HTML5,template" /> <link rel="stylesheet" href="
MySQLにてBOOLEAN型のフィールドを作りたいと思ったのですが、Googleで調べると「MySQLのBOOLEAN型は実質tinyint(1)と同じ」といったことが書いてありました。 また、MySQLで厳密なBOOLEAN型を表現したければ、「ENUM(‘TRUE’, ‘FALSE’)」を使った方がいいとも書いてありました。 個人的にはSQL文に「WHERE flag IS TRUE」と書いてSELECTできれば問題ないので、そういった挙動ができるのか確認しました。 実験した環境のMySQLバージョンは5.1.41です。 データはどのように格納されるのか? 以下のようにテーブルを作り、テストデータを流し込みました。 CREATE TABLE boolean_test ( `id` INT NOT NULL AUTO_INCREMENT, `flag` BOOLEAN, PRIMARY
CodeIgniterには便利なライブラリやヘルパが多数用意されてますが、すべて覚えるのは面倒ですし、間違いもおきます。そういったことはIDEに助けてもらいたい。が、私がよく使うNetBeansは、デフォルトでは単語を補完してくれない。 そこで、以下の方法で単語補完をできるようにしました。 手順 CodeIgniterをNetBeansのプロジェクトに登録すると、以下のようなディレクトリ構成になっているはず。
設定チュートリアル “/etc/logrotate.d/” 配下に設定ファイルを作成する 「logrotate -d 作成したファイル名」でデバッグする 翌日午前4時にローテーションが成功していることを確認する 実行ログ: /var/lib/logrotate.status 設定ファイルの書き方 設定例 対象ファイル: /hige/log/ ディレクトリ内の *.log ファイルすべて /moja/log/ ディレクトリ内の *.log ファイルすべて オプション 毎日実行 対象ファイルが見つからなくてもエラーで停止しない ログファイルが空ならログローテーションしない 7世代前まで管理 1MB以上のログファイルだけログローテーションする
defineで定義するパターンと、連想配列で定義するパターンがあります。基本的に後者の方が便利です。 defineで定義する方法 1. /app/config/bootstrap.php に下記を追加する
bakeできなかったので、下記を参考にやり直しました。 CakePHP SQLite – Stack Overflow bake all するとWarningが続々出ますが、一応動きました。 cakephp’s datasources at master – GitHub から「CakePHP Datasources Plugin v0.2」をダウンロードする 「cakePHPディレクトリ/app/plugins/datasources」内に解凍する プラグイン内の「models/datasources/dbo/dbo_sqlite3.php」を編集し、「class DboSqlite3 extends DboSource {」より前の行に「App::import(‘Datasource’,'DboSource’);」を追加する <?php /** * SQLite layer for D
XAMPP 1.7.3 に入っているMySQLは、デフォルト設定だと文字コード指定が適当なので、普通に使っていると文字化けすることがあります。 コマンドプロンプトから下記を実行すると現在の文字コード設定が確認できます。 [c:\]$ c:\xampp\mysql\bin\mysql -uroot mysql> SHOW variables LIKE '%char%'; +--------------------------+--------------------------------+ | Variable_name | Value | +--------------------------+--------------------------------+ | character_set_client | latin1 | | character_set_connection | l
ワンクリックでtelnetログインし、自動でID/PWを入力するマクロ いじるファイル: Poderosaインストールディレクトリ > Macro > AutoLogin.js 登録方法: [ツール] > [マクロ] > [環境設定] > [新規] で上記ファイルを指定 //AutoLogin.js import Poderosa; import Poderosa.ConnectionParam; import Poderosa.Terminal; import Poderosa.Macro; import Poderosa.View; import System.Drawing; import System.Threading; var vars = new Object(); // telnetの場合 connect("ホスト名", ConnectionMethod.Telnet, 2
次のページ
このページを最初にブックマークしてみませんか?
『http://1000g.5qk.jp/』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く