maximaで数式処理
簡単な数式の計算をしたいことがあったので、raspberry piのMathematicaでやろうかとも思ったが、手元になかったので、maximaでやってみた。aptでインストールして、ターミナルでmaximaと打って立ち上げる。
今回やりたいのは、複素数の実部と虚部を求めることである。最初につまずいたのは、文の最後に;を打たないといけないことである。そして、虚数単位は%iとして記述する。実部はrealpart()で、虚部はimagpart()で求めることができる。しかし、表示が目で見て分かりやすいようになっていて、通常の表示にはなっていない。そこで、display2d:false;とすると、表示形式が通常のプログラムで書くような感じになる。これで、maximaの出力を別のソフトに渡すことができる。
ESP8266
NodeMCUとD1 miniとWio Nodeが良いかも
トラ技の過去の目次を見ていたら、ESP8266が紹介されていた。これを使うとWiFiを簡単に使えるようになるらしい。また、それが組み込まれたボードもいろいろな種類が発売されているので、それらを使う方法もある。
ESP8266自体を直接使うためには、ピッチ変換基板にハンダ付けをしたり、USBシリアル変換と繋いだりしないといけないので、それなりに面倒なようだ。一方で、Arduinoとピン互換のD1や、それを小型化したD1 mini、さらにはNodeMCUなどは、USBケーブルに繋ぐだけで、使えるようになっているので、ちょっと試してみたい人には良いように思える。これらはArduino IDEから使えるようだ。実際、NodeMCUは試してみたが、簡単に動かすことができた。大きさ的にはD1 miniが良いように思える。
Groveを簡単に使えるようにしたWio Nodeというものもある。しかし、こちらはWiFiからしか命令を送ることができず、汎用性に乏しいように感じられる。しかし、Groveコネクタとして、RxDとTxDが出ているので、これにUSBシリアル変換をつなげば、直接プログラムを流し込むことができるのでは無いかと考えている。いつか試してみよう。
arduinoとNodeMCU
AVRからarduinoへ
マイコンとしてAVRを使い出したのは2010年頃だった。それ以前は、論理ICを組み合わせて回路を作ったりしていたが、PS2のマウスとの通信をする必要があって、いろいろと調べていたらAVRを見つけれ、使い出したのが最初だと思う。それから約六年が経つが、必要なものを作るのに、AVRはいろいろと活躍してきた。PCと測定装置のインターフェースや測定装置自身、最近では電力制御電源なども作ったりした。
この間に、書き込み機もいくつか使って来た。最初はプリンターポートを使っていて、専用のケーブルを自作した。しかし、プリンターポートがだんだんと無くなって来て、USBの書き込み機として、FT232のbitbangを使ったものを作って使うようになった。しかし、PCと通信させるようなものを作るときには、USBシリアル変換と書き込み機の両方の役割をFT232にさせることもある。その際、配線の手間を省くためには、arduino互換の基板を使うと便利であることに気が付き、それを使うことが多くなった。
こうなって来ると、arduinoを使ったら良いのでは無いかと思うが、それなりの値段がするので、あまり乗り気では無かった。いろいろと探してみると、arduino互換機の中には、非常に安く売られているものもある。AVRとUSBシリアル変換ICの値段よりも、安くなっているものを見ると、もうこれを使わない手は無いということで、重い腰を上げることになった。
まず使ってみたのはarduino UNOの互換機であるが、確かに簡単なことは簡単に使えて素人には便利である。しかし、AVR自身を使っていた人間にとっては、かゆいところに手が届かないような感じもする。例えば、すべての種類の割り込みが使えないようだし、ADCも差動が使えないようだ。基板だけarduinoを使って、プログラムは普通に書いて、ISPで流しこんだら良い気もする。普通のAVRのプログラムをUSBからarduinoに流し込めるのかな。これができたら私に取っては非常に便利なのだが。簡単なことをするときには、arduinoのスケッチを書いて、複雑なことをしたいときにはAVRのプログラムを書けば良いのである。
arduino IDEから扱える、NodeMCUも試してみた。こちらのCPUについてはまだ理解していない部分が多いのだが、WiFiを手軽に使えて、少し驚いた。CPUも速いし、メモリも多いので、あまり気にしないでプログラムできるし。
今後、arduinoとNodeMCUを使って、いろいろな装置を作っていこうと思う。
proxy越しのftp
いろいろと試したが
proxy越しにサイトにアクセスするときには、いろいろと苦労することがある。httpの場合には、ブラウザーできちんとproxyの設定をすれば良いが、ftpの場合には、どのようにするかよく分からなかった。認証の仕方はいろいろとあるようだが、以下のようにするとうまくいった。proxyサーバーにftpサーバーのuser@serverをユーザー名として使って、ログインすると、proxy越しに外部のサイトにアクセスできる。
日本語のunzip
Shift-JISのファイル名のunzip
受け取ったzipファイルをunzipしようと思ったら、日本語のファイル名が文字化けした。utf-8でやってくれれば、linuxでも化けないのに、windowsのファイル名はshiftjisなので、問題が起こるらしい。ubuntuの日本語版には、shiftjisに対応したunzipが入っているらしいが、debianのunzipは対応していないようだ。調べてみるとunarというのがあるらしく、unarの後にファイル名をつけるだけで、unzipと同じように展開できて、日本語のファイル名も変換してくれる。私の使っているdebianには入っていたので、そのまま使えた。
ノートのキーボード
交換は可能だが、修理は不可能
ノートのキーボードのいくつかのキーが打てなくなったということで、キーボードの交換を行ってみた。webで分解の仕方を調べると、丁寧に書いてあったので、そのとおりにして、あとはフラットケーブルを抜いて、交換するだけである。フラットケーブルのコネクタを閉じる時に、少し固かったので、焦ったが、無事に交換できた。これまでうまく反応しなかったキーも、うまく打てるようになった。
古いキーボードで、キーが打てなくなった原因を探るために、分解を試みた。しかし、ネジはひとつも使っていない。裏側のアルミの大きなシールを剥がしても、分解の仕方が分からない。仕方がないので、キートップを強引に外していったら、キーボードのコアのシートが顔を出した。しかし、キートップすべてと、キーの隙間の部品をはずさないと、シートを取り出せないことが分かって、断念した。調子が悪かったキーのキートップなどを調べたが、大きな異常には気が付かなかった。ゴムの部品もシートに接着されていて、取り外しができない。それも引きちぎって調べてみたが、故障の原因は分からなかった。パッと見た感じ、シートの配線は傷んでいないようだったので、ゴムの部分の劣化が故障の原因だと思うことにした。本来は平行に押されないといけない部品が、片側だけが劣化しれ、平行になりにくくなって、シートがうまく押せなかったのかも知れない。でも、そのゴムは接着されているので、修理は不可能である。
ノートは薄く小型に作らないといけないので、仕方がないことかも知れないが、修理できないのは残念な構造である。別の人のノートのキーボードも、不調らしいが、こちらは交換用のキーボードがなかなか見つからない。その場合には、修理も交換もできないことになってしまうのだろうか。
long term support
lubuntu16.04のインストール
ノートに入れているubuntuが古くなってきていたが、LTSが出るまでは、面倒なので、そのままにしていた。先週ようやく16.04LTSが出たので、インストールしてみた。
いつものようにインストール用のisoをCDRに焼こうと思ったら、850Mぐらいあって、CDRには入らない。mini.isoというのも見つけたが、これは50Mぐらいで、CDRには小さすぎる。いろいろと悩んだ結果、USBでインストールすることにした。ubuntuのシステムツールの中に、ブート用のUSBを作るソフトがあったので、これを使って、1GBのUSBにdesktopのisoを入れた。しかし、インストールの初期の段階で止まってしまう。原因は分からないが、alternateにしたら、うまく進むことができた。
しかし、おそらくproxyが悪さしているようなのだが、aptがうまく動かない。synapticsは動くのだが。
2016/4/27追記 /etc/apt/apt.confのproxyの設定を消したら、aptが動くようになった。なぜだろう。/etc/wgetrcは書いておいたけど、それは問題無いようだ。
プリンターの設定
raspbian jessieのcups
昨日インストールしたraspbianでプリンターを使えるようにしてみた。cupsはもうインストールされていた。最近のlubuntuなどでは、メニューからプリンターの設定が出きるようになっているが、raspbianはwebからlocalhost:631にアクセスして、設定する。add printerをしようとしたら、piではできないようだ。sudo adduser pi lpadminとすると、設定ができるようになった。
linuxのプリンターは、ppdが提供されていなかったりして、苦しむことが多い。今回のプリンターはネットワークプリンターで、searchしたら、二種類のポートが見つかって、その片方では動かなかったが、もう片方ではうまく動かすことができた。ppdも少し型番が古くて似ているものを選んだが、今のところうまく動いている。
思ったより苦労した
raspbian jessieの設定
久々にraspberry pi2にraspbianを入れたら、思ったより苦労したので、メモ。まずは、microSDにイメージを書き込む。私が使ったのは、raspbian-jessie-liteのイメージなので、SDの書き込みは短時間で終わるが、後のセットアップは時間がかかる。
まず、ディスプレイなどを繋いで、起動するのだが、今回は起動しなくて焦ってしまった。後で調べると、SDの書き込みに失敗していた。書き込み直したら、うまく動くようになった。まず、raspi-configでファイルシステムをexpandして、localeとtimezoneを設定する。keyboardも設定するのだが、日本語が見つからずに調べたら、105のotherから日本語キーボードに行けることが分かった。そして、Xを入れるために、education-desktop-lxdeを選択したが、少し他のパッケージとかち合っているようなコメントが出たが、そのまま進める。raspi-configでboot時にGUIが出るようにして、rebootする。
あとは、必要なパッケージのインストールである。日本語の入力ができるようにするには、ibus-anthyを入れて、ibusの設定でショートカットを設定して、input methodの設定で、anthyを追加する。texを使いたいので、texlive-lang-japaneseを入れればよかったのだが、cjkを入れてしまったので、時間がかかった。rubyもついてに入ったのは、嬉しいところである。ついでに、libreofficeとlibreoffice-l10n-jaも入れておいた。
つまらないことだが、そのままだと時計の表示がはみ出してしまっていたので、右にスペースをいくつか入れると、うまく表示されるようになった。
perlとrubyとpython
perl6とpython3とruby2
スクリプト言語としては、二十年ぐらい前に始めたperlが初めてだった。その時に苦労したのが、基本的には一次元配列しか扱えないことだった。その後rubyを使うようになったが、その時に苦労したのが、methodが多くて覚えられないことである。使い慣れて来ると、良く使うmethodは覚えてくるし、嫌ならそのmethodを使わなければ良いだけだということに気がついた。そのうち、pythonのブロックがインデントで指定されるという点に興味がわき、少しかじったが、rubyからpythonに移るメリットを感じなかった。しかし、pythonに比べるとrubyはマイナーである。
当時のrubyは1.6とか1.8であったが、1.9になって仕様が大きく変わった。しばらくは1.8系統を使っていたが、ruby2が出てしばらくして、2系統を使うことにした。binary以外はそれほど変わらないし。
pythonも、2系統から3系統になって、それなりに仕様が変わったようだ。よく使うところでは、printに括弧が必要になった。
perlに関しては、昨年末にperl6が出た。perl5の拡張かと思ったら、全く仕様が異なるようであり、別の言語と言った方が良いくらいである。今後、どの程度使われるようになるかは分からないが、面白い書き方ができるので、少しかじってみようかな。