2009年11月06日

VBAでUnicodeEscapeSeaquenceをデコード

さて、先日、ニコニコ動画が、(9)に変わりまして、マイリストの仕様がかなり変わりました。

週間ボカランのマイリストから、「ボカランを再ランキング」コンテンツを作っている私としては結構死活問題です。

ちなみに、再ランキングを動かしているスクリプトの環境は。

WindowsXP + Excel2000という数世代前の環境ですw
んでVBA(マクロ)でがっしがっし動くように作っていたんです。

話は戻りまして。
今まで、マイリストは今までHTMLで構成されていたんですが、今度からはJavaScript(Ajax)となってしまいまして。
データ形式が大幅に変更となりました。

ってことで、抽出スクリプトをガシガシ変えていたんですが。
でかい壁にぶち当たりました。

Unicode Escape Sequence(ユニコードエスケープシーケンス)

2バイト文字が総じて、「\u521d\u97f3\u30df\u30af」こんな感じにエンコードされているわけです。
こいつをデコードしなくちゃ日本語として表示できないわけでして。

こりゃやべぇと。
あちこちのサイトとか巡ったわけです。
んで、やっとこさ自分の納得できる関数ができあがりました。
バグ取りとかなーんもしてないので、何か問題起きてもしらんですが、とりあえず私の環境ではまともに動いているようなので、スクリプト晒します。

何の役に立つかは解りませんがwww




''--------------------------------------------------------
'' \u521d\u97f3\u30df\u30af こんなふうに
'' Unicode Escape Sequence(ユニコードエスケープシーケンス)
'' されている文字を変換するVBAスクリプト(XP-Excel2000動作確認済)
'' 引数に\u521d\u97f3\u30df\u30afとなっている文字をぶち込んで下さい
''
'' 使ったことで何か起きても責任は持ちませんので、自己責任でよろしくです。
'' (趣味用で適当に組んだのでバグがあるかもwww)
''---------------------------------------------------------
Private Function Henkan(ByVal strTemp As String) As String
On Error GoTo Err_Henkan:
Henkan = ""

Dim INT_BYTE As Integer
''INT_BYTEは、\uの後数値何文字あるか。
''一応定義しておく定数。大概4だと思うけど。
INT_BYTE = 4

Dim i As Integer
Dim flgUnicode As Boolean

''初期値設定
flgUnicode = False

''文字数分ループ
For i = 1 To Len(strTemp)
''Unicodeフラグがたっていなくて、"\"がきたら
If (flgUnicode = False) And (Mid(strTemp, i, 1) = "\") Then
i = i + 1
''ひとつ文字を進めて次がUで、\u ユニコードエスケープシーケンスだったら。
If Mid(strTemp, i, 1) = "u" Then
i = i + 1
flgUnicode = True
Else
i = i - 1
flgUnicode = False
End If
End If

''Unicodeフラグがたっていたら
If flgUnicode Then
''4バイト分切り出して16進変換してChrWで文字変換
''INT_BYTEは、一応定義しておく定数。大概4だと思うけど。
Henkan = Henkan & ChrW("&H" & Mid(strTemp, i, INT_BYTE))
i = i + 3
''フラグ戻しておく
flgUnicode = False
Else
''ただの半角文字だったら
Henkan = Henkan & Mid(strTemp, i, 1)
End If
Next i

Exit Function
Err_Henkan:
Henkan = "残念ですがエラーが発生しました。"
End Function


ま、こんな感じっす。
ご使用はあくまで自己責任でお願いします。
何か起きても私は一切責任を取れませんのであしからず。
posted by Fuchs at 20:32| Comment(0) | TrackBack(0) | プログラミング

2008年06月16日

趣味であっても

趣味でもプログラミングをカタカタやっている私ですが。
大分終盤に近づいていてきたのです。
そうなるとやることはデバッグになるわけです。

まー。苛々ですよ。

上手くいかない部分があちこち出てくるわけで、それに手を入れて動かすと思わぬ所がまた動かなく…の繰り返し。

苛々苛々…うきーーーーヽ(`Д´)ノ

趣味でもそんな苛ついてどうするんだと。
それならやらなければいいっしょってなものなのですが。

うん。何となくやらなくちゃなぁと。
苛々しながらも地味にちびちび先にすすもうと思っています。

今月中には公開予定です。
posted by Fuchs at 21:48| Comment(0) | TrackBack(0) | プログラミング

2008年05月27日

PHPメモ書き

趣味の部分でかちゃかちゃ作っているプログラム。
もう少しでαぐらいのバージョンはアップ出来そうだなという感じになっていました。

で、色々作っている内に分かってきたこともあります。
メモ書きみたいな感じで残しておこう。

try-catch-finally…finallyねぇよ(;´Д`)
あったら便利なのにねぇ。次のバージョンで検討しているとかなんとか。

XML DOM
XML書き出しの$dom->save("ファイル名");
これは、排他制御ないっぽ。
ってことで、テキストファイルとして保存していく感じ。

//dump_memでテキストをはき出す。
$txtTmp = $dom->dump_mem(true,'UTF-8');
//ファイル作るよ。
$fp = fopen('ファイル名.xml','wb+');
//んでろっく。
flock($fp, LOCK_EX);
//かきこもう
fwrite($fp,$txtTmp);
//とじよう
fclose($fp);

こうやって排他をかけると。うむ。これで忘れない。
あー。
$doc->load();
は、ファイルがあるかどうかチェックしてないから、直前に
file_exists
なんかでチェックしておくことも重要。
Warningでるよ。

んなかんじでメモ書き。
posted by Fuchs at 20:44| Comment(0) | TrackBack(0) | プログラミング

2008年05月08日

PHPでのプログラミングで

最近こつこつ進めているPHPプログラム。
XMLを利用するのですが、ノードの切り貼りしなくちゃいけないんですよね。

まだやり始めたばかりだったので、新しくノード作ってそこにコピー元のノードから取り出したデータを入れ直すという凄く面倒な事やっていたんですよ。

何か楽な方法無いかなぁと思っていたらcloneNodeってのがあるわけですよ。
これ使えばいいじゃん! と思ったのですが、こいつがなかなか上手くいかないと。
使い方がワカランのですよw

ふつーにコピー元のノードをcloneNodeでコピーするという形ではないんですよね。

まずコピー元のノードを取得します

$copy = $xpath->query("/root/data");
んでクローンノードを作る

$clone = $copy->cloneNode(true);←確か中身もコピーするんだったらtrueにするんだったきがす。

ここからが分からなかった部分。

新しいコピーノードを作る(コピー先の準備)
コピー先にクローンを作ったノードをぶっ込む準備をしてやるわけです。それがimportNode 他からモッテキタノードをインポートするって感じじゃねーかと私は理解したw

$copytmp = $doc->importNode($clone,true);

んで、コピー先のいれたいノードにappendChildしてやりゃ良い訳ですよ。
$コピー先ノード->appendChild($copytmp);

これでXMLのノードをコピーするのがラクラクに。良かった良かった。
まー。こんな情報役に立つかしらんが一応載せておこうw
posted by Fuchs at 22:09| Comment(0) | TrackBack(0) | プログラミング

2008年03月31日

大分慣れて

PHPでのプログラミングも大分慣れてきました。
これまでずっとテキストエディタで打ち続けてましたが。
流石にそれは疲れてきたのでPHPエディタを使うようになりまして。
これが結構便利だったので助かってます。
ローカルにもPHPが動作出来る環境を整えてみましたが。

こちらはあまり上手く動かず。
やはりLinuxで動かしている方がいいやと改めて思いました。
Windowsは信用ならない!

そんなこんなで進捗はじりじりと。
posted by Fuchs at 23:15| Comment(0) | TrackBack(0) | プログラミング

2008年03月25日

続AWS

今日もAWSをカチカチ弄っていまして。
書籍データを取得する所までは出来たのです。
意外と簡単だなー(・∀・)
って感じだったんですが。

…文字化けするよ!?
?がいっぱいでるよ!?

文字コードか。しゃーないなー。UTF-8なんだろ?
あれ…mb_convert_encodingしたはずなのに直らないよ?
あれ? あれ? あれ?
おかしいな。EUC-JPだよな…。あれ? あれ? なんでブラウザシフトJIS判定するですか!?

ここら辺でちょっと悩みまして。
結局、mb_convert_encodingの引数が間違えていたという下らない落ちが待っていましたw
コピペして使ったもんだから全ておかしかったという。
うぁぁぁぁ。

mb_convert_encoding($testData,'EUC-JP','UTF-8')

(´・ω・`)
後ろの引数がひっくり返ってたよ。

単純ミスって恐ろしいね。
取り敢えず書籍データを引っ張ってこれることは把握しました。
こっからが問題だなーという。
posted by Fuchs at 20:26| Comment(0) | TrackBack(0) | プログラミング

2008年03月24日

個人的な開発で

個人的にプログラムを作っているのですが。
そこでAmazonのWebServiceを使うことにしました。
アソシエイトのIDは既に持っているので。
AWSを使う手続きをしなければなりません。

Amazon本体から登録するので全て英語です。

……(。´Д⊂)゚。

読めるわけありません。英語力無いですしw
あと住所とかを入力するのがまた難しかった。
向こうの住所の形式とこちらの住所の形式は全く違います。
○○県○○市1丁目2−3だったら
2-3 1-Chome ○○-Shi ○○-Ken だったけな。みたいに書かなければいけません。
ZIPCodeって何だよ(´・ω・`) 圧縮するですか?
郵便番号です。本当にありがとうごz(ry
電話番号だって+81-12-345-678みたいに国番号いるしねぇ。

まー。ちまちま調べながら入力して何とか手続き完了しました。
で、簡単な検索リクエストを作ってみたのですが。
おー。アマゾンからしっかりデータ拾ってきた(・∀・)
ちょっと感動してましたとさ。
posted by Fuchs at 21:12| Comment(0) | TrackBack(0) | プログラミング

2008年03月06日

基礎技術習得完了

さて、HPをPHPで作り替えようプロジェクトなのですが。
基礎技術をやっと創り上げました。

まだ公開には至ってませんが、近日ベータ版を公開することになると思います。
全てXML化されることになります(`・ω・´)

PHP XML XSLT CSS でレイアウトされます。

RSS対応にしようかどうか悩む所ですが、そこまで更新のない部分の変更からはいるのでそこまでは手を出さないことにしましたw

HTMLからの脱却! という訳ではありませんが、検索機能がついたりと少しは便利になるはず! はず!

乞うご期待(=゚ω゚)ノ
posted by Fuchs at 21:17| Comment(0) | TrackBack(0) | プログラミング

2008年02月26日

XML+XSLT+CSS

XMLとXSLTでHTML表示しようとして、CSSを適用させていたのですが、FireFoxとOperaでは正常に表示してくれたのに、何故かIEでは中途半端にCSSが反映されました。

なんでだろう?
全然分からず凄く悩んでいました。
あちこち調べても出ていないし。

XMLとXSLTは勿論UTF-8で記載して宣言もしています。
outputをHTMLにしなくちゃいけないのかとか。
タグに大文字が混じっていたからか? とか。
全てつぶしていったのですが、レイアウトが崩れるのは直りません。

CSSにもエンコードの宣言をしなくちゃいけないのか?
と、思ったときに気づきました。

CSSの文字コードどんなよ。

……Shift_Jis

…………これだっ

………………直りました(´・ω・`)

なんという初歩的ミス。
それによってCSSが反映されないとは夢にも思いませんでした。
いやはや。難しい物です。
posted by Fuchs at 22:05| Comment(0) | TrackBack(0) | プログラミング

2008年02月17日

現在PHPでプログラミングしてますが

この本は結構役に立ちますよ?

PHPサイバーテロの技法―攻撃と防御の実際
GIJOE
ソシム (2005/11)
売り上げランキング: 9766


ちょっと日付的には古いので気をつけなければいけないのかもしれませんが、だいたい基本的なことは書かれていると思います。

あくまで「基礎的な話」として受け止めて他の穴については、インターネットなどでしっかり調べなくちゃいけないことをお忘れ無く。

これ読んで自分の作ったスクリプトの事考えたらぞっとしました。
何も考えないで公開してましたからねぇ。
前作ったCGIとか。あれはPerlでしたが。
今見たら穴だらけでした。酷いもんですw

ってことで、本のご紹介でした(=゚ω゚)ノ
posted by Fuchs at 21:02| Comment(0) | TrackBack(0) | プログラミング

2008年02月05日

完成ソフトウェア

ってことで、自分のニュース日記。を書くためだけのソフトウェアは完成しました。
コピペが楽になりました(・∀・)

ただそれだけなんですが、まぁ、自分としては気に入っているわけです。
そりゃそうだ。自分で創ったんだから。

実質3日で創り上げたそのプログラムは。
汎用性0というすばらしさw

ニュース日記しか書けないタグエディタです。

それでも直接タグ打ちするよりは楽になるのでありがたいなぁと。

少しは効率化が図れると期待しています。

posted by Fuchs at 21:01| Comment(0) | TrackBack(0) | プログラミング

2007年08月29日

備忘録

VB.NET + OleDB

CSVデータベース化をしようと、食わせてみる処理をしています。
だけれどもSELECTがうまく動かない。
クエリブラウザとかでは動くのに。
原因が掴めずに延々と悩んでいました。

出てくるエラーはいつも同じ。

OleDbException
「1 つ以上の必要なパラメータの値が設定されていません。」

全然SELECT文とかに間違いが無いのに上のようなエラーが出る。
上にも書いてあるが、クエリブラウザとかでは正常に表示されるんですよ。

なんで動かないのだ!
オブジェクトとかもしっかりできているし…。

原因SQL文じゃなくプロバイダあたりの設定でした。

sCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="""
sCon += sFullFilePath
sCon += """;Extended Properties=""text;HDR=No;FMT=Delimited;"";"

これを見て解りますか?
CSVを食わせるために必要なんですけれどもね。



HDR=Noでは、ヘッダーが無視されているのでSELECTとかできるわけない。
ナンテコッタ…ただそれだけじゃないか(´・ω・`)
当たり前のことです。
だってどの列が何かという判定ができないのですから。

くっそぅ・゜・(ノД`)・゜・
posted by Fuchs at 20:34| Comment(0) | TrackBack(0) | プログラミング

2007年06月08日

続・悩み事

昨日、ダブルホップに泣かされたわけですが。
Windows認証を使い、ダブルホップに泣かないためにどうするか。
Kerberos認証にするってのもあるんだけれども。
設定があまりいじれないので。

ちょっと面倒にはなるけれども、「ベーシック認証」を使うことにしました。
ベーシック認証=基本認証だと、さくっと動いてくれたんで、まぁこれでいいやと。

だけれども、この基本認証は、デバッグができないという欠点を持っており。
またそこで悩むことに。

仕方ないので開発(デバッグ)の時は統合認証を使い、本番環境では、基本認証で使う用にIIS設定を変えるようにしましたとさ。

と、いうのも面倒だけれども、それで動くんだからまぁいいやと。
あぁ。今回のシステムは社内一部向けなんでそこまで神経質にならなくてもよいんでこういう事ができますw

売り物だったら…SEがもっと良い提案をw

まぁ、そんな感じで。
posted by Fuchs at 21:12| Comment(0) | TrackBack(0) | プログラミング

2007年06月07日

悩み事

さて。
最近職場でプログラミングをしております。

色々な技術に挑戦しているわけですが。

一つ困った問題にぶち当たりました。

.NETを使ってこちゃこちゃやっていたんですが〜
持ち上がったのは。

「ダブルホップ問題」

これ。かなり厳しいねぇ。
Windows認証が使えません。
ってことは、他の認証でごまかすしか…。
操作性落ちちゃうよなぁ。

なんかサーバーのリソースにアクセスできねぇなぁと。
偽装とか色々やってみたんだけれども上手くいかず。
こちゃこちゃ調べてたらぶち当たったのが。

「NTLM認証でダブルホップがサポートされていない件」

うぼぁぁぁ(;´Д`)

まぁ、しゃーないけどさぁ。
サポートして欲しいなぁと切に願う今日この頃。
posted by Fuchs at 20:30| Comment(0) | TrackBack(0) | プログラミング

2007年04月15日

少し前進

現在、JavaScript + XML + Rubyっていう構成でプログラミングしています。
JavaScriptにとまどっているのですけれども。
デバッグが難しいんだ〜。

ってことで、今使っているのはFirefox
これについているコンソールは結構便利ねー。

勿論アパッチでサーバー立てて自鯖でごちゃごちゃやっています。
レンタルサーバーに迷惑はかけられませんので。

んでやっと少し前進したのでほっとしていますが、ここからが長いのです。
XMLの編集へと入りますからね〜。

そのうち公開致しますので見てやって下さいね
posted by Fuchs at 20:59| Comment(0) | TrackBack(0) | プログラミング

2006年11月10日

トラバ…[213]

まぁ、こっちにはトラバ依頼はこない。
っていうか禁止にしているからねぇ。
過去ログブログだけは受け付けているんだけれどもね。
あのブログでも結構来るの依頼。

でも、殆どがトラバスパム。

ウザ過ぎる(;´Д`)

中にはまともなトラバ先もあることはあるのだけれども。

なんて言いますかねぇ。

それにしても、トラバありがとうございます。
の意味が、未だに良く解らないのだが…
posted by Fuchs at 21:13| Comment(0) | TrackBack(0) | プログラミング

2006年06月10日

新しいスクリプト

なんだかふと思い立ち。
競馬を予想するスクリプトを作ってみたいなぁと思ってみたり。
いつもは紙にえっちらおっちら書いて予想しているのですが。
それを自動化できないかと考えたわけです。

つーのは、自分の予想方法は数値データしかみないので。
それであればスクリプト組めば予想できるんじゃないかと。

といっても、なんだか大がかりにするのは面倒なので、Excelベースで組んでみようと。
マクロを作るか作らないか…
マクロを使わないでやってみるのも一興かなぁ…

色々と構想を練りつつExcelと睨めっこしてます。
これで的中率が高いのが出来ちゃったら…
売れる? 売れるかな??

なんて、アホなこと思ってみたりする。

人生そんなに甘くはない
posted by Fuchs at 20:47| Comment(0) | TrackBack(0) | プログラミング

2005年12月16日

PerlでのCgi作成(5) (79日目)

ここ最近、Perlプログラミングなブログになっている件

興味ない人はスマソ(;´Д`)
最近内情はここじゃなくて、ミクシに書いてたりするんですw

そのうちまた鬱日記が開催されるまでお待ち下さい。

そんで今日はそこまで進まなかったのですが…
書き込み部分の基礎を作りました。

openとか使用してできたんですが…
何か変なファイルに書き込んでデータを破壊してくれましたw
まぁテストデータだからいいんだけどさー
あわてて直す……
あれです。
ファイルの位置を指定し忘れてたりしたんです。
んで書き込む関数の使い方間違えたり。

open(FILE,">ファイル名");
open(FILE,">>ファイル名");

の使い方とかちょこっと忘れてたし。
ロックをどうしようか悩むが……まぁ大勢が書き込む物じゃないのでいらないかなぁと。
ロックはサーバー依存だからなぁ。

書き込みの基礎も完成したので、後はどうデータを組み立てるか。
山場だ……
表示は出来ているんだから、ここを超えれば完成さぁ。

だいぶんPerlも慣れてきて良いことだ。

覚え書き
localとmyを使う
サブルーチンのなかでは、localやらmyやらで局所変数を使うべし
そうすれば以前起きたバグは怒らなくなる
すっかり忘れてた…orz


posted by Fuchs at 20:55| Comment(0) | TrackBack(0) | プログラミング

2005年12月15日

PerlでのCgi作成(4) (78日目)

今日もしこしこCGI作成。
表示部分に多少の修正を加える。

そして、次の段階へと突入。

「データ入力部分」

POSTされてきたフォームのデータを解析し、処理を振り分ける。
あとはパスワードの処理とかも重要になってくる。
すぐ抜かれるようじゃねぇ?
ってほど大事なデータでもないのだがw

今回は競馬予想結果登録システムの失敗を生かし、
データバックアップ機能を追加することにした。

いや…競馬予想結果登録システムは、仕事の片手間に作ったんだが。
たまにデータの書き込みに失敗しやがって、データぶちこわすんだよ。
なので手動でバックアップをとっている訳だが。
修正入れようにも汚いプログラム過ぎて見る気がしない……

そのうち修正しないとなぁ。

処理振り分け部分も完成したので、
次はフォームHTML出力の作成をして今日は完了。

どうやって効率よく書き込むようにするかが課題かな。
ソートルーチンとかも考えなくちゃいけないし。
posted by Fuchs at 21:52| Comment(0) | TrackBack(0) | プログラミング

2005年12月14日

PerlでのCgi作成(3) (77日目)

※覚え書き1
perlのサブルーチン(以下関数)。
他の関数で使っている配列と同じ名前で配列を定義すると、
他の関数使われている配列をいじくる。

俺はC言語やらJavaやらをメインにやってきました。
そんな…
別の場所で定義した配列を全く別の関数で使えるなんて卑怯だ(。´Д⊂)゚。

そのせいでバグが解らず悩むこと数時間でしたw

※覚え書き2
正規表現(文字列が符号付き小数点であるかを調べる)

/[\-\+]+\d+\.\d+/

何となくあってる気がする。動いてるし大丈夫だろう。
自信はないw

ってことで…
表示部分が何となく完成したわけです。

shiftやらpopやらで少し混乱を招いた物の、それなりに表示が上手くいってます。
でもバグは可成り潜んでいる物と…
完成したらしっかりテストデータ作って検証しなくちゃなぁ。

進捗率は30%と言うところ。
表示が出来れば、残りはデータを書き込んでいく部分。
ここがメインだからなぁ…。

先は長い。
posted by Fuchs at 20:59| Comment(0) | TrackBack(0) | プログラミング