Retina非対応アプリをRetina化する方法のメモ


アプリアイコンを右クリック→情報をみる(コマンド+i)より情報を見ると、

「低解像度で開く」がチェックされた状態で編集不可になっているので、以下の手順でこのチェックを外せるようにします。

※設定は自己責任でお願いします

1. ****.app/Contents/Info.plistをテキストエディタで編集する。
最後のを閉じる直前に

NSHighResolutionCapable

と挿入。
2. ****.appをコピーして複製する。
3. 複製した****.appの「情報をみる」をすると「低解像度で開く」のチェックが外れていることを確認。

4. ****.appを退避して複製したアプリを元のアプリ名にリネームする

Eclipseは以上ですんなり上手くいきました。
Excel2011は、設定しても起動時は低解像度のままで画面を再描画するタイミングで高解像度になってましたが、Mac再起動したタイミングあたりで起動直後から高解像度になりました。
Retina対応してないだけでアプリを使う気が変わってしまうので、個人的にはこの設定が必須です。
Wordでも高解像度になったのですが、リボンのいくつかが効かなくなったので、この設定により何かあるかもしれません。(低解像度で開くをチェックすれば戻るので様子見してます)→一度低解像度でリボン試して高解像度にして開いたらリボン問題なくなりました。低解像度と高解像度を切り替えて起動してるとキャッシュまわりで何かあるせいかもしれません。

太陽光発電システム.蓄電システム

学生のときやりたかったこと

いつかやりたいことの1つに、環境問題を軽減する発明品を開発したいということがあったりします。
結構話すことが多いんですが、社会に出る前にやりたいと思ってたことに下記があります。

1.環境問題に取り組む(なるべく難しい環境問題を解決したい)
2.勉強したいのに勉強できない人をなくしたい(オンラインで自主的に勉強できる仕組みをつくりたい)
3.餓死をなくしたい(食糧を自動分配する仕組みをつくりたい)
4.役に立つゲームをつくりたい(特に一生を擬似体験できるライフシミュレーターをつくりたい)

2は供給が盛んで、急激に実現に近づいてきているので、自分はたまたま得意なことを活かして携われればいいかな程度になってきてます。
3は、何かの保存が効く栄養食品を安価に自動生産できるようなものができればいいけど、自分の得意なことと遠そうなので他のことを優先しようと思ってます。(世界でこれは不幸だと断言できそうなのは恐らく餓死することで、餓死しないために必要なのは2なんじゃないかと思ってます)
1は、大学受験で学科選択するとき、環境問題に取り組む仕事がしたいと相談したらそれなら化学だということで化学に進んだくらいなので、1は優先度が大きいです。
ITに関連してやりたいことはハード連携とか家電OSとか色々あるんですが割愛します。

最近のこと

システム会社を起業して4月で9期目になってしまったのですが、自己資本で赤字も借り入れも特になくそこそこ安定した経営をしています。(正確には銀行との付き合いで借り入れしたことがあるけど、一括返済を断られて返せるキャッシュがある状態)
ちなみに、赤字になりそうなことは結構あります。ハイリスクハイリターンより、ローリスクの堅実な方を優先してしまっているので大きく儲けがでる仕組みはやってません。。稼げる時に稼いでおかないとよくないんですが。

今年度は何に力を入れようと期の変わり目に考えるんですが、
最近思ったことで、こういうのがあります。

自転車は欠点が非常に少ない、すばらしい発明品だと思う。

徒歩 自転車 車

を比べると、車は燃料がないと動かないが、
自転車は徒歩と同じく燃料が不要なのに、
徒歩より長い距離を自転車の方が楽に移動できる。

発明した人がいないと自転車がなかったし、
実用品まで改良した人がいないと、怪我しやすかったり徒歩より疲れたりして、自転車がここまで便利じゃなかったかもしれない。


死んだ後にそう思われながら使われるものをつくれた人生にしたい。


自転車で通勤中に、今期が9期目か10期目かわからないなとか、黒字だったけど意味あるかなとか、なんで20年続けようとおもったんだっけとか、死ぬときどう思うかとか考えて、こういうこと思いましたとさ。
この結論はしょっちゅうたどり着くので、自分の殿堂入りの結論としてメモっておこうと。

リーマンショックで資本主義は終わったと思ってるんですが、
売上第一の消費社会から、質素でも環境保全を優先する社会に向かってるんじゃないかと思ってます。
たまたま、というか需要が高いものほど供給が必要となるのは必然ですが、
ここにきて環境問題の取り組みが、慈善事業じゃなくて、普通に事業としてもやっていけるんじゃないかという感じになってきた気がしてます。

太陽光発電、蓄電システム

やっと表題で、太陽光発電と蓄電システムと連携するシステムを行いたい。
ソーラーパネル、蓄電システム(ハードウェア)が必要だが、ハードウェアは得意分野ではないのでメーカー品を使いたい。
連携できる会社(ソーラーパネル・蓄電システム、土地・ビルなど設置先を保有しているところ)を探したく、下記のような感じで連絡をとってみようと思っています。というか太陽光パネルの専門会社に1社問合わせフォームから送って見た。

代表取締役の於保と申します。
太陽光発電ソーラーパネルについて教えていただきたく、お時間あるときに一度お打合せの機会を頂ければ幸いです。
弊社は、電力会社から委託されたiPad向け電力モニタリングシステムの開発など行なっていまして、先進的で需要の高くなるシステム開発を率先的に行なっています。
打合せの主な目的は、下記になります。
1.太陽光パネルの設置費用、売電収入、敷地面積の概算目安について
 (具体的には、*****に****があり、そこに設置した場合の費用と売電収入目安を知りたいです)
2.スマホ,タブレットでグラフを可視化するためのシステム提供をしたい
 (または、どういうものが必要か知りたいです)
3.太陽光パネル・蓄電システム・HEMS関連の知識を深めたい

下記、弊社の紹介になります。
http://synapsesoft.co.jp/docs/ios.pdf
グーグルの開発パートナーをやっていますので、
グーグルのシステムと連携した関連システムの開発もしていきたいと考えています。

何卒ご検討のほど、よろしくお願いします。

少し具体的に、ソフトウェアを連携する案を考えてみた。
WiFiフラッシュメモリ・ソフトウェアを発電計量する機器に組み込み、スマートフォンと通信できるようにするのが肝です。

発電システム(資料にリンク)

実際には、太陽光パネルは導入するが蓄電システムは導入しないところもあるだろうし、
反対に、蓄電システムだけ導入するが、太陽光パネルは導入しないところもあると思うので、
WiFi+データ転送ソフトウェアを組み込むのに最適なのは蓄電システムではないかもしれない。

プロジェクト開発手法

同業者の人と話をして、プロジェクト管理手法についていろいろ勉強になったのでメモ。

  1. 割り込みタスクの場合は割り込みとして色を変えてチケットを作成する
  2. 単体テストのときは外部依存値はスタブにして固定値でテストできるようにする
  3. 毎週金曜日にふりかえりで開発内のミーティングを行い、内容を貼りだすようにしている。貼りだす内容は、燃え尽きたなど個人的な内容も入れている。来週やる内容もそこで決める。
  4. gitはmaster(リリース用)、develop用、単体開発のfutureを分けている
  5. リリース用ブランチに対しjskins(?)を使ってリリースしている。不整合があったら担当者にミサイルがあたるようになっている(youtubeに動画があるらしい)。その対応は最優先タスクになる。
  6. phpUnitでテスト作成している。それを仕様として作成するため必須としている。
  7. redmineのステータスにコードレビューをいれ、開発者以外の誰かがレビューをするようにしている
  8. タスクの工数にポイントとつけている。SQLインサートレベルを1ポイントとして、フェボナッチ数列のように大きくなるほどバッファをつくるようにポイントを決めている。これをやることで週にチームでどのくらいポイントを捌けるかわかるようになっている。
  9. phpUnitにテスト用データベース初期化+データ作成の処理も入れている
  10. NetBeansで開発者がPCで開発したものをサーバ上の開発者専用環境で実行してテストしている
  11. gitとredmineを使っている
  12. redmineはクライアントにも公開して共有している
  13. git-flowを使ってgitのタスクの流れをわかるようにしている
  14. クライアントが言ったことはリーダーが「忘れないようにメールしといて」といって、クライアントにも共有するようにしてメールに残るようにしておく。更にメールの一部をコピーしてチケットを作成する
  15. 通常開発より工数は大きくなるので細かくなりすぎないように注意している

おまけ

  1. プロジェクト管理ツールを開発するプロジェクトのとき、ザ・ゴールを全員読んでから取り掛かった
  2. 今はザ・チョイスを読んでいる


今回のプロジェクトはコミット時に自動テストすることを目標!と決めても、割り込みが優先になっていって期間が足りず、開発チーム内の効率がよくなるような作業は優先度が下がってしまい自動テスト化できるのとできないのがでてしまうことがほとんどです。
git、redmine、スタブ作成、リリース反映をコマンド化、についてはやるようになったものの、他社システム連携と要件FIXがボトルネックになって、割り込みタスクによって優先度の影響が狂って余裕がなくなることが多い、という感じです。
下記はできるようにしたいです。

  1. 開発者単位で環境依存のデータベース値、スタブ値を作成をして単体テストを作成してコミット
  2. クライアントとredmineを共有して仕様確認
  3. 振り返りMTGを管理工数が無駄に感じてしまっても意識的に行ってみる
  4. ザ・ゴールを途中までしか読んでなかったので読む。社員全員読んでもらう。
  5. 「忘れないようにクライアントにメールしといて」としてでもメールしておくようにする
  6. コードレビュータスクをつける(余裕があるプロジェクトじゃないと時間的にきつそうだけど)

うちは30人月のプロジェクトとか数年に1回しかなくて、5人月以内のが多い中で10人月以上のものが1個走ってる程度ですが、できるだけ負担を少なくして規模が大きいプロジェクトでも捌けるようにしていきたいです。 ソースが5万行を超えても開発しやすい状態を維持するというのはできるようになったつもりなので、得意不得意が大きい感じですが。

ほぼ直の案件も増えてき(てしまっ)たので、提案書作成と要件定義を強くしないといけないという課題もなんとかしないと。

サーバ選定と仮想化のIOボトルネック解消について検討中

下記スペックのマシンを購入して仮想化しようか検討中。


CPU: AMD Opteron6234 (12core/2.4GHz/16MB/115W) 完全仮想対応
メモリ:8GB DDR3-1333 ECC Registerd ×4
HDD1: SATA 2TB/64MB/6.0Gbps/SV推奨
HDD2: SSD 120GB
ホットスワップケージ(2x2.5"SATA)
レール付1Uラックマウントサーバ
http://www.systemworks.co.jp/pms_s915x.php


これで送料込み21.5万です・・・。コスパやばすぎる。
ECC Registerd対応メモリが8GBで1万円で、8スロットあるので64GBまで増やせて、16GBのメモリを詰めば128GBまで増やせます。


サーバーはDELLIBMのものを購入してるんですが(まだ故障ゼロ)、仮想化対応のCPUでAMD6000シリーズが本命なのに、いくら待ってもいいのがでないので、買ったことないシステムワークスという会社で購入しようかと思ってます。(というか、ここしかない・・・)
少し調べた限り、悪いという情報もないし、会社概要とかみてもやばい会社ではないはず。(そのかわり良いという情報もない)


CentOS 6.2 64bit
KVM
vyatta
を利用し、CentOSインスタンスを複数用意する予定です。


今回構成の懸念事項(課題)として、下記があります。
1.ディスクIOがボトルネックになる
2.ディスク故障のダメージを抑える


KVMを使う場合はディスクIOがホストに比べて60%程度に落ちるという情報があるのですが、
同時稼働インスタンスが増えると更にパフォーマンスが落ちる可能性があります。


対策のため、ディスクパーツの使い方として、
1.全体の仮想OS自体はSATA2TBのみで運用を行い、
2.1つの仮想インスタンスSSDのディスクまるごとマウントしNFSサーバーとし、
3.各OSからデータベース(MySQL)など特別高速化したいディレクトリはNFSを参照する
とすることでIOのボトルネックを解消できそうです。


これができれば、MySQLのスレーブサーバをSATA、マスターサーバのディレクトリをSSDとして2台のディスクを使って運用すれば、片方のディスクが故障してもダメージを抑えられると見込んでいます。


※安定化のためRAIDにする方法はありますが、ミラーリングによりIOが半分近くに落ちるとパフォーマンスが更にネックになることと、RAID運用でディスク故障時は、コントローラーごと故障したりHDD2台とも復旧できない、ということも多いため、RAID構成は外しています。


仮想化のディスクIO対応策を探しているのですが、ググっても測定結果ばかりで具体的な対応策がなかなかでてこないので考えてみました。

iOSの機能制限について

MDMや構成プロファイルなどによりiPad,iPhoneのデバイス管理を行う場合における、機能制限できることについて。

・メールアカウント→変更を禁止できる
Wi-Fi→設定追加はできるが変更は禁止できない
・初期化→制限できない(iPad端末上でも初期化できる)
・設定アイコン→制限できない
・電話、Safari、カメラ、iTunes、AppStore、アプリインストール、アプリ削除→使用禁止にできる

構成プロファイルによる設定

パスコード:
 単純値を許可
 英数字の値が必要
 最小のパスコード長
 複合文字の最小数(1〜4文字)※使用できる英数字以外の文字の最小数
 パスコードの有効期限(1〜730日、またはなし)
 自動ロック(1〜5分、またはなし)
 パスコードの履歴(1〜50個のパスコード、またはなし)
  ※この数までの一意パスコードを再利用禁止にします
 デバイスロックの猶予期間
 入力を失敗できる回数
  ※この数を超えると、デバイス上のすべてのデータが消去されます

制限:
 デバイスの機能:
  Appのインストール
  カメラ、Siri、音声ダイアル、In-App-Purchase
  iTunes Storeパスワードの入力を強制
  マルチプレーヤーゲーム
  Game Centerへの友達の追加
 アプリケーション:
  YoutubeiTunes StoreSafariの使用
 iCloud
  バックアップを許可
  書類の同期を許可
  フォトストリームを許可
 セキュリティとプライバシー:
  診断データをAppleに送信することを許可
  ユーザが信頼できないTLS証明書を受け入れることを許可
  強制的に暗号化バックアップ
 コンテンツレート:
  レーティングの地域、レーティング、許可の設定

その他
Wi-FiVPN、メールの設定は、制限ではなく設定を追加できるだけです。

機能制限(端末本体の「設定」>「一般」>「機能制限」より設定)

許可:
 Safari
 Youtube
 カメラ
 FaceTime
 iTunes
 Ping
 インストール
 Appの削除

変更の許可:
 位置情報
 アカウント(メールアカウント)

コンテンツの許可:
 レートの対象(国を選択)
 音楽とPodcast
 ムービー
 テレビ番組
 App(Appを許可しない/4+/9+/12+/17+/すべてのAppを許可)
 App内での購入
 パスワードを要求(即時/15分)

GameCenter:
 マルチプレイヤー
 友達を追加

1次情報

iOSのビジネス利用におけるデバイス管理についての1次情報
http://www.apple.com/ipad/business/resources/


MDMについての1次情報
http://www.apple.com/iphone/business/docs/iOS_MDM.pdf

グーグルマップにビル名を含めた住所が検索できない問題の解決案

グーグルマップ使ったことある人はほぼ全員、「なんでビル名を含めると検索できないんだ」と思いつつ、テキストボックスからビル名を削除して検索しなおすということを年に何回も行なっていると思います。(僕のように)

さっき思いついた、現状ベストと思われる方法

1. 連絡帳に登録する住所

番地までをメイン住所に登録し、ビル名は追加した住所に登録する。

2. Googleカレンダーに登録する住所

番地までを場所に登録し、ビル名は説明欄に登録する。


もっといい方法があるぜ!って人は教えてください。m(_ _)m