運動不足なITエンジニアのマラソン奮闘記

はいさ~い!沖縄開発部の佐久本です。
沖縄は少しずつ寒さもなくなり、過ごしやすい季節となりました。

IT業界は運動不足な人が多いイメージですが、私の趣味はマラソンです。
過去にはフルマラソン完走経験もありますが、最近走るのはサボっています。

練習していない中、マラソン大会にはちゃっかりと参加していますが、
走り終わった後に、もっと練習しておけばよかったと後悔します。

今回はIT企業らしくなく、技術的な話ではありませんが、
沖縄で参加した方が良いマラソンイベントを紹介します。
※離島のマラソンには参加していないので偏った意見ですが・・・

(1)NAHAマラソン
沖縄で一番有名ではないかと思うNAHAマラソンです。
毎年12月に約3万人も人が参加する大きなイベントです。

沿道の方の応援も多く、7キロ付近で西城秀樹のYMCAが流れて
みんなで走りながらYMCAをやるという奇妙な空間があります(笑)
最初に参加したときは、恥ずかしながらやってましたが、今では違和感なくやっています(笑)
コスプレをしている人もたくさん居て、走りつつも見て楽しむマラソンだと思います。

個人的には12月の暑いマラソンとなるため、完走が難しいです。
過去に4回出てますが、完走は1回しかしていません。
ちゃんと練習してないからだと思いますが・・・

那覇マラソン公式サイト
http://www.naha-marathon.jp/

(2)尚巴志ハーフマラソン
次は、毎年11月頃に行われる尚巴志ハーフマラソンです。

NAHAマラソンのように華やかなマラソンではありませんが、
新里坂(シンザトビラ)という山登りをしているような勾配のある坂と
ニライカナイ橋という海がよく見えるポイントがあります。
綺麗な海の景色を見ながら走るマラソンは格別です!!!

あまり海が見えている写真が無かったのですが、オーシャンビューを楽しむことができるはずです。。。

尚巴志ハーフマラソン公式サイト
http://www.shouhashi.jp/

(3)あやはし海中ロードレース
次は、毎年4月頃に行われるあやはし海中ロードレース(ハーフマラソン)です。

こちらは東洋一の全長4.7Kmの「海中道路」(大きな橋)を渡るマラソンとなります。

NAHAマラソンや尚巴志ハーフマラソンに比べて平坦なコースで、
橋から眺める海の景色や磯のかおり感じながら走ることができるマラソンになります。
楽しく海をゆっくり眺めながら走りたい方におすすめのマラソンです。

あやはし海中ロードレース公式サイト
http://www.i-sam.co.jp/ayahashi_roadrace/

ということで、おすすめのマラソンイベント3つを紹介しました。
もし、沖縄でマラソンイベントに参加したい方が居れば、ぜひ参加してみてください。

技術的な話も今後は書いていきたいと思いますが、
沖縄の面白いところもどんどんアップしていきたいと思いますので、ご期待ください。

君はマーティン・ファウラーを知っているかい?

いかがお過ごしでしょうか。福岡拠点の野田です。
春は新しい生活がはじまる季節です。初心に返って今日はマーティン・ファウラーの話を少し。

ソフトウェアの設計の世界でマーティン・ファウラーを知らない人はいないと思います。ThoughtWorksに所属し、アジャイルソフトウェア開発宣言の起草を支援するなど、ソフトウェア開発業界に数多くの影響を与えている人です。

https://ja.wikipedia.org/wiki/%E3%83%9E%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%83%BB%E3%83%95%E3%82%A1%E3%82%A6%E3%83%A9%E3%83%BC

私がマーティン・ファウラーを初めて知ったのは、2005,6年ごろ依存性注入(DI: Dependency Injection)が話題になったころ。今では多くのフレームワークに採用され、当たり前となった概念も当時は目からうろこでした。

http://kakutani.com/trans/fowler/injection.html
https://ja.wikipedia.org/wiki/%E4%BE%9D%E5%AD%98%E6%80%A7%E3%81%AE%E6%B3%A8%E5%85%A5

DDDで基本となるValueObjectをPoEAAで紹介していたり、マイクロサービスについて語っていたり、設計の世界では伝道師的な存在だと思っています。

http://kimitok.hateblo.jp/entry/2014/11/09/211820
https://martinfowler.com/bliki/ValueObject.html

まだ知らなかった方はこれを機会に是非記事を読んでみてください。発表されてから時間の経つものが少なくないですが、いまでも通用するものが数多くあります。

気になる本家サイトは、こちら。

https://martinfowler.com/

英語サイトの日本語訳をやっている方々もいらっしゃいますので、ご参考まで。

http://bliki-ja.github.io/

 

OpenGLが使うピクセルフォーマット

WindowsアプリでOpenGLを使ってプログラムを組む時の初期化処理の一環で、次のようにピクセルフォーマットを設定してやる必要があります。これを紹介しているサイトはいくつも見つかりますが、これが一体なにを示しているのか?まで解説しているところがないので調べてみました。

この部分って定型になっていて、気にしなくてもOpenGLプログラミングできますが、一度気になると調べたくなる性分なので仕方ない。

ここで使っているAPIの1つ目はChoosePixelFormat()です。このAPIはアプリを動作させるPC上で使用可能なピクセルフォーマットの番号を返してくれます。第一引数のhDCにはOpenGLで描画するウィンドウのデバイスコンテキストを指定します。第二引数のpfdにはPIXELFORMATDESCRIPTOR 変数のアドレスを指定します。前処理として、このPIXELFORMATDESCRIPTOR のメンバ変数に値を設定してやる必要があります。

nSize
PIXELFORMATDESCRIPTORのサイズ。Windows APIでよくやる手法です。nVersion
絶対1です。

dwFlags
ここで使用目的を指定します。OpenGLではこうです。
(0x01)PFD_DOUBLEBUFFER – ダブルバッファリングで描画高速化
(0x04)PFD_DRAW_TO_WINDOW – ウィンドウに対する描画
(0x20)PFD_SUPPORT_OPENGL – OpenGLサポート

iPixelType
PFD_TYPE_RGBAでRGBAでの使用を宣言します。
もう一つPDF_TYPE_COLORINDEXがありますが、こちらは使いません。

cColorBits
使用する色のビット数を指定します。
8bit – 白黒
24bit – RGB(赤緑青)
32bit – RGBA(赤緑青+透明度)

これを実行すると入力に応じて適切な番号が返ってくるので、これをSetPixcelFormat()に渡してデバイスコンテキストが使用するピクセルフォーマットとして設定するわけです。

ちなみにそのPCでどのようなピクセルフォーマットが使用可能かを取得するAPIも存在します。

DescribePixelFormat(hDC, 0, 0, NULL);でそのPCにあるピクセルフォーマットの個数が返ります。あとは第二引数にその番号を入れてやれば情報を取得することができます。ChoosePixelFormat() で帰ってきた番号を入れることで、OpenGLで使うピクセルフォーマットの内容も分かります。私の環境ではこうなっていました。

おじさんがソロキャンプツーリング行ってきた~道志渓谷キャンプ場~

2018年3月17日

天気は晴れ、少し寒いけど念願の初めてのキャンプツーリングに出発!

行先はここ↓

道志渓谷キャンプ場

この日のためにひと月以上前からキャンプ用品を揃えたりデイキャンプをしたりなど、

着々と準備を進めてきました。

 

キャンプ場までは約90Km

初めてのキャンプ、初めての積載(ブログに載せるつもりなかったので積載しているバイクの写真はないです。。)で高速なんて使えるわけないだろ!

ということで僕はおとなしく下道を走るのでした。

目的地までの道のり

 

今回の目標は以下の4つ

①焚火を楽しむ

②食事を楽しむ

③星空を楽しむ

④無事に家に帰る

やっぱり焚火だけはどうしてもやりたい!

ただ、最初っからやりたいこと多すぎるかな、と思いつつ二回ほどコンビニに立ち寄り

食事と買い物を済ませいざキャンプ地へ!

 

キャンプ地到着

この上の写真の右のほうに屋根が写ってますがここが管理棟。

バイク止めてまずは携帯の電波確認! うん、ちゃんと4Gでつながる。

なにかあったときのためにも電波はつながるかちゃんと確認しておかないとね。

そんなことしていたら中から管理人のおばさんがでてきてそのまま受付へ。

バイクは一泊1000円(3月は温泉でないのでいつもより500円安いらしい)という

超激安価格になっていて最近キャンプ道具揃えて散財している身としては

大変うれしい設定となっています。

(たいてい車料金とバイク料金でわかれていてバイクのほうが若干安い。)

お金払って注意事項の確認。

川サイドか山サイドか好きなとこにテントはってね

と言われたので川見ながら過ごしたかったので川のほうへ降りて行ってテント設営開始。

デイキャンプの成果見せてやる!

と張り切ってテント設営しようとしたはいいけれど風が思いのほか強く難航。

そして…

なんとか設営完了。

山のせいで日陰になってるけど目の前が川という絶好のロケーション!

テント設営後は近くを散歩したりのんびり川を見つつコーヒーを飲んで音楽を聴いて、

とても贅沢なひと時を過ごしました。

 

今回最大の目標を達成

17:00を過ぎるころにはあたりは暗くなりはじめ、だんだんと寒さが増してきて。

ただし、寒さと引き換えに風が止んだ!

早速管理棟で薪を買ってきて焚火の準備。

この日のために焚火の起こし方を調べてきたけど実践は初めてで

ドキドキしながら火起こし。

なんとか火起こしできて夕飯のカレーめんを堪能

18:00に焚火を開始して約2時間30分後、最後の薪がなくなり終了。

焚火を囲んでご飯を食べながら星空を見る、

というこれまたとてつもない贅沢な経験ができました。

 

さらば、キャンプ地!

焚火が終わるとやることもなくなり、テントに入り就寝。

まだ21:00なので寝れるはずないですが、寝袋にくるまれながら暗闇を楽しみます。

寝ては起きてを繰り返し、想像以上の寒さに震えつつもあっという間に朝を迎え

6:00から朝食をとりつつまったり過ごす。

朝食が終わり、ぼちぼち撤収の準備を始めていると山から太陽が!

それまで明るくても肌寒かったのですが一気に暖かくなり

それまでの寒さを吹き飛ばしてくれました。

撤収作業を中断し、しばしの日光浴。

30分ほど経過し撤収作業再開!

8:30ごろキャンプ地を出発し自宅へ帰るのでした。

 

感想

行くまではどうなることかわからず、楽しさ半分不安半分でしたが

実際についてみたら楽しさしかなかったです。

積載の問題でかなり行き帰りの運転がしずらかったので

これは次回の改善点ですね。

目標も達成できて、想像以上に贅沢な時間を過ごすことができてとても幸せでした。

近いうちに今度は桜を目的にキャンプ行ってきたいと思います。

VPSサーバーのリソース不足を回避する方法

福岡拠点の野田です。もうすぐ花見の季節ですね。来週か再来週あたり、お昼休みの合間を縫って花見に行きたいと思っています。

さて、今日は、仮想サーバーのリソース状況について話をしようと思います。
皆さんは、VPS環境で以下のような画面を見たことがありますでしょうか。開発用だったり、低予算の貧弱な環境では、結構こういう場面に遭遇することもあります。

The following exception is caused by a lack of memory or swap, or not having swap configured
Check https://getcomposer.org/doc/articles/troubleshooting.md#proc-open-fork-failed-errors for details
[ErrorException]
proc_open(): fork failed - Cannot allocate memory

上記は、composer を実行した際に発生したエラーです。このエラーがでたあと、httpd をいったん停止してから実行すると普通に実行できたりします。これは、仮想サーバーのリソースが不足するために発生しているエラーになります。こういうときは、都度、エラーが出るたび、httpdを止めて、ということをしなければいけないのでしょうか。

仮想サーバのリソース状況をチェックするには以下のようなコマンドがあります。
cat /proc/user_beancounters

この中のprivvmpagesという値に注目します。これは、プライベート仮想メモリサイズです。リソースを解放するためには、httpd など消費リソースが大きいサービスを再起動するとリソースが解放されます。

以下は、リソース情報をチェックし、閾値を越えてリソースが足りない状態になると httpd サーバーを再起動するスクリプトになります。

/root/bin/restart.sh

シェルを毎分 cron 実行したら、リソースがないときは、httpdを再起動して、適宜、リソースが解放されるという仕組みです。

ちなみに800 というのはなんとなくの感覚値です(・ω<) 。某VPSサーバーでは、httpd を再起動すると 3000 くらいまで回復します。300 とか切るとセグメンテーションエラーとかメモリ関連のエラーがよく発生します。

これでサーバーのリソース不足でエラーとなるイライラも収まるでしょう。それでは、Have a nice server life!