2018年5月17日木曜日

別セグメントのWindowsServerの連続稼働日数を知る

同セグメントであれば以下のようにGet-WmiObjectで取得できるのだが、
(http://www.vwnet.jp/windows/PowerShell/GetBootTime.htmより)

# 連続稼働日数の取得
$WMI_OpreationSystem = Get-WmiObject win32_operatingsystem
$Now = $WMI_OpreationSystem.LocalDateTime
$Boot = $WMI_OpreationSystem.LastBootUpTime
$BootDateTime = $WMI_OpreationSystem.ConvertToDateTime($Boot)
$NowDateTime = $WMI_OpreationSystem.ConvertToDateTime($Now)
$UpTime = $NowDateTime - $BootDateTime
echo $UpTime.Days

VPNルータ越しではどうやっても取得できない為、powershellを用いてローカルに稼働日数をテキストファイル吐き出し、そちらをnet use経由後に見に行くという手法を取った。

-------------------------------------------------------------------------------------
$WMI_OpreationSystem = Get-WmiObject win32_operatingsystem
$Now = $WMI_OpreationSystem.LocalDateTime
$Boot = $WMI_OpreationSystem.LastBootUpTime
$BootDateTime = $WMI_OpreationSystem.ConvertToDateTime($Boot)
$NowDateTime = $WMI_OpreationSystem.ConvertToDateTime($Now)
$UpTime = $NowDateTime - $BootDateTime

$UpTime.Days | Out-File \\localhost\exp\uptime.txt
-------------------------------------------------------------------------------------
上記をps1ファイルとして保存し、以下をバッチファイルでタスク実行。

powershell -noprofile -executionpolicy unrestricted c:\getUpDays.ps1

注意として2003Serverでは初期状態ではPowerShell使えない(再起動を伴うSPの適用が必要)

これでuptime.txtが生成されるので、そちらをVBA(エクセルにデータ出ししたかったので)で読む形式を取った。

うーむ。直接Get-WmiObject出来れば楽チンなんだけど、セキュリティの関係(VPNでの許可ポート等)で不可の場合はこういったことしないとダメか。

2017年1月25日水曜日

Googleドライブからネットワーク上のNASへデータ同期させる方法

大分間が空いてしまいましたが。

GoogleドライブのWindows用アプリ(googledrivesync)からは保存先が指定できるのですが、
直接ネットワークドライブは指定できません。
(他のクラウドサービスも大概出来ないようになってるような。)
バックアップがNASに直接取れない・・・ぐぬぬと。

ですので、googledrivesyncでローカルドライブに落とした後、夜間タスクでrobocopyを動かし、
NAS上にコピーしています。
コマンド記述は下記のような感じ。

robocopy.exe "C:\share_google" "Z:" /LOG+:C:\robocopy.log /NS /NC /NDL /NFL /S /E /COPY:DAT /ZB /NP /R:0 /W:0 /XD %%X:\$RECYCLE.BIN

※$RECYCLE.BINはゴミ箱用ファイルなので除外してます

XPだからrobocopy使えないよという方は下記をインストールしましょう。
 ⇒http://www.microsoft.com/en-us/download/details.aspx?id=17657
   (windows Server 2003 Resource Kit Tools)


欠点は、

・ほぼ常時起動しているサーバマシンが必要
・ローカルに落としてから移動させるのでアップロードサイズによってはサーバローカルの空き容量が必要


もっとスマートなやり方があれば絶賛募集中・・・




2015年4月5日日曜日

RIFFT 1

開発環境:AndroidStudio1.1.0

簡単にリフ(音楽のフレーズ)を記録しておけるようなアプリを作ろうかと。
セッションで役立ったりするので。


・音を鳴らす

音ファイルの挿入は実エクスプローラ上でコピーしてオブジェクトエクスプローラのRawへ直接コピー(ドラッグ等は不可、なんだそら)

MediaPlayerは長めの音系、単発でクリック音出したいならSoundPoolを使う。

sp = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
 第一引数:ロードするファイルの数
 第二引数:ストリームのタイプ
  ストリームタイプ一覧
  AudioManager.STREAM_ALARM アラーム音
  AudioManager.STREAM_MUSIC 音楽音
  AudioManager.STREAM_NOTIFICATION 通知音
  AudioManager.STREAM_RING 着信音
  AudioManager.STREAM_SYSTEM システム音
  AudioManager.STREAM_VOICE_CALL 通話音
 第三引数:サンプリングレートのクオリティを指定します。(デフォルトは0)

(http://ougiitirou.web.fc2.com/AndroidMain/bgm.htmlより)

onCreateでリソースを読むよりアプリがアクティブになるonResumeで読み込みし、
onPauseで解放、がメモリ節約になるそう。ふむふむ。
したがって、onCreateはいたってシンプルにレイアウト読み込みとボタンのリスナ登録のみ。

後々読み込む音が増えてきたときに見直しが必要かも。


・簡易メトロノーム作成まで

4・8・16の3パターンを用意して実験。
ボタンを3つ作っておく。
あと小節区切りの4つ目の音リソースも追加。
ついでにSoundpoolのロードファイル数を1→5へ。
onClick時のイベントでcase分岐、条件はR.idで。

メトロノームなのでBPM調節機能もプログレスバーで実装する。

BPMは、1分間に鳴る四分音符の数なので、BPMがたとえば100なら
音符の間のsleep(msec) = 60sec / 100 = 0.6秒(sleepの引数は600)となる。
これでメトロノームまでは完成。




とりあえず。

2014年10月14日火曜日

xfsフォーマットのファイル救出

社内で使ってるBuffalo製のNASが逝ってしまわれたのでデータ救出。

VirtualBoxにLinuxを入れてデータ抜こうと画策。

0.Linuxイメージ入手
  →knoppixを利用。http://www.risec.aist.go.jp/project/knoppix/より。
    デーモンツールズでマウント。マウントしたのみでは動かないので注意。

1.VirtualBoxインストール
  →ファイル入手は https://www.virtualbox.org/wiki/Download_Old_Builds_4_3 より。
   いきなりハマった。現在の最新Verである「4.3.16」を利用すると
   「COMコンポーネントオブジェクトの生成に失敗~」と表示され、動作せず。
   割と同じような事例が散見された為、参考にして「4.3.12」を導入して対処。
   USB外付け利用の為に「ExtensionsPack」も導入。

2.VirtualBox設定
  →仮想マシンの作成はGUIの「新規」から一直線。ホストドライブはマウントした仮想ドライブ
    を設定。
    ホストOS-ゲストOSとの共有フォルダ作成の為に「GuestAdditions」を要インストール。
    VirtualBoxの仮想マシン設定から「ストレージ」を選択し、以下のように
    プライマリ、セカンダリIDEを設定。プライマリはknoppix、セカンダリはGuestAddition。
    (GuestAddition.isoはデフォルトでC:\Program Files\Oracle\VirtualBoxに存在)
   


3.GuestAdditionインストール
  →VMを起動して、ファイルシステムを確認すると、「VBoxAddition」が追加されているので、
   そちらを「TerminalEmulator」から起動。(Autorunだと権限足りず、sudoで実行したい為)
   TerminalEmulatorを起動し、「sudo /media/sr1/autorun.sh」を実行。
   (パスは環境で勿論変わります)
   途中で「yes」と入力させられるが、あとはほっとけば勝手に入るのでしばし放置。

4.ファイル移動   
    ホスト側で共有用フォルダを作成(今回はC:\VB)。
    合わせて「デバイス」-共有フォルダーから共有フォルダ設定を実施。


   そちらを「sudo mount -t vboxsf vb /media/shared」にてマウント。
    (sharedはsudo mkdir /media/sharedにて事前作成)
   あとは、ドラッグ&ドロップでコピー開始。


ただし、ファイル移動がかなり遅い。(15Gを一時間程度)
NICの設定かなぁ。

とりあえずそんなとこ。

2014年9月25日木曜日

VS2012で画像処理


樹氷画像を見て綺麗だなーと思ったのがきっかけ。
木の画像を入力して冬景色っぽいのが出てきたら幸せです。





右が入力画像、左が出力。


以下やったこと。


・IDEはVS2012Express for windows desktopを利用。
 →NuGetを用いて画像処理用のライブラリ導入が非常にスムーズに行えた。
・ライブラリはOpenCVSharpを利用。作者様が日本人だし、ラッピングされてる関数が多いのが素敵。
・色空間はHSVのみを利用。30<h<80。最初はRGBとの論理和だったんだけど、なんだかんだこっちの方が分かりやすい。
・動画処理じゃないのでサボってget2Dとset2D利用。
・明るさの補正が必要だったのでVを係数として利用。


以下ハマったこと。

・最初CV.NETを使おうとしたものの、現時点で対応してるOpenCVのライブラリ群が2.4.8で、いくら探してもインストーラが見つからない為断念。(今の公式発表は2.4.9)
・OpenCVSharpの定数利用は、CVConst.~~。ちなみに色変換の定数はColorConversion.~~。
 Cで書いてたOpenCVと大分違って焦った。


以下やろうとしてること。

・精度上昇
 →入力画像が有る程度理想形なので綺麗に変換されてるが、暗めの緑が多いと難しい。
   (HSVの成分で拾えない)
・雪を降らす
 →こな~ゆき~的な。


Android用に最適化して、カメラと連動してみたい所。
沖縄の風景とかを冬景色に出来たら楽しいだろうなー


2014年3月5日水曜日

2014年 個人的ホットな技術

2014年突入してからちょっと経ってるけれども。

個人的に習得したい技術、知識メイン。


・Windows 8.1
 →遊ばなきゃなーと思いつつ放置してた。
  Win8で「見て見て!かっこいいでしょこのUI!これだけつかってりゃ安心だよ!」になって
  Win8.1で「ごめんやり過ぎた 前のUI残すわ」の流れには笑った。
  Winストアアプリ開発も並行して覚えたい部分ではある。
  とりあえずVM動かすところから始めようかな。でもVDAとやらが必要。うーん・・・


・Android Studio(http://developer.android.com/sdk/installing/studio.html)
 →登場自体は去年の夏?だろうか、Eclipseに代わる可能性を秘めたAndroid統合開発環境。
  覚えることは多いけど、コード補完、コード整形など使いこなせたら楽できそうな機能が大量。


・AWS
 →これだけクラウドクラウド叫ばれてるけど「なんとなく」の理解に留まる企業も多い気がする。
  いや自分も多々あるんだけど。
  ストレージ部のみのソリューション、ミドルウェア・OSも含めたソリューション、はたまた
  インフラまでも含めた略。
  とりあえず個人サービス契約した上で使ってみてだろうか。自宅サーバは電気代がね・・・


・IEEE802.11ac
 →次世代無線規格。5Ghz帯なので医療系ソリューションにも使用できる。
  もちろん家でも。ちなみに36-64chは法律違反☆
  理論値でGを超える凄まじい規格。
  今のとこ一般家庭向けルータの価格は大まかに1万前後を推移してる感じかな。


※その他(知っ得系)

・SSD
 →Solid State Drive。もう一部では大分普及しております。OS載ったシステムドライブをこれに
  換装しとくのはもはや前提?

・BitCoin
 →短期で自然消滅するのかなーと思ったけど割と最近ホットになってきましたね。
  国内取引に対する課税の動きとか。
  中国ロシアはブラックマネーで一番使われそうなのに真っ先に国が取引禁止したってのも
  面白い。


書き殴り失敬。
技術のトレンドって追うのは簡単だけど本当の需要と供給を見極めるのは難しいね。
エンジニアの市場価値と探究心は必ずしもリンクしないし。

2013年11月15日金曜日

SQL メモリ内のページロック指定

SQL Serverにて。
プロセス「sqlserver.exe」がメモリを食いまくる現象に悩まされております。
で、以下サイトを参考に設定を入れ込んだんですが、
(主に2のメモリ内のページロック設定)


参考:「DB管理者がいますぐ確認すべき3つの設定」
http://www.atmarkit.co.jp/ait/articles/1009/06/news093.html


・gpedit.msc起動
 →コンピュータの構成
  →Windowsの設定
   →セキュリティの設定
    →ローカルポリシー
     →ユーザ権利の割り当て
      →メモリ内のページロック


サーバによって効果があったりなかったり。
何だろう?と思いきやSQLの製品Verで違いがあると。

・無条件でOK
 2008 EnterpriseEdition
 2008 DeveloperEdition


・設定次第でOK
 2008 StandardEdition (64bit)
  →R2は不明?
 2005 StandardEdition(64bit)


で、その設定というのが


スタート
 →プログラム
  →Microsoft SQL Server 2008
   →構成ツール
    →SQL Server構成マネージャ
     →SQLServerのサービス
      →SQL Serverを右クリック、プロパティ
       →詳細設定の起動時のパラメータに「-T(大文字)845」を追加


設定適用後の確認としては、SQLServerのエラーログに「Using locked pages for buffer pool」と
メッセージが吐かれるっぽい。


ふむー