2016年5月27日金曜日

Zip の憂鬱。(2)そして、解決した。Xarchiver

【朗報】Xarchiver では、CP932なzipも自然に扱える

追記:必ずしもうまくいくとは限りませんね。申し訳ないです。結局、Zipはコマンドラインで操作することにしました。マウスでできるように右クリックメニューに組み込みました。

以前、自分用にパッチをあててシフトJIS対策してみたXarchiverですが、またあててみるかなとソースを落としてきて、まずmake(makeしてからdebainパッケージを作り、dpkgで導入)しました。(この段階ではソースはオリジナルのまま。自分のcp932パッチをあてる前です)。

あれ、問題ない。\(^o^)/ 今makeしたのを削除して(dpkg -r)

パッケージシステムから再導入。今度も問題ない。

これで多くの人がzipの憂鬱から開放されるかも



新規にターミナル(端末)を開きます。ubuntu系は以下を同時押し。CTRL+ALT+T
sudo apt install xarchiver
もしくは、
sudo apt-get install  xarchiver

その他方法、パッケージマネジャーsynapticなどで、xarchiver を選択して導入してみてください。

Xarchiverが好みでないのでメインのアーカイバーにはしたくないという場合も、zipに対する関連付けリストにいれておけば捗るかもしれません。めったにないんですけどね。

Zip文字化けを確認するためのテストファイル

たとえば、「ブラックジャックによろしく」http://www.hosino-kanata.com/kakusi/bjy/bjy.zip 。300MB。手持ちに文字化けするZipファイルがあればそれで確認してみればよいです。

Xarchiverとそれ以外(標準のファイルローラー、書庫マネージャとか言われる類のもの)で比較してみるとよいでしょう。

CPANでPerlモジュールを導入する。半自動=手作業での場合。

CPANコマンドでPerlモジュールを導入という場面は、年に一度もないので忘れちゃいます。年々頻度が減ってきている。perl でmakeのほうがわかりやすくていいのかな、自分の場合。パッケージ候補以外はできるだけいれないので。


それでもまれに必要に迫られることがあります。という場面。


CPANサイトで試してみようというモジュールを見つけました。
  1. AAA.tar.gz などの形式であろうがなかろうがソースをダウンロードします。右側。
  2. それを解凍・展開します。 
  3. 解凍ディレクトリに cdします。


新規にターミナル(端末)を開きます。ubuntu系は以下を同時押し。CTRL+ALT+T


#rootになるか。sudo付きでコマンドを発行します。
# perl Makefile.PL
# make
# make test
# make instal

今試したモジュールは、できあがるコマンドと衝突するperl コマンドが既にある(/usr/bin)ので、make install は発行していません。気がついてよかった。manも上書きされそうだし、パッケージ管理でまためんどくさそう。

2016年5月23日月曜日

日本語文字列ファイルを日本人としてソートする sort order

実験中です。

日本語文字列ファイルを日本人に違和感のない形でソートするために週末潰しました。
工程は、漢数字、ひらがな、カタカナのオーダーを恣意的にいじってみた段階です。準備作業として数値参照と実体のそれとの相互の変換スクリプトをPerlで作ったりした時間が90%(16進表記を変換したことがなかったので、そこから調べた。熟練ユーザーなら10分位でできちゃうと思います)。

表意文字を使っている僕たちですが、EUCやShiftJISの順番では使いにくい人も少なくないと思います。別に、ユニコードなどが表意文字に敬意を払ってないのはケシカランというつもりはないです。


[かなチーム]>〇 >一>二>三>四>五>六>七>八>九>[漢字その他チーム]

と評価されるようになっています。やりながら後追いで文献調べてこの手順でいいはずだなんて検査をしていました。一日触ってみて予想外に快適なので、表意文字のうち、漢数字以外の上、下などを変えます。ファイル名に使う文字で一般的に、位置関係を示す文字でやりすぎない程度にするには何が適切かを考えています。


$ export LANG="ja_JP.UTF-8" ;ls 試作段階での並び、表意文字の通り(改訂ja_JP)
一  二  三  四  五  六  七  八  九  十

$ export LANG="ja_JA.UTF-8" ;ls デフォルトはShiftJIS/EUC-JPと同じ。素敵な並び
一  九  五  三  四  七  十  二  八  六 

※ ja_JAロケール(内容はデフォルトja_JPと同じ)は作業の便宜上コンパイルしたものです。そんなもんありません。末尾に生成に用いたコマンド記してます。

WindowsやMAC OS Xを利用していても困惑する、漢数字まじりの問題はたとえばこんなかんじでしょうか。一般的な回避方法は知っていても気持ち悪いのは致し方ありませんね。
※作品世界では算用数字の9課ですが、たとえばこんなかんじ。 一太郎、三香子、二郎でもいいし、二頭身、九頭身とか、でもいいけれど。会社の部局などで、漢字が正規表記という場合もあります。アラビア数字でいいじゃん?! 自社ならいざ知らず、他社あて文書でそれをやってはまずいですね。たぶん。
$ export LANG="ja_JA.UTF-8" ;ls
公安一課  公安九課  公安五課  公安三課  公安四課  公安七課  公安二課  公安八課  公安六課

$ export LANG="ja_JP.UTF-8" ;ls
公安一課  公安二課  公安三課  公安四課  公安五課  公安六課  公安七課  公安八課  公安九課

初期変更

並び=ソートを画像で示すような状態にしました。まだテストなのですが、長年の鬱憤とおさらばできるかも。コマンドラインでも同等です。コマンドラインのsort Programでも同じです。

nemo


リストは、Wikipediaの2010年代アニメ一覧ページから「ががー」と生成。2015年まで。
このソートを見て不自然さを感じない人が多ければ嬉しいです。当たり前だと思うのが普通の気もしないではないですが。どうなんでしょう。エンティティは処理していませんのでガルパンがあれか。

ちなみに、caja でも同じです。nautilusでも同じでしょう。

作業メモ

http://archive.linux.or.jp/JF/JFdocs/Japanese-Locale-Policy.txt 1999年12月15日 1.03
というのがありますが、現在の世界は実質UTF-8なディストリビューションで溢れている中、EUC基準で書かれているので、過去の遺物なんでしょうか?! 最新がどこかにあるのでしょうかね?!

4.2. LC_COLLATE

当面、文字の照合順序は文字コードの順番とする。

各文字コードは次の順序とする。

 1. ISO 646 IRV

 2. JIS X 0201 カタカナ

 3. JIS X 0208

 4. JIS X 0212

この項目は実装の進行状況に合わせてより実用的なものへと改訂される予定で
ある。
※下線強調は筆者。
とあります。みつけたこのファイルの時点(日本語ロケールはEUC推奨)でも、実用的なものへの改訂可能性は伺われます。いや、何がいいたいかというと、そのままだっただけってことかなと。他国・他言語のロケールを調べてみても、固定する必要はないってことがわかりました。 ドイツの憲法改正数と日本のそれを比較するとわかりやすいかも。だめではないが固定されている世界。(是非など私見はおいておいて)

とりたてて、偉い人たちが崇高な理念の元に決めたりしているわけではなさそうなので、ほっとします。この時期までの慣例的な定義が今も残っているだけじゃないかと。

http://manpages.ubuntu.com/manpages/precise/man8/locale-gen.8.html
SEE ALSOlocale(1), localedef(1), locale(5), locale.gen(5), locale(7)

やっていること、やったこと


COLLATEの定義がそのままではわたしの脳味噌では読めないので、19000字?!だし。
・数値参照を実体文字(ふつうに読める文字)になるスクリプトを書いた。
・ 上のリバーススクリプトを同時に作成した。
・評価順をテスト想定通りにした定義を作成した。反映させた。確認してみた。

余談:i18n,l10n

echo 'internationalization' | perl -pe '$nagasa=(length $_) -3 ; print ($nagasa);print "字 :: " '
で改行除外して、たしかに18文字か。長いです。
echo 'localization' | perl -pe '$nagasa=(length $_) -3 ; print ($nagasa);print "字 :: " '10字 :: localization
Hamletの名セリフなら、
39字 :: To be or not to be, that is the question. T39n.

参考


任意のロケールをシステムに認知させるには、ロケールファイルを設定してコンパイルします。フォーマットにミスがあると構文エラーがでます。重複もチェックしてくれます。 「ja_JA.UTF-8」がオリジナルのja_JPです。切り替えて検査するために作っています。
sudo locale-gen ja_JA.UTF-8
Generating locales (this might take a while)...
  ja_JA.UTF-8... done
Generation complete.

sudo dpkg-reconfigure locales
Generating locales (this might take a while)...
  en_AG.UTF-8... done
  en_AU.UTF-8... done
  en_BW.UTF-8... done
  en_CA.UTF-8... done
  en_DK.UTF-8... done
  en_GB.UTF-8... done
  en_HK.UTF-8... done
  en_IE.UTF-8... done
  en_IN.UTF-8... done
  en_NG.UTF-8... done
  en_NZ.UTF-8... done
  en_PH.UTF-8... done
  en_SG.UTF-8... done
  en_US.UTF-8... done
  en_ZA.UTF-8... done
  en_ZM.UTF-8... done
  en_ZW.UTF-8... done
  ja_JA.UTF-8... done
  ja_JP.UTF-8... done
Generation complete.

全部のロケール生成をしてみようなんて考えるとけっこう時間がかかりますし、おそらく使うことのない余計なファイルが生成されますのでご注意を。 だいたい340個ぐらい。intel i3クラスで540秒位もかかります。






2016年5月18日水曜日

fcitxでキーアサインがデフォルト値に戻るのを防ぐ。

fcitxでキーアサインがデフォルト値に戻るのを防ぐには、一番上の上書き可能にするのチェックなしで運用します。コマンドとスクリプトは空でいいです。試しにいろいろやってみていた時のキャプチャ。



これで、fcitxを再起動しても、 キーボードのキー入れ替え/キーアサイン、キーバインドがもどったりしなくなりますね。


参考情報を探していたら、以下が見つかりました。そうなのか。
* デフォルトだと勝手に ~/.Xmodmap をロードしてくれます.したくない場合
は「設定」-「アドオン」内で "X Keyboard Integration" の設定を開き,
「システムの XKB 設定を上書き可能にする」のチェックを外す
か,~/.Xmodmap をリネームするなどします.
* 逆に .xinitrc 内で xmodmap したりしてる場合は上書きされてしまうの
で,.Xmodmap に書いて上記設定を有効にしておきます


https://www.facebook.com/PlamoLinux/posts/550840061636745

2016年5月15日日曜日

ルートが作成したファイルをゴミ箱にいれてしまい削除できなくなった。

ファイルマネージャーでルート権限を取得し、ルートが生成したファイル類をゴミ箱にいれた結果。ゴミ箱がクリアできなくなくなりました。


新規にターミナル(端末)を開きます。ubuntu系は以下を同時押し。CTRL+ALT+T

結論からいうと、次の1行で削除できました。
sudo rm -rf ~/.local/share/Trash/*

なるほどそうか。

GUIなら、たぶんどれかで解決。
  • gksudo nemo /home/名前/.local/share/Trash
  • gksudo caja /home/名前/.local/share/Trash
  • gksudo nautilus /home/名前/.local/share/Trash
  • gksudo xdg-open /home/名前/.local/share/Trash

2016年5月13日金曜日

pulseaudio が見つからない。A2DP接続は完了するが音がでない。16.04LTS

追記(2016-06-05):調子はいいみたい。起動後、Windows10並みの接続性の時もあれば、数秒で接続、音出し完了する場合もある。(シンク切替はコマンド発行しています)

追記:これ16.04LTS固有の「現段階」のバグじゃないかな。時々にじゃなくて、100%。この儀式を行わないとA2DPがsinkで見えていても音がでない。A2DPヘッドフォンを装着して、電源オン、即座に正しく繋がる(❤)。ここで音がでないので、下記コマンドを発行。sinkを切り替える。プロファイルがハイファイか確認/切り替え。30秒はかかる。

いままで一度もこの類のトラブルには遭遇したことはないのです。はじめて。

当方の環境だとA2DPは(誰でもだけど)Pulseaudioがないと使えないので、不思議だなと思っていたら、その他のアプリケーションでも音がならない。設定を済ませたJACKでは再生できる。 Askubuntuにありました。A2DPの解決策ではなくて、Pulse audioの初期化ですね。

新規にターミナル(端末)を開きます。ubuntu系は以下を同時押し。CTRL+ALT+T
次の一行で解決。
rm -r ~/.config/pulse; pulseaudio -k


(余談) 
当方の環境の場合 
pactl list short sinks
0 alsa_output.pci-0000_01_00.1.hdmi-stereo module-alsa-card.c\
 s32le 2ch 96000Hz SUSPENDED
1 alsa_output.pci-0000_00_14.2.analog-stereo module-alsa-card.c\
 s32le 2ch 96000Hz SUSPENDED
2 bluez_sink.FA_FA_FA_FA_FA_FA module-bluez5-device.c\
 s16le 2ch 48000Hz RUNNING   <-- br="">
 
 
ちなみに、ざくっと消すのはこれら。tdbというファイルが怪しいかも。
 
ls ~/.config/pulse
1a56528fecef49cba11733e164703617-card-database.tdb
1a56528fecef49cba11733e164703617-default-sink
1a56528fecef49cba11733e164703617-default-source
1a56528fecef49cba11733e164703617-device-volumes.tdb
1a56528fecef49cba11733e164703617-stream-volumes.tdb
cookie 
 


~/.config/pulse 以下を削除する。pulseaudio を再起動する。これですね。
後者は何度も叩いたのですが改善されず、ググりました。
 
ちなみに、/etc/bluetooth/audio.conf はなくても、A2DP接続できるみたいですね
 
ubuntu MATE 16.04
 
追記、うっかりしていましたが、この環境は、ubuntu MATE 16.04 に Cinnamon3.0、Blueberryを導入した環境です。
Blueberry を削除したら、A2DPのつながりにくさが改善されました。
あまり考えずにCinnamon推奨?!のBlueberryいれてみたのが悪かったようです(仮説)。

(参考、今こうなっている)dpkg -l | grep bluetooth

ii blueman 2.0.4-1ubuntu2 amd64 Graphical bluetooth manager ii gir1.2-gnomebluetooth-1.0:amd64 3.18.2-1ubuntu2 amd64 Introspection data for GnomeBluetooth ii gnome-bluetooth 3.18.2-1ubuntu2 amd64 GNOME Bluetooth tools ii indicator-bluetooth 0.0.6+16.04.20160214-0ubuntu1 amd64 System bluetooth indicator. ii libbluetooth3:amd64 5.37-0ubuntu5 amd64 Library to use the BlueZ Linux Bluetooth stack ii libgnome-bluetooth13:amd64 3.18.2-1ubuntu2 amd64 GNOME Bluetooth tools - support library ii pulseaudio-module-bluetooth 1:8.0-0ubuntu3 amd64 Bluetooth module for PulseAudio sound server

cat /etc/bluetooth/audio.conf cat: /etc/bluetooth/audio.conf: そのようなファイルやディレクトリはありません
一度作ったaudio.conf もおいていません。
 

2016年5月10日火曜日

NTFS上のファイル名の不具合を修正する。ubuntuからWindowsのファイルを治す。

仮称「NTFS+Win32だめ文字、パターン」

ファイルシステムとしてのNTFSではOKだが、OSとしてのWindowsでは許容されずファイル名に使うとややこしくなる(消せない、見えないなど)文字、仮称「NTFS+Win32だめ文字、パターン」というのがあります。ディレクトリについても同じです。

  • 末尾がスペースで終わるファイル名。 "大阪Lover " 
  • 末尾がコロンで終わるファイル名。"大阪Lover."

当方の癖や意図で、作るパターンはこの2つ。後者はWindowsしか使ったことがない人には理解できないかもしれません。それはそれで幸せ。このふたつを代表例に対応を例示してみます。

以下、renamej というのは、自分がパッチをあてたものなので、標準ubuntuではrenameです。

新規にターミナル(端末)を開きます。ubuntu系は以下を同時押し。CTRL+ALT+T

findを使って一括処理するのが楽なので、find前提です。たった一つなら、ubuntuのファイルマネージャー(Windows用語、エクスプローラ)で、リネームすれば良いのです。

末尾空白

末尾がスペースで終わるファイルを列記する。ディレクトリ限定
find . -type d -name '*? ' -execdir echo \"{}\" \;
#
その余分なスペースを除去する。リネームする。

(リネームの変化を確認) -n
find . -type d -name '*? ' -execdir renamej -n 's|\s$||' {} \;
(リネームを実行) -v
find . -type d -name '*? ' -execdir renamej -v 's|\s$||' {} \;
#こっちが賢いかも。
find . -type d -name '*? ' -execdir renamej -v 's|(.*?)\s$|$1|' {} \;

末尾ドット

末尾がドットで終わるファイル名を列記する。(MS-DOS制限が伝統のWindows)
find . -type f -name '*?.' 
#
末尾ドットのみまとめて削除(つまりリネームする)
find . -type f -name '*?.' -execdir renamej -v 's|(.*?)\.$|$1|' {} \;

#
末尾ドットのみまとめて削除(リネームする)ドット連続も一度にリネームする。
find . -type f -name '*?.' -execdir renamej -v 's|(.*?)\.*?$|$1|' {} \;


自分の場合は正規表現的にもこれくらいで対応できます。Bash on Windows で実行できるかもしれませんが試していません。Windowsを起動することがあればやってみよう。

完全な隠しディレクトリを作る裏技(単なる応用)


別の視点で考えます。積極的に考えると、末尾空白、末尾ドットなどを活用するとファイルが隠せます(エクスプローラーでは開けないよー、消せないよーなどの特性を活用するわけです)。先頭ドットなども組み合わせて、いろいろ頑張ってください。何のこっちゃ。初心者には理解できないからいいのですね。この節はWindows視点で書かれています。

根こそぎ、変換はしないほうがいい「:」

「:」に関しては、根こそぎはやめたほうがいいです。一般ユーザーには使わせませんが、WindowsOSは「:」の入ったシステムファイルを作ります。根こそぎやって、少し泣いた。笑) 慎重に条件指定してください。

メモ
\ < > : " / \ | ? *

AUX、CLOCK$
COM1 ~ COM9、CON、CONFIG$
LPT1 ~ LPT9、NUL、PRN

おまけ、fuseNTFSでクラッシュが置きた場合などに残るドットファイルを削除する。ubuntuなら /media/ 配下に通常できます。デフォルトでそこにマウントされるので。以下例示。

cd /media
find . -name '.fuse*'  で探す。

削除したい場合

find . -name '.fuse*' -delete 探したリスト通りでよければ問答無用で削除する。

2016年5月3日火曜日

AMD/ATI グラフィックドライバ ubuntu 16.04LTS

満を持して、グラフィックカードを差し替えました。ubuntu 16.04から、fglrxがなくった(つまり標準ドライバのみになった)わけですが、自分の結論からいうと次のようなかんじ。

追記2016-07-13:多くを望まなければ常用に差し支えないレベルにまで来ていると思います。 安心して使えます。多くを望む=VDAPUの完全なる動作を望むなど……。HD6500Dに関してはもはや枯れているってかんじだったので、R7 360についての言及です。

追記2016-05-17:17日にカーネル関係がアップデートされてから、妙に安定しています。R7 360。まだ24時間経過していませんが、いいかんじ。追記2016-05-19やっぱり微妙。このLTSは6月末ぐらいにならないと安定しないかも。自分の心象的には14.04の場合も2ヶ月かかったので。
  • Kernel: 4.4.0-22-generic x86_64 (64 bit) 
  • Desktop: Cinnamon 3.0.2 
  • Distro: Ubuntu 16.04 xenial

AMD/ATI RADEON HD6500D 


  • VDPAU(ハードウェア支援)有効でも使える。もともと遅いので効果は僅か。
  • 全体に安定している。安心して使えた。標準ドライバが安定しています。
  • fglrxはうまくない。わけでもないが、標準でいい。

AMD/ATI RADEON R7 360


  • VDPAU(ハードウェア支援)有効では使いものにならない。ハードウェアアクセル関連ドライバは削除すべき。削除しました。(標準ではインストールされていませんのでご安心を)
  • 安定しているかどうかは不明。(再評価開始したところ、14.04LTS系では使いものにならず、調達したもののもったいないけれど外していた)。
  • firefoxのクラッシュが頻発する。Windows10(32bit/64bit)でもこのGPUを使っていると似たかんじなので、AMDという会社(の製品)がためっぽいといいたくもなる。
自分の今日の結論はこうなりました。AMDは茨の道。今後に期待です。2年ぐらい待てばいいのかな。あはは。自虐的にならざるをえないですね。

いまんところ、16.04LTSは評価中のままなので壊れてもいいや。そういうわけで(どういうわけか追加した)、Cinnamonがまっとうに動作しなくなったので、数日前リリースされたばかりのCinnamon3.0に入れ替えてみました。MATEやGNOMEはうまく動いています。例によってunityだけは入れていません。