たこブロ

ググって調べたメモ置き場

Ubuntuでのrenameコマンド

ファイル名を一括変換する rename コマンド。
Ubuntuでは他のLinuxディストリビューションとは挙動が異なるらしく、ハマったのでメモ。

(変換前)2-00000.png, 2-00001.png, ...
(変換後)2_00000.png, 2_00001.png, ...

結論:UbuntuではPerl正規表現を使う

UbuntuでのrenamePerl正規表現に従って記入する。
今回の場合、以下のようにすれば変換できる。

rename 's/2-/2_/g' 2-*.png

末尾の /g を忘れずに。

さいごに

man rename にも「Perl正規表現を使え」と書いてました。
まずはman読めって話ですね…。

おしまい。

参考リンク

www.linuxquestions.org www.kent-web.com

proxy環境下のsnap設定

社内LANからsnapでインストールしようとしたらハマった話。
aptwget は通っているのに、なぜ?

$ sudo snap install hello-world
error: unable to contact snap store

結論: /etc/environment にてproxy設定する

snapは /etc/environment から設定を読み込む。
今回の環境では /etc/profile にproxyを設定していたのだけど、見てくれないみたい。

$ sudo snap install hello-world
Download snap "core" (6673) from channel "stable"

さいごに

システム全体に反映させたくない場合、個別に設定する方法もあるようです。 askubuntu.com

おしまい。

参考リンク

lambdalisue.hatenablog.com everything-you-do-is-practice.blogspot.com

ざっくりネオコグニトロン

先日、LINE AI Talk #01 におじゃましました。
名指しされました。

まとめられるほど分かってないので ネオコグニトロンについて、ちょっとメモ。

ネオコグニトロンって何さ

ニューラルネットワークの一種。
パーセプトロンによるCNNと似てる、というより元祖なんだとか。

https://dbnst.nii.ac.jp/upload/images/research/498/pro/e71b520310ea4230ee0028e3058e9a5d/fig0825std.png

ネットワークは「S細胞」「C細胞」という2種類の細胞から構成されている。
CNNで言うところの畳み込み層にあたるのが「S細胞」、プーリング層にあたるのが「C細胞」。
CNNでの畳み込み&プーリングと同じように、S細胞とC細胞による層(Us, Uc)は交互につなげられていく。
役割も同じ感じ。

CNNと同じなの?

目立つところでは、学習の手順が異なる。
「Back propagation」ではなく、「add-if-silence法」と呼ばれる方法で学習する。
add-if-silence法とは、「次の層の細胞が反応しなければ(if-silence)、新しく細胞を作る(add)」というやり方。
学習前にネットワークの定義をしないのが、CNNとの大きな違い。

ざっくり比較すれば、

  • Back propagation:「上書き保存」
  • add-if-sillence:「名前をつけて保存」

説明が雑じゃない?

こちらをご覧ください。 lp-tech.net

さいごに

マサカリはほどほどにお願いします。
おしまい。

Pythonでの文字に対する計算

C言語なんかでよくある

char c = 'A' + 1;

こんな感じの「文字の足し算・引き算」をPythonでやろうとしたところ、
見つけるのに時間がかかったのでメモ。

結論:ord(), chr()を使う

ord() で文字から数字。 chr()で数字から文字。
取れる引数は1文字なので、文字列の場合はfor文を使って対処。

# python 3.6.5

string = "test"

increment_str = [chr( int( ord( i ) + 1 ) ) for i in string]

print(''.join(increment_str))  # 'uftu'

さいごに

Python2だとちょっとめんどくさいらしい。
おしまい。

参考リンク

docs.python.org d.hatena.ne.jp python.civic-apps.com

XML-RPCでの返り値の無い関数について(Python)

Python3.6にて、XML-RPC(xmlrpc)を用いたスクリプトを書いていたときに遭遇したエラー。

xmlrpc.client.Fault: <Fault 1: "<class 'TypeError'>:cannot marshal None unless allow_none is enabled">

とりあえずググる。stackoverflowにて同様の問題を発見。
(自分のスクリプトでの)原因としては、RPCを行う関数にreturnが記述されていないため。

返り値の無い関数の時には、返り値がnoneになっているが、返り値としてnoneが許可されていないため、とのこと。
returnを書いて返り値を渡すようにするか、サーバのインスタンスを生成するときにnoneを許可するようにすれば良いみたいです。

こちらを参照しました。
stackoverflow.com

Lenovo E470のスピーカーから音が出ない?

本体のスピーカーから音が出ない?

普段、HDMIケーブルを使ってテレビと接続しています。
音もテレビか、もしくはUSB-DAC(Xonar U7)に接続したヘッドホンから。
HDMIケーブルを抜いて本体から音を出そうとしたら、音がでない。
こういう時は、ドライバをアンインストールして再起動。
すると起動時に適切なドライバを再インストールしてくれて、無事復旧というわけです。
これでだいたい直るんですよね。

…直りませんでした。何だか嫌な予感がします。
本当にデバイスドライバの問題?スピーカー側の問題だったら…やだなぁ。

Windows10用のドライバが原因でした

試しに、デュアルブートにしてあるUbuntuStudio17.10にて、音が出るかを確認。
こちらでは問題なく音が出たため、これでドライバが原因であることが確認できました。
Windows10を起動してググってみたら、サポートページからドライバをダウンロードするのが確実とのこと。

サポートページからドライバをダウンロード、インストールして再起動。
無事にスピーカーから音が出るようになりました。初歩的な手段で復旧して良かったです。

そういや、カニさんのドライバじゃないんですね。
Windows側が用意してくれるドライバとは相性が悪いんでしょうか?

終わりに

サポートページのドライバをダウンロードして、そのドライバを用いて再インストールすればいいみたいです。 再度発生したら、また追記するかもしれません。