Happiness Chainに入会して5ヶ月が経ちました

皆様こんにちは、Amiaです。

私は「Happiness Chain」というオンラインのプログラミングスクールに入会して勉強しています。

そして「Happiness Chain」に入会してから5ヶ月が経ちました。

5ヶ月目に学習した内容を書いていきたいと思います。

⚫︎5ヶ月目の学習内容(約83時間)

・Web開発の基礎を学ぶ

①動画でのインプット
HTML, CSS, JavaScript, Ruby, Rails, データベース, Gitを使用した開発の流れを大まかに理解する。
GitHub Pagesでwebサイトを公開する。
GitHub Pagesでwebサイトを公開する方法についてブログに記載する。

・Docker

①動画でのインプット
(途中まで)

⚫︎学習時間について

・1ヶ月目の学習内容(約66時間)
・2ヶ月目の学習内容(約88時間)
・3ヶ月目の学習内容(約88時間)
・4ヶ月目の学習内容(約74時間)
・5ヶ月目の学習内容(約83時間)
・Happiness Chain入会後累計学習時間(約402時間)

⚫︎振り返ってみての感想

長期休暇があったことも影響して先月よりも全体的な学習時間は多かったのでよかったです。
話は変わりますが今月から読書と英語の学習も行うようにしました。
HCでの学習時間と比べ少ない時間ではありますが毎日継続できるようにしていきたいです。

来月は本格的にdockerの学習に入るため気合を入れて臨みたいです。

それではまた遅くて一ヶ月後ぐらいにお会いしましょう🖐️

Happiness Chainに入会して約4ヶ月が経ちました

皆様こんにちは、Amiaです。

私は「Happiness Chain」というオンラインのプログラミングスクールに入会して勉強しています。

そして「Happiness Chain」に入会してから約4ヶ月が経ちました。

今まではアウトプットが苦手で、Happiness Chainのロードマップを進めることで一杯一杯でこのような振り返りの記事を書いていませんでした。
しかしHappiness Chainではロードマップを完走することだけがゴールではありません。それぞれの学習のテーマごとできちんとその内容を理解していなくては意味がありません。アウトプットすることで定着率が上がります。また今回のような振り返りについて書くことで何を学習してきたか可視化でき、そして入会した当初よりもこれだけできることが増えたという自信につながります。

随分と疎かにしてしまっていたため次回から1ヶ月ごとに振り返りの記事を書いていきたいと思います。

⚫︎1ヶ月目の学習内容(約66時間)

・Progateでの学習

①HTML & CSS
②Command Line
Ruby
SQL
⑤Ruby on Rails5
JavaScript(ES6)

⚫︎2ヶ月目の学習内容(約88時間)

・Progateでの学習

JavaScript(ES6)
②React
③Node.js

・エンジニアとしての基礎を学ぶ

Markdown記法を使えるようにする
②ブログでのアウトプットの習慣を身につける
③ブラインドタッチを身につける

・Web技術の基本を学ぶ

①基本的なIT用語をおさえる
②web技術の基本についてインプット(書籍)

テキストエディタについて

VSCodeについてインプット(動画)

Vimについて

①vimtutorでのインプット、アウトプット

Linuxについて

①インプット(動画、教材)

⚫︎3ヶ月目の学習内容(約88時間)

Linuxについて

①インプット(動画、教材)

・Git & GitHub

①インプット(動画)
②Learn Git Branching
リポジトリを作成してみる
④Pull Requestの練習
github flowについてインプット(動画)

⚫︎4ヶ月目の学習内容(約74時間)

・HTML/CSSについて

①インプット(動画)
デベロッパーツールの使い方についてインプット(動画)
③初級アウトプット課題

⚫︎学習時間について

・1ヶ月目の学習内容(約66時間)
・2ヶ月目の学習内容(約88時間)
・3ヶ月目の学習内容(約88時間)
・4ヶ月目の学習内容(約74時間)
・Happiness Chain入会後累計学習時間(約319時間)

⚫︎振り返ってみての感想

他の方と比べすぎてもいけませんが、学習ペースが遅いと感じました。理解するまでに時間がかかっています。しかし人それぞれ理解する速さは異なるため仕方ないと割り切るしかないのかなと思います。
時には休憩をしっかりと取ることの大切さを実感しました。思い切って1日オフ日にしてみたり。却ってそのほうが勉強に集中でき結果的に学習が進んだということが何度もありました。
自分のペースを大事にして挫折せずに勉強すること。なんとかしがみつくこと。

5ヶ月目はもっと成長した自分を目指して!

それではまた遅くて一ヶ月後ぐらいにお会いしましょう🖐️

GitHub Pagesで公開する方法について

皆様こんにちは、Amiaです。

近頃「GitHub Pages」を使用して自身が作成したWebページを公開する機会がありました。
ですので今回は、「GitHub Pages」を使用して自身が作成したWebページを公開する方法を復習も兼ねて記事にしてみようと思います。

GitHubアカウントは既に登録済みであるということを前提にして説明をしていきます。
またGitのコマンドの中でadd, commit, pull, push程度のコマンドは学習済みということを想定しています。

⚫︎そもそもGithub Pagesとは

GitHubから提供されている、静的サイトのホスティングサービスのことを言います。
静的サイトとは、ユーザー操作でページ内容が変わらない、HTML・CSS等で構築されたサイトのことです。(JavaScriptを使ったアニメーション含むサイトも公開可能です。)

PHPで動くWordPressのような動的サイト(ユーザーの操作でページ内容が変化する)の公開はできません。

これを使えばレンタルサーバーを契約しなくても気軽にウェブサイトを公開できます。
GitHubのアカウントを持っていれば無料で静的なウェブサイトを公開することができます。
GitHub Pagesを使うことで、自分が作成したWebページを外部に公開することができます。GitHubに上げているソースを元にWebページが作成可能なのでとても便利です。

⚫︎GitHub Pagesの公開までの手順全体像

1.GitHubのサイト上でリモートリポジトリの作成
2.リモートリポジトリ内に公開したいファイルを追加(アップロード)
3.GitHub Pagesでサイトの公開

上記の手順を行うことでGitHub Pagesで自身が作成したサイトを公開することができます。意外と工数的には多くないと思います。
それでは実際に画像を用いて手順の説明をしていきたいと思います。

1.GitHubのサイト上でリモートリポジトリを作成する

GitHubのTOPページを開きます。
②TOPページ右上の「+」をクリックします。
③「New Repository」をクリックします。

④「Repository name」の部分に任意のリポジトリ名を入力します。
今回は「githubpages_testrepository」というリポジトリ名としました。

リポジトリ名は基本的にどのようなものでも問題ありませんが、ここで設定したリポジトリ名によって下記のようにこの後公開するWebページのURLのリポジトリ名の部分が変わります。

https://(アカウント名).github.io/(リポジトリ名)

⑤「Public」を選択します。
⑦「Create repository」をクリックします。

⑧無事にリポジトリが作成されると以下のような画面に切り替わります。

2.リモートリポジトリ内に公開したいファイルを追加(アップロード)する

今回は以下のようにVSCodeで作成したファイルを使用します。

①ターミナルで下記のようにコマンド入力をしてリモートリポジトリにローカルリポジトリの内容をプッシュします。

$ git init

$ git add .

$ git commit -m "githubpages_testrepository"

$ git remote add origin origin https://github.com/mm-da-if-kun/githubpages_testrepository.git

$ git branch -M main

$ git push -u origin main

②リモートリポジトリで内容に問題がないことを確認します。

3.GitHub Pagesでサイトを公開する

①リモートリポジトリで右上にある「Settings」をクリックします。
②左側のメニューの「Pages」をクリックします。
③Branchの部分が「None」になっているため「main」に変更します。
④「Save」をクリックします。

⑤しばらくすると以下のようにGitHub Pagesの部分にURLが発行されます。
⑥「visit site」をクリックします。

⑦無事にWebサイトを公開することができました。

⚫︎私がGitHub Pagesで公開する際に躓いた部分について

・README.mdが表示されてしまう

Github Pagesで公開でき「https://(アカウント名).github.io/(リポジトリ名)」にアクセスすると、README.mdの内容が表示されてしまいました。
調べたところGithub Pagesで公開する際に指定したリポジトリの直下にREADME.mdがある場合はそちらが優先的に公開されてしまうとのことでした。以下の記事を参考にして対応しました。

こちらでも簡単に手順を記載いたします。

①.githubフォルダ(注:フォルダ名のドットを忘れずに)を作成します。
②mvコマンドを使用して「.githubフォルダ」を移動させます。(git mv .github 移動先ディレクトリ名)
③無事にWebページでindex.htmlが表示されるようになります。

cssが適用されない

上記の方法で無事にWebページでindex.htmlが表示されるようになったと思います。しかし別の問題が発生してしまいました。なんとcssが全く適用されていなかったのです。もちろんローカルで作業をしていた時には適用されていたことを何度も確認しています。以下の記事を参考にして対応しました。

」のような相対パスではなく、「」のように絶対パスで指定する必要があるようです。

相対パスで指定されている部分を絶対パスに変更します。
②git commitコマンドを使用して最新の状態にコミットします。
③git pushコマンドでGitHubリポジトリにプッシュします。

・画像が表示されない

上記の方法で無事にWebページでcssが適用されたindex.htmlが表示されるようになったと思います。しかしまたここで問題が発生してしまいました。画像が表示されないのです。こちらもローカルで作業をしていた時には適用されていたことを何度も確認しています。以下の記事を参考にして対応しました。

GitHub Pagesにアップロードした画像を表示させるためには、Github上での正しいパスを記載する必要があるそうです。アップロードした画像のパスはGitHub独自の形式に変わるようで、そのパスに変更すれば問題ないようです。

今回私が躓いた部分について記載してきましたが、3点とも共通して対応を行ってから数分間は適用されないものと考えた方がよいです。
私も始めはすぐに適用されずに焦りましたが10分後ぐらいには適用されていました。

これで無事にGitHub Pagesで公開することができました。

⚫︎最後に

私は「GitHub Pages」というものを知りませんでした。それでも無事にWebサイトを公開することができました。

GitHubについては学習してというもの苦手意識がありました。まだ少しあります。
しかし使用していくうちに慣れていくとものだということを実感しました。これからもどんどん使用して慣れていきたいと思います。

Linux標準教科書 -Ver. 3.0.4-~コマンドまとめ~

皆様こんにちは、MMです。

今回は「Linux標準教科書 -Ver. 3.0.4-」 Linuxについて学び、ピックアップしたコマンドについて自分なりにまとめた内容を記載していきたいと思います。

それでは行ってみましょう☺️

1. cdコマンド

cdコマンドはカレントディレクトリ(現在居るディレクトリ)から他のディレクトリに移動する際に使用するコマンドです。

書式)

cd [ディレクトリ名]

cdコマンドで、ユーザのホームディレクトリに移動するには以下のような方法があります。
・cdコマンドの引数にホームディレクトリを表すメタキャラクタ「~」とユーザ名を指定する 「cd ~ユーザ名」とすることで、指定したユーザのホームディレクトリに移動します。
・cdコマンドの引数にホームディレクトリを表すメタキャラクタ「~」を指定する 「cd ~」とすることで、コマンドを実行したユーザのホームディレクトリに移動します。
・cdコマンドの引数に何も指定しない cdコマンドを引数なしで実行する事で、コマンドを実行したユーザのホームディレクトリに移動します。

なお、ユーザのホームディレクトリは通常「/home/ユーザ名」(rootユーザの場合は「/root」)になります。ユーザtestであれば、ホームディレクトリは「/home/test」ディレクトリです。
しかしホームディレクトリは「/etc/passwd」ファイルなどを使用して変更することが出来ます。ですので「/home/ユーザ名」ディレクトリがホームディレクトリになるとは限りません。

2. pwdコマンド

ディレクトリは階層構造になっています。pwdコマンドはその階層の中で現在どの位置にいるか表示します。

書式)

pwd

3. lsコマンド

Isコマンドはファイル名やディレクトリ名を指定して情報を取得することができます。ディレクトリ名を指定した場合は、そのディレクトリの中にあるファイルやディレクトリ名の一覧を取得することができます。ディレクトリやファイルをlsコマンドで参照する場合、「*」と「?」をワイルドカードとして使用することもできます。

書式)

ls [オプション][ファイル]

オプション

オプション 説明詳細
-a 「.」で始まる隠しファイル等も全て(All)出力します。
-l 長(Long)形式で出力します。
-t 最終更新時間(Time)でソートして出力します。
-r 逆順(Reverse)でソートして出力します。

オプションはまとめてもまとめなくても同じ結果になります。さらに順不同なため入れ替えても同じ結果になります。ただしコマンドによっては順序と文法が細かく決まっている場合があるため、コマンドを実行する前にマニュアルやヘルプを参照してください。またコマンドオプションはハイフンを使用して指定することが一般的ですが、コマンドによってはハイフンを必要としないコマンドもあるため注意が必要です。

例)

$ ls -la
$ ls -al 等

・lsコマンドでワイルドカードを使った絞り込み
「*」は任意の文字列を示しており、この間に何文字が入っても検索結果として出力されます。下記のような形式で実行すると「conf」で終わるファイルがリスト表示されます。

例)

$ ls *.conf

またファイル名の文字数がわかっている場合は「?」を使用して絞り込むことができます。「?」は1個につき何らかの1文字を示します。

例)「hosts.」の後に4文字+最後の文字が「w」であるファイルを絞り込み

$ ls hosts.????w

3. mkdirコマンド

mkdirコマンドを実行するとディレクトリを作成できます。

書式)

mkdir [オプション] ディレクトリ名

オプション

オプション 説明詳細
-m アクセス権 指定したアクセス権でディレクトリを作成。
-p 指定されたディレクトリの上位ディレクトリも作成します。

例1)アクセス権が700の「dir」ディレクトリを作成する場合

$ mkdir -m 700 dir

例2)

$ mkdir dir1
$ mkdir dir1/dir2

ディレクトリを作る時はその上位層ができていないと作成できないという制約があるためmkdirコマンドを3つに分けて実行しました。

例3)カレントディレクトリに「dir1/dir2」ディレクトリを作成する場合。なお、「dir1」ディレクトリは存在しない。

$ mkdir -p dir1/dir2
$ ls -R dir1
dir1:
dir2

4. rmdirコマンド

rmdirコマンドはディレクトリを削除する際に使用します。

書式)

rmdir [オプション] ディレクトリ名

オプション

オプション 説明詳細
-p 指定した階層までのディレクトリを一括で削除します。オプションを付けないでrmdirコマンドを実行した場合は、最下層のディレクトリのみ削除します。ただしいずれの場合も対象とするディレクトリ内はからでなければなりません。

rmdirコマンドはディレクトリを削除するコマンドですが、削除対象のディレクトリは空である必要があります。
空ではないディレクトリを削除するためにはrmdirコマンドではなく、rmコマンドに-rオプションを付けて実行します。このコマンドを実行すると、特に警告されることなく指定したディレクトリ以下のディレクトリとファイルを削除することができます。

5. catコマンド

catコマンドはファイルの内容を確認するコマンドの1つです。

書式)

cat ファイル名
ファイルの内容を表示することができます。

オプション

オプション 説明詳細
-n 行番号を付加して表示します。
-b 空行を除いた行に行番号をつける

catコマンドの引数にファイルを複数指定すると、ファイルを連結して出力します。ファイル名が指定されない場合、または「-(ハイフン)」が指定された場合は標準入力から受け取ったデータを標準出力に表示します。

6. lessコマンド

catコマンドを使用してファイルの内容を表示する時、行数が多い場合は表示が流れてしまいます。多くの行がある場合も画面制御を行なってスクロールを途中で止めてくれる機能のことをページングといいます。そしてそれを実現するコマンドをページャといいます。代表的なページャは「more」や「less」等です。

書式)

less ファイル名
使い方はcatコマンド等と同様で、オプションとしてページングする対象のファイル名を指定します。
項目 内容説明
スペース 次のページに進む
b 前の一画面に戻る
f 次の一画面に戻る
前の行に進む
次の行に進む
/単語 単語を検索します。nキーで検索結果をジャンプします。
q ページャコマンドを終了します。

7. tailコマンド

tailコマンドは指定したファイルの末尾部分を表示するコマンドです。行数を「-n」オプションで指定しない場合は、末尾の10行が表示されます。

書式)

$ tail [オプション] ファイル名

オプション

オプション 説明詳細
-n 行 末尾から指定した行を標準出力します。
-c バイト 末尾から指定したバイト分を標準出力します。
-f 変更をリアルタイムでモニタすることが可能になります。

tailはファイルの終わり部分を標準出力します。オプションをつけない場合は末尾から10行を標準出力します。ファイル名の部分を空白にした場合、もしくは「-(ハイフン)」を指定した場合は標準入力からのデータに対して処理を行います。またファイルによってはログ等終わり部分が随時変わることがあります。-fオプションを付けることにより、変更をリアルタイムでモニタすることが可能になります。

例)

$ tail FILE
FILEの末尾10行を表示

$ cat FILE | tail -
標準入力からの内容のうち末尾10行表示

$ cat FILE | tail
標準入力からの内容のうち末尾10行表示

8. touchコマンド

touchコマンドは空のファイルを作成したり、ファイルのタイムスタンプ(アクセス時刻や修正時刻)を変更する際に利用します。

書式)

touch [オプション] ファイル名 [ファイル名・・・]

オプション

オプション 説明詳細
-t 時刻 アクセス時刻と修正時刻を指定した時刻に変更
-a アクセス時刻を変更
-m 修正時刻を変更

touchコマンドを実行するとファイルのタイムスタンプが現在日時に変更されます。また、オプションにより新しいタイムスタンプとなる日時を指定することもできます。指定したファイル名のファイルが存在しない場合、touchコマンドは中身が空である0バイトのファイルを作成します。テスト用の空ファイルなどを簡単に作成できるので便利です。(touch aa bb cc など) また「-t」オプションで時刻を指定しない場合は、現在時刻が適用されます。

タイムスタンプはファイルの詳細情報を表示するstatコマンドなどで確認できます。

9. rmコマンド

ファイルやディレクトリを削除するにはrmコマンドを利用します。

書式)

rm [オプション] ファイルまたはディレクトリ名

オプション

オプション 説明詳細
-i 処理を行う時に確認をします。対象ファイルを本当に削除して良いか、このオプションを付けていると確認をしてくるため誤って削除することを防ぐことができます。
-f 強制的に処理を実行します。ファイルによっては削除に確認を求められる場合がありますが、-fオプションはその確認を無視して強制的に処理を継続します。
-r または -R ディレクトリを対象にします。ディレクトリの中のファイルやディレクトリも削除します。

10. mvコマンド

mvコマンドはファイルを移動する時に使用します。また、ファイル名の変更も行えます。

書式)

mv 移動元ファイル 移動先ファイル

例)

$ mv src-file dst-file

このmvコマンドを実行することにより移動元ファイルを移動先ファイルに移動することができます。
・src-fileがファイル名でdst-fileが存在するデイレクトリの場合、ファイルsrc-fileがディレクトリdst-fileの下に移動します。
・src-fileがディレクトリ名でdst-fileが存在するディレクトリの場合、ディレクトリsrc-fileはディレクトリdst-fileの下に移動します。
・src-fileがファイル名でdst-fileが存在しないファイル名の場合、ファイルdst-fileにファイル名が変更されます。
・ src-fileがディレクトリ名でdst-fileが存在しないディレクト名の場合、ディレクトリdst-fileにディレクトリ名が変更されます。

オプション

オプション 説明詳細
-i 処理を行う時に確認をします。ファイルを上書きする時等、このオプションを付けていると確認をしてくるため誤った操作を防ぐことができます。
-f 強制的に処理を実行します。一部の処理ではmvコマンドが確認の問い合わせをします。その確認を無視し、強制的に処理を実行するためのオプションが-fです。

11. cpコマンド

cpコマンドはファイルを複製し、新しくできた複製ファイルのファイル名を指定することができます。

書式)

cp [オプション] コピー元のファイル(ディレクトリ) コピー先ファイル(ディレクトリ)

例)

$ cp src-file dst-file

・src-fileがファイル名でdst-fileが存在しないファイル名の場合、src-fileのコピーとしてdst-fileが作成されます。
・src-fileがファイル名でdst-fileがディレクトリ名の場合、dst-fileんの下にsrc-fileのコピーが作成されます。
・src-fileがファイル名でdst-fileが存在するファイル名の場合、ファイルdst-fileはファイルsrc-fileのコピーで上書きされます。

オプション

オプション 説明詳細
-f コピー先の既存のファイルやディレクトリが上書きできない場合、削除してからコピーする。
-i 処理を行う時に確認をします。ファイルを上書きコピーする時等、このオプションを付けていると確認をしてくるため誤った操作を防ぐことができます。
-r または ーR ディレクトリをコピーします。通常cpコマンドはファイルをコピーする機能のみですが、-rオプションを付けることでディレクトリ内の全てのファイル・ディレクトリに対してコピーを行うことができます。
-p 元のファイルの情報を保存します。ファイルには所有者・属性・更新日時等ファイルに関する様々な情報があります。cpコマンドでコピーすると新しいファイルはそれらが全て新しい内容になってコピーされます。-pオプションを付けると新しい内容を作成せず、古い情報を保持したままコピーを作成します。

cpコマンドはデフォルトでファイルを上書きしますが、権限などの理由で書き込み先のファイルが書き込みオープンできない場合、「-f」オプションはそのファイルを削除してからコピーします。

12. lnコマンド

lnコマンドは、ファイルのリンクを作成するためのコマンドです。「ln ファイル名 リンク名」でハードリンク、「-s」オプションを使い、「ln -s ファイル名 リンク名」としてシンボリックリンクを作成することができます。

13. findコマンド

findは指定したディレクトリ以下からファイルやディレクトリを検索するコマンドです。

書式)

find [検索起点ディレクトリ] [検索式] [アクション]

検索式

検索式 説明詳細
-name ファイル名 ファイル名で検索
-atime 日数 最終アクセス日で検索
-mtime 日数 最終更新日で検索
-perm アクセス権 アクセス権で検索
-size サイズ ファイルサイズで検索
-type ファイルの種類 ファイルの種類で検索(fはファイル、dはディレクトリ、lはシンボリックリンク
-user ユーザ名 ファイルの所有者で検索
-maxdepth 階層数 指定した階層まで検索
-mindepth 階層数 指定した階層から下を検索

アクション

アクション 説明
-print 検索結果を改行で区切って表示(省路可能)
-print0 検索結果をNULL文字(¥0)で区切って表示
-exec コマンド名 {}¥; 検索結果のファイルに対してコマンドを実行

14. chmodコマンド

ファイルやディレクトリのパーミッションを変更するにはchmodコマンドを利用します。
モード指定の書き方は2通りあります。
①モードの書式を複数書き、カンマで区切って指定。
②8進数3桁で各ユーザのレベルを指定。

書式)

chmod モード[,モード]... ディレクトリ
chmod モード[,モード]... ディレクトリ
chmod 8進数表記のモード ディレクトリ
chmod 8進数表記のモード ファイル

オプション

オプション 説明詳細
-R ディレクトリを対象にします。ディレクトリの中のディレクトリを再帰的に(ディレクトリの中にディレクトリがあれば、中のディレクトリを全て辿って)変更します。

(1)方法①
モードは次のようにu(所有ユーザ)、g(所有グループ)、o(その他のユーザ)に対してr(読み)、w(書き)、x(実行またはディレクトリの変更)を設定したり(=)、加えたり(+)、取り消したり(-)します。u,g,oの全てに同じ権限を指定する時はaを指定します。

記号の場合 以下の記号を用います。

対象 説明詳細
u 所有者
g 所有グループ
o その他ユーザ
a 全てのユーザ
操作 説明詳細
+ 権限を追加
- 権限を削除
= 権限を指定
権限 説明詳細
r 読み取り権
w 書き込み権
x 実行権
s SUIDまたはSGID
t スティッキービット

対象、操作、権限の順に指定します。また「,」を使用して繰り返すことも出来ます。

644から755へ変更するには、全てのユーザへプラス1(6+1,4+1,4+1)すれば良いことになります。1は実行の権限を表します。 全てのユーザ(a)に実行権(x)を追加するには「a+x」とします。

もしくは、一旦全てのユーザ(a)に読み取り(4)と実行(1)の権限を設定(a=rx)してパーミッションを555とし、その後、所有ユーザ(u)に書き込み(2)の権限を追加(u+w)しても755となります。 これを記号で表すと「a=rx,u+w」となります。
なお、「a」のかわりに「ugo」としても同じ動作となります。

例)

# login penguin
Password: ******
Last login: Mon Apr  9 03:07:19 on pts/0
(ユーザ penguin でログインする)

$ touch chownfile
(ファイル chownfile を作成)

$ ls -l chownfile
-rw-rw-r-- 1 penguin penguin 0 Apr  9 03:27 chownfile
(ファイル chownfile のモードを確認)

$ chmod u+rw-x,go+r-wx chownfile
(ファイルモードを -rw-r--r-- に変更する)

$ ls -l chownfile
-rw-r--r-- 1 penguin penguin 0 Apr  9 03:27 chownfile
(ファイル chownfile のモードが変更されていることを確認)

(2)方法②
8進数を使用してもchmodコマンドでアクセス権を変更することができます。値は以下の表のように設定します。

アイコン

例)

# login penguin
Password: ******
Last login: Mon Apr  9 03:25:20 on pts/0
(ユーザ penguin でログインする)

$ touch chownfile
(ファイル chownfile を作成)

$ ls -l chownfile
-rw-rw-r-- 1 penguin penguin 0 Apr  9 04:50 chownfile
(ファイル chownfile のモードを確認)

$ chmod 226 chownfile
(ファイルモードを --w--w-rw- に変更する)

$ ls -l chownfile
--w--w-rw- 1 penguin penguin 0 Apr  9 04:50 chownfile
(ファイル chownfile のモードが変更されていることを確認)

モードの指定にsetuidビットとsetgidビットとstickyビットという特殊な属性があります。setuidビットあるいはsetgidビットが付いたプログラムを実行するとファイル所有者あるいは所有グループの権限で実行されます。
stickyビットが付いたディレクトリ内のファイルは所有者以外が削除できなくなります。(Linuxではファイルについてのスティッキービットは無視されます。)Linuxでは一般的に/tmpディレクトリにスティッキービットが付与されています。

例)

# login penguin
Password: ******
Last login: Mon Apr  9 04:49:07 on pts/0
(ユーザ penguin でログインする)

$ touch idbitfile
(ファイル idbitfile を作成)

$ chmod u+rw-x,go+r-wx idbitfile
(ファイルモードを -rw-r--r-- に変更する)

$ ls -l idbitfile
-rw-r--r-- 1 penguin penguin 0 Apr 10 00:43 idbitfile
(ファイル idbitfile のモードが変更されていることを確認)

$ chmod u+s idbitfile
(setuid ビットを追加)

$ ls -l idbitfile
-rwSr--r-- 1 penguin penguin 0 Apr 10 00:43 idbitfile
(setuid ビットがセットされていることを確認)

$ chmod u-s,g+s idbitfile
(setuid ビットを除去、 setgid ビットを追加)

$ ls -l idbitfile
-rw-r-Sr-- 1 penguin penguin 0 Apr 10 00:43 idbitfile
(setuid ビットが除去され、 setgid ビットが追加されていることを確認)

$ chmod +t idbitfile
(sticky ビットを追加)

$ ls -l idbitfile
-rw-r-Sr-T 1 penguin penguin 0 Apr 10 00:43 idbitfile
(sticky ビットが追加されていることを確認)

15. chownコマンド

ファイルの所有者を変更するにはchownコマンドを使用します。ユーザとグループを変更するにはrootユーザである必要があります。ディレクトリとファイルは区別なく変更できます。ユーザとグループの区切りに「:」を使用することも可能です。

書式)

chown ユーザ[.グループ] ディレクトリ
chown ユーザ[.グループ] ファイル

オプション

オプション 説明詳細
-R ディレクトリを対象にします。ディレクトリの中のディレクトリやファイルを再帰的に辿って変更します。

例)

# login penguin
Password: ******
Last login: Mon Apr  9 01:41:41 on pts/0
(ユーザ penguin でログインする)

$ touch user
(ファイル user を作成)

$ ls -l user
-rw-rw-r-- 1 penguin penguin 0 Apr  9 02:18 user
(ファイルの所有者と所有グループを表示する)
(現在の所有者はpenguin、所有グループはpenguin)

$ chown nobody user
chown: changing ownership of 'user': Operation not permitted
(rootユーザではないので、所有者を変更ができません)

$ su
Password: ******
(カレントディレクトリはそのままrootユーザにログインする)

# chown nobody user
(所有者をユーザ nobody に変更する)

# ls -l user
-rw-rw-r-- 1 nobody penguin 0 Apr  9 02:18 user
(所有者がnobodyに変更されていることを確認)

16. psコマンド

プロセスとは、システム上で動作しているプログラムの最小単位のことです。
プログラムを実行すると1つまたは複数のプロセスがカーネルによって自動的に生成され、プログラムが終了するとプロセスはカーネルによって自動的に削除されます。
psコマンドで現在実行中のプロセスを確認することができます。

書式)

ps [オプション]

オプション

オプション 説明詳細
a 他のユーザのプロセスも表示(xオプションとの併用で全てのプロセスを表示)
f プロセスの親子関係をツリー状で表示
u プロセスの実行ユーザ名も表示
x 制御端末の無いデーモン等のプロセスも表示
-e 全てのプロセスを表示
-f 完全なフォーマットでプロセスを表示
-p または p PID PID 指定したPID(プロセスID)のプロセス情報を表示
-l または l 親プロセスのPID (PPID)や実行優先度を決定するnice値(NI)なども併せて表示

※「-」を付けないBSDオプションと、「-」で始まるUNIXオプションがある

また、表示形式は異なりますが「pstree」コマンドでもプロセスの親子関係をツリー状で表示できます。

17. killコマンド

killコマンドで、プロセスに終了や再起動などのシグナル(命令)を送ることができます。 killコマンドはプロセスID(PID)を使用して単一のプロセスにシグナルを送ります。

書式)

kill [-シグナル名または-シグナル番号] プロセスID
または
kill -s [シグナル名またはシグナル番号] プロセスID

シグナル

シグナル名 シグナル番号 動作
HUP(SIGHUP) 1 ハングアップ(端末の切断による終了)
INT(SIGINT) 2 割り込みによる終了(CtrltCキー押下と同様)
KILL(SIGKILL) 9 クリーンアップせずに終了(強制終了)
TERM(SIGTERM) 15 クリーンアップして終了(デフォルト)
ICONT(SIGCONT) 18(環境依存) 一時停止のプロセスを再開
STOP(SIGSTOP) 19(環境依存) 一時停止
TSTP(SIGTSTP) 20(環境依存) 端末から入力された一時停止(CtrltZキー押下と同様)

例)

kill -SIGHUP 1133

例)

killall -SIGHUP mycommand

また、killコマンドはジョブ番号を指定し、ジョブにシグナルを送る事もできます。ジョブ番号は「%ジョブ番号」と指定します。

例)

kill %2

★最後に

いかがでしたでしょうか?
今回は「Linux標準教科書 -Ver. 3.0.4-」 で学習した中からピックアップしたコマンドについて自分なりにまとめてみました。
気になった方は是非読んでみては如何でしょうか?

Vimの基本操作について

皆様こんにちは。MMです。

今回は私が近頃学んだ「Vimの基本的な操作について」書いていこうと思います。
Vimとは、Linux向けのテキストエディタです。Linuxにはほぼ入っています。
Vimの操作がわからないという方」や「Vimの操作を忘れてしまったという方」のお役に立つことが出来れば幸いです。

★基本的な操作コマンド

1. モードの切り替え

vimは下記の4つのモードを切り替えて操作を行います。
・インサートモード:文字を入力する際に使用します。
・コマンドモード:保存等のコマンドを実行する際に使用します。
ノーマルモードvimを起動した時の最初のモードです。コピー等の操作を行う際に使用します。
・ビジュアルモード:範囲選択を行う際に使用します。

コマンド 実行結果
vim 起動
i インサートモード
a カーソル位置の次の
文字からインサートモード
o 選択行の下に空白を入れ、
インサートモード
O 選択行に空白を入れ、
インサートモード
: コマンドモード
esc ノーマルモード
v ビジュアルモード

2. カーソルの移動(ノーマルモード)

コマンド 実行結果
k ↑(上)に移動
j ↓(下)に移動
h ←(左)に移動
l →(右)に移動

3. 保存、終了(コマンドモード)

コマンド 実行結果
:w ファイル名 名前を付けて保存
:w 上書き保存
:q 編集終了
:q! 保存しないで終了
:wq 保存して終了
:!コマンド コマンド実行
:!! 1つ前と同じコマンドを実行

4. 削除(ノーマルモード)

コマンド 実行結果
x 1文字削除
dd 1行削除
dw 単語の削除
数値 dd 数値に入力した分の行を削除

5. undo

コマンド 実行結果
u Undo(戻る)
Control + r Undo redo
(Undoした操作を再度実行)

6. コピー、ペースト

コマンド 実行結果
yy 1行コピー
p カーソル位置下の行にペースト
P 現在行にペースト
2 yy 2行コピー
.(ピリオド) 直前のリピート

7. 応用的な移動、表示

コマンド 実行結果
:set number 行番号を表示する
:数値 入力した数値の行に移動する
$ 業末に移動
0 先頭に移動
^ インデントの先頭に移動
{ 段落ごとに上に移動
} 段落ごとに下に移動
[[ セクションごとに移動
]] セクションごとに下に移動
1 or gg ファイルの先頭に移動
G ファイルの最後に移動
Control + o 移動前に戻る

8. 検索、移動、置換

コマンド 実行結果
/検索したい文字列 検索(/の後の文字列を検索する)
n 次の検索結果に移動
N 前の検索結果に移動
R 置換
:%s/検索したい文字列/置換したい文字列/g 一括置換
:%s/検索したい文字列/置換したい文字列/gc 確認しながら置換

9. 行の連結、インデント、応用的なコピー

コマンド 実行結果
J(ビジュアルモード) 行の連結
>(ビジュアルモード) 右にインデントを移動
<(ビジュアルモード) 左にインデントを移動
y(ビジュアルモード) カーソル指定コピー

★最後に

いかがでしたでしょうか?
私自身まだ全然使いこなせていません( ; ; )
この他にもまだコマンドはありますので、使いこなして作業を効率化していきたいですね!
では今回はこの辺りで終わりとさせていただきます。

『「プロになるためのWeb技術入門」 ――なぜ、あなたはWebシステムを開発できないのか』用語まとめ

今回はWeb技術の基本を学ぶために「プロになるためのWeb技術入門」 ――なぜ、あなたはWebシステムを開発できないのか』を読みました。
今回は上記の書籍を読み、個人的に特に重要だと思った用語だけをまとめていきます。

★個人的重要用語

・ステートフル
以前にユーザーが操作した情報を保存しておき、後にその情報をそのまま活用できる状態にしておくことをいいます。
例としてオンラインショップがわかりやすいでしょうか?
買い物をする際にメールアドレスやパスワード、クレジットカードの番号等を一時的に保存しておきます。そうすることで次回は上記の情報を入力せずにすぐに買い物を行うことができるということです。

・ステートレス
ステートフルとは逆に以前にユーザーが操作した情報を保持しない状態のことをいいます。そのため、その都度情報の入力が必要となります。

・リクエス
クライアントからサーバに対する応答のことをいいます。
(現在のコンピュータシステムには「クライアント・サーバモデル」という形態が幅広く利用されています。「クライアント」と「サーバ」という言葉はそれぞれコンピュータ上で操作するソフトウェアを指し、「client(お客様)」と「server(仕える人)」というそのままの意味の英語が語源になっています。)

・レスポンス
サーバーからクライアントに対する応答をいいます。

Cookie(クッキー)
Webブラウザに状態を持たせる技術で、WebアプリケーションとWebブラウザの間で情報を交換できるようにしたものをいいます。

プロトコル
取り決めのことをいいます。プロトコルには様々なものがあります。
例)HTTP(Webブラウザで利用)、SMTPPOP3(電子メールで利用)

・ポート番号
TCP/IPで宛先を指定するために使用される番号のことをいいます。
0~65,535までの数字で表され,同じポートを複数のアプリケーションが利用することはできません。
代表的なプロトコルで使用されるポートは「ウェル・ノウン・ポー(wellknownports)」(よく知られたポート)と呼ばれています。
例)HTTP: 80番

★最後に

私自身Webに関する学習はほんの数ヶ月しか行っておりません。
ですが今回読んだ書籍には今後色々なことを学習していく中で基本となり重要な知識が詰め込まれているように感じました。
是非気になった方はお手に取ってみてはいかがでしょうか。

JavaScriptとRubyのコードの差異について ~1時限目~

私自身プログラミングに触れ始めてからまだ1ヶ月も経っていません。
アウトプットのいい機会であり、整理しておきたいと思い今回ブログでのアウトプットに挑戦してみました。
現時点でインプットした知識の中でも混同してしまいそうな「JavaScriptRubyのコードの差異について」今回は記載していきたいと思います。
1回で全てを網羅するとなると長くなってしまうと思いますので、何回かに分けて記載していきたいと思います。

JavaScriptは以後「JS」と記載させていただきます。

★各言語でのコードの差異

1. 出力(表示)

Ruby 

puts "Hello World"

・JS 

console.log("Hello World");

それぞれ「puts」と「console.log」で出力させています。
Rubyでは「;(セミコロン)」が必要なく、JSでは「();」が必要です。  

2. コメント

Ruby 

# puts "こんにちは"

・JS

// console.log("こんにちは");

それそれ文頭に「#」や「//」をつけることでコメント化することができます。

3. 変数の定義

Ruby 

name = "Mizuki"

・JS 

let name = "Mizuki";

JSでは変数を定義する際に「let」を記載しますが、Rubyでは必要ありません。

4. 変数の使用

Ruby(変数展開) 

name = "暁山"
puts "こんにちは#{name}さん"

・JS(テンプレートリテラル) 

const name = "暁山";
console.log(`こんにちは、${name}さん`);

上記のように書くことで文字列中に変数を含めることができます。
Rubyでは「"(ダブルクォーテーション)」で囲み「#{変数名}」としますが、JSでは「`(バッククォーテーション)」で囲み「${変数)」とします。

5. 条件分岐

①if文、else、elsif、else if
Ruby 

score = 90
if score > 80
   puts "よくできました"
elsif score > 60
   puts "まずまずです"
else
   puts "頑張りましょう"
end

・JS 

const number = 90;
if (number > 90)  {
   console.log("よくできました");
} else if (number > 60) {
   console.log("まずまずです");
} else {
   console.log("頑張りましょう");
}

JSはRubyとは異なり条件式を「()」、処理部分を「{}」で囲っています。
対してRubyはif文の終わりに「endと記載します。また条件追加の部分ではRubyでは「elsif」、JSでは「else if」と書きます。

★最後に

今回は1時限目ということで一旦区切らせていただきます。
ブログ自体初めてで右往左往しながらでしたが、なんとか書くことができました。
今後もブログの見た目や文章等の技術も高めつつ、継続していきたいと思います。