Linuxコマンド
お久しぶりです。かぎしっぽです。
ブログを更新できないでいる間に年の瀬になってしまいました。皆さんはお元気でお過ごしでしょうか?
今回はLinuxコマンドについて書いてみたいと思います。
LinuxはWindowsやMacOSなどと並ぶOSの一種ですが、見たことないよ! という方も多いと思います。
システムやネットワークの世界を支える、裏方とか縁の下の力持ちといった意味合いの強いOSなのです。
そしてLinuxはマウスではなく、コマンド(指令、命令)を入力することで色々な操作をすることができます。
コマンドはたくさんありますが、特に重要なものをご説明しますね。
これが使えるようになると「ネットワーク技術者です!」な雰囲気を味わえますよ(^▽^)/
まずは基本操作系
pwd(print name of working directory)
今いるディレクトリ(情報を入れる場所。フォルダに近いです)を表示します。
あれ? 今どこだっけ? と思ったら使いましょう。
書式:pwd [オプション] 具体例: $ pwd /home/kagishippo
今はホームディレクトリ直下のkagishippoディレクトリにいることが分かります。
なおオプションは指定しなくても構いません。
cd(Cange Directory)
ディレクトリ移動。今とは別の場所を作業する時はこのコマンドを使います。
書式:cd [オプション] [ディレクトリ構造] 具体例: $ cd ../kuro
ここで再びpwd
を実行すると……
$ pwd /home/kuro
元いた kagishippo ディレクトリから、同じ階層の kuro ディレクトリに移動できました。
ls(list)
ファイルやディレクトリの一覧を表示。このディレクトリには何があるか知りたい時に使います。
書式:ls [オプション] [ディレクトリ・ファイル名] 具体例: $ ls memo1.txt
今いるディレクトリには「memo1」というテキストファイルがあるようです。
オプションについて
コマンドにはオプションをつけられます。オプションをつけると、対象を絞ったり、もっと細かい情報を表示したりと色々便利です。
ls コマンドでよく使われるオプションに-a
があります。これをつけると隠しファイルも全部表示されます。
さっそくさっきのコマンドに加えてみましょう。
具体例: $ ls -a memo1.txt .log
頭に「.」がついている隠しディレクトリが一緒に表示されました。
他には-l
というオプションでファイルの詳細情報を表示することもできます。
mkdir(make directory)
ディレクトリを指定した名前で作ります。
書式: mkdir [オプション] <作成するディレクトリ名> $ mkdir child
ls
を再度実行します。
$ ls child memo1.txt
元々あった「memo1.txt」に加えて「child」ディレクトリが表示されました。(今回は-a
のオプションをつけていないので、隠しディレクトリの「.log」は表示されません)
touch
ファイルを指定した名前で作ります。中身は空です。
既に同じ名前のファイルがある場合はタイムスタンプだけ更新して中身は変更し
ません。
書式: touch <ファイル名> $ touch newfile.txt
ls
コマンドを実行すると、今作った「newfile.txt」が表示されます。
cat(concatenate:連結する の意味)
ファイルの中身を表示したり、複数のファイルを繋げるのに使います。
書式: cat [オプション] <ファイル名> $ cat frends.txt kuro chatora mike
frends.txtの中身が表示されました。
行番号を表示
オプションの-n
を使うと、行番号を表示できます。
$ cat -n frends.txt 1 kuro 2 chatora 3 mike
tail
ファイルの後ろから10行だけ表示させます。
書式: tail [オプション] <ファイル名> $ tail list.txt No.91 qqq No.92 rrr <中略> No.100 zzz
指定した行数を表示
オプションの-n
に続けて数字を入力すると、指定した行数を表示できます。
$ tail -n 15 list.txt No.86 lll No.87 mmm <中略> No.100 zzz
ファイルの頭からは表示できないの?
はいできます。その場合はtail
の代わりにhead
を使って下さい。
$ head -n 3 list.txt No.1 aaa No.2 bbb No.3 ccc
冒頭3行分が表示されました。
tail
コマンドを知っていれば簡単ですね♪
less
別画面でファイルの中身を表示します。情報量が多い時はcatよりこちらの方が便利です。
書式: less [オプション] <ファイル名> (オプションはほぼ使いません) $ less many.txt
別画面で内容が表示されます。
lessで表示された画面で使えるコマンド例はこちらです。
b:前の画面に戻る
f:次の画面に進む
↑ ↓もしくはJ k:上下の行に移動
q:元の画面に戻る
/<文字列>:下方向に向かって指定した文字列を検索
mv(move)
ファイルを移動したり名前を変更します。
書式:mv [オプション] <移動元> <移動先> 具体例: $ mv newfile.txt test/
これでnewfile.txt
は同じディレクトリ内のtest
ディレクトリに移動します。
次はファイル名変更です。
書式:mv [オプション] <元のファイル名> <新しいファイル名> 具体例: $ mv newfile.txt newfile2.txt
これでnewfile.txt
がnewfile2.txt
に変わります。
なおもし先にnewfile2.txt
が作られていると上書きされますので注意して下さい。
この場合はオプションの-i
をつけておくと、上書きする前に確認してくれます。
$ mv -i newfile.txt newfile2.txt
find
ファイルがどこにあるか探して教えてくれます。
書式:find <検索開始ディレクトリ> <検索条件> <アクション> 具体例: $ find . -name newfile2.txt -print ./test/newfile2.txt
この場合は
検索開始ディレクトリ:.
を指定しているので、今いる場所を元にして検索
検索条件:オプション -name
をつけているのでファイル名を指定して検索します。ファイル名は newfile2.txt
です。
アクション:-print
見つかったらそのファイルのパス(場所)を表示
となります。
検索結果が./test/newfile2.txt
なので、今いる場所にある「test」ディレクトリの中にあるようです。
なおパス(Path)とは特定のファイルまでの道順、通り道ですが、詳しく知りたい方はこのあたりを参照してみて下さい。
オプション少し
find
はさまざまなオプションがありますので少しだけご紹介します。
-name:ファイル名を指定して検索。ファイル名の大文字小文字は区別する
-iname:ファイル名を指定して検索。大文字小文字を区別しない
-type:ファイルの種類で検索
-f:通常のファイル
-l:シンボリックリンク ※シンボリックリンクは「ln」コマンドの項目でご紹介します
-d:ディレクトリ
rm(remove)
ファイルを削除します。
書式: rm [オプション] <ファイル名> 具体例: $ rm newlife.txt
ls
コマンドを実行すると、「newfile.txt」が消えているのが分かります。
なお一度消したら戻せません!
オプション
このコマンドにはよく使うオプションがいくつかあります。
-r:ディレクトリが削除できるようになります。その中にファイルやディレクトリがあればそれも消します
-f:警告なしで削除を実行します。使う時は要注意です!
-i:削除前に確認してくれます
rmdir(remove directory)
ディレクトリを削除します。
書式: rmdir [オプション] <ファイル名> 具体例: $ rmdir empty
ls
コマンドで確認すると、empty
ディレクトリが消えています。
ディレクトリ内にファイルやサブディレクトリがある場合はオプション-r
をつけます。
なおrm
同様、一度削除したものは中のファイル類も含めて復活できないので要注意です。
cp(copy)
ファイルのコピーをします。
書式:cp [オプション] <コピー元> <コピー先> 具体例: $ cp original.txt copy.txt
original.txt をコピーして copy.txt が作られます。
なおコピー先のファイルがすでにある場合は上書きするので注意して下さい。
オプションの-i
をつけておくと上書き前に確認してくれます。
またcp
はファイルが対象ですが、オプションの-r
をつけるとディレクトリ内の全てのファイル・ディレクトリをまとめてコピーします。
ln(link)
ファイルにリンクを貼ります。
Linux のリンクは Windows のショートカットのようなものですので、
ファイルにショートカットを設定する、と言い換えた方が良いかもしれません。
書式:ln [オプション] <リンク元ファイル名> <リンク名> 具体例: #study20231228.txt に latest というシンボリックリンクを貼ります $ln -s study20231228.txt latest
補足 ハードリンクとシンボリックリンク
リンクの一番メジャーな使い方は↑でご紹介した通りですが、もう少しだけ踏み込んでご説明します。
興味のある方は下記ご覧ください。
シンボリックリンクはWindowsのショートカットに当たりますが、ハードリンクは別名です。
例えば
ln memo.txt memo_today.txt
とオプションなしで実行するとハードリンクになります。
別名なのでmemo.txt
も memo_today.txt
も同じファイルですし、どちらかを編集するともう片方も変更されます。
ただし片方だけ削除しても、もう片方はそのまま残ります。シンボリックリンクはリンク元を消すとリンク先からは元データを参照できなくなるので、ここは大きな違いですね。
更に勉強したい方はこちらも参照してみて下さい。
プロセス管理系
プロセスとは実行中のプログラムのことです。
Linuxではたくさんのプロセスが実行されます。それをコントロールするコマンドのうち2つだけご紹介します。
ps(process status)
実行中のプロセスとその状態を表示してくれるコマンドです。
書式:ps [オプション] 具体例: $ ps PID TTY TIME CMD 3935 pts/0 00:00:00 ps 20961 pts/0 00:00:00 bash
PID
から始まるのは項目行です。
その次の数字から始まる行がそれぞれ1つのプロセスです。
ここでは今実行したps
ともう一つbash
のプロセスが実行中であることが表示されています。
項目一つ一つの意味が気になる方は↓ をどうぞ。
TTY:端末
CMD:実行中のコマンド
TIME:CPU(端末の演算装置、心臓部ですね)の実行時間
なおオプションのu
(ハイフンはいりません)で詳細を表示してくれます。
a
をつけると全てのユーザーのプロセスを、x
をつけるとpsコマンドを実行したユーザーの全てのプロセスを表示します。
合わせ技でps xau
とすると全ユーザーのプロセスを詳細情報付きで表示してくれます。
kill
プロセスやジョブ(プロセスをひとまとめに実行すること)を終了させます。
色々な作業をしていると、エラーが出たりマシンが重くなったりしますが、そうした時にこのコマンドでプロセス等を終了させることがあります。
書式: kill [オプション] %<ジョブID> kill [オプション] <プロセスID> 具体例: $ kill %1 $ kill 4965
権限関係
会社支給のPCや子供に持たせるスマホは操作が制限されていることがありますが、
Linuxではこの制限に関する概念がとても強いです。ログインユーザーごとの制限以外にも、ファイルやディレクトリごとにパーミッション(アクセス権限)という形で細かい設定ができます。
こうすることでシステムや情報を守って安全に運用できるようにしているのです。
権限に関する記号
先に権限を表す記号をお知らせしておきます。
ファイル種別
-:ファイル
d:ディレクトリ
l:シンボリックリンク
パーミッション(権限)
r(read):読み取り権限
w(write):書き込み権限
x(execute):実行またはディレクトリの移動権限
ここではこのパーミッションに関するコマンドを2つご紹介します。
chmod(change mode)
ファイルやディレクトリのアクセス権限を変更します。
なおこの操作はroot(管理者)権限かファイル所有者しかできません。
書式:chmod <ファイルモード> <ファイル名> 具体例: $ chmod -rwxr-xr-- sample.txt
sample.txt
の権限を-rwxr-xr--
にしました。
……と言っても「???」ですよね。
もう少し詳しくご説明しますね!
ファイルモード詳細
先ほどの-rwxr-xr--
はそれぞれ以下の意味を持っています。
最初の1文字目:ファイル種別。今回は-
なのでファイルであることが分かります。
2~4文字目:所有者の権限。rwx
なので読み取り、書き込み、実行全部OKです。
5~7文字目:所有グループの権限。r-x
なので読み取りと実行ができます。
8~10文字目:その他に対する権限。r--
なので読み取りしかできません。
例えば所有者以外は全部読み取りしかできないようにする場合は次のように記述します。
$ chmod -rwxr--r-- sample.txt
ちなみに先にご紹介したls
コマンド(指定場所のファイル類を一覧表示するコマンド)に-l
のオプションをつけることで、パーミッション情報を見ることができます。
$ ls -l sample.txt -rwxr--r-- 1 kagishippo staff 35 12 28 18:08 sample.txt
chown(change owner)
ファイルやディレクトリの所有者を変更します。
先ほどの「sample.txt」の所有者を「kagishippo」から「kuro」にしてみます。
この操作はroot(管理者)権限が必要です。
書式:chown [オプション] <新しい所有者名> <ファイル名> 具体例: $ chown kuro sample.txt
ls -s
で詳細情報を表示してみます。
$ ls -l sample.txt -rwxr--r-- 1 kuro staff 35 12 28 19:11 sample.txt
無事に所有者が変わりました。
他にオプションとして-R
でディレクトリを対象にしてみたり、-c
で変更があった時にメッセージを表示したり、とさまざまなことができます。
終わりに
大変長くなりましたが、ひとまずここまでとしたいと思います。
ご紹介したのはごく一部ですが、これだけでもかなり色々なことができると思います。
もし機会があったら皆さんも色々試してみて下さいね。
では皆さん良いお年を(^▽^)/
Vimを試してみました
こんにちは。かぎしっぽです。
急に秋らしくなってきましたね。皆さんはお変わりないでしょうか?
私は最近Vimをいじっていました。
「ん? Vimって何?」
と思われた方。
Vimはテキストエディタの一種ですが、主な活躍場所がUnixやLinux環境なので、馴染のない方が多いと思います。私も情報系の今の部署に来るまで知りませんでした。
でもこのVim、なかなか面白いのです。今日は自分の勉強がてら少しだけご紹介したいと思います。
ダウンロード
まずは実際に使ってみたいと思います。
なおここではWindows機を対象とします。
Vimの導入方法はいくつかあるのですが、一番簡単なのは香り屋さんのサイトから香り屋版Vimをダウンロードさせて貰うことです。
上記のリンクからダウンロードできたら解凍して、出来たフォルダにあるvim.exeかgvim.exeをダブルクリックすれば起動します。簡単です♪
Vimの特徴とモード
さて早速入力したいところですが、先にVimのモードについてご説明します。これが分からないと編集できないからです。
Vimの特徴はマウスを使わないで操作できること、そして動作が軽いことです。
そしてマウスなしで操作するために都度、モードを切り替えます。
モードには入力(だけ)に特化した インサートモード と、カーソル移動を含めた各種指示をする ノーマルモード、また今回は扱いませんが、文字選択ができる ヴィジュアルモード があり、使い分けることで効率良く入力・編集作業することができます。
- Escキーを押すとノーマルモード
- i を押すとインサートモード
になります。
いよいよ入力
さて、では一度「Esc」キーでノーマルモードにしましょう。うっかりモードが変わっていると動作が変わってしまうので、きっちりとモードを確定しておくのです。
それから「i」を押してインサートモードにします。
一番下の[無名]と表示された黒いバーの下に「-- 挿入 --」が表示されたと思います。表示されていればちゃんとインサートモードになっています。
この状態で「半角/全角」キーで日本語入力できる状態にしてから
僕は黒猫です。
と入力してみて下さい。
最初に表示されていた説明文が消えて、入力した文字だけが表示されたと思います。
次に日本語入力をオフにしてからEscキーでノーマルモードに戻ります。
ノーマルモードはVimの基本モードです。何かあったらこのモードに戻るようにします。
文字の編集
次に先ほどの文章を少し編集します。
「僕は黒猫」の後に「のタンゴ」を追加したいと思います。
今は文字列の最後の「。」が緑色になっているかと思いますのでカーソルを移動したいのですが、このような時もノーマルモードの出番です。
先ほどノーマルモードにしたのでこのまま移動できますね。
なおVimでは矢印キーも使えますが、以下のアルファベットのキーも使えます。慣れればこちらの方が速く編集できるようです。
h:左に移動
j:下の行に移動
k:上の行に移動
l:右に移動
キーが横並びで分かりやすいですね。
さて今の行末の「。」が緑色になっている状態から「h」を2回押して「で」が緑色になるようにして下さい。
次に小文字の「i」を押してインサートモードにします。更に日本語入力モードにしてから「のタンゴ」と入力して下さい。
僕は黒猫のタンゴです。
となれば正解です。
もう一文追加しましょう。
文章の最後に「ダンスが得意です。」
と付け加えます。
カーソル位置を移動するので一度日本語入力モードをオフにして、「Esc」キーを押します。
右側への移動は「l」でしたね。何度か押してみると、あら? 最後の「。」が緑色になって文末まで行きませんね。これでは追加した文が「。」の前に入ってしまいます。
そんな時は大文字の「A」を押します。
カーソルが行内のどこにあっても一瞬で行末に飛んで、しかもインサートモードに切り替わってくれる便利コマンドです。
(ちなみに行頭に飛んですぐ入力する場合は大文字の「I」です)
では試してみましょう。きちんと行末に移動できたでしょうか?
またインサートモードに切り替わったでしょうか?
インサートモードなら、カーソル位置が緑の■ではなく、縦棒「|」状態になります。
また画面一番下に「-- 挿入 --」の文字が表示されます。
大丈夫そうなら日本語入力モードに切り替えて、文末に
「ダンスが得意です」と入力して下さい。
上手く行ったでしょうか?
もしおかしな文字を入力してしまったら、そこまで移動してノーマルモードで「x」を押すと、選択されている文字がカットされます。
保存と終了
さてここまでの内容を保存したいと思います。
ノーマルモードで
:w lesson.txt
と入力してみて下さい。
入力したコマンドは画面一番下、黒い帯の下に表示されます。
入力できたらエンターを押します。
黒い帯部分が今までの「無名」から「lesson.txt」に変わります。
本当に保存されたのを確認しましょう。
このgvim.exeが入っているフォルダの中を見て下さい。
「lesson.txt」が作られていると思います。適当なエディターで開くと中身を確認することができます。
:q!
と入力してエンターを押します。
これでvimを終了することが出来ました。
終わりに
いかがですか?
モードの切り替えがちょっと大変ですが、今ご紹介した機能だけでも慣れるとかなり便利です。
他にも指定行を丸ごと削除したり、一瞬で指定位置にペーストしたり、矩形選択したり(これは今回お話ししなかったヴィジュアルモードというモードで操作できます)、とたくさんのお役立ちコマンドがあります。
もし良かったら皆さんもどんどん試してみて下さいね!
ではまた。
Webサイトを見るということ
こんにちは! かぎしっぽです。
ここしばらく基礎勉強の一環で『プロになるためのWeb技術入門』――なぜ,あなたはWebシステムを開発できないのかを読んでいました。
これ、良いですね。通信の基本的な仕組みをとても分かりやすく解説してくれています。
ここに少しだけご紹介してみたいと思います。
プロトコル:まずは通信のお作法
私たちがブラウザでどこかのWebサイトにアクセスするとき、ブラウザとサイトの間ではせっせとデータのやり取りをしているのですが、その時のお作法(ルール)をプロトコルと言います。
たとえば役所で住民票をもらう時は、決まった用紙に決まった書き方で記入して係の人に渡すのがルールです。
メモ用紙に走り書きしたり名前を書かなかったり、アラビア文字やルーン文字(!)で書いたら係の人は困ってしまいます。
同じようにサイトにアクセスする時はHTTPというプロトコル(お作法)に則って通信することになっています。
ポート番号:届いたのはどんなデータ?
さてサイトへアクセスする時はHTTPプロトコル (お作法)でデータのやり取りをするのは分かりました。
けれども実はプロトコルは他にもたくさんあります。一番身近なものですとメールを受信するためのPOP3でしょうか。
そしてプロトコルごとに処理する担当者(アプリケーション)が決まっています。
その時に活躍するのがポート番号です。
データを送信する時は通常ポート番号が指定されます。するとコンピュータは届いたデータがどのプロトコルによるどのようなデータかを判断できるので、適切なアプリケーションに処理してもらうことが出来るのです。
このポート番号ですが、『プロになるためのWeb技術入門』では桟橋という言葉で紹介していました。
港にたくさんの桟橋(ポート番号)があって、各プロトコルが自分の桟橋でデータを待ち受けるイメージだそうです。
とても分かりやすい例えだと思いました。
◇ちょっと寄り道 主なプロトコルとポート番号
ここで少しだけプロトコルとポート番号をご紹介します。
なおポート番号は一定の範囲内で自分で決めることも出来ます。
ポート番号 | プロトコル |
---|---|
21, 22 | FTP(ファイル転送) |
25 | SMTP(メール送信) |
80 | HTTP |
110 | POP3(メール受信) |
443 | HTTPS(暗号化されたHTTP) |
リクエスト と レスポンス:これ見せて下さい!
さてブラウザはPCなどのコンピュータにインストールされていますが、このコンピュータのことをネットの世界ではクライアントと言います。言葉の通りお客様ですね。
お客様であるクライアントはWebサイトがあるサーバーに「このページが見たいです!」などと要求し、サーバー(直訳すると奉仕者とか使用人ですね)はそれに応えてクライアントのブラウザに必要な情報を渡してくれます。
もう少し詳しく言うなら、サーバーが送ってくれた情報はクライアント(コンピュータ)のポート番号80番や443番などに届けられ、ブラウザがその情報を解析して私たちにウェブページを表示します。
このクライアントとサーバー間での要求と応答のやり取りをリクエストとレスポンスと呼びます。
ステートレス と ステートフル あと クッキー:HTTPプロトコルの限界に挑戦!
ところでHTTPはとてもシンプルなプロトコルです。シンプルイズベスト、という言葉通りそれがとても便利でもあるのですが、苦手な部分も持っています。
特に困るのがやり取りが1回限りで完結してしまい、前の状態を忘れてしまうことです。
この性質を状態(ステート)を保つことができないプロトコル、ステートレス・プロトコルと呼びます。
こんなイメージです。
かぎしっぽ:初めましてメモアプリさん。ユーザー登録しました。名前はかぎしっぽです。
メモアプリ:かぎしっぽさんこんにちは! ご利用ありがとうございます。
(1分後)かぎしっぽ:メモを書いたので保存して下さいな。
メモアプリ:あなたはどなたですか? まずログインかユーザー登録をお願いします!
かぎしっぽ:えええ???
さあ困りました。これではちょっと使えません。
ちなみにステートレスの逆、ステートフルつまり「状態を保つことができる」プロトコル(ステートフル・プロトコル)もちゃんとあります。
ファイルのやり取りに使われるFTPなどがそうです。こうしたプロトコルはクライアントがログインしたらきちんと同じユーザーと認識してやり取りし続けることができます。
ただこうしたプロトコルは通信の手続きが複雑で、HTTPのようにブラウザを立ちあげたらすぐにサイトを表示する、という訳には行きません。
そこでネット技術者の先輩方はあれこれ工夫をしてHTTPプロトコルでも「状態を保てる」方法を考えてくれました。その方法の一つがクッキーを使うものです。
クッキーとはサーバーがレスポンスの際にブラウザに送ってくる情報です。この情報は相手を識別する大事な手がかりです。
ブラウザは次にこのサーバー(Webサイト)にリクエストする際、このクッキーも一緒に送ります。
するとWebサーバーは相手がログイン中のユーザーであることを判別することができるのです。
かぎしっぽ:初めましてメモアプリさん。ユーザー登録しました。名前はかぎしっぽです。
メモアプリ:(ええと「ID:123」を発行。クライアントにもこれを送信っと)かぎしっぽさんこんにちは! ご利用ありがとうございます。
(1分後)かぎしっぽ:メモを書いたので保存して下さいな。
メモアプリ:(ん? リクエストの情報に「ID:123」があるな。そうするとこれはログイン中のかぎしっぽさんだな)はい分かりました。保存しておきますね。
何となくイメージが掴めたでしょうか?
今回、普段何となく見ているサイトも、たくさんの約束事と工夫で表示されていることが分かりました。
まだ見えているのはそのほんの一部ですが、これだけでも勉強して良かったなあと思います。
また何か分かったらご紹介しますね。
ではまた!
ご挨拶
はじめまして
かぎしっぽと申します。
営業事務で入った現職でSQLの習得を勧めて頂き、ここ数年は情報システム室の端っこでSQL絡みの仕事をしています。
クエリ、楽しいです。
膨大なデータから必要な情報を取り出したり加工したり。
クセのあるデータに振り回されつつも、何とか工夫して「こんなデータが欲しい」という依頼に応えるのはやりがいがあります。
ただ最近思うのです。
もう少し行動範囲を広げて色々やりたいなあ、と。
私の担当はSQLの中でもSELECT文でデータを取り出す業務が中心で、仕事としてほぼ独立しています。アプリ開発のように複数の技術者でチームを組んで何かをする、ということがありません。
また環境も、誰かが構築してくれたデータベースを使っているだけです。
何とかしようと独学でプログラミングの勉強もしてみましたが、どうにも続かず身に着かず。
困っているところに Hapiness Chain というプログラミングスクールを知り、この夏からそこで勉強しています。
まだ最初のインプット課題が終わったところで何ができるようになった、と言える段階ではないのですが、それでも周り中真っ白な靄で身動きが取れなかったのが、うっすらと明るくなって来ました。
このブログでは、そうした勉強に関するあれこれを投稿して行きたいと思っています。
もし目に留まったら読んでやって下さい。
よろしくお願いいたします。