データをまとめて表示するにはarray_agg() が便利 

May 01 [Thu], 2014, 14:28
こんな感じのデータがあったとします。









カテゴリ詳細
猫科ねこ
猫科とら
猫科らいおん
犬科いぬ
犬科おおかみ
鳥類からす


このデータを、以下のように取得したい場合





カテゴリ詳細
猫科ねこ, とら, らいおん
犬科いぬ, おおかみ
鳥類からす


SQLは以下のようになります。
SELECT カテゴリ, ARRAY_AGG(詳細)
FROM XXX
GROUP BY カテゴリ

ARRAY_AGG() で、指定した行を集約して配列として取得することができます。
集約対象の列はGROUP BY に入れないのはほかの集約関数と同じですね。

あ、必要ならArray_To_String()で整形もしましょう。
>> Array_To_String(配列, 区切り文字);

[PHP]文字数のカウント 

January 21 [Tue], 2014, 11:50
文字数をカウントする場合strlen()を呼び出すのが一般的ですが、
UTF-8の値を扱っている場合は全角文字が3バイトで数えられたりします。

全角・半角いずれにしても1文字と数えたい場合はmb_strlen()を呼び出しましょう。
(文字コードを明示的にすること)

mb_strlen("abc", "UTF-8") => 3
mb_strlen(”あいう”, "UTF-8") => 3

ここで問題となるのが、全角を2文字としてカウントしたい場合。
mb_strlen()では解決できません。

そこで、一度ShiftJISに変換してからstrlen()を呼び出す という手順を踏みます。

strlen(mb_convert_encoding("abc", "sjis", "UTF-8")) => 3
strlen(mb_convert_encoding("あいう", "sjis", "UTF-8")) => 6

ShiftJISの場合は、strlen()で得られる値が全角2バイトと定められているので、
この手順を踏むことで半角での文字数を得ることができるはず。

全角⇔半角 の変換を行う 

January 10 [Fri], 2014, 15:56
PHPで文字列の全角⇔半角を行う際には、mb_convert_kana()関数を使います。

変換後の文字列 = mv_convert(変換対象の文字列, オプション);

変換のオプションは以下の通り。必要に応じて変えましょう。

r  「全角」英字を「半角」に変換
R  「半角」英字を「全角」に変換
n  「全角」数字を「半角」に変換
N  「半角」数字を「全角」に変換
a  「全角」英数字を「半角」に変換
A  「半角」英数字を「全角」に変換
s  「全角」スペースを「半角」に変換
S  「半角」スペースを「全角」に変換
k  「全角カタカナ」を「半角カタカナ」に変換
K  「半角カタカナ」を「全角カタカナ」に変換
h  「全角ひらがな」を「半角カタカナ」に変換
H  「半角カタカナ」を「全角ひらがな」に変換
c  「全角カタカナ」を「全角ひらがな」に変換
C  「全角ひらがな」を「全角カタカナ」に変換
V  濁点付きの文字を一文字に変換。K、Hと共に使用

EXPLAIN ANALYZE 

December 25 [Wed], 2013, 16:54
前に書いたこんな記事 ⇒ 

EXPLAIN ANALYZE [ SQL文 ] を試してみようってお話。
試してみたのですが、解読がなかなか難しいのです。

SQLのパフォーマンスチューニングはちょいちょい出ているので使いこなしたいものですな...

[VMware Player]パワーオン中にエラーが発生しました。 

December 04 [Wed], 2013, 8:31
ある日、VMwarePlayerの仮想環境を起動しようとすると以下のようなエラーが。


パワーオン中にエラーが発生しました: 内部エラーが発生しました。

原因は、VMware立ち上げのためのサービスが開始していないことでした。
(自動起動にはなっているのですが、何らかの原因で立ち上がらないことがあるとか?)

コントロールパネル>管理ツール>サービス から、 VMware Authorization Service のサービスを開始

これで動くようになりました。
あー焦った...

Pear.Auth のエラー 

November 30 [Sat], 2013, 11:14
以前こんな記事を書いた。
[PHP]php.ini メモ
…Smartyを入れたら〜って書いたけど、実際Pear/Auth のエラーだよね。今思えば。

以下のようなエラーが出るので、php.iniの設定で非表示にしましょうとか書いたのですが
>Deprecated: Assigning the return value of new by reference is deprecated in /usr/share/pear/Auth.php on line 469
改めて調べたところ、Auth.phpを編集すると消えるとのこと。

該当行は
$obj =& new $storage_class($options);

これの =& を = にするとエラーは出なくなります。

こちらのサイトを参考にしました。
http://blog.still-laughin.com/archives/2011/11/pearauth_1.html

UIElementCollectionに対してLinqを使う 

November 22 [Fri], 2013, 16:38
System.Windows.Controls.UIElementCollectionは、そのままではLinqを使うことができません。
けど使いたい。
主にSystem.Windows.Controls.Panel.Childrenプロパティを使うときにそう思います。

そこで、以下のコード
var data = children.OfType<UIElement>();

これで、IEnumerable<UIElement>に変換されたUIElementCollectionを得ることが出来るので、
Linqを使うことが可能です。

[WPF]初期フォーカスをXAMLで当てる 

June 25 [Tue], 2013, 15:17
コード側で[IsFocused = True]ってしてもいいちゃいいんだけど、
XAMLでやりたい場合もある。

FocusManager.FocusedElement="{Binding ElementName=XXX}"

で、XXXに初期フォーカスが当たります。

メモ 

April 16 [Tue], 2013, 13:21
Zipでアーカイブするための、ZipOutputStream ってクラスがあるらしい。
この先使いそうな気がする。

メモメモ。 

April 11 [Thu], 2013, 19:31
UIスレッドにアクセスできなくて何ちゃら、みたいなエラーでよく詰まります。


// UIスレッドを触るためのコンテキストを取得
this.UISyncContext =TaskScheduler.FromCurrentSynchronizationContext();


Task.Factory.StartNew(() =>
{
  // UIスレッドにやってほしい処理
}, CancellationToken.None, TaskCreationOptions.None, this.UISyncContext).Wait();

で動く、みたい、多分。
スレッド云々って難しくて苦手だよー・・。
P R
プロフィール
  • プロフィール画像
  • アイコン画像 ニックネーム:ceres
  • アイコン画像 性別:女性
読者になる
c# * Java * c * PHP

今はWPFとか
http://yaplog.jp/ceres_2323/index1_0.rdf