2010年2月26日金曜日

【jQuery】jQuery UIのテーマ(デザイン)に合わせるCSSハック

一部分だけjQuery UIを使っていると、その部分だけ違和感があるので、他のボタンやアイコンもjQuery UIのデザインに合わせるためのメモ。

まず下記ドキュメントを読んでjQuery UI CSS Frameworkを少し理解する。

The jQuery UI CSS Framework

buttonなどに同じスタイルを適用するには下記サイトを参考に(サンプルコードもある)。

Styling Buttons and Toolbars with the jQuery UI CSS Framework

jQuery UI 1.8からbuttonウィジェットが実装されたけど、上記サイトではそれを使わないでも実装する方法を紹介。

↓こんな感じ

image

2010年2月25日木曜日

【jQuery】jQueryを使ったプルダウンメニュー

最近はjQuery UIを頻繁に使っているので、jQuery UIのテーマにあったプルダウンメニューがないものかと探したメモ。

jQueryのプラグインとして使えるfg-menuというのが良さそう。

image

さくっとイメージが分かるのはこちらのサイトで。

デモとサンプルコードは本家のサイトから。

他にもjQueryを使った便利でカッコイイサンプルが置いてあるので一度見ておくと後で参考になりそう。

What we're thinking | Filament Group, Inc., Boston, MA

2010年2月24日水曜日

GoogleがOn2を買収してVP8ビデオコーデックが主流になるか

HELIOS.CoTVを開発したこともあって気になる動画ネタ。GoogleがOn2を買収したという発表された。

米GoogleがOn2の買収を完了、FSFが「VP8」フリー化を求める書簡を発表

H264コーデックのライセンスについては前の記事で書いたけど、これでVP8コーデックがライセンスフリーで使用できるようになれば、H.264から一気にVP8コーデックが主流になるとおもう。

H.264とVP8の違いは前の記事を参考に。

H.264とOn2 VP6の動画Codec比較(違い)

2010年2月23日火曜日

H.264コーデックのロイヤリティ(ライセンス)

HELIOS.CoTVでも使っているH.264のビデオコーデック。

このコーデックを使っている場合にロイヤリティが発生するかもしれないというのを下記記事を読んで初めて知った。

「H.264」ストリーミングのロイヤリティ無料期間が延長

しかも

ビデオ視聴が無料である限り、H.264の技術を使ってビデオをストリーミングするインターネットサイトにロイヤリティを課していない。

ということは、有料会員制のサイトではH.264コーデックを使用できないということですか?

その辺を調べてみたら下記サイトで詳しく解説してくれてた。

MPEG LA、H.264の共同ライセンス体系を発表-エンコーダ/デコーダは0.20ドル。無料放送は1万ドル/年

購読者が10万以下であればロイヤリティが発生しないらしい。

 

▼関連記事

H.264とOn2 VP6の動画Codec比較(違い)
【FFMpeg】H.264コーデックで高画質ストリーミング配信

2010年2月22日月曜日

DECOチョコを試してみた

一年前に紹介したDECOチョコを試してみた。

イラストはデザイナーのお姉さまが作ってくれた「撃墜マーク」

P1000013

気になるお値段は

小計: 2,250 円
消費税: 112 円
送料: 494円
合計: 2,856 円

でした。数は全部で45個入。

結婚式の2次会のお土産とかで利用すると喜ばれるかも。

2010年2月19日金曜日

【Linux】Icecastの認証設定(htpasswd)

音声をストリーミング再生しているサイトにユーザー名とパスワードで認証設定したときのメモ。

環境は CentOS 5.4(Linux), Icecast 2.3.2, IceS 2.0.1

基本は公式サイトのドキュメントを見れば分かる(英語)。

日本語はお友達のブログが参考に。

ICEcast2 for Windowsへ認証設定

Linux版もWindowsとほぼ同じ。

まずはicecastのconfigファイルに認証設定を適用するmountポイントにauthenticationタグを追記。下のサンプルはicesでストリーミング配信しているマウントポイントに設定する方法

    <mount>
        <mount-name>/ices</mount-name>

        <authentication type="htpasswd">
                <option name="filename" value="/usr/local/etc/auth/htpasswd"/>
                <option name="allow_duplicate_users" value="1"/>
        </authentication>
    </mount>

filenameで指定したファイルはこの時点で存在している必要はない。ただフォルダに書き込み権限が必要。
# mkdir /usr/local/etc/auth
# chown apache. /usr/local/etc/auth

もしくは

# chmod 777 /usr/local/etc/auth

icecastを再起動

# /etc/rc.d/ini.d/icecast restart

ちなみにこの起動スクリプトは前の記事を参考に。

後は管理画面から操作できる。

image

 image

「Manage Authentication」からUser Id、Passwordを入力して登録すると設定ファイルで指定したファイルを作ってくれる。

削除もこの画面からできるので便利。

 

<関連記事>

Icecastのコンパイルとインストール
Icecast + winamp + edcastで音声のストリーミング(ラジオ局)
【Linux】Icecast serverのクライアントIceSをコンパイル、インストール
【Icecast】出力されるstream_startのフォーマットを変更する
【Icecast】別ポートでIcecastサーバーを複数起動する
【Icecast】Winampからストリーミングすると日本語が文字化け

2010年2月18日木曜日

WordpressのNOTICEエラーを出力する設定(error_reporting)

Wordpressの開発をしていて、エラーを出力してくれないなーと思っていたら、Wordpress側でerror_reportingを設定しているみたい。

記述されているのはwp-settings.phpの203行目あたり

そこにコメントで

wp-config.phpに「define('WP_DEBUG',true)」を書け

と書いてあったので記述してみるとNOTICEエラーがいっぱい出力された。

結構サードパーティー製のプラグインの中でもNoticeエラーが出ているので見なかったことにする。

デフォルトでWARNING以上は出力されているので、とりあえずいいかな。

Xdebugを導入していると見やすいのでおすすめ

image

やり方は前の記事を参照。

ただプラグインの中でerror_reportingを指定されていると気づかないことも多い。ハメられたのが「wp-spamfree」というプラグインの中で

error_reporting(0)

を指定されていたのでfatal errorさえも出力されない状態となっていた。

開発するときは

error_reporting(E_ALL);

とどこかで宣言した方がいいかもしれない。

2010年2月17日水曜日

【Wordpress】WPliteに出てこないメニューを消したい

管理画面のメニューの表示、非表示を制御できるプラグインWPliteでWPliteの設定画面に出てこないメニューに遭遇。

Wordpress MUで「自分のブログ」などが出てこない。

解決方法はwplite.phpを下記のようにadd_actionの優先度を下げる

add_action('admin_menu', 'wplite_init', 98);
add_action('admin_menu', 'wplite_disable_menus', 99);

その他、管理者でもWPliteを有効にするとかはdeeekiのブログを参考に

WPliteプラグイン バージョン1.3.1と2.8.4の特徴比較

2010年2月16日火曜日

Wordpress 開発リファレンスのリンク集

毎回検索しているので自分用メモ。Wordpress muのインストールは前の記事を参考に。

 

基本は本家のDeveloper Documentationに欲しい情報はある。英語だけど。

 

< 2014/09/28 Modified >
アクションが実行される順番が記述された公式ドキュメントをメモ

 

< 2015/02/09 Modified >
PHPDocの書き方をメモ。特に@paramが配列の場合、jsdocと書き方が違うので戸惑う。

 

< Related Posts >

2010年2月15日月曜日

Oisix(おいしっくす)のお試しセットが来た

Teniteoのクチコミで紹介されていたOisix(おいしっくす)

そのお試しセットが良さそうだったので、注文してみたのがこの前届いた。

期待していた牛乳はそれほど「美味しい!!」みたいな感動はなかったけど、確かに市販品よりかは濃厚。

野菜たちは野菜炒めにして食べてみた。・・・まぁ美味しいかな。

全体的にスーパーよりかは品質が上なのは間違いない。あとは金額とのコストパフォーマンスがどうなのかという感じ。

配達もしてくれるので、忙しい時には便利かも。

実際利用するかはまだ迷っている途中。

ヨーグルトが濃厚でおいしいという噂があるので試してみたい。

検索してみると紹介しているサイトもたくさんあるのでそちらも参考に。

今日はカレーを作って、お試しセットの肉をやっつける予定。レモンもあったけど、この調理方法が悩んだ末カレーにぶち込むことに決定。どんな感じになるのやら。

2010年2月12日金曜日

【Android開発】TextViewにHTMLを表示する

Wordpressと連携するAndroidアプリを開発しているときにWordpressの記事をAndroid側で表示するときになるべく記事のレイアウトをそのままで表示するためのメモ。

はじめはHtmlViewを使うのかと思ったけど、さくっとTextViewにsetできるみたい。参考

サンプルコード

CharSequence sHtml = Html.fromHtml(objInfo.getString("post_content"));
objText.setText(sHtml);

tableタグとか複雑な構造は表現できないみたい。詳しくはリファレンス参照。

style属性が効くのかどうかも謎。

aタグをクリックできないので、また調査。

 

<関連記事>

【Android開発】HttpClientとHttpGetでサーバーとjson通信する

2010年2月10日水曜日

【Android開発】画面の回転について調べてみた(固定する)

画面を固定にしたくて調べたメモ。

基本はマニフェストXMLにscreenOrientationを記述すれば固定される。

<activity android:name=".TestActivity" android:label="@string/app_name" android:screenOrientation="portrait"/>

設定する値はこちらを参照。

参考:Android Wiki 画面の向き(ScreenOrientation)

さらに回転した後に再描画するときはonStopで値をPreferenceManager.getDefaultSharedPreferencesとかで格納しておいて、onCreateしたときにsavedInstanceStateがnullになっているかif文で判断すれば出来るみたい。

あと、他のintentを呼び出しておいて、戻ってきたときに画面が横向きか縦向きかを判断して、プログラミングから画面を回転させるには次のようにやる。

Configuration config = getResources().getConfiguration();
if(config.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
	this.setRequestedOrientation(Configuration.ORIENTATION_PORTRAIT);
}

これは横向きだったら縦向きにする例。

2010年2月9日火曜日

【Android開発】RatingBarの大きさ(横幅、高さ)を調整したい

RatingBarのデフォルトの大きさは5つぐらいで画面いっぱいになるので、一覧で小さく表示させるために調査したメモ。

デフォルトの大きさは

image

style属性に

?android:attr/ratingBarStyleSmall

と記述しれば下ぐらいの大きさになる。

image

?android:attr/ratingBarStyleIndicator

は少し大きめ

image

SDKにあるサンプルのApiDemosをみればソースコードも分かる。(android-sdk-windows\platforms\android-1.6\samples\ApiDemos)

2010年2月8日月曜日

【Android開発】端末の固有IDを取得する

Android端末からのアクセスを解析するために端末の固有IDをアプリから取得できるか調査したメモ。

ANDROID_IDというのを取得できるみたい。情報元

String id = android.provider.Settings.Secure.ANDROID_ID;

アプリから書き換えることもできるらしい。

端末一意に決まるMACアドレスな情報がほしいのだけれど・・・

2010年2月5日金曜日

【Android開発】ダイアログの実装(サンプルコード)

Androidの開発でダイアログを実装するときに参考になったサイトをメモ。

Android で再開する Java プログラミング(14) - ダイアログを制するものがAndroidを制する!

Dialogの実装方法を整理してみたよ

初めはDialogをextendしてたけどAlertDialogだけでいろいろできそう。

▼JavaScriptのalertみたいに

new AlertDialog.Builder(this)
.setMessage("Hello, Wolrd!")
.setPositiveButton("OK", null)
.show();

image

▼タイトルをセット(setTitle)するとこうなる

image

▼「しばらくお待ちください。」を出す

ProgressDialog objDialog = new ProgressDialog(this);
objDialog.setMessage("しばらくお待ちください。...");
objDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
objDialog.show();

image

閉じるときは

objDialog.dismiss()

2010年2月4日木曜日

【Android開発】グローバル変数的な共通のクラス(Java)

Javaでログイン情報の格納とかでプロジェクト共通で参照するグローバル変数的なクラスをどう実装するか調査したメモ。

シングルトン(Singleton)というデザインパターンを使えばできるみたい。

そういえば「Java言語で学ぶデザインパターン入門」を読んだときにそんなん書いてあったな・・・。

詳しく(サンプルプログラム)は下記サイトを参考に。

@IT:Java TIPS -- クラスのインスタンスを1つに保つ(Singletonパターン)

例えば、ユーザー情報を格納する場合は次のような感じ。

public class UserSession {
	// Start プロジェクトで共通のインスタンスにする処理(シングルトンパターン)
	private static UserSession instance = new UserSession();
	 
	private UserSession(){}
	 
	public static UserSession getInstance() {
		return instance;
	}
	//  End  プロジェクトで共通のインスタンスにする処理(シングルトンパターン)
	
	private String _UserName = "";
	
	public void setUserName(String sUserName) {
		this._UserName = sUserName;
	}

	public String getUserName() {
		return _UserName;
	}
}

このクラスをimportして

UserSession objUser = UserSession.getInstance();
objUser.setUserName("hogeuser");

をしてから、別のActivity(クラス)で

UserSession objUser = UserSession.getInstance();
Log.d("tag", objUser.getUserName());

をしてみるとさっきセットした名前を出力してくれているはず。

.NETの開発でも応用できる。

デザインパターンをもう一度勉強しなおそうかな。

2010年2月3日水曜日

【Android開発】スタイルにborderがないけど枠線を表示したい

Android開発でデザインを整えているときに枠線を付けたいけど、それらしいプロパティがないのでどうやって実現するか調査したメモ。

ここのメーリングリストを参考にした。

次のようなxmlファイルを/res/drawableに作成(今回はborder.xmlとした)

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <stroke android:width="3px" android:color="#CCCCCC" />
    <padding android:left="2px" android:top="2px"
            android:right="2px" android:bottom="2px" />
    <corners android:radius="2px" />
</shape>

このxmlを枠線を付けたいウィジェットのbackgroundの属性として指定する。

image

実行した結果がこちら。

image

応用でいろいろ使えそう。

2010年2月2日火曜日

【Android開発】HttpClientとHttpGetでサーバーとjson通信する

Androidとサーバーとのやり取りをプログラムしているときのメモ。

まずハマったのがHttpClientで通信しようとしても、「unknown host」とエラーとなる。初めはDNSとかAndroidエミュレータの名前解決に問題がありそうだと調べたけど違った。

Androidのマニフェストに

<uses-permission android:name="android.permission.INTERNET" />

を記述しないと、プログラムからインターネットに接続できないらしい。

参考になったのが下記サイト。

初めてのAndroid -第7章 世界との接続-

さらにサーバーのレスポンスの処理とかは下記サイトを参考に。

[android] androidでBingでJSONで

GETでJSON文字列を取得するメソッドは次のような感じ。

/**
 * 指定URLからgetした文字列を取得する
 * @param sUrl
 * @return
 */
public String getData(String sUrl) {
	HttpClient objHttp = new DefaultHttpClient();
	HttpParams params = objHttp.getParams();
	HttpConnectionParams.setConnectionTimeout(params, 1000); //接続のタイムアウト
	HttpConnectionParams.setSoTimeout(params, 1000); //データ取得のタイムアウト
	String sReturn = "";
    try {
    	HttpGet objGet   = new HttpGet(sUrl);
        HttpResponse objResponse = objHttp.execute(objGet);
        if (objResponse.getStatusLine().getStatusCode() < 400){
            InputStream objStream = objResponse.getEntity().getContent();
            InputStreamReader objReader = new InputStreamReader(objStream);
            BufferedReader objBuf = new BufferedReader(objReader);
            StringBuilder objJson = new StringBuilder();
            String sLine;
            while((sLine = objBuf.readLine()) != null){
            	objJson.append(sLine);
            }
            sReturn = objJson.toString();
            objStream.close();
        }
    } catch (IOException e) {
    	return null;
    }	
    return sReturn;
}

POSTの場合は下記。

/**
 * 指定URLからpostした文字列を取得する
 * @param sUrl 送信先URL
 * @param sJson 文字列に変換したJSONデータ
 * @return
 */
public String postJsonData(String sUrl, String sJson) {
	HttpClient objHttp = new DefaultHttpClient();
	String sReturn = "";
    try {
    	HttpPost objPost   = new HttpPost(sUrl);
    	List<NameValuePair> objValuePairs = new ArrayList<NameValuePair>(2);  
    	objValuePairs.add(new BasicNameValuePair("json", sJson));
        objPost.setEntity(new UrlEncodedFormEntity(objValuePairs, "UTF-8"));

        HttpResponse objResponse = objHttp.execute(objPost);
        if (objResponse.getStatusLine().getStatusCode() < 400){
            InputStream objStream = objResponse.getEntity().getContent();
            InputStreamReader objReader = new InputStreamReader(objStream);
            BufferedReader objBuf = new BufferedReader(objReader);
            StringBuilder objJson = new StringBuilder();
            String sLine;
            while((sLine = objBuf.readLine()) != null){
            	objJson.append(sLine);
            }
            sReturn = objJson.toString();
            objStream.close();
        }
    } catch (IOException e) {
    	return null;
    }	
    return sReturn;
}

サーバー側の処理は前の記事を参考に。

<2010/03/18 追記>

タイムアウトの処理を追記

 

<関連記事>

jQueryを使ってPHPとJSON形式のデータをやり取りする方法
【VB.NET】アプリケーションからJSON形式でサーバと通信する
【PHP】json_decode, json_encodeを使えるようにjsonをインストール

2010年2月1日月曜日

【Android開発】Java用のjsonライブラリ「JSONIC」をインストール

サーバーと通信するときはjsonを使いたくて調べたメモ。

基本はorg.jsonライブラリを使えばできると思う。

もっと簡単にエンコード、デコードできそうな「JSONIC」というライブラリがあったのでインストールしてみた。

ここからダウンロードしてきて、jarファイルをlibフォルダに置いて(なければ作る)、プロジェクトのプロパティ → Java Build Path → Libraries → Add JARsをすれば完了。

リファレンスは公式を参照。

変換できるのはPOJO(Plain Old Java Object)(シンプルなJavaオブジェクト)。

導入してみたもののAndroidで開発する場合はorg.jsonの方が結局使い易かった。

Related Posts Plugin for WordPress, Blogger...

Blog Archives