ajaxzip2の重複郵便番号

通販サイトのピークスクラブで永らく使ってましたが、ふと最近文字化けするようになり対策がないかググッてますと、ajaxzip2に致命的なバクがあるとか…


調べると1500件以上郵便番号が重複していて、ajaxで書き出されるのが重複郵便番号の最初の1件のみでした…

公開されているプログラムで楽しようと使わせていただいていましたが結局ちょい手を加えて対応しました。


例えば郵便番号が028-7302の場合、

八幡平市 松川温泉
八幡平市 松尾寄木
八幡平市 八幡平温泉郷

と3件あり選択できるようにしました。

http://www.post.japanpost.jp/zipcode/dl/kogaki/lzh/ken_all.lzhから全国の圧縮版を入手し、解凍先のフォルダに下のプログラムを入れて走らせるともれなく書き出します(たぶん)
やっつけなんで突っ込みどころ満載ですが…

sjisで保存して、郵便番号はajaxzip2と同じ書式でutf-8での書き出しになってます。

重複時は県番号にWを付けたので、””でくくらないとjsonで読み出せなくなりますので…

で、後はajaxzip2.jsを適当に修正して完成です。参考になさる方は、ソース覗いてください。
https://www.peaks.jp/order/DataFile/ajaxzip2.js

※ 県配列は運送会社の料金区分で分けれるよう入れ替えてますのでjsファイルをまんま使うと大変な事になりますので…ご注意ください。

#!/usr/bin/perl

use strict;
use warnings;
use Encode;

print "Content-Type: text/html; charset=Shift_JIS", "\n\n";

my $csvfile = "./KEN_ALL.CSV";
my (%zip,%zip2,%sort_file,@add,@duplication,@uniq,$i);

print "<html><body>";
print "ken_all:$csvfile<hr><pre>";

open(IN,"$csvfile") || &error("Open Error: $csvfile");
while (<IN>) {

$_ =~ s/"//g;
my($id,$z,$zip,$kana1,$kana2,$kana3,$pref,$add,$add2,$etc) = split(/,/);
if ( $add2 =~ s/(|)|「|」|地割|、//s) {$add2="";}#重複してるアドレス削除

my $File_id = ( $zip =~ /^([0-9]{3})/ )[0];#ファイル番号
$id = int($id/1000);#都道府県id
$add2 =~ s/以下に掲載がない場合//g;
push (@add,"$File_id,$zip,$id,$add,$add2");
}
close(IN);

@uniq = uniqArray(\@add);
foreach my $value (sort( @uniq) ){

my ($File_id,$zip,$id,$add,$add2) = split(/,/,$value);
my $address = "\"$add\",\"$add2\"";
if($zip{$zip}){$zip2{$zip} = "$File_id:\"W$id\",$zip{$zip}$address";}else{$zip2{$zip} = "$File_id:$id,$address";}#
if($address){$zip{$zip} .= "$address,";}

}

foreach my $value (sort(keys(%zip2))){#郵便番号順
my ($File_id,$add) = split(/:/,$zip2{$value});

#$i++;
#print "\n($i)$value\n$zip2{$value}";#確認用
#print "$File_id:$value:$add";#確認用
$sort_file{$File_id} .= "\"$value\":[$add],";

};

foreach my $value (sort(keys(%sort_file))){#ファイル番号順
my ($zip,$add) = split(/:/,$sort_file{$value});

$i++;
$sort_file{$value} =~ s/,$//g;
my $v = sprintf( "%03d",$i );
my $new_zip ="\{$sort_file{$value}\}";
my $File_name ="zip-" . $value . ".json";
print "\n($v)$File_name$new_zip";# JSONフォーマット確認用

$File_name = "./zipdata/$File_name";#書き込みフォルダー
#サンプルの場合は先にzipdata名でフォルダー制作

open( JSON, "> $File_name") or die "$! – $File_name\n";
$new_zip = Encode::decode(‘sjis’, $new_zip);
$new_zip = Encode::encode( ‘UTF-8’, $new_zip );
print JSON $new_zip;
close( JSON );

#push (@duplication,"$File_name—-$new_zip\n");#確認用

}

print "</body></html>";
#
#open(FH,"> data.txt");#まとめ書き出し用
#print FH @duplication;
#close(FH);

sub uniqArray{
my $array = shift;
my %hash = ();

foreach my $value ( @$array ){
$hash{$value} = 1;
}

return(
keys %hash
);
}

クロネコヤマトB2 センタリングの仕方

先日、インクジェットのプリンターが壊れたので買い換えました。が、
これが、背面からの手差しをする時に、用紙の挿入口のガイドを中央に寄せるタイプで、クロネコヤマトで商品を発送する場合に下記リンク先にあるように、「送り状発行ソフトB2」では対応せず、中央に差し込まれた送り状の左はしにだけプリントされるようになってしまいました。

送り状発行ソフトB2 (法人・個人事業主のお客さま 向け) B2のご利用前に|ヤマト運輸

B2のソフトからの余白の調整は1桁のmm単位でしか対応せず、プリンターを買い換えようかとも悩みましたが、

確かインストールする時にiniファイルを作ってたようなので探して、

windows配下のWebBCAT.INIの下記の箇所で直接mm単位で記入してセンタリングに対応するように出来ました。(元払いと代引きと赤字の2箇所修正です)
買ったCANONのPIXUS MG6130では61mmぐらいで使えてます。

[WEBBC013P]
Top=5
Left=61
[WEBBC013PC]
Top=5
Left=61

プリンターを分解するまで知らなかったのですがインクジョットプリンターはヘッドクリーニングの度にインクを捨てていて、それをフェルトに吸収させて溜め込んで処理しています。
ある程度ヘッドクリーニングすると廃棄されるインクでプリンターがまったく動かなくなり、リセットするまで受付なくなります。

でいつものように分解し、フェルトを水洗いクリーニングし組み込直して、あちこち検索しながら(メーカーのページに無い)リセット方法を見つけ出しめでたく復活・・・と思いきや・・・ヘッド回りを弄りすぎたみたいで…まったくプリントされずになり・・・捨てました・・・

IC5CL05×6個 リサイクル品
IC1BK05×1個 純正品
IC1BK05×2個 バルク品
IC5CL06×1個 純正品(品番間違えて買った・・・)

とインクが未使用で残ってますがほしい方いませんか?

perl フォームからの検索語のチェック「|」

通販のページに検索フォームをつけました。

perlで製作していますが、複数語句を入力した時に、正規表現で|(パイプ)を使い

$s =~ /a|b|c/ とし a、b、cどれかにマッチするようにしていますが、
この時にフォームに正規表現で

アリミノ|トリートメント とか入力されるとそれぞれアリミノ、トリートメントに該当するのがリストアップされますが、これが
アリミノ | トリートメント とスペースも入力されると次の語句のマークアップでとんでも無いことがおきました。
借りているサーバーは共用ですから他の人の迷惑になりますのであちこちクグリましたが、
対応策が見つからず、
結局フォームからURIエンコードされてくるデータを分解時に
length(フォームデータ)<=3 で 3バイト以下を全部削除するようにして解決です。 sjisで書いていますから、 &jcode’convert(*look_up_and,’euc’)
一端eucに変換してマッチングと置換えは行い又、
sjisに戻して表示しています。

下記のサイトはすごくためになります。
Perlメモ
“$ascii = ‘[\x00-\x7F]’; $twoBytes = ‘[\x8E\xA1-\xFE][\xA1-\xFE]’; $threeBytes = ‘\x8F[\xA1-\xFE][\xA1-\xFE]’; if ($str =~ /^(?:$ascii|$twoBytes|$threeBytes)*?(?:$pattern)/) { print ‘マッチした\n’; }”

ハニエル プレミアンハイブライド新発売(シットリタイプ)

ハニエルからもシットリタイプ発売されました。
当店も本日入荷のはすが未だ入ってきていないですけど、特許の親元ですからセフィーヌラ・ATPとの違いがどうか早く現物を確認したいところです。期待できそうですよ~。
(06月04日に無事入荷いたしました。こちらで取扱いしています。)

ハニエルシャンプーハニエルトリートメント
従来のハニエルディフェンダーシャンプー&トリートメントとここが変わりました
1.フラビンアデニン ジ ヌクレオチド(FAD)を配合しました。
 電子を2つ持つ特殊なタンパク質で安定して電磁気力を発生させることにより、スムーズに髪を復元させることができます。
2.シッカリとクレンジングしながらもきしみがありません
 ロングヘアやデジパー、縮毛矯正など、ダメージのきになる方にも従来のハニエルよりきしみ具合が滑らかになりました。きしまなくても再生能力がアップしています。
3.抜け毛が減る!育毛効果UP
 プレミアンハイブライドシャンプー・トリートメントには、育毛効果のある「ビワ葉エキス」などを配合し、従来のハニエルディフェンダーの抜け毛予防にプラスして「育毛効果」が期待できます。
4.ナノバルブ水使用
 ナノバルブ水とは1mmの5000分の1サイズの気泡を含む水。その水の泡の周りに電子の膜をつくるので、これにより吸い寄せられる有効成分が頭皮・頭髪に浸透するため無駄なくスピーディに栄養を運べるようになりました。
5.ダメージを与えるラジカルを除去します。
 紫外線などで発生する「メラニンラジカル」。これは身体に有害な活性酸素の元になります。プレミアンハイブライドシャンプー・トリートメントはメラニンラジカルの発生を抑制することがESR(ElectronSpinResonance→【和名】電子スピン共鳴)にて確認されています。
6.上品なマグノリアの香り
 今度のハニエルプレミアンハイブライドシャンプー・トリートメントはマグノリアをベースとした「木蓮」の香りをイメージした上品でエキゾチックな香りです。

毛髪再生シャンプー ハニエル&RA・atp

最近は、再生医療の分野からの応用で、毛髪を再生することができるようになってきている。
といっても、発毛ではなく傷んだ髪の再生ですけど・・・

個人のゲノム解析も現在5人目?だったか中国人の方が1億5千万で依頼しているそうだ。
(研究開発費への寄付も含めて)
4人目の人はバーゲンプライスで3500万で、アメリカだっったかに依頼しているらしい。
アメリカ、イギリス、中国がこの分野で盛んで日本は・・・

で毛髪の再生は、毛髪内部に生き残っているミトコンドリアにエネルギーを与えて、休止している細胞を
活動させる事により、損傷を受けた、キューティクルや毛髪内部の栄養が、
皮膚の切り傷が勝手に修復するように、毛髪も修復されます。

当店でも扱っている

等は、ミトコンドリアに微弱な電流を与える事により再生をさせている。

で今月末に、ラ・エーティーピーからでる、ヘアーセトラこれがローズウッドのほのかな香りですごくいい。

従来のタイプでも剛毛や癖毛の再生には効果的だが、さらに特化して作られ傷みの激しい(デシパーや矯正)等の蛋白変性を起こし毛髪内部の構造が変化させられいる頭髪にわかりやすく効果的にしっとりとサラサラになるお勧め商品です。

巷にあふれている擬似的な毛髪成分やCMで盛んにツヤツヤになると広告している肌に悪いシリコン剤などでのごまかしではなく、本物の健康毛に戻すことができます。

再生能力はハニエルもラATPも変わらないが、質感の差で今度のラ・エーティーピーヘアーセトラが、特に硬毛の方にお勧めです。