20210827のLinuxに関する記事は9件です。

Linux教育を企画、運営、評価する。

Linux教育を企画、運営、評価する、何通りかの方法を検討する。 1 道具 Linuxを教育するための道具類を3種類検討する。 1.1 Linux PC intelまたはarmのPCを1台教育用に専用に用意する。 性能は、教育に参加する人に応じて、メモリ、HDDを増やしていくものとする。 Linux を教育するのだから、LinuxPCを用意するのは当たり前だと思うかもしれない。 いえ、当たり前なんです。 課題は、じゃ、端末は何にするかかもしれません。 候補としては、LinuxPC、macOS PC, M.S. Windows OS PC, iPad, Android Pad, iPhone, Android phoneの7種類を候補にあげておきます。 Linux PCの利点 Linux PCの欠点 欠点はないような気がします。 あるとすれば、それぞれの端末がLinuxPCだったときに、システムの管理を経験できる人が限られるか、 システムの管理をする時間が限られるということでしょう。 この欠点は、端末もLinuxPCにすれば成り立ちません。 その場合の欠点は、ネットワーク管理が必要になるということかもしれません。 他の場合は、その1台で閉じることもできるため、ネットワークの管理が必要だとは限らないからです。 この欠点は利点にもなります。クライアントとサーバの両方の管理の経験を積むことができるのですから。 1.2 Windows Subsystem for Linux そんなにありえない選択だとは思っていません。 一度Windows10PCに導入して確認しています。 Ubuntuを選べば、本当にUbuntuとして動作しています。 Windows 10 用 Windows Subsystem for Linux のインストール ガイド https://docs.microsoft.com/ja-jp/windows/wsl/install-win10 Windows 10の機材が存在していることを前提とする。 なければ、すぐに買いにいってください。 ノートPCを想定します。できればメモリは16GBがいいです。 そうじゃなきゃだめというわけではありません。 コンパイルするときに、メモリが少ないと、時間がかかりすぎて泣く。 7万円くらいするらしい。 https://kakaku.com/item/K0001328656/ ディスクトップで探しても、kakaku.comではうまく見つからない。 九十九電機で16GBで探しても7万円切るのは1種類しかない。 https://shop.tsukumo.co.jp/goods/4529327911616/ パソコン工房でさがしたら5万円代でもあった。 https://www.pc-koubou.jp/products/detail.php?product_id=818868&pre=bct1872_bnr_int 最初のノートPCはコア4を指定していた。 やっぱり、Windows10PCがすでにある場合いがい、この選択肢はなさそう。 1.3 Raspberry PI Raspbianを想定します。 理由は、Raspbianしか使ったことがないことと、Debian系のOSしかカーネルソースのコンパイルをしたことがないという個人的な経験の制約によります。 自分の博論の実験機器が、サーバ側がDebianで、Mobile IPをコンパイルする際に、カーネルのパッチ当てが必要だったのですが、apt install によるカーネルの導入とpatchあてとビルドが円滑にできました。 対抗試験としては、FreebSDのカーネルもコンパイルしています。 2. 題材 Linuxの醍醐味の一つは、コンパイル・ビルドかもしれない。 2.1 コンパイル・ビルド 2.1.1 コンパイラのコンパイル コンパイラのコンパイルは、一つの山場です。 intelとarmで考えると、セルフコンパイルとクロスコンパイルを検討してみましょう。 2.1.2 カーネルのコンパイル Linux自身のコンパイルも、二番目の山場です。 コンパイラがコンパイルできたからといって、カーネルがコンパイルできないのであれば、 オープンソースとしてのLinuxの価値が半減してしまうかもしれません。 2.1.3 他のアプリのコンパイル Debian系のaptであっても、すべてのアプリのバイナリがあるとは限りません。 アプリのコンパイルも大切です。 2.2 docker 次はgithubにするかdockerにするか悩みました。 dockerにした理由は、dockerの方が使い慣れているからだけです。 macOS, Windows OSの端末の場合は、それそれのdocker用アプリの導入が必要になります。 2.2.1 docker上でのコンパイラのコンパイル 2.2.2 docker 上でのカーネルのコンパイル 2.2.3 docker上でのアプリのコンパイル 2.3 git 2.3.1 github/gitlab/bitbacketの利用 多くのオープンソースの活動は、公開のGithubなどにソースを置いて運営しています。 これらを利用することから始めましょう。 すでに、コンパイル、dockerの利用で使っているかもしれません。 意識して再整理するだけでも結構です。 2.3.2 gitlabの導入 セルフマネージドGitLabをインストール https://www.gitlab.jp/install/ 公開のサーバや、プライベートのサーバでも、サーバの利用に制限がある場合は、gitlabを導入しましょう。 2.3.3 git 系の 他の作業 未定 2.4. 文書分類 2.4.1 Web/html Web, Browserによる処理は、いろいろな作業の過程で必要になることがあります。 資料の整理や、発表などです。 2.4.2 markdown/wiki Web, browserを使っても、使わなくてもmarkdownは必須だと思います。 2.4.3 LaTeX え、jsonじゃないのとか、XMLはどうしたと思われるかもしれません。 それらはデータ形式の方に追いやっておきます。 2.5 データ形式 s.5.1 json 2.5.2 XML 2.5.3 その他のデータ形式 2.6. プログラミング言語 2.6.1 C言語 C言語規格のソースコード断片のコンパイルと、MISRA C, CERT Cなどのコーディング標準のソースコードのコンパイルは行います。 2.6.2 C++ C++規格のソースコード断片のコンパイルと、MISRA C++, CERT C++, AUTOSAR C++などのコーディング標準のソースコードのコンパイルは行います。 2.6.3 python JAVAじゃないのかとか、C#はどうしたとか、javascritpはって思うでしょう。 ごめんなさい。今、興味がまだ湧いていません。 JAVAについては、興味が冷めたといった方がいいかもしれません。 2.7. 試験 2.7.1 単体試験 2.7.2 POSIX Test suite 2.8.3 その他の試験 3 人数 3.1 4人未満 演習系で、一人の講師で、手が届くのは4人くらいかもしれません。 人の能力によります。絶対にそうだとはいえません。 3.2 16人未満 4人以上になったら、3人に一人、グループリーダを決めてもらいます。 そうすると、15人なら5グループできることになります。 5人のリーダに話を伝えたり、5人のリーダから報告を聞けばよいような仕組みを作ります。 この人数の課題の一つは、機材管理です。経験的に8台以上の機材があると、 どれか一台はなにかしてくれちゃうことがあります。 故障の場合もあります。OSのインストールのし直しが必要なこともあります。 呼びの機材が1台以上必要です。 3.3 64人未満 3人づつのグループが最大21あります。7グループごとにグループリーダを決めてもらいます。 基本的に3人のグループリーダが、6人のリーダと、自分のグループのメンバに対応してくれます。 この人数になると、最大の課題は機材管理です。 グループリーダごとに2台の呼びの機材があ必要で、合計6台の予備を用意します。 4. 進捗管理 4.1 Github/Gitlab/Bitbucket またはWeb 4.2 進捗管理ツールのカスタマイズ 4.3 統計分析ツールの作成 場合によっては機械学習も。 5 日程計画 案1 1日目。 Windows PCの場合は、WSLを導入して、Ubuntuを起動するまでに数時間かかる。 PCにLinuxを導入する場合には、1時間くらいで済みそう。 Raspberry PIはRaspbianのSDカードがあること前提だけど、 ない場合には、PCでSDにダウンロードする作業が慣れないと、1時間以上かかるかも。 初日にはコンパイラをコンパイルしたい。 場合によってはクロスコンパイラでもいい。 Raspberry PIで作業をする場合に、Raspberry PI でコンパイルするよりも、 もっと高速でメモリのたくさんあるPCでコンパイルした方がいいかもしれないし。 Dockerをどっかーらどうやって使えばいいんでしょう。TOPPERS/FMP on RaspberryPi with Macintosh編 5つの関門。「名古屋のIoTは名古屋のOSで」。docker (37) https://qiita.com/kaizen_nagoya/items/9c46c6da8ceb64d2d7af 仮説・検証(175)コンパイラを書くのは難しいか LLVMソースコードのコンパイルをしようと思ってハマった罠とそこから脱出するための努力 2 日目 C言語標準 [C][C++]の国際規格案の例題をコンパイルするときの課題7つ。 5日目 MISRA C, CERT C MISRA C まとめ #include docker(200) Misra Example Suite at docker コンパイル完了までの道のり 15日目。 今日から、Ethernet/TCP/IP Linuxを触っていて、TCP/IPを操れないと意味がないかも。 まず、wiresharkの導入。 Wireshark 導入、記録、分析。無線網(Wi-Fi)空中線(antenna)(64) https://qiita.com/kaizen_nagoya/items/d1d452d5f3eadd420d6e ban # apt install wireshark 「かんたんな疎通確認」をwiresharkで https://qiita.com/kaizen_nagoya/items/93acbe7ea1a43ffd56e4
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Linux教育15日(3週間)を企画、運営、評価する。

Linux教育を企画、運営、評価する、何通りかの方法を検討する。 ねらい Linuxシステムの構築、運用、廃棄ができるようになる。 Git, Dockerを使いこなし、システム設計、運用の記録を残すようにする。 コンパイラのコンパイル、Linuxのコンパイルを経験しておくことにより、どんなシステムの設計でもできるようになる。 Etehrnet/TCP/IPを使いこなし、Wiresharkで記録をとり、分析できるようにする。 1 道具 Linuxを教育するための道具類を3種類検討する。 1.1 Linux PC intelまたはarmのPCを1台教育用に専用に用意する。 性能は、教育に参加する人に応じて、メモリ、HDDを増やしていくものとする。 Linux を教育するのだから、LinuxPCを用意するのは当たり前だと思うかもしれない。 いえ、当たり前なんです。 課題は、じゃ、端末は何にするかかもしれません。 候補としては、LinuxPC、macOS PC, M.S. Windows OS PC, iPad, Android Pad, iPhone, Android phoneの7種類を候補にあげておきます。 Linux PCの利点 Linux PCの欠点 欠点はないような気がします。 あるとすれば、それぞれの端末がLinuxPCだったときに、システムの管理を経験できる人が限られるか、 システムの管理をする時間が限られるということでしょう。 この欠点は、端末もLinuxPCにすれば成り立ちません。 その場合の欠点は、ネットワーク管理が必要になるということかもしれません。 他の場合は、その1台で閉じることもできるため、ネットワークの管理が必要だとは限らないからです。 この欠点は利点にもなります。クライアントとサーバの両方の管理の経験を積むことができるのですから。 1.2 Windows Subsystem for Linux そんなにありえない選択だとは思っていません。 一度Windows10PCに導入して確認しています。 Ubuntuを選べば、本当にUbuntuとして動作しています。 Windows 10 用 Windows Subsystem for Linux のインストール ガイド https://docs.microsoft.com/ja-jp/windows/wsl/install-win10 Windows 10の機材が存在していることを前提とする。 なければ、すぐに買いにいってください。 ノートPCを想定します。できればメモリは16GBがいいです。 そうじゃなきゃだめというわけではありません。 コンパイルするときに、メモリが少ないと、時間がかかりすぎて泣く。 7万円くらいするらしい。 https://kakaku.com/item/K0001328656/ ディスクトップで探しても、kakaku.comではうまく見つからない。 九十九電機で16GBで探しても7万円切るのは1種類しかない。 https://shop.tsukumo.co.jp/goods/4529327911616/ パソコン工房でさがしたら5万円代でもあった。 https://www.pc-koubou.jp/products/detail.php?product_id=818868&pre=bct1872_bnr_int 最初のノートPCはコア4を指定していた。 やっぱり、Windows10PCがすでにある場合いがい、この選択肢はなさそう。 1.3 Raspberry PI Raspbianを想定します。 理由は、Raspbianしか使ったことがないことと、Debian系のOSしかカーネルソースのコンパイルをしたことがないという個人的な経験の制約によります。 自分の博論の実験機器が、サーバ側がDebianで、Mobile IPをコンパイルする際に、カーネルのパッチ当てが必要だったのですが、apt install によるカーネルの導入とpatchあてとビルドが円滑にできました。 対抗試験としては、FreebSDのカーネルもコンパイルしています。 2. 題材 Linuxの醍醐味の一つは、コンパイル・ビルドかもしれない。 2.1 コンパイル・ビルド 2.1.1 コンパイラのコンパイル コンパイラのコンパイルは、一つの山場です。 intelとarmで考えると、セルフコンパイルとクロスコンパイルを検討してみましょう。 2.1.2 カーネルのコンパイル Linux自身のコンパイルも、二番目の山場です。 コンパイラがコンパイルできたからといって、カーネルがコンパイルできないのであれば、 オープンソースとしてのLinuxの価値が半減してしまうかもしれません。 2.1.3 他のアプリのコンパイル Debian系のaptであっても、すべてのアプリのバイナリがあるとは限りません。 アプリのコンパイルも大切です。 2.2 docker 次はgithubにするかdockerにするか悩みました。 dockerにした理由は、dockerの方が使い慣れているからだけです。 macOS, Windows OSの端末の場合は、それそれのdocker用アプリの導入が必要になります。 cloc をdockerで https://qiita.com/kaizen_nagoya/items/e56636e53ee12904f111 2.2.1 docker上でのコンパイラのコンパイル 2.2.2 docker 上でのカーネルのコンパイル 2.2.3 docker上でのアプリのコンパイル 2.3 git 2.3.1 github/gitlab/bitbacketの利用 多くのオープンソースの活動は、公開のGithubなどにソースを置いて運営しています。 これらを利用することから始めましょう。 すでに、コンパイル、dockerの利用で使っているかもしれません。 意識して再整理するだけでも結構です。 2.3.2 gitlabの導入 セルフマネージドGitLabをインストール https://www.gitlab.jp/install/ 公開のサーバや、プライベートのサーバでも、サーバの利用に制限がある場合は、gitlabを導入しましょう。 2.3.3 git 系の 他の作業 未定 2.4. 文書分類 2.4.1 Web/html Web, Browserによる処理は、いろいろな作業の過程で必要になることがあります。 資料の整理や、発表などです。 2.4.2 markdown/wiki Web, browserを使っても、使わなくてもmarkdownは必須だと思います。 2.4.3 LaTeX え、jsonじゃないのとか、XMLはどうしたと思われるかもしれません。 それらはデータ形式の方に追いやっておきます。 2.5 データ形式 s.5.1 json 2.5.2 XML 2.5.3 その他のデータ形式 2.6. プログラミング言語 2.6.1 C言語 C言語規格のソースコード断片のコンパイルと、MISRA C, CERT Cなどのコーディング標準のソースコードのコンパイルは行います。 2.6.2 C++ C++規格のソースコード断片のコンパイルと、MISRA C++, CERT C++, AUTOSAR C++などのコーディング標準のソースコードのコンパイルは行います。 2.6.3 python JAVAじゃないのかとか、C#はどうしたとか、javascritpはって思うでしょう。 ごめんなさい。今、興味がまだ湧いていません。 JAVAについては、興味が冷めたといった方がいいかもしれません。 2.7. 試験 2.7.1 単体試験 2.7.2 POSIX Test suite 2.8.3 その他の試験 3 人数 3.1 4人未満 演習系で、一人の講師で、手が届くのは4人くらいかもしれません。 人の能力によります。絶対にそうだとはいえません。 3.2 16人未満 4人以上になったら、3人に一人、グループリーダを決めてもらいます。 そうすると、15人なら5グループできることになります。 5人のリーダに話を伝えたり、5人のリーダから報告を聞けばよいような仕組みを作ります。 この人数の課題の一つは、機材管理です。経験的に8台以上の機材があると、 どれか一台はなにかしてくれちゃうことがあります。 故障の場合もあります。OSのインストールのし直しが必要なこともあります。 呼びの機材が1台以上必要です。 3.3 64人未満 3人づつのグループが最大21あります。7グループごとにグループリーダを決めてもらいます。 基本的に3人のグループリーダが、6人のリーダと、自分のグループのメンバに対応してくれます。 この人数になると、最大の課題は機材管理です。 グループリーダごとに2台の呼びの機材があ必要で、合計6台の予備を用意します。 4. 進捗管理 4.1 Github/Gitlab/Bitbucket またはWeb 4.2 進捗管理ツールのカスタマイズ 4.3 統計分析ツールの作成 場合によっては機械学習も。 5 日程計画 案1 1日目。 Windows PCの場合は、WSLを導入して、Ubuntuを起動するまでに数時間かかる。 PCにLinuxを導入する場合には、1時間くらいで済みそう。 Raspberry PIはRaspbianのSDカードがあること前提だけど、 ない場合には、PCでSDにダウンロードする作業が慣れないと、1時間以上かかるかも。 初日にはコンパイラをコンパイルしたい。 場合によってはクロスコンパイラでもいい。 Raspberry PIで作業をする場合に、Raspberry PI でコンパイルするよりも、 もっと高速でメモリのたくさんあるPCでコンパイルした方がいいかもしれないし。 Dockerをどっかーらどうやって使えばいいんでしょう。TOPPERS/FMP on RaspberryPi with Macintosh編 5つの関門。「名古屋のIoTは名古屋のOSで」。docker (37) https://qiita.com/kaizen_nagoya/items/9c46c6da8ceb64d2d7af 仮説・検証(175)コンパイラを書くのは難しいか LLVMソースコードのコンパイルをしようと思ってハマった罠とそこから脱出するための努力 2 日目 C言語標準 [C][C++]の国際規格案の例題をコンパイルするときの課題7つ。 5日目 MISRA C, CERT C MISRA C まとめ #include docker(200) Misra Example Suite at docker コンパイル完了までの道のり 15日目。 今日から、Ethernet/TCP/IP Linuxを触っていて、TCP/IPを操れないと意味がないかも。 まず、wiresharkの導入。 Wireshark 導入、記録、分析。無線網(Wi-Fi)空中線(antenna)(64) https://qiita.com/kaizen_nagoya/items/d1d452d5f3eadd420d6e ban # apt install wireshark 「かんたんな疎通確認」をwiresharkで https://qiita.com/kaizen_nagoya/items/93acbe7ea1a43ffd56e4 統計・解析 wiresharkのプラグイン開発まとめ https://qiita.com/rotace/items/674202417ba6b68b423f Wiresharkを利用したMalware Traffic Analysis手順まとめ https://qiita.com/harapeco_nya/items/3bdca678821abd939d8b Wiresharkの基本的な使い方 https://qiita.com/masaomi346/items/a2c99700686e4c8a7a41 パケット解析で役立つWiresharkの機能 https://qiita.com/tomoyk/items/31fff62a29cb8e8813cf Wiresharkの使い方(RTTの表示方法)https://qiita.com/hana_shin/items/09dc972c6a2daf36187c WiresharkでLuaスクリプトを使った GUI 表示の方法 https://qiita.com/izuki_y/items/ce21711b42541951167c
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

psコマンドの使い方

経緯 過去仕事していた時に執筆していたもので、いつまでも下書きにあってもしょうがないのでアップすることにした記事 なのでメモ程度に見て下さい。 psコマンドとは? 現在動いているプロセスを表示するコマンド linuxでは、yumやrpmを利用してパッケージをインストールします。 これらのパッケージの起動確認は個々にコマンドがあります。 (例えばrpm -qaやyum install -listなど) しかし、yumやrpm以外を用いてインストールしたパッケージのプロセス確認(状態確認)は見ることが出来ません。 そこで、psコマンドの登場です。 psコマンドを利用しyumやrpm以外でインストールされたプログラムのプロセスを把握します。 コマンドの後に表示されるものの見方については参考資料のリンクを参照すること。 # ps PID TTY TIME CMD 1774 ttys000 0:00.12 -bash 2523 ttys001 0:00.34 -bash オプション例 option 説明 備考 a 操作端末のプロセスを表示する x 操作端末以外のプロセスを表示する r 今実行しているプロセスを表示する c 実行しているコマンド名を表示する e 実行しているコマンド名と環境変数を表示する u CPUやメモリの使用率なども表示する h 項目名を表示しない l プロセスの状態なども表示する f プロセスを階層で表示する o 指定したリスト順の出力形式で表示する -u プロセスを実行しているユーザーを指定する -g プロセスを実行しているグループを指定する -p 実行プロセスのPIDを指定する 参考資料 Linuxコマンド集$ps psコマンドで表示される内容について調べた
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

jqコマンドで必要な項目のみ取得してjsonを作成する

こんなJSONの中から特定のキーだけ取得したJSONを再作成する sample.json { "userList": [ { "userID": 1, "nickname": "taro", "height": 175.7, "_disabled": false }, { "userID": 3, "nickname": "hanoko", "_disabled": false }, { "userID": 4, "nickname": "momoko", "weight": 45, "_disabled": true } ] } userIDと_disabledだけ取得 $ cat sample.json | jq -r '{userList: [.userList[] | { userID: .userID, _disabled: ._disabled}]}' { "userList": [ { "userID": 1, "_disabled": false }, { "userID": 3, "_disabled": false }, { "userID": 4, "_disabled": true } ] }
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Dockerをwindows homeで利用する

#はじめに メモをとっているものの、実際には公式マニュアルを読めば大丈夫である。リンクは下。 https://docs.docker.jp/docker-for-windows/install-windows-home.html #WSLの有効化 ・Windows Subsystem for Linux つまりwindowsでLinuxを利用すること ・仮想化も有効にする →「windowsの機能の有効化または無効化」で以下の2つにチェック ① Linux用windowssサブシステム ② 仮想マシン プラットフォーム #WSL2に更新する こちらのサイトのパッケージをDL&実行=手順4(WSL2更新パッケージ) https://docs.microsoft.com/ja-jp/windows/wsl/install-win10#step-4---download-the-linux-kernel-update-package 以下のコマンドを実行 // PowerShell wsl --set-default-version 2 #Ubuntu20.04をインストール ・MicroSoft Storeより入手する。 ・CentOSは対応していない模様。githubのリポジトリ存在はあるが、公式マニュアルはない。 ・Ubuntuを起動し、最初のユーザーを生成する。 ・aptコマンドを更新 $ sudo apt update && sudo apt upgrade #DockerHub for Windowsをインストール DLサイト https://hub.docker.com/?overlay=onboarding 参考URL 公式 ・Homeにインストールする https://docs.docker.jp/docker-for-windows/install-windows-home.html ・WSL2について https://docs.docker.jp/docker-for-windows/wsl.html ・WSL2更新パッケージ https://docs.microsoft.com/ja-jp/windows/wsl/install-win10#step-4---download-the-linux-kernel-update-package ・Ubuntuの初期設定 https://docs.microsoft.com/ja-jp/windows/wsl/user-support 非公式 ・https://qiita.com/idani/items/fb7681d79eeb48c05144 ・https://qiita.com/teckback/items/c048faef648da6c83058 ☆CentOSをインストールする場合の方法はこちら(非公式) https://www.geekfeed.co.jp/geekblog/install_centos8_on_wsl2_for_free
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

SoftEtherで仮想LANカードが作れないエラーが出たとき

エラー Error occurred. (Error code: 31) Installation of the Virtual Network Adapter device driver failed. うまくいった方法 vpnclientをmakeする前に sudo ln -s /usr/src/linux-headers-$(uname -r)/ /lib/modules/$(uname -r)/build をしてから、makeして、vpncmdを操作すると仮想LANカードが作れた。 参考文献 Raspberry Pi3(Ubuntu18.04LTS)でSoftEther VPN - Qiita ラズパイに SoftEtherVPN Client をインストール | ミコ-ラボ
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【sedコマンド】特定ファイル内すべてのダブルクォーテーションを削除

特定のファイル内のダブルクォーテーションを削除するコマンド -i ... ファイルを上書きするオプション -e ... 正規表現のオプション(他のオプションを利用しない場合や、別ファイル保存の場合は不要) # ダブルクォーテーションを削除して、上書き sed -i -e 's/"//g' result.csv # 結果を確認 head result.csv 削除した結果を 別ファイルで保存 したい場合 (元のファイルは保持しておきたい場合) # ダブルクォーテーションを削除して、別ファイル(result_edited.csv)として保存 sed 's/"//g' result.csv > result_edited.csv # 結果を確認 head result.csv head result_edited.csv
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[shell]ふりがなデータをローマ字表記に変換して特定列に追加

よくある「名前・読み(ふりがな)」の項目が入ったデータだが、新たにローマ字の項目を追加したい。 だが手動で読みから判断して一つ一つ入力するのは時間がかかる。 そこで今回はuconvというshellで扱える便利コマンドを利用して変換後、特定列に追加する方法を記録する。 実現すること 以下のようなTSV形式のデータがある。 名前 読み 生年月日 出身地 所属コード 亜 あ 20xx/xx/xx 東京都 1 *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** 上記の読みデータをコマンドを使用してローマ字表記に変換して、「読み」 と 「生年月日」 の項目の間に新たに以下のように追加。 名前 読み ローマ字 生年月日 出身地 所属コード 亜 あ a 20xx/xx/xx 東京都 1 *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** 環境 Mac OS X 10.15.6 手順 uconvコマンドのインストール 標準環境に入っているコマンドでは厳しいため、uconvというデータ変換コマンドを利用する。 まず、以下のコマンドでuconv付属のライブラリをインストールする。 brew install icu4c インストール後はパスを通すかエイリアスを設定する必要があるため、以下の~/.zshrcもしくは~/.bashrcにaliasを追加する。 ~/.zshrc # こちらのpathは「brew list icu4c | grep uconv」で確認する。 alias uconv='/usr/local/Cellar/icu4c/69.1/bin/uconv' uconv --versionと入力して、バージョン情報が表示されることを確認する。 サンプルデータ用意 今回はこちらのサイトで作成した以下のデータをsample.tsvとして保存して利用する。 sample.tsv 名前 読み 生年月日 出身地 所属コード 佐瀬 竜三 サセ リュウゾウ 1960/12/9 秋田県 05 福村 重光 フクムラ シゲミツ 1989/8/27 石川県 17 立野 夢 タチノ ユメ 1997/10/15 山形県 06 長沼 綾奈 ナガヌマ アヤナ 2008/7/29 香川県 37 坂井 正雄 サカイ マサオ 1993/3/31 富山県 16 中村 奈保美 ナカムラ ナホミ 1979/1/30 山形県 06 清野 金蔵 キヨノ キンゾウ 1985/1/30 山口県 35 成瀬 勝三 ナルセ カツゾウ 1982/2/18 長野県 20 幸田 矩之 サチダ ノリユキ 1982/9/2 神奈川県 14 原田 裕司 ハラタ ユウジ 1997/10/9 新潟県 15 変換及び追加 コマンドとデータの用意が整ったため、uconvでの変換と追加作業をしていく。 ※uconvコマンドの基本使用例及び詳細はこちらを参照。 まず以下のようにuconvを用いて読み(ふりがな)データがローマ字に変換できることを確認する。 awk -F '\t' 'NR>1{print $2}' sample.tsv | uconv -x latin sase ri~yuuzou fukumura shigemitsu tachino yume naganuma ayana sakai masao nakamura nahomi kiyono kinzou naruse katsuzou sachida noriyuki harata yuuji 上記のような変換を確認後、以下のコマンドで 「読み」と「生年月日」の間に「ローマ字」 列が追加されることを確認する。 ※可読性のため、ワンライナーを改行。 方法1 paste \ <(cut -f1-2 sample.tsv) \ <(echo "ローマ字";awk -F '\t' 'NR>1{print $2}' sample.tsv | uconv -x latin) \ <(cut -f3- sample.tsv) 名前 読み ローマ字 生年月日 出身地 所属コード 佐瀬 竜三 サセ リュウゾウ sase ri~yuuzou 1960/12/9 秋田県 05 福村 重光 フクムラ シゲミツ fukumura shigemitsu 1989/8/27 石川県 17 立野 夢 タチノ ユメ tachino yume 1997/10/15 山形県 06 長沼 綾奈 ナガヌマ アヤナ naganuma ayana 2008/7/29 香川県 37 坂井 正雄 サカイ マサオ sakai masao 1993/3/31 富山県 16 中村 奈保美 ナカムラ ナホミ nakamura nahomi 1979/1/30 山形県 06 清野 金蔵 キヨノ キンゾウ kiyono kinzou 1985/1/30 山口県 35 ※方法1のような<()を用いたプロセス置換がない環境であれば以下のコマンドを利用する。 ※こちらは方法1に比べて速度が遅いため、プロセス置換が使えない環境のみ使用 方法2 cat sample.tsv | awk -F '\t' 'BEGIN{OFS="\t"} \ {if(NR!=1){c="echo "$2" | uconv -x latin";c | getline r;close(c);}else{r="ローマ字"}print $1,$2,r,$3,$4,$5}' 名前 読み ローマ字 生年月日 出身地 所属コード 佐瀬 竜三 サセ リュウゾウ sase ri~yuuzou 1960/12/9 秋田県 05 福村 重光 フクムラ シゲミツ fukumura shigemitsu 1989/8/27 石川県 17 立野 夢 タチノ ユメ tachino yume 1997/10/15 山形県 06 長沼 綾奈 ナガヌマ アヤナ naganuma ayana 2008/7/29 香川県 37 坂井 正雄 サカイ マサオ sakai masao 1993/3/31 富山県 16 中村 奈保美 ナカムラ ナホミ nakamura nahomi 1979/1/30 山形県 06 清野 金蔵 キヨノ キンゾウ kiyono kinzou 1985/1/30 山口県 35 上記の方法で問題なければ完了。 まとめ shellでのひらがなやカタカナの扱いは難航するかと感じていたが、便利コマンドを利用することで簡素化を図ることができた。 他にも様々便利コマンドが存在していたため、必要に応じて利用していくことにする。 参考 uconv テストデータジェネレータ
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Linux に MySQLを実装する

ダウンロードとインストール サーバーのパッケージインデックスを更新 sudo apt update MySQLをインストール sudo apt install mysql-server セキュリティ設定 sudo mysql_secure_installation secure enough. Would you like to setup VALIDATE PASSWORD component? Press y|Y for Yes, any other key for No: Y Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2 rootユーザーのパスワードを設定 password: 100 パスワードの強さチェックを確認の後、Y を入力してスクリプトを継続します。 MySQLログインと設定 ログイン mysql -u root -p ワードプレス用のデータベース作成 CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci; ユーザーネームとホスト名 CREATE USER 'wordpressuser'@'%' IDENTIFIED WITH mysql_native_password BY 'パスワード'; ポイント 「`%`」の部分がホスト名。「`%`」のワイルドカードはホスト名を省略していることを表す。 →wordpressuser = wordpressuser@% 権限付与 GRANT ALL ON wordpress.* TO 'wordpressuser'@'%'; 権限の種類 レベル名 権限内容 格納先 グローバル レベル(G) 全てのデータベースに適用 mysql.user テーブル データベース レベル(D) 特定のデータベース内の全てのオブジェクトに適用 mysql.db テーブル テーブル レベル(T) 特定のテーブル内の全てのカラムに適用 mysql.tables_priv テーブル カラム レベル(C) 特定テーブル内の単一カラムに適用 mysql.columns_priv テーブル ルーチン レベル(R) ストアドルーチンに適用 mysql.procs_priv テーブル プロキシユーザー権限(P) 別のユーザーの代理になれる mysql.proxies_priv テーブル 権限のフラッシュ FLUSH PRIVILEGES; ユーザー一覧 SELECT User, Host FROM mysql.user;
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む