サンタの配送の仕組みをふんわり考えた
あるクリスマスイブの日にサンタの配送は一体どのくらいの人数でやってるのか気になったので計算してみた
一戸の配達に20分かかって、6時間以内に配達を完了する必要がある場合
サンタの人数は国内だけで15,000人弱(ただしトナカイ除く)
世界規模でやるとサンタの人数はさらに激増しそうだなぁ〜って思った
ただ、国内に限っていえば多分ヤマト運輸の方が凄いので、ヤマトの仕組みをそのまま使えばサンタは楽になりそう
ちなみに、子供のプレゼントの平均の値段を5000円としたところサンタが贈るプレゼントの国内での総額は452億円になったので、このプレゼント+配送を世界規模でやれるって相当(以降自主規制
メリークリスマス!
だいぶ前から型がある気がしてたことに今頃気がついた事
ソフトウエア開発をやってると色んな「型」があって、適用対象の得手不得手とか色々あるなぁと。
複数の「型」を使い分けれる人もいれば、一つの「型」でなんとかしようとする人も居たりして、色々だなぁと。
ソフトウエア開発を始めた頃に知った比較的優秀な「型」から離れなくて原理主義的な人が居ると思えばあっさり離れて次の「型」をマスターしちゃう人とか居て、人それぞれ違ってて面白いなぁと
じゃあ自分がよく使う「型」ってなんだろうって思っってぼんやり考えたら
- 業務フロー
- データモデル
- ルール
ってこの3つしかなくて、相変わらずシンプルだなぁと(まぁおかげでUIが苦手なんですけどw)
他の人をみてると各自いろんなやり方を工夫してるんだけどまだ「型」って呼べるほど確立した状態じゃない人も居て、苦労してるなぁ〜って見てて思ったり
そんなこと言わずに教えろよって言われそうだけど、自分もどうやって覚えたのか既に覚えてないし(割としっかりナビゲーションはしてもらった気がする)、ドメイン嗜好指向な人たちと話がずれるし(むちゃドメイン指向だと思うんだけど用語が違うらしい)ということで諦めてる
今年のある日そんな事を考えてた
若手に勧めてるこれ勉強した方が良いよネタ
周りに居る自分より若い人に時々勧めてる(別に強制はしてない)のでメモとして
SQL
今主流の言語とかライブラリが完全に廃れても安定して使われてそうだから
LISP
これがちゃんと理解で来てれば多分今後出てくる言語も対応できるはずっていう言語なので。たまに例外があるっぽいけど・・・しゃーないw
TCPとUDPとその上のプロトコル
ネットワーク周りから離れられない悲しい僕たちの基礎知識
計算量とアルゴリズムとCPUとかコンピュータの構成
XXXをすると速くなるっていうのがCPUの進化で変わる現象が良くあるので基礎は大事
各種設計手法
設計手法も10年単位で変わっているので基礎として複数勉強した方が良い
各種開発プロセス
開発プロセスも20年単位で変わっているので基礎として複数勉強した方が良い
まとめ
この辺一通り理解してるぜ!っていう若手エンジニアは是非連絡してください
良さそうな転職先紹介出来ると思います
iPadで仕事をするために必要そうだなと思ったもの
目的
プログラミング以外の作業をiPadに変更する
プログラミングも出来れば・・・でも無理はしない
何故やりたいのか
- パソコンが重い(開発用なら1.5kg~、iPadならキーボード込みでも0.5kg程度)
- iPadは動作が軽い
- 電源が大抵何処にでもある(iPhoneと同じだし!)
- 緊急時の電源はモバイルバッテリーでもOK
- 実は結構セキュア(指紋認証がデフォルト、忘れても何処にあるのかも探せる)
- 開発の周辺で必要なコミュニケーションツールの殆どがiOS用で出てる
用意するもの
パソコンとのデータの共有の為のソフトウェア
ここが最大の関門だった
簡単に思いつく選択肢はいくつか
dropbox,iCloud drive,box,onedrive,google drive...
iCloudだけは要注意でiCloud driveを全くの別アカウントにしたい場合、AppleIDが別になってしまい既に使ってるアプリが使えなくなるのでこの対策が必要(ファミリー共有とか)
googleのツールは複数アカウントに標準対応してるのでアカウントの切替で
あとはこの中で会社的に利用可能な奴を選ぶ
・・・無い場合・・・MacとiPadなら仕方ないので最終手段としてAirDropを使う。知らない人との共有はOFFにしましょう!
それ以外のアプリケーション
迷った結果選んだ物リスト
テキストエディタ
.txtしか編集できないけど動作的にTextor
terminal
あんまり使ったこと無いけど、Termius
zip解凍ツール
iZip pro(何故かproを持ってた)
iOSの標準アプリ
ファイル(これがないiOSのバージョンだと多分無理)
iOSに対応してるファイル共有ソフトならファイルからの各種操作ができるので便利(なんだけどAirDropだと関係ない)
ブログ移行
集中しててできない・・・集中しそうなのは想定できたのでは・・・。
そんな事をふと思った
キューとかDBとか非同期とか分散とか
元ネタはさておき、過去見た色んな物をメモする
キューサーバ上のキュー
ActiveMQとかそっち系
2PCなキューとか作れるキューなのでDBとの同期とかもやる気になれば出来る(色々ハマるけど)
普通にキューを作るんなら多分一番楽だと思ってる
クラウド上のキュー
SQSとか
順序保証なにそれ?とか複数取得出来たりするので実装をだいぶ気をつけないとヤバそうなやつ
それに合わせて実装を頑張ればなんとか出来る
かなり大きいけどリクエストの上限があったり、容量制限がすっごい緩かったりする感じ
最近FIFOオプションとか対応してきてだいぶ良くなってる
ストリーム
最近多くなってきた感じのやつ
大量のリクエストを受け取れたり一定時間保持できたり再処理できたりするサービス
クラウドとオンプレの両方に同じようにある
シャーディング出来るので普通のキューで耐えれないほど大量のリクエストを処理する場合に有効な感じ
DBのキュー
キューというよりポーリングでの実装なのでこれをここに入れるのはちょっと違う気がする
ステータス管理しようが何しようが、普通に作るとDBのロックを使うのでDBへの負荷が結構になる
RDB使っていれば別のサービスとかサーバとか使わなくて良いので追加サーバをようしなくて良くなるのはだいぶ大きいメリット
ただ、この中では唯一と言って良いSQLで不要なメッセージを削除できる能力があるので上手く使うとそこはとっても良い
使い道とか
リクエストに投入する量とかコンシューマの数とかスケール性とかそれ以外の特性を決めると大体何を使ってどういう風に作れば良いのかが決まるはず
なので前提条件を決めずに特定の物をダメと言ったり代替案にするのもいまいちかなぁ〜って思う今日この頃