Hatena::ブログ(Diary)

ぐりにたんく

このブログサイトで公開されているソース及びスクリプト等は、特別な記述がない限り、基本的にパブリックドメインです。
自己責任にてご利用ください。

2010-03-03

キャラクターコードがUnicodeの場合、○や×などの記号が小さく表示される

| 22:30

○や×を普通の文字と同等の大きさとして表示したい場合、ちょっとした裏技があります。

Windows環境において、

Firefox3.6, IE8, Opera10.10, Google Chrome 4.0, Safari4.0.4で期待する動作を確認しました。

 *{
	font-family:'MS UI Gothic', Meiryo, Osaka, 'Hiragino Kaku Gothic Pro', sans-serif;
}

2009-12-26

ハッシュの配列を処理する

| 22:35

$array{'aaa'}[0]

のような変数定義については偉大な先人の方々が詳細を公開されておりますが、

私の探し方が悪いのか、


$array[0]{'aaa'}

変数定義について解説されているサイトが少ないため、知識を共有します。


あと、すごく細かい事なんですが、

下の変数定義は「ハッシュ配列」でピンと来るんですが、

$array{'aaa'}[0]

下の変数定義は「配列ハッシュ」なんですかね。

$array[0]{'aaa'}

ただ、下の場合もハッシュ配列と解釈できるわけで・・・

$array{'aaa'}{'bbb'}

意味定義としての議論は尽きないと思いますが、まあ細かな事は置いておいて・・・

とりあえず、「ハッシュ配列」という名称はらくだ本の名称に従っています。


my @array = ();
$array[0]{'aaa'} = "000";
$array[0]{'bbb'} = "111";
$array[1]{'aaa'} = "222";
$array[3]{'aaa'} = "333";

print "全ての値を得る\n";
for(my $i = 0; $i <= $#array; $i++){
	foreach my $key (keys %{$array[$i]}){
		print $key, " = ", $array[$i]{$key}."\n";
	}
}

print "値を指定して得る\n";
for(my $i = 0; $i <= $#array; $i++){

	if(defined $array[$i]{'aaa'}){
		print "aaa = ", $array[$i]{'aaa'}."\n";
	}

	if(defined $array[$i]{'bbb'}){
		print "bbb = ", $array[$i]{'bbb'}."\n";
	}

}

まっつあんまっつあん 2012/06/12 18:19 ???なにこれ 例の理論?

2009-12-25

そう簡単に重複しないユニークIDを得る

| 21:16

ランダムな数字、現在のマイクロエポック秒PerlプロセスIDを元に、そう簡単には重複しないユニークIDを得るPerlScriptです。

ちなみに先頭の"0_"は、2036年問題で万が一エポック秒の巻き戻しが発生した場合の識別子として追加しています。

use Time::HiRes;

print &get_uid();

###########################
# Get Uniqu ID
sub get_uid{
       if(sprintf("%.3f",$]) <= 5.004){
               srand(time());
       }
       my $uniqueid = sprintf("0_%s_%.6f_%s", int(rand 100000), Time::HiRes::time(), $$);
       $uniqueid =~ s/\./_/g;
       return($uniqueid);
}

2009-12-23

エスケープが必要な文字いろいろ

19:48

正規表現

\

+

.

*

(

)

[

]

{

}

-

|

^

/

$

SQL

"

'

|  ※MSのJetエンジンで使用

%  ※LIKEコマンドで使用

_  ※LIKEコマンドで使用

【2009/12/25追記】

*

?

HTML

&

<

>

"

XML

&

<

>

"

'

ActivePerlのGUI版PPMでProxy越えをする

| 19:47

以下の内容を記述したバッチファイルを作成し、ppm.batが置かれているフォルダに入れておくと便利です。

名前はppmrun.batとかで。

ppm.batが置かれているフォルダは、標準では[Perlインストールフォルダ]\bin になります。

set HTTP_PROXY=http://[proxy_server]:[port]
rem (例) http://proxysv:8080
ppm

認証が必要なProxyの場合

set HTTP_PROXY=http://[id]:[password]@[proxy_server]:[port]
rem (例) http://user:12345@proxysv:8080
ppm

SQLiteをWindows XP環境にインストールする

| 19:45

1.SQLite Home Pageのダウンロードページに移動

http://www.sqlite.org/download.html

2.Precompiled Binaries For Windows項目から以下をダウンロード

sqlite-3_6_xx.zip

sqlitedll-3_6_xx.zip

※xxは任意の数字

3.ダウンロードしたZIPファイルを展開

4.中に入っているファイルをSQLiteインストールしたい、適当なフォルダへ移動

※自分の環境では以下のファイルが展開されました

sqlite3.exe

sqlite3.dll

sqlite3.def

5.システム環境変数でPATHを通す

[コントロールパネル]-[システム]
環境設定タブを選択
環境変数」ボタンをクリック
「システム環境変数」から変数名"Path"を選択し「編集」ボタンをクリック
変数値」の末尾に;[先ほどSQLiteインストールしたフォルダのフルパス]を追加

※仮にD:\sqliteインストールした場合は ";D:\sqlite"

6.確認

コマンドプロンプトを開く
sqlite3 と入力

SQLite version 3.6.xx
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>

と表示されれば成功

7. .quitと入力し、SQLiteコマンドラインを抜け、コマンドプロンプトを閉じる

2009-12-21

ブラウザのフォーム履歴を手軽に削除する

| 23:42

フォームの入力履歴一覧から「これだけを消したい!」を手軽に実現する方法です。


1.テキストボックスをダブルクリックするなどして、フォームの入力履歴を表示

2.消したい履歴にマウスをフォーカス

3.DELキーを押す


すると、該当の入力履歴が消えます。

DELキー押しっぱなしで次々と消えて行きます。


IE8とFirefox3.5で確認しました。

その他のブラウザでもできるのかな?

ヒヤドキュメント内でサブルーチンを呼び出す

| 23:29

めもめも。

print <<EOM;
@{[&test]}
EOM

exit(0);

sub test{
	print "てすと";
	return("てすてす");
}

DOSコマンドで指定曜日に処理を行う

| 21:27

やはり、自分の探し方が悪いのか情報が見あたらなかったので情報を共有します。

なお、DOSの%DATE%変数の代入値は「地域と言語のオプション」の設定により変わります。

下の例では、“短い形式”が“yyyy/MM/dd”となっている事を仮定している点に注意してください。

@ECHO OFF

SET YEAR=%DATE:~0,4%
SET MONTH=%DATE:~5,2%
SET DAY=%DATE:~8,2%

if %MONTH% == 1 (
  SET /A YEAR=%YEAR% - 1
  SET /A MONTH=%MONTH% + 12
)
if %MONTH% == 2 (
  SET /A YEAR=%YEAR% - 1
  SET /A MONTH=%MONTH% + 12
)
SET /A WEEK=(%YEAR% / 4 - %YEAR% / 100 + %YEAR% / 400 + (13 * %MONTH% + 8) / 5 + %DAY%) %% 7

REM 日曜日:0...土曜日:7
if %WEEK% == 0 (
  GOTO nichiyoubi
)
GOTO end

:nichiyoubi
ECHO 日曜日です

:end
ECHO おしまい

7-Zipコマンドラインでいろいろ

| 21:11

めもめも。

testディレクトリをtest.zipアーカイブに圧縮

7z.exe a test.zip test

testディレクトリを書庫形式にZIPを使ってtest.zipアーカイブに圧縮

7z.exe a -tzip test.zip test

1つ上のコマンドと意味はいっしょ

test.zipアーカイブをtest_zipディレクトリに展開

7z.exe x test.zip -otest_zip

-oオプション使わないと、test.zipがあるカレントディレクトリに展開されます

testディレクトリを1GB毎に区切ってtest.zipアーカイブに圧縮

7z.exe a test.zip test -v1g

結果として1GB単位にtest.zip.001 test.zip.002 ...とファイルが作成されます

test.zip.001 test.zip.002 ...アーカイブをtest_zipディレクトリに展開

7z.exe x test.zip.001 -otest_zip

最初の.001を選べば、それに続く連番ファイルを自動的に連結し、展開します

キスティスキスティス 2017/01/08 14:36 参考にさせていただきました。大変たすかりました
ただ、このままだと1月から9月が計算できないような気がします
また毎月、1日から9日もできないような
SET /A WEEKのところですね

キスティスキスティス 2017/01/08 14:50 すみません、指摘内容にまちがいがありました
8月と9月
また8日9日がだめだと思います、検討お願いします