Webメールのインストール

Mountain Lion Server (10.8サーバ、OSXサーバ)にはWebmail がない。そこでWebメールとしてRoundcube を選んでみた。
roundcubemail-0.9.2 である。
ダウンロードして解凍した。できたフォルダはroundcubemail-0.9.2である。
操作はrootになってからの方が楽なのでrootになって実施する

$ su
Password:

ですな。
ダウンロードし、解凍したroundcubemail-0.9.2を
/Library/Sserver/Web/Data/Sites/Default/ に移動させる。
オーナーをroot:wheel にしておく。

sh-3.2# chown -R root:wheel roundcubemail-0.9.2

さらに /Library/Sserver/Web/Data/Sites/Default/roundcubemail-0.9.2で
Webサーバがtempとlogsフォルダの書き込みが可能になるようにオーナーを変更する。

sh-3.2# chown -R www:www temp
sh-3.2# chown -R www:www logs

確認する

sh-3.2# ls -al
total 192
drwxr-xr-x@ 20 root wheel 680 6 17 00:10 .
drwxr-xr-x 9 root wheel 306 8 15 14:12 ..
-rw-r–r–@ 1 root wheel 1344 6 17 00:10 .htaccess
-rw-r–r–@ 1 root wheel 12895 6 17 00:10 CHANGELOG
-rw-r–r–@ 1 root wheel 8901 6 17 00:10 INSTALL
-rw-r–r–@ 1 root wheel 35147 6 17 00:10 LICENSE
-rw-r–r–@ 1 root wheel 4022 6 17 00:10 README.md
drwxr-xr-x@ 10 root wheel 340 6 17 00:10 SQL
-rw-r–r–@ 1 root wheel 2712 6 17 00:10 UPGRADING
drwxr-xr-x@ 14 root wheel 476 6 17 00:10 bin
-rw-r–r–@ 1 root wheel 381 6 17 00:10 composer.json-dist
drwxr-xr-x@ 6 root wheel 204 6 17 00:10 config
-rw-r–r–@ 1 root wheel 11999 6 17 00:10 index.php
drwxr-xr-x@ 10 root wheel 340 6 17 00:10 installer
drwxr-xr-x@ 3 _www _www 102 6 17 00:10 logs
drwxr-xr-x@ 31 root wheel 1054 6 17 00:10 plugins
drwxr-xr-x@ 9 root wheel 306 6 17 00:10 program
-rw-r–r–@ 1 root wheel 26 6 17 00:10 robots.txt
drwxr-xr-x@ 4 root wheel 136 6 17 00:10 skins
drwxr-xr-x@ 3 _www _www 102 6 17 00:10 temp

シンボリックリンクの作成

sh-3.2# ln -s /Library/Server/Web/Data/Sites/Default/roundcubemail-0.9.2 webmail

これで http://example.com/webmail/installer/でRoundcubeのインストール・ステップにアクセスすることができる。
データベースの作成
phpMyAdmin でエータベースを作成。データベース名をroundcubemailとした。
アクセスできるユーザにroundcube;localhost;パスワードxxxx、特権はすべて可としておいた。
http://example.com/webmail/installer/
にアクセスしたら;
20130816roundcube-1
となった。赤字がエラーだ。
Mcrypt: NOT AVAILABLE(See http://www.php.net/manual/en/book.mcrypt.php)
Intl: NOT AVAILABLE(See http://www.php.net/manual/en/book.intl.php)
SQLite (v2): NOT AVAILABLE(See http://www.php.net/manual/en/ref.pdo-sqlite.php)
SQL Server (SQLSRV): NOT AVAILABLE(See http://www.php.net/manual/en/ref.pdo-sqlsrv.php)
SQL Server (DBLIB): NOT AVAILABLE(See http://www.php.net/manual/en/ref.pdo-dblib.php)
ができていないということだ。拡張機能が動いていないという警告とデータベースがないという警告だ。
拡張機能のMcrypt: NOT AVAILABLE については、設定したはずなのにと思って、/etc/php.ini を見たら加筆した部分が消えている。OSアップデートしたときに書き換えられちゃったにちがいない。

[mcrypt]
; For more information about mcrypt settings see http://php.net/mcrypt-module-open
; Directory where to load mcrypt algorithms
; Default: Compiled in into libmcrypt (usually /usr/local/lib/libmcrypt)
;mcrypt.algorithms_dir=
; Directory where to load mcrypt modes
; Default: Compiled in into libmcrypt (usually /usr/local/lib/libmcrypt)
;mcrypt.modes_dir=
extension=/opt/local/lib/php53/extensions/no-debug-non-zts-20090626/mcrypt.so

と太字の部分 extension=/opt/local/lib/php53/extensions/no-debug-non-zts-20090626/mcrypt.so
を書き加えておいた(サーバ構築の記録34項参照)。
Intl: NOT AVAILABLEについては、MACPORTで探してみた。intl とはなんやら国際化の意味である。
/opt/local/bin で

sh-3.2# ./port search intl

としたら

php53-intl @5.3.23 (php, devel)
internationalization extension for PHP

というのがあったから、phpのバージョンの一致するやつ-php53-intl-をインストールした。

sh-3.2# ./port install php53-intl
Warning: port definitions are more than two weeks old, consider using selfupdate
—> Computing dependencies for php53-intl
—> Dependencies to be installed: icu
—> Fetching archive for icu
—> Attempting to fetch icu-49.1.2_1.darwin_12.x86_64.tbz2 from http://jog.id.packages.macports.org/macports/packages/icu
—> Attempting to fetch icu-49.1.2_1.darwin_12.x86_64.tbz2.rmd160 from http://jog.id.packages.macports.org/macports/packages/icu
—> Installing icu @49.1.2_1
—> Activating icu @49.1.2_1
—> Cleaning icu
—> Fetching archive for php53-intl
—> Attempting to fetch php53-intl-5.3.23_0.darwin_12.x86_64.tbz2 from http://jog.id.packages.macports.org/macports/packages/php53-intl
—> Attempting to fetch php53-intl-5.3.23_0.darwin_12.x86_64.tbz2.rmd160 from http://jog.id.packages.macports.org/macports/packages/php53-intl
—> Installing php53-intl @5.3.23_0
—> Activating php53-intl @5.3.23_0
—> Cleaning php53-intl
—> Updating database of binaries: 100.0%
—> Scanning binaries for linking errors: 100.0%
—> No broken files found.

表示されたWarning:はとりあえず無視した。
/opt/local/lib/php53/extensions/no-debug-non-zts-20090626
にintl.soがインストールされたことを確認した、
で、PHP に認識させるために /etc/php.ini に加筆する。どこに書いたらいいのかわからないので、とりあえず一番下に

[International language]
extension=/opt/local/lib/php53/extensions/no-debug-non-zts-20090626/intl.so

と記入した。
これで
http://example.com/webmail/installer/
に再度アクセスしたらOKとなった。
データベースは At least one of them is required.とあるんだから、そしてMySQL: OKとなっているのだからいいのだろう。
そんでInstallerを先に進めた。
データベース名、データベースユーザ名、パスワードは先にphpMyadminで決めた通りだ。smtpサーバのところだけ書き加えた。あとはデフォルトのまま。
configファイルを2つ作るというところでは指示にしたがった。
Download が一番間違いないから2つのファイル、db.inc.phpとmain.inc.php をダウンロードし、/Library/Server/Web/Data/Sites/Default/roundcubemail-0.9.2/config内に入れた。
owner をほかのファイルと同じようにroot:wheel とした、アクセス権は644のままだがいいのだろうか?
Check DB Config でデータベースはいいが DB Schema: NOT OK(Database not initialized) とでてきたので その下のボタン(refresh だったかな)をクリックして解決。
Test SMTP config で
Sender: hoge@localhost
Recipient: hoge@localhost
と入力して Send test mail をクリックしてhoge宛てにメールがきていることを確認した。
Test IMAP config で
Server: localhost
Port:143
Username:hoge(このサーバのユーザ名)
Password:xxxxxx(ユーザのパスワード)
を入力したら
Connecting to localhost…
IMAP connect: NOT OK(Login failed for hoge from 192.168.xx.xx. Authentication failed.)
だって。
どうやら、パスワードの暗号化の部分でひっかかっているんだろ。http://example.com/webmail/ でRoundcube の最初のページがでて来る。ユーザ名とパスワードを入力しても通らない。同じ理由からだ。
再度、installer のページから設定する必要があるようだ。このままinstallerのページにだれかがアクセスすると面倒なことになるから、installerを一時的に使えないようにしておいた。
明日、明後日とこのサーバのある建物が停電なので、で、また、今日はアルコールを体が要求しているのでここまでだ。続きは来週だな。
一発で動くとは思っていなかったし、問題にぶつかるたびに、TVの推理ドラマを見に行っちゃうとか、他のことをするからなかなかできない。夏休にやるとこういことになる。普段の仕事がつまっているときにやると、もっと早くなるのだが。
停電明けに実施して成功した。
main.conf.php の85行目

// IMAP AUTH type (DIGEST-MD5, CRAM-MD5, LOGIN, PLAIN or null to use
// best server supported one)
$rcmail_config[‘imap_auth_type’] = NULL;

の太字の NULL を PLAIN に書き換える。

// IMAP AUTH type (DIGEST-MD5, CRAM-MD5, LOGIN, PLAIN or null to use
// best server supported one)
$rcmail_config[‘imap_auth_type’] = PLAIN ;

ですね。
これで http://example.com/webmail/ にアクセスして loginできる。送受信ができることを確認しておしまい。
[追加情報]
★ Installer を再度起動して始めからやり直すためには、
/library/server/web/data/sites/default/webmail/config
にあるmain.inc.phpの185行目が

// THIS OPTION WILL ALLOW THE INSTALLER TO RUN AND CAN EXPOSE SENSITIVE CONFIG DATA.
// ONLY ENABLE IT IF YOU’RE REALLY SURE WHAT YOU’RE DOING!
$rcmail_config[‘enable_installer’] = false;

となっているから、この false を true に書き換える。


もう既に、出来上がっちゃって、さらに変更するためには;/library/server/web/data/sites/default/webmail/config/main.inc.php を直接書き換えちゃった方がはやいと思う。
★ もしconfigファイルを作成のときデフォルトのホスト名を空欄にすると、ログインのとき、ユーザ名とパスワードとホスト名を聞いてくる。ホスト名は改めて入力する必要がないのだから、78行目を
$rcmail_config[‘default_host’] = ‘example.com‘;
と太字の部分に自分のドメインを書き加える。
★ さらにScure な設定をするためには(まだやってないから確証はない);
LANCARD.LABによると
IMAPサーバの指定と設定
78行目
$rcmail_config[‘default_host’] = ”;

$rcmail_config[‘default_host’] = ‘ssl://imap.example.com:993’;
81行目
$rcmail_config[‘default_port’] = 143;

$rcmail_config[‘default_port’] = 993;
85行目
$rcmail_config[‘imap_auth_type’] = PLAIN;

$rcmail_config[‘imap_auth_type’] = *****;
*****にDIGEST-MD5、CRAM-MD5、LOGIN、PLAIN のどれかを入力する(どれがどれか、ユーザのメールソフトがPLAIN以外にどれに対応しているかによって決めないといけない。たいていのメールソフトは自動的に設定してくれると思うが。)
SMTPサーバを指定して設定する
146行目
$rcmail_config[‘smtp_server’] = ”;

$rcmail_config[‘smtp_server’] = ‘ssl://example.com’;
150行目
$rcmail_config[‘smtp_port’] = 25;

$rcmail_config[‘smtp_port’] = 465;
154行目
$rcmail_config[‘smtp_user’] = ”;

$rcmail_config[‘smtp_user’] = ‘%u’;
158行目
$rcmail_config[‘smtp_pass’] = ”;

$rcmail_config[‘smtp_pass’] = ‘%p’;
さらに
/library/server/web/data/sites/default/webmail/config/db.inc.php の
32行目
$rcmail_config[‘db_dsnr’] = ‘mysql://roundcube:pass@localhost/roundcubemail’;

//データベースのユーザ名とパスワードを入力
$rcmail_config[‘db_dsnw’] = ‘mysql://root(ユーザ名):******(パスワード)@localhost/roundcubemail’;
とするのがいいようだ。
まだ実施していない。

imap が動いている?

Mountain Lion (10.8) Server では以前の10.6 のときと異なり、サーバ管理ソフトからPOP3とIMAPを独立して制御できない。Server.app ではメールサーバをON-OFFどちらかにしか設定できない。ONにしたらPOPサーバが動いているのはメールが使えるので確認できるが、IMAPはルータを設定していなかったことから確認できなかった。
IMAP の動作確認は;
http://www.lins.jp/~obata/imap/uw-imapd.html を参考にした。
サーバでターミナルを起動し、telnet でポート143で接続してみる。

$ telnet localhost 143
Trying ::1…
Connected to localhost.
Escape character is ‘^]’.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE STARTTLS AUTH=CRAM-MD5 AUTH=X-PLAIN-SUBMIT AUTH=DIGEST-MD5 AUTH=PLAIN AUTH=LOGIN AUTH=GSSAPI] Dovecot ready.

このような表示が出れば動いていることが確認できる。さらにユーザ名でログインし、メールボックスがちゃんとしているかどうかの確認ができる。IMAPのコマンドは、頭にコマンド番号をつける必要がある。番号をつけなかったから、最初はなにやってもエラーだった。下の例ではコマンド番号が A03 でlogin すると 同じコマンド番号が頭についた形で返事が来る。A04 というコマンド番号でメールボックスがどうなっているかを見て、A06 でlogout したわけだ。コマンドに大文字小文字の区別はない。

A03 LOGIN [ユーザ名] [パスワード]
A03 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS COMPRESS=DEFLATE X-FTS-COMPACT QUOTA URLAUTH] Logged in
A04 SELECT INBOX
* FLAGS (Answered Flagged Deleted Seen Draft NonJunk)
* OK [PERMANENTFLAGS (Answered Flagged Deleted Seen Draft NonJunk *)] Flags permitted.
* 37 EXISTS
* 0 RECENT
* OK [UIDVALIDITY 1346028720] UIDs valid
* OK [UIDNEXT 1091] Predicted next UID
* OK [HIGHESTMODSEQ 2698] Highest
* OK [URLMECH INTERNAL] Mechanisms supported
A04 OK [READ-WRITE] Select completed.
A06 logout
* BYE Logging out
A06 OK Logout completed.
Connection closed by foreign host.

IMAP のコマンドは他に色々あるはずだが、いじることはないので、調べることもしないよ。

ルータの設定

ルータにはYAMAHA NYR500 を使っている。IMAPはこれまで通していなかった。他のPOP3とかは勿論通しておいたのだが、ユーザが特に必要としていなかったからだ。そしたら、通す設定方法を忘れてしまって、しばらく悩んだ。
ルータ設定のトップページ → 詳細設定と情報 → 基本接続の詳細な設定 → インターフェース WAN の設定の「設定」 → 静的IPマスカレード関連(フィルタの自動定義:80~94番) で 「追加」 をクリックする。
プロトコル:TCP、 ポー:143、使用ホストIPアドレス:ルータ配下のIMAPのメールサーバのIPアドレス(192.168.xx.xx)
を入力する。 静的IPマスカレード関連(フィルタの自動定義:80~94番)のところに
20130814router-1
プロトコル:tcp、ポート:imap2、使用ホストIPアドレス:192.168.xx.xx
と表示されたらOKだ。
さらに、ルータ設定のトップページ → 詳細設定と情報 →ファイヤーウォール設定 → WANポートのフィルタの設定 → でフィルタを追加する。
入り にチェック、pass、ログを残さない、送信元IPアドレス:*、送信元ポート:*、受信先IPアドレス:192.168.xx.xx、ポート:143 というフィルタを加える。
20130814router-2
ポートが開いているかどうかのチェックはCMAN のインターネットサービスのポートチェックが便利だ。
IPv4動的フィルタの一覧ではプロトコルはimap、imap3しか選択余地がなく、静的IPマスカレードではimap2 となるのはなぜだ?まだわかってないな。

メーリングリストの更新

夏休みになり、時間がとれるのでメールングリストの更新を試みている。
合計700名くらいで学年、クラス別なので1つのメーリスに40〜50名登録してある。メールがとどいていないのが40名。1年生には皆無。2年生以上になると、管理者の威光が及ばす、メアドを変更しても届けてくれない。1年生は、何回も生理学の連絡が行くからメールが届かないのは大きな損失になるからな。
2年生以上には、本来の業務以上のサービスをメーリスを使ってやってあげているのに、屁とも思っていないんだろ。
まんが日本昔話から「へや」の語源について。「屁ひり女房」の一場面.。
20130810fart_wife
このくらい迫力あると、学生も意識するんだろうな。

Mailman 普通配送メールを個人別にカスタマイズ

Mailman は受信者個別にメールを送付することができる。
/usr/local/mailman/Mailman のmm_cfg.py の一番下に以下の太字部分を書き加える。

# Put YOUR site-specific settings below this line.
MTA = ‘Postfix’
#Enale personalization.
OWNERS_CAN_ENABLE_PERSONALIZATION = Yes
VERP_PERSONALIZED_DELIVERIES = Yes

これで、ユーザに個別配送ができるようになる。
普通配送オプションに
20130808mailman
という欄が出現し、例えばヘッダーに各ユーザの名前を入れたりすることができる。pesonalizeの詳細を見ればその方法が書いてある。
普通配送オプション → 普通配送メールを個人別にカスタマイズしますか?   はい を選択し
普通配送会員へのメールに付けるヘッダ に %(user_name)s様 と入力すると、
20130809mailman-1
となり、宛先=To:がメーリングリストのアドレスに、本文の始めにユーザの名前=登録メールアドレスが自動的に入力される。
普通配送オプション → 普通配送メールを個人別にカスタマイズしますか?   完全個人別配送 を選択し
普通配送会員へのメールに付けるヘッダ に %(user_name)s様 と入力すると、
20130809mailman-22
となり宛先=To: が個別の登録メールアドレスに、Cc: にメーリングリストのアドレスが書き込まれ、本文の始めにユーザの名前=登録メールアドレスが自動的に入力される。
普通配送オプション → 普通配送メールを個人別にカスタマイズしますか?   いいえ を選択すると
20130809mailman-3
普通のメーリングリストとして配信される。このときヘッダーに変数のある文字列 %(user_name)s様 があるとエラー表示になる。そのまま強引に使うと、本文の始めに%(user_name)s様そのままが入力されてしまう。
 
この個別配送の方法は、Mailman のあるサーバが個別にメールを処理するので、サーバに負担がかかる。たった4つのアドレスしかないメーリングリストでも、個別配送にすると、一瞬、受け取りが遅くなるから、登録者が多数のときは配信が遅延するだろう。
docomo には個別のメールになるから、だれかが受信拒否していてもdocomoで勝手に迷惑メールとして排除しない可能性がある。やってないからわからないけど。
このdocomo問題に困っているのだ。50名程度の学生の携帯メール宛のメーリングリストがあって、25アドレスからUser unknown のメールがもどってきた。そのうち、6名は、個別にメールを送ってもUser unknown となる。つまりメールアドレスを変更したのだ。残る19名はすべてdocomoユーザであって、これらに個別にメールを送ると届くようで、メーリスで送ってUser unknown となったメールも受け取れているのだ。
このUser unkown のエラーが毎回くるわけではない。これが何故かわからない。ときどき来るのだ。
19名全員が受け取れたかどうかわからない。6名からメーリスからのメールも受け取ったとの返事があった。残り13名は返事がない。学生に返事を求めても返事が帰ってこないというのは、管理者にはこれら学生50名の学生に何の権限もないからだ。こいつらはもう生理学の単位を習得したからだ。アカハラの対象にならない学生というわけだ。こういう奴らにもサービスするのがいやになっちゃう。
一部はPCからのメールを受信拒否している可能性がある。しかし、このようなエラーが帰ってくるとMailman の方は送付できなかったとカウントするので、何回かメーリスからメールを送るとエラーが蓄積してMailmanは自動的に[ B ] マークがついて送信しなくなってしまうのだ。いちいち監視できない。
携帯・スマホは勝手に自由にメールアドレスを変更できるのが厄介の元で、学生はメールアドレスの変更を絶対といっていいほど届け出ない。ガラケーからiPhone に変更する学生が結構いる。docomo だったのがezwebとかi.softbankとかに変わっているからな。機種を変えても変更届けはない。
携帯・スマホが、もはや遊びの道具ではなく、重要な連絡手段になっているという認識は学生にない。
スマホにはメールの種類がいっぱいあってLine も加わってなんだかわからん。softbank.ne.jp とi.softbank.jp があるしezwebでは利用者が使い分けるらしい。学生には携帯で大学が配布しているメアドのメールを読めるように設定させる方がいいのかもしれない。そして受信したら必ず音がでる、画面に表示されるとかに設定させるのがいいのかもしれない。スマホには複数モデル(あるいはOS)と複数の電話会社があるからすべての種類の設定方法をこっちが知らないといけない。そんなのいやだ。
具体的な設定方法を教えないと学生はやらないし…..

加速度センサー その2

急激に負荷が加わったとき筋はどのような反応を示すかという実習項目で、負荷の加わった瞬間がわからないと困るので加速度センサーを使って負荷の加わった瞬間を検知しようということにした。ここまでは前回のお話である。
加速度センサーとその回路は非常に簡単だが、こいつを8セットも作るのはしんどい。
被験者には腕を直角に曲げ、バケツを支持する。このバケツに2kgの重り(実際はダンベル)を被験者に知られないよう/合図をあたえて 落とし筋電図の反応を調べるのだ。
8班で実習は行われるからバケツ8ヶ内に加速度センサーを設置するわけだ。2kgのダンベルが落ちてくるので、それなりにしっかりしている必要がある。センサーその物はアルミケースに納め、このアルミケースを板に固定した。この板に4本の柱をつけ、もう1枚の板をとりつける。
201300807accelarometer-5
こんな感じだ。上の板にダンベルが落ちることになる。こうしないとダンベルの重さでアルミのケースは歪んじゃうからな。下の板の必要性は、4本の柱だけでもいいのだが、細い柱だとバケツの底が凹んじゃうからだ。この下の板とバケツの底の間に発砲スチロールをはさんで、バケツの底が痛まないようにするわけだ。
こいつを、発砲スチロール(黄色)を底に敷いたバケツ内に置く。
201300807accelarometer-2
さらにスポンジを上にかぶせる。
201300807accelarometer-3
できあがり、というわけだ。手抜きだな。もっと美しくするほうがいいのはわかっている。雑な作りの機器は学生は乱暴に取り扱う。綺麗にできあがっていると、丁寧に扱ってくれる。しかし、百均ショップのバケツなんで、どうやってもあまり綺麗にならない(と言い訳をするのだ)。
バケツにケーブルを通す穴を開ける必要がある。バケツのような薄っぺらな鉄の板に直径25 mm の穴を開けるのは案外難しい。曲面になっているのでなおさらだ。切断面が鋭利になるのでケーブルがこすれてもかまわないようにカバーをつけなければならない。
底に敷く発泡スチロールを丸く切断しないといけない。
センサーを取り付ける板を切断加工する必要がある。柱を付けて、もう1枚の板にねじ止めする必要がある。
上に置くスポンジを加工する。これは面倒なので丸くせず四角いままにしちゃった。
8セットも作成するのがしんどい。どれも簡単なことなんだけどね。
スポンジがあるので衝撃が和らぎ、加速度の大きさが減少するが、ないとバケツや板にダンベルがぶつかって大きな音がするので、この音を小さくする効果のほうが重要だ。
201300807accelarometer-4
測定結果だ。上向きの加速度が上に振れるようにした。センサーの感度を206 mV/g に落とした。オフセットがあるので、高感度モードだと測定範囲が小さいからだ。センサーの出力をPowerLabのマイナス入力に接続したら、オフセットが -1.32 V ある。センサーの向きによる。センサーへの供給電圧が3V位だからこんなもんだろ。図の左は被験者にバケツを持ってもらって、合図なしにいきなりダンベルを落とした場合、右が1−2−3の合図で落とした場合だ。急激な下向きの振れがダンベルが落ちた瞬間だ。合図があると上向きの加速度が先行する。つまり被験者は予期して、ダンベルが落ちる前にバケツを持ち上げたのだ。
この先行するバケツを持ち上げることに対応する筋電図がうまく記録されるだろうか?

Illustrator でsine波を描く方法

このAdobe のページから;
1)求めるサイン波の長さの水平直線を描く(勿論後から変更可能)
2)メニューバーの 効果 パスの変形 ジグザク を選ぶ。

ジグザグウインドウのオプション;
20141017sinewave-1
大きさ:サイン波のpeak-to peak(振幅の2倍)を設定する
折り返し:周期の数だが、1で1周期、2で1と1/4周期、3で2周期、….  プレビューにチェックをいれて確認する
ポイント:滑らかに でサイン波、直線的に で三角波になる
以下は折り返し3にした例である。このままだとオブジェクトは要素に分割されていないので;
3)メニューバーの オブジェクト から アピアランスの分割 を選ぶ。
20141017sinewave-2
こうすると幾つかの要素の集合としてのオブジェクトになるので加工しやすくなる。
20141017sinewave-3しかし、このままだとアンカーポイントがピーク/ボトムにしかないので加工しにくい。そこで;
4)メニューバーの オブジェクトから パス アンカーポイントの追加 を選ぶ。
20141017sinewave-5

これで、角度でいうと0度、180度の部分にアンカーポイントが加わる。
5)あとは、ハサミツールで切断したり、大きさを変えたり自由に変形する。

また別の方法だが、うまくファイルを開いてくれないかもね。
ぴょぴょぴょ? – Linuxとかプログラミングの覚え書き から丸ごとコピー

N=100;
SCALE=50;
PI=3.14159265;
for (t=0;t<N;t++) {
line = activeDocument.pathItems.add();
y0 = Math.sin(t/N*2*PI)*SCALE;
y1 = Math.sin((t+1)/N*2*PI)*SCALE;
line.setEntirePath([[t,y0],[t+1,y1]]);
line.filled = false;
line.stroked = true;
line.selected = true;
}

をテキストファイルとして保存し、拡張子を.js にしておく。つまりsin.jsですな。
イラストレータを立ち上げ、新規ファイルを作成し
ファイル → スクリプト → その他のスクリプト で作成したsin.jsを選ぶと、左上にサイン波が出てくる。1周期分だ。
20130807Illustrator_sine_wave

こんな感じですな。
理由がわからないが、作成したファイルを別フォルダにいれたりすると読み込まれない。6、7行目のsin をcos に置き換えるとcosine波が描けるはずなのにsin波になっちゃう。どうやらillustrator のほうで一度読み込んだファイルが消去されていないのか…まだわからない。
Illistrator を再起動しただけではだめだった。Mac を再起動したら問題はなくなった。
このスクリプトは100本の直線を、始点と終点のX、Yを指定してつくるものだからバラバラにできる。100ヶのオブジェクトの集合だからグループ化しないと悲惨な目に遭う。
このファイルをどこに置いたらいいんだろ?わからないから~/users/Application Support/Adbe/Adobe Illustrator/にフォルダを作って置いた。また忘れちゃうんだろうな。バージョンを上げるとなくなっちゃったり…..

中年H

妹尾河童の「少年H」にならって「中年H」をシリーズで投稿することにするか。前シリーズは大好評だったのだが、クレームがあって中止となった。中止になったことに対するクレームのほうがはるかに多いのだが….
だれかHと胸の前に模様をつけたセーターあるいはTシャツでもプレゼントしてあげればいいのに。話題になって楽しい学園になるのに。管理者はいやだよ。
最近の学生連中は誕生日が来るのがうれしいらしい。プレゼントをあげる/ほしがっているようだ。「センセ、今日、私の誕生日。プレゼントちょうだい」と普段は質問すらしない学生が言いにくる。
先日も中年Hと学生食堂で列に並んでいたら、中年Hの教え子が、中年Hに「今日、私の誕生日。なにかプレゼントちょうだい」とおねだりするのだ。
中年Hは拒否したのだ。その口実は「俺の誕生日でもある。逆にプレゼントよこせ」だって。どうやら、突っ込んできた学生は中年Hとたまたま誕生日が同じだったらしい。それを中年Hも知っていた訳だ。どっちもどっちで権威もなにもないな。
学生食堂の外には、テーブルと椅子がおいてあり、外で食事もできるようになった広場となっている。そこで、しばしば見るのがパイ投げである。誕生日を迎えた学生に同級生がケーキを買ってくるのだが、その生クリームのケーキを顔に投げつけるわけだ。
なんか、先生を先生と思っていないらしい。幼稚園なわけだ。

Backup用HDを変更した

バックアップ用HDを変更した。Mac Pro なので、HD用のBay が4つある。
起動ディスクであるHDはbay1に入れた1TBのHDで140GB使っている。このバックアップとして、TineMachine 用HDがあって、2TBの容量で2013.1.3から今日までが保存されており1.6TB使っている。こいつはいっぱいになったら古い方から消えていくことになっているはず。もう一つ2TBのHDを入れてあって、CarbonCopyCloner(CCC) のバックアップ先とし、バックアップを作成した。今日作成したので使っているのは本来の起動ディスクであるHDとほぼ同じ容量を使っていることになる。もう一つのbayに1TBのHDを突っ込んであり、こいつには4月1日から本日(8月5日)午前1時現在までのバックアップがある。このHDはいずれ消去されることになるが、トラブルが生じたときのため、しばらくこのままでおいておく。850GB使っている。
単純計算するとTimeMachineだと半年で10倍に増える。
まだ、Server.app とシステム環境設定からのTimeMachineの設定の違いがよくわかっていない。Server.appからは本体だけでなくほかのHDのバックアップができるのはわかるが、両方同じ設定にしたらどうなんだろ。現在はシステム環境からの設定にしているがこれだと復元ができないのかな?
まだ今週はいろいろ使うユーザがいるから、来週からはじまる夏休みにまたいろいろいじってみることにする。

It's alright, I say It's OK. Listen to what I say.