| |||||||||||||||||||||||||||||||||||||||||||||||
code:Haemophilus influenzae |
ここに書かれていることは無保証です。同じことを行って問題が発生しても、龍義は責任をとりません。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
せっかく USB メモリがあるので、仕事場の PC にあるデータは削除して、速度は犠牲になるけど仕事場では USB メモリを使うことにして、問題は家の PC との同期。 これをうまくできるソフトはないものかと。 真っ先に思いつくのは、rsync で、家の Windows 10 の PC には Cygwin が入っていて、rsync も入れてあるので使える状態。
しかし、Linux などでは早そうな気がするけど、Windows 10 では比較コピーが早いのか少し疑問。
先月27日と昨日書いた 64GB の USB メモリとのデータ同期について。 まず、データの容量を確認する。 45.8GB ある。 同じ条件で実験したいので、PC にあるデータを全部消して、USB メモリーのデータを PC にコピーした。 コピーしたデータから4つほどディレクトリじゃなくてフォルダを削除して、45GB にした。 フォルダにはさらにフォルダとかファイルが含まれているので、ファイル数とフォルダ数は以下のようになった。
ファイル数 33883 → 33653 この状態で、まず rsync on Cygwin でファイルの同期を行う。 $ time rsync -rptv /cygdrive/f/data/ /cygdrive/c/data/ ~snip~ sent 367,996,386 bytes received 106,142 bytes 631,935.67 bytes/sec total size is 48,711,828,933 speedup is 132.33 real 9m41.975s user 0m5.015s sys 0m21.998s これでファイルのコピーが行われているようなのだけど、フォルダの作成日時も上書きしているようである。 Windows の Explorer でコピーすると、フォルダの作成日時がコピーしたときになってしまうために、上書きの処理が起きた。 なので、もう一度ファイルを削除してやってみる。 $ time rsync -rptv /cygdrive/f/data/ /cygdrive/c/data/ ~snip~ sent 367,896,271 bytes received 6,011 bytes 615,736.04 bytes/sec total size is 48,711,828,933 speedup is 132.40 real 9m57.342s user 0m4.124s sys 0m16.295s なぜか、さっきより時間がかかっている。 なので、念のためもう一回やってみる。 $ time rsync -rptv /cygdrive/f/data/ /cygdrive/c/data/ ~snip~ sent 367,896,271 bytes received 6,011 bytes 557,850.31 bytes/sec total size is 48,711,828,933 speedup is 132.40 real 10m59.586s user 0m4.686s sys 0m19.889s さらに時間が伸びた。 ま、10分ぐらいと思っておけばよいと考えることにする。 さらに、更新がなかったときの時間も計測してみる。 $ time rsync -rptv /cygdrive/f/data/ /cygdrive/c/data/ sending incremental file list sent 753,734 bytes received 1,606 bytes 1,239.28 bytes/sec total size is 48,711,828,933 speedup is 64,489.94 real 10m8.729s user 0m2.326s sys 0m14.857s ファイルに変更がなくても、容量が結構あるので10分ぐらいかかるみたい。 ということで、もう一つのコマンド、robocopy を使ってみる。 見た感じオプションは /e ぐらいで良さそうだけど、/r も追加して実行。 C:\>robocopy /e /r:0 F:\DATA C:\DATA ------------------------------------------------------------------------------- ROBOCOPY :: Windows の堅牢性の高いファイル コピー ------------------------------------------------------------------------------- 開始: 2017年3月2日 13:06:13 コピー元 = F:\DATA\ コピー先 : C:\DATA\ ファイル: *.* オプション: *.* /S /E /DCOPY:DA /COPY:DAT /R:0 /W:30 ------------------------------------------------------------------------------ 2 F:\DATA\ ~snip~ 新しいディレクトリ 3 F:\DATA\N600\ 新しいファイル 1.0 m SF90P.PDF 2017/03/02 13:06:13 エラー 5 (0x00000005) ファイルをコピーしています F:\DATA\N600\SF90P.PDF アクセスが拒否されました。 新しいファイル 1.0 m ST70L.PDF 2017/03/02 13:06:13 エラー 5 (0x00000005) ファイルをコピーしています F:\DATA\N600\ST70L.PDF アクセスが拒否されました。 新しいファイル 1.0 m SV11A.PDF 2017/03/02 13:06:13 エラー 5 (0x00000005) ファイルをコピーしています F:\DATA\N600\SV11A.PDF アクセスが拒否されました。 17 F:\DATA\N609\ ~snip~ ------------------------------------------------------------------------------ 合計 コピー済み スキップ 不一致 失敗 Extras ディレクトリ: 1373 15 1358 0 0 0 ファイル: 33671 0 33653 0 18 0 バイト: 45.195 g 0 45.024 g 0 175.03 m 0 時刻: 0:00:04 0:00:00 0:00:00 0:00:04 終了: 2017年3月2日 13:06:18 失敗したけど、早っ。 5秒で終わってる。 失敗した理由は、フォルダを作ったけど、そのフォルダの権限の関係で中にファイルを書き込めなかったみたい。 ファイルの状態をコピー前に削除して、再度オプション /copy:DT を付けて実行。 C:\>robocopy /e /r:0 /copy:DT F:\DATA C:\DATA ------------------------------------------------------------------------------- ROBOCOPY :: Windows の堅牢性の高いファイル コピー ------------------------------------------------------------------------------- 開始: 2017年3月2日 13:11:44 コピー元 = F:\DATA\ コピー先 : C:\DATA\ ファイル: *.* オプション: *.* /S /E /DCOPY:D /COPY:DT /R:0 /W:30 ------------------------------------------------------------------------------ 2 F:\DATA\ ~snip~ 新しいディレクトリ 3 F:\DATA\N600\ 新しいファイル 1.0 m SF90P.PDF 2017/03/02 13:11:44 エラー 5 (0x00000005) ファイルをコピーしています F:\DATA\N600\SF90P.PDF アクセスが拒否されました。 新しいファイル 1.0 m ST70L.PDF 2017/03/02 13:11:45 エラー 5 (0x00000005) ファイルをコピーしています F:\DATA\N600\ST70L.PDF アクセスが拒否されました。 新しいファイル 1.0 m SV11A.PDF 2017/03/02 13:11:45 エラー 5 (0x00000005) ファイルをコピーしています F:\DATA\N600\SV11A.PDF アクセスが拒否されました。 17 F:\DATA\N609\ ~snip~ ------------------------------------------------------------------------------ 合計 コピー済み スキップ 不一致 失敗 Extras ディレクトリ: 1373 15 1358 0 0 0 ファイル: 33671 0 33653 0 18 0 バイト: 45.195 g 0 45.024 g 0 175.03 m 0 時刻: 0:00:04 0:00:00 0:00:00 0:00:04 終了: 2017年3月2日 13:11:50 エラーが出るのは変わらず。 NULL SID で作られたということかな。 元が USB メモリで FAT32 フォーマットなので、権限情報なんて持ってない。 それを robocopy すると、こうなってしまうと。 何か良いオプションがないか robocopy を眺めたけど無さそうだし、時間がかかるけど rsync を使えということかな。 robocopy の速さを見てしまうと、なんとかしたい気分だけど。
先月買った USB-LAN の速度を計ってみようかと。 まず PC 2台用意。 DELL と NEC の Intel(R) Celeron(R) CPU G1840 @ 2.80GHz な PC で、DELL の方はメモリが 4GB で、NEC の方はメモリが 2GB。 2台共オンボードの LAN の口があるので、間に LSW4-GT-5NS を入れて接続。 DELL 側には対象の USB-LAN を接続して、同様に LSW4-GT-5NS に接続。 どちらも普段は稼働中の PC なので、USB メモリを2つ用意して CentOS-7-x86_64-LiveGNOME-1611.iso を入れた。 CentOS-7-x86_64-LiveKDE-1611.iso でも何でも良かったけど、CentOS-7-x86_64-LiveGNOME-1611.iso の方が容量が小さかったので。 2台を USB メモリから起動。 ここまでは思ったよりもあっさりと。 NEC 側は遠隔から操作するので、sshd の起動。 の前に、どんなユーザがいるのか /etc/passwd を確認すると liveuser というユーザがいて、/etc/shadow によるとパスワードがない。 [root@localhost /]# cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.org [root@localhost /]# vi /etc/ssh/sshd_config.org [root@localhost /]# diff /etc/ssh/sshd_config.org /etc/ssh/sshd_config 78c78 < #PermitEmptyPasswords no --- > PermitEmptyPasswords yes [root@localhost /]# systemctl start sshd これで外から入れるようになった。 計測には iperf を使おうと思っていたが、入っていない。 インストールしてみる。 [root@localhost /]# cd /tmp [root@localhost tmp]# wget -q https://iperf.fr/download/fedora/iperf3-3.1.3-1.fc24.x86_64.rpm [root@localhost tmp]# rpm -i iperf3-3.1.3-1.fc24.x86_64.rpm [root@localhost tmp]# iperf3 -v iperf 3.1.3 Linux localhost.localdomain 3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22 16:42:41 UTC 2016 x86_64 Optional features available: CPU affinity setting, IPv6 flow label, TCP congestion algorithm setting, sendfile / zerocopy, socket pacing コンパイルしようと思っていたけど、gcc が入ってなかったので仕方なく rpm を使った。 サーバとして起動する。 [root@localhost tmp]# iperf3 -s ----------------------------------------------------------- Server listening on 5201 ----------------------------------------------------------- 起動した。 クライアント側の DELL の PC でも同じことを行って、準備完了。 主に USB メモリを作るのに時間がかかったので、計測は明日に。
昨日の続き。 クライアント側の DELL PC から、サーバ側の NEC PC に対して iperf3 を実行してみた。 [root@localhost tmp]# iperf3 -c 172.16.0.132 iperf3: error - unable to connect to server: No route to host [root@localhost ssh]# ping -c 3 172.16.0.132 PING 172.16.0.132 (172.16.0.132) 56(84) bytes of data. 64 bytes from 172.16.0.132: icmp_seq=1 ttl=64 time=0.841 ms 64 bytes from 172.16.0.132: icmp_seq=2 ttl=64 time=0.715 ms 64 bytes from 172.16.0.132: icmp_seq=3 ttl=64 time=0.707 ms --- 172.16.0.132 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2001ms rtt min/avg/max/mdev = 0.707/0.754/0.841/0.065 ms 接続は出来ているのに iperf3 がエラーを出す。 No route to host だけど、誰かがブロックしてそうな感じ。 firewalld かな。 両方の firewalld を停止してやってみる。 [root@localhost tmp]# systemctl stop firewalld [root@localhost tmp]# iperf3 -c 172.16.0.132 Connecting to host 172.16.0.132, port 5201 [ 4] local 172.16.0.135 port 50928 connected to 172.16.0.132 port 5201 [ ID] Interval Transfer Bandwidth Retr Cwnd [ 4] 0.00-1.00 sec 701 KBytes 5.74 Mbits/sec 0 31.1 KBytes [ 4] 1.00-2.00 sec 583 KBytes 4.77 Mbits/sec 0 31.1 KBytes [ 4] 2.00-3.00 sec 585 KBytes 4.80 Mbits/sec 0 31.1 KBytes [ 4] 3.00-4.00 sec 583 KBytes 4.77 Mbits/sec 0 31.1 KBytes [ 4] 4.00-5.00 sec 585 KBytes 4.80 Mbits/sec 0 31.1 KBytes [ 4] 5.00-6.00 sec 583 KBytes 4.77 Mbits/sec 0 31.1 KBytes [ 4] 6.00-7.00 sec 585 KBytes 4.80 Mbits/sec 0 31.1 KBytes [ 4] 7.00-8.00 sec 583 KBytes 4.77 Mbits/sec 0 31.1 KBytes [ 4] 8.00-9.00 sec 581 KBytes 4.76 Mbits/sec 0 32.5 KBytes [ 4] 9.00-10.00 sec 583 KBytes 4.77 Mbits/sec 0 32.5 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Retr [ 4] 0.00-10.00 sec 5.81 MBytes 4.88 Mbits/sec 0 sender [ 4] 0.00-10.00 sec 5.70 MBytes 4.78 Mbits/sec receiver iperf Done. 通ったけど、遅い。 デバイスの指定をしなかったら、USB-LAN で接続したみたい。 Amazon のレビューにあった 5Mbps しか出ないというのは本当だった。 USB-LAN のデバイスを落として、再実行。 [root@localhost ssh]# ifconfig enp0s20u1 down [root@localhost tmp]# iperf3 -c 172.16.0.132 Connecting to host 172.16.0.132, port 5201 [ 4] local 172.16.0.136 port 58126 connected to 172.16.0.132 port 5201 [ ID] Interval Transfer Bandwidth Retr Cwnd [ 4] 0.00-1.00 sec 113 MBytes 950 Mbits/sec 0 277 KBytes [ 4] 1.00-2.00 sec 112 MBytes 942 Mbits/sec 0 277 KBytes [ 4] 2.00-3.00 sec 112 MBytes 941 Mbits/sec 0 277 KBytes [ 4] 3.00-4.00 sec 112 MBytes 942 Mbits/sec 0 277 KBytes [ 4] 4.00-5.00 sec 112 MBytes 942 Mbits/sec 0 277 KBytes [ 4] 5.00-6.00 sec 112 MBytes 941 Mbits/sec 0 277 KBytes [ 4] 6.00-7.00 sec 112 MBytes 942 Mbits/sec 0 277 KBytes [ 4] 7.00-8.00 sec 112 MBytes 942 Mbits/sec 0 291 KBytes [ 4] 8.00-9.00 sec 112 MBytes 942 Mbits/sec 0 291 KBytes [ 4] 9.00-10.00 sec 112 MBytes 941 Mbits/sec 0 291 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Retr [ 4] 0.00-10.00 sec 1.10 GBytes 942 Mbits/sec 0 sender [ 4] 0.00-10.00 sec 1.10 GBytes 942 Mbits/sec receiver iperf Done. 1Gbit/s 近く出ている。 優秀だな。 サーバ側にした NEC のチップを確認すると。 [ 1.539731] r8169 Gigabit Ethernet driver 2.3LK-NAPI loaded [ 1.545220] r8169 0000:02:00.0: irq 27 for MSI/MSI-X [ 1.545620] r8169 0000:02:00.0 eth0: RTL8168g/8111g at 0xffffc90000318000, 4c:cc:6a:##:##:##, XID 0c000880 IRQ 27 [ 1.545623] r8169 0000:02:00.0 eth0: jumbo features [frames: 9200 bytes, tx checksumming: ko] クライアント側にしたチップの確認すると。 [ 2.566407] r8169 Gigabit Ethernet driver 2.3LK-NAPI loaded [ 2.566414] r8169 0000:02:00.0: can't disable ASPM; OS doesn't have ASPM control [ 2.575814] r8169 0000:02:00.0: irq 27 for MSI/MSI-X [ 2.576660] r8169 0000:02:00.0 eth0: RTL8168g/8111g at 0xffffc90000630000, f4:8e:38:##:##:##, XID 0c000800 IRQ 27 [ 2.576663] r8169 0000:02:00.0 eth0: jumbo features [frames: 9200 bytes, tx checksumming: ko] ~snip~ [ 3.807030] dm9601 3-1:1.0 eth0: register 'dm9601' at usb-0000:00:14.0-1, Davicom DM96xx USB 10/100 Ethernet, 00:e0:4c:53:44:58 [ 3.807069] usbcore: registered new interface driver dm9601 最近は Realtek のチップでも、ちゃんと 1Gbit/s 近く出るんだな。 問題の dm9601 は 100Mbps で link up している。 この速度なら 10Mbps で link up しても同じだな。 ということで、激安 USB-LAN は、オペレーションには使えるけど、ファイルのやり取りなどに使うには向いてないことがわかった。
AMD が新しい CPU の Ryzen 7 1800X を出したとかでニュースサイトなんかでちらほら見かけた。 久しぶりに CPU として AMD の名前を聞いた感じがする。 それぐらい Intel に押されているのだろうけど、これでようやく競争できるようになったのかな。 個人的にはハイエンドの CPU に興味はないが、競争してくれることで CPU 全体の値段が下がってくれるとありがたい。 どちらも潰れない程度にやってもらえると、消費者として助かる。
某所に古い XP の PC があって、あるプログラムを動かすだけのために残っている。 よくもまぁ、という感じで個人的には捨ててしまえばと思うのだけど、そうもいかず。 と言っても PC が場所を取るので、隣で動いている Windows 7 に VMware を入れて動かないかと。 やるだけやってみる。 まず、ディスクの中身を吸い出すのに dd を使いたいので、USB メモリに Linux を入れる。 軽いという理由だけで、Puppy の Slacko をダウンロードしてきて、refus で USB メモリに入れる。 この USB メモリで起動できることを確認した。 次に XP の方で VMware に入れたときに起動できない問題を解決しておく。
Microsoft の web ページ「Windows XP における "STOP 0x0000007B" エラーのトラブルシューティング方法」から「314082 Windows XP のシステム ディスクを他のコンピュータに移動した後に STOP 0x0000007B エラーが表示される」を辿るのだけど、既に 314082 の文章は見られなくなっている。
archive.org にも無いようなので、資料を取っておいている人の web ページを参考にする。 bios をいじって、USB メモリから起動するようにして、Puppy Linux の起動。 古い XP の PC には、250GB のハードディスクが付いている。 これを dd で取ったらそのままの容量になるので、GParted で容量を減らそうかと。 なのだけど、よく考えたらディスクごと dd するのでパーティションを減らしても意味がないことに気が付く。 ハードディスクの情報を取得して、Windows 7 PC のディスクをマウント。 # hdparm /dev/sda /dev/sda: hdparm: HDIO_GET_MULTCOUNT: Inappropriate ioctl for device IO_support = 1 (32-bit) hdparm: HDIO_GET_UNMASKINTR: Inappropriate ioctl for device hdparm: HDIO_GET_DMA: Inappropriate ioctl for device hdparm: HDIO_GET_KEEPSETTINGS: Inappropriate ioctl for device readonly = 0 (off) readahead = 256 (on) geometry = 30394/255/63, sectors = 488281250, start = 0 # cd /mnt # mkdir filesv # mount -t cifs //192.168.1.2/share /mnt/filesv Password: # df -k Filesystem 1K-blocks Used Available Use% Mounted on tmpfs 1679048 38776 1640272 3% /initrd/pup_rw tmpfs 205476 204476 1000 100% /initrd/mnt/tmpfs /dev/loop0 174592 174592 0 100% /initrd/pup_ro2 /dev/loop4 30080 30080 0 100% /initrd/pup_z unionfs 1679048 38776 1640272 3% / devtmpfs 1678164 0 1678164 0% /dev shmfs 781464 0 781464 0% /dev/shm //192.168.1.2/share 487078908 101447060 385631848 21% /mnt/filesv 容量が多いし、ネットワーク越しなので時間がかかるだろうな。 どのぐらい掛かるかわからないけど、dd を実行した。 # dd if=/dev/sda of=/mnt/filesv/xp_image.dd 4時間経って、どのぐらい容量を吸い出したか見ると 20GB ぐらい。 明日も無理かもな。
少し昨日の続きで。 Windows 7 で Wndows XP Mode が走るらしく。 そういえば、昔そんな話を聞いたことがあったけど、困ってなかったので使う機会がなく忘れてしまったよう。 昨日の dd がまだ終わらないので、吸い出している時間に XP Mode を試してみることに。 Windows 7 の PC はちょっと離れたところにあるので、リモートデスクトップでアクセスして Windows XP Mode のインストール。 特に問題なくあっさりインストールが終わった。 インストールしてわかったのだけど、これは単体で動かすものではなく、Virtual PC 経由で動かすものだった。 そういえば、そうだったような記憶もある。 Virtual PC もインストールして、ちょっと時間がかかったけどインストール完了。 XP も問題なく起動した。 Windows XP Mode で気になることが2つ。 1つは動作がなんとなく遅いこと。 設定を見てみると、メモリの割り当てが 512MB になってるからのようなので、増やせば早くなるかな。 もう1つは、ブラウザで外部にはつながるけど、IP アドレスが DHCP で取得していて 192.168.135.65 になっている。 まったく見覚えのない IP アドレスで、Virtual PC が NAT してくれているのでしょう。 この辺りは設定で改善しそうなので、少しいじりながら動かしてみる予定。
一昨日から行っている dd での吸い出しは、48時間経っても 170GB ちょっとで、もう1日かかりそう。 ディスクを抜いて直結した方が、結果的に楽で速かったのかもしれない。 USB ~ SATA のケーブルが手元にないので、他の PC を開けて繋げてと、大変かもしれないが。
3日がかりで dd が終わった。 取り出したイメージを VMware か VirtualBox の形式に変換すればサイズが小さくなるかもしれないので、やってみる。 しかし手元の PC は 500GB ぐらいの HDD を積んだ PC しかない。 メインで使っている PC は既に dd のイメージが入っているので、別の PC を用意し、少し悩んで、VirtualBox をインストールした。 もう、この際だから VirtualBox を使うことにして、dd のイメージを VirtualBox の vdi 形式に変換。 C:\>cd "Program Files\Oracle\VirtualBox" C:\Program Files\Oracle\VirtualBox>VBoxManage.exe convertfromraw z:\xp_image.dd xp_image.vdi --format vdi Converting from raw image file="z:\xp_image.dd" to file="xp_image.vdi"... Creating dynamic image with size 250000000000 bytes (238419MB)... また3日かかるかと思ったけど、1000Base のおかげか2時間で変換できた。
しかし、どこに作成されたのかよくわからない。
色々調べてみて、ファイルが
C:\Users\toyota\AppData\Local\VirtualStore\Program Files\Oracle\VirtualBox
にあることがわかった。
昨日の続きで。 XP のイメージを VirtualBox で動かしてみると、ライセンス認証の手続きを行う必要があると出てきた。 Windows XP のメディアもあるし、古い PC に入っている XP は削除するので、ライセンス的には問題ないとは思うが、肝心のライセンス認証ができない。 サポートが切れる前だったら可能だったのに。 ライセンス認証のことをすっかり忘れていた。 一旦中止。
先月16日とか17日に新しくファイル保存サーバを仕立てあげた。 そのため古い Linux の PC が1台余ることになった。 元々は Windows XP が入っていた PC で、スペック的にはその時代のもの。 今日ふと、安い web カメラを繋いで録画させることはできないかなと、思いついた。 ちょっと調べてみることに。 OS は CentOS 6.5 で、yum search でざっと眺めてみたら、cheese というソフトウェアが使えそう。 しかし、目的は録画だし X を起動させない予定なので、cheese だと役不足かもしれない。 yum search には出てこなかったが、録画するのに motion というソフトウェアを使っている人が見られるので、インストールできれば motion が面白そう。 [toyota@kessel /]$ cd /tmp [toyota@kessel tmp]$ wget -q https://github.com/Motion-Project/motion/archive/release-4.0.1.tar.gz [toyota@kessel tmp]$ tar xfz release-4.0.1.tar.gz [toyota@kessel tmp]$ cd motion-release-4.0.1/ [toyota@kessel tmp]$ cat INSTALL ~snip~ The building instructions vary based upon the base system and the desired options. For most installs, it will be desired to include either ffmpeg or libav and these will have associated dependencies which dictate the configuration options. Build Packages: autoconf automake pkgconf libtool libjpeg8-dev build-essential libzip-dev The option to include FFMPEG or Libav functionality in motion is a choice of one OR the other not both. The packages and library names change frequently and vary across base operating systems. If ffmpeg or libav are built and installed from source the custom motion configuration options will usually be needed. FFMPEG Packages ffmpeg libavformat-dev libavcodec-dev libavutil-dev libswscale-dev Libav Packages libavformat-dev libavcodec-dev libavutil-dev libav-tools libswscale-dev ~snip~ ffmpeg 周りを色々入れないと駄目そう。 そんな時間はちょっとないので、一旦先送り。
CentOS 6.8 な環境で vimdiff を使いたかったのだけど。 [root@scarif /]# vimdiff bash: vimdiff: コマンドが見つかりません 少し探してみたけど、入ってないみたい。 vim と diffutils の確認をしてみる。 [root@scarif /]# rpm -qa | grep vim vim-filesystem-7.4.629-5.el6_8.1.i686 vim-minimal-7.4.629-5.el6_8.1.i686 vim-common-7.4.629-5.el6_8.1.i686 [root@scarif /]# rpm -qa | grep diff diffutils-2.8.1-28.el6.i686 入ってそうだけど。 何でだろうと調べてみると、vim-enhanced のパッケージが必要らしく。 vim-enhanced をインストールしたら、vimdiff が動くようになった。 vimdiff って vim の標準の機能じゃなかったのか。
ファイルを二重で持っていて、お互いが更新するのをうまくできないか、という2日の続き。 しばらくファイルの更新を覚えておき、お互いファイルやフォルダをマージしていたのだけど、忘れていたりしてデータがバラバラになってしまった。 やっぱり何か便利なツールはないかと探してみて、WinMerge 3 というものがあったので、ダウンロードして使ってみた。 起動に失敗したようである。 このアプリケーションのサイドバイサイド構成が正しくないため、アプリケーションを開始できませんでした。 詳細については、このアプリケーションのイベントログを参照するか、コマンドラインツール sxstrace.exe を使用してください。 見たことないエラーだな。 イベントビューアーで見てみる。 "C:\Program Files (x86)\WinMerge\WinMergeU.exe" のアクティブ化コンテキストの生成に失敗しました。 従属アセンブリ Microsoft.VC90.MFC,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8" が見つかりませんでした。 詳細な診断を行うには sxstrace.exe を実行してください。 調べてみると、Microsoft Visual C++ 2008 のランタイムが必要みたい。
面倒だけど、仕方ない。
Microsoft の web ページからダウンロードする。
昨日の続き。
イベントビューアーのメッセージをよくみたら、processorArchitecture="x86" と書いてある。
昨日は x64 版を入れた気がしたので、x86 版を入れてみる。 あっさり起動した。
動かなかった原因は意外と単純なものだった。 待つこと40分、ようやく比較が終わったみたい。
この時間はちょっともったいない、WinMerge を使うかは保留。
昨日の続き。 WinMerge のオプションを調べていたら、昨日やった比較はファイルの中身も調べているようである。 そりゃ遅いのは仕方がない。 ファイルの存在確認と、更新確認さえしてくれれば良いので、「Modified Date and Size」にして比較してみたら10秒ぐらいで比較できた。 FAT32 の USB なので、3秒以内の誤差は除くオプションをチェックして、早く比較できるようになった。 これで使えそう。
HTML を書いていて、表の中に枠線いっぱいに円を描きたかった。 文字の「〇」を使うと枠線いっぱいにならなくて線が太くなるし、かと言ってわざわざ canvas タグで arc を入れるのも無駄な気がして。 ふと、table タグを border-radius 指定すればなんとななりそうな気がしてきた。 やってみる。 上から空、文字の〇、table での丸の順番。
文字で入れると幅と高さが変わってしまうけど、table で入れると枠いっぱいに入って気持ちが良い。 枠の幅や高さが変わっても、そのまま対応できるし。 このときの html はこんな感じ。 <table style="border: 1px solid #888; border-collapse: collapse; margin: 5px; padding: 5px;"> <tr> <td style="border: 1px solid #888; width: 30px; height: 30px; padding: 0px;"> <table style="border-collapse: separate; margin: 0px; width: 100%; height: 100%; border-radius: 50%; border: 1px solid #000;"><tr><td></td></tr></table> </td> </tr> </table> おかげで重そうな canvas を使わずに済んだ。
少し昨日の続きで。 書いた HTML をプリンタで出したかった。 それもなるべく紙いっぱいに印刷したい。 手元の Edge, Google Chrome, Mozilla Firefox, Opera, Vivaldi と5つのブラウザで印刷をしてみることに。 5つを比較して結局 Firefox で印刷することになった。 余白を自由に設定できるし、拡大率も % 刻みで入力できる、もちろんヘッダフッタも消せるし。 Edge だと余白が自由に設定できなかったし、他のブラウザだと拡大率が細かく設定できないのでギリギリまで大きくできない。 紙に合わせて縮小印刷のような設定も、横幅に合わせてしまったりして複数ページになったり。 個人的には Vivaldi がもう少しやってくれると思っていたので、残念だったかな。
自分の本籍ってどこに置いたか忘れてしまっていて。 区役所に住民票を取りに行けば済む話だけど、面倒臭い。 そういえば、PaSoRi と言うか RC-S320 のカードリーダーがあるので、運転免許証に書かれている本籍を見れば良いのかと RC-S320 をそれで見てみることに。 RC-S320 を引っ張り出して繋いで、ドライバーを入れたりしたが、運転免許証の中を見ることができない。
置き方を変えたり、別なカードで試したりしたけど、やっぱり運転免許証は駄目で。 そこから『問題が解決しない場合は、ここをクリックしてトラブル解決サイトの情報をご参照ください。』をクリックすると、ソニーのページに飛ぶ。 確認項目に『「「コントロールパネル」の"NFCポート"で、「Type B PC/SC 有効」になっていない』とあるので、確認してみたらそんな項目がない。 ということは、RC-S320 は運転免許証を見られないということなのかな。 30分近く無駄にしてしまった。 明日、明後日は更新がありません。
一昨日、外国人に言われて気が付いたのだけど、テレビ放送の仕組で、字幕の言語が1種類[しか]ないことが問題だなと。 その外国人は、日本語の映画を見たいのだけど言葉がわからないし、字幕にしても日本語字幕しか出ないから、どのみちわからないと。 確かにそうだなと。 それに、二か国語放送している場合も字幕は日本語のみなので、英語の勉強をしたいと思った場合にも使えない。 世界化を目指すのだったら、仕組み的に複数言語の字幕に対応すべきだったと感じた。 文字データなので、そんな情報量は多くないし、仕組みさえあればできた筈。 そんなことを外国人から学んだ。
html から表を出力する必要があった。
CSV 出力なら簡単にできるのだけど、せっかく PHP を使っているということで、PHPExcel から Excel ファイルを出力することに。
少し昨日の続き。
表の中の数字を PHP で計算してから Excel の表に入れていたけど、よく考えたらそれは数式にしてしまえば Excel に任せられるのでは、と気が付いた。
そうすれば PHP での計算も減るので出力は早くなるし。
web のニュースを見ていたら上海問屋から microSD カードを SATA ドライブ化できるデバイスが発売になったと。
10枚入るし、なんだか便利そうと思ったけど同容量じゃないと駄目らしく。
余っているばらばらの容量の microSD カードを寄せ集めてドライブになると便利なのだけど、それができないとちょっと魅力に欠ける。
久しぶりに archive.org のインターネットアーカイブにアクセスしてみたら、前とだいぶ変わっている。
操作感はそんなに変わっていないが、リンクをたどってくれなかったりして、微妙に使いにくくなった。
PHP でごにょごにょ書いていて。 どうも開発環境は緩い環境のようで。 $testar = array(); $testar[] = array(name => 'toyota', age => 29); で通ってしまう。 本番環境に持って行くと internal server error が出るので、何でだろうとしばし考えてしまった。 正解はこうなる。 $testar[] = array('name' => 'toyota', 'age' => 29); 緩い環境が便利なのかそうじゃないのか、よくわからなくなってきた。
某所にある Windows 7 で印刷できないとかなんとか。 前は印刷できたとかではなく、隣の PC では印刷できるけど、その PC だとエラーが出るとかで。 見てみると、プログラムがエラーを出しており、どうもクリスタルレポートがないような感じ。 そのエラーを出しているプログラムは、その会社向けのえらい古いもので、インストーラはないみたい。 それに合うクリスタルレポートを探したけど、もうダウンロードできない古さ。 時間がかければなんとかなりそうな感じだけど嵌りそうなので、状況を説明して、無理というのを理解してもらった。 今度時間があるときなんとかなるかやってみるかな。
PHP で最後の1文字を削除したかった。 良い例じゃないけど、こんな感じ。 $people = array('鈴木', '田中', '佐藤'); $subject = ""; foreach($people as $name){ $subject += $name . '・'; } $subject += " 各位"; 「鈴木・田中・佐藤・ 各位」になるので、「鈴木・田中・佐藤 各位」にしたい。 mb_strlen で長さを取って、mb_substr で1文字短い長さを取ろうと思っていたが、substr を見ると length の指定に -1 など負の値が可能である。 mb_substr のページには出てないので、動くかどうか試してみた。 $people = array('鈴木', '田中', '佐藤'); $subject = ""; foreach($people as $name){ $subject .= $name . '・'; } $subject = mb_substr($subject, 0, -1, "UTF-8"); $subject .= " 各位"; あっさり動いた。 これが使えると便利だな。
PHP で色々書いていて、Edge の DOM Explorer で出力の確認してみたら、option タグの selected がおかしい。 PHP ソースファイルを3回見直しても間違ってないので、デバッガーで確認するときちんと入っていた。 これは何なんだろうと、html を書いてテストすることに。 書いた html はこんな感じ。 <!doctype html> <html style="width: 100%; height: 100%;"> <head> <title>selected test</title> </head> <body> <select name="fruit"> <option value="0">Apple</option> <option value="1">Banana</option> <option value="2" selected>Orange</option> <option value="3">Kiwi</option> </select> </form> </body> </html> これを DOM Exploere で見るとこうなる。 何で selected="" になるのだろう。 ちょっと調べてみると、html 的には selected だけで問題ないようで。 xhtml だと値を入れないといけないため、必要になってくるみたい。 selected="selected" じゃなく selected="" の指定は良いのかなと少し疑問なので少し調べる。 HTML 5.1 を見ると、selected は boolean attributes の指定で、boolean attributes では例として disabled="" の記述があるので、あっているみたい。 そうか、間違ってないなら仕方ない。
いつものごとく web を眺めていたら、気になる広告が表示された。 あの画像盗用問題か。 私の撮った写真も、naver だかどこかに使われている気がしたが、面倒なので放置している。 それがまだ広告の無いページだったら、嫌悪感も減るのだけど、人の撮った写真集めて金儲けしてるとなるとね。 このページ配下も、広告を入れようと思えば入れられるけど、
C# で作られた印刷プログラムがうまく動かないとあって。 印刷が途中で終わってしまうらしく。 CUI なものなので、手元の環境でコマンドラインから実行してみたが、ちゃんと最後まで印刷される。 一部の Windows 7 と Windows 2012 Server の環境だと問題が発生する模様。 どこで落ちているのか確認するため、Process Monitor で見てみる。 まず、終了コードを確認すると、 Exit Status: -532462766, User Time: 14.4062500 seconds, Kernel Time: 1.3750000 seconds, ~省略~ となっている。 -532462766 じゃ手掛かりにならない。 落ちている場所も特に変わった場所でもなく、外部から何かされているわけでもない。 コマンドラインから実行してもらったら。 C:\Program Files\printSheet>printSheet.exe ハンドルされていない例外: System.ArgumentException: 使用されたパラメーターが有効ではありません。 場所 System.Drawing.Bitmap..ctor(Int32 width, Int32 height, PixelFormat format) 場所 System.Drawing.Bitmap..ctor(Int32 width, Int32 height) 場所 printChecklist.Program.PrintPage(Object sender, PrintPageEventArgs e) 場所 System.Drawing.Printing.PrintDocument.OnPrintPage(PrintPageEventArgs e) 場所 System.Drawing.Printing.PrintDocument._OnPrintPage(PrintPageEventArgs e) 場所 System.Drawing.Printing.PrintController.PrintLoop(PrintDocument document) 場所 System.Drawing.Printing.PrintController.Print(PrintDocument document) 場所 System.Drawing.Printing.PrintDocument.Print() 場所 printSheet.Program.Main(String[] args) どうも Bitmap が問題のようで。
ソースコードを確認してみると、繰り返しの中で |
by Tatsuyoshi since 2003 |