現在のページの位置:くろねこスクエア Labs >

くろねこスクエア Labs

バーコード作成 リリース

バーコードを作成するためのWebサービス「バーコード作成」と「QRコード作成」をリリースしました。各種バーコードに対応しています。

バーコードの作成」を参考にさせていただきました。

今回対応したバーコード

  • JAN-13/EAN-13/ISBN-13
  • UPC-A
  • CODE 39
  • Code 25 Interleaved 2 of 5(ITF)
  • CODE 128
  • PostNet
  • 日本郵便 カスタマバーコード

ところで「日本郵便 カスタマバーコード」は需要がないのかライブラリがないのでバーコードに必要な文字情報の抜き出し法を参考にして書いてみたのが以下のPHPコード。漢数字は面倒なので対応していません。もう少しスマートなやり方はないだろうか?

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
<?php
function validator_imbjp($text){
    $text = trim($text);
    $text = strtoupper($text);
    $rep_pat= array("&","/","・",".");
    $text = str_replace($rep_pat,'',$text);
    $text = preg_replace('/[A-Z]{2,}/','',$text);

    // /[0-9]F/ -> [0-9]-, 2-3-$ => 2-3
    if(preg_match_all('/[0-9]F/',$text, $matches)){
        foreach($matches[0] as $key => $value){
            $mat[$key] = str_replace('F','-',$value);
        }
        $text = str_replace($matches[0],$mat,$text);
        $text = preg_replace('/-$/','',$text);
    }

    if(preg_match_all('/[A-Z0-9\-]+/', $text, $matches)){
        $text = implode('-', $matches[0]);
    } else {
        return;
    }

    // A-2 => A2, L-B => LB
    if(preg_match_all('/-*[A-Z]-*/',$text, $matches)){
        foreach($matches[0] as $key => $value){
            $mat[$key] = str_replace('-','',$value);
        }
        $text = str_replace($matches[0],$mat,$text);
    }

    $text = str_replace('--','-',$text);
    if(substr($text,3,1)=='-'){
        $text = substr_replace($text,'',3,1);
    }
    if(substr($text,7,1)=='-'){
        $text = substr_replace($text,'',7,1);
    }

    //numstring
    for ($idx = 0; $idx < strlen($text); $idx++) {
        $char  = substr($text, $idx, 1);
        for ($baridx = 0; $baridx < strlen($this->_coding_map[$char]);) {
            $numstring[] = substr($this->_coding_map[$char], $baridx, 3);
            $baridx = $baridx+3;
        }
    }

    //numstring length check(add and remove)
    if(count($numstring) < 20){
        for($idx = count($numstring); $idx < 20; $idx++){
            $numstring[] = '432';
        }
    }
    $numstring = array_slice($numstring,0,20);
   
    //Check digit
    foreach($numstring as $value) {
        $checksum = $checksum + $this->_checkdg_map[$value];
    }
    if(($checksum % 19) == 0) {
        $checkdigit = 0;
    } else {
        $checkdigit = (19 - ($checksum % 19));
    }

    //leader + number + checkdigit + trailer
    $numstring = $this->_coding_map['leader'].implode('',$numstring).$this->_coding_map[$checkdigit].$this->_coding_map['trailer'];
    return $numstring;
}

最終的な出力はPEAR::Image_Barcodeにおまかせ。参考までに、Image_Barcodeで使える「日本郵便 カスタマバーコード」クラスを置いておきます。

Y!Feed トピックスAPI Version2にアップデートに対応

Yahoo!デベロッパーネットワークにてアナウンスがありました「トピックスAPI Version2」に対応するため、「Y!Feed」のアップデートを行いました。

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

  • Version 1でのリクエストパラメータであるtopflgの1の指定は、Version 2のpickupcategoryのtop指定と同等です。
  • Version 1でのmidashiflgの1の指定は、Version 2のpickupdategoryのall指定と同等です。
  • Version 1でのorderはVersion 2ではsort内で+か-で指定します。
  • Version 1でのwordはVersion 2ではqueryに名称変更しています。
  • Version 1でのnumはVersion 2ではresultsに名称変更しています。
  • Version 2ではstartを使ってリクエストを繰り返すことでデータの全件取得が可能です。

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

Y!Feed リリース

キーワードに合ったYahoo! JAPANの情報を、使いやすい形で取得するためのWebサービス「Y!Feed」をリリースしました。Yahoo! JAPANの豊富な情報をキーワード、ジャンルなどで絞り込み、RSS/ATOMなどのデータとして取得することができます。

Yahoo!デベロッパーネットワーク」の仕様に準拠しましたので、容易に利用できると思います。

PEARライブラリ Services_Yahoo_JPを公開してくださったTetsuya Nakase氏に感謝いたします。

GnaviFeed リリース

キーワードに合ったぐるなびの情報を、使いやすい形で取得するためのWebサービス「GnaviFeed」をリリースしました。ぐるなびの豊富な情報をキーワード、ジャンル、位置情報などで絞り込み、RSS/ATOMなどのデータとして取得することができます。

ぐるなびWebサービス」の仕様に準拠しましたので、容易に利用できると思います。

最後にぐるなび webservice PHP APIを公開していただいたbluemoon氏に感謝いたします。

KakakuFeed リリース

キーワードに合った価格.comの情報を、使いやすい形で取得するためのWebサービス「KakakuFeed」をリリースしました。価格.comの商品をキーワードやジャンルで絞り込み、RSS/ATOMなどのデータとして取得することができます。

価格.com ウェブサービス Version1.1」の仕様に準拠しましたので、容易に利用できると思います。

今回使わせていただきましたPEAR::package::Services_KakakuComに感謝しつつ、0.4.0を価格.com ウェブサービス Version1.1に(適当に)対応させたものを置いておきます。

追記:2009年8月末、価格.com APIが新しくなりましたため、今後サービスが利用できなくなる可能性があります。

RakuFeed リリース

キーワードに合った楽天グループの情報を、使いやすい形で取得するためのWebサービス「RakuFeed」をリリースしました。楽天グループの商品をキーワードやジャンルで絞り込み、RSS/ATOMなどのデータとして取得することができます。また、楽天アフィリエイトのアフィリエイト・コードを指定することでアフィリエイトリンクURLを返すことができます。

きっかけは、リリース時点において「楽天オークションではフィードが取得できない」という一点に尽きます。非公式のAPI「RakuAPI」でも、楽天オークションには対応していませんでした。ちなみにYahoo!オークションとビッダーズ・オークションは標準でフィードに対応しています。戦略の違いだろうとは思いますが、フィードに非対応なのはやはり不便ですね。

それはそうと、「楽天ウェブサービス」という便利なものがあるので、開発期間=ドキュメントページの作成期間だったような気もします。

バックアップの保存期間を延長

バックアップの保存期間を延長し、バックアップ環境を強化しました。cronにて定時バックアップをとり、さらに数日分を残すようにしました。

ところで、MySQLのバックアップ用スクリプトとして、AutoMySQLBackupというのがありました。手軽に使えていいかもしれませんね。

以下はcronでMySQLを定期バックアップするための覚え書きです。

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

# MySQL Backup
# Remains at least these days
keepday=14

# Settings
dest=$HOME/backup_mysql
tmp=$HOME/tmp
srcfile=mysql.dump
user=user
db=dbname

# Dump
/usr/local/mysql/bin/mysqldump -u root --password='パスワード' --opt データベース名 > /*****/backup/temp

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

bkfile=$dest/$srcfile-$timestamp.tar.gz

cd $tmp; tar zcvf $bkfile $srcfile
cd $HOME
# > /dev/null 2>&1

if [ $? != 0 -o ! -e $bkfile ]; then
echo "backup faild -- ($tmp/$srcfile)"
exit 1
fi

rmfile=$dest/$srcfile-$old_date.tar.gz

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

rm -f $tmp/$srcfile

exit

PageRank Checker リリース

調べたいサイトのURLを入れてボタンを押すとGoogleでのPageRankがわかります。言うまでもなく、PageRankはあくまで一つの指標のため、目安程度にご利用ください。

測地系変換 リリース

GPSなどで利用されるWGS-84を基準として、簡易的に測地系を変換します。

Feed2One リリース

RSSなどのフィードを活用するためのWebサービス「Feed2One」をリリースしました。

Feed2Oneは、複数のサイトのフィードをまとめて一つのフィードを作ります。サービス内容としてはYahoo! Pipesでフィードを作るのと同じ。基本的にこのサイトで使うためのツールなので特に機能豊富というわけではないのですが、必要であればフィルター機能などをつけるかもしれません(公開はしていませんが、内部ではいろいろ変換機能をつけてます)。

実際の運用では、Feed2Oneで作ったフィードをそのまま配信せずにFeedBurnerなどを経由して配信したほうがメリットが多いですね。

カテゴリー

Feed

メタ情報