7.03.2011

タイ語 俗語 - その6 แอ๊บแบ๊ว

แอ๊บแบ๊ว

ある程度通じる読み方:εp bεu (エッベゥ)
ほぼ合ってると思われる解釈:かわいい子ぶる。カマトトぶる。またはこれらをする子。

無責任な解説:
・昔で言うところの「ぶりっ子」と同じ。特に、かわい子ぶった顔写真などを見たときなどに聞く機会が多い。

では使用例:
[ภาษาญี่ปุ่น]
このおばちゃんは歳の割に、よくかわい子ぶるね。
kono obatyan ha toshi no wari ni, yoku kawaiko buru ne.

[タイ語]
ป้านี่แก่แล้วยังทำแอ๊บแป๊วอีกนะ
paa nii gεε lεεw yaŋ tham εp bεu iik na.

[タイ人]

※chromeで再生できやしまへん。

[予備知識]
แก่แล้ว」は「年配」という意味。「ยัง」は「まだ」という意味。「อีก」は「もう一度」という意味で使われるが、ここでは「よく」「いつも」という解釈をする。「年配だけど、いまだによくする」という意味。

[ภาษาญี่ปุ่น]
あなたは男を見ると、いつもかわい子ぶる
anata ha otoko wo miruto itsumo kawaiko buru.

[タイ語]
เธอขอบทำแอ๊บแบ๊วเวลาเห็นผู้ชาย
thəə choap tham εp bεu wee laa hen phuu chaai.

[タイ人]

※chromeで再生できやしまへん。

タイ語 俗語 - その5 งี่เง่า

งี่เง่า

ある程度通じる読み方:ŋii ŋau (ンギィンガゥ)
ほぼ合ってると思われる解釈:アホ、アホな

無責任な解説:
・同じ意味で「โง่」がある。辞書では「โง่」の記載が多い。

では使用例:
[ภาษาญี่ปุ่น]
彼女はいつもアホ
kanojo ha itsumo aho.

[タイ語]
หล่อนงี่เง่าตลอด
loan ŋii ŋau taloat.

[タイ人]

※chromeで再生できやしまへん。

[予備知識]
ここに出てくる「หล่อน」は「彼女」という意味の言葉だが、では「彼」という言葉は何か、答えは「เขา」。辞書などはこの「เขา」にも「彼女」という意味を含んでいるように記載されているが、実際のところは「เขา」を使った場合「彼」を指すことが多いらしい。また同じく辞書には「彼ら」という意味も含んでいるが、実際のところは「พวกเขา」を用い「พวก」(達)を付けることがほとんどとのこと。タイ人曰く小学校教育では「เขา」は「彼」という意味でのみ学習したとのこと。

[ภาษาญี่ปุ่น]
いつも上司はアホな言葉で話す。
itsumo joushi ha aho na kotoba de hanasu.

[タイ語]
เจ้านายชอบพูดจางี่เง่า
chau naay choap phuut jaa ŋii ŋau.

[タイ人]

※chromeで再生できやしまへん。

7.02.2011

タイ語 俗語 - その4 เชย

เชย

ある程度通じる読み方:chəəi (チューィ)
ほぼ合ってると思われる解釈:ダサい

無責任な解説:
・日本語の「ダサい」の反対の意味の俗語は無いような気がするが、タイ語では เท่ห์ が反対の意味の俗語。意味は「格好良い、お洒落」となる。

では使用例:
[ภาษาญี่ปุ่น]
今日のわたしの服はすごくダサいね。
kyou no watashi no huku ha sugoku dasai.
※わかってたら着るなよ、って感じですが。

[タイ語]
วันนี้เธอแต่งตัวเชยมากเลยนะ
wan nii thəə tεεŋ tua chəəi maak ləəi na.

[タイ人]

※chromeで再生できやしまへん。

[ภาษาญี่ปุ่น]
この色はダサすぎると思う!
kono iro ha dasa sugiru to omou!

[タイ語]
ฉันว่าสีนี้มันเชยไปแล้วนะ
chan waa sii nii man chəəi pai lεεw na.

[タイ人]

※chromeで再生できやしまへん。

タイ語 俗語 - その3 ซ๊กม๊ก

ซ๊กม๊ก

ある程度通じる読み方:sok mok (ソクモク)
ほぼ合ってると思われる解釈:汚い

無責任な解説:
・辞書で「汚い」を調べると一般的な言葉としては สกปรก が載っている。

では使用例:
[ภาษาญี่ปุ่น]
彼の服は凄く汚いね。
kare no huku ha sugoku kitanai ne.!

[タイ語]
เสื้อผ้าของเค้าซ๊กม๊กมากเลยค่ะ
sωa phaa koang kau sok mok maak ləəi ka.

[タイ人]

※chromeで再生できやしまへん。

[ภาษาญี่ปุ่น]
わ!どうしてあなたの車はそんなに汚いの?
wa! doushite anata no kuruma ha sonnani kitanai no?

[タイ語]
ว้าย! ทำไมรถของเธอซ๊กม๊กจัง
waay! tham mai rot koang thəə sok mok jang.

[タイ人]

※chromeで再生できやしまへん。

7.01.2011

タイ語 俗語 - その2 ซวย

ซวย

ある程度通じる読み方:suwai (スワイ)
ほぼ合ってると思われる解釈:やばい

無責任な解説:
・いわゆる日本語で言うところの「やばい」。
・辞書では「不幸な」「不運な」と同じような表現。

では使用例:
[ภาษาญี่ปุ่น]
お金が無い!やばい!
okane ga nai! yabai!

[タイ語]
ไม่มีเงินเลย ซวยแล้ว
mai mii ŋən ləəi. suwai lεεw.

[タイ人]

※chromeで再生できやしまへん。

[ภาษาญี่ปุ่น]
やばい、元カノ(カレ)に会った。
yabai, moto kare (kano) ni atta.

[タイ語]
ซวยแล้ว เจอแฟนเก่า
suwai lεεw. jəə fεεn gau.

[タイ人]

※chromeで再生できやしまへん。


スワイ違い สวย
今回のซวย は、「スワイ」と表現しましたが、
「きれいな」という形容詞 สวย があります。
声調の違いを確認しましょう。反対で覚えるとエライことにw

[ภาษาญี่ปุ่น]
わぁ、この女性はきれいね!
waa, kono josei ha kirei ne!

[タイ語]
โห ผู้หญิงคนนี้สวยจัง
hoo puiŋ kon nii suwai jaŋ.

[タイ人]

※chromeで再生できやしまへん。

6.30.2011

タイ語 俗語 - その1 มุข

มุข

ある程度通じる読み方:muk (ムック)
ほぼ合ってると思われる解釈:ネタ

無責任な解説:
・いわゆる日本語で言うところの「ネタ」。
・「つまんないけど、それ、誰の『ネタ』ですか?」のネタと同じ。
・มุก は小さな玉状の物のこと。ไข่มุก 真珠(pearl)。ขี้มุก 鼻くそ。
・タイ語辞書などで調べると、มุข は、玄関(porch)などの意で表現されているようですが、最近ではこの用途でこの言葉が使われることはほとんど無いようで。
・日本語の「ネタ」の語源は「種」で、こちらも俗語。

では使用例:
[ภาษาญี่ปุ่น]
このネタは、もう古いね。聞き飽きたよ。
kono neta wa mou hurui ne. kiki akita yo

[タイ語]
มุขนี้เก่าไปแล้วนะ ฟังแล้วน่าเบื่อน่ะ
muk nii gaw pai lεεw na. faŋ lεεw naa bωa na.

[タイ人]

※chromeで再生できやしまへん。

[ภาษาญี่ปุ่น]
それ、だれのネタ?面白いね。
sore, dare no neta? omoshiroi ne.

[タイ語]
มุขของใครคะเนี่ย ตลกมากเลย
muk koaŋ krai ka nia. talok maak ləəy.

[タイ人]

※chromeで再生できやしまへん。

PHP めも - 静的変数 static

DBの情報を参照する function を生成するよう依頼され、よくある処理だけど今更勉強になったこと。

普通にテーブルにSELECT発行して返すものを作って性能テストやったら、1連の処理中での function へのアクセス頻度がかなり高い処理だったので、データベースサーバへの負荷が激しいということに。

「キャッシュ(メモ)化しましょう」と言われ、「あ、社内のフレームワークにそういうクラスがあるんだ」と思ったら「いえ、PHPの標準機能です」と説明されたw

何も説明されなかったら、global を用いるところだった。
正解は、static 変数を用いよ、とのこと。

function get_hanuman_1() {
  // 1. DB接続
  // 2. SELECT実行
  // 3. $hanuman = SELECT結果
  return $hanuman;
}

これを、次のように static を用い実装。

function get_hanuman_2() {
  static $hanuman;
  if ($hanuman === null) {
    // 1. DB接続
    // 2. SELECT実行
    // 3. $hanuman = SELECT結果
  }
  return $hanuman;
}

なんてことのない修正。DBアクセスの頻度やSELECTの激しさが大きければ大きいほど、処理速度と負荷軽減の効果が得られる。

ちなみに、自分がやろうとしていた global でも結果としては同じことができる。
static の記述が、global になるだけ。だが、

忘れっぽい自分みたいな人間には、全然関係の無い違う場所で global を同じ変数名で使ってしまい、しかも上書いてしまい、あたふたしてしまうので、当たり前だが変数を使用する領域を考えて正しい宣言をすることを意識して作業する。(このことすら忘れてしまうこともあるが)

あまり、理屈っぽくなるのも性に合わないから、迷わないために自分用ルール
global 設定値などをがっつり読み込んで、書き換わることが無い前提の変数で使う
static それ以外w

変数のスコープ

ちなみに、static 再帰性について、すこ~しだけ気になったので調べてみたら、
どんどん深みにはまっていった。こんなのすぐにまとめきれないので、キーワードだけ残して後日の課題。

自分自身への回答は:1回のHTTPリクエスト内で有効。
(今はこの理解だけでいい!)

勉強中にどんどん気になって深みにはまった内容は、
・スレッド

このあたり読み漁った。
[PHP-users 32346] スレッドとstatic変数の関係について
なぜ、 IIS は PHP アプリケーションの実行に不向きとされてきたのか?

6.29.2011

PostgreSQL めも - ストアドプロシージャ

※正確には、PostgreSQLのユーザ定義関数ことについて、めも。
※PL/pgSQL利用前提
※個人用(ウソがあったらゴメン)
※そして書くだけ書いて検証してないもの多数かも
※避難場所はこちらw http://www.postgresql.jp/document/9.0/html/plpgsql.html
※こちら、大いに参考になりました。ขอบคุณมากๆครับ
【plpgsql】プロシージャ内SQL、引数展開位置に注意

・関数の定義
マニュアルサイトやサンプルで「$$」が使われてることが多かったから気にせず鵜呑みしてたが、「$hanuman$」でも、「'」でも、なんでもよい。それで始まり、それで終わるブロックが関数の処理部ということになる。
※ほんとに「なんでも」よいか、は未調査。
※「'」を用いた場合は、処理部分で「'」を使う場合に当然エスケープが必要になる「''」

・変数への代入 :=
-- sample: 999を食え

araiwa := 999;

・文字列結合 ||
-- sample: ใครขายไข่ไก่

araiwa := 'ใคร' || 'ขาย' || 'ไข่' || 'ไก่';
-- ใครขายไข่ไก่

・クエリ発行
いつもやってるようにクエリをそのまんま記述してやれば実行されるが、SELECT結果を利用して後続の処理をする場合などは、やりたい内容に応じて記述は異なる。
-- sample: SELECT結果行数分回れ!1

CREATE FUNCTION func_hanuman_1() RETURNS INTEGER AS $$
DECLARE
  row RECORD;
BEGIN
  FOR row IN SELECT id FROM t_hanuman LOOP
    RAISE NOTICE 'id = %', record.id;
  END LOOP;
  RETURN 1;
END;
$$ LANGUAGE plpgsql;

・EXECUTE文
が、上のサンプルで、SELECT文内に変数を使いたい場合、EXECUTE文が必要となる。これ、ハマった。。。マニュアルにも「39.5.4. 動的コマンドの実行」で書いてあるけど、これがそれのことだと気付くまでえらい時間がかかった。。。リテラシー低すぎかなぁ。
-- sample: SELECT結果行数分回れ!2

CREATE FUNCTION func_hanuman_2() RETURNS INTEGER AS $$
DECLARE
  row   RECORD;
  sql   TEXT;
  name  TEXT := 'shin';
BEGIN
  sql := 'SELECT id, name FROM t_hanuman WHERE name ~ ''%'
           || name || '%'' ORDER BY id';
  FOR row IN EXECUTE sql LOOP
    RAISE NOTICE 'name = %', record.name;
  END LOOP;
  RETURN 1;
END;
$$ LANGUAGE plpgsql;

・RETURNS TABLE
関数の戻り値として、SELECT結果(複数レコード)を返したいとき RETURNS TABLE でやる。TABLE() の引数はSELECTで取得するカラムに合わせる。カラム名と同じ引数名にしたらアカン!
-- sample: SELECT結果行を返せ!

CREATE FUNCTION func_hanuman_3()
RETURNS TABLE(col1 int, col2 text) AS $$
DECLARE
  sql TEXT;
BEGIN
  sql := 'SELECT id, name FROM t_hanuman ORDER BY id';
  RETURN QUERY EXECUTE sql;
END;
$$ LANGUAGE plpgsql;