不器用なエンジニア見習いのメモ

プログラミングなどのIT関連について学んだことをメモ代わりに書いていきます。 その他興味のあることについても書いていきます。 最近は機械学習に関することをまとめています。 HTML,JavaScript等を使って簡単なゲームを作成して公開しています。

カテゴリ:IT > 技術


今週気になったニュースです。

 参考記事
『Alphabetの気球ネット網、被災したプエルトリコにAT&Tと協力してLTE提供開始』(2017.10.21 時事通信:http://www.itmedia.co.jp/news/articles/1710/21/news027.html)

ドローンを利用した移動販売についてまとめましたが、気球を用いてインターネットのインフラを提供するという動きが以前からあったみたい。
今回、大規模なハリケーンの被害で携帯回線が使えない地域が出ていたプエルトリコにAlphabet傘下のプロジェクト「Project Loon」がLTE接続の提供を開始したとのことです。

このプロジェクト自体は2013年から始まったみたい。
http://www.itmedia.co.jp/news/articles/1306/16/news007.html

新興国のインターネット接続環境の提供を目的として発足したもので、特殊なアンテナを搭載した複数した気球を成層圏に飛ばして気球同士と地上に設置したアンテナとを接続することでインターネットの構築を目指すプロジェクトである。

今回のケースでは、機械学習のアルゴリズムを用いることでプエルトリコ上空の成層圏に留まるように調整されているそう。
これにより今の所、LTE対応スマートフォンでのテキストメッセージやオンライン情報へのアクセスなどが可能になったとしている。

機械学習が気球の運転にまで応用されているのは知らなかった。
ネットワークさえ繋がればSNS等で安否情報の確認やより細かい支援情報のチェックが出来るだろう。
コミュニケーションが取れれば被災者のストレスの軽減にも繋がるだろうし治安の安定にも一役買いそうだ。

災害後のインフラ復旧にまで活用され始めているのでこのまま課題の改善を進めて支援策の一つして確立されて欲しい。


大分日が空いてしまった。

昨日は基本情報技術者試験を受けてきましたが、自己採点の結果、正答率が午前7.5割と午後6.1割。

C言語と疑似言語で間違いが多かったから、配点によってはダメだな。

午前は前回受けた時より20点近く伸びているから日頃の業務の成果が出ていると言ってよいのだろうか。


未経から初めて早1年少しずつ力がついてきているのかな。
このブログでもドンドンアウトプットを増やして、色々な面で成果を出していこう。




 
 

もうすぐ平成28年春の情報技術者試験が近づいてますね。

昨年基本情報技術者試験に合格できなかった私は改めて試験を受ける必要がありますので1週間前になって漸く勉強を始めました。

通勤中に少しずつアプリで問題見たりしたから、基本的なことの知識は定着出来ている、と思うのだが、実際に問題解くとなると話が変わってくるし、計算問題は苦手だし。

この一週間はこういういわゆるボトルネックになり得る箇所の復習をしていこう。ていうかここでまとめよう。



公開鍵暗号方式
→暗号化用の鍵(公開鍵)と複合用の鍵(秘密鍵)を用意

重要なのは
1.「受信者の公開鍵」で暗号化
2.「受信者の秘密鍵」で複合する、ということ。


共通鍵暗号方式と併用した「ハイブリット方式」もある。
→送信者はメッセージを「共通鍵」で暗号化し、この共通鍵を「受信者の公開鍵」で暗号化してから送信する。
→受信者は、「受信者の秘密化鍵で共通鍵を復号し、この共通鍵でメッセージを復号する

ディジタル署名
メッセージ本文をもとにハッシュ値(メッセージダイジェスト)を作成
このハッシュ値を公開鍵暗号方式で暗号化

*ディジタル署名では暗号化用の鍵を秘密鍵、復号用の鍵を公開鍵にする。
メッセージのハッシュ値を、送信者の秘密鍵で暗号化する。

重要点
「ディジタル署名」は、
1.「送信者の秘密鍵」で暗号化
2.「送信者の公開鍵」で復号


送信者の公開鍵で復号に成功したということは、その署名が送信者の秘密鍵によって暗号化されたということになる。
秘密鍵は送信者が手元で保管しているものの為、メッセージの送信者が本人であることが分かる。


受信者はさらに、メッセージからハッシュ値を作成し、復号したディジタル署名と照合する。
改ざんされていないことが確認できる。


普通の公開鍵暗号方式は「受信者」の鍵を使う、
ディジタル署名は「送信者」の鍵を使う、

ってことだけでも覚えよう。


眠いから、今日はここまで!!

TyranoScriptについてチュートリアルで学んだことについてまとめて見ました。

学んだことは、
基本的なタグの使い方についてです。
 
言語仕様はこれまでやってきたことと全く異なりますが、なんとなくイメージできるものも多々ありました。


今回の説明は「//」の後に記述していきます。


;チュートリアル用スクリプトファイル
*start

[wait time=200]

//startはプログラムの始まりです。ここからプログラムが開始していきます。



ここまで横書きで表示されています。[l][r]
縦書きに変更します[l][cm]
[position vertical=true]
ここは縦書きで表示されていますね?[l][r]

//[l]:クリックすることにより出力されます。
//[r]:改行されます。
//[cm]:画面が切り替わります。文章が下段まで記述されていた場合、最上段の行まで戻って文字が出力されるようになります。
//[position vertical=true]:縦書きになります。(falseにすると横書きに戻ります。)


横書きに戻します[l][cm]
[position vertical=false]
[cm]
横書きで表示されていますね?

メッセージウィンドウの高さを変更します[l][cm]
[position height=160 top=300]

//メッセージウィンドウの大きさ、位置の設定をします。



[cm] メッセージウィンドウが下に表示されましたね?[l][r][cm]

[position layer=message0 page=fore frame="frame2.png" margint="30" marginl="30" marginr="30" marginb="30"]
[position width=600 height=200 top=450 ]


//メッセージウィンドウに画像を用いる場合の設定です。
//メッセージウィンドゥの大きさと画像の大きさを合わせる必要があります。

[cm]
メッセージウィンドウが下に表示されましたね?[r][l]



;背景とキャラクター操作を簡略化するライブラリの呼び出し
[call target=*start storage="tyrano.ks"]

;背景画像の切り替え実行
[bg storage=room2.jpg time=3000]



//背景画像保存用のフォルダ「bgimageフォルダ」に配置



;1人目のキャラクター登場
[chara_new name="yuta" storage="yuta1.png" jname="ゆうた"]
[chara_show name="yuta"]

//キャラクターのオブジェクトを宣言していると見て良いか?
//画像は、プロジェクトフォルダの「fgimage」に保存
//chara_show nameで画面に出力する。


ゆうたが登場しました![l][r]

;2人目のキャラクター登場
[chara_new name="haruka" storage="haruka1.png" jname="はるか"]
[chara_show name="haruka"]


//プロジェクトフォルダの「fgimage」に保存

はるかが登場しました![l][r]

;ゆうたの表情を登録
[chara_face name="yuta" face="angry" storage="yuta2.png"]

表情を変更します[p]
;ゆうたの表情の変更
[chara_mod name="yuta" face="angry"]


//chara_modで表情を変更している


表情を元に戻します[p]
;ゆうたの表情を元に戻す
[chara_mod name="yuta" face="default"]

[chara_hide name="haruka" ]


//


[link storage=scene2.ks target=*select1]【1】選択肢 その1[endlink][r]
[link storage=scene3.ks target=*select2]【2】選択肢 その2[endlink][r]

[s] 

*common 
[cm]
別ファイルから戻って来ました[r][l]


//プロジェクトフォルダの「scenario」フォルダに新しく作成
//以下は別フォルダでの記述

//*select1 
//[cm]
//「選択肢1」がクリックされました[l][r]
//あいうえおかきくけこさしすせそ[l][r]
//
//@jump storage=first.ks target=*common





坂本竜馬はどっちでしょう?
[locate x=20 y=100]
[button graphic="oda.png" target=*ryoma]

[locate x=300 y=100]
[button graphic="toyo.png" target=*kogoro] 

[s]
*ryoma
[cm]
正解です![l][r]
@jump target=*common1

*toyo
[cm]
間違いです[l][r]
@jump target=*common1

*common1

共通ルート[l][r]


//2つの画像ファイルをプロジェクトフォルダのimageフォルダに格納



音楽を再生します[l][r]
[playbgm storage=test.ogg]
[stopbgm]
音楽の再生が止まりました[l][r]



//bgmフォルダに保存


[playse storage="voice.ogg"]
再生されましたね[l][r]



//効果音ファイルはプロジェクトフォルダの「sound」フォルダに


今日はここまでです。まだ微妙に分からないことあるなー。 
変数、とメソッドについては何もやっていないので何とかしないと。



業務、というかそれ以外のことで使うことが一切ない仕様だから今やって何になる?って気もするけど、実際に作ること分かることもあるよね。あると信じたい。

とにかく今は自分のやることを信じて、自信を持って突き進むのみ。迷うな!!

 


今日は、SQLの勉強をしました。


入社してからの研修で一度触れてはいたのですが、
その後も一切使っていなかった為まっさらに近い状態からの勉強でした。 

おかげでまとめることが沢山あります。

今日は基本中の基本の行や列の追加の仕方やデータの抽出の仕方についてです。


本日習ったのは以下の6つのコマンド?です。
 
・CREATE TABLE
新たなテーブルを作成する為のコマンドです。
データベースの根幹となるテーブルを創ってくれます。


・INSERT INTO 
既存のテーブルにデータを新たに追加する為のものです。

・SELECT 
既存のテーブルから条件に沿ったデータを抽出する為のものです。

・UPDATE 
テーブル上にあるデータの更新を行う為のものです。


・ALTER TABLE 
列の追加や変更、削除の際に使用します。


・DELETE FROM 
データおテーブルを削除する際に使用します。


もう少し具体的に見ます。


INSERT INTO sample1 (id, name, age)
VALUES (1, 'Tanaka', 27);
SELECT * FROM sample1;

テーブル「sample1」に年齢27歳の田中さん(idは無視させて頂きます。)というデータを追加する場合。
 上記のsample1 (id, name, age)の引数は、挿入される各列の項目のことを指します。
つまり、 (id, name, age)の列に新しいデータが入ることになります。

 VALUES (1, 'Tanaka', 27);で具体的な値が設定され、テーブル上に挿入されることとなります。

SELECT * FROM sample1;では、テーブル「sample1」 から全てのデータを抽出していることになります。


ちなみに複数追加したいデータを指定して、1回のコマンドで抽出することも出来そうです。


INSERT INTO sample1 (id, name, age) VALUES (2, 'Saitou', 34); 

INSERT INTO sample1 (name, id, age) VALUES ('Shima', 3, 31); 

INSERT INTO sample1 (age, name, id) VALUES ( 29, 'Fujita', 4);

SELECT name FROM sample1;

引数の順番がバラバラでも、INSERTとVELUESの引数とで整合が取れていれば抽出できます。

 

UPDATE sample1
SET age = 22
WHERE id = 1; 
 
データの更新なので、もし、age = 22なのだけどid = 3だった場合は1に更新されるということで良いんだろうか……。



ALTER TABLE sample1 ADD COLUMN
BackNo TEXT;

SELECT * FROM celebs;


列を追加します。テーブル「sample1」に BackNoという列を追加します。
TEXTと書いてある為、数字ではなく、文字列のデータが格納されることになります。

 


UPDATE sample1
SET BackNo  = 'number11'
WHERE id = 4;
DELETE FROM sample1 
WHERE BackNo IS NULL;
SELECT * FROM sample1

 
 SET BackNo  = 'number11'
ここで、新たにデータを追加しています。
文字列の為「''」で囲っています。


この更新処理では、Id=4の行に 
BackNo  = 'number11'となっている為、
他の行では値が無いNULL状態となります。

このままでは見栄えが悪くなる為、 
WHERE BackNo IS NULL;

で関係ない行を削除してから
 
SELECT * FROM sample1 

として、抽出しています。




眠い、もう寝よ。 

↑このページのトップヘ