2010年6月30日水曜日

C++プログラマがLuaを勉強してみる第3回

Luaのコメントは3種類あります

まずC++の//に相当する
-- コメント

続いて/**/に相当する
--[
    コメント
--]

最初の「--」の後ろに任意の文字を入れるとコメント解除扱いとなります。
 --![
    コメント
--]

最後は内部にコメントを含めることが出来る
--[=[
    コメント
]=]

「=」の数は一つでなくともかまいませんが、開始と終了の数を等しくする必要があります。

C++プログラマがLuaを勉強してみる第2回


Luaの演算子
演算子概要C++
+加算+
-減算-
*積算*
/除算/
%剰余%
^累乗^
..文字列連結+(STL)
and論理積&&
or論理和||
not否定!
<演算子の左より右が大きい<
<=演算子の左より右が同じか大きい<=
>演算子の左より右が小さい>
>=演算子の左より右が同じか小さい>=
==演算子の左と右が等しい==
~=演算子の左と右が異なる!=
#配列のサイズを求める該当演算子なし

2010年6月29日火曜日

C++プログラマがLuaを勉強してみる第1回

予約語

andbreakdoelseelseif
endfalseforfunctionif
inlocalnilnotor
repeatreturnthentrueuntil
while

and
論理積
C++:and、&&
例)A and B
注:A and Bが真となるときBの値が返されます。
hoge = A and B
の場合、hogeにはBの値が代入されます。

break
for、whileなどのループを抜ける
C++:break

do
do~whileのdo とはちょっと違います。
do~endでブロックとなります。
C++:{}の{

else
if~elseのelse
C++:else

elseif
if~elseifのelseif
C++:elseif

end
 ループの終了、ブロックの終了
C++:{}の}
例)for i = 0, 10 do hoge = hoge + i end

false

C++:false

for
ループ
C++:for

function
関数
C++:関数ポインタみたいな感じ。名無しの関数を定義できる

if
条件式
C++:if

in
 配列や連想配列を反復するのにつかう
C++:イテレータみたいなもの
例)
dict = { name = "snow", job="programer" }
for key, value in pairs(dict) do
    print(key..":"..value);

end
ループやブロックの終端
C++:}

local
ローカル変数Luaでは基本グローバル変数なのでローカル変数としたい場合はlocalをつける
C++:なし
例)local hoge

nil
未定義
C++:NULLとは違う

not
否定
C++:!ビックリマーク

or
 論理輪
C++:||、or
注:A or BにおいてAが真となるときAの値が返されます。
hoge = A or B
でAがtrue又はnil以外の全ての値の場合、hogeにはAの値が代入されます。

repeat
ループ
C++:なし
例)iが10になったらループを抜ける
repeat
    i = i + 1
    print(i)
until i == 10

return
 復帰
C++:return

then
if文で使用する
C++:{}の{
例)
if a == 3 then
    print(a)
end

true
 真
C++:true

until
 repeat文の条件式で成立したらループをぬける
C++:なし
例)iが10になったらループを抜ける
repeat
    i = i + 1
    print(i)
until i == 10

while
ループ
C++:while

2010年6月28日月曜日

正規表現マッチングのアラカルト(HTML編)

HTMLタグ
(?:<.*?>)

タグの閉じ忘れ
((?:<[^!].*<){1}?)    *ちょっち自信なし

 タグの閉じ忘れ2
(<(a|pre|div)\b(?:(?!<\/\2\b).)*(<\2\b|$))      *ちょっち自信なし

2010年6月27日日曜日

正規表現マッチングのアラカルト(数値編)

整数字(数値)
(?:0|(?:+-)?[1-9][0-9]*)

小数
(?:(?:0|(?:[+-]?[1-9][0-9]*))(?:\.[0-9]*[1-9])?)

カンマ区切りの数字(数値)
(?:[0-9]{1,3}(?:,[0-9]{3})+)

桁区切りのカンマを付ける(Perl)
s/(?<=\d)(?=(?:\d{3})+(?!\d))/,/g;

桁区切りのカンマを削除する(Perl)
s/,//g

2010年6月26日土曜日

PHPで少数の判定(正規表現使用)

PHPで少数を判定する正規表現はこれだっ!

"/^((0|([+-]?[1-9][0-9]*))(\.[0-9]*[1-9])?)$/"

それでは解説するじぇ

"/^((0|([+-]?[1-9][0-9]*))(\.[0-9]*[1-9])?)$/"

まずはこの部分、これで小数点より左の数値を表しています。

"/^((0|([+-]?[1-9][0-9]*))(\.[0-9]*[1-9])?)$/"

そしてこの部分で小数点とその右の数値を表しています。

い、以上雑ですいません

2010年6月25日金曜日

SQL Serverでシングルクォーテーション「'」をエスケープ

SQL Server でシングルクォーテーション「'」をエスケープするときはエクセルみたいに「''」ってシングルクォーテーションをつけるのです。
ふぅ~、特殊文字のエスケープっていうと\nが普通だとおもってるんですけど、さすがはマイクロソフトさん、やってくれますなぁ(T△T)

2010年6月24日木曜日

SQL Serverで後からテーブルのカラムを追加する

SQL Serverでテーブルにカラムを追加しようと思ってデザインを表示して列を挿入してみたんですが・・・
がっ、うまくいかなくて結構はまっちゃっいました。
どうやらテーブルの一番最後に追加しないとダメなようです。

2010年6月23日水曜日

外出先でのちょっとしたケガにヨモギ!

ヨモギには消臭効果殺菌効果止血効果があります。
ちょっとした切り傷や擦り傷などは
  1. ヨモギをすりつぶす。
  2. 患部にかるくすり込む
  3. 可能ならば患部を心臓より上に上げて止血を速める
  4. 何かの作業で患部が何かに接触するようなら通気性の良い絆創膏をはる
でおk

2010年6月22日火曜日

prototype.jsでresponseTextの文字コードがUTF-8になってしまう

prototype.jsに限ったことではないかもしれませんが、AJAX.request後のresponseTextの中身の文字コードをSJISで送信してもUTF-8になってしまう場合があるようです。
これを解決するには、サーバ側でhttpヘッダー情報のキャラセットを指定します。
header("Content-Type: text/html; charset=Shift-JIS");
こんな感じです。

2010年6月20日日曜日

配色に灰色(グレー)を加える

配色にグレーと加えると

こんな風に良い感じになります。
この際、グレーの明度は
  • 明度の最大値 - ベースカラーの彩度
くらいが丁度良いようです。

2010年6月19日土曜日

野球部の女子マネージャーがドラッカーのマネジメントを読んだら

えぇ、私もこの本読みました。
そして、この本を読んで気づいたことがあります。
それはマネジメントはなにも仕事だけのものでは無いと言うことです。えっ?!知ってました?(汗

例えば家族を企業としてみた場合
  • お父さん→社長
  • お母さん→マネージャー
  • 子供→社員
と置き換えてマネージメントを適用することが出来ますし、
  • お父さん→パパ業の会社社長
  • お母さん→ママ業の会社社長
  • 子供→顧客
と置き換えることも出来ます。そして子供(顧客)がどうすれば言うことを聞いてくれるか、勉強してくれるか人として成長してくれるかマーケティングによって明確にすることが出来るのです。

恋愛においてもマネージメントは有効で顧客(意中の人)と契約を結ぶ(結婚や付き合うこと)ために、マーケティング(好きな物や休日の過ごし方をきくなど)をし顧客が欲しているサービス(デート)やアイテム(貢ぎ物)を提供するわけです。

そして、家族、親子、恋愛、その他人間関係すべてにおいて真摯さが重要だということです。
ただし、真摯さを利用しようとする輩も少なからずいますので気をつけなければなりません。

2010年6月18日金曜日

好みの色と年齢

色の好みは年齢とともに変わっていくようで、赤ん坊の時はビビッドな色(鮮やかな色)を好み年齢を重ねていくと共に淡い色を好むようになり、成人を過ぎて更に年齢を重ねていくとだんだん渋い色を好むようになるようです。
また、白、黒、赤、のように年齢に関係なく好まれる色も有るようです。

ディズニー等の子供に人気のあるキャラクターの色づかいを見ていると、なるほどッて思いますね。

2010年6月17日木曜日

JavaScriptでイベントハンドラを複数登録する

今日はJavaSctipで複数のイベントハンドラを登録する方法を紹介します。
JavaScriptでイベントハンドラを登録する際
  • window.onload = funcA(){};
  • window.onload = funcB(){};
このようにコードを記述した場合funcB()のみがイベントハンドラとして有効となります。
funcA()、funcBともにハンドラとして登録する方法はいくつかあるようですが、今回はprototype.jsというライブラリのEvent.observe()を使用します。
基本構文は
Event.observe(エレメント名, イベント名, イベントハンドラ,  isバブルアップしない)
です。バブルアップってなんだ?って感じですが、falseを設定すると親エレメントをさかのぼって全ての同イベントを実行します。
コード例はこんな感じです。
Event.observe(window, 'load', funcA(), false);
Event.observe(window, 'load', funcB(), false);

2010年6月16日水曜日

JavaScriptで現在のドキュメント(ページ)を更新する。

JavaScriptで現在のドキュメント更新するには、
  • Location.reload(force)
を使います。forceにtrueを設定するとキャッシュを無視して更新します。

2010年6月15日火曜日

PHPで配列、連想配列の一部を削除する

PHPインデックスを指定して配列の一部を削除する、keyを指定して連装配列の一部を削除するには
unset()を使用します。

$arr = array(1, 2, 3, 4);
print_r($arr);
unset($arr[1]);
print_r($arr);

$dict = array ("a" => "aa", "b" => "bb", "c" => "cc");
print_r($dict);
unset($dict['b']);
print_r($dict);
こんな感じです。

2010年6月14日月曜日

JavaScriptでドキュメントのAnchorの位置までスクロールさせる


今日はJavaScriptアンカー(<a>タグ)の名前を指定して画面をスクロールさせる方法を紹介します。
まずはJavaScriptのコードです。
function focusAnchor() {
    var anchors = document.anchors;
    anchors['target'].focus();

    // idでアンカーを取得する場合
//    var anchor = document.getElementById('target');
//    anchor.focus();
}
特に難しい処理はありません。目的のアンカーを取得してfocus()を呼び出しているだけです。
続いてHTMLのコードです。

target
HTML側では一点注意しなければいけないことがあります。それは
  • アンカータグには必ずhref属性が必要(これがないとfocus()が反応してくれないようです)
以下サンプル
















target

2010年6月13日日曜日

ユースケース

ユースケース図は使ったことがないのですが、ユースケースは機能や処理の流れ分岐等を把握するのによく使います。
ユーザの登録

主アクター:スノウ
副アクター:なし
前提条件:スノウがユーザーとして登録されていない
目標:DB上のユーザーテーブルにスノウのユーザ情報が登録されること


メインパス
1.スノウがユーザ登録画面を表示する
2.スノウがユーザ情報を入力する
3.スノウが登録ボタンをクリックする
4.スノウのユーザ情報がDBに登録される
5.ユーザー一覧画面が表示される

純正常パス
3.1.1.スノウがキャンセルボタンをクリックする
3.1.2.ユーザー一覧画面が表示される
3.2.1.入力情報に誤りがある
3.2.2.誤り情報が表示される

異常パス
3e.1.DBの登録に失敗する
3e.2.登録処理がロールバックされる
3e.3.DB登録失敗の旨が表示される

2010年6月11日金曜日

テストケースのひな形

基本的なテストケースひな形を書いておく
IDテスト内容前提条件インプット/手順期待結果実施日テスト結果
1ユーザの新規登録特になし
step1:ユーザ登録画面を起動する

step2:ユーザ情報を入力する

step3:登録ボタンをクリックする
ユーザ一覧に登録したユーザが表示されること2010-06-11OK,NG,NT(not test:廃止)

カルダモンで集中力向上!

カルダモンっていう香辛料があるのですが、このカルダモンには集中力高める効果があるようで、その効果は摂取1時間以内に起こり、かつ1時間以上持続すことが科学的に検証されています。
 参考文献

私は粉末をコーヒーに入れて飲んでいます。効果は・・・あるような、ないようなw
ちなみにカルダモンはカレーに入っていてダイリーガーのイチロー選手は毎朝カレーを食しているとかなんとか。
「ちいさいことをかさねることが、とんでもないところに行くただひとつの道」byイチロー
なるほど!

2010年6月10日木曜日

人間の心臓はやや左側にある

人間の心臓はやや左側にあるようです。
それがどうしたって感じですが心臓というものは臓器の中でも重要な役割を持っているわけで、人はこの心臓を無意識のうちに守ろうとするんですね 。

このことを考えると、接客、交渉、接待等を行う場合は相手の右側に陣取ることによって安心感を与えることが出来るのでうまくいく可能性がほんのり向上するわけですね。

逆に相手を威圧したい時や強気に交渉したい時などは左側に陣取ると心理的に優位に立てるわけですね。

2010年6月9日水曜日

PHPのスコープってゆるすぎじゃなかと思った今日この頃

PHPの変数のスコープっておおざっぱに言うと、
  • 変数は関数内ならいつでも何処でも、定義したら以降は有効ですよ
ってな仕様なんですけど、これのおかげでバグが出やすくなってるんじゃないかと思うのは私だけなのでしょうかね?え?おめぇのスキル不足って?イグザクトリー!w
例えば
if ($isSuccess) {
    $a = 123;
}
echo $a;
これを実行すると「123」が表示されるわけですね。あら便利っ!

そして、今日ほんのりはまったのがこれです
$testArray = Array(
    0 => Array(1, 2, 3),
    1 => Array(1, 2, 3)
);

foreach($testArray as $index => $valueArray) {
    foreach($valueArray as $value) {
        $subTotal += $value;
    }
    $subTotalArray[$index] = $subTotal;
}
print_r($subTotalArray);
$totalの値が足し込まれ続けておかしな値になってしまいます。
$testArray = Array(
    0 => Array(1, 2, 3),
    1 => Array(1, 2, 3)
);

foreach($testArray as $index => $valueArray) {
    $subTotal = 0; // ←ここで初期化する
    foreach($valueArray as $value) {
        $subTotal += $value;
    }
    $subTotalArray[$index] = $subTotal;
}
print_r($subTotalArray);
これが正常なコードです、まあ無精せずに初期化しろってことですね(汗
あ、ちなみにソースは動作テストしていませんので、動かなかったらごめんなさい。

2010年6月8日火曜日

WINDOWSでネットワークの共有フォルダが見られない(アクセスできない)

今日、新しい人が職場に入ってきたのですがその人が持参したノートパソコンからサーバの共有フォルダが見られないという減少が起きてしまいました。
症状はこんなかんじでした。
  • サーバの共有フォルダが見られない
  • インターネットは出来る
  • 私のPCへのpingは通る
  • 私のPCからのpingは通らない
でいつもの用にグーグル先生に聞いてみたらこんなサイトがあったので貼っておく。
ネットワークの共有フォルダに接続できない場合のチェックリスト

結局原因はファイアーウォールでした。

2010年6月7日月曜日

設計~結合テストまでのスケジューリング

今日は私が目安としている設計から結合テストまでのスケジューリングについて書きます。まぁあくまで目安ですし理想論が入ってます。
  • 1/3設計
  • 1/6コーディング
  • 1/4単体テストとデバッグ
  • 1/4結合テストとデバッグ
設計が1/3でかなりの時間を割いていますが、バグをつぶすコストは下流工程になればなるほど高くなってしまいます、そしてコーディングする前と後ではコストが大きく変わってきます。また、新しい技術の導入検討なども有りますので設計の時間は多めに取るようにしています。

設計がしっかりしていれば後はひたすらキーボードを叩くだけなのでコーディングは1/6と少なめですね。

そして1/2がテストです。これはテスト仕様書作成やテストコードのコーディング時間も含んでいます。

2010年6月6日日曜日

MEN'S NON-NO、CanCamに出てませんでした?

今日は和みネタというかつかみネタを一つ紹介します。これは初めて会うひとや、職場の同僚など結構いつでも何処でも使えます。
どう説明して良いのか分らないので例で説明します。
  • あなた:「あれ、そういえば○○さんって今月号のMEN'S NON-NOに出てませんでした?」
  • 相手:「いえ、でてませんよ」 「あれ、ばれましたかぁ」
  • あなた:「そうですか、おかしぃなぁ1500ページあたりに写真が載ってたと思ったんですけどねぇ」「ですよねぇ、たしか1500ページあたりに写真が載ってましたよねぇ」
  • 相手:「タウンページですかw」
こんなかんじです。
MEN'S NON-NOの部分は
  • CanCam、LEONなどのファッション雑誌
  • 週間イケてるメンズ
  • 週間カワイイ女の子
など、相手の年齢や誰もが知ってる雑誌が良いでしょう。

2010年6月5日土曜日

女性が自分の髪の毛をさわる

女性は自分をアピールする為に髪の毛を触るようです。

飲み会の席などで同席している女の子がしきりに髪の毛を触っていたとします。その女の子はおそらく話の話題について行けてなかったりちょっと孤立してしまっているのではないでしょうか、そして「さみしい」「つまんない」「たいくつ」といった感情を紛らわす為にしらずしらずのうちに髪の毛に手がいってしまっているのでしょう。

また、となりのテーブルの女の子が同じように髪の毛をしきりに触っていた場合は「気づいてほしいな」「すこし気になる人がいるな」という感情から髪の毛をなでるような仕草でアピールしているのです。

ちなみに私も寂しさを紛らわすために自分の後ろ髪を触ってしまいますw

2010年6月4日金曜日

嘘を見抜く

嘘をついている人は次のような行動を自然と取ってしまう場合があるそうです。
  • 手を隠そうとする
  • 手で口や鼻の周辺を触る
  • 何度も姿勢を変えたり足を組み替える
  • 目だけが笑っている
  • 相手を凝視する、又は視線をそらす

2010年6月3日木曜日

先手を取って主導権を握る

凡そ先に戦地に処[お]りて敵を待つ者は佚し、後れて戦地に処りて戦いに趨[おもむ]く者は労す。故に善く戦う者は、人を致して人に致されず。
これは孫子の兵法の一節ですが、
簡単に言うと相手よりも先に待ち合わせの場所に行けば体と心に余裕が生まれて、後からやってくる相手よりも心理的に優位に立つことができるので主導権を握りやすくなるよってことです。

いわゆる先手必勝ってやつですね、待ち合わせだけじゃなくミーティングやちょっとした雑談などで先に発言することでも同じように主導権を取りやすくなるのではないでしょうか。
さらに積み重ねることで、その時だけでなく人間関係そのものにおいても主導権を握ることも不可能ではありません。

2010年6月2日水曜日

ロー・ボール・テクニック

ロー・ボール・テクニックは不利な情報を隠して要求を呑ませる心理テクニックの一つです。

ロー・ボール・テクニックは相手に要求を呑ませる為に不利な条件を隠して要求し、相手が要求をのんだら、想定外の事態を装って隠しておいた不利な条件を 提示してその条件付で相手に要求をを呑ませるというテクニックです。


30分じゃ終わりそうもない仕事を30分くらいで終わるからと残業を依頼するとか、広告等で消費者に不利な条件がすごく小さい文字で書かれてあるなどはロー・ボール・テクニックの良い例ですね。