yukiの日記 (original) (raw)

はじめに

どうも、yukiです。

この記事では既存のRailsプロジェクトをDocker化する手順をまとめてみました。

Dockerfileの作成

まずはプロジェクトに合わせたDockerfileを作成していきます。

私のプロジェクト例だと以下のようになります。

環境

FROM ruby:3.2.2

RUN apt-get update && apt-get install -y build-essential
libpq-dev
nodejs
postgresql-client

WORKDIR /myapp

COPY Gemfile Gemfile.lock /myapp/

RUN bundle install

RailsはGemfileを見てバージョンを決定するので、Dockerfileにコピーしておきます。 Postgresのクライアントもインストールしておきます。

docker-compose.ymlの作成

volumes: db-data:

services: web: build: . platform: linux/amd64 command: > bash -c "rm -f tmp/pids/server.pid && bundle exec rails server -b '0.0.0.0'"

ports:
  - '3000:3000'
environment:
  - 'DATABASE_PASSWORD=postgres'
volumes:
  - .:/myapp
tty: true
stdin_open: true
depends_on:
  - db
links:
  - db

db: image: postgres:12 platform: linux/amd64 volumes: - 'db-data:/var/lib/postgresql/data' environment: - 'POSTGRES_PASSWORD=postgres' - 'POSTGRES_USER=postgres'

mac m1チップ環境ではplatform: linux/amd64を指定しないとエラーが出ると聞きましたので、明示的に指定しました。

これを指定すると動作が重くなってしまうという話も耳に入りましたが、今回は目を瞑ります。

start.shの作成

#!/bin/bash

docker compose build

docker-compose run --rm web rails db:prepare

docker-compose up

廉価版entrypoint.shのようなものです。ビルド、データベースの作成、サーバーの起動を行います。

このアイデアはいまいちで、せっかくならちゃんとENTRYPOINTで実装すべきでした。

実行

./start.sh

localhost:3000でサーバーが起動していれば完了です。これでRailsプロジェクトがDocker化されました。

以降はbuildが必要なければ、docker compose upで起動します。

おわりに

次は自分の開発環境をDocker化するか、課題を進めるか迷っています。もっとDockerの理解度を深めたいので前者にだいぶ傾いています。

どうも、yukiです。

この記事では9月の学習の振り返りをしていきます。

9月の学習時間

結果: 115h

9月の後半は義父の会社を1週間ほど泊まりがけで手伝いに行ったので、全体としての学習時間は少なくなってしまいました。

その間Windowsの作業環境しかなかったので、WSL2を使ってLinux環境を構築しました。

隙間時間はvimの環境構築とDockerの勉強を8:2で行いました。スニペットやlspなどの設定を行い、少しずつvimに慣れてきました。

9月に取り組んだ学習

よかったところ

改善点

妻との協議で土日の学習が厳しくなったので、平日の学習効率を高めることを意識していきたいです。

10月の目標

先月の目標であった月160h↑が達成できていないので、引き続き達成を目指して取り組んでいきます。

はじめに

どうも、yukiです。

今回はGitHub Pagesの使い方について簡単にまとめてみました。

GitHub Pagesとは

自分のPC等で作成したWebページを簡単にインターネット上に公開できるサービスです。

Webページの公開方法

流れを簡単にまとめると以下のようになります。

それでは、実際に手順を見ていきましょう。

GitHubのアカウントを作成する

リポジトリを作成する

リポジトリにWebページのファイルをアップロードする

ここから少し難しいです。GitHub Pagesの設定をするためには、リポジトリにWebページのファイルをアップロードする必要があります。

公開したいhtmlファイルがフォルダのすぐ下(直下)にないと、ややこしい手順を踏むことになります。

以下のような構造なら問題ありません。

ターミナルにフォーカスを当て、cdと入力して半角スペースを入力し、作成したフォルダ名を入力後 Enterを押します。

ターミナルは開いたままにしておいてください。

git add . git commit -m "main commit" git push origin main

GitHub Pagesの設定をする

おわりに

はじめて自分のページを公開できた時の達成感、それはもう感動もひとしおですよね!

僕は嬉しさのあまりXでいっぱいツイートしちゃいました、、!

はじめに

どうも、yukiです。

今回は最近使用したgit コマンドをまとめてみました。

git pushを取り消す

$ git reset --soft HEAD^

$ git push -f origin HEAD

Pull requestに記録が残っていることを示す写真

Pull request上では記録に残っていました。

削除したリモートブランチがローカルに残ってる

$ git fetch --prune ( git fetch -p )

[fetch] prune = true

参考

おわりに

ガチャガチャしているうちに、座学で得た知識の定着が始まってきました。HEAD、index、リモート/ローカルブランチとか。

git revertの理解が浅いので、どっかで実験したいなあ。

どうも、yukiです。

この記事では8月の学習の振り返りをしていきます。

8月の学習時間

結果: 137.1h

後半は失速気味でしたが、初月としては及第点かなと自己評価しています。

何事も習慣をつけることは大変ですが、課題の内容・順序が秀逸でストレスなく知識を身につけることができています。

8月に取り組んだ学習

よかったところ

ターミナルの認識が「難しげな黒い画面」から「作業を楽にしてくれるツール」の認識に変わったこと、単純ですがこれまたいい成果だなと感じています。

GItもVimにも言えることですが、難しそうで手が伸びなかった存在に軽々と足を踏み入れられるようになったことを大きな成長と捉えています。

あとは英語の情報にも気後れしなくなったことですね。最近ではtmux split-windowで-pを指定すると"Size missing"になる原因を日本語情報で見つけられず、以下のIssueで解決しました。

tmux Issue

改善点

学習時間が足りていないように感じるので、日曜以外は毎日学習できるように取り組んでいきたいと思います。

9月の目標

上記の継続を意識しながら、月160h↑学習時間を取りたいです。

はじめに

どうも、yukiです。

この記事では、Linuxの基本的なコマンドについてまとめてみました。

1. cd コマンド

$ cd [オプション] ディレクトリ

2. pwd コマンド

$ pwd # 例えば /home/user/Documents と表示される

3. ls コマンド

$ ls [オプション] ディレクトリ

$ ls -la /home/user/Documents total 19 drwxr-xr-x 3 user user 4096 Aug 19 12:00 . drwxr-xr-x 15 user user 4096 Aug 19 10:00 .. -rw-r--r-- 1 user user 50 Aug 19 10:30 .hiddenfile

4. mkdir コマンド

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

$ mkdir new_folder1 $ mkdir -p /home/user/Documents/new_folder2

以下は-pを指定していないのでエラー

$ mkdir /home/user/Documents/new_folder_error

5. rmdir コマンド

$ rmdir ディレクトリ名

$ rmdir old_folder

using_folderディレクトリが空でない場合、以下はエラー

$ rmdir using_folder

6. cat コマンド

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

file1.txtとfile2.txtを結合してcombined.txtに出力

既に出力先のファイルがある場合、上書きされるので注意

$ cat file1.txt file2.txt > combined.txt

7. less コマンド

$ less ファイル名

8. tail コマンド

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

$ tail -n 30 file.txt # 最後の30行を表示

9. touch コマンド

$ touch ファイル名

10. rm コマンド

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

警告メッセージなしにディレクトリを強制削除。非常に危険なコマンド!!

$ rm -rf directory/

11. mv コマンド

$ mv [オプション] ソース 目標

ソースに存在しないファイル/ディレクトリ名を指定した場合、目標の名前に変更

$ mv oldname.txt newname.txt

ソースに存在するファイル/ディレクトリ名を指定した場合、目標へ移動

$ mv file.txt /home/user/Documents/

12. cp コマンド

$ cp [オプション] ソース 目標

file.txtを目標へコピー

$ cp file.txt /home/user/Documents/

directory/ を目標へコピー

$ cp -r directory/ /home/user/backup/

13. ln コマンド

$ ln [オプション] ソース リンク名

使用例

$ ln -s /home/user/file.txt /home/user/link.txt

リンクの種類

14. find コマンド

$ find 検索パス [オプション] 検索ディレクトリ/ファイル名

user/の拡張子が.txtのものを表示

$ find /home/user -name "*.txt"

log/の拡張子が.logのファイルを表示

$ find /var/log -type f -name "*.log"

15. chmod コマンド

$ chmod [オプション] パーミッション ファイル名

所有者に読み書き実行、その他に読み取り権限を付与

755 = それぞれのパーミッションを8進数表記で足して指定

$ chmod 755 script.sh

-rwxr--r-- 1以降の2単語で確認できます。順にオーナー、グループです。

$ ls -l /home/user/Documents -rwxr--r-- 1 owner group 4096 Aug 19 12:00 .

-rwxr--r-- は、パーミッションフィールドです。最初の一文字はファイルの種類を意味します。

フィールド 説明
- 通常のファイル
d ディレクト
l シンボリックリンク

二文字目以降は、所有者、グループ、その他ユーザーのパーミッションを表しています。

フィールド 所属 説明
rwx 所有者(オーナー) 読み取り (read)、書き込み (write)、実行権あり (execute)
r-- グループ 読み取り (read) のみ
r-- その他のユーザー 読み取り (read) のみ

読み方の例として、-rwxr--r--パーミッションフィールドの意味を紐解いてみます。

フィールド 説明
- 通常のファイル
rwx 所有者(オーナー)は、読み取り、書き込み、および実行が可能
r-- グループは、読み取りのみ可能
r-- その他のユーザーも、読み取りのみ可能

16. chown コマンド

$ chown [オプション] 新しい所有者/グループ ディレクトリ/ファイル名

$ chown user:group file.txt

17. ps コマンド

$ ps [オプション]

-はいらない

$ ps aux

18. kill コマンド

$ kill [オプション] プロセスID

おわりに

Linuxでは--helpmanコマンドで正確なコマンド情報を得ることができるので、まずはこれらのコマンドを試してみましょう!

もし誤記、間違い等ありましたらご指摘よろしくお願いいたしますm(__)m

はじめに

どうも、yukiです。
今回は最近vimに入門した自分が、基本操作についてまとめてみました。

vimとはテキストエディタの一種です。コマンドを駆使することで、キーボードのホームポジションからほとんど動かずに操作ができるといった特徴があります。

これからvimを学習しようという方は、まず「vimtutor」から取り掛かることをおすすめします。

↓ターミナルに以下のように入力し、エンターを押して始めます。

$ vimtutor

このチュートリアルの文章自体をvimで編集しながら進めていくので、ハンズオンでvimの使い方を学ぶことが出来ます。

紹介が終わったところで、さっそく本題へ参りましょう!

基本操作

モードについて

モード 説明 切り替えキー
ノーマルモード カーソル移動やコマンド実行を行うモード esc
インサートモード 文字入力を行うモード i
ビジュアルモード 範囲を指定するモード v
コマンドモード 指定のコマンドを入力するモード :

コマンドについて

例. 5h → カーソル位置から5つ左に移動、4dd → カーソル位置から4行削除

起動

コマンド 説明
vim hoge.txt hoge.txtを開く(読み書き可能)

カーソル移動

コマンド 説明
h 左にカーソル移動
j 下にカーソル移動
k 上にカーソル移動
l 右にカーソル移動
w 次の単語へ移動
b 前の単語へ移動
e 次の単語の最後へ移動
^ 行頭へ移動
$ 行末へ移動
gg ページの一番上に行く
G ページの一番下に行く

入力

コマンド 説明
i カーソル位置から入力
a カーソル位置の次の文字から入力
o 改行して入力
O 上に行を挿入して入力
A 行の最後から入力
I 行の最初から入力

削除/変更

コマンド 説明
x カーソル位置の文字削除
dw 次の単語まで削除
dd カーソルがある行を削除
d$ カーソルがある行のカーソルより後ろを削除
ce 単語の末尾まで変更
cc 行全体を削除してインサートモードに入る

コピー/ペースト

コマンド 説明
y コピー
yy カーソルがある行をコピー
p カーソルの後ろにペースト
P カーソルの手前にペースト

検索/置換

コマンド 説明
/hoge hogeを下方向検索
?hoge hogeを上方向検索
n 次の検索結果に移動
R カーソル位置から入力した文字で既存のテキストを置換
:s/変更前の単語/変更後の単語 カーソル行の最初にある変更前の単語を変更後の単語に置換
:s/変更前の単語/変更後の単語/g カーソル行の全ての変更前の単語を変更後の単語に置換

編集

コマンド 説明
u 変更を取り消す(undo)
Ctrl + r 直前に取り消した操作をやり直す(redo)

ファイル操作

コマンド 説明
:w 保存
:q ファイルを閉じる
:wq 保存してファイルを閉じる

おわりに

基本的なコマンドを押さえたら、応用的なコマンドにも挑戦してみたいですね!

もし誤記、間違い等ありましたらご指摘よろしくお願いいたしますm(__)m