メニュー
ブログ更新履歴
コンテンツ更新履歴
リンク
  • rlib-MML WebApp
  • MML (Music Macro Language) をコンパイルし、再生やファイル出力(MP4、標準MIDIファイル)をブラウザ上で行えます。
  • Magome
  • クラウドベースのMIDIシーケンサ
    音楽制作に興味のある方を対象に、スタンドアロンでも使え、ネットならではの面白さも兼ね備えた音楽制作アプリの提供を目指しています。
twitter
 
Thinkridge スタッフ 雑感を綴る

C++ で WebSocket アプリ

WebSocket っていう単語をネットで見るようになって数年経ちますが、すごーく興味がありました。

これまで、HTTP だと不向きなケースで、BSD SOCKET や Winsock を使ったオレオレプロトコル(っていう表現が正しいかはわかりません)で実装をしていたことがありますが、この場合、サーバー側のみならず、クライアント側もソケット API のレベルから同じくらい労力かけて作る必要があります。

がしかし、WebSocket を採用することでコストダウンという可能性が増えるだけでなく、いろいろな選択肢が出てきます。

WebSocket は HTTP と何が違うかというと、一番の違いは、サーバーからのプッシュ通信は不可能だったのが(って言い切っちゃうと反論ありそうですが、そこはすみません)、WebSocket では可能になったことだと思います。

高々それだけの違いかと感じるかもですが、自分はすごーく大きいことな気がするんです。

というわけで、備忘録兼ねて C++ で WebSocket サーバーアプリのテストコードです。boost::asio を使わせてもらっています。

Windows (VisualStudio2015) 及び Linux (gcc) での実装を作ってみました。なおクライアントはブラウザ(javascript)です。

https://github.com/tr-takatsuka/TestWebSocketChat

ネットの記事などを見ると、WebSocket と言えば node.js で組むのが一番メジャーなのかなーと思います。次点で Ruby とか Python とかでしょうか。

なので、「いまさら C++ でサーバー? しかも WebSocket!?ぃゃぃゃぃゃぃゃ・・」という声もありそうな気がしますが、きっとニッチな活用場所があるだろうと思っています。

  • 制御機器を作りたいが、UI はリモートのブラウザで実現できちゃえばコストダウン出来るし使い勝手もいいなぁ・・・みたいな場合。
    C++ なので、BSD SOCKET さえ用意されている環境なら実装できます。機器にゴージャスなタッチパネルを搭載しなくても事足ります。
  • WindowsXP でしか動かせないハードウェアがありスタンドアロンアプリしか存在しない・・でも、効率化の為、リモートのブラウザで操作したい・・・みたいな場合。
    C++ なら環境固有なコードも書きやすいので、ブラウザとの橋渡しという用途もありそうです。
  • 流行りの言語を使ったアプリ開発をしたいが、どうしても低レベルな制御は必要。低レベルな箇所だけは C++ で書いて、上位レイヤとは WebSocket でやり取りをする。とか。
    昨今の流行り言語ならほぼすべて WebSocket をサポートしてそうです。たぶん。
  • シビアなタイミングが要求されるようなケースで C++ を選択せざるを得ないが、UI はブラウザを使ってラクに作る。みたいな場合。

・・・・なんか似たようなケースを羅列したような気がしますが、そんな感じです。

今後は C++ + WebSocket も選択肢の一つとして提案していきたいなーと思った次第。よろしくお願いいたします。

PukiWiki ファイル暗号化機能追加版

PukiWiki にファイルを暗号化する機能を追加してみました。

GitHub で公開していますので興味のある方は見てみてください。
https://github.com/tr-takatsuka/PukiWikiEf

自前サーバーで運営する分には、わざわざ PukiWiki の機能としてファイル暗号化をせずとも、OS の暗号化機能で同じことが出来るんですが、レンタルサーバーなど、他者が管理してるストレージを使うような場合に、「それで情報は守られるか!?盗まれることはないのか!?」っていう意見が少なからずあるんじゃないかなーと思いますし、その懸念はおっしゃる通りな気がします。
PukiWiki を利用するにあたり、そのあたりの懸念を多少は払しょくできる材料になるかもしれないなと思います。

昨今の CMS は DB を使うものが多く、そうなると DB の暗号化を考えなくてはなりませんが、レンタルサーバー等、利用者からは手を出せない場合が多いです。
PukiWiki は DB を使わないのでそういう面では有利なのかなーと思います。

PukiWiki 開発者様に感謝です。

・・・

最近は amazon を筆頭に google や microsoft などの超有名企業から、さくら や GMO など老舗業者はもちろん、あまり耳にしたことないような企業も、各種クラウドサービスを提供しています。
きっと利用者の情報は漏れないよう色々対策しているとは思うんですが、どういう対策をしているのか、あるいはしてないのかっていう具体的な説明はほとんど見たことがありません。(約款とか小さい文字を隅々まで読めば何か書いてあるのかな・・・)

が、時代的にクラウドサービスを利用することは当たり前になってきたので、例えば AWS を利用するって提案したときに、「 AWS!? サーバーは何処に置くの? HDD は暗号化されてるの? そこの社員には情報筒抜けなんでしょ?危なくない? 」なんてことを気にすることも少なくっているのかなーと思います。

だからどうだっていう訳ではないですが、時代の流れを感じます。

発煙筒

ユーザー車検をしている方の中には、発煙筒のチェックで落とされる運の悪い人が、少なからずいるハズです。
自分もその一人です。
ただ、発煙筒には有効期限があってたぶん4、5年くらい。
そのたびに買い替えとかないと、運の悪い検査官に当たったら落とされてしまいます。
で、自分の発煙筒ももう有効期限切れ。
どうしよう・・。新品を調達するか、運を天に任せて期限切れのまま臨むか・・。
と思っていたら、発煙筒代わりになるものがあることを知りました!
値段も手ごろだし、壊れない限り無期限!
というわけで早速購入して、意気揚々とユーザー車検に臨みました。
案の定、発煙筒のチェックなどされることはなく、せっかく買ったものを活用することなく通りましたが、いい買い物をしたと本気で思った次第。オススメです。

ジョギングシューズ

asicsGT-2170
自分ではまったく気にしてなかったんですが、ご指摘頂きウラを見てみたら、もう寿命な感じでした。
クルマで言えば、これくらいのミゾなら、15分くらい走ってバーストさせて終わらそうって感じなのですが、
機械ではない自分の足のことを考えて、シューズ買い換えました。
asicsNW4
旧モデルで安売りしてたアシックスのニューヨーク4です。このシリーズを買い続けて3足目です。
とにかく故障はしたくないので、クッション性重視!初心者向けバッチコイ!です。
走った感じの感想としては、なんか気分がいい!って感じです。
やっぱり新しい靴はいいすね。

FreeNAS を 9.10 にアップデート

社内の FreeNAS を 9.10 にアップデートしてみました。

手順は簡単で、ブラウザから[システム]-[更新]の画面のコンボボックスで FreeNAS-9.10-STABLE を選択、”Check Now” ボタン押して、”OK” ボタンを押す。あとは自動でアップデートしてくれます。
FreeNAS9.10update

9.10 がリリースされてから数ヶ月経ってますし、これといって新し物好きという性格でもありません。がしかし、仮想化機能「bhyve(ビハイブ)」っていうのが載っているというあたり、仮想化好きな自分としては惹かれます。

FreeNAS を iSCSI 使って ESXi でマウントして使うっていうのがスタンダードな構成(かな?)だったところに変化がくるかもしれません。

とはいえ安定して使えるようになるのはもっと先になりそうということなので、それまでは開発者の方に感謝しつつ、期待して待ってようと思います。

ACアダプタ修理

8年前に買った DELL の inspiron1520 っていうノートPC。
とても気に入ってて当時、家から事務所から現場にとほぼ常にカバンに入れて持ち歩いてました。
が、それが災いしてかACダプタのどこかが、たまーに断線してるっぽくて、コンセントに繋いでいるつもりが実はバッテリ駆動になっててそのまま気が付かず突然シャットダウンなんてことがありました。

というわけで、ACアダプタを修理を試みました。

まず躓いたのが、ACアダプタを開けられない。
昨今のACアダプタのケースは溶接(という表現ではないと思いますが)されているようで、マイナスドライバでこじ開けることとなりましたが、なんとか開きました。

で、開けたところで、実は断線してるとこがわかりません。
一番怪しげな箇所をテスタで見ても通電してそうだし・・。
たまーに断線っていう状況のめんどくさいところです。

で、めんどくさいので、その一番怪しげなケーブルのヨレヨレになってる箇所をバッサリいってみました。日曜大工万歳。

DCIM0011

読みが外れるなんてことは考えもせずに、意気揚々とケーブルをハンダでコテコテして繋げて、ACアダプタのケースはタイラップで閉じました。タイラップ万歳!

で、いざPCにつなげてみたところまったく症状改善せず!でした。見事に読みが外れました。無念です。

ホームページ改修しました

最新の xoops cube をベースに PHP も MySQL も新しいバージョンで動くようにしました。
文字コードも UTF8 を基本にしたので文字コード絡みの面倒さも激減。
xpwiki や xpress などのモジュールも使って、更新もラク出来そうです。

旧ホームページは10年前に当時の xoops をベースに構築したものですが、今までほぼ手をかけずに使い続けたことを考えれば、十分な成果だったと思います。

xoops cube プロジェクトとしては、今後セキュリティフィックス以外の更新はないとのことなのでとても残念ですが、自分でいじれることを前提にすれば今でも良い選択肢である気がします(と言っても自分も全然理解は足りてませんが・・)。
開発者の皆様に感謝しつつ使わせて頂こうと思います。

なお、ホームページを改修したとはいえ、コンテンツの類はまだまだ工事中なので徐々に整えたいと思います。
今後とも有限会社シンクリッジをよろしくお願い申し上げます。

SNI SSL ってのがけっこう一般的になってきてるみたい

SNI SSL ってのがけっこう一般的になってきてるみたいで、これはかなり良さげな気がしてます。

SSL っていうと IP に紐づけるもんで、いわゆるレンタルサーバーの1サイトで使うみたいなことは事実上不可。
・・・っていうのは、ちょっと前までの話。今はそんなことなさげです。

なので、HTTP じゃ不安だ(=信用ない)から HTTPS にしたい!ってなったら1つのIPを占有できる専用サーバー(今だとVPSとかも)を使うのが定石だったのが、SNI SSL を使えば、レンタルサーバーでも HTTPS のメリットを受諾できます。

DB が使えて、cron が使えて、perl や PHP が使えるレンタルサーバーは全然珍しくないので、そこに SNI SSL を組み合わせれば、実は、Webシステム案件の多くは、証明書代含めても月々千円程度の環境で行けてしまいます。

さらに、レンタルサーバーであれば、OSのパッチあてとかメールのウイルスフィルタ対応とかは、業者様がやってくれ(ることになって)ます。

そのへんも勘案すると実は、保守費用を別にして月々数千円~1万円以上を覚悟しないといけないと思っていたことは正しくないかもしれません。
ぜひ考慮したいところです。

とはいえ、もちろん、それでも採用出来ないケースはあります。
業者のサーバーに機密情報を置きたくないとか、
ネイティブアプリをサーバーで動かしたいとか、
WindowsXP(のIE) とかガラケーとかは SNI SSL に非対応みたいなので、もしそれら端末からのアクセスを考慮する必要があるときとか。

なにはともあれ、選択肢や可能性が増えることには違いないので、こういう新技術は上手に使っていくことが必要だって感じたと同時に、付いていけるように勉強しなきゃならないと思った次第です。
頑張ります!・・頑張りたい!・・頑張なくてもいい天賦の才がほしい!・・来世に期待しよう!

ありがとうございました。

VMware Server から ESXi へ

社内サーバー環境刷新してみました。

これまでは、1台のサーバーPCで、WindowsServer をホストOSにして、VMwareServer1.0 使ってゲストOSを5~6個動かしておりました。

これはこれでまったく困ってなかったんですが、もう提供すらされてない VMwareServer を使い続けても芸がないかと思い、勉強かねて FreeNAS と ESXi を使った環境に移行してみました。

貧乏性 エコな性分なので、これまでどおり全てを激安サーバー1台で賄うようにして、初期投資と電気代と場所の節約を念頭に置きます。

サーバーPC は FUJITSU MX130 S2。HDD は 1T×2台。ESXi のブート用に8Gの USB メモリ。

  1. ESXi6.0 の ISO イメージをダウンロードして、USBメモリにブート可能な状態として用意。
  2. MX130 S2 に USBメモリを挿し、BIOS で USB ブート可に変更し、ESXi6.0 のインストーラーを起動。
  3. インストール先に、同じUSBメモリを指定しインストール。
    ESXi6.0 は MX130 S2 のデバイスはたぶん全て認識してくれたので、特別なことは何もなくインストール完了。
  4. ESXi 上で FreeNAS9.3 に HDD の 8G くらいを割り当ててインストール。
  5. FreeNAS に、HDD×2 の残りを割り当てる。大体 900G × 2。
  6. FreeNAS 上で、この HDD のミラーのボリュームを作り、iSCSI で共有とする。その際、暗号化をONにして、パスフレーズも設定。
  7. ESXi に戻って、この iSCSI を使ったデータストアを作成。これで、900Gサイズの暗号化されてて RAID1(ミラー)な領域を確保。
  8. これまで稼働させていた各ゲストOSを、VMware vCenter Converer Standalone を使って、上記の領域に持っていって(変換して)完了。

という感じです。

この環境の1番のメリットとしては、FreeNAS のボリュームの中に、各ゲストOSを置くことになるので、特別なハードは不要な上、各ゲストOSに何の細工もナシで、RAID と HDD 暗号化と圧縮の恩恵に預かれるところでしょうか。

HDD 故障に備えた RAID はもちろんですが、昨今の風潮的に、社内サーバーとはいえ泥棒に入られりして HDD を盗まれる可能性も考慮して、暗号化は入れときたいところです。

さらに、暗号化しておけば、HDD を破棄するときの厄介からも解放されます。
データ流出を恐れて HDD にドリルで穴開けるとか、専門業者に高いお金だして消去と廃棄を依頼するとか、かなり手間をかけなければならないところ、何も考えずにそのまま廃棄出来てしまうのはかなりメリットです。

デメリットとしては、FreeNAS がけっこうメモリを食うようなので、そこは奢っとく必要がありますが、ミラーで使う分にはそれほどでもないっぽい気もします。

もうちょっとゴージャスを求めていいんであれば、RAIDZというやつにしてもいいかもです。 HDD が最低3台必要で、メモリも食いますが、すごそうです。

一応、すんなり行かなかったこともあり、ネットで調べたりしたので、備忘録としてあげておきます。情報をあげていらっしゃる方々に感謝です。

  • VPN (ブリッジ) 通信が通らない対策。
    ローカルブリッジ機能を使用するためにはプロミスキャスモードを有効にする必要があるが、ESXi のスイッチがデフォルトで無効になってるので変更する。
    スイッチのセキュリテイタブより「無差別モード」を「承諾」に変更して「OK」をクリック
  • ESXi に WindowsXP,2003 の vSphere Client から接続できない場合の対処
    1. ESXi へ SSH にて接続
      /etc/vmware/rhttpproxy/config.xml を編集
      <vmacore> – <ssl> -

      <cipherList>ALL</cipherList> ←追記

    2. サービスを再起動
      /etc/init.d/rhttpproxy restart
  • VMware vCenter Converer Standalone で変換する際、デフォルトのままだと、元の HDD の設定に関わらず シックプロビジョニング になってしまうので、空き容量に余裕がないときは要設定変更。

これだけ便利でよくできた環境が、たいしてコストかけずに出来てしまうことに感心してしまいますし、優秀なソフトを開発されてる方々に感謝です。

いまどきは、クラウドやら Saas やら VPS やらが充実してますので、社内にサーバーやストレージを置かなきゃいけないようなケースも減ってきているとは思いますが、大量のデータを扱いたいとか、外のサーバーに大事なデータを置いておくのは不安とか、コストの面以外にも、社内に置くメリットはまだあると思います。

一応自分もIT業界の端っこに身を置いてますんで、いろいろな案件に適切な提案をしていけるよう精進しとかんとイカンなと思った次第です。

有限会社シンクリッジは会社設立15周年を迎えました

当社は2014年12月3日を持ちまして、会社設立15周年を迎えるに至りました。

これからも職員一同、それぞれの分野で一人ひとりが腕を磨き、お客様にご満足頂ける仕事をしていける様、励んで参ります。

今後ともご指導、ご鞭撻を賜ります様、心よりお願い申し上げます。

有限会社シンクリッジ 職員一同


アーカイブ