長らく専ブラいじれてないというか日々消耗してなんもできてないのでソース公開しました。
コピペした部分は記憶とソースコードの記録にあるかぎり書いたのですが、なんか足らなかったら指摘してください。
今のところ、遠征と時々演習を回すことしかしてないですね。朝遠征回して夜帰ってきて演習回すとかそんな感じで。
中南海による言論統制システム金盾を越える為にいろんなVPNソフトウェアがありますが、その一つにSOCKSv5プロトコルを暗号化して飛ばすShadowsocksがあります。最近では開発者の家に警察がやってきてソースコードをgithubから消すのを強要される事件がありましたが、既にもりもりforkされていました。サーバもpipに残ってるしOSSって強いね。作者さんは無事でしょうか、、、、
さて、日本でもネットワークによっては検閲プロキシなどの壁が存在するので当然壁を壊しにゆきます。昼休みぐらい艦これさせろ。
HTTPプロキシを越える手段としては、CONNECTメソッドがあります。この手で壁を超える際に使うのはstoneが有名です。CONNECTメソッドの詳細はRFC 2817あたりですが、簡単に言うと「指定のホストへの通信を中継する機能がある」わけです。なんに使うかって言うとRFCにあるようにSSL通信で、SSL通信はバイナリデータをサーバとクライアントの間でやりとりする必要があります。
CONNECTメソッドの動きは簡単で、CONNECTでリクエストを投げると、HTTPレスポンスが返ってきた後にリクエストで指定したホスト:ポートへのtcp接続を中継してくれます。stone使った場合の例はこんな感じ。
Shadowsocksと一緒にstone起動してもいいんですが、せっかくソース公開してるので改造してCONNECTリクエスト投げて、HTTPレスポンスを無視する機能をTCPリレー部分に突っ込んでみました。これだと単にShadowsocks.exeを起動するだけで壁を越えてくれます。やったね。
ソースはforkしたgithubに突っ込んでバイナリもreleaseしてみた*1。しれっとレゾルバがIPv6アドレス無視するようにしてありますが、これはデバッグ中にpolipo使ってたけど127.0.0.1でしかbindしてくれなくてlocalhostで解決した際に最初に::1が返ってくるとコネクション貼れない場合があったんですが最高に馬鹿っぽい感じがしますねこれ。
これで晴れて壁を越えて世界の知にアクセスできるヤッターとか思ってたけど、出口設置したさくらVPSが2ch.netからブロック*2されてるオチもあったり。
今年の春先にFiddlerCoreを艦これの専ブラに使うのはライセンス的にダメなんちゃうって話が出たので、KCBrで使っていた部分だけを代替するものを.NET Frameworkが持ってるHttpListenerを使ってさくっと作って取っ替えました。
最初はTcpListnerでも少し書いてたけど、既に十分検証されていて使用可能なコードがあるのに自分で書くのは馬鹿すぎるので止めました。
続きを読むこの業界、頭が異様に悪くて何故か表をAutoCADで描いたりします。
電子納品とか言っても単にCAD上に表が描かれてるとかページに吐き出されたpdfだから機械がデータ構造認識できないから何の価値も意味もないんや!!!!!!
— にょる。 (@W53SA) August 28, 2015
構造をもった電子データであるという認識を捨てて単なる画像として処理することを考えて手段を探すと色々と術が見つかってきました。紙で渡されるのとほとんど同じ処理をするハメになるわけですね。ひたすらOCROCROCR,,,,,
で、AutoCADで描かれた表を手打ちしたら死ぬのでOCRです。
続きを読む解析結果が書かれたPDFををplaintextに変換しようとして一週間もかかってしまってほんまクソ、ということでメモを残しておく。
そもそも何でPDFなのか?
この業界、電子納品とか言ってるけど単に印刷時の出力先がプリンタドライバからPDF生成ドライバに変わった程度で印刷する人が変わっただけなのホントに闇
— にょる。 (@W53SA) 2015, 9月 3
ミッション:plaintextがedocument library pdf filterとかいうウンコライブラリでPDF化された5000ページぐらいあるPDFから、100ページぐらいの表組みをplaintextに戻し、手元での解析結果とWinMergeで比較。
試した順に書いていきます。
続きを読むYAPC初参加ですよプロデューサーさん!!!!!!!チケット買った時は札幌配属だったけど本社に転属したので前夜祭から参加できて*大勝利*。
チケット買って有給取りに行こうと事務所行ったら社長の現場訪問と被ってることが発覚*1してギャピーってこともありましたが、本社に転属してそれもなくなってサビ残騒動起きて本社に転属したお陰です。
えっYAPCと社長訪問被ったの……………………
— にょる。 (@W53SA) 2015, 6月 6
配属地が東京へ変更になることになりそうでs
— にょる。 (@W53SA) 2015, 7月 10
ハッ
もしかしてYAPC行けるんじゃ
— にょる。 (@W53SA) 2015, 7月 10
まぁそれはそれとして「blog書くまでがYAPCですよ」ということでつらつらと聞いてきたトークについて。
ほんとは自分でメモ取りたかったんですが、ノートマシンの充電器ケーブルが腐って*2充電できなくなってしまったのでスマホとガラケーで戦う羽目になってしまって悲しみ。様々な方面で知的刺激を受ける三日間でした。
*1:社長来るのに有給とか狂ってるって言われたんですね。うんk
*2:9年目突入したレッツノートなので本体ぶっ壊れててもおかしくないんですが、充電器新調したら復活してなにより。マダマダイクヨー!!!!!!!!!
C#のWinForms*1はUIスレッドを一つしか持てず*2、そのUIスレッドに対して他のスレッドからちょっかいをかけようとするとSystem.InvalidOperationException例外が飛びます。
private void button1_Click(object sender, EventArgs e) { textBox1.Text = "[開始]"; Task.Factory.StartNew(() => { Thread.Sleep(5000); textBox1.Text += "[5秒経ったよ!]"; // ここで例外が発生する }); }
そこで、Control.InvokeないしControl.BeginInvokeを使ってUIスレッドに該当の処理をさせなさい、というのは有名な話。
今回はControl.Invokeを使ってハマった話。