Blog 移転しました。

tumblr blog http://nkzawa.tumblr.com

PreferenceActivityのレイアウト変更

PreferenceActivityがListActivityを継承しているので、同様にListViewを含めたレイアウトを定義できる。 スクロールする要素を追加したいしたい場合は、getListView().addHeaderView(view)とかでできそう。 public class Preferences extends PreferenceAct…

Androidアプリを作ったときにやったこと

少し前になりますが、Bookmark Homeというブックマーク関連のAndroidアプリを公開しました。AndroidもJavaも初めてで制作期間は2ヶ月ぐらい。その時の記録です。 アプリについて ホームアプリのようなUIのブックマークアプリ。見た目はiPhoneにも近いです。…

Androidでリソースの画像を角丸に変換するやり方メモ

// リソースからbitmapを作成 Bitmap image = BitmapFactory.decodeResource(context.getResources(), R.drawable.image); // 画像サイズ取得 int width = image.getWidth(); int height = image.getHeight(); // リサイズ後サイズ int w = 100; int h = 100…

jQueryプラグインは簡単にGoogle Chromeエクステンションにできる

この前作ったjQuery flickableをGoogle Chromeのエクステンションにしてみたらすごく簡単だった。 設定ファイルとJS、CSSを少し書くだけ。 ファイルリスト 適当なディレクトリに次のファイルを用意。 manifest.json jquery.js jquery.flickable.js content_s…

iPhoneのようにフリック操作でスクロールできるjQueryプラグインつくった

iPhoneやAndroid風にマウスでフリックスクロールできるようにするjQueryプラグインつくりました。 ページ末端を過ぎると戻るような動作を再現しています。ページ区切りを設定するとiPhoneのホーム画面のようなUIも実現できます。 現在はアルファ版として公開…

jQueryのテスト用ブックマークレット

jQueryのプラグインを作っていると、 好きなサイトにプラグインの機能を適応させて動作の確認をしたい場合があるんですが、 それを簡易的に行うちょっとしたブックマークレット。 javascript: (function() { var $, s = document.createElement('script'); s…

画像やリンクをクリックしてファイル選択できるようにするjQueryプラグインをつくった

通常、fileタイプのinput要素をクリックしたときのみファイルを選択することができますが、 画像や文字をクリックしたときにもファイル選択ダイアログを表示し、ファイルをアップロードできるようにします。 簡単にいうと、AjaxUploadのファイル選択部分と同…

シンプルにAjaxファイルアップロードできるjQueryプラグイン

Ajaxライクに非同期でファイルをアップロードできるjQueryプラグインつくりました。 同様のプラグインやライブラリはいくつかありますが、Flashを使用しないシンプルな実装で jQueryのスタイルを踏襲しているものがなかった(要は好みじゃなかった)ので再実…

jQuery.autopager1.0.0をリリースしました

スクロールで次ページを自動読み込みするjQueryプラグイン v1.0.0をリリースしました。 全バージョンから全面的に書き直し、クリック等をトリガーにした読込みにも対応させました。 デモ サンプル 自動ページング機能を有効にするには、次ページへのリンクが…

CakePHPが起動されてからdispatchするまで

app/webroot/.htaccess リクエストされたURLをクエリに付与してindex.phpを呼び出す形式に書き換え RewriteCond %{REQUEST_FILENAME} !-d # ディレクトリが存在しない場合 RewriteCond %{REQUEST_FILENAME} !-f # ファイルが存在しない場合 RewriteRule ^(.*…

CakePHPでsmartyを使う際、メソッドの不要な戻り値を表示しない方法

メソッドに表示したくない戻り値がある場合、それを出力しないようにするバッドノウハウ。 {$session->flash()} 上記はメソッドがtrueを返すため"1"と表示されてしまう 対処方法 helperに何もしないメソッドを作って戻り値を捨てる void($session->flash())}

CakePHPでユーザーIDかメールアドレスどちらでもログインできるようにする方法

認証時に、ユーザIDとパスワードなどの組み合わせだけではなく、 メールアドレスとパスワード等、複数のカラムどれでもログインできるようにする方法。 サンプル Authコンポーネントをそのまま使用。 一方の組み合わせで認証に失敗したら、もう一度、別カラ…

UbuntuにRuby、Rails、Passengerをインストール

ruby $ sudo apt-get install ruby ruby-dev irb libopenssl-ruby gem $ sudo apt-get install rubygems $ vi ~/.bashrc # gemにパスを通す export PATH="$PATH":/var/lib/gems/1.8/bin $ source ~/.bashrc rails $ sudo gem install rails passenger $ sudo…

AutoPagerizeのように自動読み込みができるjQueryプラグイン

GreasemonkeyスクリプトのAutoPagerizeやFirefox add-onのAutoPagerのように、スクロールするだけで自動ページングできるjQueryプラグインを作ってみました。※10/22 全面的に書き直したv1.0.0をリリースしました。 詳しくはhttp://lagoscript.org/jquery/aut…

C言語で文字列のクイックソート

コマンドライン引数で受け取った文字列をstrcmpで比較してソートする。 #include <stdio.h> #include <string.h> void quicksort(char *array[], int left, int right) { if (left >= right) return; int l = left; int r = right; char *pivot = array[(left + right) / 2]; //</string.h></stdio.h>…

C言語でクイックソート

Cだといちいちめんどくさい。 #include <stdio.h> void quicksort(int array[], int left, int right) { int l = left; int r = right; int pivot = array[(left + right) / 2]; // 中央からピボットを選択 int buf; while (1) { while (array[l] < pivot) l++; while</stdio.h>…

PHPでクイックソートというものをやってみた

一般的に最も高速なソートのアルゴリズムらしい。 アルゴリズム 1. 適当な数(ピボットという)を選択する (この場合はデータの総数の中央値が望ましい) 2. ピボットより小さい数を前方、大きい数を後方に移動させる (分割) 3. 二分割された各々のデータ…

Prototype.jsのbind()がすること

バージョン1.6.0.3。 Function.prototype.bind() thisと引数の値を固定化した関数を返すメソッド。 第一引数にthisとなる値、第二引数以降に固定化する引数の値を指定する。 Function.prototypeを直接拡張している。 Object.extend(Function.prototype, { //…

Prototype.jsの$()がすること

確認したバージョンは1.6.0.3。 $() Prototype.jsで拡張したelementオブジェクト(の配列)を返す関数。 引数が複数の場合は、再帰的に自身を呼び出し配列にセット。その配列をreturn。 引数が一つで文字列であればidとみなしてelementオブジェクトを取得す…

Ubuntuでmanが使えない

Ubuntuのデフォルトでは日本語マニュアルがインストールされていないらしい $ man man No manual entry for man マニュアルのインストール $ sudo apt-get install manpages-ja manpages-ja-dev manpages-ja-devは、システムコールとLibcのマニュアル 参考 m…

PHPの配列ループ

php

繰り返しいろいろ。ループ回数も取得する場合。 foreach $value) { // なんらかの処理 echo $i++; } while foreachのように配列のコピーを作成しないのでメモリを節約できる

PHPで特異メソッド(っぽいもの)

php

PHP5.3のラムダが普及すればわりと使えるかも。 クラス定義 $name; array_unshift($args, $this); // 自分自身を第一引数とする return call_user_func_array($method, $args); } } 実行 hello = create_function('$self', ' echo "Hello,…

grep, find, xargs

シェルコマンド。すぐ忘れるので。 WEB+DB PRESS Vol.50の記事のメモ。 grep 正規表現にマッチした行を出力する例: エラーログのうち、タイムアウトは無視する $ grep -i error | grep -iv 'time error' -i : 大文字小文字を無視する -v : マッチしなかった…

Template Methodパターン

Head First デザインパターンのメモ。 Template Methodパターン メソッドにおけるアルゴリズムの骨組みを定義し、いくつかの手順をサブクラスに先送りします。 Template Methodは、アルゴリズムの構造を変えることなく、 アルゴリズムのある手順をサブクラス…

Facadeパターン

Head First デザインパターンのメモ。 Facadeパターン サブシステムの一連のインターフェースに対する、統合されたインターフェースを提供します。 ファサードは、サブシステムをより使いやすくする高水準インターフェースを定義します。 Facedeパターン実装…

Adapterパターン

Head First デザインパターンのメモ。 Adapterパターン クラスのインターフェースをクライアントが期待する別のインターフェースに変換します。 アダプタは互換性のないインターフェースのためにそのままでは連携できないクラスを連携させます。 2つの形式 …

CakePHPでmod_rewriteが使えない場合に

mod_rewriteが使えない環境で、$_SERVERのREQUEST_URI値が取得できずエラーが出るときの対処法。 通常 http://example.com/controller/action/ mod_writeが使えない場合 http://example.com/index.php/controller/action/app/config/core.php

CakePHPとDBの文字コードを別にする方法

cakeはUTF-8のままにしときたいけど、DBはSJISじゃないとダメな場合があったので。 単純に、モデルのbeforeFind、AfterFindなどを使ってエンコードを変換する。 うまくいったように見えるけど、ホントにこれでいいかはわかりません。 MySQLとかなら、DATABAS…

PHP_ObjectでPHPマニュアルをパースするサンプル

php

PHP_ObjectでPHPマニュアルをパースしてCSVファイルを作成するサンプル http://jp.php.net/download-docs.php 一つのhtmlファイルとして配布されているPHPマニュアルから関数の説明部分をパースしCSVファイルを作成する。 ファイルはあらかじめダウンロード…