投稿

ラベル(Ruby)が付いた投稿を表示しています

メールサーバの移行

イメージ
 自前のメールサーバを停止 これまで、自ドメインのメールサーバはVPS上に構築していた。 ・Ubuntu Server ・Postfix ・Dovecot ・spamAssassinと、BlackListの利用 Spam対策を行ってきたし、サーバ上でメールをトリガーにして各種プログラムを動かしたりしてきた。 メールサーバのメンテナンスは結構面倒くさくて、  ・Disk容量のチェック  ・不正アクセスのチェック  ・各種セキュリティパッチの適用 など、手間がかかる。 そこで、外部のサーバを利用することに…。 結構安くて使い勝手の良さそうなのが、「さくらのメールボックス」 3年契約で、3070円とな…。  メールアドレスは自分のだけなので、20GBまで利用可能!  (Gmailより大きいねぇ) ということで、早速契約。 アカウント設定を行って、既存のDNSを書き換える。WHOISも書き換えて完了。 SMTPとIMAPが利用できればOK。 ちょうど、GoogleがSPF設定していないと受信しないし、DKIMおよびDMARCに対応していないメールを弾くようになったので、対応しているのを確認。 さくらサーバ自体は、これまでお客さんのサーバとして何件も利用しているので、利用方法も難しくはない。  Webメールにも対応しているので、いざという場合にもありがたい。 ということで、各メールソフトの設定を変更。  PC(常時使用する3台)とタブレット、スマートフォンと台数は多いがそれ程手間はかからない。 問題は、旧サーバで送受信したメールの履歴だけれど、これはThunderbrdを使ってローカルに保存することで回避。  本当は、サーバtoサーバでMailboxに残そうとも考えたんだけど、古いメールはそれ程必要ないし、ローカルにバックアップしてあれば凌げるので、良しとする。 移行時にDNSの反映で若干時間がかかったものの、問題なく送受信できるのを確認して、作業完了。  これでメンテナンスの手間が減るので、安いもんです。

chromebookにruby3.0

イメージ
 chromebookをサブ開発マシンに と思っているので、clang,python3,juliaにvscodeから利用できるように設定してきた。 さて、12月末にruby3.0が正式リリースされたので、テストしたいなぁと思っていた。 ところが、aptを使って入れるとruby2.5と随分古め…。 探してみても、chromebook用のサードパーティリポジトリなんてないし…。まあ、他の作業しながらビルドしてみるかと思って構築してみた。 基本的には rbenvを使用することに。 https://github.com/rbenv/rbenv が、rbenvの配布元なので、ここのReadme.mdを参考に進める。 まずは、そのままクローンする。 $   git clone https://github.com/rbenv/rbenv.git ~/.rbenv あとは、ドキュメントに従ってPATHを通す。 $ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc $ ~/.rbenv/bin/rbenv init 初期化しろというので、実行しておく。 他のサイトでは、.bashrcに書いている場合もあったので、念の為入れておく。 $ echo 'eval "$(rbenv init -)"' >> ~/.bashrc この時点で、.bashrcを読み込み直しておく。 $ source ~/.bashrc ruby-buildというpluginが必要なので、入れる。 $ git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build $ echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc 再度、.bashrcを読み直す。 ここで、利用可能なバージョンをチェックすると $ rbenv install --list 2.5.8 2.6.6 2.7.2 3.0.0 jruby-9.2.14.0

gollumの構築

イメージ
ローカルのwikiが欲しい メモや作業記録をテキストに書いて保存するケースが最近増えている。 特定のアプリケーションに依存したくないし、バックアップや変更が、どこでもいつでもしたいと言うのが大きな理由だ。 スマートフォンとの連携を考え、Google KEEPやEvernoteを利用してきたが、PCで作成・保存したり、検索したり、バックアップ等を考えると、別のものが欲しくなる。 【条件】 Markdownが使えること データはテキストファイルが望ましい(DBは使いたくない) 将来的には、ネット経由も検討 という条件が必須。 以前は、Pukiwikiを使用していたが、やや重いのと、スマートフォンでの利用が少々扱いにくい。 また、データファイル名が文字コードを元にした形式なので、あとでデータファイルを直接扱う時に不便なんだよね。 もう少し、単純なもので探してみた。 gitを利用したwiki gollum というgitを利用したwikiを見つけた。 シンプルだけど、最低限の条件は満たしている。 しばらくテストのために、構築して使ってみる。 https://github.com/gollum/gollum によると、rubyのWEBrickで動作するらしい。 インストール ドキュメント通りに、進めてみる。 gemでインストールとのことだが、標準で入っていたっけ?(今回18.04に変更しているので、環境がまだ良くわかっていない) username@u1804:~$ gem Command 'gem' not found, but can be installed with: sudo apt install ruby rubyを入れろと言われてしまった。いままで当たり前のようにrubyを使っていたけど、まだ標準じゃないのね…。 username@u1804:~$ sudo -s root@u1804:~# apt install ruby これで、とりあえずruby関係は入ったので、gemが使えるはず。 root@u1804:~# gem install gollum Fetching: charlock_h

Termuxでどこでも開発

イメージ
Androidならでは… 前の前の機種(ASUS Zenfone2)の頃から、お世話になっているTermux。 出先での作業には欠かせない重要なツール。 https://termux.com/ これは何かというと、Android上でのTerminal Emulatorで、Linux開発環境と同等のコマンド・機能が使える。 しかもroot化の必要はないので、気軽に使える。 Google Playから普通に導入可能。 何ができるかというと とりあえず、現在の主な使い方は ssh(opensshをインストール)を入れて、出先から管理しているサーバに接続して作業するというのが主。 実際には sshaの方を使うと幸せ。 でもって、これらのツールはすべてaptで入れることができる。 おかげで、ノートPC無しでもサーバに接続して、何度も危機を乗り切った(笑) 現在作業中のもの あれこれ面白いので、インストールして試しているのだが…。 python3 + numpy GNU nano php7 clang + dev環境 ruby などを入れて、動かしている。 とりあえず、講義で使用するサンプルを作って、動作確認してみたり、気になったことを確認するのに片手でプログラミングして、さくっと動かせる。 試しに、PHPをビルトインサーバで動かして、phpinfo()を実行してみる $ php -S 192.168.0.100:8080 この状態で、他のPCから叩いてみると 普通のLinuxサーバで動かすのと何ら変わりない。 Andorid上のブラウザで実行するだけなら、 $ php -S localhost:8080 とすれば良い。 さすがに、1024ポートまではroot化していないので、利用不可。 もちろん、高機能ではないし、常にwebサーバとするには、電池の持ちも含めて、いろいろと問題があるけどね…。 そもそもwebサーバを動かしたという話も聞くけれど、スリープになったら落ちるとか…。 言語オタクには楽しい エディタは軽めのnanoで、書いている。

Sketch の書き込みができた on Ubuntu

イメージ
Arduinoでトラブルが続いていた 現在、Ubuntu(12.04-32bit)+ruby 1.8.7 + Arduino Mega2560という組み合わせで、開発を進めているのだけれども、先の記録にもあるように、予想以上に苦労している。 今回、Arduino IDEからMEGA2560へのsketchの書き込みが、エラーで出来なかったものを、工夫することで書き込みができることが分かったので、まとめておこうと思う。 まずは設定 普通にArduino IDEを起動して、書き込みを行うと図のようにエラーが発生する。 例では、スケッチの例にあるStandardFirmataを読み込んで、Arduino Megaに書き込もうとしている所。 すると、 avrdude: stk500v2_RecieveMessage(): timeout なんてエラーが延々と出て書き込みが終了しない。 こんなエラー情報では、何もわからないので、詳細な情報を得られるようにしておく。 「ファイル」->「環境設定」->「より詳細な情報を表示する」の「書き込み」にチェックを入れておく。 コンパイルの情報を見たければ、チェックを入れればいいのだけれど、今回はコンパイルまで終了し、書き込みに失敗しているので、書き込みだけでOK。 具体的な手順 この状態で、コンパイル&書き込みを行うと、さっきより格段に細かい情報が得られるのが分かるはず。 これが右の図。 すると、どんなデータを書き込もうとした。上手くいったとか失敗したとか…。 この状態が最低限必須。 この状態で先に進んでも良いのだけれど、詳細なLOGを見ているうちに、どんどんエラーが増えていくし、エラーをたくさん見ても意味が無いので、起動方法を変更する。 コンソール(Terminal)から、手動で起動してやると、あとの処理が楽になる。 $ arduino もしくは $ /usr/bin/arduino か、異なるバージョンを入れてたりするなら、そのディレクトリで $ ./arduino で起動するはず。 ここまで来たら、書き込みたいsketchを開いて、書き込みを実行する。 すると当然のことながら、先と同じエラーが発生する。 ここで慌てずに、コンソー

ERROR: Failed to build gem native extension.

イメージ
arduinoでfirmata とりあえずVirtualBoxのLinux上で、ruby+arduinoの動作は確認できている。 しかし、いちいちarduino側のプログラムを更新していくと、ホストPC上のRubyの更新もあって、管理が煩雑すぎるなぁ…。と思って検討する中にfirmataが良さそうだ。 基本的な通信プログラムと、IO周りを全て面倒見てくれて、Rubyから自分のポートのようにアクセスすれば、arduino上のポートにアクセスできるミドルウェアだ。 じゃあ、Linux上のarduio-IDEでStandardFirmataを書き込んでみようとしたら、なぜかエラーを吐きまくる。 avrdude: stk500v2_ReceiveMessage(): timeout が繰り返し出力されて、上手くいかない。 随分調べたけれども、stk500v2ではなくwiringを使えとか…。書き込みにAVRISP mkIIではなくAVRISPを使えだとか…。ボーレートを変更しろとか…。 どれもダメだった。 ここで、止まっていても埒が明かないので、HOSTのMac側で書き込むことにする。 こちらからの書き込みは問題なく完了した。 arduio_firmataのインストール 動作テストをしなければ、始まらないので、Linux上でテストする。 $ sudo gem install arduino_firmata とこれだけですね。 Fetching: args_parser-0.1.4.gem (100%) Fetching: event_emitter-0.2.2.gem (100%) Fetching: arduino_firmata-0.2.3.gem (100%) Successfully installed args_parser-0.1.4 Successfully installed event_emitter-0.2.2 Successfully installed arduino_firmata-0.2.3 3 gems installed Installing ri documentation for args_parser-0.1.4... Installing ri documentation for

CD-Drive全滅か…

イメージ
Ubuntuマシンを準備しようとしたら Arduinoのテストをするのに、これまでMac上で試験を行なってきた。おかげでこの1週間は、ブログもツイもあんまり出来なかったのだけれど…。 でもって本日、計測環境での動作テストに出向いたのだけれど…。Windowsノートマシンが渡され…。仕方なく、環境整備から行った。Arduino-IDEを入れ、Ruby+gems+serialportなどなど。 でもって、何とか動かせる環境を整えて、いざ動かし始めたらOSが死ぬという情けない落ち。仕方なく再起動をかけようとしたら、Updateによる更新を止む無くかける事態となり、マシンスペックの低さ故、1時間以上かかって、壊滅。 現場の作業は、センサーの動作確認と、リレーの動作確認しかできなかったorz。 再度打ち合わせて、マシンを別途用意することに。 自分のLinuxノートを使ってもいいのだけれど、これを献上するのは嫌なので新たに用意するしかない。 自宅に戻って、引き取ってあった古いマシンにLinuxでも入れて環境整備することに。 しばらく放置してあったけど、問題なかろうとセッティング。 さて、電源をいれると…。 1台目…メモリエラーをBIOSが報告。まあ、そんなこともあるわ…。次だ。 2台目…XPの起動を確認。ubuntuのインストール用Diskを入れようと…。Disk DriveがEjectされない。ピンを挿して強制排出するも、CDを認識しない。くそっ! 3台目…XPの起動を確認。CDを食わせるも認識しない。 寒さのせいだろうか、ドライブが逝ってしまっている。 あと3台あるけど、これ以上作業したくない。 他のマシンから、CD Driveを抜いて、差し込むのも手間が掛かり過ぎる。 ネットワークインストールするか…と思って、しばしGoogle先生と格闘。 USBからインストール可能かも BIOSでUSBからのブート可能なマシンを選定。 Ubuntu Japanese Team Wikiに「 UNetbootinの使用方法 」というのを見つけた。早速 UNetbootinをダウンロード して作業開始。 ubuntu12.04LTSの 日本語 Remixのisoイメージを