Serial Programming: Baudrateの設定
シリアルポートの通信速度の設定の仕方はOSによって違うようで、
Linuxでは:
newtio.c_cflag = BAUDRATE | CRTSCTS | CS8 | CLOCAL | CREAD;
のようにtermios構造体のc_cflagに直接設定するが、
cfsetspeed(&newtio,BAUDRATE);
のようにBaudrate設定関数を用いて設定するようだ。(cfsetispeed()/cfsetospeed()のように入出力を個別に設定することも可)。
linuxでもcfsetispeed()/cfsetospeed()が実装されているのでとりあえずこれ使っておけば問題ないかもしれない。
ちなみにtermios.hで例えばB115200はlinux(arm)では
#define B115200 10002
OSX 10.6では
#define B115200 115200
のようにOS/アーキテクチャによって異なって定義されている。
知らなかった。
参考:
(POSIX では、 termios 構造体に格納されたボーレートは正確なものではなく、 ボーレートを操作するために cfgetispeed() と cfsetispeed() が提供されている。 c_cflag 内の CBAUD で選択されたビットを使うシステムもあれば、 sg_ispeed や sg_ospeed といった独立したフィールドを使うものもある。)
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/termios.3.html
NSArrayControllerのcontentsをクリアするには
To remove all the objects in an NSArrayController contents:
[thumbNailArrayController removeObjects:[thumbNailArrayController arrangedObjects]];
IBを使ってUITableViewCellのCellのデザインをする
UITableViewで複数のsubviewを持つような複雑なcellをコードを書いて表示させるのはめんどくさい。どうもIBでやるのは推奨されていないらしいけれど、面倒すぎるのでそこは気にしないことにした。
IBでTableCellをデザイン後、以下のコードのYourCustomCellClassとIDYouSetInXIBFileとYourXIBNameを作ったものに適当に置き換えてtableView:cellForRow:atIndexPath: method:の中のcellをインスタンス化する所に入れる。
YourCustomCellClass *cell = (YourCustomCellClass *)[tableView dequeueReusableCellWithIdentifier:
];
if ( cell == nil )
{
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:owner:self options:nil];
id firstObject = [topLevelObjects objectAtIndex:0];
if ( [ firstObject isKindOfClass:[UITableViewCell class]] )
cell = firstObject;
else cell = [topLevelObjects objectAtIndex:1];
}
以下より:
objective c - Is it possible to design NSCell subclasses in Interface Builder? - Stack Overflow
mailmanのweb interfaceをssl対応に
OSX ServerのWikiをActive Directoryユーザーも使えるようにするためにweb serviceをすべてSSL化した。その影響でmailmanもSSL対応にするはめに。
そのままだとweb interfaceの管理画面はリンクがすべてhttpのままでうまく動かない。
リンクもすべてhttpsになるようにするには
1) /usr/share/mailman/Mailman/mm_cfg.pyに以下を追加
DEFAULT_URL_PATTERN = 'https://%s/mailman/'
メーリングリストサーバー構築(Postfix+Mailman編) - Fedoraで自宅サーバー構築
2)既にリストを作ってある場合は以下のコマンドでhttpsに書き換える
$prefix/bin/withlist -l -a -r fix_url