sudo userdel
コマンドを使う。
takatoh@apostrophe $ sudo userdel -r sombrero [sudo] password for takatoh: userdel: sombrero のメールスプール (/var/mail/sombrero) がありません
-r
はホームディレクトリとメールスプールも削除するオプション。
takatoh's blog – Learning programming languages.
sudo userdel
コマンドを使う。
takatoh@apostrophe $ sudo userdel -r sombrero [sudo] password for takatoh: userdel: sombrero のメールスプール (/var/mail/sombrero) がありません
-r
はホームディレクトリとメールスプールも削除するオプション。
PNG は透過色をサポートしている。で、タイトルに書いたように背景が透過色(というか透明)な画像から ImageMagic の convert
コマンドで JPEG のサムネイルを作ると、もともと透明だった背景が黒くなってしまう。
これまでサムネイルだからいいか、と放置してたんだけど、↓このページで解決法を見つけた。
cf. 透明度を含む画像を JPEG に変換する時の背景色 – [awm-Tech]
これまではこうやってサムネイルを作ってた。
takatoh@apostrophe $ convert -thumbnail 200x200 src.png thumbnail.jpg
だけどこれだと背景が黒くなってしまう。
そこでこうする。
takatoh@apostrophe $ convert -thumbnail 200x200 -flatten src.png thumbnail2.jpg
これだと背景が白くなる。-flatten
オプションの意味が、調べてもいまいちよくわからなかったんだけど、元画像の後ろに白いレイヤーを重ねているみたいだ。-background
オプションも使えて、例えば次のようにすると背景が赤くなる。
takatoh@apostrophe $ convert -thumbnail 200x200 -flatten -background red src.png thumbnail3.jpg
-background
のデフォルトが白みたい。
ともかく、これからは -flatten
をつけるようにしよう。
手元に色のおかしい bmp 画像があった。どうも R,G,B が入れ替わっているらしい。
ImageMagick の convert
コマンドで何とかできないかとググってみたら、↓このページを見つけた。
cf. ImageMagickを使ったグレイスケール、反転、RGB入れ替えについて – Qiita
このページによると、いったん R,G,B それぞれの画像に分解してから、順番を入れ替えて合成すればいいようだ。詳しくは書かないけど、中間ファイルを作らなきゃいけないし、convert
コマンドのオプション指定も難しい(詳しくは理解してない)。それでも試してみると、どうやら R と B を入れ替えると正常らしい色に変換できた。
とはいえ、画像ファイルは千個以上もあっていちいち手でやってられないので、スクリプト(バッチファイル)を書いた。
一つは、色のおかしい bmp ファイルを正常な png ファイルに変換するスクリプト。
@echo off convert %1 -fX R img_R.png convert %1 -fX G img_G.png convert %1 -fX B img_B.png convert ( img_B.png img_G.png img_R.png ) -set clorspace RGB -combine -set colorspace sRGB img_BGR.png convert -flip img_BGR.png %2 del img_*.png
もう一つは、上記のスクリプトをカレントディレクトリの全 bmp ファイルに適用するスクリプト。
for %%I in (*.bmp) do convertBGR %%I %%~nI.png
これで全部正常になった。
以前作った Sinatra アプリ(フォトビューワー)をデーモンとして動かそうとしてハマった記録。
Sinatra アプリをデーモン化したことは前にもやったことがあるので、基本的にはその時のエントリを見ながらやったんだけど、一つだけ、ハマりどころがあった。それはアプリが Ruby 2.0 以降(だっけ?)にサポートしているキーワード引数を使って書いてあるのに対して、システムにインストールされているのは Ruby 1.9.3 だってこと。ユーザーは rvm でインストールした 2.3.0 を使っているのでテスト中は動くけど、いざ本番になってみるとシステムの 1.9.3 が使われるので動かない。
どうにかしてデーモンにも rvm でインストールした 2.3.0 を使わせたい。
探し方が悪いのか、ググっても情報が出てこない。結局解決策を見つけたのは、自分のエントリだった。
つまり、起動スクリプトで GEM_PATH と GEM_HOME に rvm のパスを設定して export すればいいようだ。書いた起動スクリプトがこれ:
#!/bin/sh PATH=/home/potov/.rvm/rubies/ruby-2.3.0/bin:/home/potov/.rvm/gems/ruby-2.3.0/bin:/sbin:/bin:/usr/bin GEM_PATH=/home/potov/.rvm/gems/ruby-2.3.0 GEM_HOME=/home/potov/.rvm/gems/ruby-2.3.0 export PATH export GEM_PATH export GEM_HOME POTOV_ROOT=/home/potov/potov case "$1" in start) cd ${POTOV_ROOT} unicorn -c unicorn.conf -D ;; stop) PID=`cat ${POTOV_ROOT}/unicorn.pid` kill -QUIT ${PID} ;; *) echo "Usage: potov {start|stop}" exit 1 ;; esac exit 0
当然 PATH も rvm の Ruby のパスを設定している。
ともあれ、これで無事起動するようになった。
HP の EliteBook Folio G1 ってやつ。1週間ほど前の夜中、薄くて軽くて頑丈、っていう惹句についうっかりとポチッたもの。確かに12.5型にしては軽い。
OS は Ubuntu じゃなくてプリインストールの Windows 10 Home をそのまま使うことにした。MS-Office を使いたいからそのほうがいいんだよね。
朝からセットアップを始めて、一通り終わったところ。rubygems がエラーをはいてちょっとハマったけど、他は特に問題なし。ホスト名は sofa にした。
以下、インストールしたアプリケーション。
とりあえずこんなところか。rubygems の問題の解決方法はエントリーを分けて書く。
次のようにすると、ディレクトリをまるごとコピーできる。
$ tar cf - . | ( cd /path/to/destdir; tar xvpf - )
今まで Ubuntu マシンの nightschool は無線で接続していた。けれどうちの環境(無線LANルータは1階、マシンは2階にある)のせいか、接続が不安定で速度も遅かった。2階にイーサネットのジャックがあるので有線でつないでみたものの、どういうわけかリンクが確立しない(リンクランプが点灯しない、Ubuntu で Ethernet接続が有効にならない)という状況だった。
マシンを買って以来約2年近くもこの状態だったのだけど、ようやく解決するために重い腰を上げた次第。
このページが参考になった。
cf. UbuntuでNICを認識しない場合の対応 – RainbowDevilsLand
まずは現在の状況の確認から。ifconfig コマンドで NIC の状況を見てみる。
takatoh@nightschool $ ifconfig eth0 Link encap:イーサネット ハードウェアアドレス f8:bc:12:78:84:ab UP BROADCAST MULTICAST MTU:1500 メトリック:1 RXパケット:0 エラー:0 損失:0 オーバラン:0 フレーム:0 TXパケット:0 エラー:0 損失:0 オーバラン:0 キャリア:0 衝突(Collisions):0 TXキュー長:1000 RXバイト:0 (0.0 B) TXバイト:0 (0.0 B) lo Link encap:ローカルループバック inetアドレス:127.0.0.1 マスク:255.0.0.0 inet6アドレス: ::1/128 範囲:ホスト UP LOOPBACK RUNNING MTU:65536 メトリック:1 RXパケット:110255 エラー:0 損失:0 オーバラン:0 フレーム:0 TXパケット:110255 エラー:0 損失:0 オーバラン:0 キャリア:0 衝突(Collisions):0 TXキュー長:0 RXバイト:629344324 (629.3 MB) TXバイト:629344324 (629.3 MB) wlan0 Link encap:イーサネット ハードウェアアドレス 54:35:30:bc:ed:f9 inetアドレス:192.168.1.5 ブロードキャスト:192.168.1.255 マスク:255.255.255.0 inet6アドレス: fe80::5635:30ff:febc:edf9/64 範囲:リンク inet6アドレス: 2408:212:ac6:e200:5635:30ff:febc:edf9/64 範囲:グローバル inet6アドレス: 2408:212:ac6:e200:75ec:809a:c077:3ea5/64 範囲:グローバル UP BROADCAST RUNNING MULTICAST MTU:1500 メトリック:1 RXパケット:46490 エラー:0 損失:0 オーバラン:0 フレーム:0 TXパケット:49384 エラー:0 損失:0 オーバラン:0 キャリア:0 衝突(Collisions):0 TXキュー長:1000 RXバイト:6255035 (6.2 MB) TXバイト:18310646 (18.3 MB)
イーサネットの NIC (eth0)自体は認識しているようだけど、アドレスが割り振られていない。
参考にしたページに書かれているのは、NIC 自体が認識されていない場合の対処法だけど、ダメ元で同じようにドライバをインストールしてみることにした。そこで、NIC のチップの種類を調べる。
takatoh@nightschool $ lspci | grep 'Ethernet\|Network' 02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 0c) 03:00.0 Network controller: Qualcomm Atheros QCA9565 / AR9565 Wireless Network Adapter (rev 01)
Realtek の RTL8111/8168/8411 っていうチップのようだ。
Realtek のダウンロードセンターから、RTL8111 を検索してダウンロード。0004-r8168-8.041.01.tar.bz2 というファイルだ。
これを展開する。
takatoh@nightschool $ tar xjvf 0004-r8168-8.041.01.tar.bz2
中に含まれている README ファイルを読むと、autorun.sh を実行すればいいようだ。
takatoh@nightschool $ cd r8168-8.041.01 takatoh@nightschool $ sudo ./autorun.sh Check old driver and unload it. rmmod r8169 Build the module and install Can't read private key Backup r8169.ko rename r8169.ko to r8169.bak DEPMOD 3.13.0-79-generic load module r8168 Updating initramfs. Please wait. update-initramfs: Generating /boot/initrd.img-3.13.0-79-generic Completed.
Completed と出ている。うまくいったか?
ふたたび ifconfig コマンドで確認。
takatoh@nightschool $ ifconfig eth0 Link encap:イーサネット ハードウェアアドレス f8:bc:12:78:84:ab inetアドレス:192.168.1.20 ブロードキャスト:192.168.1.255 マスク:255.255.255.0 inet6アドレス: 2408:212:ac6:e200:fabc:12ff:fe78:84ab/64 範囲:グローバル inet6アドレス: fe80::fabc:12ff:fe78:84ab/64 範囲:リンク inet6アドレス: 2408:212:ac6:e200:486:4ce3:78a7:b216/64 範囲:グローバル UP BROADCAST RUNNING MULTICAST MTU:1500 メトリック:1 RXパケット:13 エラー:0 損失:0 オーバラン:0 フレーム:0 TXパケット:25 エラー:0 損失:0 オーバラン:0 キャリア:0 衝突(Collisions):0 TXキュー長:1000 RXバイト:1993 (1.9 KB) TXバイト:4054 (4.0 KB) 割り込み:45 ベースアドレス:0x4000 lo Link encap:ローカルループバック inetアドレス:127.0.0.1 マスク:255.0.0.0 inet6アドレス: ::1/128 範囲:ホスト UP LOOPBACK RUNNING MTU:65536 メトリック:1 RXパケット:110581 エラー:0 損失:0 オーバラン:0 フレーム:0 TXパケット:110581 エラー:0 損失:0 オーバラン:0 キャリア:0 衝突(Collisions):0 TXキュー長:0 RXバイト:629379076 (629.3 MB) TXバイト:629379076 (629.3 MB) wlan0 Link encap:イーサネット ハードウェアアドレス 54:35:30:bc:ed:f9 inetアドレス:192.168.1.5 ブロードキャスト:192.168.1.255 マスク:255.255.255.0 inet6アドレス: fe80::5635:30ff:febc:edf9/64 範囲:リンク inet6アドレス: 2408:212:ac6:e200:5635:30ff:febc:edf9/64 範囲:グローバル inet6アドレス: 2408:212:ac6:e200:75ec:809a:c077:3ea5/64 範囲:グローバル UP BROADCAST RUNNING MULTICAST MTU:1500 メトリック:1 RXパケット:58509 エラー:0 損失:0 オーバラン:0 フレーム:0 TXパケット:60687 エラー:0 損失:0 オーバラン:0 キャリア:0 衝突(Collisions):0 TXキュー長:1000 RXバイト:7434710 (7.4 MB) TXバイト:19433795 (19.4 MB)
おお、eth0 にもアドレスが割り振られている。画面右上には Ethernet接続のマークも出ている。どうやらうまくいったようだ。
イーサネットの不具合は、ドライバをインストールしたら治った。
接続状況はこうなった。
なぜかは知らないけど、このとおり。
^o^ > which gfortran C:/Strawberry/c/bin/gfortran.EXE
せっかくなので、ちょっと使ってみることにした。
program hello print *, 'Hello, world!' end program hello
^o^ > gfortran -o hello hello.f90 ^o^ > hello Hello, world!
昔、大学で習った FORTRAN77 とはずいぶん趣が違うな。
Nginx の設定ファイルの server セクションで次のように設定する。
# User dir (PHP) location ~ ^/~([^/]+?)/(.+\.php)$ { alias /home/$1/public_html/$2; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $fastcgi_script_name; include fastcgi_params; } # User dir (static) location ~ ^/~(.+?)(/.*)?$ { alias /home/$1/public_html$2; index index.html index.htm; autoindex on; } # For PHP location ~ \.php$ { root /var/www/html; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
キモは User dir (PHP) のセクションを For PHP のセクションよりも前に書くこと。そうしないとブラウザで PHP のファイルにアクセスしても Not found になってしまう。なぜなら location ~ \.php$
に先にマッチしてしまってファイルが見つからないから(たぶん)。
Windows マシン(valarie)を Windows7 から Windows10 にアップグレードした。昨日からダウンロードを始めて、今朝になってやっと終わった。2GB 超えのダウンロードは不安定なうちの無線LANにはつらいよ。
ダウンロードを別にすれば、アップグレード自体はすんなりといった。……ように見えたけど、なんと Office が起動できない。正確に言うと、起動するとあっという間にウィンドウが閉じてしまう。
スタートメニュー→設定→アプリと機能からインストールされている Office 2013を選ぶと、利用不可となっている。こりゃ再インストールしないとダメかなと思いつつ修復をやってみたら、うまく動作するようになった。利用不可のままなのが気になるけど。
そのほかはまだあまり試してないけど、インストールしてあるゲームのうち少なくともいくつかはダメな模様。Ruby や Python は大丈夫そう。ゲームは VirtualBox で Windows7 を使うか。