zashii-1434

Stats of My Life(おいしい人生を味わうために、コツコツとチャレンジしたことを書くブログ)

「JavaScript本格入門」読みました。(2017年34冊)

 

 

 

❏感想

業務でJavaScriptは使っていないですが、趣味でt少しはJavascript触っているからだいたいわかるだろうと思っていたところ、まだまだ自分が知らないこと、理解できていないことはたくさんありました。

 

プログラムの本は自分でコーディングして、実行結果を見ながら学ぶのが一番ですが本ブラグは「感想」なので、本書を読んで書いたコードは別ブログとしてUPしようと思います。

 

本書はかなり実践的、かつ詳しく書かれているので初心者はもちろん、JavaScriptをなんとなく書いてきた私にとっては基本からきちんと学ぶことができるいい本だと思いました。

 

オススメです。

 

❏メモ(きちんと学び直すところ)

演算子

 ・ビット論理演算子⇒2ビットの論理計算

 ・delete演算子⇒オブジェクトのプロパティを破棄

 ・typeof演算子⇒オブジェクトに指定した変数・リテラルのデータ型を表す文字列を返す

・制御構文

 ・switch式とcase値は「===」演算子で比較する

・Strictモードにするメリット

 ・非JavaScriptで変更される点を禁止することで、今後の移行が簡単になる

 ・将来のJavaScriptで変更される点を禁止することで、今後の移行が簡単になる

 ・JavaScriptの「べからず」を理解する手がかりになる

・Stringオブジェクト

 ・substring/sliceメソッド⇒開始位置~終了文字位置の範囲で抽出箇所を指定

 ・substrメソッド⇒開始位置からの文字数指定で抽出箇所を指定

 ・サロゲートペア⇒2バイトで表現できない文字を4バイトと見なす

・Numberオブジェクト

 ・NaNはすべての値と等しくない

 ・「-」演算子では、与えられたオペランドのいずれかが数値である場合に、もう片方も自動的に数値に変換して減算

 (例)  console.log(typeof('123' - 0)); //結果:number

 ・「+」演算子では、与えられたオペランドのいずれかが文字列である場合に、もう片方も自動的に文字列にする

 (例)console.log(typeof(123 + '')); //結果:string

 

・Symbolオブジェクト

 ・定数の値として利用する

 

・Arrayオブジェクト

 ・Spliceメソッド⇒配列の任意の箇所に要素を追加したり、既存の要素を置き換えたり削除したりができる

 ・forEachメソッド⇒配列内の要素を、指定した関数で順に処理するためのメソッド

 ・mapメソッド⇒mapメソッドを利用することで、配列を指定された関数で加工する

 ・someメソッド⇒指定された関数で個々の要素を判定し、1つでも条件に合致する要素があればtrueを返す

 ・filterメソッド⇒配列の内容を特定の条件で絞り込む

 ・sortメソッド⇒独自のルールで配列を並べ替える(大小の比較方法注意)

RegExpオブジェクト

 ・matchメソッド⇒正規表現パターンにマッチした文字列を配列として返す

 ・execメソッド⇒最後にマッチした文字位置を記憶する機能を持っている。そして次回のexecメソッドを実行する際、RegExpオブジェクトは「前回のマッチ位置から検索を再開」する

 ・testメソッド⇒与えられた文字列を検索し、その結果を真偽値として返す

 ・searchメソッド⇒マッチした文字列が存在しない場合に、戻り値として-1を返す

 ・split⇒正規表現で文字列を分割

・オブジェクト

 ・valueOfメソッド⇒文字列以外の基本型の値が返されることを「期待して」使われる

 ・assignメソッド⇒オブジェクトをマージする

 ・createメソッド⇒オブジェクトを生成する

 

・Globalオブジェクト

 ・グローバル変数やグローバル関数を管理するために、JavaScriptが自動的に生成する便宜的なオブジェクト

 ・encodeURI/encodeURIComponent関数⇒エスケープ処理

 ・eval関数⇒与えられた文字列をJavaScriptのコードとして評価/実行する。

 

・関数

 ・function命令⇒関数を直接定義

 ・関数リテラル⇒「function(base,height){...}」と名前のない関数を定義したうえで、変数に格納

 ・アロー関数⇒関数よりも簡単に宣言できる

 ・var命令を使わずに宣言された変数はすべてグローバル変数とみなす

 ・ローカル変数を定義するには、必ずvar命令を使用する 

var命令を使わずに宣言された変数はすべてグローバル変数と見なす

  ・JavaScriptは引数の数をチェックしない

 ・可変長引数の関数を定義することもできる

 ・ES2015可変長引数の関数定義⇒仮引数の前に「...」を付与する

 ・複数の戻り値を個別の変数に代入する 

 (例)let [max,min] = getMaxMin(10,35,-5,78,0);

    ・再帰関数⇒手続きを何度も呼び出せる

 ・高階関数⇒関数を引数、戻り値として扱う関数

 ・コールバック関数⇒呼び出し先の関数の中で呼び出される関数のこと

 ・スコープチェーン⇒グローバルオブジェクト、Callオブジェクトを生成の順に連結したリストのこと

 ・クロージャ⇒ローカル変数を参照している関数内関数のこと

 

オブジェクト指向

 

 ・プロトタイプ⇒あるオブジェクトの元となるオブジェクトのこと。言い換えれば、より縛りの弱いクラスのこと

 ・コンストラクターでのthis⇒コンストラクターによって生成されるインスタンスを表すもの

 ・メソッドはプロトタイプで宣言する⇒無駄なメモリ消費を回避するため

 ・オブジェクトリテラルでプロトタイプを定義⇒記述を最小限に

 ・プロトタイプチェーン⇒オブジェクトの継承

 ・プライベートメンバーはコンストラクター関数で定義する

 -var プロパティ名

   -var メソッド名 = function(引数, ...) {}

     ・アクセサーメソッドの実装はObject.definePropertyメソッドを使う

 ・クラス名が競合しないよう、パッケージを作ることも可能

 ・ES2015のオブジェクト構文⇒class命令

 ・モジュール作成⇒export

 ・イテレーター⇒オブジェクトの内容を列挙するための仕組みを備えたオブジェクト

 ・Proxy⇒オブジェクトの基本的な動作を、アプリ独自の動作に差し替えるためのオブジェクト

 

・DOM

 ・id値をキーに要素を取得する⇒getElementByIdメソッド
 ・タグ名をキーに要素を取得する⇒getElementsByTagNameメソッド
 ・name属性をキーに要素を取得する⇒getElementsByNameメソッド
 ・class属性をキーに要素を取得する⇒getElementsByClassNameメソッド

JavaScriptからスタイルシートを操作する

 ・インラインスタイルにアクセスする(styleプロパティ)
 ・外部のスタイルシートを適用する(classNameプロパティ)

 

FINAL FANTASY TACTICS 獅子戦争クリアしました。

 

 

❏感想

いやー、やっとクリアできましたー!!!!!
 
FFタクティクス簡単にクリアできた!っていう人はスゴイですね。
私はいくつかのステージでは何度も死んでました(泣)
 
その原因の一つはやり直しが効かないところで セーブしてしまったから。
これによってやる気が一気に削がれて、しばらくプレーしない期間がありました。
 
 
でも、時間が経つにつれクリアしたい気持が強くなり、プレー再開。
セーブは頻繁にするのはもちろん、戻れる(経験値UPや店で装備品を購入できる)ところでセーブするよう注意が必要です。
 
 
FFタクティクスの魅力の1つは圧倒的なボリューム感にあると思います。
トーリー、ジョブ、レアアイテム集めなど、やりこみ要素はたくさんあります。
 
また、プレー難易度は高いほうじゃないでしょうか?私は途中、攻略サイトをみないとクリアできませんでしたが、難しいゲーム好きには挑戦しがいがあるゲームだと思います。
 
ちなみに最終ボス戦(第一形態)のキャプチャ。
結局、Lv.60ぐらいで臨みました。
 

f:id:hideki5793:20170522192001p:plain

 

❏思い出

クリアできたのがあまりに嬉しいので、箇条書きベースですが思い出を書いてみました。
 
・裏切りの連続で黒幕が誰かわからなくなった笑
⇒結局誰が悪だっけ?
ラムザの「逃がすか!」というセリフが多い
⇒このセリフとセットでどんだけ敵が1次退却すんねんって、つっこんでました
・魔神ベリアス強すぎる
⇒装備・ジョブがイマイチなまま臨んでしまいました。セーブポイントを誤ったこともあり、あの手この手を考えながら対戦を何度も試みました。
チョコボ除隊しまくり
⇒赤チョコボを入れたがために、たくさんのチョコボが産まれてました。その度に除隊してました笑
・剣聖オルランドゥ超強い
⇒めちゃくちゃ強い。一気に強力なパーティになります。
・メテオそんなに使わない
⇒頑張って覚えたのにそんなに使いませんでした。代わりにホーリーが重宝しました。
・侍ってそんなに強くない
⇒HPも高いわけでもなく、刀技もそんなに他のジョブに比べて協力ではなかったです。
・初めて戦うときはフォーメーションによるメンバー配置って意味ある?
⇒初戦では敵の配置がわからないから考えても意味ないですよね。再戦するときは意味は出てきますが。。。急襲以外は敵の位置を踏まえた上でフォーメーションを考えることができるようにして欲しいと思いました。
・レベルアップにめちゃめちゃ時間がかかった
⇒味方に投石&チャクラの連続で経験値&ジョブ経験値を貯めてました。
・チャクラ多用
⇒序盤~中盤では、HP&MP回復としてチャクラのお世話になってました。
 

❏プレー時の注意点共有します。

こちらも箇条書きベースですが、参考にして頂ければ。 
 
・アクセサリーの機能調査は必須
⇒例えばストップを使うボス戦では、ストップ無効のアクセサリーは大変有用です。
ステータス異常に耐性を持つアクセサリーはチーム編成5人分は持っておくといいと思います。これだけでクリアできる確率はだいぶ上がると思います。
・余分に装備品を購入しておく
⇒途中からナイト、またはボスに装備品を破壊されることが多くなります。スペアを用意しておきましょう。
・( 早くクリアしたい人向け )竜騎士アビリティを早くゲットする
⇒ジャンプはうまくハマれば、敵の攻撃を受けず、遠くの敵を攻撃をし続けることができる超強力なアビリティです。垂直&水平ジャンプ8を早く覚えることをオススメします。
・時魔道士は重宝します
⇒ヘイスト・スロウ・ストップはよく使ってましたね。時魔道士に白魔法のアビリティをセットして補助+回復約に徹しました。危なくなったらテレポで逃げることができるのもグッドでした。
( 早くクリアしたい人向け ) アイテム士のアビリティはポーション&エクスポーションアビリティを覚えれば大体OK。
⇒エリクサー自体多く持つことが難しい?のでアビリティとして持っていても不要でした。
 
 

❏まとめ

難しかったですが、だいぶ楽しむことができました。
次は名作と評判のペルソナ5をやってみようと思います。
こちらもプレーするのが楽しみです。
 
ペルソナ5 - PS4

ペルソナ5 - PS4

 

 

 

「脳のパフォーマンスを最大まで引き出す 神・時間術 」読みました。(2017年33冊目)I read "God · Time skill to bring out the brain's performance to the utmost". (33th year of 2017)

 

 

脳のパフォーマンスを最大まで引き出す 神・時間術

脳のパフォーマンスを最大まで引き出す 神・時間術

 

 

■感想

 

もっと仕事やプライベートの時間を豊かにするため、日々使っている時間を改善できないかと思い読んでみました。

 

感想としては普段から私が実践しているものもあれば、新しい発見もありました。


例えば、

・起床後2時間は脳のゴールデンタイム
・運動後2時間は脳のゴールデンタイム
・人間には集中できる時間感覚あるとのこと(15・45・90分の法則)
⇒これに合うようなスケジュールを組むと良いらしいです。逆に時間を過ぎれば、一休憩入れるとなお良いとのこと

・運動は就寝3時間前には終了しておくこと。

⇒1時間未満の運動。それ以上の運動は脳のゴールデンタイムに影響を及ぼすそうです
・寝だめは不可能。科学的根拠なし。

 

参考になりました。

 

私が普段実践している時間術は

 

・朝早く会社に来て、集中して作業に取り掛かる
・運動をする(週一回ですが。。。)
・早く寝る(11時には就寝)
・なるべく規則正しい生活を心がける
(無駄にエネルギーを消費しないため)

 

ぐらいですが、この本を読んでさらに実践してみようと思ったのは、

 

・ストップウォッチを使って仕事をする
・運動の回数を増やす
・ちょっとお酒の量を減らす

 

さっそくこのブログもストップウォッチを使って15分で書きました。

 

■Impression

 

In order to enrich more work and private time,I thought that I could improve the time I was using every day.

 

As impressions I usually try and practice what I am doing
There was also a new discovery if there was.


For example,
· I think that it has a sense of time to concentrate on human beings (15 · 45 · 90 minutes' law)
You should schedule it to suit it.On the contrary, if time passes, it is better to put a rest

 

The time technique I am practicing normally

· Come to the company early in the morning and concentrate on work
· Exercise (once a week, but ...)
· Sleep early (going to bed at 11 o'clock)
· Try to live a regular life as much as possible
(Because it does not consume energy unnecessarily)

 

I thought about reading this book and practicing it further,

· Work with stopwatch
· Increase the number of exercises
· Decrease the amount of alcohol for a while

I just wrote this blog in 15 minutes using a stop watch.

東京で食べて美味しかったお店をまとめてみた_part①

東京で今まで食べて美味しかったお店を急にまとめてみたくなってきた。


きっかけは家族と今まで美味しいお店の思い出を話しをしている中で、
店名を忘れてしまっていたから。

 

友人に紹介できるように整理してみたので、よかったら参考にしてください。

 

話は変わって、食べログのURLをリンクとして貼ろうとしたらアクセス制限がかかってました。。。

 

なんでだろう?直接

 

天茂(最寄り駅:赤坂)

retty.me

 

昔TVでこのお店が紹介されていたので行ってみたところ、かき揚げ丼はここが一番かなっていうぐらい美味しくてファンになりました。


キッチンプラス(最寄り駅:自由が丘)

 

retty.me

 

 

席は10席もないですが、洗練された洋食屋さん、という感じです。

個人的にはハンバーグがおすすめです。

 

みつばち(最寄り駅:自由が丘)

 

retty.me

 

おしゃれな居酒屋さん、という表現だけでは足りないぐらいここのお店の雰囲気が独特で最高です。

 

また、料理も一品一品がどれも美味しい。よく頼んでいたのはラー油がかかった豆腐。

ヘルシー、かつ美味しかった記憶があります。

 

あと蕎麦があってシメに食べてました。

 

雰囲気は本当いいので、みんなで飲むときに利用することをオススメします。


楳心果 (バイシンカ) (最寄り駅:都立大学

 

retty.me

 

駒沢公園に向かう途中にあるお店。和菓子+カフェだけではなく、朝はごはんも提供しています。

 

一度、その朝ごはんを食べたことがあるのですが、お米がおかずがなくても何杯でも食べることができるぐらい本当に美味しかった。

 

お米本来の美味しさを堪能することができる数少ないお店だと思います。

 

店内のデザインも茶室のような、落ち着く空間になっています。

 

外の景色を見ながらゆっくりお茶を飲んで過ごす。。。

贅沢な気分を味わうことができます。

 

元祖ニュータンタンメン本舗 京町店 (最寄り駅:川崎 or 八丁畷

 

retty.me

 

駅からちょっと遠いですが、ニュータンタンメンといえばまずココ。

焼肉も美味しいので、シメとして食べて欲しいです。

 

ニュータンタンメンは一言でいえば元気がでるラーメンって感じでしょうか。
辛さもあり、にんにくたっぷりだけど、卵とのバランスが絶妙です。


山水苑(最寄り駅:川崎) 

 

retty.me

 

お肉はどれも美味しいのはもちろん、私はここのチヂミが好きで、来ると毎回頼んでしまいます。

 

今はどうかあるかわからないですが、ドジョウスープというがあり初めて食べました。

元気が出ます。

 

横浜らーめん 壱八家 スカイビル店 (最寄り駅:横浜)

 

retty.me

 

いわゆる横浜系ですが、スープはこってりではなくクリーミーという表現が正しいかな?バランスが取れたラーメンです。

 

休日は並ぶので早めに並ぶことをオススメします。


シェ・松尾 青山サロン(最寄り駅:渋谷 or 表参道)

 

retty.me

 

 

たまたま行ける機会があって、行ってみたものの、最初は場違いじゃないかと思うぐらいスゴイ緊張をしてしまった。

 

料理、空間、雰囲気とどれも豪華でした。

肝心の料理は美味しいのはもちろん、印象的だったのはお皿でした。

 

コースの雰囲気に合わせたお皿になっているのはもちろん、なんというかこう、料理とお皿とでアートな雰囲気を演出している印象を受けました。

 

たまにはこういったお店に通ってみるのもいいなあ、と思わせてくれたお店でした。

 

銀座フォアグラ(最寄り駅:新橋)

 

retty.me

 

知人に連れていって頂いたところ。

フォアグラをまた食べたくなるぐらい、柔らかくて美味しかったです。

 

夜に親しい人とワインとフォアグラと一緒に、楽しく語る。。。
贅沢な一時を体験できるお店だと思います。


どうとんぼり神坐(最寄り駅:渋谷)

 

retty.me

 

関西No.1と書かれた看板を目にしたことはあるけど、一人ぐらしのときはよく通っていたラーメン屋です。

 

白菜のシャキシャキ感、ニラのピリッとした辛さ、あっさりスープが大好きです。

私は途中ちょっと辛いニラを足したりして味を変化させてました。

 

梅林(最寄り駅:梅屋敷)

 

retty.me

 

いつも賑わっている居酒屋さん。魚が新鮮でどの料理も美味しいです。

また、店員さんがみんな元気なのもいいですね。

 

お店を通るときにおじいさんが焼き鳥を真剣に焼いている姿を
見ることができるのですが、思わず焼き鳥を頼みたくなります。

 

以上、現時点で思いつく限りのお店をまとめてみました。

まだまだ世の中には美味しいお店があるので行ってみて、いい思い出ができれば書き留めたいと思います。

 

「絵で見てわかるシステムパフォーマンスの仕組み」読みました。(2017年32冊目)

絵で見てわかるシステムパフォーマンスの仕組み

絵で見てわかるシステムパフォーマンスの仕組み

 

 

■感想 

 

ITに携わる人全員にオススメしたい本です。
その理由としては大きく2点あります。
 
1.サーバを構築してITサービスを展開することを前提に、システムパフォーマンスが全体的、体系的に書かれていること
 
2.いわゆる情報処理試験で出てくるような、スタックやキュー、アルゴリズム、レスポンス、スループット等々の説明が丁寧で理解しやすいこと
 
 
全体的に本書は著者の業務経験によるものをベースに書かれていることが多いので、実用性が高いです。
 
私はこの本を読んで、例えば次のような構成でシステムが成り立っていたときに、
 
クライアント→Webサーバ→APサーバ→DBサーバ→ストレージ
 
各それぞれ、どういったところを見てパフォーマンスチューニングをしていけばいいかがわかりました。
 
あとはパフォーマンスチューニングの実践して経験を積んでいきたいと思います。
  

■メモ

 
第1章 パフォーマンスの基本的な考え方
 
O(logn)とは?
→nを2で何回割ったら1になるか
 
・ループ処理→O(n)
・リストとループ処理→O(n)
・ツリーと検索→logn
・ハッシュアルゴリズム→O(1)
 
<レスポンスとスループットの違い>
 
レスポンス・・・いかに素早く反応を返せるか
→レスポンス重視は万能。レスポンスが早くなれば、普通、スループットも上がる
しかし、CPUのクロックやディスクI/Oの速度が頭打ちになっていることから
わかるように、物理的に早くするには限界がある
 
スループット・・・1回通信あたりに処理できる量
→同時に大量の処理をさばけるシステムをスループット重視のシステム
 
<ロック待ちを解決する方法>
・DBの表にロックをかけて、SQLを発行しているのであれば、
そのSQLを早く終わらせてあげれば、ロックを待っている時間が減る。
・ロックを分割する方法。DBの表にロックをかけるのではなく、行に対してロックをかけるようにする
 
 
第2章 パフォーマンス分析の基本
 
<分析タイプ>
・サマリ形式
→sarやvmstatのような、一定期間の情報を合計もしくは平均で見せてくれるツール
・イベント記憶形式
→個々の出来事を逐次記録する方式。パケットキャプチャやシステムコール記録
・スナップショット形式
→psコマンドやtopコマンドのようにその瞬間の状況を記録
 
<OSのコマンド>
・sar
→CPUの使用率とアイドル、読み書きI/Oの量、メモリの概況などがわかる
vmstat
→実行待ちの平均プロセス数。何らかの理由で待たされている平均プロセス数。
スワップへのI/O、通常のI/O、コンテキストスイッチの回数
ps
→主に、その瞬間にどんなプロセスが居るのか、その瞬間のプロセスの状態、
→-aオプションでその瞬間のソケット、-rオプションでその瞬間のルーティング情報
-iオプションでインターフェースごとの統計
iostat
→ディスクの使用率がわかる。-xオプションにより、レスポンスタイムや各種キュー長が分かります。
top
→リアルタイムでOS全体の状況を把握するのに最適なコマンド
pstack
→そのプログラム(プロセス)がその瞬間にどんな処理を実行しているのかが分かります。
strace
→どんなシステムコールで待っているのか、OSの何の関数で時間を使っているのか
 
第3章 実システムのパフォーマンス分析
 
・Webサーバのアクセスログ
・アプリ/APサーバのログ
 
<I/Oにかかる時間>
ハードディスクのアームが動く時間+回転待ちの時間+実際の読み書き時間
 
第4章 パフォマンスチューニング
 
<パフォーマンスチューニングの定石>
・設定は大きすぎても、小さすぎてもダメ。ほどほどに
・チューニングは1つずつ進める
・再利用することで速くする
→DBのコネクションプール、Webのキープアライブ、APサーバのスレッドプール
・まとめて処理する
・高速化と並列化
・スケールアップとスケールアウト
・ループの省略、キャッチボールの削減
・参照頻度の高いデータはキーバリューストア化かハッシュ化する
・参照頻度の高いデータは使う場所の近くに置く
 
 
第5章 パフォーマンステスト
 
<よくある失敗:9つのアンチパターン
・本番環境でないと再現しない
・パフォーマンスが出ない!パフォーマンス問題が解決できない!
・環境差異を考慮しないために問題が発生
・負荷シナリオ設計に不備があるために問題が発生
・バッファ/キャッシュの利用を考慮しないために問題が発生
・シンクタイムを考慮しないために問題が発生
 
第6章 仮想化環境におけるパフォーマンス
 
VM化とは?>
1台の物理サーバ上に仮想的に複数台のサーバ(VM)を稼働させること
 
第7章 クラウド環境におけるパフォーマンス
 
<観点>
・コンピューティングリソースを構成する技術要素は変わらない
・アクセスするネットワーキングとリソースの利用と提供の形態が変わる
 
<オンプレミス環境との変更点>
・オンデマンド、セルフサービス
・幅広いネットワークアクセス
・リソース共有
・スピーディな拡張性
・サービスが計測可能
 
 

Webシステム作成時のボトルネックとなる制約の発見とその対処を学びたい①

 

本やネットを漁り、手探り感は拭えないけどタイトルに書かれていることができるようになりたい。

 

なので一旦、現時点で自分が調べたことをまとめてました。

こんな観点がもっと必要、とかあれば教えて頂けると助かります。

 

■CPU

 

CPU使用率は応用情報の問題に載ってあったので。計算方法を整理してみた。

 

【問題】

次のシステムにおいて,ピーク時間帯のCPU使用率は何%か。ここで,トランザクションはレコードアクセス処理と計算処理から成り,レコードアクセスはCPU処理だけでI/Oは発生せず,OSのオーバヘッドは考慮しないものとする。また,1日のうち発生するトランザクション数が最大になる1時間をピーク時間帯と定義する。

 

〔システムの概要〕
CPU数:1個
1日に発生する平均トランザクション数:60,000件
1日のピーク時間帯におけるトランザクション数の割合:20%
1トランザクション当たりの平均レコードアクセス数:100レコード
1レコードアクセスに必要な平均CPU時間:1ミリ秒
1トランザクション当たりの計算処理に必要な平均CPU時間:100ミリ秒

 

解法は次のステップで解くことができます。

①ピーク時間帯のトランザクション数は 60,000 * 0.2 = 12,000

②1トランザクション当たりの平均CPU時間は、レコードアクセス時間と計算処理時間の合計のため、

100*1ミリ秒(レコードアクセス時間) + 100ミリ秒 = 200ミリ秒 / 1トランザクション

③ピーク時間帯にかかるCPU使用時間は12,000 * 200 = 2,400,000 ミリ秒 = 2,400秒

④1時間は3,600秒のため 使用率は2,400 / 3,600  = 約67%

 

Hzとクロック数も応用情報の問題に載ってあったので。計算方法を書いてみた。

・Hzとクロック数から何回命令をだせるか?

 

【問題】

 「1GHzで動作するCPUがある。このCPUは,機械語の1命令を平均0.8クロックで実行できることが分かっている。このCPUは1秒間に約何万命令実行できるか。 

 

1秒間の命令実行回数=クロック周波数 ÷ 1命令の実行に必要なクロック数 

            = 1*10^9/0.8=1.25*10^9

 

ちなみに、ギガとかテラは10の何乗かは以下に整理してみました。

 

・キロ・・・1000倍 = 10^3
メガ・・・1000000倍 = 10^6
ギガ・・・1000000000倍 = 10^9
テラ・・・1000000000000倍 = 10^12

 

■I/O

レスポンスとスループットの違いは重要

 

・I/Oレスポンス=I/O要求処理にかかる応答時間
・I/Oスループット=単位時間当たりのI/O処理量

 

ここで、例えばレスポンスに時間がかかる場合は対処としてはどうしたらいいのでしょうか?何の処理によるものかをログを見ながら解析する?のかな。。。

 

■DB,SQL

 

実行計画から「cost」を分析して、重い場合はインデックスを貼ったり、Where条件の見直しをする、でしょうか。

 

ピーク時にどれぐらいのユーザ数がコミットや検索がするのかを算定することも重要ですね。この場合の計算方法はケースバイケース、なのでしょうか。

 

 

■Network

これも応用情報の問題にあったので解き方を整理してみました。

送るデータ容量とインターネットの処理量/秒から時間を求めていく、って感じでしょうか。

 

【問題】

100Mビット/秒のLANに接続されているブロードバンドルータ経由でインターネットを利用している。FTTHの実行速度が90Mビット/秒で,LANの伝送効率が80%のときに,LANに接続されたPCでインターネット上の540Mバイトのファイルをダウンロードするのにかかる時間は,およそ何秒か。ここで,制御情報やブロードバンドルータの遅延時間などは考えず,また,インターネットは十分に高速であるものとする。

 

解法としてはLANの伝送効率が80%なので、80Mビット/秒を。これはFTTHよりも遅いのでLANの計算のみでよい。

バイト単位に変換すると 10Mバイト/秒になるので、540Mでは54秒かかる計算になる。

 

まとめ

イマイチ網羅感がないため、体系立ったボトルネック分析ができていないですね。

現時点で理解していることを書いてみたので、もっといい情報があれば更新していきます。

Rails configのconsider_all_requests_localとは

trueにすると、すべてのエラーをブラウザに表示する。
falseに設定すると、ブラウザには詳細情報が表示されない。

 

私はこれをきちんと理解せず、trueにしていたため
本番と開発との違いが理解できずにいた。

 

デフォルトでは

・development環境はtrue、
・production環境はfalse

 

エラー時の動作を確認する際、developmentでもproductionと同様の動作をさせたいときは、config.consider_all_requests_local = falseにする

 

 

各設定ファイルの置き場はここ。

・ development: config/environments/development.rb
・ production: config/environments/production.rb