>

おい小僧、勉強しろ

植木屋からITへ転職した小僧が語る雑記ブログです(プログラミング, 哲学, アート, 生活, etc...)

【外出自粛中】お勉強

概要

Linuxシステムやコマンドの理解を深めるためLinux Journeyを実施する。

実施後まとめる

lsコマンド

lsコマンドのバージョン情報(version)

  • root@kali:~# ls --version
    ls (GNU coreutils) 8.30
    Copyright (C) 2018 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.
    
    作者 Richard M. Stallman および David MacKenzie。

ファイル・ディレクトリ詳細情報表示(la)

  • root@kali:~# ls -la
    合計 1164
    drwxr-xr-x 22 root root   4096  4月  9 22:42 .
    drwxr-xr-x 18 root root   4096  1月 19 10:52 ..
    drwx------  4 root root   4096  1月 19 10:14 .BurpSuite
    -rw-------  1 root root   8262  4月  9 22:42 .ICEauthority
    -rw-------  1 root root     49  4月  9 22:42 .Xauthority
    drwx------  3 root root   4096  4月  9 02:26 .anthy
    -rw-r--r--  1 root root   9536  4月  9 01:05 .bash_history
    -rw-r--r--  1 root root   3391 11月 25 05:31 .bashrc
    ...

「.」と「..」を除いた全情報表示(A)

  • root@kali:~# ls -A
    .BurpSuite     .java                         .xsession-errors.old  ip.txt
    .ICEauthority  .local                        Desktop               iplist.txt
    .Xauthority    .mozilla                      Documents             ipsweep.sh
    .anthy         .profile                      Downloads             job
    .bash_history  .vboxclient-clipboard.pid     Music                 newfile.txt
    .bashrc        .vboxclient-display-svga.pid  Pictures              nmap.txt
    .cache         .vboxclient-display.pid       Public                python
    .config        .vboxclient-draganddrop.pid   Templates             work
    .dmrc          .vboxclient-seamless.pid      Videos                work_linux_journey
    .face          .viminfo                      hello.txt
    .gnupg         .xsession-errors              hey.txt

ファイル名を「”」で囲み、一行で表示する(1Q)

  • root@kali:~# ls -1Q
    "Desktop"
    "Documents"
    "Downloads"
    "Music"
    "Pictures"
    "Public"
    "Templates"
    "Videos"
    ...

サブディレクトリ情報表示(R)

  • root@kali:~# ls -R
    .:
    Desktop    Music     Templates  hey.txt     ipsweep.sh   nmap.txt  work_linux_journey
    Documents  Pictures  Videos     ip.txt      job          python
    Downloads  Public    hello.txt  iplist.txt  newfile.txt  work
    
    ./Desktop:
    
    ./Documents:
    
    ./Downloads:
    
    ./Music:
    
    ./Pictures:
    
    ./Public:
    
    ./Templates:
    
    ./Videos:
    
    ./job:
    DSC
    
    ./job/DSC:
    partner
    
    ./job/DSC/partner:
    
    ./python:
    first.py  math.py  script.py
    
    ./work:
    actcmd  hi  messages  settings
    
    ./work_linux_journey:
    banana.txt  fake  file1.txt  file2.txt  hi.txt  peanuts.txt  reading.txt  sample.txt
    
    ./work_linux_journey/fake:
    directory
    
    ./work_linux_journey/fake/directory:

/var配下など、場所によって表示数が膨大になるため注意

拡張子別にファイルソート(X)

  • root@kali:~# ls -X
    Desktop    Music     Templates  python              ipsweep.sh  ip.txt       nmap.txt
    Documents  Pictures  Videos     work                hello.txt   iplist.txt
    Downloads  Public    job        work_linux_journey  hey.txt     newfile.txt

実行可能ファイルに「*」付与(F)

  • root@kali:~# ls -F
    Desktop/    Pictures/   hello.txt*  ipsweep.sh*  python/
    Documents/  Public/     hey.txt     job/         work/
    Downloads/  Templates/  ip.txt      newfile.txt  work_linux_journey/
    Music/      Videos/     iplist.txt  nmap.txt

組み合わせ

縦1列に拡張子別表示

  • root@kali:~# ls -1XF
    Desktop/
    Documents/
    Downloads/
    Music/
    Pictures/
    Public/
    Templates/
    Videos/
    job/
    python/
    work/
    work_linux_journey/
    ipsweep.sh*
    hello.txt*
    hey.txt
    ip.txt
    iplist.txt
    newfile.txt
    nmap.txt

更新日時昇順ソート

  • root@kali:~# ls -lrt
    合計 76
    drwxr-xr-x 2 root root 4096 11月 25 13:47 Videos
    drwxr-xr-x 2 root root 4096 11月 25 13:47 Templates
    drwxr-xr-x 2 root root 4096 11月 25 13:47 Public
    drwxr-xr-x 2 root root 4096 11月 25 13:47 Pictures
    drwxr-xr-x 2 root root 4096 11月 25 13:47 Music
    drwxr-xr-x 2 root root 4096 11月 25 13:47 Downloads
    drwxr-xr-x 2 root root 4096 11月 25 13:47 Documents
    drwxr-xr-x 2 root root 4096 11月 25 13:47 Desktop
    -rw-r--r-- 1 root root   26  4月  5 02:13 hey.txt
    -rw-r--r-- 1 root root   45  4月  5 02:22 newfile.txt
    -rw-r--r-- 1 root root  255  4月  5 03:00 ip.txt
    -rw-r--r-- 1 root root   38  4月  5 03:21 iplist.txt
    -rwxr-xr-x 1 root root  214  4月  5 03:35 ipsweep.sh
    -rw-r--r-- 1 root root   62  4月  5 03:41 nmap.txt
    drwxr-xr-x 3 root root 4096  4月  7 23:03 job
    drwxr-xr-x 2 root root 4096  4月  8 01:57 work
    drwxr-xr-x 2 root root 4096  4月  8 09:29 python
    drwxr-xr-x 3 root root 4096  4月  8 22:03 work_linux_journey
    -rwxrwxrwx 1 root root  306  4月 10 02:57 hello.txt


まとめ

ディレクトリ階層

  • /

    • /bin

      • lsやcpなど基本的なコマンド(プログラム)

        • ls、cp、chmod、ssh-add、etc…

    • /boot

    • /dev

      • バイスファイル

        • random、tty、etc…

    • /etc

      • 構成ファイル

        • apt、apache2、nginx、network、python3、etc…

    • /home

      • ユーザ個人のディレクトリでドキュメント、ファイルや設定など

    • /lib

      • ライブラリファイル

    • /media

      • USBドライブなどのリムーバブルメディア

    • /mnt

    • /opt

    • /proc

      • 実行中プロセスに関する情報

    • /root

      • rootユーザのホームディレクト

        • Desktop、Pictures、Download、etc…

    • /run

      • ブート以降の実行中のシステムに関する情報

    • /sbin

      • 重要なシステムバイナリ

    • /srv

      • システム提供のサイト固有データ

    • /usr

    • /var

      • ログ、キャッシュなど。変更される可能性のあるすべてのもの


Linuxシステムの電源オン~ログインウィンドウ表示までに起こっていること

  1. BIOS

    1. ハードウェアの初期化

    2. すべてのハードウェアが正常に動作することを電源投入時自己診断し確認する

    3. Bootloaderをロードする

  2. Bootloader

    1. カーネルをメモリにロードする

    2. カーネルを起動する

  3. カーネル

    1. バイスとメモリの初期化

    2. initプロセスをロードする

      1. ring#0:特権モード

      2. ring#3:ユーザモード

  4. init

    1. システム上の重要なサービスプロセスの開始および停止を行う

      1. sysv

      2. upstart

      3. systemd


ログの種類

  • syslog(rsyslog)

    • /var/log/syslog

      • 認証メッセージを除くすべてのメッセージ

  • general log

    • /var/log/messages

      • 起動中に記録されたメッセージ(dmesg)、auth、cron、daemonなど。マシンの動作を確認するのに役立つ

  • kernel log

    • /var/log/dmesg

      • ハードウェアドライバーに関する情報、カーネル情報、起動時のステータスなど。マシン起動時エラー解決に役立つ

    • /var/log/kern.log

  • authentication log

    • /var/log/auth.log

      • 認証情報

  • loglotate

    • /etc/logrotate.d.

      • ログの管理


参考サイト

注釈

自宅で使用した環境を以下に記載する。

  • ホストOS

    • Windows10 Pro

  • ゲストOS

  • 仮想化ソフトウェア

【感想】UdemyのAIコースを試しに購入して見てみた(追記中)

どーも、小僧です

UdemyシリーズAI編です。購入してみたのは以下のコースです。

f:id:mountroot:20200126134829p:plain
https://www.udemy.com/course/artificial-intelligence-az/

 

動画提供元の会社はSuperDataScienceという企業のようです。ストレートな企業名ですね

https://www.superdatascience.com/

 

動画が字幕対応してたと思ってたら実際は日本語字幕無かったです(汗)

※日本語字幕必要な人は注意

当人は英語のリスニングだと思って進めていきたいと思います!

メモ、感想等書いていきます

セクション1:Welcome to the course!, セクション2:Part 0 - Fundamentals Of Reinforcement Learning

 AIとは何か説明してくれる章。

 まずはAnaconda使うからダウンロードしろと言われます。以前ダウンロードしたことがあるので私は以下サイトを参考にアップデートしました

https://qiita.com/i_jp/items/7f1bc432b262b11ff8fc

後はドキュメントにさらっと目を通してAI学習の準備!

セクション3:

 Reinforcement Learning = 強化学習

 policy - Reward - Value - Model of environment

 マルコフ決定過程 (Markov decision process; MDP)

 https://ja.wikipedia.org/wiki/%E5%BC%B7%E5%8C%96%E5%AD%A6%E7%BF%92

 

【感想】UdemyのCyber Securityコースを試しに購入して見てみた(追記中)

どーも、小僧です。

最近仕事の疲れがあり、休日はストレス発散にだらだら、昼寝、Youtubeでお笑い動画を見たりすることが多く、有意義な休日を送れていません。4月に応用情報技術者試験も控えているので「なんとかせねば」と。自身の習慣を変えてみることにしました。 

 

単純に

Youtubeで動画を見る習慣を

Udemyで動画を見る習慣に置き換えてみることにしました。

さて今日からLet's White Hacker Life!

 

試しに購入したコースは以下のコースです。 

f:id:mountroot:20200125225800p:plain

https://www.udemy.com/course/the-complete-internet-security-privacy-course-volume-1/

 

基本英語で動画が進んでいきますが字幕を日本語にして見ることもできます。

当コースを購入した理由は

これから(今すでに?)IoTとかAIの開発が活発化していく中で

Securityの需要も上昇していくと思っているので、今回Cyber Securityコースを購入してみました。

 

Udemyって毎回セールやってますよね。

1万円近い通常料金で買う人いるんですかね?

きっと人間心理的にセールの方が購入しやすいんでしょうね(セールで買った人)

 

さて、ここから各セクションごとの感想を書いていきます

セクション1:Introduction, セクション2:Know Yourself - The Threat and Vulnerabillity Landscape

主にWeb、インターネット、個人情報等に関する説明の章。

ハッカー達が望むものは「情報資産」の先にある「お金」なので、ホワイトハッカーが個人なり企業なりの大切な情報資産(Assets)を守っていく必要があるんですね

セクション3:Know Your Enemy - The Current Threat and Vulnerabillity Landscape

大切な情報資産を守るために攻撃となる脅威を知りましょう。

Malware

 Macroタイプ

  WordとかExcelのマクロやVBAを使ってウイルスを仕込む

 Stealthタイプ

  OS通信を傍受してセキュリティ対策ソフトを騙す

 Polymophicタイプ

  コピー生成しシグネチャ検知を逃れる

 Self-garblingタイプ

  自身のコードを修正してアンチウイルスソフトから検知を逃れる

 Bots, Zonbies

  ハッカーの指令下になったマシン

 Worm

  マシンから別マシンへ感染を広げる

 OS, Firmware Rootkit

  ソフトウェア

 Key Loger

  キーストロークを記録する

 Trojan

  ソフトウェアをダウンロードさせ、そのソフトウェアとして動作する

 Remote Access Tool

  システムに対しリモートからアクセスできるようにする

 Ransomware

  暗号化した個人情報を身代に、金銭を請求する

 Malva Tyson

  広告のマルウェア

 Drive by Download

  Webサイト訪問者にマルウェアをダウンロードさせる

 Spyware

  収集した情報を攻撃者に渡す

 Adware

  cool web search

 Scareware

  偽のセキュリティソフトウェア

 CPU Hijackers(Crypto Mining/Cryptojackers)

  仮想通貨マイニングのために他者PCのCPUを利用する

  

フィッシング

 擬態

  「http://www.microsoft.xom」⇒ 「http://www.rnicrosoft.com

  これメールなんかで添付されていたら確かに見分け付かなくてクリックしてしまいそうなURLですよね。。。。

 隠しURL(Javascript

  Webサイトに表示されているURLをCopy&Pasteすると、表示と異なるURLで張り付けられる(表示と実体が異なる。Paste時にJavascriptが動作し実体が表示される)

 

ダークネット

 「dark = 暗い」の意味は、ソフトウェアを持たず、Amazon, Google, Facebookなど従来のインターネットのようにアクセスできないことから「暗い(dark)」の意味を持つ。アクセスのためには特別な暗号化が必要(Googleではアクセス不可)。

Torのドットネット?TorブラウザのURLは「http://xxx.onion」(たまねぎ?w)の形式で表示される。

Gnu net Framework?Free-Net project?

 

IRATEMONK

 

Edward Snowden

 暗号化技術に関する人物?

 

 

「現場至上主義Spring Boot2徹底活用」を実践した際のメモ

docker installation failed

  • 一度dockerをインストールしていたが、削除した。数ヶ月後、もう一度インストールしようとしたところ、エラーが発生。レジストリ関係のエラーだった模様。 以下を参照

success.docker.com

  • git bashでdockerを起動しようとしたところエラー。MinTTYをコマンドの先頭に付けろと怒られた?

f:id:mountroot:20190824233844j:plain

以下を参照

qiita.com

  • winptyをコマンドの先頭に付けてdockerを起動しようとしたところエラー。

f:id:mountroot:20190824232932p:plain

※そもそもbuild出来ていなかった。。。ちゃんとbuildしてあげたらdocker起動してくれた

  • 以下リンク先からOpenJDKをインストール(要Oracleアカウント、.exeの方をダウンロード)

jdk.java.net

  • JDKをインストールする際のシステム環境変数を編集可能にするコマンド(PathとJAVA_HOMEを設定)

Start C:\Windows\system32\rundll32.exe sysdm.cpl, EditEnvironmentVariables

  • 以下リンク先からgradleをダウンロード

gradle.org

  • 以下リンク先からMySQLをダウンロード

dev.mysql.com

Java SE 8 Programmer IIに合格しました

どーも小僧です。

2019/04/14(日)にJava Goldを受験し、合格しました。72点でした。

比較的余裕のない点数での合格となりました。

f:id:mountroot:20190416220123j:plain

やったこと

 黒本+模擬試験(付録特典をDLする)

徹底攻略 Java SE 8 Gold 問題集[1Z0-809]対応

徹底攻略 Java SE 8 Gold 問題集[1Z0-809]対応

 

Javaの経験年数がある程度ある方であれば必要ないかと思いますが

わたしは経験が浅いので黒本を参考にしながら実際にeclipseを使ってコードを写経し

だんだん分かってきたら解答用紙としてExcelを使って

理解できているところと、理解できていないところをチェックしていました。

 参考にさせていただいたサイト

問題集だけでは不十分だと思わせる程Java Goldは出題範囲が広いです。

そのため、黒本などの書籍に加えて、他の方の体験記は参考にすべきです。

分からない部分はJavadocを見て確認しましょう。

以下、特に参考にさせていただいたサイトを紹介します。

docs.oracle.com

qiita.com

ito-u-oti.com

csmajors.net

shironeko.hateblo.jp

www.oracle.com

まとめ

Listの多重構造をフラットにしたい時はどんな処理を使用できるか。

Mapからstreamオブジェクトを取り出すにはどんな処理が必要か。

CyclicBarrierはどんな処理を想定して作られたか。

ジェネリクスとは?

Queueとは?Dequeとは?

PeriodとDurationの違いは?

ExecutorsService?Thread?

...

などなど

情報系の専門・大学を卒業した方であれば、「工科大学での成果物」「研究課題」など企業の方の気を引く要素を持ち合わせているでしょう。

わたしのような初心者は、自分の技術を証明するものがありませんので、やはり資格は大事な指標の1つかと思います。自信も多少は付くかと思います。

初心者であり時間に余裕がある方は、資格を取っておいて損はないかと思いました(お金は会社に負担してもらいましょう。個人の成長は会社の成長でもあるはずです)

Stream APIやラムダ、ジェネリクスなど学んだことを活かして、これからSpring Bootを使用したアプリケーションを作成していく予定です。

ではまた!

【備忘録】Rails Tutorial

Should Be Remembered Errors, etc...

rails tutorialに取り組んで. 調べたこと. どんなところでコケたのか. ミスの傾向など. 記録した備忘録です. 

1.cannot load such file --bcrypt

 gem ファイルに bcrypt を記述し、bundle install 後も rails server を起動したままだったため、発生したエラー

bundle install または bundle update ⇒ rails server再起動 ⇒ OK

※ gem ファイルは server と関連がある...?

2.heroku command cannot found

cloud9 にて、heroku をインストール出来ていなかったため発生したエラー.

下記を実行し、heroku --version でherokuのバージョンが表示されればOK.

$ source <(curl -sL https://cdn.learnenough.com/heroku_install)

以下を参考に.

teratail.com

3.heroku errors

branchを切ってmasterへ戻ると、またherokuコマンドが使えなくなっている現象.

調べると、cloud9ではnvm, npmでNode.jsのバージョン管理を行っているようで

使用しているnvm, npmのバージョンが自動で低く設定されてしまい、herokuコマンドが使用できなくなっていたようなので、低いバージョンのnvmをuninstall後、nvmのdefaultバージョン変更と

ec2-user:~/environment $ nvm alias default v10.14.1
default -> v10.14.1

npmのupdateを行いました.

ec2-user:~/environment/sample_app (master) $ npm update -g npm
/home/ec2-user/.nvm/versions/node/v10.14.1/bin/npm -> /home/ec2-user/.nvm/versions/node/v10.14.1/lib/node_modules/npm/bin/npm-cli.js
/home/ec2-user/.nvm/versions/node/v10.14.1/bin/npx -> /home/ec2-user/.nvm/versions/node/v10.14.1/lib/node_modules/npm/bin/npx-cli.js
+ npm@6.7.0
added 52 packages from 7 contributors, removed 13 packages and updated 41 packages in 6.681s

以下、参考にしました.
qiita.com

qiita.com

stackoverrun.com

4.rails routes

 ルーティングで困ったらrails routesコマンドでルーティングの状況確認可能.また、

$ rails routes | grep session

上記のコマンドラインのパイプ機能でsessionに関連するものだけを表示可能.

5.GETとPOSTの違いについて

qiita.com

 上記の記事から引用

GET, POSTはHTTPメソッドの一部である.

普段から無意識にGETメソッドを使用している.

簡単な違い : リクエストの送信方法

  • GET : URL
  • POST : Body, Binary, Size, etc...

 そのため

  • GET : ブックマーク可能 (パラメータがURLに含まれるため)
  • POST : ブックマーク不可能(パラメータがBodyに含まれるため)

 

 また別の機会にHTTP(Web通信)関連の情報はまとめてみようと思います...

6.【9章】ログイン時におけるheader切り替えが動作していない

sessions.helper.rb の createメソッドに typo が合ったことで、正常に動作しなかったようです。(注意します)

7.Errno::EADDRINUSE

[16533] Puma starting in cluster mode...
[16533] * Version 3.9.1 (ruby 2.4.1-p111), codename: Private Caller
[16533] * Min threads: 5, max threads: 5
[16533] * Environment: development
[16533] * Process workers: 2
[16533] * Preloading application
[16533] * Listening on tcp://localhost:8080
Exiting</code>
/usr/local/rvm/gems/ruby-2.4.1/gems/puma-3.9.1/lib/puma/binder.rb:269:in `initialize': Address already in use - bind(2) for "127.0.0.1" port 8080 (Errno::EADDRINUSE)

railsサーバーを動作させた状態でターミナルを閉じた際、発生したエラー. 下記を参考に進めればOK.

qiita.com

8.【13章】rails aborted!
ActiveRecord::RecordInvalid: Validation failed: Email has already been taken

 rails db:seedで怒られたときは下記を参考に

qiita.com

9.【13章】Listen error: unable to monitor directories for changes

github.com

ユーザー数のエラー(?)

micropostsのfixtureでユーザーを追加してから発生したエラー. 上記で設定値を変更してエラーは修正できる.