2009年02月26日
ハッシュの要素数
なでしこのマニュアルではハッシュの要素数は「要素数」と言う関数で取れることになっているのですが、少なくても最新版の1.518では取得できないようです。 去年の夏ぐらいの2chのスレで同様の内容が記述されていましたが、どうも「ハッシュのハッシュキー列挙の要素数」なら取れるという不思議仕様になっているようです。 さらにおかしいことに、配列の要素数専用の「配列要素数」関数では、普通にハッシュの要素数が取得できてしまいます(^^; 実際に以下のようなサンプルコードを作って動かしてみたところ1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | はっしゅとはハッシュ 「【空のハッシュの場合】」と表示 Aははっしゅの要素数 「ハッシュの要素数 :{A}」を表示 Bははっしゅのハッシュキー列挙の要素数 「ハッシュのハッシュキー列挙の要素数:{B}」を表示 Cははっしゅの配列要素数 「ハッシュの配列要素数 :{C}」を表示 「」を表示 はっしゅ@「あああ」は「あああ」 「【ハッシュに一つだけキーがある場合】」と表示 Aははっしゅの要素数 「ハッシュの要素数 :{A}」を表示 Bははっしゅのハッシュキー列挙の要素数 「ハッシュのハッシュキー列挙の要素数:{B}」を表示 Cははっしゅの配列要素数 「ハッシュの配列要素数 :{C}」を表示 「」を表示 はっしゅ@「いいい」は「いいい」 「【ハッシュに二つのキーがある場合】」と表示 Aははっしゅの要素数 「ハッシュの要素数 :{A}」を表示 Bははっしゅのハッシュキー列挙の要素数 「ハッシュのハッシュキー列挙の要素数:{B}」を表示 Cははっしゅの配列要素数 「ハッシュの配列要素数 :{C}」を表示 |
【空のハッシュの場合】 ハッシュの要素数 :0 ハッシュのハッシュキー列挙の要素数:0 ハッシュの配列要素数 :0 【ハッシュに一つだけキーがある場合】 ハッシュの要素数 :0 ハッシュのハッシュキー列挙の要素数:1 ハッシュの配列要素数 :1 【ハッシュに二つのキーがある場合】 ハッシュの要素数 :0 ハッシュのハッシュキー列挙の要素数:2 ハッシュの配列要素数 :2
2009年01月20日
GeSHiでなでしこマークアップ
世の中にはソースコードをHTMLとして掲載するときに見やすくするためのマークアップソフトがありますがその中にGeSHiというPHPで書かれたモノがあります。
なお、現状で不具合をいくつか把握していますし、完成させる気は無いので永久にβ版です。
(たとえば、EUC環境で「未満(CC A4 CB FE)」と言う文字があると、接続詞の「に(A4 CB)」と勘違いされて文字が壊れます(苦笑))
GeSHiがそもそも2Byte文字を考慮していませんし、少なくても自分はこれで満足していますので、このままにしておきますが、余力のある方はぜひ修正して公開して頂けますと助かります(^^;
(ライセンスはGPLv2です)
2008年12月29日
IEのProxy設定
1 2 3 4 5 6 7 | 「IEのProxyを設定します」と言う。 「HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings」のレジストリ開く それで「ProxyEnable」に「1」をレジストリ整数書く それで「ProxyServer」に「proxy:8080」をレジストリ書く それで「ProxyOverride」に「除外ドメイン1;除外ドメイン2 ;<local>」をレジストリ書く それのレジストリ閉じる |
2008年12月28日
日時加算
なでしこは便利なんですが、どうも時間計算が余り得意ではない印象です。特にUNIX時間のようなシリアル時間への変換にネイティブでは対応していないのが致命的で日付を跨ぐ時間の足し引きはかなり面倒くさいのが実情です。
(まぁ、頑張れば出来ないことはないですが)
また、日付加算や時間加算命令はあるのですが、時間加算命令は時間しか考慮してくれない困りもののため日付を跨ぐような加減算はそのままでは出来ません。
で、それを何とかしてみるために関数を一つ拵えてみました。
使い方は以下のような感じです。●日時加算(S_DATETIMEにP_DATETIMEを) S_DATEはS_DATETIMEを「yyyy/mm/dd」に日時形式変換 S_TIMEはS_DATETIMEを「hh:nn:ss」に日時形式変換 S_NUMはS_TIMEを「hhnnss」に日時形式変換を整数変換 P_FLAGはP_DATETIMEをトリムから1文字左部分 もし、P_FLAGが「+」またはP_FLAGが「-」ならば P_DATETIMEの1から1文字削除 違えば P_FLAGは「+」 P_ARRとは配列 P_ARRはP_DATETIMEを「 」で区切る もし、P_ARR[0]で1から「:」を文字検索ならば、 P_DATEは「0/0/0」 違えば、 P_DATEはP_ARRの0を配列切り取る P_TIMEはP_ARRの0を配列切り取る P_TARRとは配列 P_TARRはP_TIMEを「:」で区切る R_CARRYは(P_TARR[0]/24)の整数部分 もし、P_FLAGが「+」ならば、 R_TIMEはS_TIMEにP_TIMEを時間加算 R_NUMはR_TIMEを「hhnnss」に日時形式変換を整数変換 もし、R_NUMからS_NUMを引くが0未満ならば、 R_CARRYに1を直接足す R_DATEはS_DATEにP_DATEを日付加算 R_DATEはR_DATEに「0/0/{R_CARRY}」を日付加算 違えば、 R_TIMEはS_TIMEに「-{P_TIME}」を時間加算 R_NUMはR_TIMEを「hhnnss」に日時形式変換を整数変換 もし、S_NUMからR_NUMを引くが0未満ならば、 R_CARRYに1を直接足す R_DATEはS_DATEに「-{P_DATE}」を日付加算 R_DATEはR_DATEに「-0/0/{R_CARRY}」を日付加算 「{R_DATE} {R_TIME}」で戻る
こんな感じで使えます。#結果は「2008/07/27 10:00:00」 「2008/12/28 12:00」に「-0/5/1 02:00」を日時加算を言う #結果は「2008/12/29 01:00:00」 「2008/12/28 12:00」に「13:00」を日時加算を言う #結果は「2008/12/26 12:00:00」 「2008/12/28 12:00」に「-48:00」を日時加算を言う
なお、加算する値のプラス記号や年月日は省略可能です。
ただし、エラーチェックはほとんどやっていないので無茶な使い方をするとすぐにエラー出ます(^^;
なので、ユーザが入力した時間は必ず事前にチェックしてからこの関数に値を渡すようにしてください。
(と言うか、このぐらいの関数、ネイティブで取り込まれてくれると助かるなぁ・・・)
2006年09月25日
管理者権限取得命令?
去る8月17日になでしこの「version 1.4010」がリリースされ「管理者権限取得」と言う素敵そうな命令が追加されました。
名前から
「きっとこの関数はPowerUserとかだったら秘密のコードを入れることで管理者権限に一時的に慣れたりとかするすごい関数じゃないか?」
と期待していたんですが、早速最新版を落として「管理者権限取得」とだけ入れたソースを実行してもうんともすんとも言わず・・・
なんとなく気になってバージョン情報を見てみると「version 1.4009」とか書いて居たので
「ははーん、きっとファイルのアップロードミスだなぁ」と思い放置
そうしていると9月2日に「version 1.4011」がリリースされていたようで、今度こそと最新版をダウンロードしてまた試してもうんともすんとも言わず。
「???」と思い、命令検索から「管理者権限取得」を探しても見つからず「まだ実装されて無いの?」と
管理者権限取得は「あああ」などとしてみると
「(関数)管理者権限取得には代入できません」などと起こられる始末。
で、今度は
管理者権限取得をいうとしてみるとパワーユーザー環境で「0」が帰ってきたので、もしやと思い下のようなコードを組んで試してみました。 続きを読む...
2005年06月15日
クッキージャーの場所の取得
なでしこでクッキージャーの場所の取得するサンプル
レジクッキーは「HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders」のレジストリ開く
レジクッキーで「Cookies」をレジストリ読む
それを言う
レジクッキーをレジストリ閉じる
2005年05月06日
IEのホームページの変更
なでしこからIEのホームページを変更するサンプルスタートページは「http://www.google.co.jp/」 「IEのホームページを{スタートページ}にします」と言う。 「HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main」のレジストリ開く それで「Start Page」にスタートページをレジストリ書く それのレジストリ閉じる
2005年05月04日
テンポラリフォルダ内の掃除
なでしこでテンポラリフォルダ内のファイルを削除するためのサンプルコード続きを読む...「テンポラリフォルダの中身を削除します」と言う。 テンポラリフォルダのフォルダ列挙 反復 「{テンポラリフォルダ}{それ}\ を削除します」と表示。 エラー監視 テンポラリフォルダ&それのフォルダ削除 エラーならば 「{テンポラリフォルダ}{それ}\ が削除できませんでした」と言う。 テンポラリフォルダのファイル列挙 反復 「{テンポラリフォルダ}{それ} を削除します」と表示。 エラー監視 テンポラリフォルダ&それをファイル削除 エラーならば 「{テンポラリフォルダ}{それ} が削除できませんでした」と言う。 「テンポラリフォルダの中身を削除完了」と言う。
2005年05月03日
DDWin in USBメモリ
DDWinな辞書をUSBメモリで持ち歩こうと思ったんですが、DDWinって辞書の場所が絶対パスじゃないとダメらしくて、毎度出先で「DDWIN.GRP」の中身を編集して設定する必要がありました。でも、出先でちょっと使いたいだけなのにいちいちそんなことやってられなかったので、なんとか自動生成できないかと思って手段を探すことに。
とりあえず、やりたいことは
- USBメモリが刺さるWindowsなら環境依存しないで実行可能
- なるべく簡単に作れること
とりあえず、環境依存なしと言うことならバッチファイルでやれば良いんですが、今更DOSの世界のお世話になるのはなんか芸がないので却下(ぉ
次にWSH系の利用ですが、こっちはコーディングに慣れてないので時間が掛かるのと、ちょっと面倒なコトさせるとウィルス対策ソフトに止められるおそれがあるので却下。
次にPerlはコーディングは慣れてますが自動実行ファイルが簡単に生成できないので却下
RubyはEXEの生成は楽ですが、コーディングが面倒なので却下。
こうやって考えていて「結局はBATファイルかなぁ」と思い始めていたときにふと思い出したのが「なでしこ」↓
「うわっ、めちゃくちゃ使える・・・」