投稿

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

メールサーバの移行

イメージ
 自前のメールサーバを停止 これまで、自ドメインのメールサーバは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の反映で若干時間がかかったものの、問題なく送受信できるのを確認して、作業完了。  これでメンテナンスの手間が減るので、安いもんです。

LinuxでC#

イメージ
Ubuntu上でC#を使う Windows7/10にVisual Studio Communityを入れれば、すんなりと環境は構築できる。 でも、メインマシンがUbuntuなので、VMのWindowsを起動して、その上で動かすのが時間もかかって面倒なのですよ…。  しかも、めったにWindowsを使わないため、起動するたびに更新の罠にはまって、使い始めるのに時間がかかりすぎるという状況。 そこで、Ubuntu上で、普通にコードがかければ楽じゃね?と思い探してみる。 コンソールアプリならOK 結果的には、コンソールならWindowsと何ら変りなく利用できることが分かった。 マイクロソフトのサイト https://www.microsoft.com/net/learn/get-started/linux/ubuntu16-04 へ行けば、以下の手順が乗っている。 curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-xenial-prod xenial main" > /etc/apt/sources.list.d/dotnetdev.list' まずは、上記のリポジトリを追加 そして、以下のコマンドで.NET関係のインストール。 sudo apt-get install apt-transport-https sudo apt-get update sudo apt-get install dotnet-sdk-2.1.105 あとは、いつも使っているVisual studio codeで、マイクロソフト製の拡張機能を入れれば良い。 拡張機能も、ページの下の方に書かれている。 https://marketpl

spamassasinがエラー

メールサーバにcronのエラーメール 昨日の朝から、root宛にエラーが起きているとメールが届くようになった。 昨日の朝と、今朝だ。 自前で管理している、メールサーバにはspamassasinを組み込んでいるが、そのupdateに失敗している様子。 /etc/cron.daily/spamassassin: rules: failed to run FORGED_GMAIL_RCVD test, skipping: (Can't locate object method "check_for_forged_gmail_received_headers" via package "Mail::SpamAssassin::PerMsgStatus" at (eval 1284) line 227. ) channel: lint check of update failed, channel failed sa-update failed for unknown reasons うむ、何が起きているのか…。 ちなみに、spamassasinは各種ルールとベイジアンフィルタによって、各メールのSPAM判定を行わせている。 おかげで、迷惑メールなどかなり撲滅してくれてはいるのだが…。 これが、正常動作しないのは精神衛生上よくない。 どうやら修正時の不具合らしい  情報を漁ってみると、アップデートした内容に不具合があったらしい。 すでに修正済みなので、放置すればOKとのこと…。 SA Bugzilla – Bug 7540 r1822466 fails lint check (FORGED_GMAIL_RCVD) Dave Jones 2018-01-31 14:54:23 UTC It can take up to 48 hours for a rule update commit to make it through the masscheck process and into the sa-update tgz file. This should be resolved in the morning/tomorrow

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で、書いている。

typoraが良い感じ

イメージ
マルチプラットフォームなMarkdownエディタ Markdownを使うようになって、随分立つ。 Mac上ではkobitoやMouなどを試し、最終的にはMouにカスタマイズしたCSSを適用してPDFに吐き出している。 問題は、WindowsとLinuxの場合。 Windowsでは、Sublime Textで書いて、Markdown Preview Pluginを使用している。 ところが、LinuxではSublime Textの日本語入力がイマイチ(Pluginも入れているけれど、操作がひと手間増える)なので、最近はAtomを利用しつつある。  少し前は、ReTextを使っていたのだけれど、CSSのカスタマイズが気持よくない。 ノート上のLinux(Ubuntu)は、CPUは遅めだけどSSDと大量のメモリのおかげで快適。でも、Atomはリソース消費が激しくて、起動にもたつく。  DesktopのUbuntuでも起動は遅く、イラッとする。 会議の議事録や、メモなどは最近は、それぞれのマシン上で、すべてMarkdownで書いている。 それをDropboxやGoogleDrive、OneDriveで共有し、Mac上のMouでPDF化する流れ。 この最終出力が、iMacというだけで、少し面倒。 自宅で仕事しているときは、まあマシンを変えれば良いだけなので、それほど問題はない。 問題は、出先でノートを使用している場合。 一旦、自宅に帰ってMac上でMouにより最終のレンダリングを行わないと、同一の書式のPDFを得られない。 typoraを試した もちろん、Atomで書いてプレビューで作業・確認するのも、PDF出力さえなければ問題はない。 で、良い物はないかなぁ…と、いつも探している。 で、たまたま MOONGIFT で紹介されていた。 MacもWindowsもLinuxも対応している。 CSSも独自のものが使用できる。 あとは、操作感と速度。 試してみた。 Source Code Modeでこれまでと同じエディタでの作成になる。 もちろん、レンダリングした表示もOK さくさく、動作する。 もちろん、自分で

fusermount: failed to unmount

LinuxでクラウドDriveを使う メインマシンはUbuntu16.04を使い、仮想マシンでWindows7を動かしている。 これで、ほぼ問題は起きないのだがクラウドを使用する時に、「ちぇっ」って思うことがある。 Dropboxは、Linux版の同期アプリ(Windows版・MacOS版と同じ)が出ているので使い勝手は全く同じ。 ところが、OneDriveは、Linux版がない。 Google Driveも同様。 (なぜGoogleが出していないのか???って感じだけど…) まあ、全部Dropboxで済ませれば、良いのだけれど、Dropboxは14GBしかなくて、80%以上利用してて空きが厳しい。  せっかくなら、GoogleDriveは120GBほど使えるし、OneDriveは1TBもあるので、うまく利用したい。 もちろん、どれもWEBからのアクセスには対応しているので、GUIベースというかブラウザから使えなくはない。 でも、コマンドラインで使いたいのですわ。 cp や mv がぁぁ… いちいちマウスで右クリックして…ってやってらんない。 きっと、簡単な方法があるはず… FUSEを使う まあ、以前から使っているんですが、探せばいろいろと見つかるもので、同様な考えを持つ人は居るわけです。  先人の知恵を拝借し、成果物を利用させてもらう。 google-drive-ocamlfuse GitHubにありました。 他にもいろいろと見つけたのだけれど、これが良さそう。 PPAがあるので、Ubuntuの場合、簡単ですな。 さて、インストールは、説明通り実行するだけ。 sudo add-apt-repository ppa:alessandro-strada/ppa sudo apt-get update sudo apt-get install google-drive-ocamlfuse これで完了。 FUSEはユーザ権限で、ファイルシステムを利用する方法なので、管理者権限が不要というメリットがある。 $ google-drive-ocamlfuse 以上で、認証に成功すれば、もうOK。 $ mkdir ~/gdrive $ google-dri

Atomの文字化けを修正

イメージ
Atomがいい感じだったのに 少し前まではsublime textをメインで使用していたものの、使い勝手の良い物を探し続けている。 2013年の時点でBrackets の記事書いてたゎ… MacではSublimeとmiを多用し、UbuntuのNoteはAtomを使うようになってきた。 理由は簡単で、Ubuntu上のSublimeは日本語の入力に難があって、気持よく入力できないからだ。 もちろん、Mozc Inputを入れているけれど、使い勝手が悪い。 その点、AtomはUbuntu上で気持よく入力ができるので、最近使い続けている。 ところが、4月頃Update以降、日本語が正しく表示できなくなった。 日本語だけではなく、マルチバイトがどうもダメらしい。 すぐに修正されるだろうと思って待っていたが、一向に修正が出てこない。 実際仕事でも使用しているので、少々不便。 マークダウンのプレビューが全く表示できないのが辛い。 ちなみに、Windows上でのお気に入りはxyzzyというemacsライクなエディタです。 編集画面だけは直せた 環境設定→setting画面からFont Familyに日本語フォントを設定すれば、編集画面だけは日本語を表示してくれる。 とりあえず、これで作業はできるが、Markdown Previewが全くダメな点が、効率が悪い。  出先ではNoteで書いて、自宅に帰ってMacでプレビュー確認しながらpdfを生成するところまでを行っているが、結構ミスをしていたりするので、書きながら確認できる方がありがたいんだけどね。 実際にはこんな感じで表示される。 左のTree Viewはフォルダ名、ファイル名が全て豆腐になるため、区別できない。 タブも豆腐で、だめ。 もちろん、Markdown Previewはひどい状態。 そこで、スタイルシートを自分で書けば直るとの情報を得て、試行錯誤しながら、ググりながら設定していく。 基本的にはCSSだがlessで書けるらしい。 要は、各スタイルに日本語のfont-familyを設定してやればOK。 フォントの設定だけしかしなかったのに、なぜか、Markdown Previewが黒バックに

apacheでSSL利用時の再起動

SSLを利用している場合 自前でサーバを立てて、SSLの認証取って、利用できるようにしている。 標準的な設定方法に従って作業すれば、設定は難しくない。 例えば、以下のような方法で簡単に設定できる。 (読んで分からない人には、簡単ではないと思うけど・・・) https://jp.globalsign.com/support/server/03.html ところが、この方法だと、apacheを再起動する際に、 秘密鍵のパスフレーズを要求される。(上記サイトにもうっすら書いてあるww) まあ、起動しっぱなしで運用することがほとんどだとは思うけれど、パスフレーズを忘れると、起動できなくなる。 また、スクリプトを通して、再起動やらが実行できない。 コンソールで作業しても、パスフレーズを入力する時間(5秒程度だとは思うけれど)は、apacheが完全に停止した状態になってしまう。 ということで、SSLを有効にしたまま、再起動を自動で行いたい。 設定していない場合 環境はcentOS6.5+apache2です。 例えば、再起動を行うとこんなようなメッセージが表示され、パスフレーズの入力を促されます。 正しく入力すれば、無事起動。 # service httpd restart httpd を停止中:                                            [  OK  ] httpd を起動中: Apache/2.2.15 mod_ssl/2.2.15 (Pass Phrase Dialog) Some of your private key files are encrypted for security reasons. In order to read them you have to provide the pass phrases. Server myservername:443 (RSA) Enter pass phrase: OK: Pass Phrase Dialog successful.                                                            [  OK  ]

findで条件に合わないものを探す

findってあんまり使わないけど… 今頃になって、知ったというか、調べたというか…。 一体何年使っているんだと言われそうなくらい初期の頃から使っているのに、こんな使い方したことなかったなぁと、自分でも驚いた。 忘れないとは思うけど、きっと同じような人がいるだろうと思うので、書いておく。 これまでの使い方 いままで、findを使う時って、 特定の拡張子が含まれている サイズが1MB以上 何日前より古いファイル 30分以内に編集したファイル なんて使い方が多かった。 でもって、中身を検索するならgrepだし…。 もちろん、パイプも使うし、xargsも使ってきた。 今回、はて?と考えた事 今回相談があって、LibreOfficeで編集ができないファイルがある。とな…。 調べてみると、オーナーがnobodyになっている。 ちょいちょい不具合もあるので、根本原因は調査中だけど、編集できないのは困るというので、急ぎで修正する必要がある。 さて、user_aのホームフォルダ以下で、user_aがユーザではないファイルを探す…。 まず、思いついたのは findだよなぁと…。 # find /home/user_a -user user_a これだと、user_aが所有者のファイルがリストアップされる。 あれ? 否定はどうするんだ???と grep -v はよく使うけれど、findの条件否定って、よくよく考えると使ったことがないような気がする。(20年近くUNIX系触っているのに…) まずは、Helpだよね。 $ find --help 使用法: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression] デフォルトのパスはカレントディレクトリです。デフォルトの評価式 (expression) は -print です。評価式は演算子、オプション、テストおよびアクションで構成されます。 演算子 (優先順位は降順です。特に指定がない場合は -and が暗黙的に使用されます):       ( EXPR )   !

Diskのエラー RedHat 9

あまりに苦戦したので、忘れる前に記録しておこうと思う。 古き良き時代のRedHat 古いサーバが、調子が悪いということだったので、まずは先週確認に。 時々反応がなくなるので、強制的にリセットしているとのこと。 早速、調査。 RedHat 9 shrikeであることが判明。 旧の担当者は居ないので、マシンから読み取るしかなさそう。 Webシステムが起動しているということなので、調べてみるが、apacheは起動していない。 Tomcatは起動している。 ということは、Tomcatがwebサービスを提供しているっぽい。 まあ、java中心のシステムなら、それもありうる。 今回は事前の作業 サーバをリプレイスすることで検討しているのだけれど…。 新しいマシンに、現在動いているシステムのソフトを載せても、どうやら動きそうにない。 OSのバージョンも、Tomcatのバージョンも異なるし…。DBもバージョンが違いすぎる。 乗っているシステムは、オリジナルだし…。完全なソースが残っていないという。 そこで、p2vで仮想化する方向で…。 マシン全体を仮想化して、新ハードウェア上で動かしてしまおうという計画にした。 そのため一旦ディスクの中身をコピーして持ち帰ろうと、今週作業に入った。 logをチェックしてみると、Errorが頻発している。dmesgではエラーしか見られない。 先週よりも、増えているような気がする。 コンソールで触っていても、エラーを吐いてくる。 内容は、Diskがおかしいらしい。 inodeが異常…。 よく止まらずに動いていたもんだ。 起動時の様子が見たいので、rebootしてみる。 BIOSの後、AdaptecのRAIDカードを認識している。 PXEブートしようとして、できていない。 grubを使って起動している。 ふむふむ、懐かしい文字があちこちに…。 しかしsyslogを見ると、何だかおかしい。 ハードウェアのRAIDが使われていないっぽい。 Disk構成は、80GB×2のみ・・・。 あれ?BootDiskは? 再度起動を確認すると、No Logical Disk〜とか出てるし。

vsftpd の動作がおかしい

イメージ
ftpで接続できない vps上の設定を行っていていよいよ最終段階に。 webコンテンツをUPしようと、ftpサーバを立てる。 $ sudo apt-get install vsftpd まあ、これだけの話だ。 でもって、気持よくFileZillaで接続しようとするも接続できない??? 500 OOPS: vsftpd: refusing to run with writable root inside chroot () と文句を言ってくる。 おや、前に違う環境で立てた時は、こんなことはなかった。 まあ、今回はvirtual hostをいくつも切るために、アカウントごとにchrootしているので、これまでとは状況が違うといえば違うのだけれど…。 今回利用しているのは、vsftpd 2.3.5だ。 ググってみっるとこんなタイトルの情報が… 「 Fixing 500 OOPS: vsftpd: refusing to run with writable root inside chroot () 」はいはい。まんまじゃないですか…。 バグでも潜んでいるんかと、読んでみる。 対策として、 chmod a-w /home/user しろとな。これで試すと、問題なく接続できる。 いやぁ、しかし書き込み権限をなくせばOKと言われましても、これじゃUploadできないわけで…。 試しに、Uploadしてみるが、書き込みできないと言われる。 そりゃ、当たり前だ。 もしくは、次の2つの方法があるらしい。 vsftpdなら allow_writeable_chroot=YES vsftpd-extなら allow_writable_chroot=YES にしろと。(どうして記述の方法を変えたのか…) vsftpd-extってなんじゃい?と思いつつ、とりあえず上の方法で試すも撃沈。 他の情報を探してみる どうやらvsftpd2.3.5になった時に、セキュリティ強化のために導入されたらしい。 じゃ、2.3.4で行けばと思ったら、脆弱性が見つかっているので、止めた方がいいらしい。 手詰まりか?と思ったら、 方法は3つ。 Extended vsft

Sublime Text 2の日本語入力 #2

イメージ
コメントを頂いて… 以前のエントリー「 Sublime Text 2の日本語入力 」に匿名さんからコメントを頂いた。内容はシンプルで http://yasuyuky.github.io/SublimeMozcInput/ これはどうでしょうか? とだけあった。 関係者さんなのか、ユーザさんなのか不明だけれども、念のため確認してみる。 もちろんURLを見れば、一目瞭然なんだけど、行ってみるとまさにそのままの内容。 しかし、中央のGIFアニメを見る限り、使い勝手は良さそう。 これは試してみる必要がありそう。 インストールする Install Mozc and emacs-mozc (see official instruction). Install this plugin using Package Controll (see instruction). という手順。って当然これまで作業しているのだからmozcは入っているでしょうね〜。 まあ、一応まとめておきます。 $ sudo apt-get install mozc emacs-mozc これだけです。emacs自体が入っていない場合は、少々ダウンロードも大きくなるかもしれないですね。 続いて、sublime text 2のpackage controlを使って必要そうなものを入れろということなので…。 まずPackage Controlを起動。 続いて、リポジトリを追加。「Add Repository」です。 https://github.com/yasuyuky/SublimeMozcInput これを追加してやる。 でもって、Package Control: Install Packageを実行すると、「SublimeMozcInput」が選択できるようになります。 選んでしまえば、インストールは完了するはず。 動かしてみる 早速、動作確認をする必要がある。 起動は「ctrl+¥」ということなので、起動して入力してみる。 ほ〜。 前回のHelperとは、操作感は雲泥の差です。 これで、まともにエディタ上で日本語の入力がサクサクと出来るようになりました。 ステータスバ

Linuxでthin client

イメージ
LTSPで苦戦した LTSP(the Linux Terminal Server Project)というのがあって、要はWindowsのターミナルサーバーと同等なものをLinuxだけで構成するというもの。 この設定は、通常LinuxサーバにNIC2枚刺しで、片側をWAN、もう一方をLANに接続。 LAN側はDHCPサーバとして機能して、さらにネットワークブートサービスを提供するように設定するのが一般的なやり方。 この構成であれば、結構すんなり行くらしい。 でも、普通のLAN構成だと、ルータがDHCPを提供している事が多い。このDHCPを止めてLinuxをDHCPサーバとして設定するというのも、無駄な気がするし、既存のネットワークに接続して、運用という場合にリスクが高くなるので、嫌だな…と思い、別の方法を模索していた。 最終的には上手く行ったのだけれど、約1週間ほど苦戦したのでまとめておこうと思う。 既存のLANに設置する方法 いろいろと調べてみると、proxyDHCPを設置すれば、何とか行けるらしい。 最初にやった方法 pxe-pdhcpというproxyDHCPがあって、これを実行してテストする。 ソースのみの配布なので、 公式サイト を参考にビルドする。 ただし、コメントにあるように配布されているソースに一部不具合があるので、修正が必要。(トータル2行の修正) これでもwarningが1つ出ていたけれど、一応ビルドは成功する。(このソース自体古く、新しいものは出ていないので、少々心配。枯れているなら良いのだけれど…) ところが、何度設定を見なおして、起動を繰り返しても、うまくbootできない。 様々なオプションを試し、再起動をしても上手くいかず、諦めかけていた。 異なる方法を見つけた 次に、pxe-pdhcpとは別のproxyがあることが判明。実はよく知っているdnsmasqがその機能を実装しているらしい。 これなら、使ったことがあるし、設定も経験がある。 ubuntu forumに記事 を見つけたので、その通りにテストする。 親切にも、設定の手順とスクリプトなどもまとめられている。 ところが、この方法だけでは上手くブートしない。 そこで、いろ

Bracketsが面白い

イメージ
Webの作成はやっぱりエディタ ここ最近は、Webの開発を急ピッチで行っているのだけれども、結局Editorで書くのが一番早いわけです。 前にも紹介したSublime text 2をメインで使っていると、他のエディタが霞んでしまうくらい快適で…。 html+css+php+jquery+bootstrapなんて今風の組み合わせなんで、補完とか便利すぎです。 少々時間があったので、以前から気になっていたツールを試すことに。 その名はBrackets こいつも、基本はシンプルなweb用エディタですが、pluginが大量にあってsublime txte 2と同じ名称のものもありましたw こいつのすごいところは、chromeとの連携が可能で、Liveプレビューが面白い。 まずBrackets側からLivePreviewを指示すると、chromeを再起動すると言ってくるのでOKすると、再起動後タブが開いて、編集中のコードのプレビューが表示される。 しかも、Liveなのでコードを編集すると同時にプレビューが変化するわけで…。素敵〜 で試しにやっているところをキャプチャしてみました。 赤枠で囲っている部分左側がエディタ。右がchromeのプレビューで…。 驚くほどスムーズです。 pluginはとりあえずemmetを入れましたので、タグの補完なんかは気持ちよ〜くやってくれます。(sublimeも同名のがありますね) しかし、この環境はすごいですね〜。 今までなら、編集→保存→ブラウザを選択→更新→確認という一連の作業が 編集→確認になってしまう!! しかも、画面構成はシンプルでSublime text 2 に似ているですな…。サイドバーの辺りが…。 ちゅうことで、しばらく試してみようと思っています。 firefoxにも対応してくれると普及するのかもしれないなぁ。 要求される動作環境は、Windows/Macです。Linuxもubuntuには対応してるようです。 本家→http://brackets.io/ お試しあれ! 参考URL 【オープンソース】Adobe Brackets を使ってみたよ【テキストエディタ】

Sublime Text 2の日本語入力

イメージ
久しぶりに使いたくなったエディタ この数ヶ月、新しいツールを求めてあれこれ触ってみたのだけれど、この「Sublime Text 2」程、楽しさを感じるエディタはない。 奥の深さもそうだけれど、カスタマイズの自由さ、軽快さ、プラグインの多さには驚く。 プラグインが多いと、基本機能が貧弱なものがあったりするが、こいつは全くそんなこともなく、高機能なエディタだと思う。 python系らしいけれど、そんなことは知らなくても全く問題ない。 マルチプラットフォームでMac/Linux/Windowsで動作する。 少々初心者には、敷居が高目だけれど、使ってみる価値は十分あると思う。 同じ環境を用意する Macはメインで使用しているので、使えないのは問題。当然インストールしてあれこれと試す。 Linuxに入れてみる。C++やRubyなど気持よく記述できる。 HTMLもpluginを利用することで、超強力に機能UPする。 と遊んでいた所、日本語が入力できないことに気づいた。 今まで、コードが中心だったし、メッセージはダミーや英語が多かったせいか、気付かなかった。 調べてみると2つほど、設定方法を見つけた。 「yuji.develoepr's graffiti blog」の「 Sublime Text 2をaptitude(apt-get)でインストールして日本語入力可能にするまで。 」というそのままのエントリーがあった。 まずは、InputHelperをインストール。 Shift+Ctrl+Zで入力欄が出るらしいのだが、自分の環境では出なかった。 いろいろと、試したものの12.04ではダメそう。 そこで、次の方法をトライする。 $ sudo -s # apt-get install python-xlib $ wget https://github.com/chikatoike/SublimeIBus/archive/master.zip -O SublimeIBus-master.zip $ unzip SublimeIBus-master.zip $ mv SublimeIBus-master SublimeIBus ここまで何の問題もなく完了。

MebiusにUbuntuでいいじゃない

イメージ
メモリの少ないノート 先日、データの吸出しを依頼されたノート(SHARPのMebius CS50K)ですが、まともに使おうとするなら、バッテリーの交換が、互換品を使って7000円程度。メモリも1GBを追加すると3000〜4000円程度かかります。  せっかくこの情報を提供したのだけれど、データを消去して廃棄してくれと…。勿体のうございますな。 ということで、中古ながらおもちゃをゲットしたので、色々と遊んで見ることに。 バッテリーは、おもちゃにしては高すぎるので見送り。メモリを購入しようと思ったら、 前回Inspiron 700m用に購入したメモリ と同じ規格。何たる偶然。 遅くて起動に少々うんざりしていたので、700mからメモリを抜き取り、Mebiusに装着!ドライバ1本あればものの1分で作業完了。 Ubuntu12.04のCDを探して、挿入! 電源ON! そして無事起動。さすがに700mのCeleronMよりMebiusのSempronの方が速いですね〜。クロックも違うし… 早速、インストールを実行。Diskがブイブイいいながら読んでいます。 インストール自体は30分もかからないのだけれど、その後のUpdateに少々時間がかかりますわ。 動かしてみると これが結構快適。Ubuntuだけどメモリが1.2GBあれば充分。 LibreOfficeを起動してみる。結構さくっときますな。 正規のWindowsXPもOfficeも完全消去するのは、もったいないかなぁと思わないくらい快適に動作します。 ところで、このMebiusなんだけど、オークションでは同程度のものが1000〜3000円くらいで入手可能なんだけど…。しかもメモリが2GB搭載されていたり…。多少故障していたりするものの、美品も多く見つかる。 ということは、これにUbuntu入れてOfficeも使えて…3000円程度でノートPCが手に入るわけで…。タブレットではなくPCが…。 現在の市販品は、そりゃ速いでしょうよ。高機能でしょうよ。でもね〜。 こういう選択肢もあると思うんだよね〜。 Microsoftに3万も4万も支払うなら、もっと格安に使い勝手の良いマシンが入手できるし、環境が整うのに…。開発ツールから何から全部揃って、この価格なんだからね〜。

fedoraが遅すぎる…

イメージ
テストしている中で メインにubuntuを利用して組み込みのテスト環境を構築しているのだけれど、先日より少々トラブっている。それがMacでは問題なく動作し、ubuntuでは発生するので、ディストリビューションの問題なのか、利用しているライブラリの問題なのか判断がつかないことも有り、いくつかダウンロードしてテスト行うことにした。 Ubuntuは12.04LTSが主だけど、12.10や11.10も環境があるのでテストすることに。といっても、こいつらは仮想マシン上で動いている。 ホストのiMacもテストに使える。 さて、どのディストリビューションを選ぶかなぁと迷って、FedoraとVineにしてみた。別に何でもいいんだけど、DebianじゃUbuntuと被り過ぎるし、CentOSでもRedHatでもと言いながら、最新の機能をぶち込んでいるのは確かFedoraだったよなぁ〜と思い、選択。それに対して、以前愛用していたRedHatベースのVineも懐かしいので選択。 というレベルの選び方で…。 Fedora18を落としてくる すでにバージョンは18とな…。えらく数字が上がっている。4つめか5つめくらいまではテストしたりしていたのだけれど…。時間はどんどん進んでいるのね〜。 isoイメージを落として、VirtualBoxに食わせて、起動。LiveDVDとして動作しますので、インストールしてテストしようと…。とりあえず推奨環境にあるように、1GBのメモリと10GB以上のHDDスペースを割り当てる。64bit版なのでこれくらいは必要なんだろうね〜。インストーラも変更したとか…。http://fedoraproject.org/ja/ しばし待てば、特に手間もかからず終了。今時のは質問も少なくて、楽勝です。 さてisoイメージを抜いて、再起動。 待つ…待つ…お?遅い!! しかもログインしてからの表示も明らかにもたついている。 何だ?これは? まともに使えないレベル…。 fedoraが始まった頃は、こんなんじゃなかったのに…。 開発環境を構築するまでもなく、イラッと来るだけでボツです。 Vineはどうなのよ? Vineは6.1と堅いリリース番号の付け方ですね〜。http://vinelinux.org/ さくっと落として、先

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

ArduinoIDEのフォントが汚い

イメージ
Ubuntu上でArduino開発していて どうもIDEのフォントが汚い。フォントサイズは変更できるのだけれど、アンチエイリアスが設定できない。 javaで動いているから、設定ファイルを書き換えてやろうと、調べてみた。 コマンドarduinoで起動するので、この中身を書き換えてみる。 java -Dawt.useSystemAAFontSettings=on SampleApp ファイルの最後で実行している部分があるので、上のようにアンチエイリアスをonにしてみる。 う〜む、上手くいかない。 ホームに.arduino/preference.txtという個別の設定ファイルが、生成されているのでこいつを編集。 editor.antialias=true これだけで、うまくいった。 フォントもこの設定ファイルで変更できそうだ。 よく見ると、editor.fontというエントリがあるので、フォントの変更もこれでOK。 サイズはここで設定してもいいが、設定画面から変更可能なので、サイズだけならこのファイルを編集する必要はない。 14ポイント程度にしておくと、見やすい感じ。アンチエイリアスも効いていて読みやすいですな。 ついでにMac版も Mac用のArduinoIDEもフォントが汚いので、直してみる。 あれ? ホームに.arduinoというディレクトリはない。 お作法が違うようだ。 調べてみると$HOME/Library/Arduino/prefference.txtらしい。 中身は一緒なので、同じエントリーを探して書き換えるだけで、アンチエイリアスがきれいに掛かって嬉しい〜。 じゃっかん、使用しているフォントが異なるので、見え方に差はあるものの、これなら疲れずに作業できそうだ。 ちなみにWindowsでは作業しないことにしているので、情報なしです。 知りたい人はググってくださいww

USBメモリが逝った

イメージ
USBメモリは突然に 何から伝えればいいのか 分からないまま時は流れて  浮かんでは 消えてゆく ありふれた言葉だけ 「あれ?」「どうした?」「おかしいな?」とありふれた言葉がリフレイン…。 なんて言ってられないけど逝きました。 前兆は確かにあった。今思えばだけど…。 昨日の夕方顧客先で作業をしていて、マシンが突然死。 おかしいなぁと言いながらも復旧して、エラーチェックしたのに異常は何も見つからず…。USBメモリを挿した後だったのは確かだ。その時、見慣れぬメッセージが出たものの、時間的に押していたので、気にせず過ぎていた。 そして今日の15時頃、自宅のiMacで作業をしていて、データをUSBにコピー。取り出し命令を出して、抜いたのだけれどその後iMacがフリーズ。動画は再生したままだったので、マウスの電池切れかと思って交換したのだけれど、全く反応せず。キーボードも同様。 Buletoothが逝ったか?なんて思っていた。 仕方なく強制断して再起動をかけるものの、復旧してもchromeが起動しないとか、固まるとかを繰り返した。chromeを再インストールして様子を見ている時に、ふとUSBメモリのアイコンがデスクトップに表示されていないことに気づいた。 ポートを変更して見るとメモリのLEDが点滅するものの、その後は音沙汰なし。 そうこうしているうちに突然フリーズ。 この時点でUSBメモリメモリが怪しいことに気づいた。 コンソールからdmesgで状況確認すると、エラーを吐いている。 ついでにログもチェックしてみると Dec 20 14:42:03 iMac kernel[0]: aio_queue_async_request(): too many in flight for proc: 16. Dec 20 14:42:07 iMac kernel[0]: USBMSC Identifier (non-unique): H030000000000182 0x411 0x98 0x4000 Dec 20 14:42:19 iMac.local fseventsd[47]: could not open <</Volumes/usb/.fseventsd/fseventsd-uuid>> (No such

グループを別のグループに追加

Linux上での話ですが… 友人より、相談のメールが。 すでにLinux上でユーザを幾つかのグループに分けて管理している。 今回整理統合したのでしょうか、GroupA、GroupBをGroupCに突っ込みたいけど、良い方法は?という質問がありました。 Linuxの場合、プライマリーグループがあってdefaultだとユーザ名と同じグループが作られ、運用しています。 それとは別に、ユーザは他のグループに所属するケースもあるわけで、複数のグループに所属することが可能になっています。 で、その操作を簡単にできるのではないか?ということでした。 結論から言うと、その手のコマンドは存在していないので、標準コマンドで作業を完結することはできないわけです。 じゃぁ、無理なのか?というと、そんなことはなく、ちょっとスクリプトを書けば可能です。 解決方法1 メールの中身を読んだのが、日付が変わる頃だったので、寝ぼけながらも何とか処理できました。 ユーザのグループは、/etc/groupに格納されていて、以下のような構成になっています。 test:x:1003: test1:x:1004:test2,test3 test2:x:1005: test3:x:1006: test4:x:1007:test5 test5:x:1008: あくまでもサンプルですが、test1グループにユーザtest2,test3がいます。さらにグループtest4にはtest5がいます。 このtest1,test4をグループtestに入れることにします。 最終的には、test=(test2,test3,test5)となればOKと。 ※本当は、test1にはユーザtest1、test4にはユーザtest4も入っているんだけど、今回は処理しない前提で行きます。一人くらいなら、手作業で変更できるので…。 考え方 まずは、test1のグループのメンバーを引っ張りだします。 これはgrepを利用すればOK。 $ grep test1 /etc/group すると test1:x:1004:test2,test3 という行を得ることができます。欲しいのはtest2,test3の部分なので、切り出します。