- 投稿日:2019-11-28T23:38:39+09:00
パスってなに? 絶対パスと相対パスの違いは?
- 投稿日:2019-11-28T22:56:27+09:00
日本語vimを自前ビルド
はじめに
vimのリポジトリ https://github.com/vim をそのままビルドしたら日本語化されなかったので、メモ。
知識
- 正常に日本語化されているvimがある環境では
share/vim/vim81/lang
ディレクトリ内にja/LC_MESSAGES/vim.mo
ファイルがあるが、そうでない環境には存在しない。- このファイルを生成するには vim のビルド時に
gettext
パッケージに含まれるmsgfmt
コマンドが必要のようだ。msgfmt
コマンドがなくても、vimのビルドは問題なく通ってしまう。手順
sudo aptitude install gettext git clone git@github.com:vim/vim.git cd vim ./configure --prefix=$HOME make make installついでに
日本語マニュアルも導入しておく。
cd ~/.vim mkdir -p pack/vimdoc-ja/start cd pack/vimdoc-ja/start git clone git@github.com:vim-jp/vimdoc-ja.git
- 投稿日:2019-11-28T21:36:59+09:00
Node.jsでMySQLに接続するのをDockerでやってみた
この記事は富士通クラウドテクノロジーズ Advent Calendar 2019 5日目の記事です。
4日目は @tmtms さんの MySQL Parameters を拡張した でした。はじめに
- ※本記事は、 Node.js超入門[第2版] のサンプルコードをDocker上で動かす趣旨のものです。 よって、書籍で言及されている階層は触れません。
はじめまして。Node.jsを勉強中の新卒エンジニアです。
配属したてホヤホヤです。
今回は Node.js超入門[第2版] を使って勉強したときの話をします。この書籍の内容をDockerで実現しようとした経緯ですが、そのまま「Dockerを理解したかったから」です。
弊社の研修でもDockerについて触れていただいたのですが、一度教わっただけでは理解が難しいものでした。
というわけで、サンプルコードを写経するだけになりがちだった(主観です)プログラミングの本で、ついでに理解を深めようという魂胆です。今回は、書籍の Chapter5「値とデータをマスターしよう!」の、Section5-3~5-4 で書かれている、Node.jsでDBにアクセスして情報を取得し、ブラウザに表示するプログラムを紹介します。書籍が手元にある方はぜひ確認してみてください。
環境構築
必要な環境
- Linux
- Docker https://docs.docker.com/install/
- docker-compose https://docs.docker.com/compose/install/
- 今回のコードは GitHub にpushしました。以降、これを読んでいるものとして話を進めます。
参考記事:
解説
- 今回は、Node.jsもMySQLも、Dockerコンテナとして生成しています。
- Node.jsサーバーは、
docker-compose.yml
からDockerfile
を呼び出す形で書き、MySQLサーバーはdocker-compose.yml
内で定義しています。docker-compose.yml
で指定するMySQLのDockerイメージは、MySQLのバージョンが8よりも前になるように古いものを使っています。 8以降はそのままだとNode.jsとの連携ができないようです。init-mysql.sh
は、ローカル環境から、データベース用のコンテナにアクセスし、テーブル作成->データ挿入までを行っています。- 実は、
docker/db/my.cnf
とdocker-compose.yml
の2か所でmysqld
を設定しているのですが、どちらかを消すとなぜかエラーになってしまうため(!)そのままにしてあります。いい方法ががありましたら教えていただけると幸いです・・・。- 余談ですが、今回のコードは、いままで述べてきたものとは別のDockerfileでExpress-generatorを実行し、
docker cp
でローカルにファイルをコピーしてから作成していきました。 めんどうくさいことをしたなと自分で思います。動作確認
- 上記のリポジトリをcloneします。
- リポジトリに移動
docker-compose up -d
でコンテナを立ち上げます。- すこし(10秒ほど)時間をおきます。(コンテナが出来上がるまで待つ)
- ローカルで
./init-mysql.sh
を実行します。localhost/hello
にアクセスし、docker/db/sql/002-insert-records.sql
で入れたデータが表示されていることを確認してください。- ↓ こんなふうに表示されます。
おわりに
まず、Node.jsについての書籍を読み、サンプルを実行してみることで、Node.jsの挙動についてざっくりと理解できるようになりました。
加えて、それらをDocker上の環境で行うことで、
いままで「VirtualBoxより軽い仮想化するアプリケーション?」という認識だったDockerについての理解も深まりました。
Linuxのコンソールの扱いも以前よりわかるようになってきました。
やっと.profile
や.vimrc
をカスタマイズできるようになり、快適なUbuntu生活をしております。また、試行錯誤して、調べたり人に聞いたりしていくことが学びへの近道だと実感しました。
例えば、MySQLのバージョンに関しては自分では調べきれず、先輩方の知恵をお借りしました。
ありがとうございました。まだまだエンジニアとしては若輩者ですが、これからもっと勉強してスキルをつけ、開発をたくさんしていけたらと思います。
- 投稿日:2019-11-28T21:22:13+09:00
【ど忘れシリーズ】llコマンドがcommand not foundになったときの対処法
はじめに
[hoge@hoge ~/Documents/hogehoge]$ ll bash: ll: command not found新米エンジニア「ファッ!?先輩!!llコマンドが使えません!」
先輩エンジニア「フォッフォッフォ!落ち着くがよい。」とても便利なllコマンド。
しかし、稀にコマンドを入力しても「そんなコマンドねーよ」と怒られる場合があります。
(私も初めてのころはすごく焦っていました笑)llコマンドって?
ズバッといえば、「ls -l」コマンドのショートカットです。
エイリアス【alias】というのは別名という意味をします。
※余談ですがWindowsではショートカット、Macintoshとかはエイリアスとか言いますね。
実際にllコマンドは「ls -l」コマンドと同等のものが実行されています。llコマンド
[hoge@hoge ~/Documents/hogehoge] $ ll total 0 -rw-r--r-- 1 hoge 197608 0 11月 28 17:31 hoge_file_1.txt -rw-r--r-- 1 hoge 197608 0 11月 28 17:31 hoge_file_2.txt -rw-r--r-- 1 hoge 197608 0 11月 28 17:31 hoge_file_3.txt「ls -l」コマンド
[hoge@hoge ~/Documents/hogehoge] $ ll total 0 -rw-r--r-- 1 hoge 197608 0 11月 28 17:31 hoge_file_1.txt -rw-r--r-- 1 hoge 197608 0 11月 28 17:31 hoge_file_2.txt -rw-r--r-- 1 hoge 197608 0 11月 28 17:31 hoge_file_3.txtどうしたらいいの?
要は、エイリアスが登録されていない=ショートカットできないことが原因なので、
ショートカットが使える⇒エイリアスを登録すればよいのです。
方法としては、.bashrc
というファイルに登録すればOKです。1..bashrcファイルを開きます
[hoge@hoge ~] $ vi ~/.bashrc↓
2.下記を追記します
alias ll="ls -l"これで?
[hoge@hoge ~/Documents/hogehoge]$ ll total 0 -rw-r--r-- 1 hoge 197608 0 11月 28 17:31 hoge_file_1.txt -rw-r--r-- 1 hoge 197608 0 11月 28 17:31 hoge_file_2.txt -rw-r--r-- 1 hoge 197608 0 11月 28 17:31 hoge_file_3.txtこれでllコマンドで実行できるようになりましたね。
新米エンジニア「先輩!!これで今夜はぐっすり眠れそうです!」
先輩エンジニア「よかったね!おやすみ!」
- 投稿日:2019-11-28T11:28:55+09:00
文字化けしたファイルを削除する
はじめに
ファイル名が文字化けして削除も操作もできなくなったファイルの消し方をまとめなおした
手順
1.ファイルのinode番号を調べる
inode番号を調べるls -li 合計 xxx 1234567890 test?_.txt ----------------------------- inode number file name
2.inode番号でファイルを検索し、削除
inode番号で検索し、削除find . -inum 1234567890 -exec rm -rf {} \;
補足
-execオプションを使うと、findで検索されたファイルに対して他の処理を行わせることができる。
-exec {} \;
はfindで検索されたファイルを個別に、ファイルの数だけ処理を行う。
-exec {} +
はfindで検索されたファイルをまとめて 1つの処理を行う。参考
- 投稿日:2019-11-28T06:48:00+09:00
Linux の root パスワードをリセット(設定)する方法
たまたま、VirtualBox のイメージを入手したところ、そのイメージには、root パスワードが設定されておらず、ユーザ名とパスワードは分かったものの、sudo コマンドを発行しても sudoers に記述がないため、管理者の動作ができませんでした。
そこで、root パスワードを設定しなければなりません。
- マシンを起動し、grub メニューで "e" を押下
- linux16 の行に移動
- ro を rw init=/sysroot/bin/sh に修正
- Ctrl+x を押下
- :/# chroot /sysroot
- :/# passwd root
- :/# touch /.autorelabel
- :/# exit
- :/# reboot
再起動後、ログインして、su コマンドを発行、さきほど設定したパスワードで root になれましたー。
- 投稿日:2019-11-28T00:51:14+09:00
splitコマンド
Coreutils Advent Calendar 8日目です
今回は
split
コマンドです。split コマンドとは
ファイルを分割するコマンドです。デフォルトで実行すると1000行ごとに分割します。
$ split hogefile $ ls hogefile xaa xab xac xad xae xaf xag xah xaixaa xab ... となっているのは、あとで
cat
すると元に戻るからです。100行ごとに分割してほしいとか、xxというファイル名はいやだというときはこんな感じです。$ split -l 100 hogefile AA $ ls hogefile AAaa AAab AAac AAad AAae AAaf任意のバイト数で分割する場合
行数じゃなくても、任意のバイト数で分割するなら
-b
オプションです。[練習問題]
-n
オプション練習問題です。
-n
オプションを使ったときの例です。何をやっているのか気になるときは各自manを引いてみてください。$ seq 100 > k; split -nl/7/33 k 20 21 22任意の文字で分割する
同じくCoreutils の
csplit
コマンドでも可能ですが、Coreutils 8.24から指定した文字でファイルを分離することができるようになりました(-t
オプション)。ASCIIのNULL文字でファイルを分割したいというときはsplit -t '\0'
としてください。次回
wc
コマンド。お楽しみに!
- 投稿日:2019-11-28T00:45:03+09:00
Linuxでsshサーバをたてよう
今回の目的
Linux(Ubuntu18.04.3)でLAN内でsshサーバーを立ててMacからログインしよう
sshサーバーをたてましょう
まずは下のコマンドでパッケージをインストールしてからサービスを起動させましょう
# sudo apt-get install openssh-server # systemctrl start sshちなみに、サービスを止めたり、ステータスを確認するには下のコマンドで可能です
# systemctrl stop ssh # systemctrl status ssh
systemctrl
でサービスの設定を変更することが可能です別のデバイスからsshでログインしましょう
今回は、Macのターミナルを使ってログインします
# ssh -l xxx IPアドレス上のコマンドを実行すればLAN内のデバイスからならssh接続可能です。
xxx
はリモートホストのログイン名になります。-l
オプションはログイン名を指定するために必要です。
あとは、パスワードを入力して完了です。Next
ローカルのsshは家にサーバーがある人用ですね。
外部からのssh接続も挑戦してみます。