Unicodeの¥U1234な文字を読めるようにするには・・・(VB.NET)

めちゃくちゃ久しぶりの更新・・・

実は久しぶりにユニコード関係で苦しんだので

せっかくなのでメモします。

あ、ちなみにVB.NET(.net1.1)の話です。

もうサポートされてないじゃん www

文字コードの何が困るって・・・

文字コード問題は

  • エンコードなんだか
  • デコードなんだか
  • エスケープなんだか

とかいろいろあって

でも、久しぶりだとさっぱり忘れてるんだよね・・。

エスケープされたユニコードを
アンエスケープしたい!

例えばこんな感じ

\u30b5\u30fc\u30d0\u30fc

うっ、っと思うと思う^^;

これってどういう状態なのかと言うと、

「エスケープされたユニコード」

って言う感じらしい。

¥uでユニコードだよって教えておいて、そのあとの4桁でなんの文字かを指し示してる。

これを文字に戻せば良いんだけど・・・とにかく情報が出てこない・・!

「ユニコード 変換」

とか検索してもろくな情報がない・・・

 

【C#】Unicode 文字列から Shift-JIS 文字列に変換して返す拡張メソッド

↑かなり近い!んだけど、なんか余計なことをしてる気がする。

そもそもブラウザではあっさり文字コードから文字を表示できてるわけで

こんな複雑なわけない。

 

[C#] Unicode文字列をUnicodeスカラ値に変換する

あのコードは「スカラ値」というらしい・・・というか逆だし、もっとシンプルに解決方法がほしいんじゃ・・・!

 

答えは過去に作った自作ツールの中にあり・・・

過去のメモをいろいろ漁ってると・・・

VB.netでユニコードエスケープ(u?)を読めるようにしてみる

のメモあり・・

あれ・・・すでに実装済み?!全く覚えてない!!!

 

str = System.Text.RegularExpressions.Regex.Unescape( str )

たったこんだけ!!

うっはー、まじかよ・・・。

 

”ユニコードはエスケープ(アンエスケープ)”

っていうことがわかれば一発です。。。

うーん、難しい(私には。。。)

もっと簡単にメールを無限に作る方法

無料ドメインがオモシロイと思ってFreenomを紹介したんですけど、
どうもちゃんとHPを開設しないとリジェクトされてしまうみたい。

# 「HPがなかったからキャンセルしたよ」というメールが来て、確かにキャンセルされていました

というわけで、自PCでWEBサーバーを立てて・・・とも思いましたが、
いつチェックが来るかもわからないので、現実的ではないですね。

というわけで、そもそももっと簡単な方法あるじゃん、ということで家サーバーを紹介します。

いにしえのDDNSサービス「家サーバー」

多分軽く20年前くらいからあるDDNSサービスの家サーバーを使わせていただきます。

簡単に言うとHPを自宅サーバーで公開するのにIPアドレスを公開する代わりにサブドメインを貸してくれる、っていうサービスです。

時々変化するIPを簡単に更新する機能も含んでいます。

が、今回はメールを受けるだけなので、手動で設定します。

設定方法

家サーバー

下側の常時接続を選びます。

登録項目はこれだけ。

ドメインはプルダウンから選択します。orzなドメインがあり面白そうなのでこれにしました。

サブドメイン名は好きな文字列を記入します。
aとかabcとか簡単なものはすでにとられてしまっているので駄目でした。

でもあまり長いと入力が面倒なので短いほうが良いでしょう。ymoでやっと通りました。

もらえるドメインは「ymo.orz.hm」というサブドメインになります。

電子メールアドレスは素直にヤフーかgmailにしましょう。

パスワードは任意の文字列です。

 

こうなれば成功。ログインを押します。

 

ログインしてみます。

 

 

こんなシンプルなコンパネです。逆にいいですね。

 

赤字に注目。
つまり取得したドメイン「ymo.orz.hm」は0.0.0.0に向いているという意味です。

そこで、IPアドレス更新ボタンを押します。

 

更新されました。

 

このIPは自PCのグローバルIPが自動で表示されているので、とっても簡単です。

すぐには使えない!

説明には4分ほどで設定が完了すると書いてありますが、30分ほど待っても使えませんでした。

pingを撃ってみます。

さくらインターネットから・・・

$ ping ymo.orz.hm
ping: cannot resolve ymo.orz.hm: Unknown host

DTIのVPSから・・・

$ ping ymo.orz.hm
ping: unknown host ymo.orz.hm

コマンドプロンプトから・・・

C:\Users\1>ping mlin.orz.hm
ping 要求ではホスト mlin.orz.hm が見つかりませんでした。ホスト名を確認してもう一度実行してください。

 

このような表示が出る場合は、まだDNSに行き渡っていないということです。

成功するとこうなります。

ymo.orz.hm [223.134.23.237]に ping を送信しています 32 バイトのデータ:
223.134.23.237 からの応答: バイト数 =32 時間 =7ms TTL=255
223.134.23.237 からの応答: バイト数 =32 時間 =7ms TTL=255
223.134.23.237 からの応答: バイト数 =32 時間 =5ms TTL=255
223.134.23.237 からの応答: バイト数 =32 時間 =35ms TTL=255

223.134.23.237 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 5ms、最大 = 35ms、平均 = 13ms

 

あとはPmailServerに設定するだけ!

こちらを参考に・・・

ドメインは上記で取得したサブドメインをそのまま入力すればいいです。

 

今回はサブドメインですけど、ドメインとして追加して良いようです。

 

こんなふうにアカウントを追加します。

好きなだけアカウントは作れます。無限です。

Windowsのファイアウォール。久しぶりに設定したらわかりにくかったのでメモ

WindowsのファイアウォールってXPで採用されているのですが、
未だに馴染みが薄いです。

でも、ソフトが動かんなあ・・・と思うと大抵これが邪魔してるので、
もしかしてファイアウォール?と思うと設定どこだっけなあ・・・とうんざりします。

自動設定はなくなったの?

昔はちょっとしたWEBサーバーなどでも、初回起動時に「ポート開けますか?」みたいなダイアログが出たような気がしたのですが、何も出なくなっています。

結果、ソフトが上手く動作しない原因がなかなかわからない、ようになっています。。。残念・・・。

 

設定してみる

まずは、すべての設定

次に、更新とセキュリティ

左の「Windows セキュリティ」を選択

→側の「ファイアウォールとネットワーク保護」をクリック

ここからがわかりにくい!!!

→の「ファイアウォールによるアプリケーションの許可」をクリックします。

(なんで字が小さいんだ!!!)

 

ここで、アプリを登録します。

大抵は許可したいアプリは一覧の中には入っていないと思いますので、
出現したWINDOWの右下の「別アプリの許可」をクリックします。

そうすると、アプリの追加ダイアログが出るので、追加ボタンを押して追加します。

ファイルパスで「pmservice.exe」を追加しました。

そうしたら「P Mail Server」と追加されました。

とりあえずプライベートもパブリックも許可しました。

 

これで、設定完了です!

 

いつも迷う・・・ナントカならないのか

そんなにしょっちゅうファイアウォールを設定するわけじゃないので、

久しぶりに設定したすると「う?わかんね!」ってなりがちですね。

ここまでの説明も、XPとか7とか8だとまた違います・・・。

なので、検索機能(10ならコルタナ)を使いましょう。

「ファイアウォール」って検索すれば、同じような設定画面にたどり着けるでしょう・・・。

 

[Windows10]fall creators update にてスリープ復帰が不可能になる不具合あり!

ー2017/12/24追記ー
現在は、「22.20.16.4836」にて修正が行われているようです。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

 

先程win10のfall creators updateを適用してみました。
かなり時間がかかり、さてと、新機能でも見てみようと思うと、自動スリープの設定のため、スリープしました。
即座にキーを叩いて復帰させたのですが・・・。

こんなふうになって復帰しません。

なんとなくハードウェアが壊れたっぽい、嫌な感じの画面です・・・。心臓が止まるよ・・・。

リセットしてみると、なんとか普通に起動。ほっと胸をなでおろして、試しにスリープ・復帰してみると・・・再現しました。

やられた!また、マイクロソフトの検証不足による不具合だ!

fall creators updateのスリープ復帰不可能不具合 回避方法

調べたらすぐ見つかりました。
一応メモ的に私も直し方を書いておきます。

デバイスマネージャーで、ディスプレイアダプターを開きます。

 

ドライバー、タブを開きます。

バージョンが「22.20.16.4749」これが癌バージョンです。

 

「ドライバーを元に戻す」が押せる状態であれば、それを押せば簡単です。

でも、グレーで押せない状態の場合は、ドライバーの更新、を押します。

下の「コンピューターを参照してドライバー ソフトウェアを検索」の部分をクリックします。

「コンピューター上の利用可能なドライバーの一覧から選択します」をクリックします。

 

このように一覧が出てくれればしめたものです。

 

22.20.16.4749
より一つ古い
21.20.16.4542
を選択しましょう!

これで、古いドライバがインストールされれば、スリープ復帰時の不具合は解消されます。

このように置き換えておけば、意図的に戻した、と認識されるので、再びこの4749に戻されることはないそうです。

21.20.16.4542が一覧にない時

古いバージョンのドライバがはいっていないこともあるかもしれません。

その場合には、マザーボードメーカーのサイトのドライバを探してください。
それをインストールすればOKです。

MS公式のドライバは「駄目」だそうですよ・・。

 

Windows10のアップデートは本当にひどいね

初期の頃は1609のディスク張り付き100%問題に苦しめられました。

なので、「またかよ」と言う印象です。

少し調べた感じだと10月の末頃にはすでに判明している不具合のようですので、もう半月以上放置されていることになります。ひどいですね・・・。

Windows10にはパーティション調整機能がついたけどイマイチなので使えない話

実はWindows10にはパーティションの調整機能が搭載されています。
とはいえ、いまはあまりパーティションを分けたりしないのかな・・・?

昔ながらのやり方ではCとDの2つに分けて、なるべくデータはDに入れるようにして、
OSがトラブったときにはCドライブだけをフォーマットしてOSを入れ直す・・・
なんて使い方をします。

今回もこの癖から、240GBのSSDを50GBと190GBに分けて使っていました。
ところがWindowsのドライブ肥大化ってすごくてあっという間にいっぱいになってしまって、
容量不足の警告が出るようになりました。

でふと、Win10にはパーティションの調整機能がついたという話を思い出して、試してみました。

セキュリティセンターからの警告

Windows10ではセキュリティセンターから、以下の様な警告が出るようになっています。

ディスククリーンアップのリンクボタンが出るのですけど、クリーンアップしてもそんなに解消されるわけもなくなんの解決にもならないです。

Windowsの機能でパーティション調整

Winキー+xで「ディスクの管理」で以下のような画面が出ます。

これでDを減らしてCを増やせば良いのか・・・。とおもうが、実はこの方法ではCを増やすことができません。

イメージとしてはこんな作業です。

じつは「Windows10の機能ではドライブの先頭を開けることができない」のです。上図ではDの戦闘を開けていますが、これが出来ないのです。
どうしてもこの作業をしたい場合はDドライブを一度フォーマットすれば可能です。Dドライブの内容は消えます・・・現実的ではないですよね。

AOMEI Partition Assistant Standard Edition 6.0

そこで結局フリーソフトです。

AOMEI Partition Assistant Standard Edition 6.0
https://forest.watch.impress.co.jp/library/software/aomeiparti/

とりあえずCドライブを選択して、左上の「パーティションの拡張」です。

そのまま次へ。

そのまま次へ。

 

ここが重要。
でも簡単です。
青いツマミを動かすだけです。Dドライブは勝手に小さくなります。

 

この画面はすでに拡張したあとなので、すでに90GBになってしまっていますが

これで次に行ってOKするだけです。特に再起動もなく再調整が行われます。

調整が終わったあとも再起動は不要です。

とっても簡単に調整できました。昔は本当に大変だったんですよ!

 

 

 

WestanDegitalのHDDの増設でトラブった話(2)

もしかして一旦認識したものの、強制遮断で壊れたのでしょうか??
とにかく、BIOSレベルで認識していないなんてかなりやばいです。

とにかくBIOSで認識させたい

とにかくBIOSで認識していなければどうしようもありません。
こういうときは接続を疑います。
小さいマザーボードなのでSATAは4つしかありません。
で、今回つなげたポートはケーブルだけずっと挿しっぱなしにしてあったポートです。
まだ一つ余っているので試しに差し替えました。
これで再び起動。ところがやっぱり上手く起動しません。
というわけでもう一度強制遮断。
今度は電源ケーブルを差し替えます。SSDと分岐していないほうが良いかなと思ったのですが、小さな・しかも80PLUSの認証もされていない電源を使ってるので、他に選択肢がありません。でも、まあ、SSDならそんなに電力食ってないよね、ってことでそれで妥協。
これがビンゴ、こんどは普通に起動してエクスプローラで開いてファイルを作ってみてもまったく問題ないし、IOが100%に張り付くこともなくなりました。

ただ、BIOSレベルでHDD→SSDみたいな順番になってしまったので、ケーブルを差し替えました。(ちなみに順番は特に何にも影響しません。好みの問題です。)

原因は電源?接触不良??

原因としては電源か接触不良かということになります。
接触不良はほんとにPCではよくあることで、タダさし直しただけで治るなんてことはほんとに日常茶飯事です。
PCのトラブルは電源によるものが結構多いです。私はいつも格安の電源を使っていて、今使っているのもZUMAXというメーカーのZU-425Nという結構古いものです。買って使ってなかったので使っていたものです。試しに使ったら特に問題なさそうだったので・・・。

ただ、やっぱり、ケーブルごとに出力が安定していない可能性がありますね。。。やっぱりせめて5000円ぐらいだしたほうが良いのかも・・・。ってこの電源3000円なんですよね^^;

世間では10000円以下の電源はゴミだ、っていわれてます。

まとめ

やっぱり電源は良いのを買ったほうが良いんだね。

価格コムで探した安い電源。3854円。やっぱり格安に目が向いちゃう 笑

こっちは4162円。玄人志向だけど、プラグイン。

どっちかに変えようかな?

WestanDegitalのHDDの増設でトラブった話

ずっと240GBのSSD1台で乗り切ってきたんですけど、
Steamのゲームをやるようになって、ディスクが足りなくなってきました。
ゲームだけじゃなくていろんなLinux環境をすぐに試せるようにVMのファイルもいっぱい・・・消してもいいけど、消すといざという時困りそうなので残しておきたい。
というわけで、ずっと前に買ってあったけど接続していなかった3TBのHDD(WD30EZRZ-RT [3TB SATA600 5400]ですね)をようやく接続してみました。

なんだか不調なHDD

ところが・・・ですよ。起動してみると、なんか音が怪しいのです。
ギーコギーコ・・・カタカタ・・・。
もしや眠らせすぎて壊れた・・・??!!
そもそも、Windows10が起動しません。ぐるぐる渦巻きがずっと廻っているのですけど。
あまりやりたくないですが、強制電源断(つまり長押し)してそのままもう一度起動すると少し時間がかかりながらですけど、今度はWindowsが起動してきました。
3TBのHDDは一応認識しているようで、エクスプローラーから開くことが出来ました。

するとディスクは空ではありませんでした。すっかり忘れていたのですが、買ったときにちゃんと使えるか、また、すぐには使わない、ということで古いPCのHDDのバックアップを入れてあったのでした。ちゃんとファイルは見えるようでした。一安心です。

しかししかし・・・なんというが動作が引っかかるのです。
ためしにcygwinで”a”というファイルをtouchで作ってみると・・・フリーズ!マジか!?

音もどんどん怪しく、キーコキーコ、カタン・キーコキーコ、カタン・・・
といよいよヤバイ感じです。

ここで試しにタスクマネージャーで見てみると・・・100%張り付き!
あの忌まわしきWin10ディスク100%張り付き地獄の再来か・・・!!??

SSDの方は特にビジーではなく、HDDだけが張り付いています。しかも読み書きとも0kb/s!
I/Oを何もしていないのに、動作が100%とはこれ如何に??!!

このまま数時間ほっておこうかとも思いましたが、もっと壊れそうだったのでやめました。
とりあえずもう一度強制遮断してBIOS(UEFI)画面を見てみようと思いました。

BIOS(UEFI)で認識してない!?

F2連打でBIOS画面に入ってみました・・・すると・・・ストレージが2つしかありません。

SunDISKのSSDとHPのDVDドライブのみ・・・!

途方に暮れつつ・・・続きます!

CDex+Playerでタイトル情報が文字化けしてしまう件

めっきりCDリッピングなどしなくなりましたが、
CDの曲をGooglePlayMusicに取り込んでほしい、との依頼で久しぶりにCDexをインストールしました。
CDexはシンプルで使いやすいCDリッパーです。ところがかなり以前からfreedbからのタイトル取得はできなくなっています。その対策としてPlayerというソフトをつかってcdplayer.iniにタイトル情報を取り込んでから、CDexに読み込ませる、という方法がメジャーになっていました。
ところが・・・今やってみるとなかなかうまくいかない。どうやっても文字化けしてしまうのです。少し検索してみましたが、原因の大本はタイトル情報を収めているcdplayer.iniがshiftJISで保存されていることが原因です。これをUTF-8に変更すれば読み取れる、かというと、なぜかそれでも文字化けしました。それどころが、どんなコードに変換しても駄目でした。
かなり途方にくれてしまいましたが、何の事はない、CDexのインストール時に「マルチバイトでインストール」を選ぶ必要があったのです。

↑インストール過程のこの場面で”Multibyte”を選ばないと、日本語環境で使い物にならなくなります。デフォルトをこちらにすべきですね。

結論としては「マルチバイトインストール」+「cdplayer.iniをUTF-8に変換」の2つが必要となります。

 

試したこと

ます何も考えずにCDexで読み込むと、こんな風になります。DBにデータがない状態ですね。

次にPlayerで読み込むと、ちゃんとDBが読み込めたようです。
たいていは、読み込むことが出来ます。

Cドライブの直下にCDplayer.iniというファイルが出来ています。
ちゃんと取得できているように見えますけど、ShiftJISなんです。

これを、UnicodeでインストールしたCDexでそのまま読み込むとこうなってしまいます。

そこで、CDplayer.iniをUTF-8に変換してみます。
相変わらず駄目ですね。

これ↓はマルチバイトでインストールしてShiftJISのCDplayer.iniを読み込んだ状態です。

ここで、CDplayer.iniをUTF-8に変換すると・・・

やっと正常になりました。

それでも文字化けする時

ローカルCDDBに文字化け状態で保存されていることが原因です。
設定からローカルCDDBが何処にあるかわかるので、このフォルダを削除してしまえば良いです。消してしまってもまた新規で作られます。

久しぶりにCDexを触ってみて

以前はLameのエンコーダは自分で導入しなければいけなかったのですが、
デフォルトで導入されていました。
そのままリッピングすれば高音質のVBRでリッピングされるようになっています。

CDexを使わない方法

もはやCDexを使う必要はないのかもしれません・・・。

以下はメディアプレイヤーですが、もっと簡単に取り込めます。
ちゃんとタイトル情報も取得できていますしね。

 

 

ThunderBirdの設定が飛ぶ前にバックアップしよう

現在はメーラーを使わない時代になっています。
現にGmailはWebメールを使っています。
ところが幾つかメールアドレスをまだ使い分けているのと、
スマホの通知をgmailのしてしまうとなりっぱなしになってしまうので、
重要なメールだけをさくらインターネットで発行したメールに転送するようにして
重要なメールだけを通知するようにしています。

ところがさくらインターネットのメーラーはログインしやすいとはいえません。
Squirrelmailをインストールして使うことも出来ますが、gmailほど高機能というわけではないので、緊急時にしか使いません。(プラグインがいろいろあって機能強化出来ますが、使いこなせませんでした)

というわけで、ThunderBirdをいまだに使っています。
相当前にもう無くなるというアナウンスが有ったはずですが、いまだ更新されています。

ところがPCのクライアントアプリの欠点は、設定が壊れることがある、というところですね。
壊れないにしても、PCの自体が不調でも困ってしまいます。

実はたった今、Windowsアップデートを実行したらThunderBirdの設定が全て消えてまっさらで起動してきました。

やられた!と思いましたが、あっさり復旧できました。バックアップを取っていたからです。

ThunderBirdのバックアップ方法

実は公式でのバックアップ方法がありません。
実はUserディレクトリのメールデータをすべてバックアップするという方法もあるのですが、かなりのファイルサイズになるのであまりオススメではありません。

MozBackup

このツールを使っています。バージョンは1.5.2でまだベータです。
しかも相当前に更新を終えてしまっています。でも、2017年の今でもちゃんとリストア出来ましたよ。

次へ

Thunderbirdを選んでつぎへ

保存する場所やファイル名はそのままでもいいですけど、変更してもOKです。
プロファイルはdefaultのままでOKです。

そうすると、パスワード保護しますか?、と聞いてきますが、どうせわからなくなってしまうので私は保護しません。バックアップファイル自体をちゃんと管理しておきましょう。

ここで「メール」のチェックを外します。
メールがたくさん溜まっているとバックアップファイルがとてつもなく大きくなってしまうからです。
それだとメール自体のバックアップが出来ませんが、メールサーバーにIMAPを選んでおけばメール自体はサーバーに残ります。なので、POPは選ばずにIMAPを選んでおくのが大前提です。フリーメールやプロバイダから貰ったメールなどはIMAPを使えない場合が多いので、そういうメールはもう使うのを辞めましょう。

こうやって出力されたファイルをDropBoxなどに入れてとっておきましょう。

数キロバイトのファイルですが、10個ほどアカウントを設定してあっても、あっという間にリストア出来ます。

[windows10]インターネットが繋がらなくなった時(3)

「エラー1608 依存関係サービスまたは、グループを起動できませんでした。」の
エラーが発生した場合は、socket接続をリセットすることによって改善することがあります。

socket接続をリセットする

上記エラーが出てNetWork List Serviceが起動できない時に有効と思われるコマンドがあります。

> netsh winsock reset

スタックしてしまったTCP/IPの接続をリセットするもので、セキュリティソフトなどによって強制的に外部との通信が遮断された場合などにスタックしてしまって復旧しないTCP/IP接続をリセットすることで正常に利用することが出来るようにする、Windows特有のコマンドです。

ということです。

ただ、私の拝見したPCでは改善しませんでした。

問題のトラブルシューティング

ネットワークと共有センターに「問題のトラブルシューティング」があります。

これさえ実行すれば問題が解決する・・・と良いのですが。
残念ながらほとんど解決しません。

誰か解決した人がいるのなら教えてほしいくらいです・・・。

サービスの起動

「エラー1608 依存関係サービスまたは、グループを起動できませんでした。」のエラーの件がありましたが、
このエラーだと、依存関係サービスがいったい何なのかわかりません。

そこで、とりあえずすべてのサービスを起動してみます。

コルタナで

msconfig

と入力すると”システム構成”が出てくるので起動します。

サービスタブで「すべて有効」をクリックして、再起動します。

これで、見事にネット接続が可能となりました。

どのサービスがネット接続に必要か

ネット接続に最低限必要なサービスは以下の2つです。

  1. NetWork Store Interface Service
  2. DHCP Client

(もしかしたらDHCPはプライベートIPを固定にするなら不要かも)

NetWork Store Interface Serviceを起動すると、
「IPドライバーにアクセスできません。一般エラーです。」のエラーが
「転送に失敗しました。一般エラーです。」に変化します。DHCPを起動するとこれも治ります。

なお、以下は勝手に起動します。

  • RPC Endpoint Mapper
  • Group Policy client