5/15(金)〜18(月) の学習ログです(主にC言語)
こんばんは。
いつもありがとうございます。
安藤です。
今日はこんな時間に更新です。
ここ数日は雨が続いていて少し肌寒いです。
外出の予定がなければ、雨はけっこう好きです。
音や匂い、雰囲気などが好きです。
ここには僕の個人的な学習ログをあげております。
2020.5.16(土)
◎C言語(ドットインストールより)
●演算子について
単項演算子
++ --
代入を伴う演算子
x += 5;
◎C言語(web記事「苦しんで覚えるC言語」)
●プログラムの部品化
作成したプログラムを再び使うことを再利用と呼び、関数として再利用することを部品化と呼ぶ。
部品をたくさん用意しておけば巨大なプログラムであっても、そ部品を組み合わせるだけで完成するので、効率的。
プロトタイプ宣言
予め先頭で関数の形を宣言しておくことで、いつでも宣言した関数は使えるようになる。
唯一、main関数だけはプロトタイプ宣言は不要。
●#includeの正体
これは、printf関数などのプロトタイプ宣言だった。
#include<stdio.h>を記述する理由はこのため。
関数は、
関数名();
このように記述すれば呼び出せる。
●引数
関数に数値を渡す
そのための仕組みが「引数」
引数は、関数に渡す情報の総称
引数は、関数の()の中に書いて指定する必要がある。
引数を使う場合、()の中には渡された数値を格納する変数を宣言しておく。
int sum (int max);
このように使用する変数を指定する部分を仮引数と呼ぶ。
仮引数とは、関数宣言に書かれた引数の型の名前のこと。
関数を変更した場合はプロトタイプ宣言も変更する必要があるけど、
プロトタイプ宣言では変数の型だけで良い。変数名は省略可能。
引数に指定した変数は、その関数の中では普通の変数と同じように使用できる。
●関数に数値を渡す
引数を持つ関数を呼び出す場合、数値を渡す必要がある。
それには、呼び出す時に、()の中に数値を書き込む。
関数に渡す数値のことを、「実引数」という。
引数付きの関数を呼び出す場合は、必ず数値を渡さなくちゃいけない。
●複数の引数
引数はたくさん持たせられる。
int sum (int min , int max)
複数の引数を使う場合は、それぞれを「,」カンマで区切って指定する。
型を混ぜても大丈夫。
複数の引数を持つ関数は、全ての引数に数値を渡さないと実行されないよ。
◎読書「まつもとゆきひろ コードの世界 スーパー・プログラマになる14の思考法」
1980年代、米AT&T社のベル研究所では、C言語にオブジェクト指向機能を追加した「C with Class」という言語を開発。この「C with Class」が後の「C++」になる。
Cとの互換性を強調したC++には、低レベルなことも記述できるというメリットと、低レベルなことも記述しないといけないデメリットが共存していた。
その点を改善するべく、1990年代に登場したのがJava。
Javaは、C++からCへの互換性を取り除き、その代わりにLispなどからより良い機能を取り込んで誕生した。1990年代に誕生した言語の中で最も成功した言語として世界中で使われている。
ソフトウェア開発の最大の敵は、「複雑さ」。
人間の脳は複雑なものを扱うことに弱い。記憶力と理解力に限界があるため。
年々性能が向上するコンピュータの処理能力の限界よりも人間の理解力の限界によるソフトウェア生産性の限界の方がより厳しい制約になってきている。
2020.5.18(月)
◎C言語(web記事「苦しんで覚えるC言語」)
●変数の寿命
関数内で寿命が尽きる変数
ローカル変数の寿命
関数の中で宣言された変数は、関数が終了すると捨てられてしまう。
再び同じ関数が呼び出されたら、もう一度変数を作り直す。
この時、前回とは別のメモリが使われるので、値も変わる。
つまり、関数の中で宣言された変数の寿命は関数の中だけであるということ。
このように、関数の中で寿命が終わる変数を「ローカル変数」と呼ぶ。
また、変数の寿命や有効範囲などをまとめて「スコープ」と呼ぶことがある。
●ローカル変数
関数の中で宣言された変数。
仮引数の変数も同様。
その関数が終わると捨てられ、再度関数が呼ばれた時には新しく作られる。
また、他の関数から使用することはできない。
●スコープ
識別子が有効な範囲を制限する仕組みの総称。
一般的には、変数の寿命と有効範囲を決定する仕組み。
●同じ名前でも別の変数
ローカル変数が有効なのは、宣言された関数の中のみ。
別の関数で同じ名前の変数が宣言されていても、それは別の変数となる。
●関数の独立性
関数を他のプログラムでも簡単に使えるようにするためには、各関数が独立している必要がある。
変数の値が突然変更されるというリスクから解放される。
特に大規模開発では必須。
※古典的言語には、この仕組みがない。
●正確にはブロック内
ローカル変数の寿命が{関数内というのは、正確には「ブロック内」ということ。
ブロックとは、{ }で囲まれている範囲のこと。
●グローバル変数
関数外で宣言された変数。
プログラム全体が終了するまで生き残り続け、宣言されたソースファイル内の全ての関数から使用できる。
グローバル変数は、プログラムの開始時に自動的に0に初期化される。
ローカル変数は、関数の呼び出しのたびに作られるので、その度に初期化していると、無駄ななるので自動的に初期化しない。
グローバル変数は最初に初期化すればいいので、それでです。
グローバル変数は、その関数からでも代入や値の取得ができるので便利な反面、どこで値が変更されるか分からない怖さがある。なので、グローバル変数はプログラム全体で共有する特別なデータのみみ使うこと。
※関数内にグローバル変数と同じ名前のローカル変数がある場合
エラーにはならず、ローカル変数を宣言することはできる。
グローバル変数と同名のローカル変数では、ローカル変数が優先される。
これは、関数の独立性を維持するための仕組み。
グローバル変数のスコープは、ファイル内。
基本的には、他のファイルでは使えない。参照できない。
しかし、他のファイルで、変数名と型を指定すると、使用できるようになる。
●関数内で生き残る変数
静的なローカル変数の寿命
ローカル変数とグローバル変数の中間的な存在である変数がある。
関数内で変数を宣言する時に、型名の前にstatic(スタティック)とつけることで、「静的なローカル変数」を宣言することができる。
関数内で宣言されているので、使用できるのは宣言された関数のみだけど、その値はプログラムが終了するまで残る。
また、初期化しなくても自動的に0に初期化される。
この変数は、関数が以前に呼び出された時の値を覚えておきたい場合に使用される。
◎読書「まつもとゆきひろ コードの世界 スーパー・プログラマになる14の思考法」
オブジェクト指向プログラミングは、データによる複雑さへの対抗手段として登場した。
正しい結果を得るためには、処理とデータを常に一貫して保つ必要があり、そのために使われたテクニックが「抽象データ」。
抽象データとは、データと手続きをまとめたもの。
データとその取り扱い方法をまとめてブラックボックス化できる。
抽象データの利点は、
①変化に強いこと
②処理のイメージがつかみやすいこと
コードの抽象化により、イメージが具象化する。
このようなインテリジェントなデータを「オブジェクト」と呼ぶ。
これが「オブジェクト指向プログラミング」の由来になっている。
●プロトタイプ型とクラス型
抽象化の原則から言えば、同じものが数多く登場する場合にはグループ化してまとめてしまうべき。
このことを、DRY(Don’t Repeat Yourself)原則と呼ぶ。
重複を避けるために同種のオブジェクトをまとめる方法は大きく分けて2つ。
①プロトタイプ型
元になるオブジェクトのコピーを作ることで同種のオブジェクトを作りだす。
プロトタイプとは、ひな型のこと。
JavaScriptもプロトタイプ型。
②鋳型
これは、例えるなら、たい焼きの型とたい焼きの関係。
このたい焼きの型に相当するものをオブジェクト指向プログラミングでは、「クラス」と呼ぶ。
同じ種別のオブジェクトはそれぞれ同じクラスに属し、操作や性質を共有する。
プロトタイプ型と違って、クラス型オブジェクト指向言語は、ひな型となるクラスとひな型から作られたオブジェクトを明確に区別する。
たい焼きの型は、たい焼きではないことと同じように。
クラスと対比し、違いを際立たせるためにオブジェクトのことをしばしば「インスタンス」と呼ぶ。
今回はこれで以上です。
先のことは全く見えていませんが、歩を進めて景色を変えていきたいと思っています。
次回は5/22(金)に更新します。
ではまた!
5/12(火)〜14(木) の学習ログです(主にC言語)
こんばんは、安藤です。
今日も風が気持ちよくて幸せな気分になっております。(そうです、閾値が低いですw)
最近思うことの一つに、結婚式はしたくないけど結婚はしたい人にとって今はすごい良いタイミングなんじゃないか、と思っております。はい、すみません。
さて、学習のログです。
C言語に加えて、Rubyを創られたまつもとゆきひろ さんの著書などもここへ残していきたいと思います。
5/12(火)
◎C言語(web記事「苦しんで覚えるC言語」)
●for文
C言語には、回数の決まっている繰り返しには、for文を使う。
Int I;
for(I= 1;i <= 繰り返し回数;i++) {
繰り返す文;
}このiは整数型の変数であり、繰り返しの回数を数えるために使われる。
このiはfor文の前に宣言しておく必要がある。
この時使用する変数を、「カウント変数」と呼ぶ。
カウント変数は、iでなくても何でも良い。
C言語では、慣習的にiを使用する人が多いみたい。◎読書「まつもとゆきひろ コードの世界 スーパー・プログラマになる14の思考法」(現在4.6%)
オブジェクト指向プログラミングを構成するテクニックの中で最も重要なテクニックは「ポリモーフィズム」あるいは「多態」と呼ばれるもの。
ふむふむ。
この技術があるから、シンプルなコードが書けるのだと理解が進みまくり。Matzさんすげーっす。
2020.5.14(木)
◎C言語(web記事「苦しんで覚えるC言語」)
●for文、ループ動作の仕組み
for(初期化;条件式;更新) {
繰り返す文;
}
初期化とは、カウント変数の初期化を行うための文。
ここの書かれた式は最初に1回だけ実行される。
条件式とは、ループの終了条件を設定するための文。
ここに書かれた式の値が真の間は、繰り返す文を実行し続ける。
更新とは、カウント変数の更新を行うための文。
※無限ループとは、同じ動作を無限に繰り返すプログラムのこと。
実は無限ループは、非常によく使われるテクニックで、
例えば、メモ帳などのアプリでは、キーの入力があったら、それを表示させる処理をユーザーが「×」ボタンを押して終了するまでは永遠に繰り返す。
このようにユーザーが明示的にプログラムを終了させない限りプログラムを終わらせないようにしたい時に無限ループを使うのだ。
for文の途中で処理を終わらせることができるのだ。break文を使えば、強制終了できる。
◎読書「まつもとゆきひろ コードの世界 スーパー・プログラマになる14の思考法」(現在5.4%)
数学的には、ほとんどのプログラミング 言語は「チューリング完全」と呼ばれる言語のクラスに分類されるようなので、どの言語でも等価なプログラムを記述可能なのだそう。
チューリング完全とは、英国の情報科学者アラン・チューリングさんが考案した仮想的な計算機であるチューリングマシンと情報処理能力において等価であることをいう。
ここでもチューリングさん登場するのね。本当すごいわ。
以上です。
Matzさんがすごくて、本を読み進める度にテンション上がってます。
C言語も相変わらず楽しいし、学習が良い感じです。
継続は力なり、ということで引き続き頑張ります。
次回は、来週の火曜日に更新させて頂きます。
それでは、また!
5/8(金)〜11(月) の学習ログです(主にC言語)
おはようございます、いつもありがとうございます。
爽やかな日が続いてますね。風が気持ち良くてそれだけで幸せな安藤です。(閾値が低いw)
このような状況の影響か、「幸せ」を感じる感性がいい感じに性能アップしてます。
3月にありました、トイレットペーパーが品薄で買えない状況の時は、人生で一番ウォシュレットへの感謝が深まりました。w
さて、このブログに載せている内容は毎日仲間と一緒に取り組んでいる学習フォームのまとめになっています。
学習した内容をずらずらと学習フォームに投稿するのもどうかと思いより良い学習フォームになるように模索中ですが、ここにはずらずら書かせていただいております。ご容赦ください。密かに将来、伝説の一つにでもなったら嬉しいと思ってます。
このブログには僕の日々の学習内容をログとして載せているので、学習時間とか戦略・戦術とかも載せてもいいのかな、ともぼんやり思っています。
前回からC言語の学習を再開しましたが、危なげなく続いています。Vue.jsよりセキュリティより楽しいです。(正直な気持ち)
理由はブラックボックスが少ないからかな。まだはっきり言語化はできません。
5/10より、Matzさんの本も読み始めたので、それもここ載せようか迷ってます。
内容がすごくいいので、しっかり検討しようと思います。
いずれRubyかPythonはものにしたいと思っています。理由の一つはシンプルにコードが綺麗なので、好き。だからです。あと開発者お二人の顔がなんか「もってる」感がすごいからです。ここけっこうマジで思ってます。w
5/8(金)
◎C言語(web記事「苦しんで覚えるC言語」)
●条件判断
C言語には、if文が用意されている。
if(条件式)文;
C言語では、条件による判定を行う場合、「0」を偽の値、「0以外」を真の値、と呼んでいる。
真の値…条件判断の呼び方で、0以外の数値(負の数ですら)を意味する。trueと表記することもある。
偽の値…条件判断の呼び方で、0を意味する。falseと表記することもある。
初期化…変数の宣言と同時に数値を代入すること。
比較のための演算子としての使い道もある。
ただ、C言語には、比較専用の演算子が用意されている。
2つの数値が等しいかどうかを調べるには、「==」演算子を使う。
この演算子は、2つのの値が等しい時には結果が真になるという計算を行う。
●等値演算子
先ほどの「==」のような系統の演算子を等値演算子と呼ぶ。
次の2種類がある。
①「==」2つの値が等しいと「真」になる。
②「!=」2つの値が等しくないと「真」になる。
多くのコンパイラでは「真」は1、「偽」は0となる。
●関係演算子(<,>,<=,>=)
この演算子は、2つの値の大小を調べる演算子。
●論理演算子
複数の条件を統合したり、判定を反転するために使われる。
&& かつ(AND)の意味
|| または(OR)の意味
! 否(NOT)の意味
if文では、1度に1つの条件での判定しかできないけど、論理演算子を使うと複数の条件での判定が可能となる。
●ブロック文
C言語には、複数の文をひとまとめにする機能がある。それがブロック文(複文)と呼ばれる機能。
{ } で囲むことで複数の文をまとめることができる。
ブロック文を使えば、if文の結果に対して複数の処理を実行させることができる。
また今日から(5/12)勉強を頑張っていきたいと思います。
少しでも世の中や人の役に立てる人間になりたいです。
次は、今週の金曜日に投稿します。
それでは、また!
学習教材
苦しんで覚えるC言語
5/5(火)〜8(金) の学習ログです(主にvue.jsとセキュリティ、そしてC言語)
こんにちは、いつもありがとうございます。
家の作るカフェラテを気に入ってしまった安藤です。
まだまだ大変な状況は続いておりますが、僕の肌感ですが、徐々にこの状況に適応してきている方々が増えてきているように感じます。
そう感じたのはここ数日。
もっと前から色々考えていたのだろうけど、改善改革に向けたアウトプットをする方が増えてきたように感じます。
逞しいと思い、すごいなと思います。なんか嬉しい感じもします。
感性、知性、行動力が活性化されているように思います。
自分ももっと頑張ろう!とエネルギーをもらっています。
前を向いて頑張る人は格好良いです。
周りの困っている人に寄り添って一緒に前を向こうとしている人はさらに格好良いです。
さて、今回の学習ログですが、
今までは主に、Vue.jsとセキュリティを学んできましたが、私の周りの素晴らしい方々からの助言を頂き、改めてC言語を学ぶことにしました。
なぜか分かりませんがすごくこわいです。なので、これをやりきる覚悟がまだ完全に定まりません。不思議な感覚です。
今までは視野を広げるフェーズでしたが、これからは深く深く掘っていくフェーズにすることを決めました。
スコップで深く掘ろうとすると、穴の直径は次第に広がっていくので、周辺の情報も拾いながら進めていこうと思います。
人がやらないこと、できないことにチャレンジして何か面白いことを5年以内に実現します。
一応ここで宣言しておこうと思います。まだ何も見えていませんが。笑
5/5(火)
◎Vue.js
APIを使ったqiitaの記事検索について
◎セキュリティについて
●公開情報の収集
ターゲットが自分から公開している情報
・ネットワーク情報
・ドメイン情報
・DNS情報
・会社情報
・求人情報
<ホームページ>
・URL
・ドメイン→IPアドレス
・所在地
・役員名
・取引先
<SNS>
・フォロワー
・レビュー
・地図
得られた情報からさらに情報を収集
・電話番号で検索
・住所で検索
・「@ドメイン名」でメールを検索
媒体から収集
・TVコマーシャル
・折り込みチラシ
・WEBニュース
●ネットワーク情報の収集
・ドメイン名
ここから手に入る情報は、
・IPアドレス
・使用しているネットワーク範囲(または上位プロバイダ)
・DNS情報
・担当者情報(名前、所属、電話番号)
<ドメイン情報>
「.jp」ドメインの場合 → JPRS のWhoisサイト http://whois.jprs.jp/
ここのサイトから詳細を調べることができる
●DNSからの情報収集
現在はDNSからは情報はほとんど得られない
指定したDNSサーバは管轄しているドメインの情報しか返さないのが正しい仕様
●検索エンジンの活用
Googleでのテクニック
・AND検索 「 検索語句① 検索語句② 」
・OR検索 「 検索語句① OR 検索語句② 」
・()を使用した検索 「 検索語句① ( 検索語句② OR 検索語句③ ) 」
・とは検索 「 検索語句とは 」
・特定語句の除外 「 検索したい語句 ー 除外したい語句 」
・ワイルドカード検索 「 検索語句*検索語句 」
・フレーズ検索 「 “検索語句” 」
コマンド検索
・サイト内検索 「site:サイトTOPのURL 検索語句」
・タイトル検索 「intitle: 検索語句」
・本文内検索 「intext: 検索語句」
・URL検索 「inurl: 検索語句」
・リンク検索 「link: 検索語句」
・ファイルタイプ検索 「filetype: ファイル拡張子 検索語句」
・キャッシュ検索 「cache:URLからhttp://を除く」
・インフォ検索 「info:URLからhttp://を除く」
・関連検索 「related:URL」
●SNSを利用した情報収集
facebookの勤務先を上手く使うと、facebookが勝手に「知り合いかも」と情報をくれる。
SNSは情報の宝庫
5/6(水)
5/1(金)〜4(月) の学習ログです(主にvue.jsとセキュリティ)
こんばんは。
家の中で過ごす時間が増えに増え、宅配サービスを利用していたら、外食ばかりだった頃より美味しくて良いものを食べられていることに気づき、自粛が終わってからもこの食生活を手放せなくなりそうな安藤です。
最近、ファイナルファンタジー4を始めたのですが、ゲームを進めていて「あ!ここはランダム関数を使って実装したんだな」「ここは、if文を使ってるな」とかプログラミングの視点からゲームの世界を見れて面白いです。
さて、学習のログです。
5/1(金)
5/2(土)
4/27(月)〜30(木) の学習ログです(主にvue.jsとセキュリティ)
こんにちは、安藤です。
今日は夏を感じるくらいの陽気で気持ちがいいです。
有り難いことに僕には一緒にプログラミングの学習をしている仲間がいます。
その仲間が先日のミーティングでファイナルファンタジーの話で盛り上がっていまして、僕もその話に入りたくて昨日からFF Ⅳを始めました。
このFF4のアクションを、有名な本「7つの習慣」などに出てきます「緊急度と重要度」の4象限で分類すると、私にとっては「緊急ではなく重要なこと」になります。
ここに分類されるものは、それこそ今勉強しているプログラミングや英語などです。
ゲームなので、一見「緊急ではなく重要でもないこと」に分類されそうに見えますが、共通言語として相互理解のため、またエンタメのエッセンスを知るため、また文化を知るためと、かなり多くの要素が含まれています。コスパいいやん。
一言でいうと「楽しい」です。
また、これから最新の技術を学びアウトプットして世の中にリリースするには、ゲームの世界はとても適しているとも考えています。
理由は、そこで起こることが「人の生死に直接関わらないから」です。
誤解がないように説明すると、医療では人の生死が関わります。自動運転の技術も同様だと思います。この分野では最新の技術を運用してテストを繰り返し、安全の確証を得てから出ないとユーザーにお届けできません。
つまり、最新の技術から一周遅れで世の中にリリースされます。
ゲームは直接生死を司りませんので、技術をユーザーに届けやすい分野かなと考えています。
長くなりましたが、自分の思考のログとしてこのブログに残しておきたいと思います。
ということで、学習のログです。
4/27(月)
vue.jsで、「bitcoin価格表示アプリ」の学習をしました。
bitcoinの価格はAPIからデータを取得して表示させる
HTTPクライアントaxiosを使う
Coin Desk Bitcoin Price Index APIを使う
、、、と、進めていたらこのAPI使えねーじゃんか!!
ということで、手を動かす学習から動画閲覧のみの学習へ。
余談です。
ドラマ「M 愛すべき人がいて」が面白くて、影響を受けて高校生ぶりに浜崎あゆみさんを聴ました。懐かしかったw
4/28(火)
◎Vue.js
<テンプレート構文について>
●v-onceディレクティブ
初回だけテンプレートを評価し、それ以降は静的なコンテンツとして扱いたい場合に使う。
描画更新のパフォーマンスを上げたい時に使う
●v-preディレクティブ
要素と全ての子要素のコンパイルをスキップしたい時に使う
ユースケースとして
・生のmustacheタグを表示したい時
・xss対策
・ディレクティブのない大量のノードをスキップすることで、コンパイルのスピードを上げる
●v-htmlディレクティブ
プレーンなhtmlを挿入したい時に使う
指定したinner htmlの要素を更新できる
【注意点】
・xss脆弱性を引き起こす可能性があるため、慎重に使用すること。
・使用するデータやテンプレートは信頼できるもののみとする
・サービスを利用するユーザーが入力したコンテンツには絶対に使用しないこと。
●v-cloak(クローク:覆い隠す)ディレクティブ
使いどころは、ページを表示開始し始めてからインスタンスの作成が終わるまでの間にmustacheタグなど、コンパイル前のテンプレートが表示されてしまうのを防ぎたい場合。
要はチラつきを防止したい時ということ。
【流れ】
①インスタンスがコンパイルが終了するまで非表示にしたい要素に、v-cloakディレクティブを設定する。
②CSSでv-cloakがついている要素を非表示にする。
v-cloakをCSSセレクタとして使うには「[ ] 」ブランケットを使う。
ex) [v-cloak] { display: none; }
③v-cloakディレクティブはインスタンス(コンパイル)の準備が終わると自動的に取り除かれる。そのタイミングでCSSも当たらなくなる。
●v-textディレクティブ
mustache構文の代わりにディレクティブを使いたい場合に使用する。
どちらを使ってもいいけど統一すること。
4/29(水)
◎Vue.js
<テンプレート構文について>
●バインディング式
mustacheタグのテキストはバインディング式と呼ばれている。
【式の種類】
・JavaScript式
データバインディング内部でjs式を利用できる
※注意点として、各バインディングは、単一式のみを含むことができる。文は動作しない。
式は「=」の右辺に記述できるもの。
フロー制御も動作しないので、三項演算子を使う。
・フィルタ
4/30(木)
◎Vue.js
<テンプレート構文について>
●ローカルフィルタ(vueインスタンス内に定義)
式の終わりに任意のフィルタを追加することができる
{ { 式 | フィルタの名前 } }
●グローバルフィルタ(vueインスタンス生成前に定義)
Vue.filter(フィルタ名、フィルタ動作)
●フィルタの連結
複数連結することができる
パイプでつなぐ
●フィルタには引数を渡すことができる●v-bind 省略記法
「:」を残して「v-bind」は省略できる
出力されるhtmlは同じ
可読性は完全な構文。記述を統一することも大切
◎セキュリティ
ホワイトハッカーについて
攻撃者としてのハッカーと同等のスキルを持ち、その知識と技術をセキュリティのために使う人間のこと。
●ホワイトハッカー(Ethical Hacker)のスキル
・防御→防衛手段の立案、機器の構築・設定など
・監視→状況の確認、対策など
・検出→異常の確認と特定など
・分析→インシデントの確認や根本原因の特定など
・対応→適切で効率的な対応とフィードバックなど
●経済産業省情報処理振興課より、今後必要となるセキュリティ人材
・ホワイトハッカーのような高度なセキュリティ技術者
・安全な情報システムを作るために必要なセキュリティ技術を身につけた人材
・ユーザー企業において、社内セキュリティ技術者と連携して企業の情報セキュリティ確保を管理できる人材
●ホワイトハッカーに必要な基本項目
【知識】
・OSやネットワークの基礎知識
・セキュリティの基礎知識
・攻撃者に関する基礎知識
・攻撃手法の基礎知識
・リスク評価手法や脆弱性診断手法
・インシデント対応や運用手順
【技術】
使用する技術は攻撃者が使うものとほぼ同じ。
一見、攻撃されているのか、ホワイトハッカーに調査されているのか見分けがつかない。
【倫理観】
クライアントの同意と強い倫理観攻撃面に加えて防御面の知識と技術も必要
・過去の事例
・最新のテクニック
●ハッカーとクラッカーについて
ハッカーとは?
→優れたコンピュータスキルを持つ個人で、コンピュータのソフトウェアやハードウェアを作成して調査することができる人物のこと。
クラッカーとは?
→ハッキングの技術を犯罪に利用する人
Crime Hackerの略
一般的はハッカーと区別するために使われる言葉。
●攻撃が生まれる方程式
攻撃 = 方法 + 脆弱性 + 動機
【動機の種類】
・国家的な利害関係
・金銭
・享楽
・怨恨
【攻撃特定性】
・高い→そのターゲットを攻撃するしか意味がない場合
・低い→攻撃できればどこでもいい場合
多くは動機に依存する。【ハッカーの種類1】
・ブラックハット → 犯罪
・ホワイトハット → セキュリティ
・グレーハット → ブラックとホワイトを行ったり来たりする人。再犯者。【ハッカーの種類2】
・サイバーテロリスト → 国家的な破壊行為
・ハクティビスト → 政治的なもの。自分の主義主張のため。
・国営ハッカー → 国家的な活動【ハッカーの種類3】
・スーサイドハッカー → 自爆型。サイバーテロリストに多い。
・スクリプトキディ → スキルの低い人達
とうとうフロンドの技術に飽きてしまい、セキュリティの学習を再開しました。
深夜3時、 「もう頭も体も動かない」ってところからでしたが、 なんか停止してたはずの頭が動くわって(笑)
この状況で始めちゃう時点でバグってますが。。。学び始めたら楽しい。
vuejsも継続するけど、学習内容を増やして並列で行っていくことにしました。
仲間がすでにそのように多動的な学習に取り組んでいて、刺激を頂きました。
Vue,jsは「一旦やっとかなきゃ」ってことで。
セキュリティは単純に興味があること。
だから楽しさが全然違うのですね。
多動するとそういったことが明確になるのでいいですね。比較できるから。
医学を学んでいた時は、解剖生理、薬理、生化学みたいに飽きたら次、また飽きたら次って色々してました。結果、めちゃ成果が出ました。
今回も同じようにめちゃ成果が出ると嬉しいです。
ということで、引き続き、vue.jsとセキュリティを中心に学習を進めていきたいと思います。
頑張ります。
学習教材①
Udemy
Vue JS入門決定版!jQueryを使わないWeb開発
中村祐太さん
学習教材②
Udemy
情報セキュリティEthical Hacking
阿部ひろゆきさん
4/24(金)〜26(日) の学習ログです(主にvue.js)
こんにちは、安藤です。
あ、私、安藤と申します。
改めてまして、宜しくお願い申し上げます。
山里さん×田中さん×弘中さんの「あざとくて何が悪いの?」が好きです。
男女の心模様にフォーカスされていて面白いです。
さて、ということで、今日も僕の学習ログです。
4/24(金)
この日はブログの執筆と
「ソフトウェア・ファースト」を読み進めた
以上でした。
勉強時間を作れないことってあるよね!って日でした。
こんな日も仲間は変わらずにめちゃ努力していて、「明日こそはなんとか時間を捻出したい!勉強したい!」とパワーをもらってます。
そうそう、プログラミング関連のタスクをチームでトレロを使って管理しているのですが、これが良いんです! チームのどなたかに動きがあると自分も頑張らなくちゃ!と素直に思えてやる気が増し増しになるのです!
仲間のパワーで本当にすごい。
4/25(土)
フロントエンドオンラインイベントに参加
声が聞きにくくて短い時間しか視聴できなかった。
でも、いい経験になりました。これも経験しないと分からないことだからね。
vue.js
これまでの復習をしました。
やっぱいこのフレームワークは本当に使いやすそう。
jsFiddleを使わず、テキストエディタを使った開発について
jsFiddleは本格的な開発には向かない
Vue.jsは、「vue.js cdn」で公式サイトへ遷移して、cdn のセクションで読み込みのコードがあるのでコピーする。
それをbody終了タグの直前に貼り付ける。
JavaScriptの読み込みコードは、vue.jsコード(cdnの)の直後に記述する。
HTMLがファイルを読み込む順番として、vue.jsを読み込んでから、javascriptを読み込む。
※CDNとは「Content Delivery Network」の略で、同一のコンテンツを、 多くの配布先、多くのユーザーの端末に効率的に配布するために使われる仕組みのこと。
ソフトウェア・ファーストを読み進めた。コツコツ少しずつ読んでます。
今日は頭がスッキリしなかったので、仲間からランニングが良いとお聴きしたので僕も走ってきました。ついでに筋トレも。スッキリしました!
運動はいいですね!全然汗が出ない体になってて危機感を覚えましたが(汗)
違う意味で汗をかきました(笑)
4/26(日)
この日は、vue.js の学習頑張ったと思う。
Udemyの講座に沿って、todo管理アプリの開発をしました。
●Viewインスタンスとルートテンプレートの作成
テンプレートにvue.jsを読み込ませる。cdnからコードをコピーしてくる。
Viewインスタンスは変数に入れておく(変数は使わなくても良い)
テンプレートにルートテンプレートを作成する
Vueインスタンス側でルートテンプレートをマウントする。
el: オプションに要素を指定する。値は、idセレクタで指定するので「#」をつける。
●追加ボタンのイベントハンドリングについて
●inputのvalueを双方向データバインディング
●タスクの追加
追加された分を配列に格納する挙動が思うようにいかず苦戦。。
メンター欲しいと思ったけど、自分で調べて、、、
もしやこれは勝手にリロードされてるんじゃないか!
と当たりをつけて調べたらヒット!
buttonタグは属性を持たせないと自動でリロードしちゃうのね。
自力で解決できて嬉しい。
●インプットタグ内が未入力ならタスクを追加しない
If文でメソッド内で条件分岐させる。未入力なら、return;で返してその後の処理に進まないようにする。
プログラミングって実はすげーシンプルかも。
●タスクのリスト表示
配列のデータをリスト表示させる。
●タスクの完了、未完了の管理
各タスクへのチェックボックスを作る
変数todoに、isDone: falseを書いたらエラーとなった。
v-model=“todo.isDone”とテンプレートに記述するだけで良かった。自動でやってくれてるんか。。
●スタイルの設定
cssでリストマークを非表示にする
cssで完了したタスクにチェックしたら横線で消える処理
●タスクの削除
buttonタグでdeleteボタンを作り、v-on:clickでイベントハンドリングする
ハンドリングするのは楽しい。
●動作確認
デバッグ用のコードはコメントアウト
ということで、完成だー!!
vue.jsでtodoアプリを作ることができました。
面白かった。
分かりやすいし、書きやすいし、これならフロントもいけそうで嬉しいです!
◎ソフトウェア・ファーストを読み進めた。これは変わらず。
1日1ページでも1節でも1行でも取り組むようにしています。
この日は久々のコーディングをしました。
自分の書いたコードでプログラムが動いた時ってなんでこんなに嬉しいんだろう。
そう思って考えたところ、困難なこと越えているから。 という答えが出た。
簡単なことは面白くないし、できるようになったら興味はその次に移ってしまうから、
この1回1回の「やったー!!」という喜びを噛みしめたい。
ということで、引き続き、vue.jsを中心に学習を進めていきたいと思います。
頑張ります。
学習教材
Udemy
Vue JS入門決定版!jQueryを使わないWeb開発
中村祐太さん