最近のIT業界の話題

■AWS の lambda が node.js 6.10 をサポート
ECMA6に対応した長期バージョン。うれしい。

■AWS の lambda が python3.6 をサポート
これまで2.7だけだったものが新規に3系サポート。これもうれしい。

■Nativescript が来る?
iphoneとandroid アプリのクロスプラットフォームのツール。
開発言語はJavascript。
日本語の情報はまだ少ないが、公式の英語ドキュメントがしっかりしているので試しやすい。

■2020年から小学校でITが必修化
ipadで気軽に使えるプログラミングツールとか増えるでしょうね。
ただし、ツールで遊んで楽しいねだけでなく、論理的な思考能力を身につけることが目的でないとあまり意味ない気もします。
また小学校の先生の負担が益々大きくなってしまう懸念もあり。そこはきちんと予算とって近所のIT屋さんに頼んだ方がよい。


Apple Watch Series2 を使ってみる

基本的に充電時と風呂以外はほぼつけっぱなし。



■時計
・時計を見る動作をすれば、ジャイロセンサーが検知し、スリープが解除されるのでそれほど違和感なし。

■文字盤
・日付、時間、気温、天気、予定、充電%を表示している。
便利。

■バッテリー
・いわれるほど悪くない。2-3日使える。
・仕事中にiphoneと並べて充電。

■通知バイブ
・朝6時にアラームセット。気付かないことはまずない。起きる。
・電話の着信が伝わるので何気に便利。

■スケジュール
・Googleカレンダーに登録した内容がすぐ見られるのでこれも便利。

■睡眠記録
・AutoSleepというアプリを利用。
睡眠時の心拍数と活動量が見られて面白い。

■心拍数
ランニング中の心拍数が見られてうれしい。

□Apple Pay でSuica
改札入った後、もし充電切れたら改札出られないという最悪の事態が。。
これはまだ試していない。

■■■ 今後欲しい機能 ■■■
・血圧測定
・体温測定
→ それらのセンサーを内蔵したバンドが出れば補えると思われる

・sim差し
Apple Watch 自体にsimさせれば単体で何でもできる。
今はiphoneの子機という位置づけ。
→ 難しいかな。。


AWSでサーバーレス問い合わせ

AWSにて、サーバーレスで問い合わせフォームを作ってみる。

構成は、


・S3にHTML、CSS、Javascriptを配置し、S3のbucketを公開する
・JavascriptからGatewayAPIにデータ送信
・GatewayAPIからLambdaを呼び出す
・LambdaからSESで問い合わせメール送信
→ サーバーレスデモ

EC2にLAMP環境作らなくてもHP公開できるし、問い合わせフォームも作れる。
やはりサーバを選定する上で、AWS Lambdaの存在は大きい。


「この花なんて花?」

「この花なんて花?」
子供に質問されてもわからない。
私には植物に関する知識はほぼ無いのである。



「・・(カメラで撮って判定できるアプリがあれば。。そうだ。作ろう!)」

■必要なもの
・機械学習用ツール
・学習画像

機械学習用ツールは「Tensor Flow」でいいでしょう。
ただ問題なのは学習画像。
何千何万てある植物のいろいろな角度・状態の画像をどうやって集めるか?
これが膨大な時間と労力がかかる。

構想と実現できる技術はあるのに材料がないという。
子供の質問に答えられるようになるのはまだ先のようだ。


HDDからSSDへ交換

メインPCのディスクI/Oが遅いな~、と不満があったのですが我慢。
2009年に購入したPCなので既に7年前。
最近SSDの価格が安くなっているので思い切ってHDDからSSDへと移行してみる。

色々手こずってしまいましたが、以下成功手順。

---
・750GBのSSDを購入。2万円程度
・PC開ける。すごい量のホコリを掃除。


※CPUのファンのホコリは綿棒で取った。

・SATA2にSSDを繋ぐ
・フォーマット、MBRで初期化
EaseUS Todo Backup 9.2 でSSDにクローン作成
・マシン停止
・SATA1につながったHDDを外し、SSDに付け替える。
・起動

おおお。
無事起動。まず起動が速い。
これまで起動してから普通に使えるようになるまで数分かかっていたのがウソのよう。
DropBoxの同期も早い。
問題なし。
これで作業効率もアップするし、バリバリ仕事しましょう。


会社設立10周年!
本日、2016年5月11日をもって会社設立10周年を迎えることができました。
もう10年かというのが正直な気持ちです。

弊社の恵まれたところは、なんと言っても取引先の会社様に恵まれたこと。
これに尽きます。 これまで30社以上もの会社様と取引させていただき、迷惑かけることもありましたが、寛大な心で対応していただきました。 本当に感謝しております。
今後も積極的により良いご提案をさせていただきます。

■今後もこだわって行きたい点
・大手Sierの下請け案件に頼らない
→ 独立した意味がない。できる限りお客様と直接契約する。

・人を常駐させて人月契約することをしない
→ 会社への帰属意識がなくなる。できる限り受託案件をする。

・日進月歩のITの世界で勉強を続ける
→ 浦島太郎状態はNG

■反省点
・売上げのほぼ100%が受託開発で、自社製品、自社サービスの開発ができなかった。
これまで培った技術を活かして、なんとか自社製品、自社サービスを作りたい。

小さな会社ではありますが、今後ともよろしくお願い申し上げます。

WindowsでSwiftを動かす

2016年2月時点、Windows版のSwiftなし。
Mac or Linux(ubuntu)のみ。
→ Swift HP

Windowsでの実現方法を考える。
(1)Cygwin用Swiftもあるようだが、公式ではない
(2)VirtualBoxにMacを入れるのはライセンス的にかなりグレーというか黒。
(3)VirtualBoxにubuntu14をインストール。これなら問題ないでしょう。

ということで(3)案でGo。
■Ubutntu14をダウンロード
https://www.ubuntulinux.jp/download

■Ubuntu環境構築
ダウンロードしたISOイメージを使い、VirtualBox上にてUbuntu環境を構築

■Swift環境構築
・依存関係
sudo apt-get install clang libicu-dev

・取得、解凍、path設定
wget https://swift.org/builds/swift-2.2-branch/ubuntu1404/swift-2.2-SNAPSHOT-2016-02-08-a/swift-2.2-SNAPSHOT-2016-02-08-a-ubuntu14.04.tar.gz
tar xzf swift-2.2-SNAPSHOT-2016-02-08-a-ubuntu14.04.tar.gz
mv swift-2.2-SNAPSHOT-2016-02-08-a-ubuntu14.04 swift-2.2
export PATH=/home/tt/swift-2.2/usr/bin:"${PATH}"
swift --version

■REPL(Read-Eval-Print-Loop)でテスト
swift
> let aaa:String = “Hello World”;
> print(aaa);



動いてます。
AppleはサーバサイドSwiftという時代を狙っているのでしょうか。
アプリもSwift、サーバサイドもSwift。Swift覚えておけば両方いけますよ、便利でしょ?という流れに持っていってSwift対応エンジニア数を増やす狙いでしょうか。


swift関数型スタイルの練習
Javascript、Actionscript、PHP、Java、Swiftが常用言語です。
ただ正直に言って5つもあるといざコーディングする際、パッと出てこない時がある。
特にSwift。
Swiftでの開発案件がない際でも、1日10分でも15分でもいいからテストコードを書く修練が必要。
朝の日課にします。
以下関数型スタイルの練習。

//テスト用配列
let workArray:[Int] = [3,4,2,1,5,10,7,6,8,9]

//forEachでループ
workArray.forEach { row in
    print(row);
}

//要素を合計するラムダ式を定義し、reduce
let plus = { (a: Int, b: Int) -> Int in a + b }
let sum = workArray.reduce(0, combine: plus)
print(sum);

//要素を2倍するラムダ式を定義し、map
let workArray2 = workArray.map{ (a: Int) -> Int in a * 2 }
workArray2.forEach { row in
    print(row);
}

//10未満の要素を抽出するラムダ式を定義し、filter
let filterA = {(a: Int) -> Bool in a < 10}
let filterResult = workArray2.filter(filterA)
print(filterResult)

//降順にsort
let srt = filterResult.sort { (a:Int, b:Int) -> Bool in b < a}
print(srt)


AWSにて無料SSL

AWS上にて無料でSSLが使えるようになるとのこと。
→ AWS Certificate Manager



2016年1月時点で、まだ東京リージョンは対応なし。
今後対応予定とのこと。
無料SSLに関しては、Lets Encrypt もあるが、AWSを使うならAWSのサービスで統一した方が管理しやすいでしょう。


AWSにt2.nano登場

AWSにて新しいインスタンスタイプが追加されました。
→ 【AWS発表】EC2インスタンスのアップデート - X1(SAP HANA) & T2.Nano



東京リージョンでも選択可能。
メモリは0.5MB
料金は、$0.01 /1 時間で、1ドル120円換算で900円/月 程度。

テスト用途、HP用途ではこれで充分かと思う。


Javascriptの単体テスト
Javascriptの単体テスト用のフレームワークの調査。
Jasmine 等フレームワークもあるが、やはりjunitやphpunitに慣れているのであれば同様な表記ができるqunitがよいかと思う。
Jasmine は専用の記述が必要。
jsunit というものもあるが開発はストップしている模様。

■qunit
http://qunitjs.com/

■サンプルテストコード
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>QUnit Example</title>
<link rel="stylesheet" href="qunit/qunit-1.20.0.css">
</head>
<body>
<div id="qunit"></div>
<div id="qunit-fixture"></div>

<script src="qunit/qunit-1.20.0.js"></script>
<script>
QUnit.test( "test1", function( assert ) {
    assert.ok( 1 == "1" );
});

QUnit.test( "test2", function( assert ) {
    assert.equal( 1, "2" );
});

</script>
</body>
</html>

■実行結果画面



niftyクラウドのストレージ

AWSのS3以外のクラウドストレージサービスを探してみました。

niftyの「ニフティクラウドストレージ」が良さそうでした。
・費用は、11円/GB/月。
・転送料金は10TB/月まで無料。
・APIあり。Java用のSDKはあり。

APIについて電話問い合わせしたところ、丁寧にお答えいただいた。
またその場でテスト用アカウントも発行していただき、60日間試用できるとのこと。
サポートの質はとても高いと感じました。

以下が管理画面。AWSの管理画面とほぼ同じ。


特徴としては、ストレージ費用はS3より高いが、転送料金が実質無料なのが大きなポイントか。
※S3は4円/GB/月 程度。

PHPでAPIを叩くサンプルプログラムを作ってみたが、2時間くらいかかってしまった。
SDKを提供しろとまではいかないが、主要な言語のサンプルプログラムくらいは公開していただけるとエンジニアは助かるのではないか。


AWS LambdaをJavaで作成

2015年11月時点で、AWS Lambdaの関数を作成できるのは、
・Javascript(最初から)
・Java8(2015年6月から)
・Python2.7(2015年10月から)

という状況です。徐々に増えていくのでしょう。
JavascriptとPythonは動作確認しているので、今回はJavaを試してみます。

■概要
Javaの場合は、管理コンソールにファイルをアップロードする形式。
ソースはいじれない。
AWS管理コンソールにて、テスト実行は可能。

■IDE
SpringBootの実装で使っているSTSを使う。
AWS用ライブラリが公開されているので、それを使う。



■テスト実装
「AWS Lambda Project Java」でプロジェクトを作成。


Input、Outputを定義


■単体テスト&デバッグ
自動生成される、「LambdaFunctionHandlerTest」でステップ実行し、確認する。


■アップロード
OKだったらAWSへアップロード。


■確認
管理コンソール上に表示されました。
対象関数を選択し、「Action」「Test Function」にて管理コンソール上で動作確認。


■感想
簡単、の一言。
もうサーバーサイドの処理は全部これでいいんじゃないの?と思えてくるほど。
こうやってどんどんAWSから離れられなくなってしまうのか。


SpringBootを試してみる

JavaでのWebシステム開発の煩わしさ(画面遷移用のXMLを書いたり・・等)から、しばらく敬遠してましたが久々に触ってみる。
果たしてこの数年で進化しているのか?
Windows環境にて、前提知識なし状態からSpringBootを試す。

■準備
・環境変数JAVA_HOMEを設定。JDK1.8利用。
・IDEはSpring Tool Suiteを利用。


■調査結果
・Tomcatが内蔵されているらしい。
・内蔵の maven でビルドしている。
・jar ファイルを生成し、ポートを指定してプロセスを起動できる。(例:http://localhost:8080)
・war ファイルのデプロイとか不要でした。
・IDEで普通にステップ実行可能。
・IDEからデバッグ起動中はホットデプロイしてました。
・nginxとも問題なく連携可能でした。
・Javaなので動作スピードはPHPと比べて1桁高速。

■具体的にな利用イメージ
・フロントエンドは普通にHTML5とJavascriptで作成
・Javascriptの通信先にnginx+SpringBoot
・SpringBootのコントローラはJSONを返すだけ。Viewなし。
というようなシステム構成は充分「あり」かと思います。
この数年でJavaでのWebシステム開発は驚くべき進化を遂げていました。

■参考
Spring BootでHello World


freetelの雅(Miyabi)を買ってみた

SIMフリーのiPhone6s買おうとしたが10万円以上とあまりに高い。
iPhone5Sでもまだ5万円以上する。

iPhoneはあきらめて他を探す。
条件としては、
・SIMフリー
・3万円以内
・LTE対応
・テザリングができる
・Androidなら5系
・500万画素以上のカメラ

ということでいくつか見た中で、freetelの雅(Miyabi)に決定。
ただ2015年10月末時点で在庫切れで予約しないと行けない状況。
特に急ぎではないので予約することにした。2週間ほどで確保の連絡あり購入。

・まず、軽い。

バッテリーを入れるため、裏のフタをマイナスドライバで開けたのだが、あまりに薄いので割れそうになる。

・色はシャンパンゴールドといってもサイド部分のみ。


・OSはAndroid5.1でデザインはiPhoneっぽくなり、Android臭がなくなった。
・かなりぬるぬる動く。スクロールがひっかかる感じはなくなった。
・テザリングも問題なし。
・カメラの画質も問題なし。

使い始めて10日ほどだが、全く問題なし。
良い買い物をしました。


Windows10での動作確認-その2

ソフト・ツールはほぼ問題なかったですが、プリンタは?と思いWindows10で動作確認してみました。

■対象OS
Windows10 Pro 64bit

■動作OK
Canon MG6230
→ ドライバダウンロードページ

■結果
周辺機器のドライバがWindows10対応していないケースがあると聞いたのですが、弊社プリンタは大丈夫でした。


Windows10での動作確認

日頃よく使うソフト・ツールをWindows10で動作確認してみました。

■対象OS
Windows10 Pro 64bit

■動作OK
Office 2000
WinSCP 5.7
Poderosa 4.3
SourceTree 1.6
PHP 5.6
Python 3.5
nginx 1.8
Apache 2.4
MySQL 5.6
Postgres 9.4
ImageMagick 6.8
Flash Builder 4.6
Flash Builder 4.7
Phpstorm 10
PyCharm 5

■動作NG
ImageMagickのPHP用のDLLがNG(php_imagick.dll)
Windows10用にビルドしないといけない?

■感想
Office2000が動作したのがうれしい誤算。
インストール途中でDLLのエラーが出たが無視で続行してたら無事終了。
他は全く問題なし。

■課題
・php_imagick.dll がNGは少々痛い。
Visual Studio Community 2015でのDLLのビルドを試すこと。


スイッチ1発でGo

やはり物理スイッチ1発で何かを処理できるというのは便利だし、早い。

スマホのアプリでやる場合、
1.スリープ解除して
2.ロック解除して
3.アプリ起動して
4.対象ボタンを押す

という4ステップが必要。
物理ボタンなら
1.ボタンを押す

以上、1ステップでOK。
RaspberryPI にスイッチを3つ並べ、それぞれが押された際の処理を実装してみました。



用途としては、
■ボタン1
定型メールを家族に送る(今から帰ります)

■ボタン2
テーマソングを流す

■ボタン3
定型ツイートをする

他にも
・パン屋さんが「メロンパン焼けました」ツイートを送る
・悪党が来たら警報を鳴らす
・USBマイクを接続しておき、音声録音・停止ボタンとして使う

など様々考えられます。
物理ボタン1発の手軽さはとても便利。
あとは外装があって、各ボタンの動作を設定できるツールがあればOK。
商品化できないかな。


温度センサーの値をDynamoDBへ

先日(2015年10月8日)発表されたAWS IoTで実践的な使い方を試してみました。

テストケースとしては、
(1)RaspberryPIに温度センサーを設置し、定期的に観測する。
(2)観測したデータを AWS IoTに送信し、DynamoDBに格納する。

-------
■AWS準備
・AWS IoT用のロールを作成。
・DynamoDBのテーブルを作成。
・DynamoDBに格納するルールを作成。
※Hash Key Value と Range Key Valueに「$」をつけないとデータが出ませんでした。

■センサー側準備
・RaspberriPIは「1」のモデルB+。
温度センサー(DS18B20+)は秋葉原の秋月電子通商で買ってきたものです。350円くらいでした。
配線はこちらを参考にさせていただきました。ありがとうございます。
http://deviceplus.jp/hobby/raspberrypi_entry_018/



・python用ライブラリインストール
sudo pip3.5 install boto3
sudo pip3.5 install awscli
aws configure で設定値を入力

■実践
10秒間隔で/sys/bus/w1/devices/28-0000074483f6/w1_slave を参照し値を取得するプログラムをpythonで作成。
測定値をboto3でpublishしていく。


実際にDynamoDBのテーブルに格納されていることを確認


おお!OKそうです。
デバッグがなかなか大変でしたが、CloudWatchにログを出すようにすればスムーズに進みました。
このケースが出来てしまえば他はその応用でいけるかなと思ってます。
後はグラフ表示したり、データ解析したり、PDF出力したりとデータを可視化する部分を作ればよいのですし、そこは依頼者様と相談して画面設計し、HTML5やFlexで作るという流れになるかと思います。


AWS IoTを使ってみる

先日(2015年10月8日)に発表されたAWS IoTを使ってみました。
まだPreview版ではあるがTokyoでも利用可能なので早速試す。

手順としては
(1)IAMでIOT用のロールを作る。

(2)AWSコンソールにて「Create a thing」「Create a rule」をそれぞれ作成する。
ルールにて指定のトピックのデータがpublishされた際の処理を定義する。
・DynamoDBに保存するのか?
・SNSに流すのか?
・Kinesisに流すのか?
・別のIOTトピックにpublishするのか?
・Lambdaで定義された関数をキックするのか?
・S3に保存するのか?

が選択可能。一番簡単そうなS3に保存する方法で試してみる。

(3)python でMQTTクライアントとなるプログラムを作る。
boto3のマニュアルを見ながら書いて、トピックを指定し実行。

(4)確認
保存を確認。

おお!publishした内容がS3に保存されてました。

---
各所からの定点データであれば、DynamoDBの所定のテーブルの保存して集計しやすいようにするでしょうし、特定のトピックのpublishであれば集計処理をするようなLambdaの関数をキックするもよしといった使い方でしょうか。

数千、数万とあるセンサーからのデータを管理するというのが大変だったのが、AWSでサーバリソースを気にせず、一括管理できるようになったというところが大きいです。
またその送信された大量データを解析するサービスもあるわけですから、益々AWS依存度が高くなってしまいそうです。


ARToolKitを使ってみる

AR関連のライブラリは有償かつ価格が高いのでなかなか手を出せずにいたところ、
ARToolKit が2015年5月にオープンソース化のニュースがありました。

それから少々時間が経ってしまいましたが、SDKをダウンロードしiOS用サンプルを実行してみました。


おおお、いいですね。
仕組みとしては、
カメラを動画モードで起動し、1秒間に30回認識処理を行う。
マーカーを認識したらその座標に基づき、立方体を表示、といった感じです。

雑誌のマーカーにかざせばその商品が立体的に見られるし、
観光案内でも使われているし、
家具のマーカーを印刷して部屋において配置を確認できる、といったことは既にあります。
何か色々応用できそうです。

---
立体でなければ何かを認識して特定の処理をするというのはよく見かけます。
例えば、
・カメラに顔が移ると顔部分が動物になり、子供が喜ぶ
・笑顔を認識した瞬間、シャッターを切るカメラ
画像認識分野はおもしろいですね。


ScalaのMapの配列の集計
ScalaでのMap配列の縦合計を集計する方法をいくつか書いてみました。
Scala2.11を使用し、500万行の配列で実行時間を測定してます。

■type1(forループ)
→ 0.3秒平均。
■type1-2(foreachループ)
→ 0.3秒平均。
■type2(foldLeftで関数型っぽく)
→ 0.5秒平均。

という結果になりました。
PHP5.6での測定に比べ1桁早い。
→ 速度だけ求めるならforループの方が早いが大差なし。

//■type1(forループ)
var sum = 0;
val cnt = array.length - 1;
for(i <- 0 to cnt)
{
    sum += array(i)("value");
}

//■type1-2(foreachループ)
var sum12 = 0;
array.foreach(
    (a) => sum12 += a("value")		
)

//■type2(foldLeft)
var sum2:Int = array.foldLeft(0)(
    (a, b) => a + b("value")
)


PHPの連想配列の集計
PHPでの連想配列の縦合計を集計する方法をいくつか書いてみました。
PHP5.6を使用し、500万行の連想配列で実行時間とメモリ使用量を測定してます。(Scalaはこちら)

■type1(foreachループ)
→ 1.7秒平均。445MB。
■type1-2(forループ)
→ 1.7秒平均。0.002MB。
■type2(array_reduceで関数型っぽく)
→ 2.7秒平均。0.002MB。
■type3(無名関数とarray_reduceで関数型っぽく)
→ 2.6秒平均。0.003MB
■type4(php5.5以上でのarray_column使用)
→ 1.7秒平均。445MB。

という結果になりました。
・foreach ( $data as $row ) という書き方は非常にメモリを消費する。
・同じループでも for文ならメモリは消費しない。
・array_reduce はfor文と比べ高速ではないが、メモリ使用量は遜色なし。
・array_column は内部的に配列のコピーを取ってようで、メモリ消費量が大きい。

→ 処理速度・メモリ消費量ともfor文が最高。
→ array_reduce でも大差はない。関数型のコーディングで統一するならループをなくし、この書き方でもよいのでは。
→ array_columnはNG。

//■type1(foreachループ)
function getFieldSumType1( $data )
{
    $sum = 0;
    foreach ( $data as $row )
    {
        $sum += (int)$row["value"];
    }
    return $sum;
}
echo getFieldSumType1( $rows );

//■type1-2(forループ)
function getFieldSumType12( $data )
{
    $sum = 0;
    for ( $i = 0; $i < count($data); $i++ )
    {
        $sum += (int)$data[ $i ]["value"];
    }
    return $sum;
 }
 echo getFieldSumType12( $rows );

//■type2(array_reduce)
function getFieldSumType2( $carry, $item )
{
    $carry += (int)$item["value"];
    return $carry;
};
echo array_reduce( $rows, "getFieldSumType2", 0 );

//■type3(無名関数でarray_reduce)
function getFieldSumType3( $data, $field )
{
    $sum3 = array_reduce( $data, function ( $carry, $item ) use ( $field )
    {
        $carry += (int)$item[ $field ];
        return $carry;
    }, 0 );
    return $sum3;
};
echo getFieldSumType3( $rows, "value");

//■type4(php5.5以上でarray_column使用)
echo array_sum( array_column( $rows, "value") );


共有ホワイトボード

共有ホワイトボードを実現するサンプルを作ってみました。
共有ホワイトボード


Windows10プレビュー版使ってみた

Windows10プレビュー版(Build10074)使ってみました。
ISOをダウンロードし、VirtualBox上にて動作環境を作ってます。

■感想
・新ブラウザを試してみました。
サポートしないといけないブラウザが増えてしまうのですが、Javascriptの動作が早くなりそうなのでそれはうれしいです。

・新ブラウザにてFlashPlayerは組み込み済みで動作しました。
クロスブラウザ問題を解決する方法としてFlashPlayerのようなプラグインという仕組みはよくできたものだと思うのですが、なぜか肩身の狭い感じになりつつあります。Appleのせいですね。

・MS的にはPowerShellを使ってね、ということでしょうか。コマンドプロンプトには特に大きな変化は見られませんが、Ctrl+C,Ctrl-Vといった細かい部分が対応してました。

・仮想デスクトップはうれしい機能で、それぞれ全く別のデスクトップを設定できると思っていたのだが、少々違うようです。
同じデスクトップ設定のものが追加されるだけでした。プレビュー版だから?

・まだプレビュー版ですから仕方ないのかもしれませんが、全体的に見た目が少々違うだけで従来OSとの大きな違いがわかりませんでした。
今後のプレビュー版に期待しましょう。


簡単名刺作成

簡単に名刺を作成するツールを作ってみました。
→ 簡単名刺作成

今後の対応予定機能は
・画像の配置
・Redo、Undo

等です。随時更新してきます。


2つの文章の類似性をチェック

2つの文章の類似性をチェックするツールを作ってみました。
→ コピペチェック


スタンディングデスクで仕事

エンジニアなので、基本的に朝から夜までPCの前でデスクワーク。
ただ
・腰、背中がきつい
・足の筋肉の衰えが激しい
・なんとなく不健康そう

とはいえ対策は難しいと思っていた時に目に付いたのが「スタンディングデスク」。
机を高くして、立って仕事すること。
市販のものもあるが、とりあえず机の上に机を重ねた手作りデスクで試すことにした。

■1日目
足がきつい。とくに腿裏のハムストリングスがきつい。
体の疲労でよく眠れた。

■2日目
やはり足がきつい。疲労でよく眠れた。

■3日目
順応してきたのか、それほどきつくは無くなってきた。
とはいえ、座って仕事したりもする。

■4日目
立って仕事したり、座ってしごとしたりと織り交ぜる。
この方式に落ち着いてきた。

立って仕事すると
・猫背がなくなる。
・血流がよくなった気がする。
・足の筋トレになる

といったメリットを感じられた。
デメリットは特になし。
しばらく続けて様子を見ていくことにしよう。


RDSマイナーアップグレード方法

■Amazon RDSマイナーアップデートを手動で行う方法。
「Auto Minor Version Upgrade」はオフにしているので、期を見てアップグレードする。

・RDSインスタンス一覧から対象を「Modify」
・「DB Engine Version」で変更するバージョンを選択
・「Apply Immediately」にチェックを入れ、continue
・status が「modifying」になり、数分後終了。

たったこれだけでOK。
すばらしいです。


VBに関する備忘録2

■カスタムコンポーネント
・プロジェクトを右クリックし、「追加」「ユーザーコントロール」
・継承するクラスを変更。
ボタンであれば、
「Inherits System.Windows.Forms.UserControl」 → 「Inherits System.Windows.Forms.Button」

■git
・Visual Studio 2012 Update 4 を充てる
http://www.microsoft.com/ja-jp/download/details.aspx?id=39305

・「ツール」「拡張機能と更新プログラム」
で「オンライン」の検索で「Visual Studio Tools for Git」で検索し、インストール。

・「ツール」「オプション」「ソース管理」「プラグインの選択」を選び、「現在のソース管理プラグイン」で「Microsoft Git Provider」

・「チームエクスプローラ」でgit の設定

・Visual Studio 2013からは標準装備

■イベント
・イベント送信
Public Event SampleEvent(ByVal sender As Object, ByVal e As EventArgs)
RaiseEvent SampleEvent(Me, New EventArgs)

・イベント受信
AddHandler MyControl1.SampleEvent, AddressOf sampleEventHandler

■HTTP通信
Dim web As New System.Net.WebClient()
web.Headers.Add("Content-Type", "application/x-www-form-urlencoded")
Dim d As Byte() = System.Text.Encoding.ASCII.GetBytes("word=test")
Dim res As Byte() = web.UploadData("http://www.booster-technology.com/", "POST", d)
Dim ret As String = System.Text.Encoding.UTF8.GetString(res)