Computer雑記

(更新:2017/10)Windows
(更新:2014/07)Android
(更新:2012/02)OS最適化-CentOS
(更新:2011/03)OS最適化-Ubuntu
(更新:2006/03)OS最適化-Vine
(作成:2005/01)

Windows

欧文フォントの日本語対応

コーディングにせよ通常作業にせよ、数字の 0 と英大文字 O の区別がハッキリしないフォントは使い勝手が悪い。そこでお勧めなのは「Consolas」フォント。数字の 0 に斜線が付くので大変見分け易い。Visual Studioを導入すれば付いてくるけれど、単体でもDLできるみたい。

ただ、標準では日本語交じりの文章を書くと、2バイト文字とのサイズ差で等幅にならない。。。

どうやら「Font Link機能」を使えば、欧文フォントの未定義領域を指定のフォントで補完できるらしい。

  • Cortana: regedit
    Windows 10なのでCortanaを使うけど、旧環境の場合は スタートファイル名を指定して実行 に読み替えてください。
  • アドレスバー: \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink
  • 左ペイン SystemLink 右クリック 新規複数行文字列値
  • 右ペイン 新しい値 #1: Consolas
    • 同右クリック 修正値のデータ: MSGOTHIC.TTC,MS Gothic
Windowsを再起動。ガッタガタでなくなった。

。。。と、ここでVisual Studioもスッキリするかと思ったんだけど、こちらはうまくいかず。設定を別に持ってるのかしらん。

参考:
欧文フォントを日本語に対応させる [Tipsというかメモ]

Cortanaで快適ランチャ

PC作業中、アプリ起動でいちいちマウス操作したくない。タスクバーは表示が汚れるし、ビジュアルランチャすら煩わしい。一つ一つのショートカットにホットキー登録なんて覚えてられない。
で、Windows 7時代に超絶活用してたのが「Launchy」。

スタートメニューや指定したフォルダ内のショートカットを総ざらいしてコマンド補完してくれるので、以下2ステップのキーボード操作でアプリを起動できて快適だった。

  • ホットキーでLaunchyを起動
  • ショートカットの頭数文字分を記入、補完結果を選択(たとえば ch だけで Chrome に補完される)して Enter

……んが、如何せん更新されてないのと、ウチとこのWindows 10では不安定なのか気付かないうちに落ちてたり。耐え切れなくなって他のを探そうと思ったけれど、そういやCortanaあるじゃんと思い立ち、もう少しCortanaを快適に使えないか模索してみた。

Cortanaでアプリ起動

これは実際に入力すれば解ると思うけれど、数文字程度の入力でアプリ名が補完されるので問題なし。むしろ cal で電卓が表示される分、Cortana補完の方が優秀。

ホットキーは Win + s キー。HHKだと入力し難いケドまあ許せる範囲。

Cortanaで指定フォルダ内のショートカットを検索

残念乍らこれは出来ない。ただ スタート 内はちゃんと検索してくれるので、インストーラ無しアプリなんかは1つのフォルダにショートカットをまとめれば済む話。
となれば、ショートカット集を分散させても問題なくすれば良いわけで。

ウチとこではこんな管理方法を取っている。

  • インストーラ有りアプリ: スタートメニューは必ず作成。どうせスタートメニューなんて殆ど見ないし……
  • インストーラ無しアプリ: C:\common\share\ 内にフォルダ分けして実体を置き、 C:\common\bin\ 内にショートカットを作成して使う

この C:\common\bin\ をそっくりそのまま C:\Users\(ユーザ名)\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\ にコピーすればCortanaが面倒見てくれる、という寸法。
そこで C:\common\bin\ 内にコピーするバッチを作り、ショートカット作成時に手動実行して同期取る。

@echo off

rem #### C:\common\bin\00_syncShortcut.bat

rem ショートカット集の同期バッチ ( riyo の部分は任意でユーザ名に書き換える )
robocopy c:\common\bin "C:\Users\riyo\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\bin" /XF "%0" /mir

ごくごく単純な robocopy/XF "%0" でバッチ自体を除外してる程度。
これをタスクスケジューラなんかで定期的に回してやっても良いけれど、そんなに頻繁にアプリを入れ替えるわけでも無いので、使う時に手動実行で十分ではないかな。

そうすると、まあつまりこんな感じにCortanaが十分快適なランチャとして使える。

Linux

コマンドTips

ジョブを落とさずログアウト

リストア作業なんかで割とよくある。

$ nohup (バックグラウンド実行コマンド) &

半角スペースを含むファイル郡の処理

例えば lame.wav.mp3 に変換する。ダブルクォートで変数を囲むのがポイント。

$ ls *.wav | while read name; do lame -h "$name"; done

コマンド制限ユーザの作成

Webページ専用ユーザとか、ログインして色々する必要の無いユーザは極力ログイン後に制限をしたいものである。何も出来ないってのはアレだが、せめて余計なコマンドは許可したくないもので。
取り敢えずデフォルトのシェルコマンドのみにしちゃう方法。まま安全じゃないかな。

取り敢えずユーザを作る。

# adduser --home /home/hoge --gid 1000 hoge
...

ユーザを作ったら制限付きシェルを作成。つっても既存のシェルのシンボリックリンクだけど。

# ln -s /bin/bash /bin/rbash

次にシェルのエントリを /etc/shells に追加。

...
/bin/rbash

頭に r の付くシェルを起動すると制限付きになるらしい。この制限は主にシェルスクリプトに対するもので、結構制限厳しそうねぇ。。。さておき。

作成したユーザのデフォルトシェルを rbash に設定する。

# su - hoge
$ chsh
Password:
Changing the login shell for hoge
Enter the new value, or press return for the default
                Login Shell [/bin/bash]: /bin/rbash

上述の通り、これはあくまでシェルスクリプトに対する制限であり、他の外部プログラムはパスが通っていれば動かせて仕舞うわけで。当前のように chsh でシェル変更されたら何の意味もないわけだ。
なので、実行可能パスも制限し、その設定ファイルも変更不可能にしてやる必要がある。

$ mkdir ~/bin
# chown root .bash_profile
# chgrp root .bash_profile
# chmod 755 .bash_profile
## ~/.bash_profile

export PATH=/home/bin

実行しても構わないコマンドについては、 ~/bin/ 以下にシンボリックリンクを作成してやれば良い。

ログイン不能ユーザの作成

ついでに知ったログイン不能ユーザの作成について。メール専用ユーザとか、ログインする必要の無いユーザ用やね。正直、今の処ウチには必要ないけれど。。。

ユーザを作る時に、 /bin/false を設定してやれば良い。

 # adduser --home /home/hoge --gid 1000 --shell /bin/false hoge
 ...

ユーザを作った後だったら以下のコマンドでデフォルトシェルを /bin/false に変更。これだけ。

 # usermod -s /bin/false hoge

色々なサービス起動前確認

まあトラブルってーかトラブる前確認よね。設定後これだけはやっとけーってコマンド集。
あ、勿論設定時には設定ファイルのバックアップも怠らずにね。

  • Apache
# /etc/init.d/httpd configtest
  • BIND
# named-checkconfig /etc/named.conf
# named-checkzone hyakki.local /var/named/hyakki.local.zone
  • logrotate
# logrotate -d /etc/logrotate.conf

Ubuntuで再生中の音源を抽出

PulseAudio + ALSAでのやり方。

$ gst-launch-0.10 pulsesrc device=alsa_output.pci-0000_00_1b.0.analog-stereo.monitor ! queue ! audioconvert ! wavenc ! filesink location=Sound/test.wav

device= 部分は、こんな感じで取得できる。

$ pactl list | grep monitor Monitor Source: alsa_output.pci-0000_00_1b.0.analog-stereo.monitor
Name: alsa_output.pci-0000_00_1b.0.analog-stereo.monitor
device.class = "monitor"

PostScriptファイルで複数ページを1ページ分に割り付ける

確認用の印刷とかで全ページ1枚ずつ印刷するのが勿体ない場合、1ページに収まるだけ 印刷したい場合に有効。

$ psnup -n 4 hoge.ps-fuga.ps

論文とかで2ページ分を1枚に、て場合、たまーに空白が広すぎて無恰好になったりする。そんな時は以下のようにして変換してやるとうまくいく。

$ pstops '2:0L@.9(19.5cm,2cm)+1L@.9(19.5cm,14cm)' hoge.ps-fuga.ps

逆順PostScriptファイルの修正

印刷の関係で、逆順印刷した方があとで紙を並べ替える手間が省ける場合がある。そのためか、その状態のままWebなんかに置いてある場合もまま見受けられる。これをPDF文書にして、PC上で閲覧する人には迷惑なことこの上ない。
てなわけで、以下のコマンドによりPSファイルを正順に直すことができる。

$ pstops 1:-0 < hoge.ps-fuga.ps

hoge.psが逆順PSファイル、fuga.psが正順に修正されたPSファイル。

OS最適化

Ubuntu

(11.10) 「GNOME Classic」ログインが出来なくなった

標準ではインストールされなくなったので、拙サイト「Gnome-Shell」を参考に色々インストールする。

Gnome-Shell
(作成:2011/12) Ubuntu 11.10に移行してからというもの、我が家のメインPCの動作がめっきり重くなった。Linuxの醍...
(11.10) Windowsリモートデスクトップアプリが無くなった

rsclientが消えた。。。ので「Remmina Remote Desktop Client」導入しませう。こっちのが高機能でサクサク。

# apt-get install remmina
(11.04) 日本語フォルダの名称変更

何だよ日本語表記フォルダて。コマンドラインで打ち難いんだよ。

$ LANG=C xdg-user-dirs-gtk-update
(11.04) 画像ビューワの変更

標準の画像ビューワ Eye は結構重いので、GPicViewをインストールしてこちらを使うようにする。

# apt-get install gpicview

標準のビューワとして利用するには、何らかの画像ファイルを右クリック プロパティ開き方画像ビューワ を選択。同じ名前のが複数ある場合もあるので、選択して動作確認してみること。あと「ファイルを作成する権限がありません」的なエラーが起きた場合は、 .local/share/applications/ ディレクトリに権限が無いかも。 chown でオーナーを変更してやればOK。

(11.04) 画像ビューワその他

本やなんかを一頁ずつスキャニングしたものを読みたいときとか、2画像を見開きで読みたい時とか云々。Ubuntu最適化ってわけではないけれど、Linuxなら「Comix」てのが結構出来良い。Ubuntuならパッケージもあり。

# apt-get install comix
(11.04) 不要サービスの停止

システムの設定自動起動するアプリケーション より。用途次第だけれど、以下は停止しちゃってもそんなに影響ないんじゃないかな。

  • Bluetoothマネージャー
  • Evolutionアラーム通知
  • Ubuntu One
  • Zeitgeist Datahub
  • パーソナルファイル共有
  • ユーザ・フォルダの更新
  • リモート・デスクトップ
  • 印刷キューのアプレット
(11.04) 動画とか

何かアップデートしたら見れなくなった……面倒くさいやつだな……。
というわけで「Medibuntuのレポジトリを利用するには」を参考にするのが良かろう。

# wget http://www.medibuntu.org/sources.list.d/`lsb_release -cs`.list --output-document=/etc/apt/sources.list.d/medibuntu.list
# apt-get -q update
# sudo apt-get --yes -q --allow-unauthenticated install medibuntu-keyring
# sudo apt-get -q update

標準の動画プレイヤーでDVDを見るためにはライブラリとコーデックが必要。

# apt-get install libdvdcss2 w32codecs
7-zipファイルをUbuntuで解凍する

p7zip-full というパッケージがあるらしい。

# apt-get install p7zip-full

解凍方法はこんな感じで。

# 7z x (7-zip圧縮ファイル名)

CentOS

Python 2.6導入

普段Ubuntuを使っているとPythonの旧いのが許せなくなってくる…… telnetlib でTIMEOUT使えないとかありえないっしょ。で、せめて2.6にバージョンアップをしたいと思うなら、EPEL packageを使うことになる。

# yum install python26 --enablerepo=epel

alternatives などで管理していない限り、実行コマンドは python26 となるのに注意。
外部スクリプトで別途特殊なパッケージを導入している場合、このコマンドでも一度インストール処理をしてやれば良い。例えばMakoテンプレートエンジンの場合(EasyInstallを利用)。

# cd /usr/local/src/
# python26 ez_setup.py
# cd Mako-0.6.2
# python26 ./setup.py install
不要サービスの停止

ウチの場合CentOSはサーバ用途としてのインストールばかりなので、それ前提で。つまり init 3 、CUI環境でのお話。
個人用途のサーバの場合はこんな感じで不要サービスを停止。

for name in auditd autofs avahi-daemon bluetooth firstboot gpm haldaemon hidd ip6tables iptables irqbalance iscsi iscsid kudzu mcstrans mdmonitor messagebus microcode_ctl nfslock pcscd restorecond rpcgssd rpcidmapd sendmail smartd xfs yum-updatesd; do
    chkconfig ${name} off
done

サーバ用途の場合は構成などの問題で少し考えないといけない。けれどまあ、大体こんな感じで綺麗にしてから考える。

for name in auditd autofs avahi-daemon bluetooth firstboot gpm haldaemon hidd ip6tables iptables iscsi iscsid kudzu mcstrans mdmonitor messagebus microcode_ctl nfslock pcscd readahead_early restorecond rpcgssd rpcidmapd smartd xfs yum-updatesd; do
    chkconfig ${name} off
done

各サービスの役割とかはググった方が良いかも。敢えて間違いを恐れず紹介するなら、大体こんなようなサービスがデフォルトで起動される。結構要らないものがある。

カテゴリ サービス名 概要
リソース関連 acpid 電源管理。昔はapmdなんてのもあったけれど、最近のCentOSでは非標準なのかな?
プロセス処理関連 anacron crondの補助。サーバ停止時に実行出来なかったコマンドを起動時に補完して実行してくれる。
プロセス処理関連 atd 時間指定でコマンドを実行してくれる。crondと違って単発実行向け。
セキュリティ関連 auditd システムコールを監査して特定の命令を遮断したりsyslogに渡してくれる。
雑多 autofs ファイルシステムを利用状況に応じて動的にマウント/アンマウントしてくれる。
デバイス関連 avahi-daemon ローカルネットワーク上の機器を自動検出してくれる。Macなんかで採用されているらしい。
デバイス関連 bluetooth まあ名前の通り。
リソース関連 cpuspeed CPUクロックを動的に変更してくれる。Speedstepなどの対応機種でないと駄目。
プロセス処理関連 crond 時間指定でコマンド実行してくれる。atdと違って定期実行向け。
雑多 firstboot キックスタート・インストール用エージェント。
デバイス関連 gtd コンソールでマウス使わせてくれる。
デバイス関連 haldaemon D-BUS方式で各種デバイス情報を収集してくれる。
デバイス関連 hidd Bluetooth使ってマウスやキーボード使わせてくれる。
セキュリティ関連 ip6tables 簡単に言えばファイアウォールIPv6版。
セキュリティ関連 iptables 簡単に言えばファイアウォールIPv4版。
リソース関連 irqbalance マルチコアCPUでの処理をバランシングしてくれる。
デバイス関連 iscsi iSCSIストレージ使えるようにしてくれる。
デバイス関連 iscsid iSCSIストレージ使えるようにしてくれる。
デバイス関連 kudzu 追加/撤去デバイスを見付けて使えるようにしてくれる。
監視関連 lvm2-monitor LVMボリュームの障害監視をしてくれる。
セキュリティ関連 mcstrans SELinuxのセキュリティコンテキストを読み易くしてくれる。
監視関連 mdmonitor ソフトウェアRAIDの障害監視をしてくれる。
デバイス関連 messagebus D-BUS方式でデバイス間メッセージを送受信してくれる。
リソース関連 microcode_ctl Intel IA32マイクロコードを更新してくれる。
雑多 netfs NFSやSambaマウトをしてくれる。
セキュリティ関連 network ネットワークを使えるようにしてくれる。
雑多 nfslock NFSサーバでロック機能を提供してくれる。
デバイス関連 pcscd スマートカードを使わせてくれる。
RPC関連 portmap リモートホスト間の接続制御をしてくれる。色んなサービスで使われている。
デバイス関連 rawdevices データ処理をブロックデバイスとして扱わせてくれる。
プロセス処理関連 readahead_early 起動時に各種プログラムを先読みして起動を早くしてくれる。
セキュリティ関連 restorecond SELinuxと連携してファイル操作の監視をしてくれる。
雑多 rpcgssd NFSで使われるRPC処理をしてくれる。
雑多 rpcidmapd NFSで使われるRPC処理をしてくれる。
サービス関連 sendmail メール送受信をしてくれる。
監視関連 smartd HDD S.M.A.R.T機能でヘルスチェックしてくれる。
サービス関連 sshd セキュアなリモートアクセスをさせてくれる。
セキュリティ関連 syslog システム関連ログを記録してくれる。
サービス関連 xfs X Window Systemのフォントサーバ。
サービス関連 yum-updatesd yumを自動アップデートしてくれる。

Vine

apt-get修正

最近のVineでは apt-get が使えて便利になった。 現状の設定のまま使うのも良いが、回線を無駄に食い潰さないように距離の近い日本のRINGサーバ(www.ring.gr.jp等)を使用するのが良い。この辺は適宜 /etc/apt/sources.list を修正する。

導入済パッケージのアップデートは基本的に以下のコマンドで行なう。

# apt-get update
...
# apt-get upgrade
...

導入済パッケージの参照方法は rpm を用いて次のように行なう。

  • インストール済パッケージの検索
$ rpm -qa | grep (パッケージ名)
  • パッケージ情報の参照
$ rpm -qi (パッケージ名)
  • インストールされたファイル一覧
$ rpm -ql (パッケージ名)
パッケージのリビルド
リビルド環境の構築

パッケージによっては、SSLに対応させてセキュアな環境を作りたい時なんかに、一旦ソースパッケージからリビルドせにゃいかんのもある。そのための環境を作成する。
まずはビルド環境の構築。

# apt-get install build-essential
  • 追加パッケージ
    autoconf automake binutils build-essential gcc gcc-c++ glibc-devel kernel-headers libstdc++3-devel libtool libtool-libs m4 patch rpm-build

リビルドは基本的に一般ユーザの権限で作成する。誰か適当な管理ユーザを決めて、以下のコマンドでパッケージの再構築場所を生成する。

$ mkrpmdir .
パッケージの簡単なリビルド方法

src.rpm は以下のコマンドオプションで取得できる。

$ apt-get source (src.rpmパッケージ名)

これでカレントディレクトリ上に src.rpm がDLされる。 続いて以下のコマンドで一時的に展開する。

$ rpm -Uvh (src.rpmファイル)

spec だのソースファイルに必要な修正を施したらパッケージをリビルド。

$ rpm -bb rpm/SPECS/(パッケージ名).spec

なお、機能の追加をした場合なんかはエラーが出るかも知れない。例えば --with-ssl 等のフラグを加筆した場合なんかは openssl-dev が必要になってくる。自分のやりたい事を理解して、事前に何が必要かの見当は付けておかなきゃいかん。
上手くいけば、大抵は rpm/RPMS/i386/ 以下にRPMパッケージが出来上がる。改めてこれをインストールしてやれば良い。

# rpm -ivh rpm/RPMS/i386/(パッケージ名).rpm
起動サービス変更

以下のコマンドにて現在自動起動するサービスをチェック

# chkconfig --list

不要なサービスを以下のコマンドで停止。サーバ用途ならば gpm kudzu netfs 等のサービスは不要だろう。

# chkconfig --del (サービス名)

Android

2段階認証とHT-03A

諸事情でdocomoが最初に発売したHT-03Aを復活することになり、Googleアカウントログインしようとしたら出来なかった。アカウント/パスワードが間違っている、と表示されて猿のように何度もログインを試みてしまったけれど、何の事は無い2段階認証が悪さをしていたという話。
古いandroid機がgoogleにログイン出来ない!: がらくた研究室

どうやらandroid 2.3以前の機種では2段階認証が使えないらしい。時代の流れを感じてしまうね……さておき。この哀しい状況を打破するには、つまり2段階認証ではない方法でログインできるようにしてやる作業が必要。幸いにもGoogleアカウント設定にて可能なので、その方法について備忘録として遺しておく。

上記手順で16文字のランダム文字列が表示されるので、これをパスワードとして用いればOK。