自戒の意味を込めて記録。LINQで
の動作は違う。例えば{1, 2, -1, 3, 0}という配列に使った場合、前者の答えは3、後者は2。
前者の動作を後者と同じと思い込んでいたため、翌日大量のエラーに直面することに。
2017/9/1
自戒の意味を込めて記録。LINQで
の動作は違う。例えば{1, 2, -1, 3, 0}という配列に使った場合、前者の答えは3、後者は2。
前者の動作を後者と同じと思い込んでいたため、翌日大量のエラーに直面することに。
— posted by mu at 12:04 pm
Comment [0]
TrackBack [0]
2017/5/29
いまさらネタ。
リモートクライアントマシンのIPアドレスを変更した後にアクセスしたら、IPアドレスの元持ち主マシンと判断されアクセス拒否。MySQLサーバのコマンドラインからnslookupで調べてもDNSは変更後のアドレスを正しく返しており、小一時間悩む。
原因はMySQL 5.6.5から入ったDNSキャッシュ(host_cache テーブル) 。mysqlコマンドからFLUSH HOSTSを実行して解決。
リモートクライアントがMySQLに接続するのはIPアドレス変更後初めてですが、変更してから1週間経つんだよなぁ。キャッシュはエントリ数の上限はあるようだけど、有効期限は無いかかなり長いらしい。
— posted by mu at 03:48 pm
Comment [0]
TrackBack [0]
2017/5/17
[2017/5/17 追記] Pythonが動かない模様。ブラウザからはWebSocket接続に問題があるように見えますが…要調査。
Dockerなどで動かしているJupyter Notebookをリバースプロキシで/以外にマウントする方法。
まずはJupyterの設定変更。Docker運用でない方は直接jupyter_notebook_config.pyを編集してJupyterを再起動してください。
docker exec -it コンテナIDまたはNAME /bin/bash
c.NotebookApp.base_url = '/jupyter/'
docker restart コンテナIDまたはNAME
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="ReverseProxyInboundRule1" stopProcessing="true"> <match url="jupyter/(.*)" /> <conditions> <add input="{CACHE_URL}" pattern="^(https?)://" /> </conditions> <action type="Rewrite" url="{C:1}://localhost:8888/{R:1}" /> </rule> </rules> <outboundRules> <preConditions> <preCondition name="ResponseIsHtml1"> <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" /> </preCondition> </preConditions> <rule name="ReverseProxyOutboundRule1" preCondition="ResponseIsHtml1"> <match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="^http(s)?://localhost:8888/(.*)" /> <action type="Rewrite" value="http{R:1}://Webサーバアドレス/{R:2}" /> </rule> </outboundRules> </rewrite> </system.webServer> <system.web> <identity impersonate="false" /> </system.web> </configuration>
Jupyter・リバースプロキシで検索するとWebサーバの/にマウントする例がよくありました。私は/以外にマウントしたかったのですが、jupyter_notebook_config.py書き換え無しにIISのURL Rewriteだけで行おうとすると以下の点でハマりました。
私は3つ目の理由でURL Rewrite単独での解決は断念しました。
[参考]
— posted by mu at 01:51 pm
Comment [0]
TrackBack [0]
2017/5/2
$ sudo docker pull jupyter/tensorflow-notebook Using default tag: latest latest: Pulling from jupyter/tensorflow-notebook 693502eb7dfb: Pull complete a3782c2efb41: Pull complete 9cb32b776a40: Pull complete e539f5722cd5: Pull complete b4690d4047c6: Pull complete 121dc465f5c6: Pull complete c352772bbcfd: Pull complete 0057b9e76c8a: Extracting 568 B/568 B e63bd87d75dd: Download complete 055904fbc069: Download complete d336770b8a83: Download complete d61dbef85c7d: Download complete 6c4990ff8475: Download complete e5968c6a2a7f: Download complete bedf924ebae8: Download complete b52514c7f277: Download complete 335ed19f8aeb: Download complete 0d61bb7891a3: Download complete 17c31ceff0f0: Download complete de094493e821: Download complete 4d60ed225ef8: Download complete 4e17fd01128d: Download complete c6a0f58de8b1: Download complete 7fea7b1d8bb9: Download complete failed to register layer: open /var/lib/docker/aufs/layers/3dd85cabcd0d7bc18c5ccee0e071e2a7f8956765e84498c580d9b180f1433bce: no such file or directory
となり失敗。何回繰り返しても同じ。
この出力だけ見ると最後の'failed to register layer'に目が行きますが、途中を見ていると'0057b9e76c8a: Extracting 568 B/568 B'の行がずっと止まったままなので、以降がダウンロード完了しても展開が始まらないように見える。だいたい568バイトって何よ、あり得ないとは言えないけど小さすぎ。
とりあえず以下の方法で回復しましたが、何分初心者なので正しい対処か分かりませんので、参考程度に。
$ sudo grep -r 0057b9e76c8a /var/lib/docker /var/lib/docker/image/aufs/distribution/v2metadata-by-diffid/sha256/cda29d030c7debb657eaf6a780dc926d7d1ea900f5e87e79b205bdff35f95ec7:[{"Digest":"sha256:0057b9e76c8a523a63a6418fdfc9580811083be2a505468a24eaf06348151f9b","SourceRepository":"docker.io/jupyter/tensorflow-notebook"}]
$ sudo rm -rf /var/lib/docker/image/aufs/distribution/v2metadata-by-diffid/sha256/cda29d030c7debb657eaf6a780dc926d7d1ea900f5e87e79b205bdff35f95ec7
$ sudo service docker restart
$ sudo docker pull jupyter/tensorflow-notebook
ちなみに/var/lib/docker/aufs/layers/3dd85cabcd0d7bc18c5ccee0e071e2a7f8956765e84498c580d9b180f1433bceはno such file or directoryとある通り本当に無いので、探すだけ無駄です。
[参考]
— posted by mu at 12:04 am
Comment [0]
TrackBack [0]
2017/2/22
備忘録。
ADO.NETで以下のようなParameterized SQLを設定、@EndにDateTime.Maxを設定すると検索件数が0になってしまう。SELECT DISTINCT(name) FROM persons WHERE @Start<=releasedate AND releasedate<@End
@Endを'9999/12/31 23:59:59.9999999' としてMySQLのコマンドラインからこの文を打ち込むとデータが来る一方、'10000/1/1 0:00:00'とすると件数0。5桁の西暦で不具合起こすのはまぁあり得る話かなとは思いますが、DateTime.Maxもこの辺の際どい扱いを受けているのかも。
環境としてはサーバーはDebianのMySql 5.7.16、クライアントはMySql.Data 6.9.9、.NET Framework 4.5なのですが、この現象は私の開発マシン(Windows 8.1)や仮想マシン上のWindows 7では問題なかった実行ファイル一式が、別人のPC(Windows 8.1)だと不具合になったことで発覚。サーバーもクライアントも同じプログラム使っているのになぜ発生の有無があるのだろう。
@End=DateTime.Maxということは事実上releasedate上限無しということなので、WHERE句から外してやると正常に。面倒くさいけど@EndがDateTime.Maxの時はWHERE句に入れないようにクエリー文を切り替えたほうが無難そう。
— posted by mu at 10:14 am
Comment [0]
TrackBack [0]
Comments