<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" version="2.0">
  <channel>
    <title>Math Self ... （こだわりDIY職人）</title>
    <link>https://tos.asablo.jp/blog/</link>
    <description/>
    <language>ja</language>
    <generator>mc 0.0</generator>
    <pubDate>Mon, 24 Feb 2020 13:50:28 +0900</pubDate>
    <item>
      <title>AI アプリ - CreateMLだけで作ってみた</title>
      <link>https://tos.asablo.jp/blog/2020/02/16/9214517</link>
      <guid>https://tos.asablo.jp/blog/2020/02/16/9214517</guid>
      <pubDate>Fri, 21 Feb 2020 13:52:58 +0900</pubDate>
      <dcterms:modified>2020-02-24T13:50:28+09:00</dcterms:modified>
      <dcterms:created>2020-02-16T13:54:26+09:00</dcterms:created>
      <description>&lt;DIV class="asahi_editor_line"&gt;ビッグデータが流行ですが、”スモールデータ” ではだめなんだろうか？　Xcodeの Playgroundには AIモデルを生成する機能を備えている、これを使って実際にアプリを作成してみた。&lt;/DIV&gt;&lt;DIV class="asahi_editor_line"&gt;&lt;BR&gt;&lt;/DIV&gt;&lt;DIV class="asahi_editor_line"&gt;学習システムには、Apple社が学習させた基本モデルが組み込まれているから、それを使って転移学習する仕組みらしい。ディープラーニングに解説されている、犬猫の画像分類なども、フォルダー別に各々画像を用意するだけで、手元の Macだけで簡単に AIモデルを生成することができ、生成したオリジナルモデルを自分のアプリに組み込むことができる仕組みだから Macが有れば容易に試すことができる。&lt;/DIV&gt;&lt;DIV class="asahi_editor_line"&gt;&lt;BR&gt;&lt;/DIV&gt;&lt;DIV class="asahi_editor_line"&gt;&lt;SPAN class="asahi_editor_styling" style="font-weight: bold;"&gt;作成したのは、AI がベストショットを自動で撮ってくれるアプリ&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="asahi_editor_line"&gt;写真を撮るとき、誰しもがベストな一枚を願うものだ。これを AI化するための以下の方針を決めた。&lt;/DIV&gt;&lt;DIV class="asahi_editor_line"&gt;&lt;BR&gt;&lt;/DIV&gt;&lt;DIV class="asahi_editor_line"&gt; ・ベストショット = 素敵な顔の表情とする&lt;/DIV&gt;&lt;DIV class="asahi_editor_line"&gt; ・学習データ = 素敵な顔と、そうでないのを各20枚程度用意する (*)&lt;/DIV&gt;&lt;DIV class="asahi_editor_line"&gt; ・写真の判断に客観性はない&lt;/DIV&gt;&lt;DIV class="asahi_editor_line"&gt;&lt;BR&gt;&lt;/DIV&gt;&lt;DIV class="asahi_editor_line"&gt;&lt;FONT color="#ff0000"&gt;&lt;SPAN style="caret-color: rgb(255, 0, 0);"&gt;(*) 学習データ&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV class="asahi_editor_line"&gt;&lt;SPAN class="asahi_editor_styling" style="color: rgb(255, 0, 0);"&gt;2019.1.1 施行の改正著作権法によると、著作物を含むデータを元に機械学習によって学習済みモデルを開発することは適法となった、だから Web上の写真データを使って AIモデルを開発することは可能である。&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="asahi_editor_line"&gt;&lt;BR&gt;&lt;/DIV&gt;&lt;DIV class="asahi_editor_line"&gt;このように、用意したのはビッグデータとは程遠い学習素材です。実際に学習させてモデルを生成してみると面白い。枚数の少ない画像を有効活用するための手段として CreateMLにも画像の回転、反転、拡大、切り取り、などの学習時のオプション設定ができるが、あれこれ試して分類精度を上げすぎるより、ここでは適当に低い方がいい結果が得られた。&lt;/DIV&gt;&lt;DIV class="asahi_editor_line"&gt;&lt;BR&gt;&lt;/DIV&gt;&lt;DIV class="asahi_editor_line"&gt;（学習とテストの精度 - CreateML - ）&lt;/DIV&gt;&lt;DIV class="asahi_editor_line"&gt;&lt;DIV class="msg-pict-2" style="text-align: center;"&gt;&lt;A target="_blank" href="http://tos.asablo.jp/blog/img/2020/02/24/588e6d.png" onclick="return asablo.expandimage(this,831,406,&amp;#x27;http://tos.asablo.jp/blog/img/2020/02/24/588e6d.png&amp;#x27;)"&gt;&lt;IMG src="http://tos.asablo.jp/blog/img/2020/02/24/588e6c.png" alt="CreateML-learning" title="CreateML-learning" style="width: 300px; height: 146px; border: none;"&gt;&lt;/A&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class="asahi_editor_line"&gt;&lt;BR&gt;&lt;/DIV&gt;&lt;DIV class="asahi_editor_line"&gt;&lt;BR&gt;&lt;/DIV&gt;&lt;DIV class="asahi_editor_line"&gt;実際、色々試してみたが、90%以上の高精度より 60〜70%程度の方が良い結果が得られたが、この結果の確証はない。使った学習データのせい、あるいは考え方が間違っていたのかもしれない。元々、目標にした &amp;quot;ベストな写真” に客観性はない。App Storeからダウンロードして試して判断ください。&lt;/DIV&gt;&lt;DIV class="asahi_editor_line"&gt;&lt;SPAN style="font-size: 13px; color: rgb(51, 51, 51); font-family: &amp;quot;SF Pro JP&amp;quot;, &amp;quot;SF Pro Text&amp;quot;, &amp;quot;SF Pro Icons&amp;quot;, &amp;quot;Apple WebExp Icons Custom&amp;quot;, &amp;quot;Hiragino Kaku Gothic Pro&amp;quot;, &amp;quot;ヒラギノ角ゴ Pro W3&amp;quot;, メイリオ, Meiryo, &amp;quot;ＭＳ Ｐゴシック&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif;"&gt;（iOS 12.0以降。iPhone、iPad、およびiPod touchで動作。）&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="asahi_editor_line"&gt;&lt;BR&gt;&lt;/DIV&gt;&lt;DIV class="asahi_editor_line"&gt;&lt;BR&gt;&lt;/DIV&gt;&lt;DIV class="asahi_editor_line"&gt;&lt;SPAN class="asahi_editor_styling" style="font-weight: bold;"&gt;  &lt;A target="_blank" href="https://apps.apple.com/jp/app/%25E3%2581%2584%25E3%2581%2584%25E3%2581%25AD%25E5%2586%2599%25E7%259C%259F/id1481027489?mt=8" class=" asahi_editor_link_current"&gt;App Store&lt;/A&gt;&lt;/SPAN&gt;（無料、課金・広告なし）&lt;/DIV&gt;&lt;DIV class="asahi_editor_line"&gt;&lt;DIV class="msg-pict-2" style="text-align: left;"&gt;&lt;IMG src="http://tos.asablo.jp/blog/img/2020/02/24/588ea9.jpg" alt="appLogo &amp;amp; appImage" title="appLogo &amp;amp; appImage" style="width: 200px; height: 100px; border: none;"&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class="asahi_editor_line"&gt;&lt;BR&gt;&lt;/DIV&gt;&lt;DIV class="asahi_editor_line"&gt;&lt;DIV class="msg-pict-2" style="text-align: left;"&gt;&lt;IMG src="http://tos.asablo.jp/blog/img/2020/02/21/5882f6.png" alt="image-QR" title="image-QR" style="width: 80px; height: 80px; border: none;"&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class="asahi_editor_line"&gt;&lt;BR&gt;&lt;/DIV&gt;
</description>
      <dc:subject>iOS プログラミングメモ</dc:subject>
    </item>
    <item>
      <title>電解コンデンサ１つでよみがえった 1Uサーバ</title>
      <link>https://tos.asablo.jp/blog/2012/12/26/6670896</link>
      <guid>https://tos.asablo.jp/blog/2012/12/26/6670896</guid>
      <pubDate>Wed, 26 Dec 2012 16:54:47 +0900</pubDate>
      <dcterms:modified>2012-12-27T11:25:36+09:00</dcterms:modified>
      <dcterms:created>2012-12-26T16:55:45+09:00</dcterms:created>
      <description>&lt;p&gt;&#13;
&lt;strong&gt;停電で起動しなくなった1Uサーバー&lt;/strong&gt;&#13;
&lt;/p&gt;&#13;
&lt;p&gt;&#13;
写真の 1Uサーバ（開発用途の公開サーバとして使用）は、2006年12月・大雪の朝の停電で停止した際に起動しなくなったが、下記の方法で応急的に修理したままになっている。先日メンティナンスの際に写真を撮る機会があったのでここで簡単に紹介する。このような修理方法もあるのだと知って頂ければ幸いである。ちなみに修理後はトラブルもなく正常に動作しているが、現在は新しい予備機を電源オフ状態で待機させている。&#13;
&lt;/p&gt;&#13;
&lt;p&gt;&#13;
余談であるが、サーバに限らずメンテナンスなど連続運転していた物を止めると再起動しないことは少なくない。サーバの場合は止めた時にミラーデスクの一方が故障してしまうことや、電源部とかマザーボードがダメになっていることも多い。古い機種だとマザーボードに電解コンデンサが使用されていて、容量抜けなどが原因の場合も少なくない。運が良ければ、スイッチオンを繰り返すと起動する場合もある。&#13;
&lt;/p&gt;&#13;
&lt;p&gt;&#13;
&lt;div class="msg-pict"&gt;&lt;img src="http://tos.asablo.jp/blog/img/2012/12/26/259d45.jpg" alt="" title="" width="300" height="200"&gt;&lt;/div&gt;&#13;
&lt;/br&gt;&lt;/p&gt;&#13;
&#13;
&lt;p&gt;&lt;strong&gt;電解コンデンサは簡単には取り外せない&lt;/strong&gt;&lt;/p&gt;&#13;
&lt;p&gt;クローズアップ写真のように数個の電界コンデンサーの頭の部分がふくらんでいる（全部 +5V系）。容量抜けだろうから、これを交換すれば良いのだが、多層基板に取り付けられた部品は簡単には取り外せないし、きちんとした道具立てでないと基板を壊すはめになる。&#13;
&lt;/p&gt;&#13;
&lt;p&gt;&#13;
&lt;div class="msg-pict"&gt;&lt;img src="http://tos.asablo.jp/blog/img/2012/12/26/259d42.jpg" alt="" title="" width="300" height="200"&gt;&lt;/div&gt;&#13;
&lt;/br&gt;&#13;
&lt;/p&gt;&#13;
&lt;p&gt;&lt;strong&gt;無理に外さなくてもいい場合もある&lt;/strong&gt;&lt;/p&gt;&#13;
&lt;p&gt;&#13;
コンデンサーが内部でショートしている場合はこの手は使えない。そうでなければ見てくれは悪いがこれで十分である。面倒だから4個分の合計より大きめの、10,000μF 1個で代用しておいた。電解コンデンサは高周波を扱うものではないから配線の引き回しは気にしなくてもよい。&#13;
&lt;/br&gt;&#13;
&lt;/p&gt;&#13;
&lt;div class="msg-pict"&gt;&lt;img src="http://tos.asablo.jp/blog/img/2012/12/26/259d43.png" alt="" title="" width="300" height="274"&gt;&lt;/div&gt;&#13;
&lt;/p&gt;&#13;
&lt;p&gt; （絶縁チューブに通して並列にハンダ付づけして取り付けただけ）&lt;/p&gt;&#13;
&lt;/br&gt;&#13;
&lt;/br&gt;
</description>
      <dc:subject>メンティナンス</dc:subject>
    </item>
    <item>
      <title>フォーカス位置の可変できる写真</title>
      <link>https://tos.asablo.jp/blog/2012/12/16/6661373</link>
      <guid>https://tos.asablo.jp/blog/2012/12/16/6661373</guid>
      <pubDate>Sun, 16 Dec 2012 12:12:31 +0900</pubDate>
      <dcterms:modified>2012-12-17T15:31:34+09:00</dcterms:modified>
      <dcterms:created>2012-12-16T12:13:52+09:00</dcterms:created>
      <description>&lt;strong&gt;ふつうのデジカメでフォーカス位置が変更できる写真を作ってみました。&lt;/strong&gt;&#13;
&lt;p&gt;写真のクリックした位置にピントが合います。但し、スマートフォン（iPhone, Androidで確認済み）だと QuickTimeムービーが表示されてしまうから、これはパソコン専用です。&lt;/p&gt;&#13;
&#13;
&lt;p&gt;使用ツール: &lt;a href="http://dof.chaoscollective.org/#vfCreator"&gt;DOF-Changeable Photos with an SLR&lt;/a&gt;&lt;/p&gt;&#13;
&#13;
&lt;p&gt;&#13;
&lt;!-- Approach 1. Embed as an Iframe--&gt;&#13;
&lt;!-- Begin DOF Image Code --&gt;&#13;
&lt;iframe src='http://dof.chaoscollective.org/dof_if/toc1478ri5uogg' frameborder='0' width='510' height='286'&gt;&lt;/iframe&gt;&#13;
&lt;!-- End DOF Image Code --&gt;&#13;
&lt;/p&gt;
</description>
      <dc:subject>写真</dc:subject>
    </item>
    <item>
      <title>PickerVew によるメニュー選択 (3/3)解決篇</title>
      <link>https://tos.asablo.jp/blog/2012/11/12/6632085</link>
      <guid>https://tos.asablo.jp/blog/2012/11/12/6632085</guid>
      <pubDate>Mon, 12 Nov 2012 18:07:52 +0900</pubDate>
      <dcterms:modified>2012-11-13T11:41:05+09:00</dcterms:modified>
      <dcterms:created>2012-11-12T18:13:37+09:00</dcterms:created>
      <description>&lt;p&gt;&#13;
&lt;strong&gt;解決策はロジックを飛び越えて訪れるものらしい・・・？&lt;/strong&gt;&lt;/br&gt;&#13;
もう面倒になって、タイマーのあら捜しをあきらめかけていた。そんな時ふとスレッドのことが気になりだした。UIPickerView も名前どうり UIだからメインスレッドで表示しているからである。そこに横槍を入れるならサブスレッドしかないだろう。早速やってみた。&lt;/br&gt;&#13;
最初 (1)不思議篇 で示したピッカーの停止した時に呼ばれるデリゲードメソッドの次の行に移動させる部分 (太字) だけをサブスレッドで実行するのだ。&#13;
&lt;pre&gt;&#13;
.....&#13;
.....&#13;
if (nowIndex_ == 0) {&#13;
    // 次の行に移動させる&#13;
    nowIndex_++;&#13;
    &lt;strong&gt;[picker_ selectRow:nowIndex_ inComponent:component&#13;
        animated:YES];&lt;/strong&gt;&#13;
}&#13;
&lt;/pre&gt;&#13;
&lt;p&gt;&#13;
&lt;strong&gt;これで決まり！&lt;/strong&gt;&lt;/br&gt;&#13;
きちんと書くとこんな感じ・・・&#13;
&lt;pre&gt;&#13;
// 停止時のデリゲート&#13;
- (void) pickerView:(UIPickerView*)pickerView didSelectRow:(NSInteger)row&#13;
 inComponent:(NSInteger)component&#13;
{&#13;
    // 位置をキープするインスタンス変数&#13;
    nowIndex_ = row;&#13;
    // ドラムの表示 0の位置を index=0 と想定&#13;
    if (nowIndex_ == 0) {&#13;
        // 次の行に移動させる&#13;
        nowIndex_++;&#13;
        [self adjustPickerPosition:nowIndex_]; // 移動メソッドを呼ぶ&#13;
    }&#13;
}&#13;
&#13;
// ドラムの移動メソッド&#13;
- (void)adjustPickerPosition:(NSInteger)row &#13;
{&#13;
    NSLog(@"adjusted!");&#13;
    // サブスレッド&#13;
    NSOperationQueue *queue = [[[NSOperationQueue alloc]init] autorelease];&#13;
    [queue addOperationWithBlock:^{&#13;
        // 行の表示位置をデーターに合わせる&#13;
        [picker_ selectRow:row inComponent:0 animated:YES];&#13;
    }];&#13;
}&#13;
&lt;/pre&gt;&#13;
NSOperationQueueクラスを使用しているが、iOS 4以降は内部でGCDを使用しているため結果的には同じである (参照:「詳解 iOS 5プログラミング」) 。これでやっと決定打となった。&lt;/br&gt;&lt;/br&gt;&#13;
&lt;strong&gt;簡単に検証してみる&lt;/strong&gt;&lt;/br&gt;&#13;
さて、せっかくだから逆方向に検証してみよう。手順は、この NSOperationQueueクラスの mainQueueメソッドで取得したキューを使って、このサブスレッドの中からメインのスレッドで実行してみたらどうなるか？ これで最初の時と同じように上手く行かなくなれば理屈は成り立つ。&#13;
&lt;pre style="color:red;"&gt;&#13;
    .....&#13;
    .....&#13;
    // サブスレッド&#13;
    NSOperationQueue *queue = [[[NSOperationQueue alloc]init] autorelease];&#13;
    [queue addOperationWithBlock:^{&#13;
        // メインスレッドで実行&#13;
        NSOperationQueue *mainQueue = [NSOperationQueue mainQueue];&#13;
        [mainQueue addOperationWithBlock:^{&#13;
            // 行の表示位置をデーターに合わせる&#13;
            [picker_ selectRow:row inComponent:0 animated:YES];&#13;
        }];&#13;
    }];&#13;
    .....&#13;
&lt;/pre&gt;&#13;
さて、&lt;span style="color:red;"&gt;これは予想どうりに失敗する。&lt;/span&gt;これでメインスレッド同士の競合が原因であることの検証もできたが、ここから先の解析は力不足であるし追求しないことにする。&lt;/br&gt;&lt;/br&gt;&#13;
&#13;
(おわり)&#13;
&lt;/p&gt;
</description>
      <dc:subject>iOS プログラミングメモ</dc:subject>
    </item>
    <item>
      <title>PickerVew によるメニュー選択 (2/3)試行錯誤篇</title>
      <link>https://tos.asablo.jp/blog/2012/11/11/6631200</link>
      <guid>https://tos.asablo.jp/blog/2012/11/11/6631200</guid>
      <pubDate>Sun, 11 Nov 2012 18:50:22 +0900</pubDate>
      <dcterms:modified>2012-11-13T11:45:28+09:00</dcterms:modified>
      <dcterms:created>2012-11-11T18:51:17+09:00</dcterms:created>
      <description>&lt;p style="color:red;"&gt;&#13;
興味のない方は、ここはスルーして次の (3/3)解決篇へ移ってほしい。&#13;
&lt;/span&gt;&lt;/p&gt;&#13;
&lt;p&gt;&#13;
&lt;strong&gt;マルチタッチイベントの競合の影響を疑ってみる&lt;/strong&gt;&lt;/br&gt;&#13;
ピッカー本来の動作と、想定していなかったタップ動作が競合している可能性を疑ってみたくなった。そこで、ピッカーに Gesture Recongnizer のタップジェスチャーを登録し、さらに複数のジェスチャーを認識できるような設定をしておく。この状態でデレゲートメソッドが呼び出された時にドラムの位置をチェックするようにしてみた。&#13;
&lt;pre&gt;&#13;
// タップジェスチャーをピッカーに登録 (viewDidLoadに設定)&#13;
picker_.userInteractionEnabled = YES;&#13;
UITapGestureRecognizer *tapGesture =[[UITapGestureRecognizer alloc]&#13;
    initWithTarget:self action:@selector(pickerTap:)];&#13;
[picker_ addGestureRecognizer:tapGesture];&#13;
[tapGesture release];&#13;
&#13;
// 複数のジェスチャーの認識を許可&#13;
// (UIGestureRecognizerDelegateプロトコルのオプションメソッド)&#13;
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer&#13;
    shouldRecognizeSimultaneouslyWithGestureRecognizer:&#13;
    (UIGestureRecognizer *)otherGestureRecognizer&#13;
{&#13;
    return YES; //許可&#13;
}&#13;
&#13;
// デレゲートメソッド&#13;
- (void)pickerTap:(UITapGestureRecognizer *)sender {&#13;
    // indexを取得&#13;
    NSUInteger index = [picker_ selectedRowInComponent:0];&#13;
    NSLog(@"タップ！ index : %d", index);    &#13;
    if (!index) index++;&#13;
        // ピッカーを進める&#13;
        [picker_ selectRow:index inComponent:0 animated:YES];&#13;
        nowIndex_ = index;&#13;
}&#13;
&lt;/pre&gt;&#13;
これで確認してみると、少しは改善されたような気もするが残念ながら決定打にはなり得ない。&#13;
&lt;/p&gt;&#13;
&lt;p&gt;&#13;
&lt;strong&gt;ダメついでに少し荒っぽいことを試してみたくなった・・・&lt;/strong&gt;&lt;/br&gt;&#13;
ふりだしに戻して、今度は逆に他の Gesture Recongnizer のタッチ解析を禁止してみたらどう反応するかやってみた。他にもっと気の利いた方法もあると思うが、以下の UIGestureRecognizer のサブクラスを作成した。&#13;
&lt;pre&gt;&#13;
// *** MyFlagGesture.h ***&#13;
#import &lt;UIKit/UIKit.h&gt;&#13;
#import &lt;UIKit/UIGestureRecognizerSubclass.h&gt;&#13;
@interface MyFlagGesture : UIGestureRecognizer&#13;
@end&#13;
&#13;
// *** MyFlagGesture.m ***&#13;
#import "MyFlagGesture.h"&#13;
@implementation MyFlagGesture&#13;
&#13;
// ジェスチャーの開始&#13;
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event&#13;
{&#13;
    [super touchesBegan:touches withEvent:event];&#13;
}&#13;
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event&#13;
{&#13;
    [super touchesMoved:touches withEvent:event];&#13;
}&#13;
// ジェスチャーの終了&#13;
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event&#13;
{    &#13;
    [super touchesEnded:touches withEvent:event];&#13;
    NSLog(@"GestureEnded!");&#13;
    // Recognized をセットすると親クラスにメッセージを送信する&#13;
    self.state = UIGestureRecognizerStateRecognized;&#13;
}&#13;
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event&#13;
{&#13;
    [super touchesCancelled:touches withEvent:event];&#13;
}&#13;
- (void)reset&#13;
{&#13;
    [super reset];&#13;
}&#13;
&#13;
// 他のジェスチャーの検出を禁止させる (オプションメソッド)&#13;
//  (Possible から遷移しようとする時に呼び出される)&#13;
- (BOOL)canPreventGestureRecognizer:&#13;
    (UIGestureRecognizer *)preventedGestureRecognizer&#13;
{&#13;
     return NO; // 禁止する (ディフォルトは禁止しない:YES)&#13;
}&#13;
// 他のジェスチャーの検出を禁止させる (オプションメソッド)&#13;
// (touchesBegan: を呼び出す直前に呼び出される)&#13;
- (BOOL)canBePreventedByGestureRecognizer:&#13;
    (UIGestureRecognizer *)preventingGestureRecognizer&#13;
{&#13;
    return NO;  // 禁止する (ディフォルトは禁止しない:YES)&#13;
}&#13;
@end&#13;
&lt;/pre&gt;&#13;
このクラスをインスタンス化してピッカーに登録してメッセージを受信できるようにする。&#13;
&lt;pre&gt;&#13;
// MyFlagGesture のインスタンスを登録 (viewDidLoadに設定)&#13;
picker_.userInteractionEnabled = YES;&#13;
MyFlagGesture *gesture = [[MyFlagGesture alloc] initWithTarget:self&#13;
    action:@selector(pickerGestureFlag:)];&#13;
[picker_ addGestureRecognizer:gesture];&#13;
[gesture release];&#13;
&#13;
// サブクラスからのジェスチャー完了メッセージを受け取る&#13;
- (void)pickerGestureFlag:(UIGestureRecognizer*)sender&#13;
{&#13;
    NSLog(@"MyFlagGesture Ended! (state = %d)",sender.state);&#13;
    // indexを取得&#13;
    NSUInteger index = [picker_ selectedRowInComponent:0];&#13;
    NSLog(@"タップ！ index : %d", index);    &#13;
    if (!index) index++;&#13;
        // ピッカーを進める&#13;
        [picker_ selectRow:index inComponent:0 animated:YES];&#13;
        nowIndex_ = index;&#13;
    }&#13;
}&#13;
&lt;/pre&gt;&#13;
ロジック的には、サブクラスのジェスチャーの終了時に呼び出されるメソッドは、ピッカーのドラムを回転して操作が終了してしまうともう呼び出されない。だから後は想定外のタップ動作だけに反応してくれるから上手く行く筈であるが残念ながらそうはならないところが悩ましい。&lt;/br&gt;&#13;
以上のいずれも問題の解決策にはならなかった。もうお手上げであろうか、もしこれで上手く行ったとしても少々複雑すぎるのも気になるが．．．。&lt;/br&gt;&lt;/br&gt;&#13;
（以下、(3/3)解決篇へ）&#13;
&lt;/p&gt;
</description>
      <dc:subject>iOS プログラミングメモ</dc:subject>
    </item>
    <item>
      <title>UIPickerVew によるメニュー選択 (1/3)不思議篇</title>
      <link>https://tos.asablo.jp/blog/2012/11/10/6629484</link>
      <guid>https://tos.asablo.jp/blog/2012/11/10/6629484</guid>
      <pubDate>Sat, 10 Nov 2012 12:11:22 +0900</pubDate>
      <dcterms:modified>2012-11-12T22:49:01+09:00</dcterms:modified>
      <dcterms:created>2012-11-10T12:15:55+09:00</dcterms:created>
      <description>&lt;p&gt;&#13;
&lt;strong&gt;これでも、60秒タイマーとして動作する（左側）&lt;/strong&gt;&lt;/br&gt;&#13;
不思議に思って、試作プロジェクトを作成してピッカーを組み込んでいろいろと実験してみた（写真右側）。プログラミングやデバッグの参考になれば幸いである。&#13;
&lt;/p&gt;&#13;
&lt;div class="msg-pict"&gt;&lt;img src="http://tos.asablo.jp/blog/img/2012/11/11/2484e0.png" alt="" title="" width="200" height="300"&gt;&amp;nbsp&amp;nbsp&lt;img src="http://tos.asablo.jp/blog/img/2012/11/11/2484e1.png" alt="" title="" width="200" height="300"&gt;&lt;/div&gt;&#13;
&lt;p&gt;&lt;strong&gt;タイマーの設定方法&lt;/strong&gt;&lt;/br&gt;&#13;
分の数値 0がグレーにしてあるように、この位置で停止することは想定されていないし、普通に操作している限りまずはこのようにはならない。しかし、1 --&gt; 0 方向にゆっくり戻しながら、素早くタップを繰り返し 0の位置でそっと指を離すと再現できる。最初は難しいが、慣れるとすぐにできるようになるから興味のある方は実際に試しててもらいたい (なお、逆方向 59 --&gt; 0 に移動しながらはできない) 。&#13;
&lt;/p&gt;&#13;
&lt;p&gt;&lt;strong&gt;勝手にロジックを推測してみる&lt;/strong&gt;&lt;/br&gt;&#13;
ドラムを回転して 0の位置で指を離した場合はつぎの行に強制的に移動させる。この辺は基本的にはだれが考えても同じのはず。&#13;
&lt;pre&gt;&#13;
// 停止時のデリゲート&#13;
- (void) pickerView:(UIPickerView*)pickerView didSelectRow:(NSInteger)row&#13;
 inComponent:(NSInteger)component&#13;
{&#13;
    nowIndex_ = row;   &#13;
    // ドラムの表示 0の位置を index=0 と想定&#13;
    if (nowIndex_ == 0) {&#13;
        // 次の行に移動させる&#13;
        nowIndex_++;&#13;
        [picker_ selectRow:nowIndex_ inComponent:component animated:YES];&#13;
    }&#13;
}&#13;
&lt;/pre&gt;&#13;
これで、実際に試してみると意図した動作をすることがわかる。タイマーと同様にエンドレスのドラムを実現しないと逆方向は確かめられないないが、これだけでも解決すべき問題点の再現には十分だろう。&#13;
&lt;/p&gt;&#13;
&lt;p&gt;&lt;strong&gt;さらに推測をふくらます&lt;/strong&gt;&lt;/br&gt;&#13;
この状態でタイマーをスタートしてから、キャンセルして戻ってくると 0 --&gt; 1になっている。あるいはこの状態でアプリを終了してから再起動しても 0 --&gt; 1に設定されている。多分タイマーを起動した時や、プログラムがバッググラウンドに遷移する際に呼ばれるデリゲードなどに、下記のようなコードが追加されているのだろう。&lt;/br&gt;&#13;
&lt;pre&gt;&#13;
// 試作の場合は inComponent:0&#13;
[picker_ selectRow:nowIndex_ inComponent:1 animateed:NO]&#13;
&lt;/pre&gt;&#13;
これでも実用上は問題ないが問題点は未解決のままである。&lt;/br&gt;&lt;/br&gt;&#13;
（以下、 (2/3) 試行錯誤篇、(3/3)解決篇へ）&#13;
&lt;/p&gt;
</description>
      <dc:subject>iOS プログラミングメモ</dc:subject>
    </item>
    <item>
      <title>これでもOK！ miniDVテープの修理</title>
      <link>https://tos.asablo.jp/blog/2012/09/14/6573484</link>
      <guid>https://tos.asablo.jp/blog/2012/09/14/6573484</guid>
      <pubDate>Fri, 14 Sep 2012 11:29:42 +0900</pubDate>
      <dcterms:modified>2012-09-14T15:40:57+09:00</dcterms:modified>
      <dcterms:created>2012-09-14T12:19:08+09:00</dcterms:created>
      <description>&lt;p&gt;&#13;
&lt;strong&gt;分解した miniDVテープ&lt;/strong&gt;&#13;
&lt;/p&gt;&#13;
&lt;div class="msg-pict"&gt;&lt;img src="http://tos.asablo.jp/blog/img/2012/09/14/22f080.png" alt="" title="" width="300" height="243"&gt;&lt;/div&gt;&#13;
&lt;p&gt;&#13;
現役を引退してしまった miniDVですが、撮りだめたテープの中に&#13;
貴重なコンテンツが保存されていることも多いのではないでしょうか。この際パソコンに移してDVDに焼いておいた方がいいですね。&#13;
&lt;/p&gt;&#13;
&lt;p&gt;&#13;
私は、手持ちのビクターのハンディカム（Victor GR-DV1）からパソコンにキャプチャーする途中でエラー（E03）が発生。急いで止めて、テープを取り出したが残念ながらテープ絡んではみ出してしまった。あきらめの境地で、ググってみると修理は２千円以上は取れれるらしい。いつものDIY精神で分解してテープはすぐに整えたが、組み立てる段階になって、２時間余り奮闘したものの３個の部品がどうしても元に収まらない。&#13;
&lt;/p&gt;&#13;
&lt;p&gt;&#13;
深夜近く、もう諦めの境地で思い切って部品を余らせたまま外見上は元どうりに組み立ててみた。組み立てみて改めてこれらの小さな３つの部品の役割に気づいた。&#13;
&lt;/p&gt;&#13;
&lt;pre&gt;&#13;
　1. 録画プロテクトのON/OFF（スライドノブ）&#13;
　2. ゴミの侵入を防ぐ（プラスチックの片）&#13;
　3. テープの前蓋を閉じる（バネ）&#13;
&lt;/pre&gt;&#13;
&lt;p&gt;&#13;
どうやら、丁寧に扱えばキャプチャーするだけなら無くても良さそうな物ばかりだ。思い切って、この状態でハンディカムに入れるとローディングも正常、再生も問題なく動作する。まずはメデタシとなった。&#13;
&lt;/p&gt;&#13;
&lt;p&gt;&#13;
&lt;strong&gt;余った？ ３つの部品&lt;/strong&gt;&#13;
&lt;div class="msg-pict"&gt;&lt;img src="http://tos.asablo.jp/blog/img/2012/09/14/22f058.png" alt="" title="" width="300" height="355"&gt;&lt;/div&gt;&#13;
&lt;p&gt;&#13;
さて、このままキャプチャー続行してもよいが身内に連絡したら、SONYのハンディカムを現存しているとのこと。またエラーは困るから、これを送ってもらうことにした。キャプチャーはお預けとなった。&#13;
&lt;/p&gt;&#13;
&lt;p&gt;&#13;
（参考）分解したテープはSONY製で細いプラス・ドライバーだけでケースは簡単に分解できる。しかし、手持ちのPanasonicのテープは、ネジ類が全く見当たらないので簡単には分解できないらしい。&#13;
&lt;/p&gt;&#13;
&lt;br /&gt;
</description>
      <dc:subject>メンティナンス</dc:subject>
    </item>
    <item>
      <title>UI 操作と競合しないスレッドによるタイマー表示</title>
      <link>https://tos.asablo.jp/blog/2012/07/21/6517748</link>
      <guid>https://tos.asablo.jp/blog/2012/07/21/6517748</guid>
      <pubDate>Sat, 21 Jul 2012 11:22:04 +0900</pubDate>
      <dcterms:modified>2012-07-21T12:38:05+09:00</dcterms:modified>
      <dcterms:created>2012-07-21T12:04:15+09:00</dcterms:created>
      <description>画面にUIPickerと、NSTimerを使ったタイマーを配置した場合、カウント中にピッカーを回転させるとその間カウンターの表示が停止する。これは、NSTimer、UIViewの表示がともにメインスレッドで動作するからです。&#13;&lt;br&gt;
これを回避するには、タイマーのカウント部分を別のスレッドにすることですが、カウンターの更新部分はUI にアクセスすることになる（ ...メインスレッドに用意したメソッドを呼び出す）あまりすっきりしない。iOS 4 から導入されたGCDならメインのUI にアクセスできるから扱いやすい。これを直接利用してもよいが、NSOperationQue もGCDが使われるようになっているからこれを使ってテストしてみたが、動作は快適である。&#13;&lt;br&gt;
&#13;&lt;br&gt;
// タイマーの更新（テストコード）&#13;&lt;br&gt;
- (void) countUpdate&#13;&lt;br&gt;
{&#13;&lt;br&gt;
　NSOperationQueue *queue = [[[NSOperationQueue alloc]init] autorelease];&#13;&lt;br&gt;
　[queue addOperationWithBlock:^{&#13;&lt;br&gt;
        &#13;&lt;br&gt;
　　while (1) {&#13;&lt;br&gt;
　　　NSOperationQueue *mainQueue = [NSOperationQueue mainQueue];&#13;&lt;br&gt;
　　　[mainQueue addOperationWithBlock:^{&#13;&lt;br&gt;
　　　　// カウントアップ&#13;&lt;br&gt;
　　　　count_++;&#13;&lt;br&gt;
　　　　// 再生時間を更新&#13;&lt;br&gt;
　　　　countLabel_.text = [NSString stringWithFormat:@&amp;quot;%d&amp;quot;, count_]; &#13;&lt;br&gt;
　　　}];&#13;&lt;br&gt;
　　　[NSThread sleepForTimeInterval:1.0f];&#13;&lt;br&gt;
　　}&#13;&lt;br&gt;
　}];&#13;&lt;br&gt;
}&#13;&lt;br&gt;
&#13;&lt;br&gt;
参考：&#13;&lt;br&gt;
　詳解 iOS 5 プログラミング&lt;br&gt;
</description>
      <dc:subject>iOS プログラミングメモ</dc:subject>
    </item>
    <item>
      <title>CALayerを使わない、UIViewアニメの停止/再開</title>
      <link>https://tos.asablo.jp/blog/2012/07/21/6517715</link>
      <guid>https://tos.asablo.jp/blog/2012/07/21/6517715</guid>
      <pubDate>Fri, 20 Jul 2012 10:25:44 +0900</pubDate>
      <dcterms:modified>2012-07-21T11:03:21+09:00</dcterms:modified>
      <dcterms:created>2012-07-21T11:00:27+09:00</dcterms:created>
      <description>UIViewのアニメーションはサンプル例も多く作りやすいが、アニメーションの停止、再開をコントロールしたい場合、CALayerを扱ううことになって面倒になるようである。&#13;&lt;br&gt;
目的にもよるが、例えばボタン等のUI部品の点滅アニメーションの場合は、CALayerを扱わなくても容易に実現できた。&#13;&lt;br&gt;
&#13;&lt;br&gt;
// 点滅アニメーション&#13;&lt;br&gt;
-(void) flashAnimation:(BOOL)start&#13;&lt;br&gt;
{&#13;&lt;br&gt;
　[UIView beginAnimations:nil context:NULL];&#13;&lt;br&gt;
　[UIView setAnimationDuration:0.3f];&#13;&lt;br&gt;
　[UIView setAnimationCurve:UIViewAnimationCurveLinear];&#13;&lt;br&gt;
&#13;&lt;br&gt;
　if (start) {       &#13;&lt;br&gt;
　　// -点滅開始-&#13;&lt;br&gt;
　　[UIView setAnimationDuration:0.8f];&#13;&lt;br&gt;
　　[UIView setAnimationRepeatCount:1000];&#13;&lt;br&gt;
　　[UIView setAnimationRepeatAutoreverses:YES];&#13;&lt;br&gt;
　　[button_ setAlpha:0.5f];&#13;&lt;br&gt;
　} else {&#13;&lt;br&gt;
　　// -点滅停止-&#13;&lt;br&gt;
　　[UIView setAnimationBeginsFromCurrentState:YES];&#13;&lt;br&gt;
　　[UIView setAnimationRepeatCount:1];&#13;&lt;br&gt;
　　[button_ setAlpha:1.0f];        &#13;&lt;br&gt;
　}&#13;&lt;br&gt;
　[UIView commitAnimations];&#13;&lt;br&gt;
}&#13;&lt;br&gt;
&#13;&lt;br&gt;
参考サイト：&#13;&lt;br&gt;
&lt;a href="http://stackoverflow.com/questions/6893181/how-to-flash-a-button-on-ui-thread"&gt;http://stackoverflow.com/questions/6893181/how-to-flash-a-button-on-ui-thread&lt;/a&gt;&lt;br&gt;
</description>
      <dc:subject>iOS プログラミングメモ</dc:subject>
    </item>
    <item>
      <title>Xcode4.x で 1st. iPod touchをテストする</title>
      <link>https://tos.asablo.jp/blog/2012/07/19/6516088</link>
      <guid>https://tos.asablo.jp/blog/2012/07/19/6516088</guid>
      <pubDate>Thu, 19 Jul 2012 12:10:03 +0900</pubDate>
      <dcterms:modified>2012-07-19T12:56:50+09:00</dcterms:modified>
      <dcterms:created>2012-07-19T12:11:52+09:00</dcterms:created>
      <description>MPVolumeViewは、シミュレーターで表示されないので実機での確認が必須となる。iOS 5.1.1 の iPhone 4S, iPod touch (4th） とも問題なかったが、手持ちの初代 iPod touch (iOS 3.1.3) での動作確認にに手間取ったのでメモを残す。（開発環境は、Xcode 4.3.3）&#13;&lt;br&gt;
&#13;&lt;br&gt;
1. まず Xcode 4.x を iOS 3.x に対応させるのに下記のサイトが参考になった。&#13;&lt;br&gt;
&lt;a href="http://akamatsu.org/aka/2012/03/26/ios-3-1-3-compatible/"&gt;http://akamatsu.org/aka/2012/03/26/ios-3-1-3-compatible/&lt;/a&gt;&#13;&lt;br&gt;
&#13;&lt;br&gt;
2. アプリを実機に転送してもUIVew が正しく表示されない（viewDidLoadがコールされない）、この対応には下記のサイトが参考になった。&#13;&lt;br&gt;
&lt;a href="http://homepage2.nifty.com/GREIF/xc_column.html"&gt;http://homepage2.nifty.com/GREIF/xc_column.html&lt;/a&gt;&#13;&lt;br&gt;
&#13;&lt;br&gt;
3. 最後にミスったのは、No Volume Available が表示されるのみで、肝心なボリュウームのスライダーが出てこない。これに関しては、このサイトに突き当たるまで気づかなかった。言われてみれば当然です、焦った、、！&#13;&lt;br&gt;
&lt;a href="http://www.mail-archive.com/cocoa-dev@lists.apple.com/msg41546.html"&gt;http://www.mail-archive.com/cocoa-dev@lists.apple.com/msg41546.html&lt;/a&gt;&lt;br&gt;
</description>
      <dc:subject>iOS プログラミングメモ</dc:subject>
    </item>
    <item>
      <title>1U 自宅サーバー（追伸 その2）</title>
      <link>https://tos.asablo.jp/blog/2012/07/08/6517070</link>
      <guid>https://tos.asablo.jp/blog/2012/07/08/6517070</guid>
      <pubDate>Sun, 08 Jul 2012 20:56:23 +0900</pubDate>
      <dcterms:modified>2012-07-20T17:53:26+09:00</dcterms:modified>
      <dcterms:created>2012-07-20T17:43:10+09:00</dcterms:created>
      <description>&lt;p&gt;&lt;strong&gt;監視用の温度計の追加&lt;/strong&gt;&lt;/p&gt;&#13;
&lt;p&gt;　自宅サーバー運用開始からまる3年が経過しましたが、この間ミラーリングのHDを一回交換したのみでトラブルもなく連続運転しています。先日、秋葉原に立ち寄って際に同じ温度計を入手し、吸入、排気部に個別にセンサー部を配置して同時に監視できるようになりました。&lt;/p&gt;&#13;
&#13;
&lt;div class="msg-pict"&gt;&lt;center&gt;&lt;img src="http://tos.asablo.jp/blog/img/2012/07/20/218e78.jpg" alt="" title="" width="300" height="200"&gt;&lt;center&gt;&lt;/div&gt;&lt;br /&gt;&#13;
&#13;
&lt;p&gt;今年も早くから真夏日が続いていますが、サーバー君も毎日頑張ってくれています。&lt;/p&gt;&lt;br /&gt;
</description>
      <dc:subject>ハードウェア始末記</dc:subject>
    </item>
    <item>
      <title>1U 自宅サーバー（追伸 その1）</title>
      <link>https://tos.asablo.jp/blog/2009/12/30/6517019</link>
      <guid>https://tos.asablo.jp/blog/2009/12/30/6517019</guid>
      <pubDate>Wed, 30 Dec 2009 16:21:09 +0900</pubDate>
      <dcterms:modified>2012-07-20T17:44:04+09:00</dcterms:modified>
      <dcterms:created>2012-07-20T16:24:31+09:00</dcterms:created>
      <description>&lt;p&gt;自宅サーバーの紹介から半年が経過しました。サーバー君は猛暑も無事乗り切ってノントップで運用中です。いよいよ、2009年も終わろうとしていますが、真夏の温度データなどを追伸として紹介します。&lt;/P&gt;&lt;br /&gt;&#13;
&#13;
&lt;p&gt;&lt;strong&gt;最も心配した夏場の温度上昇&lt;/strong&gt;&lt;/p&gt;&#13;
&lt;p&gt;　元々一番の心配事は空調の無い環境での夏の温暖化対策でした。前稿のように、縁の下からの自然の冷気を頼りに騒音対策の関係もあって小さなスペースに収納したこと、さらに収納エリアの排気も十分でないことでした。当地は全国的にも猛暑日が比較的長い地域ですが、幸い今年は比較的少なかったものの、それでも図に示したようにサーバー君にとっては大変な日々だったことが想像できます。データにある期間以外も同じような日々が約２ヶ月以上に渡って続いていました。&lt;/p&gt;&#13;
&lt;div class="msg-pict"&gt;&lt;img src="http://tos.asablo.jp/blog/img/2012/07/20/218e3f.png" alt="" title="" width="300" height="225"&gt;&lt;/div&gt;&lt;br /&gt;&#13;
&#13;
&lt;p&gt;&lt;strong&gt;使用した温度計&lt;/strong&gt;&lt;/p&gt;&#13;
&lt;p&gt;　温度の計測に使用した温度計は、秋葉原で２千円少々で求めた、商品名「デジタル表面温度センサモジュール」というもので、サーミスタ部分と本体が約３メートルの細い線で分離されたタイプを使用しました。&lt;/p&gt;&#13;
&lt;p&gt;　写真のように、センサー部分を目的の位置にビニールテープで仮止めておき、本体はサーバー室の蓋の隙間から引出して外にぶら下げて置くことで何時でも簡単に見ることができます。本来は、温度計を２つ用意して常時２箇所が見れると便利ですが、趣味の自宅サーバーですから今回は同日に一つのセンサーをサーバーの前面と後面の排気口を何回か移しかえては測定しました。サーバー室内の温度は30分もすれば定常化しますから、労をおしまなければ十分です。&lt;/p&gt;&#13;
&#13;
&lt;div class="msg-pict"&gt;&lt;img src="http://tos.asablo.jp/blog/img/2012/07/20/218e3d.jpg" alt="" title="" width="170" height="170"&gt;&amp;nbsp;&amp;nbsp;&lt;img src="http://tos.asablo.jp/blog/img/2012/07/20/218e3e.jpg" alt="" title="" width="170" height="170"&gt;&lt;/div&gt;&lt;br /&gt;&#13;
&#13;
&lt;p&gt;&lt;strong&gt;計測データについて&lt;/strong&gt;&lt;/p&gt;&#13;
&lt;p&gt;　正確な日付や時間は、繁雑になるためグラフの目盛りから省略してあります。気象台発表の気温は35度程度の環境での概要データとして参考程度に見てください。グラフから現サーバーの内部の温度上昇分は約９度であることがわかりますが、多分これは季節によって大きく違わないはずですから、サーバーの監視のデータの目安として利用できるかもしれません。&lt;/p&gt;&lt;br /&gt;
</description>
      <dc:subject>ハードウェア始末記</dc:subject>
    </item>
    <item>
      <title>1U 自宅サーバー（4/4）</title>
      <link>https://tos.asablo.jp/blog/2009/07/29/6516900</link>
      <guid>https://tos.asablo.jp/blog/2009/07/29/6516900</guid>
      <pubDate>Wed, 29 Jul 2009 10:56:25 +0900</pubDate>
      <dcterms:modified>2012-07-20T15:43:05+09:00</dcterms:modified>
      <dcterms:created>2012-07-20T11:26:07+09:00</dcterms:created>
      <description>&lt;p&gt;前回は、階段下の 1U 自宅サーバーのエアーフローについて縁の下からの吸気口や階段のファンの位置関係などを図解で紹介しました。最終回は数点の写真を交えて自宅サーバーの締めくくりとします。&lt;/p&gt;&lt;br /&gt;&#13;
&#13;
&lt;p&gt;&lt;strong&gt;写真&lt;/strong&gt;&lt;/p&gt;&#13;
&lt;p&gt;（左より&amp;nbsp;:&amp;nbsp;空気の吸入口、ケーブルの引込み、サーバー置場の蓋）&lt;/p&gt;&#13;
&lt;div class="msg-pict"&gt;&lt;img src="http://tos.asablo.jp/blog/img/2012/07/20/218d19.jpg" alt="" title="" width="135" height="180"&gt;&amp;nbsp;&lt;img src="http://tos.asablo.jp/blog/img/2012/07/20/218d1a.jpg" alt="" title="" width="135" height="180"&gt;&amp;nbsp;&lt;img src="http://tos.asablo.jp/blog/img/2012/07/20/218d1b.jpg" alt="" title="" width="135" height="180"&gt;&lt;/div&gt;&lt;br /&gt;&#13;
&#13;
&lt;p&gt;&lt;strong&gt;空気の吸入口&lt;/strong&gt;&lt;/p&gt;&#13;
&lt;p&gt;　サーバー前面の下から上を向いている円錐形をした物体は、洗濯機の排水用フォースの取り付け口の部分です。塩化ビニール材で弾力性があって、この中にフィルターの材料を押し込んでいますが扱いやすいし、一番の見つけものだと思っています。排水フォースその物は直径は一定 （ 4cm弱） ですから、この部分は洗濯層の底部の取り付け導入部分の径に合わせて、適当にカットできるように作られている部分です。&lt;/p&gt;&#13;
&lt;p&gt;　径の小さい床との取り付け部分は、これもホームセンターで見つけたちょっとした部品です。それほど広くない間隔で押入れの中などにハンガーの棒を取り付けるような用途に使う両端金具です。3箇所にネジ止めができ、通過穴の径が塩ビの小さい方とピッタリ合っていたため使用しましたが、縁の下からネズミ？　が入ってこないように薄手の金網を挟んで床にネジ止めしました。&lt;/p&gt;&#13;
&lt;p&gt;　なにぶんにも、夏場はサーバーにとって救いの冷気取り入れ口ですから、中間の空いている部分にもう一つ追加した方が良いかもしれません。縁の下からファンで吸入していませんが、サーバーの前面から吸い込むエアーフローにお任せです。&lt;/p&gt;&lt;br /&gt;&#13;
&#13;
&lt;p&gt;&lt;strong&gt;ケーブルの引き込み&lt;/strong&gt;&lt;/p&gt;&#13;
&lt;p&gt;　階段下に都合よくケーブルの配管はないし、となりのリビングから直接引き込むのはこれも気がひけるものです。当初からの悩みの一つでしたが、思いつきでやってみたところ上手い具合にいきました。どの状況下でも都合よく行くとは思えませんが、こんな手法も有るという例として紹介しておきます。&lt;/p&gt;&#13;
&lt;p&gt;　まずサーバー置き場の引き込み口の穴を先にあけておきます、次にリビングの壁の照明用のスイッチ部分をそっくり前へ引出したままにしておき、その後ろの空間（内部とリビング側の 20センチ足らずの板の隙間）から先に開けた引き込み口の穴の方を目がけて、細いメッセンジャー（適当なものがないので被覆付きのステンレスワイヤーを使用）を押し込んでいって探り当てるのです。&lt;/p&gt;&#13;
&lt;p&gt;　十分な長さを入れ込んだところで中に回って、懐中電灯でワイヤーが付近へ着ていないか確認するのですが、簡単には成功しません。途中であきらめなければ 3メートル程度の距離ならメッセンジャーは通過できるはずです。...まさに運ですね。&lt;/p&gt;&#13;
&lt;p&gt;　LANケーブルの苦労と比べると、手前の電源コンセントは、ちょうどリビング側と背中合わせの位置にしましたから簡単です。&lt;/p&gt;&lt;br /&gt;&#13;
&#13;
&lt;p&gt;&lt;strong&gt;サーバー置き場の蓋&lt;/strong&gt;&lt;/p&gt;&#13;
&lt;p&gt;　この写真の角度では見えにくいのですが、このような半固定式の蓋で通常は密封してして、これも騒音対策の一つなっています。　取り付け構造は目的が音の遮断だけですからかなり手抜き工作をしています。上下だけは簡単な溝を設けていますが、左右は少し大きめにしておいてグーと押し込む感じです。&lt;/p&gt;&#13;
&lt;p&gt;　最初にも少しふれましたが、中に高価なフエルト布などを張っているより、蓋、扉、戸、などの効果は絶大です。空間に余裕があれば、例えば数センチの隙間を設けて階段に沿って天井を二重にしてみたり、内部の左右も同じように少し隙間を設けてさらに板で密封するように囲えば、耳をかざしても物音一つしなくなると思います。しかし、現状でも知っていて深夜にそっと耳をすませば判る程度の仕上がりです。何も知らされていなければおそらく気づかないはずです。ただ階段室だけは別です、誰にでもすぐにわかります。&lt;/p&gt;&lt;br /&gt;&#13;
&#13;
&lt;p&gt;「1U 自宅サーバー」と題して 4回にわたって紹介しました。最も心配な温暖化も、今のところ屋外では 30度以上（先日は最高34度を記録）の夏日が続いたりしていますが、階段の排気ファンのところに取り付けた温度計は最大で28度位におさまっています。サーバー置き場の密閉用の蓋の表の面にももう一つ温度計が付けてあります。&lt;br /&gt;&#13;
　家族の安心のため階段の換気用のファンの真上の付近には火災報知器も取り付けてあります。&lt;/p&gt;&lt;br /&gt;
</description>
      <dc:subject>ハードウェア始末記</dc:subject>
    </item>
    <item>
      <title>1U 自宅サーバー（3/4）</title>
      <link>https://tos.asablo.jp/blog/2009/07/25/6516884</link>
      <guid>https://tos.asablo.jp/blog/2009/07/25/6516884</guid>
      <pubDate>Sat, 25 Jul 2009 19:35:13 +0900</pubDate>
      <dcterms:modified>2012-07-20T15:48:09+09:00</dcterms:modified>
      <dcterms:created>2012-07-20T10:45:25+09:00</dcterms:created>
      <description>&lt;p&gt;前回は、1U 自宅サーバーの設置場所として、どこの宅でも利用価値の比較的少ないと思われる、階段下の低い部分という手段もあることを知っていただくため、写真等をまじえて紹介しました。&lt;/p&gt;&lt;br /&gt;&#13;
&#13;
&lt;p&gt;&lt;strong&gt;サーバー置き場の換気&lt;/strong&gt;&lt;/p&gt;&#13;
&lt;p&gt;　設置場所の容積は、約 0.5立方メートル、ミドルタワー型ケースの 約10倍もありこの空間の換気に 12センチのファンが適当であるとは思えないが、それなりの効果はあるであろうと勝手に思っているだけです。&lt;/p&gt;&#13;
&lt;p&gt;　当初は、ホームセンターで見かけたパイプファン（直径 10センチのトイレの換気扇？）も検討してみたが、このファン自体の騒音がうるさいので取り止めた。結論として、1Uの後方から噴出される風量はかなりな量であるから、とてもバランスがとれているとは思えないし、いずれにしてもいい加減である。なお、ファンはソニーが開発したという流体動圧軸受を採用した 1800rpm/12V 静音タイプである。スイッチで電圧切替が可能な電源アダプターを使用して夏場は 9V、その他は 6V で駆動するつもりでこのようにしている。&lt;/p&gt;&lt;br /&gt;&#13;
&#13;
&lt;p&gt;&lt;strong&gt;エアーフロー&lt;/strong&gt;&lt;/p&gt;&#13;
&lt;p&gt;　空気の吸入口に関しは良いアイディアが浮かばないなま、4月の中旬に DIY工事だけはスタートした。階段室の横は、リビングで夏場はエアコンが入っている時間も長いからここから吸入することも考えてみたが、当然ながら騒音がリビングへ逆流してくるし DIY工事も簡単ではない。あれこれと思い巡らしながら、作業中にふと気づいたのは縁の下の空気がひんやりしていることである。&lt;/p&gt;&#13;
&lt;p&gt;　この辺は乾燥地であると、かつて近所の方に聞いたこともある。結論として、通気・換気は図のような構造となった。このまま夏場が乗り切れればまずは、めでたしメデタシです。&lt;/p&gt;&#13;
&#13;
&lt;div class="msg-pict"&gt;&lt;center&gt;&lt;img src="http://tos.asablo.jp/blog/img/2012/07/20/218d11.png" alt="" title="" width="300" height="220"&gt;&lt;/center&gt;&lt;/div&gt;&lt;br /&gt;&#13;
&#13;
&lt;p&gt;以上、今回は 1U自宅サーバーのエアーフローの一例として簡単な図で紹介しました。次回はもう少し細部の写真を用意し、具体的に見てもらう予定です。&lt;/p&gt;&lt;br /&gt;
</description>
      <dc:subject>ハードウェア始末記</dc:subject>
    </item>
    <item>
      <title>1U 自宅サーバー（2/4）</title>
      <link>https://tos.asablo.jp/blog/2009/06/23/6516210</link>
      <guid>https://tos.asablo.jp/blog/2009/06/23/6516210</guid>
      <pubDate>Tue, 23 Jun 2009 10:30:18 +0900</pubDate>
      <dcterms:modified>2012-07-20T15:50:34+09:00</dcterms:modified>
      <dcterms:created>2012-07-19T16:18:05+09:00</dcterms:created>
      <description>&lt;p&gt;すこし間が空いてしまいましたが、1U自宅サーバーの続編です。30度を超える夏日が続いていますが、クーラーなしの環境でファンのみでサーバー君も頑張っています。&lt;/p&gt;&lt;br /&gt;&#13;
&#13;
&lt;p&gt;&lt;strong&gt;設置場所&lt;/strong&gt;&lt;/p&gt;&#13;
&lt;p&gt;　自宅の何処に設置するか？　前からいくつかの候補の一つとして考えていた、階段下の最も低い部分 6段分を拝借することにしました。下の踊り場から数段目位までは、何処のお宅でも収納場所として利用価値が低いため家族からの反対も少ないのではないでしょうか。しかし、肝心なのは騒音です、家族のストレスの原因になったりしては大変です。騒音、特に 1Uサーバーの場合は空冷 ファンの風を切る音が半端ではなく、どんな結果になるか検討もつきません。 で、結果的には知らせなければ来客の誰も気づきませんし、階段上の部屋は寝室ですが深夜でも気になったことは一度もありません ...まずまずは成功です。&lt;/p&gt;&lt;br /&gt;&#13;
&#13;
&lt;p&gt;&lt;strong&gt;設置の様子 （写真）&lt;/strong&gt;&lt;/p&gt;&#13;
&lt;p&gt;　階段の4段目に取り付けたパソコンケース用（12ｃｍ）換気 ファンと、階段下に設置したサーバーの様子。階下のサーバー室は、普段は前面には半固定式の蓋を取り付けて密閉されており、これは、ほこり対策と騒音には抜群の効果を発揮してます。内部一面に張ったフエルト布は騒音には予想したほどの効果はありませんでした。写真の 1U サーバー2台の内、常時運転しているのは1台のみです。&lt;/p&gt;&#13;
&#13;
&lt;div class="msg-pict"&gt;&lt;center&gt;&lt;img src="http://tos.asablo.jp/blog/img/2012/07/19/2188cc.jpg" alt="" title="" width="180" height="240"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;img src="http://tos.asablo.jp/blog/img/2012/07/19/2188cd.jpg" alt="" title="" width="180" height="240"&gt;&lt;/center&gt;&lt;/div&gt;&#13;
&#13;
&lt;br /&gt;&lt;p&gt;以上、今回は設置場所の紹介のみです。次回はサーバー君の温暖化対策などを紹介します。&lt;/p&gt;&lt;br /&gt;
</description>
      <dc:subject>ハードウェア始末記</dc:subject>
    </item>
  </channel>
</rss>
