logo
 2003年   2004年   2005年   2006年   2007年   2008年   2009年   2010年   2011年   2012年   2013年   2014年   2015年   2016年   2017年 
 9月 
 10月 
 11月 
 12月 
 1月 7月 
 2月 8月 
 3月 9月 
 4月 10月 
 5月 11月 
 6月 12月 
 1月 7月 
 2月 8月 
 3月 9月 
 4月 10月 
 5月 11月 
 6月 12月 
 1月 7月 
 2月 8月 
 3月 9月 
 4月 10月 
 5月 11月 
 6月 12月 
 1月 7月 
 2月 8月 
 3月 9月 
 4月 10月 
 5月 11月 
 6月 12月 
 1月 7月 
 2月 8月 
 3月 9月 
 4月 10月 
 5月 11月 
 6月 12月 
 1月 7月 
 2月 8月 
 3月 9月 
 4月 10月 
 5月 11月 
 6月 12月 
 1月 7月 
 2月 8月 
 3月 9月 
 4月 10月 
 5月 11月 
 6月 12月 
 1月 7月 
 2月 8月 
 3月 9月 
 4月 10月 
 5月 11月 
 6月 12月 
 1月 7月 
 2月 8月 
 3月 9月 
 4月 10月 
 5月 11月 
 6月 12月 
 1月 7月 
 2月 8月 
 3月 9月 
 4月 10月 
 5月 11月 
 6月 12月 
 1月 7月 
 2月 8月 
 3月 9月 
 4月 10月 
 5月 11月 
 6月 12月 
 1月 7月 
 2月 8月 
 3月 9月 
 4月 10月 
 5月 11月 
 6月 12月 
 1月 7月 
 2月 8月 
 3月 9月 
 4月 10月 
 5月 11月 
 6月 12月 
 1月
 2月
 3月
 4月
 5月
 6月
アイコンの説明
code:Haemophilus influenzae
ここに書かれていることは無保証です。同じことを行って問題が発生しても、龍義は責任をとりません。

■ 7月1日Windows

しばらく前からプライバシー設定どうこうと表示されることがあって。 なんとなく「後で通知する」を押してやり過ごしていたのだけど、よく見ると Windows 10 Creator Update に関係しているようで。

次のアップデートに備えてプライバシー設定を確認する

この確認を行うと、Windows 10 Creator Update がダウンロードされるらしく。 Creator Update が果たして良いものなのかわからないし、ざっと新機能を見たけどすぐに必要そうなものもないし。 もう少し様子を見てから設定の確認を行おうかな。

■ 7月2日Other

これまで DB を扱うことはなるべく逃げてきたので、単純なことで躓いたりして。 値段で逆順ソートしていたものを、id でも逆順ソートを入れて欲しいとあったので、変更することになった。
SELECT * FROM pricelist ORDER BY price DESC;
こんな感じだったものに、id を加えて。
SELECT * FROM pricelist ORDER BY price, id DESC;
とやって終了と思ったが、思ったようにならない。 何故だろうと調べてみると、DESC は直前のものに係るだけのようである。 なので
SELECT * FROM pricelist ORDER BY price DESC, id DESC;
として解決。 簡単なことだけど、これまでのツケが回って調べるのに5分もかかってしまった。

■ 7月3日WWW

人が作った PHP に手を入れていて。 しかし、どうにもうまく動かない。 色々追って、ようやく「えっ」という場所を見つけた。 簡単に書くと。

$val = 0; if($val == ""){  print "true"; }

これが true になってしまうのである。 PHP に慣れている人からすると当たり前かもしれないが、ちょっと驚いて。 ちゃんと
$val === ""
として意図通り動いた。 何と言うか、PHP って慣れないと罠に感じられるようなものが多い気がする。

■ 7月4日Other

仕事場で使っているロジクールの M325 というマウスだけど、電池がなくなった。 電池を買うまで DELL の PC に附属してきたマウスを使っているのだけど、その DELL のマウスはホイールが重い。 M325 のホイールは、最初軽すぎて違和感があったけど、シャーシャーいわせて一気にスクロールできるので、それはそれで慣れてしまった。 急に重いホイールを使うと一気にスクロールができないので、不便に感じるようになって。 慣れって恐ろしいなと考えながら、早く電池を買おうと思った1日だった。

■ 7月5日Windows

Windows で動いていた古い PostgreSQL 8.2.4 をごっそり dump して、Linux で動いている 8.4.20 の環境に流し込んだ。 パッと見て問題ないと思っていたが、どうも日本語に関する order by がうまくいっておらず、並び順が全く変更されない。 何が原因かと色々見ていると、データベース作成時の lc_collate と lc_ctype 辺りが問題みたい。 Windows で動いている方は。

alderaan=# show lc_collate; lc_collate ---------------------- Japanese_Japan.20932

20932 が不明だけど。 Linux で動いている方は。

dagobah=# show lc_collate; lc_collate ------------- en_US.UTF-8

まず、20932 は何なのか。 調べると、これは ja_JP.eucJP を Windows で使うときに設定するものらしく。 Linux の場合は ja_JP.eucJP で良いみたい。 DB を作り直してみる。

postgres=# drop database testdb; DROP DATABASE postgres=# CREATE DATABASE testdb OWNER=postgres ENCODING='EUC_JP' LC_COLLATE='ja_JP.eucJP' LC_CTYPE='ja_JP.eucJP'; ERROR: new encoding (EUC_JP) is incompatible with the encoding of the template database (UTF8) HINT: Use the same encoding as in the template database, or use template0 as template.

文字コードがテンプレートと違うとかで、作れない。 書いてある通りに template0 を使うことに。

postgres=# CREATE DATABASE testdb TEMPLATE=template0 OWNER=postgres ENCODING='EUC_JP' LC_COLLATE='ja_JP.eucJP' LC_CTYPE='ja_JP.eucJP'; CREATE DATABASE

作成できた。 psql で dump したデータを流し込んで、order by の問題が起きないことを確認した。 これで解決。

■ 7月6日Other

色々あって車を変えることになって。 車なんて、動けば良いぐらいの考えだし、そもそも1年で 1000km も乗らないときもある。 昔は乗車定員が1(2)の車に乗っていたぐらい。 あえて必要なことは、スクーターぐらいの自動二輪車とか三六板が積めれば良いという感じなので、いつも軽自動車の1BOXになってしまう。 あまりに古いものを買うと、逆に維持費が高いので、10年を限度に探しているが、軽の1BOXの中古はお買い得感がないのでどうしたものかと悩んでいる。 何か良い具合の不人気車があれば良いのだけど。 まだしばらく悩むことになりそう。

■ 7月7日WWW

少し前に作った html と言うか Javascript が動かないと言われて。 ただ、発生する・しないがバラバラでよくわからなかった。 Windows 7 で動いている人がいれば、Windows 8.1 で動かない人もいる。 色々聞いて回った結果、Windows 7/8.1 で IE を使っていると発生するようで。 逆に IE でも Windows 10 だと大丈夫だし、他のブラウザだと Windows 7 でも大丈夫。
色々調べてわかったことが、Javascript 中に書いてある log10 に問題があることを見つけた。 log10 は Windows 8.1 までの IE でサポートしてないようで。
と言うことで、あっさりと log(x) / log(10) と書き換えて終了。 修正は早かったけど、原因を見つけるのに時間がかかった。

■ 7月8日Network

ネットワーク上に SIP で待ち受ける FAX があって。 その FAX に SIP で文書を送信したい。 FAX と書いているが複合機なので、本来 SIP で送る必要は全くないのだけど、他の SIP 対応 FAX から対象の複合機に対して送信できないので、何が原因かを探りたい。 そのために Windows か Linux から SIP の口を開けている FAX に送ることができれば、どこで問題が起きているのかわかるのではと。
何か良いソフトがないかと色々探してみたが、見つからない。 一時期、「21世紀は僕らの時代」みたいなノリで、これからは SIP の時代とか言われていた気がするけど、思ったより広がっていないようである。 日本の法規にも問題があるのだろうけど。
Windows で標準で入っているプリンタードライバとしての FAX は、FAX モデムを使うか、FAX サーバに送るものだったりして使えないようだし。 海外には有料でそれっぽいソフトウェアが見つかるのだけど、数回のテストのために入れるのももったいないし。 何か良いソフトウェアかドライバみたいなものはないものかな。

■ 7月9日Windows

1日の続きで、プライバシー設定どうこうと表示される件。 今日も出てきたけど、いつもと表示が違う。

もう一度だけ延長することができます

「もう一度だけ延長することができます」らしく。 逆に言うと、次は先延ばしできないと言われている。 結局設定しなきゃいけないのだったら、最初から先延ばしできないようにすれば良いのに。 せっかくの機会だから、もう一度だけ延長することにした。

■ 7月10日WWW

最近、家ではブラウザを vivaldi と Firefox と両方起動している。 vivaldi は良いのだけど、ダウンロードのレジュームができないところが痛くて、家の遅くて切れる ADSL 回線ではレジュームは必要。 そのために Firefox も使っているようなもので。 Linux なんかの DVD イメージなんかをダウンロードするときは必ず Firefox を使っている。 vivaldi でも何とかできないかと探してみたが、何も入れずにレジュームさせるのはできないみたいで。 vivaldi がレジュームに対応してくれると、助かるのだけどな。

■ 7月11日Windows

9日の続きで。 もう延長できないようなので、先延ばしできなくなった。 仕方なく、「設定の確認」ボタンを押して設定することに。 位置情報とか診断とか、全部オフで進めると、更新プログラムのダウンロードになった。 「OK」ボタンを押す前に、ディスク空き容量が 20GB ぐらいあるのを確認して、更新する。 時間がかかりそうで、終わるのは明日になりそうな雰囲気。

■ 7月12日Windows

昨日のアップデートが完了したのは良いが、どうも色々なデバイスが不安定な感じで。 マウスとかカードリーダーとか、スマートフォンとか。 接続が切れたり応答が遅かったりして、イライラしてきたりする。 アップデートした最初だけなら良いのだけど、ずっとこのままだと嫌だな。 困った。

■ 7月13日Network

端末エミュレータは Poderosa と TeraTerm を良く使っているが、RLogin が最近出てきているようなので、使ってみることにした。 まず、ダウンロードして exe だけというのに少し驚く。 Poderosa は .NET Framework 4.0 を入れないと動かないので、面倒な環境では TeraTerm を使っているぐらいなのに。 で、特に問題なく動作して接続もできた。 Poderosa を使っている理由にタブで複数接続が管理できるのもあるが、その中で Cygwin に接続できるというところが大きい。 しかし RLogin だとできなくは無さそうな感じもあるが、ボタン1つで使える感じではなさそう。 Cygwin に簡単に接続できたら、完全に乗り換えるところなのに、ちょっと惜しい。

■ 7月14日Windows

家で24時間 PC を付けっぱなしなのだけど、さすがにこの時期はエアコンのない部屋で稼働させるのが不安になってくる。 あまり好きではないのだけど、今日からスリープさせることにした。 問題は復帰時に使えないデバイスが出たり、ソフトが固まったりすること。 そんなことが過去にあったので、スリープがあまり好きではないのだけど。
心配だったけど、家に帰って復帰させてみた。 今のところ問題なさそう。 9月の終わりぐらいまで、この運用だな。

■ 7月15日Other

朝、PC を使おうと思ったら、HHKB Lite2 の動きが怪しい。 何かのキーが押されっぱなしになっているようだし、USB のコネクタを抜き差ししても現象は変わらない。 この暑さで壊れてしまったのかもしれない。
まずは、職場に持って行って掃除してみることに。 ブロワーで埃を飛ばして、キーを綺麗にして、職場の PC に繋いでみたら、問題なく使えた。 と言うか、この文章もその HHKB Lite2 で書いている。 じゃ何が問題かと考えたら、やっぱりスリープさせたのが問題なのかもしれないな。 夏場のスリープはあきらめて、電源を落とすべきかな。

■ 7月16日Other

昨日の続き。 昨日は HHKB Lite2 を掃除してから家の PC に繋ぎなおしたのだけど、特に問題は出なかった。 掃除が効いたとは思っていないが、何か PC の問題かなと思って。
それが今日になって、また調子が悪くなった。 alt キーが押されっぱなしのような状態になって、tab を押すと alt + tab になるし、使えたものではない。 しょうがなく PC を再起動してみたら、あっさり直った。 やっぱり、スリープの問題かな。 仕方がないので、毎日電源を落とすことに。

■ 7月17日Windows

Windows Update というか creatos update してから、漢字モードの切り替えの度に、画面中央に大きく出るのが邪魔でしょうがない。

漢字モード切替

そのせいかどうかわからないけど、ちょくちょくサクラエディタが落ちたりするし。 この変な表示を消せないかと IME のプロパティを見てみたら、「IME 入力モード切替の通知」という設定があり、「画面中央に表示する」がチェックされていたので、外す。

Microsoft IME の設定

これでいちいち出ることがなくなった。 update 前にない機能は、デフォルトでオフにして欲しい。

■ 7月18日Electric

昼過ぎから発達した積乱雲だかで、雨と雷が激しく。 嫌な予感がして、ここのサーバに接続しようと思ったら、案の定繋がらなく。 また停電が発生したようである。
結局3時間近くの停電となり、その後ようやく復旧した。 なんだか、今年も停電が多いな。 その前に、とっとと新しいサーバを用意しないと、と数年前から言っているけど、今年目標でなんとか。

■ 7月19日Windows

covia BREEZ Book W11 で色々とオペレーションがしたかったので、Poderosa を入れることに。 SourceForge から Poderosa をダウンロードしてきて、zip の中の Poderosa フォルダを C:\Program Files (x86) に入れた。 しかし、なんだかロードできませんでしたとかで、実行できず。

アセンブリ Granados.dll をロードできませんでした。

別の PC では問題なかったのになと考えてみると、別の PC の時は Explzh で解凍したのを思い出した。 何か関係ありそうな感じ。 W11 では容量が少ないので、アーカイバを特に入れる予定はないし、そもそもの原因を知りたい。 Poderosa.exe のプロパティを見てみた。

Poderosa.exe のプロパティ

色々見てみたけど、特に変なところはなく。 ふと、ロードできなかった dll を見てみた。

Granados.dll のプロパティ

どうも、ここに書かれている
セキュリティ: このファイルは他のコンピューターから取得したものです。 このコンピューターを保護するため、このファイルへのアクセスはブロックされる可能性があります。
なんですと。 「ブロックの解除」をしてみたら、「1 つのセマフォに対するポストが多すぎます。」と。

属性の適用エラー: 1つのセマフォに対するポストが多すぎます

Windows は裏で一体何をやっているのかよくわからない。 「再試行」をクリックしたら解除されたけど。 これで Poderosa.exe を実行したら、「Granados.dll をロードできませんでした。」が減っていたので、エラーが出ている dll を全部解除して、ようやく実行できた。

Poderosa

Poderosa ごとき動かすのに、こんな面倒になるとは。

■ 7月20日Windows

Windows 10 でコントロールパネルが見当たらない。 いつも、スタートメニューを右クリックして、コントロールパネルを出していたけど、それがなくなっているし、その次ぐらいに使うコマンドプロンプトも消えている。 どうも、creators update をした後から消えてしまったようである。

スタートメニューを右クリック

じゃ、どこに行ったのかと見てみたら、スタートメニューの中の「システムツール」に入っていた。 前も書いたと思うけど、「管理ツール」じゃなくて何故「システムツール」なのかというのもあるし、わざわざ右クリックのメニューで消さなくても良いと思うのだけど。 コントロールパネルでしかできないことが無くなれば、まだ承知できるものかもしれないけど、そうでもないし。 だいぶ引き延ばした creators update は良いことが未だにない感じ。

■ 7月21日WWWWindows

Edge に合わせて html を書いていたのだけど、どうもはみ出る場所があって。 html で見ると、フォントサイズの指定は同じなのに、一方でははみ出て、一方でははみ出ない。 この差は何だろうと CSS とか外していっても、変わらない。 最終的にわかったのが、meta タグの charset の違いだった。 どのぐらい違うか試してみた。

<html> <head> <meta charset="UTF-8"> </head> <body> <div style="border:#0000ff solid 1px; width: 100px; font-size: 14px;"> 12345</div> </body> </html>

片方は charset="UTF-8" で、もう一方は charset="Shift_JIS" にした。

charset="UTF-8" のとき
charset=UTF-8

charset="Shift_JIS" のとき
charset=Shift_JIS

ここは全て ASCII なんだし、同じ表示にして欲しかったな。 他のブラウザでは同じ表示になるし、そもそも Edge はフォントの指定ができないというのが問題だし。 こんなことで無駄な時間を使ってしまった。

■ 7月22日WWWWindows

昨日の続きで。 Edge だとさらに table が崩れることがあって、原因が未だによくわからない。 html はこんな感じで。 だいぶ削ったので、変な感じになっているが。

<!doctype html> <html> <head> <title>table test</title> <style type="text/css"> td, th { border-collapse: collapse; border: 1px solid #000; } .td12 { font-size: 12px; } .td11 { font-size: 11px; } .th14 { font-size: 14px; } </style> </head> <body> <br> <table style="border-collapse: collapse;"><tbody> <tr><td></td><th class="th14">1<br>月</th><th class="th14">2<br>火</th><th class="th14">all</th><th></th></tr> <tr><td>apple</td><td class="td12">50</td><td class="td12">50</td><td class="td11">100</td><td>りんご</td></tr> <tr><td style="height: 10px;" colspan="5"></td></tr> <tr><td>orange</td><td class="td11">20</td><td class="td11">30</td><td class="td11">50</td><td>みかん</td></tr> </tbody></table> </body></html>

これを Edge で見るとこうなる。

Edge で table 表示

何かを外せばこのずれが直る、という解決法はあるのだけど、その「何か」の要素が複数あるので、原因が見えてこない。 どうやって直すべきなのか、悩み中。

■ 7月23日Other

先日ちょっと書いたけど、車を替える予定で。 オーディオが旧式のものなので、せめて USB メモリが刺せるものにしたいなと。 2DIN の余裕もあるので、値段が安ければ動画が再生できても良いかなとも。
色々調べてみると、1DIN の USB メモリが刺せるものは、5000円ちょっとで買えるみたい。 それで良いかなと思っていたけど、一応 2DIN の液晶画面が付いているのを調べてみると、パイオニアの SPH-DA05 が1万円ちょっとで買える。 少し気になって調べてみた。
見た感じ Android で動いているのだけど、指定のアプリしか動かないらしく。 しかし、ミラーリングで色々できるということで面白そう。 問題は、2012年のモデルと古いこと。 性能的に心配と言うか、もう5年も前のものだと快適ではない気がして。 そして USB の口がフロントパネルにないのもマイナスかな。
5000円ちょっとの 1DIN の安いのを買って、不便だったらそれから考えようかな。

■ 7月24日Other

仕事場で古い XP の PC を何台か捨てるとかで。 メモリーが 512MB とか 1GB なんかが付いていて、なんだか少しもったいない感じの容量。 USB に刺して RAM ディスクにするようなものがあれば、I/O の多いファイルの速度アップになるのじゃないかと。 速度的には USB 3.0 じゃないと厳しいけど。 しかし、2GB の RAM ディスクだったとして、何に使えるか考えてみるものの、web サーバだったらコンテンツを置けば読み込みが早くなって応答が早くなるかな、ということぐらいしか思い浮かばなかった。 でも、需要はそこそこありそうな感じもする。

■ 7月25日OtherWWW

ちょっとフローチャートのようなものを書きたくて。 それを web にアップロードするので、画像にしたい。 お絵描きソフトで描いて、png にしようと思っていたのだけど、複数サイズ欲しかったりしたので、svg で作ろうかと考えた。
だいぶ前に svg で図形を描いたけど、すっかり忘れてしまったので、初歩から勉強しなおし。 svg ファイルを使っていて、こんなときに約に立つのが wikipedia の国旗。まずは、日本の国旗から。

ここに張り付ける関係で上の svg は小さくしているが、元はこんな感じで描かれている。

<svg xmlns="http://www.w3.org/2000/svg" width="900" height="600"> <rect fill="#fff" height="600" width="900"/> <circle fill="#bc002d" cx="450" cy="300" r="180"/> </svg>

900×600 のキャンバスを作って、中心点 (450, 300) に半径 180 の円を #bc002d で描いている。 単純なので、このぐらいはわかりやすい。
続けてフランスの国旗。

元の svg はこんな感じになっている。

<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="900" height="600"> <rect width="900" height="600" fill="#ED2939"/> <rect width="600" height="600" fill="#fff"/> <rect width="300" height="600" fill="#002395"/> </svg>

まず全体を赤の #ED2939 で塗りつぶして、次に白で 600×600 を塗りつぶして、最後に青の #002395 で塗りつぶしている。 なるほど、と言う感じ。
x と y を省略しないと、こう描くことができる。

<svg xmlns="http://www.w3.org/2000/svg" width="900" height="600"> <rect x="600" y="0" width="300" height="600" fill="#ED2939"/> <rect x="300" y="0" width="300" height="600" fill="#fff"/> <rect x="0" y="0" width="300" height="600" fill="#002395"/> </svg>

前に svg を描いたときは、「x="600", y="0"」のようにカンマ区切りにしたが、これを見る限りスペースだけでも良いみたい。
続けて union jack 旗を見てみる。

縦横比が変わった。 この svg を見てみる。

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 30" width="1200" height="600"> <clipPath id="t"> <path d="M30,15 h30 v15 z v15 h-30 z h-30 v-15 z v-15 h30 z"/> </clipPath> <path d="M0,0 v30 h60 v-30 z" fill="#00247d"/> <path d="M0,0 L60,30 M60,0 L0,30" stroke="#fff" stroke-width="6"/> <path d="M0,0 L60,30 M60,0 L0,30" clip-path="url(#t)" stroke="#cf142b" stroke-width="4"/> <path d="M30,0 v30 M0,15 h60" stroke="#fff" stroke-width="10"/> <path d="M30,0 v30 M0,15 h60" stroke="#cf142b" stroke-width="6"/> </svg>

元々のキャンバスは 60×30 で、そこで線を描いている。 小さくなりすぎて確認できないので、全体を10倍してみる。

<svg xmlns="http://www.w3.org/2000/svg" width="600" height="300"> <clipPath id="t0"> <path d="M300,150 h300 v150 z v150 h-300 z h-300 v-150 z v-150 h300 z"/> </clipPath> <path d="M0,0 v300 h600 v-300 z" fill="#00247d"/> <path d="M0,0 L600,300 M600,0 L0,300" stroke="#fff" stroke-width="60"/> <path d="M0,0 L600,300 M600,0 L0,300" clip-path="url(#t0)" stroke="#cf142b" stroke-width="40"/> <path d="M300,0 v300 M0,150 h600" stroke="#fff" stroke-width="100"/> <path d="M300,0 v300 M0,150 h600" stroke="#cf142b" stroke-width="60"/> </svg>

10倍してわかったけど、html に svg を埋め込むときは、id が被ってしまう。 なので、clipPath の id を t から t0 と変更している。
一度、clipPath を削除して、順を追って描いてみる。

<path d="M0,0 v300 h600 v-300 z" fill="#00247d"/>
<path d="M0,0 v300 h600 v-300 z" fill="#00247d"/>
<path d="M0,0 L600,300 M600,0 L0,300" stroke="#fff" stroke-width="60"/>

これでスコットランドの旗になった。
M0,0 L600,300
M600,0 L0,300
M で初期位置を指定して、L 位置まで幅6の直線を引いて二本の線が描けている。 続きを。

<path d="M0,0 v300 h600 v-300 z" fill="#00247d"/>
<path d="M0,0 L600,300 M600,0 L0,300" stroke="#fff" stroke-width="60"/>
<path d="M0,0 L600,300 M600,0 L0,300" stroke="#cf142b" stroke-width="40"/>

clipPath を除外して上記のようになった。 スコットランドにアイルランドが重なった感じ。 clipPath で指定している図形を表示して、clipPath を入れてみる。

<path d="M300,150 h300 v150 z v150 h-300 z h-300 v-150 z v-150 h300 z"/>
<path d="M0,0 v300 h600 v-300 z" fill="#00247d"/>
<path d="M0,0 L600,300 M600,0 L0,300" stroke="#fff" stroke-width="60"/>
<path d="M0,0 L600,300 M600,0 L0,300" clip-path="url(#t0)" stroke="#cf142b" stroke-width="40"/>

わかったことは、座標位置を単純化するのと線を2本で済ますために角から赤い線を2本引くのだけど、これを半分にしなければならないので clip-path を使って重なっている部分だけ描画している。 三角形4つの描画は、中心点を M で指定して、水平線を引き、垂直線を引き、そこから始点に戻っている。 三角形を4つに分けて描くと。

<path d="M300,150 h300 v150 z"/>
<path d="M300,150 v150 h-300 z"/>
<path d="M300,150 h-300 v-150 z"/>
<path d="M300,150 v-150 h300 z"/>

最後の仕上げ、イングランドの旗を入れる。

<path d="M0,0 v300 h600 v-300 z" fill="#00247d"/>
<path d="M0,0 L600,300 M600,0 L0,300" stroke="#fff" stroke-width="60"/>
<path d="M0,0 L600,300 M600,0 L0,300" clip-path="url(#t0)" stroke="#cf142b" stroke-width="40"/>
<path d="M300,0 v300 M0,150 h600" stroke="#fff" stroke-width="100"/>
<path d="M0,0 v300 h600 v-300 z" fill="#00247d"/>
<path d="M0,0 L600,300 M600,0 L0,300" stroke="#fff" stroke-width="60"/>
<path d="M0,0 L600,300 M600,0 L0,300" clip-path="url(#t0)" stroke="#cf142b" stroke-width="40"/>
<path d="M300,0 v300 M0,150 h600" stroke="#fff" stroke-width="100"/>
<path d="M300,0 v300 M0,150 h600" stroke="#cf142b" stroke-width="60"/>

誰が描いたのかわからないが、うまいこと単純化されている。
今日はここまでで、明日は時間があれば US の旗をみてみたい。

■ 7月26日OtherWWW

昨日の続きで svg の感じを掴む。 今日は US の国旗を見てみる。

星をいっぱい描かないといけないのが大変そう。 svg ファイルを見てみる。

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1235" height="650" viewBox="0 0 7410 3900"> <rect width="7410" height="3900" fill="#b22234"/> <path d="M0,450H7410m0,600H0m0,600H7410m0,600H0m0,600H7410m0,600H0" stroke="#fff" stroke-width="300"/> <rect width="2964" height="2100" fill="#3c3b6e"/> <g fill="#fff"> <g id="s18"> <g id="s9"> <g id="s5"> <g id="s4"> <path id="s" d="M247,90 317.534230,307.082039 132.873218,172.917961H361.126782L176.465770,307.082039z"/> <use xlink:href="#s" y="420"/> <use xlink:href="#s" y="840"/> <use xlink:href="#s" y="1260"/> </g> <use xlink:href="#s" y="1680"/> </g> <use xlink:href="#s4" x="247" y="210"/> </g> <use xlink:href="#s9" x="494"/> </g> <use xlink:href="#s18" x="988"/> <use xlink:href="#s9" x="1976"/> <use xlink:href="#s5" x="2470"/> </g> </svg>

想像よりもだいぶ短い。 さすがに union jack と違ってキャンバスが大きい。 1つ1つ見てみることにする。

<rect width="7410" height="3900" fill="#b22234"/>
<rect width="7410" height="3900" fill="#b22234"/>
<path d="M0,450H7410m0,600H0m0,600H7410m0,600H0m0,600H7410m0,600H0" stroke="#fff" stroke-width="300"/>
<rect width="7410" height="3900" fill="#b22234"/>
<path d="M0,450H7410m0,600H0m0,600H7410m0,600H0m0,600H7410m0,600H0" stroke="#fff" stroke-width="300"/>
<rect width="2964" height="2100" fill="#3c3b6e"/>

白地に赤いラインを入れるのではなく、赤地に白の線を入れている。 その方が線の数が少ないからだろうか。
線も左から右に引いて、下に移動して、右から左に引いて、下に移動して、と繰り返している。 ここまでは大きな問題ないが、気になる星。id が s の path だけ描いてみる。

<path id="s" d="M247,90 317.534230,307.082039 132.873218,172.917961H361.126782L176.465770,307.082039z"/>

ちょっと難しいので、小数点以下を切り捨てした頂点座標をプロットしてみる。

(247,90) (317,307) (132,172) (361,172) (176,307)

五芒星を描いていて、塗りつぶしている。 これだけ大きなキャンバスだけど、小数点の桁がかなりの数になっている。 上の図は fill="none" などを付けて線だけにした。
星が入る部分のキャンバスサイズ 2964×2100 だけにして描いてみる。

<rect width="2964" height="2100" fill="#3c3b6e"/>
<g fill="#fff">
<g id="s4">
<path id="s" d="M247,90 317.534230,307.082039 132.873218,172.917961H361.126782L176.465770,307.082039z"/>
<use xlink:href="#s" y="420"/>
<use xlink:href="#s" y="840"/>
<use xlink:href="#s" y="1260"/>
</g>
</g>
<rect width="2964" height="2100" fill="#3c3b6e"/>
<g fill="#fff">
<g id="s5">
<g id="s4">
<path id="s" d="M247,90 317.534230,307.082039 132.873218,172.917961H361.126782L176.465770,307.082039z"/>
<use xlink:href="#s" y="420"/>
<use xlink:href="#s" y="840"/>
<use xlink:href="#s" y="1260"/>
</g>
<use xlink:href="#s" y="1680"/>
</g>
</g>
<rect width="2964" height="2100" fill="#3c3b6e"/>
<g fill="#fff">
<g id="s9">
<g id="s5">
<g id="s4">
<path id="s" d="M247,90 317.534230,307.082039 132.873218,172.917961H361.126782L176.465770,307.082039z"/>
<use xlink:href="#s" y="420"/>
<use xlink:href="#s" y="840"/>
<use xlink:href="#s" y="1260"/>
</g>
<use xlink:href="#s" y="1680"/>
</g>
<use xlink:href="#s4" x="247" y="210"/>
</g>
</g>
</g>
<rect width="2964" height="2100" fill="#3c3b6e"/>
<g fill="#fff">
<g id="s18">
<g id="s9">
<g id="s5">
<g id="s4">
<path id="s" d="M247,90 317.534230,307.082039 132.873218,172.917961H361.126782L176.465770,307.082039z"/>
<use xlink:href="#s" y="420"/>
<use xlink:href="#s" y="840"/>
<use xlink:href="#s" y="1260"/>
</g>
<use xlink:href="#s" y="1680"/>
</g>
<use xlink:href="#s4" x="247" y="210"/>
</g>
<use xlink:href="#s9" x="494"/>
</g>
</g>
<rect width="2964" height="2100" fill="#3c3b6e"/>
<g fill="#fff">
<g id="s18">
<g id="s9">
<g id="s5">
<g id="s4">
<path id="s" d="M247,90 317.534230,307.082039 132.873218,172.917961H361.126782L176.465770,307.082039z"/>
<use xlink:href="#s" y="420"/>
<use xlink:href="#s" y="840"/>
<use xlink:href="#s" y="1260"/>
</g>
<use xlink:href="#s" y="1680"/>
</g>
<use xlink:href="#s4" x="247" y="210"/>
</g>
<use xlink:href="#s9" x="494"/>
</g>
<use xlink:href="#s18" x="988"/>
<use xlink:href="#s9" x="1976"/>
<use xlink:href="#s5" x="2470"/>
</g>

g を使ってまとめて、後で呼び出してうまく繰り返しで星を入れている。 まず星を縦に4つ並べて、これは縦に4つ並ぶ場合に使うために s4 で括っておく。 星を1つ追加して、s5 で括る。 s4 と s5 をまとめて s9 で括る。 s9 を繰り返して s18 にする。 あとは、括ったものを再利用して、s18 と s9 と s5 を入れる。 18 + 18 + 9 + 5 で50州となる。 繰り返しを使ってうまくまとめている感じ。

続けて五七桐をと思ったが。

中を見たらとんでもないことになっていたので、あきらめた。
あとは、曲線の描き方に慣れないといけないか。

■ 7月27日OtherWWW

昨日の続き。 昨日の五七桐を見ると inkscape で svg に変換したみたい。 inkscape をインストールしようと思ったが、未だにベジェ曲線を引けない私にとっては無用のものと判断してやめておいた。

今日は、svg で矢印を描きたい。 今日の目標はこんな感じの矢印。

arrow

まず、キャンバスを作成して、白背景にし、直線を入れてみる。

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="260">
</svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="260">
<rect width="200" height="260" fill="#fff"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="260">
<rect width="200" height="260" fill="#fff"/>
<path d="M180,15V245" stroke="black" stroke-width="3"/> </svg>

左側の曲線を描いてみる。

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="260">
<rect width="200" height="260" fill="#fff"/>
<path d="M180,15V245" stroke="black" stroke-width="3"/>
<path d="M20,15V20" stroke="black" stroke-width="3"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="260">
<rect width="200" height="260" fill="#fff"/>
<path d="M180,15V245" stroke="black" stroke-width="3"/>
<path d="M20,15V20" stroke="black" stroke-width="3"/>
<path d="M20,20Q20,100 100,100" stroke="black" stroke-width="3" fill="none"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="260">
<rect width="200" height="260" fill="#fff"/>
<path d="M180,15V245" stroke="black" stroke-width="3"/>
<path d="M20,15V20" stroke="black" stroke-width="3"/>
<path d="M20,20Q20,100 100,100" stroke="black" stroke-width="3" fill="none"/>
<path d="M100,100Q180,100 180,180" stroke="black" stroke-width="3" fill="none"/>
</svg>

思ったよりも形ができてきた。 点線にするには、 stroke-dasharray にすれば良いようなので、やってみる。

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="260">
<rect width="200" height="260" fill="#fff"/>
<path d="M180,15V245" stroke="black" stroke-width="3"/>
<path d="M20,15V20" stroke="black" stroke-width="3" stroke-dasharray="5"/>
<path d="M20,20Q20,100 100,100" stroke="black" stroke-width="3" stroke-dasharray="5" fill="none"/>
<path d="M100,100Q180,100 180,180" stroke="black" stroke-width="3" stroke-dasharray="5" fill="none"/>
</svg>

繋がる部分が美しくないので、線を path 1つにまとめてみる。

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="260">
<rect width="200" height="260" fill="#fff"/>
<path d="M180,15V245" stroke="black" stroke-width="3"/>
<path d="M20,15V20Q20,100 100,100Q180,100 180,180" stroke="black" stroke-width="3" stroke-dasharray="5" fill="none"/>
</svg>

矢印の三角形を描く。 marker タグというのが使えるようなので、やってみる。

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="260">
<rect width="200" height="260" fill="#fff"/>
<marker id="under_arrow" viewBox="-10 -10 20 20" orient="auto">
<polygon points="-10,-10 10,0 -10,10" fill="black" stroke="none" />
</marker>
<path d="M180,15V245" stroke="black" stroke-width="3" marker-end="url(#under_arrow)"/>
<path d="M20,15V20Q20,100 100,100Q180,100 180,180" stroke="black" stroke-width="3" stroke-dasharray="5" fill="none"/>
</svg>

矢印の大きさが小さいので、markerWidth と markerHeight で指定。

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="260">
<rect width="200" height="260" fill="#fff"/>
<marker id="under_arrow0" viewBox="-10 -10 20 20" markerWidth="10" markerHeight="10" orient="auto">
<polygon points="-10,-10 10,0 -10,10" fill="black" stroke="none" />
</marker>
<path d="M180,15V245" stroke="black" stroke-width="3" marker-end="url(#under_arrow0)"/>
<path d="M20,15V20Q20,100 100,100Q180,100 180,180" stroke="black" stroke-width="3" stroke-dasharray="5" fill="none"/>
</svg>

形をスリムに整える。

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="260">
<rect width="200" height="260" fill="#fff"/>
<marker id="under_arrow0" viewBox="-10 -10 20 20" markerWidth="10" markerHeight="10" orient="auto">
<polygon points="-10,-10 10,0 -10,10" fill="black" stroke="none" />
</marker>
<path d="M180,15V245" stroke="black" stroke-width="3" marker-end="url(#under_arrow0)"/>
<path d="M20,15V20Q20,100 100,100Q180,100 180,180" stroke="black" stroke-width="3" stroke-dasharray="5" fill="none"/>
</svg>

なんとか形になった感じ。 これを手書きで書くのは時間がかかるが、できそうなことはわかった。

■ 7月28日OtherWWW

昨日の続き。 実際のフローチャートを svg で描こうかとやってみたけど、結局のところ座標がわからないと描けない。 紙に書いてプロットしようと思ったが、文字が入ると実寸と違ってくるし、ということで GIMP でざっくりと文字と線を入れてから、svg にすることに。 それだったら、なんだか svg を描くソフトかなんかを使った方が早いのではと思ってきた。

■ 7月29日OtherWWW

連日いろいろと描いている SVG ファイルなのだけど、目的のものができあがった。 ということで、WordPress で作っているページにアップロードしようとしたら、これができない。 調べてみると、SVG は対応していないようで。
タグとして直接貼ってみたら、文字が画像の外に出てしまった。 仕方なく、SVG を適度な大きさで表示させて PNG に変換することにした。 まさか、最後にこんな結末が待っているとは。

■ 7月30日Windows

Windows7 で動いている古いプログラムに色々と不具合があるという話で。 元のプログラムは Visual Basic で作られているみたいだったけど、ソースコードがないので C# で作り直しすることに。 できたは良いが、呼び出し元のメニュープログラムもソースコードがないので、exe のファイル名も同じにしないといけない。 ここまでは良かったのだけど、PostgreSQL に接続するために使っている Npgsql.dll のバージョンがバッティングしてしまう。
今更10年ぐらい前の Npgsql.dll を呼ぶのも嫌な感じなので、何とかしたい。 このプログラムの名前を仮に test.exe だとすると、test.exe.config というファイルを test.exe と同じ場所に置いて、config の中に DLL の呼び出し位置を指定しておけば、Npgsql.dll が別のフォルダにあっても呼び出せるみたい。 さっそく、こんな感じで test.exe.config を書いてみた。

<?xml version="1.0" encoding="utf-8"?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/> </startup> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <probing privatePath="dlllib" /> </assemblyBinding> </runtime> </configuration>

これで test.exe と同じフォルダに Npgsql.dll がなくても、dlllib フォルダの中に Npgsql.dll があれば読みにいってくれるようになった。 何とかなりそうかな。

■ 7月31日Windows

昨日の続き。 作ったプログラムは C# で Visual Studio Express 2015 でビルドしたもの、それを Windows 10 Pro 64bit で動かした。 test.exe.config の probing privatePath で読みにいったので、test.exe を実際に動かすフォルダに入れて、実行してみた。 しかし、起動しない。

System.IO.FileLoadException: ファイルまたはアセンブリ 'Npgsql, Version=3.1.10.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7'、またはその依存関係の 1 つが読み込めませんでした。見つかったアセンブリのマニフェスト定義はアセンブリ参照に一致しません。 (HRESULT からの例外:0x80131040) ファイル名 'Npgsql, Version=3.1.10.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7' です。'Npgsql, Version=3.1.10.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7'

dlllib フォルダに 3.1.10 の Npgsql.dll があるのだけど、それを読まずに test.exe と同じフォルダにある古い Npgsql.dll を読んでいる感じである。 カレントフォルダの DLL を先に読みにいってしまうようなので、どうしたものかと困る。
調べていると、同じく .config ファイルに codeBase 指定をすれば、DLL 個別の指定ができるみたいであるので、やってみることに。 プログラムの場所は C:\Program Files (x86)\testmenu のフォルダにある。

<?xml version="1.0" encoding="utf-8"?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/> </startup> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Npgsql" publicKeyToken="5d8b90d52f46fda7" culture="neutral"/> <codeBase version="3.1.10.0" href="file:///C:/Program Files (x86)/testmenu/dlllib/Npgsql.dll"/> </dependentAssembly> </assemblyBinding> </runtime> </configuration>

色々やって、これで動いた。 まず、culture は省略可能だけど、publicKeyToken を省略したら動かなかった。 codeBase の href の中身だけど、
file:///C:/Program Files (x86)/testmenu/dlllib/Npgsql.dll
C:/Program Files (x86)/testmenu/dlllib/Npgsql.dll
./dlllib/Npgsql.dll
dlllib/Npgsql.dll
file:///C:\Program Files (x86)\testmenu\dlllib\Npgsql.dll
C:\Program Files (x86)\testmenu\dlllib\Npgsql.dll
.\dlllib\Npgsql.dll
dlllib\Npgsql.dll
どれでも動いた。

問題はここからで、このファイルを本来のターゲットである Windows 7 でやってみる。 使ったのは Windows 7 Professional 32bit で、exe は C:\Program Files\testmenu フォルダに入っている。 culture と publicKeyToken の省略は Windows 10 Pro のときと同じで、culture の省略は可だけど、publicKeyToken を省略すると動かなかった。 codeBase の href の中身は。
× file:///C:/Program Files/testmenu/dlllib/Npgsql.dll
× C:/Program Files/testmenu/dlllib/Npgsql.dll
〇 ./dlllib/Npgsql.dll
〇 dlllib/Npgsql.dll
× file:///C:\Program Files\testmenu\dlllib\Npgsql.dll
× C:\Program Files\testmenu\dlllib\Npgsql.dll
〇 .\dlllib\Npgsql.dll
〇 dlllib\Npgsql.dll
という状況で、Windows 10 Pro とだいぶ差が出た。 実は、このために嵌ってしまって、30分以上無駄な時間を使ってしまった。 最終的にどちらでも動く ./dlllib/Npgsql.dll の指定にしておいた。


21st projects Tatsuyoshi Networks Prompt Works
by Tatsuyoshi since 2003