現在のページの位置:ホーム » ホーム

くろねこスクエア Labs


« »

YFeed オークション検索 アップデート

このたび「YFeed」のアップデートを行いました。Yahoo!オークション関連での出力項目を追加したほか、Yahoo!オークションのオリジナルRSSフィードとのパラメータ互換性を高めました。

主な変更点は以下のとおりです。

  • Yahoo!オークションで取得できるRSSフィードのパラメータを、YFeedでもそのまま使用できるようにしました。
  • 即決価格や出品者ID、画像など、オリジナルRSSフィードでは取得できない項目を追加しました。

BASICでパスワード認証

Basic認証に関する話ではありませんので悪しからず。

かつてのBASICは高水準言語として抽象化されていて扱いやすいのですが、抽象化されていない処理については当たり前ながら具体的な手続きを書く必要があります。以下のコードはQuickBASICでの例で、入力されたパスワードをアスタリスク(*)で表示するために行っていた処理です。

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
'/for QuickBASIC
'$lang: "qb"

'------- GUI パスワード入力サンプルプログラム

'------設定
CLS 0: WIDTH 80, 25
COLOR 1

pass$ = "abc" 'パスワード
word$ = "" '入力されたパスワード
inword$ = "" '入力途中のパスワード

'------変数の宣言
x = 21'x座標
y = 11 'y座標
r = 0 '一つづづ "*" を描くための座標

'------表示
CLS 0
LINE (140, 140)-(500, 195), 7, BF, 15
LINE (140 + 5, 140 + 5)-(500 - 5, 195 - 5), 1, B

start:
LOCATE y, x, 1'文字の座標へ移動
PRINT "ENTER PASSWORD :" '入力待ち

'------パスワード入力
in:
LOCATE y, x + 17 + r: inword$ = INPUT$(1)

IF inword$ = CHR$(8) THEN GOTO backspace 'BackSpace を押したとき
IF inword$ = CHR$(13) THEN GOTO yorn 'Enter を押したとき
IF r <= 22 THEN PRINT "*": r = r + 1  '"*" を描く

'------入力したパスワードを合成
word$ = word$ + inword$

'------パスワード入力に戻る
back:
inword$ = ""
GOTO in

'------バックスペース
backspace:
IF r >= 1 THEN r = r - 1 ELSE GOTO yorn
LOCATE y, x + 17 + r
PRINT " "
GOTO in

'------パスワードの比較・確認
yorn:
IF word$ = pass$ THEN GOTO exeexit

'------入力された情報の削除
word$ = ""
inword$ = ""
r = 0
CLS 2
GOTO start 'やりなおし

'------終了
exeexit:
CLS 0
END

ある程度構造化してあるので判りやすいかと思います。このような処理は利用機会も多いのでクラスとして抽象化してしまえば再利用しやすいのですが、往年のQuickBASICにはそのような仕組みがなく、プログラムごとに手直しする必要がありました。昨今のBASICはオブジェクト指向を念頭に設計されているものが多いので、初期のBASICに比べれば格段に扱いやすくなっています。もっとも、FreeBASICではクラスの継承は「まだ」実装されていませんが…

それにしても、「パスワードを入力する」というUI自体は10年経っても20年経っても、それほど変わらないですね。

MovableType 5.0にアップデート

当サイトに設置しているMovableType Open Sourceを5.0にアップデートしました。

MT4と比べるとブログ管理画面のデザインが変わりました。WordPressをかなり意識したデザインになっていますので、初めて見る人にはどちらも同じに見えるでしょうが、旧来からの個人ユーザにはWordPressへの移行を促すデザインにも見えるかもしれませんね。

当サイトではテスト環境としての使用のみで、メインとして使う予定は今のところありません。どちらかというと、MovableTypeとは別にCCとGPLで公開されている絵文字アイコンのほうに魅力を感じているのが実情です。

TypePad 絵文字一覧

Creative Commons License
TypePad 絵文字アイコン画像 by Six Apart Ltd is licensed under a Creative Commons 表示 2.1 日本 License.

いろいろな汎用CMSが日々栄枯盛衰(とそれに伴い互いに切磋琢磨)を繰り返していますが、どのCMSにも得手不得手があります。お互いに連携できるような工夫ができればそれが一番なのですけれど。

1990年代のあみだくじ

かなり前に作ったあみだくじのプログラムは、以下のようなコードでした。

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
'/for QuickBASIC
'$lang: "qb"

DIM a(20), b(10)

ta$ = RIGHT$(TIME$, 2)
RANDOMIZE (ASC(ta$))
FOR y = 1 TO 8: b(y) = INT(RND * 6) + 1: NEXT y

CLS
LOCATE 5, 10: PRINT "1 2 3 4 5 6 7 8"
LOCATE 15,10: INPUT "番号を選んでください ", k
FOR x = 1 TO 8: a(x) = x: NEXT x
FOR y = 1 TO 7
    n = b(y): GOSUB write_line
    c = a(n): a(n) = a(n + 1): a(n + 1) = c
NEXT y

LOCATE 5 + y, 10
IF c = 1 THEN PRINT "○ × × × × × × ×": z = 1
IF c = 2 THEN PRINT "× ○ × × × × × ×": z = 2
IF c = 3 THEN PRINT "× × ○ × × × × ×": z = 3
IF c = 4 THEN PRINT "× × × ○ × × × ×": z = 4
IF c = 5 THEN PRINT "× × × × ○ × × ×": z = 5
IF c = 6 THEN PRINT "× × × × × ○ × ×": z = 6
IF c = 7 THEN PRINT "× × × × × × ○ ×": z = 7
IF c = 8 THEN PRINT "× × × × × × × ○": z = 8

LOCATE 5 + y + 2, 10
IF a(z) = k THEN PRINT k; "はあたりです          ": END
PRINT k; "ははずれです          ": END

write_line:
LOCATE 5 + y, 10
IF n = 1 THEN PRINT "|---|   |   |   |   |   |   |": RETURN
IF n = 2 THEN PRINT "|   |---|   |   |   |   |   |": RETURN
IF n = 3 THEN PRINT "|   |   |---|   |   |   |   |": RETURN
IF n = 4 THEN PRINT "|   |   |   |---|   |   |   |": RETURN
IF n = 5 THEN PRINT "|   |   |   |   |---|   |   |": RETURN
IF n = 6 THEN PRINT "|   |   |   |   |   |---|   |": RETURN
IF n = 7 THEN PRINT "|   |   |   |   |   |   |---|": RETURN

今や昔のQuickBASICかと思いきや、2004年に登場したFreeBASICでは、lang指定さえすれば、このままコンパイルできるのです。マルチバイトも特に問題なし。FreeBASICならGPLでクロスプラットホームですし、過去のプログラムもそれなりに活用できますね。

さらに、FreeBASICならオブジェクト指向風にも書けます。

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
'/for FreeBASIC
Type Amida
    Dim a(20) as Byte
    Dim b(10) as Byte
    Declare Constructor()
    Declare Sub wrLine (n as Byte)
    Declare Function get_result (c as Byte) as Byte
    Declare Function judge (a() as Byte, k as Byte, z as Byte) as Byte
End Type
'-----------
Constructor Amida()
    Dim ta as String
    Dim as Byte c, k, n, x, y, z
    ta = Right(Time, 2)
    Randomize (Asc(ta))
    For y = 1 To 8: b(y) = Int(Rnd * 6) + 1: Next y
    Cls
    Locate 5, 10: Print "1 2 3 4 5 6 7 8"
    Locate 15,10: Input "番号を選んでください ", k
    For x = 1 To 8: a(x) = x: Next x
    For y = 1 To 7
        n = b(y)
        Locate 5 + y, 10
        This.wrLine(n)
        c = a(n): a(n) = a(n + 1): a(n + 1) = c
    Next y

    Locate 5 + y, 10
    z = This.get_result(c)
   
    Locate 5 + y + 2, 10
    If This.judge(a(),k,z) = 1 Then
        Print k; "はあたりです          "
    Else
        Print k; "ははずれです          "
    End If
End Constructor
'-----------
Function Amida.get_result(c as Byte) as Byte
    Dim z as Byte
    If c = 1 Then Print "○ × × × × × × ×": z = 1
    If c = 2 Then Print "× ○ × × × × × ×": z = 2
    If c = 3 Then Print "× × ○ × × × × ×": z = 3
    If c = 4 Then Print "× × × ○ × × × ×": z = 4
    If c = 5 Then Print "× × × × ○ × × ×": z = 5
    If c = 6 Then Print "× × × × × ○ × ×": z = 6
    If c = 7 Then Print "× × × × × × ○ ×": z = 7
    If c = 8 Then Print "× × × × × × × ○": z = 8
    Return z
End Function
'-----------
Sub Amida.wrLine(n as Byte)
    If n = 1 Then Print "|---|   |   |   |   |   |   |"
    If n = 2 Then Print "|   |---|   |   |   |   |   |"
    If n = 3 Then Print "|   |   |---|   |   |   |   |"
    If n = 4 Then Print "|   |   |   |---|   |   |   |"
    If n = 5 Then Print "|   |   |   |   |---|   |   |"
    If n = 6 Then Print "|   |   |   |   |   |---|   |"
    If n = 7 Then Print "|   |   |   |   |   |   |---|"
End Sub
'-----------
Function Amida.judge(a() as Byte, k as Byte, z as  Byte) as Byte
    If a(z) = k Then
        Return 1
    Else
        Return 0
    End If
End Function
'-----------
Dim ObjAMD as Amida
End

なかなか登場機会の少ないBASICですが、この手軽さと生産性の高さにはやはり根強い需要があるような気がします。

Maildirをバックアップするシェルスクリプト

参考程度になるかもしれませんので、当サイトでMaildirをバックアップするために使っているスクリプトを載せておきます。curとnewディレクトリだけを保存し、古いファイルを削除できます。

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
27
28
29
#!/bin/sh

# Remains at least these days
keepday=14

HOMEDIR=/usr/local
MAILDIR=$HOMEDIR/Maildir
BACKUPDIR=$HOMEDIR/backup_mail
FOLDERS="kuroneko-square.net"

# Get timestamp
timestamp=`date +%Y%m%d`
old_date=`date "-d$keepday days ago" +%Y%m%d`

cd $MAILDIR

for F in $FOLDERS; do
  NAME=$BACKUPDIR/INBOX-$F-$timestamp.tar.gz
  FILES_CUR="`find $F -regex ".*cur.*"`"
  FILES_NEW="`find $F -regex ".*new.*"`"
  tar -cvzf $NAME $FILES_CUR $FILES_NEW

  rmfile=$BACKUPDIR/INBOX-$F-$old_date.tar.gz
  if [ -e $rmfile ]; then
  rm -f $rmfile
  fi
done

exit

VALUE DOMAIN のフィード

くろねこスクエアで使用しているドメインはVALUE DOMAINというところで管理しているのですが、頻繁にチェックしているわけではないため、新しいお知らせがあっても気づかない時があります。ATOMフィードやRSSフィードなどの配信があればフィードリーダーで更新チェックができるので言うことなしですが、なかなか対応は望めないようなので、試験的にではありますがVALUE DOMAINのアナウンスをフィードで取得できるようにしてみました。これでもう、期間限定割引なども見逃しませんよ。

しばらくは様子見・テスト運用ですが、特に問題なければGPL程度で公開したいと思います。追記:一部、最新情報を取得できない場合があるようですので修正しましたが、引き続き調査中です。

もし欲しいドメインがなかなか決まらないという方は、空きドメイン検索もできますのでご活用ください。

RakuFeed 2009-10-20へアップデート

従来から使用させていただいているPEAR::Services_Rakutenを、2009年10月までのいくつかのアップデートに(適当に)対応させたものを置いておきます。

0.2.2からの主な変更点は以下のとおりです。

  • 従来のBooks/CD/DVD検索の廃止にともない楽天ブックス系APIを追加
  • 各APIを2009/10/20 現在のバージョンに更新

GeoIP 用のアップデートスクリプト

ちょっとした環境変数を確認するために簡単なENV Checkerを置いてみたのですが、せっかくなので接続元地域の判定も入れてあります。

ただし、IPアドレスのデータベースを持つのは大変なので、MaxMind 社が配布している GeoLite Countryを利用させていただいています。このデータは毎月更新されるようなので、GeoIPの利用方法のシェルスクリプトを参考に、過去2ヶ月分を残し、それより前のデータを削除するスクリプトを追加してみました。

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
27
28
29
30
31
32
33
34
35
36
37
38
39
#! /bin/sh

# Remains at least these months
keepmonth=2

TMPDIR=$HOME/tmp
GEODIR=$HOME/share/GeoIP
DAT=GeoIP.dat

# Get timestamp
timestamp=`date +%Y%m`
old_date=`date "-d$keepmonth months ago" +%Y%m`

cd $TMPDIR

#/usr/bin/wget http://www.maxmind.com/download/geoip/database/$DAT.gz
/usr/bin/wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/$DAT.gz
if [ $? != 0 ] ; then
    echo "wget failed"
    exit 1
fi

/bin/gunzip $DAT.gz
if [ $? != 0 ] ; then
    echo "gunzip failed"
    exit 2
fi

cd $GEODIR
/bin/mv $DAT $DAT.$timestamp
/bin/mv $TMPDIR/$DAT .

rmfile=$DAT.$old_date

if [ -e $rmfile ]; then
rm -f $rmfile
fi

exit

1ヶ月ごとにcronを回せばデータベースを自動更新してくれるので、いわゆるメンテナンスフリーになります。

アクセス解析2009年10月

2009年10月のアクセス解析結果(kuroneko-square.net)です。調査期間は10月1日から10月31日まで。

ブラウザ別

Internet Explorer 628.5%
Internet Explorer 828.4%
Internet Explorer 723.4%
Firefox 312.2%
Safari3.5%
NetFront1.2%

IE8が増加しIE7が減少。Firefoxは横ばいの12%でした。Netfrontというのは、どんな機器をお使いの方なのでしょうか。

OS別

Windows XP63.3%
Windows Vista22.4%
Windows 20006.5%
MacOS X3.9%
Windows 981.3%

Windows 2000が微減しました。延長サポートフェーズは2010年までの予定ですので、今後も減少が続くのでしょうか。

検索語句

  1. ヨーヨーキルト 作品
  2. 紅葉 関東 絶景
  3. ldview japanese
  4. ホトトギス 藤娘
  5. 焼き塩 作り方
  6. パッチワーク クリスマス
  7. 鬼怒沼
  8. 簡単 クリスマス小物
  9. ブラキカム マリウスブルー
  10. タオルケーキ 作り方

2009年9月に比べ鬼怒沼での検索が増加しました。全体的には手作り作品が目立ちます。

アクセス解析2009年9月

2009年9月のアクセス解析結果(kuroneko-square.net)です。調査期間は9月1日から9月30日まで。

ブラウザ別

Internet Explorer 727.3%
Internet Explorer 626.7%
Internet Explorer 826.0%
Firefox 311.0%
Safari2.8%

IEが全体の80%で、Firefoxが12%でした。2009年8月に比べてIE8が微増し、Firefoxが減少しました。

OS別

Windows XP66.4%
Windows Vista22.5%
Windows 20007.9%
MacOS X3.5%
Windows 981.1%

Windowsの割合はほとんど変わらず。年末にかけて、Windows 7がちらほら見られるのでしょうか。

検索語句

  1. ヨーヨーキルト 作品
  2. 日光白根山 紅葉
  3. ホトトギス 藤娘
  4. 白根山 紅葉
  5. 焼き塩 作り方
  6. 080 携帯
  7. site:kuroneko-square.net
  8. クマのルーニー
  9. ブラキカム マリウスブルー
  10. 鬼怒沼

秋の連休の影響で紅葉が気になる方が多かったのか、観光地が目立ちました。ホトトギスの花もちょうど見頃ですね。


カテゴリー

タグ

アーカイブ

Feed

メタ情報