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

■ 10月1日WWW

数か月前から新しい web ページを立ち上げていて。 Google のページランクがどんなものなのか見ようと思って調べてみたら、今年に入ってから Google のページランクは廃止したらしい。 Google がページに対してどんな評価をしているかの指標になって、便利と言えば便利だったのに。
他のところでもランキングをしているが、Google ほどの情報量と処理量を持っていないだろうから、少し信頼性に欠けてしまうところ。 指標は気にせず、地道にページを更新していくしかないか。

■ 10月2日LinuxWWW
古い PostgreSQL を使ってカタカタとコードを書いていたのだけど。 テーブルが更新されたかどうかの判定を簡単にできないものかと。 データの増減で単純なのが count で数えれば良いのだけど、削除して追加されると数は変わらないので正しくないし、カラムの更新には対応できないし。
どうしたものかなと調べていたら、pg_stat_user_tables を select するとテーブル情報が得られるらしいので、やってみた。

testdb=# select * from pg_stat_user_tables; relid | schemaname | relname | seq_scan | seq_tup_read | idx_scan | idx_tup_fetch | n_tup_ins | n_tup_upd | n_tup_del | last_vacuum | last_autovacuum | last_analyze | last_autoanalyze ---------+------------+---------------------------------+----------+--------------+----------+---------------+-----------+-----------+-----------+-------------+----------------------------+--------------+---------------------------- 2285589 | public | test_fruit | 3 | 5769 | 0 | 0 | 0 | 0 | 0 | | 2016-09-09 14:21:26.671+09 | | 2016-09-09 14:26:30.578+09 3101562 | public | test_fish | 4 | 224 | 0 | 0 | 0 | 0 | 0 | | 2016-01-17 09:52:41.875+09 | | 2284829 | public | user_info | 3 | 9444 | 255 | 476 | 7 | 0 | 7 | | 2016-10-01 14:20:33+09 | | 2016-10-01 14:26:29.234+09 2285674 | public | address_yokohama | 3 | 15 | 0 | 0 | 0 | 0 | 0 | | 2015-11-09 14:21:27.015+09 | | ~snip~

relname はほぼ table 名になっているので、これ使えそう。 テーブルの変更がされたということは、insert か update か delete が行われたということなので、n_tup_ins と n_tup_upd と n_tup_del の数が増えたら更新されたということになる。 これでちょっと作ってみよう。

■ 10月3日WWW

HTML を書いていたのだけど、IE のテキストボックスというか input タグの type="text" を表示させて、入力したときに右に×が出てくる。

IE のテキストボックス

幅を合わせて作成しているために、この×が邪魔。 消せるのかどうか調べてみる。 Microsoft のフォーラムにこんな書き方が出ていた。

<style type="text/css"> ::-ms-clear { display: none; } </style>

さっそくやってみたら、ちゃんと消えた。 そもそも IE なんか使わないのもあるけど、こんな×なんか使ったことないし、無くて良いと思うのだけどな。

■ 10月4日Linux

CentOS 6.8 な環境で、a2ps を使いたかったため yum で入れてみようかと。 やってみた。

[root@takodana tmp]# yum search a2ps Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: ftp.riken.jp * extras: ftp.riken.jp * updates: mirror.qoxy.com ============================== N/S Matched: a2ps ============================== emacs-a2ps.i686 : Emacs bindings for a2ps files emacs-a2ps-el.i686 : Elisp source files for emacs-a2ps under GNU Emacs a2ps.i686 : Converts text and other types of files to PostScript Name and summary matches only, use "search all" for everything.

あるみたいなので、インストールしてみることに。

[root@takodana tmp]# yum install a2ps Loaded plugins: fastestmirror Setting up Install Process Loading mirror speeds from cached hostfile * base: ftp.riken.jp * extras: ftp.riken.jp * updates: mirror.qoxy.com Resolving Dependencies --> Running transaction check ---> Package a2ps.i686 0:4.14-13.el6 will be installed ~snip~ Dependencies Resolved =============================================================================== Package Arch Version Repository Size =============================================================================== Installing: a2ps i686 4.14-13.el6 base 1.1 M Installing for dependencies: ConsoleKit i686 0.4.1-6.el6 base 82 k ConsoleKit-libs i686 0.4.1-6.el6 base 17 k GConf2 i686 2.28.0-6.el6 base 961 k ImageMagick i686 6.7.2.7-5.el6_8 updates 1.9 M ImageMagick-perl i686 6.7.2.7-5.el6_8 updates 158 k ORBit2 i686 2.14.17-5.el6 base 162 k OpenEXR-libs i686 1.6.1-8.1.el6 base 202 k atk i686 1.30.0-1.el6 base 194 k eggdbus i686 0.6-3.el6 base 91 k gdk-pixbuf2 i686 2.24.1-6.el6_7 base 498 k groff-perl i686 1.18.1.4-21.el6 base 24 k gtk2 i686 2.24.23-8.el6 base 3.2 M hicolor-icon-theme noarch 0.11-1.1.el6 base 40 k html2ps noarch 1.0-0.4.b5.el6 base 89 k ilmbase i686 1.0.1-6.1.el6 base 74 k kpathsea i686 2007-60.el6_7 base 118 k libIDL i686 0.8.13-2.1.el6 base 81 k libXcomposite i686 0.4.3-4.el6 base 20 k libXcursor i686 1.1.14-2.1.el6 base 28 k libXdamage i686 1.1.3-4.el6 base 18 k libXfixes i686 5.0.1-2.1.el6 base 16 k libXft i686 2.3.2-1.el6 base 54 k libXi i686 1.7.4-1.el6 base 37 k libXinerama i686 1.1.3-2.1.el6 base 13 k libXrandr i686 1.4.2-1.el6 base 23 k libcroco i686 0.6.2-5.el6 base 99 k libgsf i686 1.14.15-5.el6 base 119 k libpaper i686 1.1.23-6.1.el6 base 34 k librsvg2 i686 2.26.0-14.el6 base 141 k libthai i686 0.1.12-3.el6 base 183 k libtool-ltdl i686 2.2.6-15.5.el6 base 45 k libwmf i686 0.2.8.4-25.el6_7 base 131 k libwmf-lite i686 0.2.8.4-25.el6_7 base 52 k netpbm i686 10.47.05-11.el6 base 802 k netpbm-progs i686 10.47.05-11.el6 base 1.7 M pango i686 1.28.1-11.el6 base 351 k perl-Compress-Raw-Zlib i686 1:2.021-141.el6_7. base 71 k perl-Compress-Zlib i686 2.021-141.el6_7.1 base 46 k perl-HTML-Parser i686 3.64-2.el6 base 109 k perl-HTML-Tagset noarch 3.20-4.el6 base 17 k perl-IO-Compress-Base i686 2.021-141.el6_7.1 base 70 k perl-IO-Compress-Zlib i686 2.021-141.el6_7.1 base 136 k perl-URI noarch 1.40-2.el6 base 117 k perl-libwww-perl noarch 5.833-3.el6 base 391 k polkit i686 0.96-11.el6 base 161 k psutils i686 1.17-34.el6 base 45 k psutils-perl noarch 1.17-34.el6 base 19 k sgml-common noarch 0.6.3-33.el6 base 43 k tex-preview noarch 11.85-10.el6 base 50 k texinfo i686 4.13a-8.el6 base 660 k texinfo-tex i686 4.13a-8.el6 base 132 k texlive i686 2007-60.el6_7 base 1.6 M texlive-dvips i686 2007-60.el6_7 base 185 k texlive-latex i686 2007-60.el6_7 base 80 k texlive-texmf noarch 2007-39.el6_7 base 2.8 M texlive-texmf-dvips noarch 2007-39.el6_7 base 237 k texlive-texmf-errata noarch 2007-7.1.el6 base 5.3 k texlive-texmf-errata-dvips noarch 2007-7.1.el6 base 5.3 k texlive-texmf-errata-fonts noarch 2007-7.1.el6 base 5.5 k texlive-texmf-errata-latex noarch 2007-7.1.el6 base 5.4 k texlive-texmf-fonts noarch 2007-39.el6_7 base 48 M texlive-texmf-latex noarch 2007-39.el6_7 base 5.3 M texlive-utils i686 2007-60.el6_7 base 233 k Transaction Summary =============================================================================== Install 64 Package(s) Total download size: 73 M Installed size: 204 M Is this ok [y/N]:

そんなに容量が必要なの、と思ってしまった。 ちょっとした実験のために、こんな容量使うのはもったいないし、悩むところだな。 他に手がないか考えることにする。

■ 10月5日Windows

昨日の少し続きで。 Windows の lpr コマンドでもポストスクリプトファイルを印刷できるみたい。 Windows 7 の PC でちょっとやってみる。

C:\Users\toyota>lpr 印刷ジョブをネットワーク プリンターに送信します。 使用法: lpr -S サーバー -P プリンター [-C クラス] [-J ジョブ] [-o オプション] [-x] [-d] ファイル名 オプション: -S サーバー lpd サービスを提供するホストの名前または IP アドレス -P プリンター 印刷キューの名前 -C クラス バースト ページで使用するジョブ分類 -J ジョブ バースト ページに印刷するジョブ名 -o オプション ファイルの種類を示します (既定ではテキスト ファイルと想定) バイナリ (ポストスクリプトなど) ファイルには "-o l" を使用します -x SunOS 4.1.x 以前との互換性 -d 最初にデータ ファイルを送信します

-o オプションのバイナリで「(ポストスクリプトなど)」とあるが、このなどの部分に何があるか気になるところ。 Microsoft のページで確認してみたけど、書いてないし。

試しにファイルを用意してやってみたが、出てこなかった。 調べてみると、指定したプリンタは PS 非対応だったのだけど、それが原因なのかな。 よくわからない。

■ 10月6日Windows

連日のプリンタ関係の話で。 Windows のコマンドラインで、net print を使えばキューの制御ができるらしく。 Windows 7 の PC でやってみた。

C:\Users\toyota>net print "\\naboo\EPSON PX-S5040" このコマンドの構文は次のとおりです: NET [ ACCOUNTS | COMPUTER | CONFIG | CONTINUE | FILE | GROUP | HELP | HELPMSG | LOCALGROUP | PAUSE | SESSION | SHARE | START | STATISTICS | STOP | TIME | USE | USER | VIEW ]

構文が違うと言われる。 見てみると print オプションがなくなっている。 どうしたのか、Micorosoft のページで確認してみたら。

The net print command has been deprecated in Windows 7.

だそうで。 何か別な方法を考えないといけないな。

■ 10月7日Linux

CentOS 6.8 な環境で、ftp コマンドを使おうとしたら。

[toyota@takodana tmp]% ftp ftp.riken.jp bash: ftp: command not found

いやいやいや、と思って path の設定を見直したり、/usr の下を探してみたりしたけど、やっぱりない。 そんな時代なのか。 仕方なく、yum で入れることにした。

[root@takodana tmp]# yum install ftp Loaded plugins: fastestmirror Setting up Install Process Loading mirror speeds from cached hostfile * base: mirror.readyspace.com * extras: mirror.readyspace.com * updates: ftp.riken.jp Resolving Dependencies --> Running transaction check ---> Package ftp.i686 0:0.17-54.el6 will be installed --> Finished Dependency Resolution Dependencies Resolved =============================================================================== Package Arch Version Repository Size =============================================================================== Installing: ftp i686 0.17-54.el6 base 56 k Transaction Summary =============================================================================== Install 1 Package(s) Total download size: 56 k Installed size: 91 k Is this ok [y/N]: y Downloading Packages: ftp-0.17-54.el6.i686.rpm | 56 kB 00:00 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : ftp-0.17-54.el6.i686 1/1 Verifying : ftp-0.17-54.el6.i686 1/1 Installed: ftp.i686 0:0.17-54.el6 Complete!

ftp コマンドを使うごときで、20分もかかってしまった。

■ 10月8日WindowsNetwork

家に帰ると PC が Windows Update のアップデートに失敗していた。 原因を見てみると、どうやら容量が足りなかったみたい。 5G は空いているのに、Windows Update ごときでどれだけ使うんだよという感じで。
とりあえずは容量を開けて Windows Update を手動で実行した。 終わらなそうなので、続きは明日だな。

■ 10月9日WindowsNetwork

昨日の続きで。 えらい時間がかかって、ようやく Update が終わった。 なんでも、Windows 10 Anniversary Update らしく。 ちょっと操作感が変わったりして、ようやく慣れてきたと思ったところだったのに。

今回のアップデートとは関係ないけど、 XP の頃はコントロールパネルだけでわかりやすかったのに、Windows 10 とは「コントロールパネル」と「Windows の設定」の2つあって、統一して欲しいところ。 コマンドプロンプトを開くのにも、「Windows アクセサリ」「Windows 管理ツール」「Windows システムツール」のどこにあるのか迷うこともあるし(正解はシステムツール)。 個人的には、OS は機能満載ではなくシンプルで軽快であって欲しい。

■ 10月10日Windows

昨日の Windows アップデートで1つデバイスが動かなくなってしまった。 デバイスマネージャーで確認すると、「不明なデバイス」扱いになっている。 どうしたものかと、ドライバを更新しようとしたら、未署名のドライバだったので、すんなり入らず。 仕方なくテストモードにして、未署名のドライバをインストールできるように再起動したりして、なんとか完了した。

アップデートで未署名のドライバが入らなくなってしまったらどうしようと不安が過ったので、まずは一安心。 アップデートしたことで、便利になるだけなら良いけど、面倒な作業が増えるのはやめて欲しい。

■ 10月11日WWW

web サーバのログを見ていたら、referer に yandex.ru が付いているのがポツポツ見られて。 これは何の web サイトだろうかと調べてみたら、検索エンジンなんだと。 何でも、ロシアでは Google よりも使っている人が多いらしく。 国によっていろいろなんだなと勉強になった。

■ 10月12日Network

拠点間を VPN で繋いでいる場所があって。 その拠点間で電話とかファクシミリをそこそこしている。 VPN 回線が光だから、電話とかも IP ベースにしてしまえば無料になるのにな、と思ったのが始まり。

ちょっと調べてみると、使っている PBX は IP 電話に対応している。 と言うことは、PBX を LAN に繋いでしまえば、今ある電話設備を使って拠点間の電話が可能ということである。 ただし、SIP サーバと PBX の設定変更が必要で。 SIP サーバは何とかなるにしても、PBX なんていじったことが無いし、web にも情報がないので大変そう。
この PBX の設定は一度置いて、SIP サーバを用意したとする。 その場合、VPN 間で使う電話番号はどうすれば良いのか。 IP アドレスの場合は、ローカルアドレスが決まっているので、それを割り当てれば良いが、電話番号の場合はどうするべきなのだろう。 短い電話番号を SIP サーバで割り当てすることができるかもしれないが、PBX が対応していないかもしれないし。
総務省のページから電話番号の割り当てを見てみたけど、ローカル電話番号のようなものは見つからない。 外に漏れないものなので、何でも良いと言えば良いのだけど、後々から同じ番号帯に割り当てされて一部の電話に掛けられない、なんてことが起きるのも嫌な感じだし。 どうしたものかな。 050 の空いているところでも考えてみるかな。

■ 10月13日Network

少し昨日の続きで。 昨日見ていた総務省の電話番号割り当てに、「安子の電話」なる割り当てがあった。 まさか、個人で割り当てられているのかと思って調べてみると、国内外1分20円の料金で通話できるサービスのことで、10年以上前にサービスを終了しているようで。 そんなものがあったのかと、今更ながら知った。 今は Skype だ Line だのとあるので、よっぽどのことが無い限り商売にならないだろうから、早めに終了して良かったのかもしれない。

■ 10月14日Network

一昨日の続き。 PBX が SIP アドレスの機能を持っていないようなので、SIP サーバを立てる必要がある。 ここで少し気になるのが、SIP サーバを入れることで NTT の適合検査が必要になってくる可能性があること。 今回の場合、複数台の PBX を繋げるだけで、端末が外部に電話するときは SIP サーバを経由しない設定になるので、適合検査は不要かもしれないのだけど。 この辺り、もう一度確認する必要がある。

で、PBX の説明書を読んでいたら、IP 電話は対応しているけど、ユニットを別で買わないといけないとかで。 ユニットを中古で買って、設定を工事屋さんにお願いしたら3万円は取られるだろうから、今の使い方で元を取るには3年近くかかりそうな感じ。 微妙な値段だな。 一時保留。

■ 10月15日LinuxNetwork

CentOS 7 な環境で。 どうも PC と言うかサーバの時刻が1分ぐらいずれている。 特に何か影響があるという訳でもないけど、気になるので ntpdate を実行した。 やっぱり65秒ずれていて。 それは特に問題ないのだけど、せっかくだから自動で時刻合わせをさせようと。 cron に ntpdate を実行するように入れても良いが、ここは ntpd を動かしてみる。
が、ntpd を入れて設定をしようと思ったところ、どうも CentOS 7 には chrony という ntp のクライアント・サーバが入っているようで。 この chrony を使ってみることに。
設定ファイルは /etc/chrony.conf で、この server 部分のコメントを外して動かしてみた。 時刻の様子は chronyc sources で見るようなので、やってみる。

[root@hoth etc]# systemctl start chronyd [root@hoth etc]# chronyc sources 210 Number of sources = 4 MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^- laika.paina.net 2 6 77 20 +141us[ +141us] +/- 23ms ^- mmm21.wni.co.jp 3 6 77 21 +9307us[+6602us] +/- 79ms ^- hachi.paina.net 2 6 77 19 -97us[ -97us] +/- 53ms ^* 122x215x240x51.ap122.ftth 2 6 77 20 -206us[-2911us] +/- 22ms

大丈夫そう。 適当に ntp サーバを変更して、そのまま運用することにした。

■ 10月16日WWW

Google Adsense で取得した金額が8000円に達したので、支払いができるとかで。 銀行口座を指定してみることに。 しかし、「お支払い方法を追加」から銀行口座を入れたのだけど、名義人のお名前が間違ってるとかで進まない。 漢字を入れても、カタカナを入れても駄目。 仕方なく web で検索してわかったことは、半角カナを入れないといけないということ。 振り込みとかに半角カナを入れたりするが、まさかブラウザから半角カナを入れる必要があるとは。 100歩譲っても、Google なんだから全角カタカナから勝手に変換してくれれば良いのに。 半角カナなんて、どうやって変換するのか考えてしまった。 なんとか半角カナを入れて、無事に支払い方法が追加できた。
銀行はもう30年以上前のシステムを使い続けているから、こんなことになっているのだろうね。 2017年にもなって、漢字で名前を入れられないなんて、どうかしてると思う。

■ 10月17日WWW

某所で動いているシステムで、値が保存されないと言われて。 PHP で書いたのまで思い出したが、理由がピンとこない。 何を入力したかと聞いたら、とんでもない数のデータだった。 入力数は多くて100ぐらいと聞いていたのだけど、その想定を遥かに超えていた。 多分、POST パラメターが多すぎたか長すぎたかで、蹴られてしまったのでしょう。

色々調べてわかったことは、PHP で POST パラメターの数がデフォルトで1000に制限されていて。 php.ini の中の max_input_vars を設定することで、この数を増やすことができる。 さっそく4000にして、今回の問題は回避することができた。 とは言っても4倍なので、ここは json にして投げるのが綺麗なやり方なのでしょう。 ざっくりと書き換えて数に左右されないように変更しておく。

■ 10月18日Other

実家の液晶モニタが使えないと連絡があったので、見に行った。 問題のモニタは CYNOS DCM-17WTHD で、LED が点滅して映らなくなっている。

これはいつ買ったのだっけかと自分のページを調べてみると、2005年の1月にこの商品を買っていた。 もう11年経っているのか。 そもそも付いている TV チューナはアナログ用で使えなくなっているので、あえてこれを使う理由はない。 解像度も 1280×768 と中途半端で狭い。 もう古くて修理もできないだろうし。 ということで廃棄が決定して、別で余っていた17インチの液晶モニタと交換になった。

■ 10月19日Windows

時々使っているサクラエディタでテキストファイルを編集していた。 しかし、どうも正規表現での検索がうまくいかない。 色々やってみてわかったのは、複数行に及ぶとうまくいかないようで。
調べてみると、サクラエディタでは正規表現をライブラリを呼び出して動かしている。 標準で入っているライブラリがかなり弱いものなので、ライブラリを入れ替えれば複数行に対応したものになったりするとかで。 なんだか面倒な話になってきたので、Cygwin の vi(vim) で編集した。 今度時間があるときに、そのライブラリを調べて入れてみることにする。

■ 10月20日Other

Docomo 冬・春モデルが発表された。 その中でやっぱり気になるのが MONO MO-01J で、値段が650円というところ。 さらに防水だし、Android 6.0 だし、久々に欲しくなってきた機種。 12月発売らしいので、少し考えてみようかな。

■ 10月21日WindowsNetwork

ある PC が起動しているか確認したくて。 それが Windows の PC で、DHCP なので IP アドレスが使えない。 なので、nbtstat -a を実行していた。 しかし、タイムアウトの時間が指定できないので、見つからない場合に4秒ぐらい待たされる。 これが nmblookup だと1秒ぐらいなのだけど。
確認したい PC が5台あるので、並行処理をしなければ最大20秒ぐらい待たされて、ちょっと長すぎる。 そのために cygwin で samba をコンパイルするのも嫌な感じだし、そもそもコンパイルが簡単に通らなそうだし。 どうしたものかと考えて、net view コマンドが使えるかやってみた。 使えそうな感じなので、応答から目的の PC があるかどうかを判断させた。 これでしばらく様子をみることに。

■ 10月22日WindowsLinux

昨日の続き。 net view コマンドと同じことを Linux でしたくて。 nmblookup なんかのオプションを眺めていたけど、どうもなさそうな感じ。 web で検索してみると、findsmb コマンドがあって、それで見られると。 さっそく findsmb コマンドを探してみたが、入っていない。 RPM を確認すると samba も samba-client も入っているのだけど。
findsmb は今の samba にも入っているのか、Samba 4.4.6 のソースをダウンロードして、find してみた。

[toyota@BACKUPSV samba-4.4.6]$ find ./ -name "findsmb*" ./docs/manpages/findsmb.1 ./source3/script/findsmb.in ./docs-xml/manpages/findsmb.1.xml

入っている感じもする。 そのまま make してみたが、色々足りなくてあきらめる。 別の rpm に入ってるのかと探してみたけど、見つからないし。 Fedora で findsmb が入っていないというのを Red Hat Bugzilla で見つけたけど、これに関係してるのかな。 Linux 側では一旦保留にして、そのまま nmblookup を使うことに。

■ 10月23日WWW

JavaScript で動的にテーブルを描いていた。 こんな感じ。

var tbody = document.getElementById("listtbody"); var addRow = tbody.insertRow(-1); var addcell0 = addRow.insertCell(-1); var addcell1 = addRow.insertCell(-1);

できるのは td タグなのだけど、th タグにしたい。 style でバリバリ指定すれば同じように見せることもできるけど、ここで何とかできないかと。 調べてみると oouterHTML でできるみたいなので、やってみる。 問題なく th に変更された。 outerHTML を使ったのは初めてかも。

少し気になって W3C の文書なんかを眺めたけど、td と th について使い分けの意味はあるけど、どちらか一方にしかない属性などと言ったものはなく、動作的に同じものだった。 なので、そのまま置き換えることはできる。 今回は outerHTML で th にしたけど、同じだったら後は見た目の違いを CSS なんかで指定して置き換える方が美しいのかも。

■ 10月24日WWW

昨日の続き。 作成した td タグに onclick の動作をさせて関数を呼び出したい。 こんな感じで書いてみたが。

var tbody = document.getElementById("listtbody"); var addRow = tbody.insertRow(-1); var addCell0 = addRow.insertCell(-1); addCell0.onclick = "showDetail(1);"; var addCell1 = addRow.insertCell(-1); addCell1.onclick = "showDetail(2);";

うまく動作しない。 見てみると、onclick が単なる変数として扱われている。 じゃどうしようかと調べてみると、addEventListener が使えるみたいなのでやってみる。

var tbody = document.getElementById("listtbody"); var addRow = tbody.insertRow(-1); var addCell0 = addRow.insertCell(-1); addCell0.addEventListener("click" ,showDetail, false);

は動いたけど、showDetail に引数を渡したい。 ここに function を記述できるようなのだけど、あまり美しくないので、解決方法を2つ調べてやってみた。

var tbody = document.getElementById("listtbody"); var addRow = tbody.insertRow(-1); var addCell0 = addRow.insertCell(-1); addCell0.setAttribute("onclick", "showDetail(1);"); var addCell1 = addRow.insertCell(-1); addCell1.onclick = function(event){showDetail(2);};

両方動くけど、見た目が綺麗なのは setAttribute かな。 これでなんとかなりそう。

■ 10月25日WWW

Javascript を書いていて。 本当はもっと長いけど、こんな感じの配列があった。

dayArray = ['月','火','水','木','金','土'];

これを「月火水木金土」と出力したい。toString を使って。

dayArray.toString();

とすると、「月,火,水,木,金,土」となってしまう。 join() でも同じ。

dayArray.join();

何か楽な方法はないかと少し考えて、こうしてみた。

dayArray.join('');

これで「月火水木金土」と出るように。 コードをたいぶ短くすることができた。

■ 10月26日Windows

レーザープリンターに接続している Windows 7 の PC があって。 そのレーザープリンターでは特殊サイズの紙を使用していて、紙の設定は、「プリントサーバーのプロパティ」から「新しい紙を作成する」という場所で追加している。 これで問題なく動いているのだけど、2か月に1回ぐらい印刷されない現象が起きてしまう。

印刷されない理由を探すと、追加した特殊サイズの紙の設定が消えている。 この状態で PC を再起動すると元に戻ったりする。 頻度もそれほどないので気にしていなかったけど、やっぱり「印刷できない」と来ることが何度もあるので、本腰を入れて調べてみようかと。
web などで調べてわかったのは、

・世の中ではそこそこ起きている現象
・Print Spooler サービスを再起動すると戻る
・根本的な解決法はなさそう

というぐらい。 なんだかすっきりしなく、嫌な感じである。 ここはプログラム側で検出して、問題が発生したら PC を再起動させてみるかなと思ったが、管理者権限が必要だし。 困ったな。

■ 10月27日WWW

HTML で form タグを使った入力画面を書いていて、一時的に入力の値を保存しておきたい状況になった。 PHP で書いてファイルに出力するのは大げさなので、ここは cookie を使おうかと。
いつものように調べてみると、javascript に document.cookie が見つかったが、これはどんな動作なのか少し迷った。 cookie は http ヘッダか meta タグで設定するものという意識があって、HTML の中に document.cookie があった場合は読み込み時に設定されるので、動的に設定されないのじゃないかと。 なので、例えば HTML 中のボタンを押したときに document.cookie を実行しても設定されない気がして。 でも、よく考えたらクライアントのブラウザの中の話なので、いつでも設定できる気もしてきて。
ということで、試しに書いてみた。

<!doctype html> <html> <head> <script> function setCookie(){ document.cookie = "test=aaa;"; } </script> </head> <body> <input type="button" onclick="setCookie();"> </body> </html>

問題なく、cookie が保存された。 cookie の保存に関しては、古い頭を切り替えないといけないみたい。

■ 10月28日WWW

昨日の続きで。 cookie の有効期限を設定していたのだけど、IE11 だとちっとも有効にならない。 これはどういう状況なのか調べてみると、IE では cookie の max-age をサポートしていないらしい。 まさかの状況。
仕方なく expires を入れようと思ったけど、せっかくのタイミングなので web storage を使うことにした。 これで toUTCString や encodeURIComponent みたいなコードは削除できそう。

■ 10月29日WWW

連日のように HTML を書いていて。 要望として、テキストボックスの移動なんかをタブキー以外の右[→]キーでもできるようにして欲しいとあった。 できるかどうかわからないので、簡単に Javascript で書いてみる。

<!doctype html> <html> <head> <script> function move_input1(){ if(event.keyCode == 39){ document.getElementById('input1').focus(); document.getElementById('input1').select(); return false; } return true; } function move_input2(){ if(event.keyCode == 39){ document.getElementById('input2').focus(); document.getElementById('input2').select(); return false; } return true; } </script> </head> <body> address<select id="select1" onkeydown="move_input1();"> <option value="kanagawa">kanagawa</option> <option value="tokyo" >tokyo </option> </select> name <input type="text" id="input1" onkeydown="move_input2();" value="John"> comment<input type="text" id="input2" value="hello"> </body> </html>

動かしてみたけど、ブラウザによって動作が違ってくる。 Firefox だとドロップダウンのところで右キーを押したら、ドロップダウンの次の option になるだけだし。
困った状態なのだけど、jQuery だとうまく動作するとのことなので、javascript でもできないことはないのでしょう。 「仕様です」と逃げたいところだけど、どうしたものかな。

■ 10月30日Other

SD カードを眺めていたら、512GB の容量が当たり前のように売られていて。 値段的には手が出しにくいけど、それも1年もするとだいぶ安くなってくるのでしょう。 その先に 1TB が見えてきて、そうすると SDXC 規格の上限 2TB が怪しくなってくる。 SD → SDHC → SDXC ときて、そろそろ次の規格が必要となってくる時期か。 SD Association を眺めてみたけど、そんな動きはまだなさそうだけど。

■ 10月31日Windows

C# でコードを書いていて。 有効桁3桁にする必要が出てきた。 それも4桁目で四捨五入しないといけない。 例えば。
12345 → 12300
0.4567 → 0.457
何か関数が用意されていないか見てみたけど、これが意外と無いもので。 仕方ないからと、久しぶりに頭を捻りながら Log10 なんかを使って書いてみた。

private double sigDigit(double val, int pdigit) { int vdigit = (int)Math.Log10(val); if (val < 1.0) vdigit--; double tcoef = Math.Pow(10, pdigit - 1 - vdigit); return (Math.Round(val * tcoef) / tcoef); }

何だかもう少し綺麗な方法がありそうな気がするけど、3分考えても思いつかないので、これでいくことに。


21st projects Tatsuyoshi Networks Prompt Works
by Tatsuyoshi since 2003