20 May 2012, 14:25

iRemoconを使って家電を操作した

今日はiRemoconを使って家電を操作した。

正直声で家電を操作できることに驚いた。

未来の部屋が完成しつつある。

来週はコンピューターとの対話の部分を作成する。

この文章も音声認識を使っても記述している。

音声認識の技術に期待をしている。

先月の日経Linuxにちょうど家電を操作する特集が組まれていたんだね。

電子書籍で購入した。

日経 Linux (リナックス) 2012年 05月号 [雑誌]

中古価格
¥1,800から
(2012/5/20 23:31時点)

20 May 2012, 05:06

iRemoconで照明を制御してみた

 

iRemoconで照明を制御してみた。

使用したのは以下の機械。

これを2つの間接照明につなげて制御した。

ちなみに、ヨドバシの店員に尋ねたところ、
リモコンで制御できる商品はあとはこれくらいしか売っていないみたい。

 

海外ではリモコンで照明を制御する製品は多いけれど(家が広いので)
日本では盛んでないとのこと。
都内の海外インテリアを扱うお店なら売っているかも言われた。

ちなみに、このようなリモコン制御する照明はLEDをつかってはいけないらしい。
(光がちらつくため)

知恵を絞ればアイデアはまだまだあるもので、
PCからUSBで電源スイッチを制御するハブを買えば、
複数のコンセントをPCから制御できるんだね。

13 May 2012, 14:28

iRemoconでPCからエアコン制御をしてみた

iRemoconでPCからエアコン制御をしてみた。

参考にしたのは以下のサイト。
Boost.Asio + iRemocon でテレビを操作してみた
iRemoconの音声操作設定手順を纏めてみました

ただ真似しただけだけど、なかなか大変だった。
詰まったのは ファイアウォ-ルのポ-トの開け方と、Boostのコンパイル方法。
ここをみて解決。
Windows 7 パーソナルファイアウォールに個別ポート許可設定
http://www.richelbilderbeek.nl/CppLinkErrorUndefinedReferenceToBoostSystem.htm

環境は Windows 7 + Cygwin
Boostのコンパイルが特にハマったけれど結局以下で解決。

$ g++ iRemocon.cpp -o iRemocon -L/usr/local/lib -lboost_system-mt

-lboost_system-mtをリンクさせるのがミソだったみたい。
いやいや、なかなか追い詰められた。

今日の成果

13 May 2012, 00:41

iRemoconを買った

iRemoconを買った。

Glamo iRemocon(アイリモコン) IRM-01L

新品価格
¥24,800から
(2012/5/13 09:25時点)

この機械利用すれば、声で機械を制御できるようになるらしい。
つまり、バックトゥ-ザフュ-チャ-2の世界が実現できるのだ。

即断即決、この買物は迷わなかった。Amazonで購入。1日で届く。

まず初期設定でつまずく
iPhoneからiRemoconが認識できない!
10回くらいなんどもRebootをかけてなんとか繋がる。大丈夫か?
その後もiRemoconの設置場所が悪く?うまく動かず。

散々2時間くらい格闘し、ようやくエアコンのスイッチが付けられた。
エアコンでこんなに苦戦するとは。

05 May 2012, 12:45

Outlookでタスクシュ-ト2

前回に続き、タスクシュ-ト機能の表示改善。

その1. 一日の予測時間と実働時間の表示改善

その2. 実施中のタスクの予測時間と実働時間の表示改善

まだまだハックしたりないけれど、とりあえずこんなところでゴ-ルデンウィ-クの目標は達成。

VBAの使い方がなんとなくわかったよ。

05 May 2012, 10:13

VBA で TDDできるか調べてみた

1 はじめに

VBA で TDDできるか調べてみた.以下の3つがあるらしい

  • VBAUnit
  • VB Lite Unit
  • xlUnit

Outlookでも使えそうな VB Lite Unit を使ってみる。

2 使い方

前提として Visual Basic 6.0 Runtime Liblaryが必要。とりあえずよくわからないのでパス。

  1. ダウンロードしたものを、ハ-ドディスクの適当な場所に保存
C:\Windows\VbLiteUnit
  1. スタートメニュ「ファイル名を指定して実行」より
regsvr32.exe “C:\Windows\VbLiteUnit\VbLiteUnit.dll”

(管理者権限で実行しないと失敗した)

3.Outlookから VBEを開き、ツ-ルバ-から[ツ-ル] > [参照設定] を選択 4.表示されたダイアログボックスの中からVBLiteUnitを選択

5.デモソ-スをダウンロード

6.[ファイル] > [ファイルのインボ-ト]でデモソ-スをインポ-ト

  1. サンプルソ-スのtclsTestClauseTextを実行

表示のタブからイミディエイトウィンドウを起動。 入力コンソールに以下を打ち込んで実行。RunTests New (クラス名)で実行する。

RunTests New tclsTestClauseText

ただ、自分でテストコ-ドを書く方法はちょっと難しそうなので、また今度

2.1 参考リンク

<div class="outline-text-3" id="text-2-1">
  <ul class="org-ul">
    <li>
      <a href="http://d.hatena.ne.jp/miau/20110301/1298935505">http://d.hatena.ne.jp/miau/20110301/1298935505</a>
    </li>
    <li>
      <a href="http://blogs.yahoo.co.jp/mummykinoi/63579957.html">http://blogs.yahoo.co.jp/mummykinoi/63579957.html</a>
    </li>
    <li>
      <a href="http://kawakawa2000.jugem.jp/?eid=22">ExcelマクロでTDDをやってみよう! | プログラマーの外部記憶箱</a>
    </li>
  </ul>
</div></p>

03 May 2012, 09:25

Outlookでタスクシュ-ト

Outlookでタスクシュ-トをする機能を実装した。

と、いっても実際にしたことは大したことではないのだけれど。

選択したタスクの予測時間の合計を現在時間に足して表示しただけ。

本当ならば、今日のタスクも自動的に検索できればいいけれど、

そこはまだスキルが足りない。手動選択が楽だ。

フォ-ム File:TaskChuteForm:

Private Sub UserForm_Initialize()
  Dim End_Time
  Dim End_Hour
  Dim End_Minute
  Dim TotalWork_Time As Long
  
  TotalWork_Time = GetSelectedTotalWorkTime()
  End_Time = DateAdd("n", TotalWork_Time, Time)
  End_Hour = Hour(End_Time)
  End_Minute = Minute(End_Time)
  
  TaskChuteForm.ListBox1.AddItem Hour(Time) & ":" & Minute(Time)
  TaskChuteForm.ListBox2.AddItem End_Hour & ":" & End_Minute
End Sub

TithOutlookSession:

Function GetSelectedTotalWorkTime()
    Dim myOlExp As Outlook.Explorer
    Dim myOlSel As Outlook.Selection
    Dim TotalWork_Sum As Long
    Dim x As Integer
 
    TotalWork_Sum = 0
    
    Set myOlExp = Application.ActiveExplorer
    Set myOlSel = myOlExp.Selection
    For x = 1 To myOlSel.Count
        TotalWork_Sum = TotalWork_Sum + myOlSel.Item(x).TotalWork
    Next x
    
    GetSelectedTotalWorkTime = TotalWork_Sum
End Function

03 May 2012, 04:01

Outlookのリボンのカスタマイズについて調べてみた。

Outlookにタスクシュ-ト的な機能を追加してみたいと思ったので、

Outlookのリボンのカスタマイズについて調べてみた。

Web上の多くの記事は Excel,Word,PowerPointの話題ばかり。

どうもOutlook開発では COMアドインを組み込むことで機能開発できるみたい。

そして、COMアドインを作成するためには、Visual Studioが必要みたい。

そして、Visual Studioは12万円する見たい。

ここで、手詰まりです。12万円は気軽な勉強には高すぎる。。。

第一、Eclipseを愛しているし。

しかし、意外な抜け道が・・・・

Visual Studioのアカデミック版は1万で買える。

おっと、悪いことを考えてしまった、ハハハ。’`,、(‘∀`) ‘`,、。

とりあえず、また日を改めまして考えてみるか。

参考リンク 

[]1

2007 Office Fluent リボンをカスタマイズする (開発者向け) (パート 13)

Microsoft Visual Studio 2010 Professional アカデミック

新品価格
¥10,500から
(2012/5/3 13:26時点)

Microsoft Visual Studio 2010 Professional with MSDN

新品価格
¥133,466から
(2012/5/3 13:29時点)

02 May 2012, 12:14

Outlookタスクの実働時間の記録/予定表への出力

以下の機能を新たに実装してみた。

  • Outlookタスクの実働時間の記録
  • Outlookタスクの予定表への出力

タスクの起動をイベントプロシージャで監視して、起動したら起動時間を記録

タスクの終了をイベントプロシージャで監視して、終了したら起動時間と現在時間との差分を実働時間に記録

それとともに、起動時間と現在時間を利用して予定表に予定を出力。

今は1つのタスクにした監視ができないので、ここは要改善!

File: ThisOutlookSection

Dim WithEvents myInspectors As Inspectors
Dim WithEvents myTaskItem As TaskItem
Private Sub Application_Startup()
  Set myInspectors = Outlook.Inspectors
End Sub
Private Sub myInspectors_NewInspector(ByVal Inspector As Inspector)
  If TypeName(Inspector.CurrentItem) = "TaskItem" Then
    Set myTaskItem = Inspector.CurrentItem
  End If
End Sub

'タスク起動
Private Sub myTaskItem_Open(Cancel As Boolean)
  '起動時間を記録
  Call TaskTrace_StartTimer
End Sub

'タスク終了
Private Sub myTaskItem_Close(Cancel As Boolean)
  ' 予定表にログを生成
  Call TaskLog_Create(myTaskItem.Subject)
  '実働時間を獲得
  myTaskItem.ActualWork = (myTaskItem.ActualWork + TaskTrace_GetActualWorkTime())
  Set myTaskItem = Nothing
End Sub

File: TaskTrace

'---------------------------------------------------------------------
'タスクの起動時間を実働時間に記録する
'---------------------------------------------------------------------
Option Explicit

Dim start_time

Public Sub TaskTrace_StartTimer()
  start_time = Now()
End Sub

Public Sub TaskTrace_StopTimer()
  start_time = 0
End Sub

Public Function TaskTrace_GetActualWorkTime()
  Dim current_actualwork_time
  TaskTrace_GetActualWorkTime = DateDiff("n", start_time, Now())
  start_time = 0
End Function

Public Function TaskTrace_GetStartTime()
  TaskTrace_GetStartTime = start_time
End Function

File: TaskLog

'---------------------------------------------------------------------
' 予定を生成
'---------------------------------------------------------------------
Public Sub TaskLog_Create(jobNAME As String)
  Dim fldCalendar As Folder
  Dim aITEM As AppointmentItem
  
  'フォルダ指定
  Set fldCalendar = Session.Folders("Outlook").Folders("予定表").Folders("TaskLog")
  Set aITEM = fldCalendar.Items.Add
  
  With aITEM
    .Subject = jobNAME
    .Body = "Samplebody"
    .Start = TaskTrace_GetStartTime()
    .End = Now
    .Save
  End With
End Sub

参考リンクはココ

http://outlooklab.wordpress.com/category/outlook-vba-%E3%83%9E%E3%82%AF%E3%83%AD/

02 May 2012, 05:28

VB Lite Unitでの記法まとめ

VB Lite Unitの記法がなんとなくわかってきたのでメモ 〆(._.)

この定形ソ-スをクラスモジュールで作成してところどころ修正。

File:SampleTest

'おまじない
Option Explicit
Implements ITestCase

Private Function ITestCase_TestCaseInstance() As ITestCase
  Dim objResult As New TaskTraceTest
  ' Test for cut/paste error - programmer forgot to change type of objResult.
  'Debug.Assert TypeName(objResult) = TypeName(Me)
  Set ITestCase_TestCaseInstance = objResult
End Function

'テストスイ-ト?ここはまだ未調査
Private Property Get ITestCase_Suite() As Variant
  ' Do nothing here
  ' Only run tests within RunTest.
End Property

'実験用にtemp変数宣言。ITestCase_RunTest内で宣言したら失敗した。
Private temp As Integer

'ここからテスト関数
Private Sub ITestCase_RunTest( _
  ByVal TestNum As Long, _
  TestName As String, _
  ExpectErrNum As Long, _
  EndOfTests As Boolean _
)
  Dim objTestNum As New TestNumGenerator

  Select Case TestNum
    Case tstcTestActionSetup
      'ここにSetupで実行したいことを書く

    Case tstcTestActionTeardown
      'ここにTearDownで実行したいことを書く
    
    'ここからテスト  
    Case objTestNum.NextNumber
       'AssertEqualがアサ-ト関数 第三引数でテストの名前を書く
       AssertEqual 1, temp, "first"

    Case objTestNum.NextNumber
       'Test2....

    Case objTestNum.NextNumber
       'Test3....

        'Case 文を追加してどんどんテストを書く

    Case Else
      EndOfTests = True

  End Select

End Sub

実行はイミディエイトウィンドウで以下を実行

Runtests New SampleTest

ショ-トカットキ-の Ctrl + G と F7 を利用してテストを小さく回す。

う-む快感。(´∀`)