先ほど、自宅サーバーから仮想サーバー(VPS)に移行および切り替えが完了しました。
そろそろ自宅サーバーをVPSへ
そろそろ、自宅サーバーで動かしているこれとかあれとかの公開コンテンツを石狩浜近くのデーターセンターとかで動いている仮想サーバー(VPS)に移そうかと思います。
新しくサーバーを構築し直すのは面倒ではあるものの、これで
- 暑い部屋にサーバーの廃熱がこもって寝苦しくてたまらない問題
- 狭い部屋にサーバーの騒音が漏れて気になり出すと寝られなくなる問題
- 部屋に来ている電源の容量が少なくて中の人が調子に乗るとブレーカーが落ちる問題
- 日中に電気工事の業者が間違って住み処の主電源を落とすと帰るまでサーバーを起動できない問題
- サーバーの定期バックアップに気を抜くと実にいいタイミングでディスク障害が起きる問題
- 部屋に来ている回線の帯域が細くて中の人が調子に乗ると外からのページ閲覧が糞遅い問題
- バックアップシナリオやら部品交換やら毎月の電気代やら考えたらコスパでVPSに負けている問題
- 使っているCPUやらメモリやらHDDやら比較したらスペックでVPSに圧倒的に負けている問題
- サーバーに250GBのHDDを内蔵しているけど実際のところ5GBぐらいしか使っていなかった問題
- 住み処界隈で大きめの地震や停電が起きるとあれこれ何か良くないことが起きるかも知れない問題
- いつの間にかグローバルなIPアドレスが変わっていて外からアクセス出来なくなってる問題
…が一気に解決。するかもしれない。
移行が完了したら、本ブログにて改めてお知らせしたいと思います。
シューティングゲームの企画
お久しぶりです。
ちょと、間が空きすぎましたのでここは一つ下らないネタを投入してお茶を濁そうと思います。自分は作る気が起きないので、この企画、いいな!と思ったら、勝手に作って売ってくださっても構いません。
では行ってみます。
がんばれ 地球防衛隊
あらすじ
防衛隊守る平和な地球に、宇宙にその名を恐れられる強大な帝国がついに攻撃を仕掛けてきた。プレーヤーは防衛隊の持つ自機を操って、敵軍からの熾烈な攻撃を防ぎ、この地球を救わなければならない。
遊び方
プレーヤーにはエネルギーがあります。プレーヤーは自機を操り攻撃するごとにエネルギーが減ります。しかし、攻撃し敵機を撃墜するとスコアとエネルギーが得られます。プレーヤーのエネルギーやストックされている自機がすべてなくなるとゲームオーバーになります。ハイスコアは記録に残ります。
敵軍は、ザコ、小ボス、中ボス、大ボスを送り込んできます。大ボスを倒すとステージクリアです。
防衛軍
自機は画面上を動くことができます。動くたびに少しずつエネルギーを消費します。自機はビーム砲とミサイルが撃てます。ビーム砲は破壊力は小さいですが連射が効きます。また、エネルギーの消費が小さいです。ミサイルは連射が効きませんが破壊力抜群です。エネルギーの消費も大きめです。
操作している自機にストックされている自機を連結して、攻撃力をアップすることができます。ただし敵軍に撃破されると連結していた自機も失います。
プレー中に補給船が時々現れます。補給船を攻撃すると自機のストックが1機増えます。ストックされている自機もエネルギーをわずかながら消費します。
帝国軍
ザコ
群れで現れ、自機に向かって体当たりしてきます。攻撃力が弱いので、自機は数回の衝突なら耐えられます。自機のビーム砲一撃で倒せます。
中ボス
ザコに混じってときどき現れ、自機に向かってミサイルを撃ってきます。ミサイルの直撃を受けるとあっという間に撃墜されてしまいます。耐久力があるので、自機のビーム砲を何発か浴びせないと撃破することはできません。撃破するとエネルギーが補充されます。
ステージが進むと、まれに複数の中ボスが現れて連携して攻撃してくる場合があります。
大ボス
一定の時間をおいて単独で現れ、自機に向かってビーム砲やミサイルを駆使した攻撃をしてきます。耐久力がとてもあるので、自機のビーム砲やミサイルをたくさん浴びせないと撃破することはできません。撃破するとエネルギーが大量補充されます。
その他
ボーナスアイテム
ごくまれにボーナスアイテムが一定時間出現します。このアイテムを専用兵器で撃墜すると、莫大なエネルギーとスコアを獲得できます。ただしこの専用兵器は、ある程度のエネルギーが貯まっていないと使用できません。しかも、使用するとエネルギーを大量に消耗します。
主なプログラミング言語は英語ベース
全然更新しておりません。申し訳ございません。ブログを使っての短文・散文・つぶやきは、もう完全にツイッターに駆逐されてしまった感じがします。
全然関係ないですが、「ネイティブスピーカーの英文法絶対基礎力」という本を駅の本屋でふらっと買って通勤時間と昼休みにガガっと半分読んでみたわけですが、おおお〜。真理追求粘着人間の拙者が、このような本をもしも20年ぐらい前に読んでたら、少しは人生が違っていたかも知れません。ハーイ、アイ アム ジャパニーズ プログラマー。
Unix Time Converter 2.0.105 を公開中
NSImageにEXIFをつけてJPEGで保存
お正月からすっかり放置しておりました。放置している間にも色々とイベントが発生したりフラグが立ったり回収されたりしておりましたが、それはまたの機会に時期を逃しつつ情報漏洩していきたいと思います。
閑話休題。 MacでNSImageをJPEG形式で保存するときに、JPEGの圧縮率(画質)を指定しながら画像の回転方向(Tag ID 0112)を付加したいと思ってコードを書いたら、結構な七転八倒だったのでメモを残しておきますよ。
NSImage *saveImage = 保存したい画像;
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy:MM:dd HH:mm:ss"];
NSString *exifOriginalDate = [dateFormatter stringFromDate:[NSDate date]];
NSNumber *exifOrientaion = [NSNumber numberWithInteger:1];
NSNumber *jpegCompression = [NSNumber numberWithFloat:0.75];
NSMutableDictionary *metaProperties = [NSMutableDictionary dictionary];
NSMutableDictionary *tiffProperties = [NSMutableDictionary dictionary];
NSMutableDictionary *exifProperties = [NSMutableDictionary dictionary];
[metaProperties setObject:jpegCompression forKey:(NSString *)kCGImageDestinationLossyCompressionQuality];
[metaProperties setObject:exifOrientaion forKey:(NSString *)kCGImagePropertyOrientation];
[tiffProperties setObject:exifOrientaion forKey:(NSString *)kCGImagePropertyOrientation];
[exifProperties setObject:exifOriginalDate forKey:(NSString *) kCGImagePropertyExifDateTimeOriginal];
[exifProperties setObject:exifOriginalDate forKey:(NSString *) kCGImagePropertyExifDateTimeDigitized];
[exifProperties setObject:@"Exif user comment" forKey:(NSString *)kCGImagePropertyExifUserComment];
[metaProperties setObject:tiffProperties forKey:(NSString *)kCGImagePropertyTIFFDictionary];
[metaProperties setObject:exifProperties forKey:(NSString *)kCGImagePropertyExifDictionary];
NSMutableData *saveImageData = [[NSMutableData alloc] init];
CGImageDestinationRef dest = CGImageDestinationCreateWithData((__bridge CFMutableDataRef)(saveImageData), kUTTypeJPEG, 1, nil);
CGImageRef recViewImageRef = [saveImage CGImageForProposedRect:nil context:nil hints:nil];
CGImageDestinationAddImage(dest, recViewImageRef, (__bridge CFDictionaryRef)(metaProperties));
CGImageDestinationFinalize(dest);
NSString *path = @"~/Desktop/SavedImage.jpg";
[saveImageData writeToFile:[path stringByExpandingTildeInPath] atomically:YES];
ARCは有効になっていることが前提です。
回転方向、なぜだかオプションの直下とオプションの下のTIFF情報にそれぞれ設定しないと、QuickLookとプレビューの表示に反映されない気がします。(もしかしたら気のせいかもしれません)
ついでにEXIFのタグ一覧を眺めていたら、むむ、Tag ID BC02 も回転方向に関する情報っぽいですね。使っているカメラとかアプリとかあるのだろうか。値の定義がタグ0112と互換が無いようですし。
そして話がややこしいことに、UIImageOrientationの定義がEXIFで定義されている値と互換が無いという…。