alphaのjava備忘録

alphaが勉強したことを書いていくブログ

情報処理安全確保支援士:不合格でした

f:id:dream_of_night:20210820141233p:plain
午後II試験が合格点を越えなかった。

4月に受験した情報処理安全確保支援士試験、不合格だった。涙。勉強が足りなかった。
でも今回落ちた午後II試験が一番セキュリティ知識として重要そうだから、次の試験までに勉強を頑張ろうと思う。試験日程を前後させるコロナは早く去ってくれ~。


f:id:dream_of_night:20210820142355p:plain
応募者数(!= 受験者数)。受験者中での合格率は2割ほど。

IPA 独立行政法人 情報処理推進機構:新着:令和3年度春期情報処理技術者試験(応用情報技術者試験、高度試験)及び情報処理安全確保支援士試験の合格者を発表

インターネットの世界だと合格談ばかりが検索でヒットするけど、まあ合格者2割なら仕方ないと自分を慰める。



f:id:dream_of_night:20210820141706p:plain
IPA開示の得点分布

IPA 独立行政法人 情報処理推進機構:情報処理技術者試験:統計情報:得点分布・評価ランク分布

IPA開示の得点分布を見ると、午後I試験まで合格した人でも午後II試験で4割ほど落ちてるみたい。難しい。

CompTIA Security+ 合格

CompTIA Security+はセキュリティ知識を測る資格。「ITセキュリティプロフェッショナルを対象」ということで、業務経験者向け。
www.comptia.jp


数カ月の勉強の結果、これに合格した。試験はテストセンターでPCを使って行うため、合否自体は試験終了時にその場で確認できる。そして昨日、合格証書が届いた。

f:id:dream_of_night:20210820145626p:plain
封筒

アメリカから送られてくるらしい。文書が全部英語で書いてあってテンションが上がる。

f:id:dream_of_night:20210820145550j:plain
中身。合格証書

中を見ると合格証書が入っていた。うれしい。

OAuth認証でOAuth::Unauthorized 403 Forbidden が発生

<現象>
作成中のRailsアプリで「Twitterでログイン」を押すと、「OAuth::Unauthorized 403 Forbidden」が発生。

<原因>
TwitterAPIのCallback URLが正しく設定されていなかったため。
色々なパターンを試してなんとか成功した。

正:https://〇〇〇.vfs.cloud9.ap-southeast-1.amazonaws.com/auth/twitter/callback
誤:https://〇〇〇.vfs.cloud9.ap-southeast-1.amazonaws.com:3000/auth/twitter/callback

 ※「http(s)://ドメイン/ルーティング」形式で設定。
 ※ URLにポート番号3000は含めない。

なお、事前にルーティング設定とルーティング先のビューを作成しておく必要がある。
・ルーティング設定(ここでは/auth/twitter/callbackが作成されているか)はrails routesで確認(↓)。

root	GET  /                                  	welcome#index
	GET  /auth/:provider/callback(.:format) 	sessions#create
 ※:provider は twitter のこと。

・ルーティング先のぺージは、上の例の場合、sessions#createで表示するビューのこと。

「Perfect Ruby on Rails」(6章) bootstrap3が正しく導入されない問題

「Perfect Ruby on Rails」が難しい。内容自体は入門書とそう変わらない(Webサイトを作成する、gemを導入する)本なのだが、必要な前提知識が多く(本文では説明されない)調べながらでないと全然進まない。安く済ませるために古い版を買ってしまったから、やってみて動かないところは自分で対応しないといけない。

というわけで、メモ。

〇bootstrap3が正しく導入されない問題:ナビゲーションバーに設置したトグルボタンが開かない

〇解決方法1:application.**を修正する。
・application.sassのrequire系の記述を削除
・application.jsに以下を追加。

//= require jquery3
//= require popper
//= require bootstrap-sprockets

・gem popper.js を導入

teratail.com


〇解決方法2:ソースにscriptを入れる
・以下のソースコードをナビゲーションバーのソースコードのあるファイルに書き込む。

 <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
 <script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>

teratail.com

cloud9経由で使用していたAWS料金の高騰原因について

メールを読むのは大事だ。特に支払いに関するものは。毎月届くAWSの料金明細のメールも合算料金だけ目を通しているけど、最近これが高くなってることに気付いた。数ドル/月だった料金が数十ドル/月に上がっている。AWSを利用してるといってもcloud9経由でプログラミングしてるだけなので、そんなに利用料が高くなるはずがない。


そう思ってAWSの請求画面を開いてみた。利用サービス別の明細を見ると、どうやら「EC2 その他」で料金がかかってるようだ。しかし、EC2のインスタンスの多くは昔作ったプログラムで今は殆どは停止させているのにどうして料金が...?


と思ったらどうやらEC2には料金がかからないけど、そのデータを保存しているEBSには料金がかかり続けているようだ。料金体系がよくわかってなかった。

aws.amazon.com

ひとまずEBSのボリュームをいくつか削除して、次月の支払明細を確認しよう。

※2020/5/5追記
成功。
料金が数ドル月まで下がった。

JavaScritp勉強メモ

Railsの例文には前提知識としてJavaScriptが出てくる。勉強中。

・var .../ let ... で変数を宣言。
・メソッド名:キャメルケースを使用。ただし、語頭1文字目は小文字。
・行末にセミコロン(;)。省略されることも。
・console.log('str'):strをコンソール(≠画面)に表示するメソッド。
・document.getElementById('id'):idを指定し、HMTLの要素を変数として獲得する。
                               :大体、同時に変数を宣言・代入する。
                               例: var var1 = document.getElementById('id1');

・document:ページ内のHTML要素をすべて含むオブジェクト。
       documentをレシーバとすることで、すべてのオブジェクトにアクセスできる。
       (head, body, button, footerなど)
       
・<script></script>     :(HTML)タグ内にJavascriptを記入できる。
               Javascriptファイルに記述したのと同じ効果を得る。
             (=javascriptファイルへの記述と<script>タグへの記述は同じ結果になる)



・alert('srt')          :実行時/読み込まれた時、画面にアラートを表示する。
・document.write('str') :<script>タグ内に記述すると、画面に表示される。
・object.innerHTML   :テキスト書き換え。代入して使う。
                       例: var var1        = document.getElementById('id1');
                            var1.innerHTML  = 'text is changed.';

・let, const. var    :ともに変数宣言。
             例: let var1 = ...;
             let(変数のスコープが狭い)、const(定数を宣言)を推奨。var非推奨。


・function              :関数宣言。javascriptではrubyと違い、変数・関数の宣言に予約語が必要。
             例:function function1(){
                 ...
                 };
                 
・function()            :関数呼び出し。
             例:function();

・===                   :厳密等価演算子。三項演算子で使われてた。
・const.parameter       :Javascriptでは定数に値とキーのセットを入れられるみたい。
             例: const const1 = { key: 'value' }
                   const1.key
・&&                    :左辺が真のとき、右辺を実行。未定義・nullをチェックする。
・||                    :左辺が偽のとき、右辺を実行。初期値を設定する。(左辺がnullはOK、未定義はダメ。)

・new                   :インスタンス作成の予約語。
             例:var today = new Date();
               var year  = today.getFullYear();


・setTimeout(function(), 1000)  :設定時間後(この場合は1000ミリ秒後)に任意の関数を実行する。
・setInterval(function(), 1000) :設定時間後(この場合は1000ミリ秒後)に任意の関数を実行する。
                   これを繰り返す。



・$('#selector').method()      :(jQeury)関数jQuery()と等価。
                  javascriptにおいては、$は特段の意味を持たない。
・jQuery('#selector').method() :(jQeury)
・なお、jQuery以外のJSライブラリが使用されている場合、jQuery()で宣言する必要がある。
                                 (例:WordPress)
・セレクタ部分に無名関数使うこと多い気がする

・var f = function(){
          $.ajax({type: '' , url: ''})
          }
・上記のようにjQuery部分はfunction(){}内にまとめてHTMLの後半で実行することも多い。

・$(function(){
	$().click(function(
	))
     })
  

jQueryの書き方

・$(function(){...});

・$(function(){
	$('selector').method()
	});
	
・$(function(){
	$('.hoge').css('color', blue)
	})

〇イベントの書き方

・$(function(){
    $('hoge').click(){...};
    });
   
・$(function(){
    $('hoge').click(function(){
    	$(this).css('color', 'blue')
    	});
    });
  ※this = 'hoge' 

〇無名関数
#1,function hoge(){...}は単体で宣言できます。
#2,hoge()で実行できます
#3,var result = にhoge()の結果を代入できます。
#4,変数を宣言し、変数に関数を代入できます。
 var myfun = fucntion hoge(){...}
#5,変数を宣言し、変数に関数を代入できます。
(関数名をfunction()にすることでfunction宣言を省略できます)
 var myfun = function(){...}
#6,myfun(1,2) として、変数myfunから関数を実行できます。

//#1
function hoge(x,y){
  return x+y;
}

//#2
hoge(2,3);

//#3
var result = hoge(2,3);

//#4
var myfun = function hoge(x,y){
    return x+y;
}

//#5
var myfun = function(x,y){
    return x+y;
}

//#6
var result = myfun(1,2)

〇即時関数

・(function(){...}())
・()内に記述された関数。
・{}後の()に引数を記述。
・基本的にその場所で実行され、後から呼び出されない、

「はじめてのRuby on Rails 5」 ActionCableについて

用語まとめ
・ActionCable:Rails5以降で実装されているフレームワークの1つ。
        WebSocket通信を可能にする。
・ActionCableサーバ :WebSocketサーバ。
		     複数の(WebSocket)Connectionインスタンスを持つ。
・(WebSocket)Connection :サーバ-クライアント間の接続インスタンス。
・コンシューマ  :クライアント
・サブスクライブ :コンシューマがチャンネルに加入すること。
・サブスクライバー:チャンネルに加入済みのコンシューマのこと。
          ※つまり、接続の確立したクライアントのこと。
          ※各コンシューマは1つ以上のチャンネルに入る
・サブスクリプション:チャンネルーサブスクライバー間の接続

ActionCableの機能を初めて知った。他の入門書では見たことなかったな(そして今のところ使い道が分からない)。WebSocket通信を行うことでHTTPよりシンプルに双方向通信ができるらしい。接続インスタンスを作成するのは、昔Javaの研修でDB接続時にインスタンスを作成したのを思い出す。