読者です 読者をやめる 読者になる 読者になる

くんすとの備忘録

プログラミングや環境設定の覚え書き。

Bash on Ubuntu on Windowsのchrootを試してみた

4/11の配信日が待ちきれないので、Insider Programに登録して新しいBash on Ubuntu on Windowsをいち早く試してみましたっ!

セットアップ

Windows Insider Program に登録し、Insiderのレベルを スロー に設定しました。

f:id:kunst1080:20170402234641p:plain

※登録してから更新が降ってくるまで、1日待ちました

Bash on Ubuntu on Windowsのバージョン確認

まずはBash on Ubuntu on Windowsの環境のバージョンを確認します。 uname -acat /etc/lsb-release で確認です。

f:id:kunst1080:20170402234720p:plain

uname -a

Linux DESKTOP-T3CMM04 4.4.0-43-Microsoft #1-Microsoft Wed Dec 31 14:42:53 PST 2014 x86_64 GNU/Linux

cat /etc/lsb-release

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.1 LTS"

ですね。

ここで、Creators Updateしてない版のbash(以降、「現行」)の方も見てみましょう。

f:id:kunst1080:20170402234728p:plain

※別マシンなので解像度は小さいですが…‥

見ての通り、Ubuntuのバージョンが14.04から16.04に上がったのがわかります。

日本語の表示

現行ではターミナルに日本語を入力すると横が切れたりしますが、Creators Update適用後は切れずに表示されるよう改善されたみたいです。

f:id:kunst1080:20170402234744p:plain

chroot対応の確認 - コンテナで遊ぼう

現行のBash on Ubuntu on Windowsではchrootに対応しておらず、中でコンテナを起動させたり、無理やりArchLinuxを動かしてもpacmanでエラーが出るといった問題が発生1していました。 リリースノート2によると、Creators Updateにchroot対応が含まれているようです。そういうことなので、いろいろコンテナを作って試してみたいと思います。

※自分の中ではこれが今回の一番の目玉!!!

Ubuntuのコンテナの作成

必要なパッケージのインストール

# apt install debootstrap

debootstrapを使ったUbuntuのインストール

違いがわかりやすいよう、XenialではなくVividを入れます。

# debootstrap vivid /srv/chroot/vivid http://ftp.riken.go.jp/Linux/ubuntu/
# cp -L /etc/resolv.conf /srv/chroot/vivid/etc

デバイスのマウント

bashを閉じる度に設定し直しになるので注意

# cd /srv/chroot
# mount -t proc none vivid/proc
# mount -t sysfs none vivid/sys
# mount -o bind /dev vivid/dev

ログインと確認

# chroot /srv/chroot/vivid /bin/bash

コンテナ内で

# uname -a
# cat /etc/lsb-release

f:id:kunst1080:20170402234757p:plain

ちゃんと環境が変わってますね!

※少し遊んでみましたが、chroot環境ではターミナル内でスクロールできなかったり日本語を入力できなかったりしますね。()これは普通のLinuxとかでのchrootと同じかな)

f:id:kunst1080:20170402234808p:plain

sudo付きでchrootするとわかりやすいんですが、ホストのプロセスが見えてるっぽいんですよね……

Debianのコンテナの作成

※動かそうとしたらセグフォったのでパス!

ArchLinuxのコンテナの作成(ブートストラップイメージを使う方法)

ArchWiki3を見ながらインストールを進めます。

ブートストラップイメージの取得と展開

# cd /tmp
# wget http://ftp.jaist.ac.jp/pub/Linux/ArchLinux/iso/latest/archlinux-bootstrap-2017.04.01-x86_64.tar.gz
# tar xzf archlinux-bootstrap-2017.04.01-x86_64.tar.gz
# mv root.x86_64 /srv/chroot/arch

デバイスのマウント

# mount --bind /srv/chroot/arch /srv/chroot/arch
# cd /srv/chroot/arch
# cp /etc/resolv.conf etc
# mount -t proc /proc proc
# mount --rbind /sys sys
# mount --rbind /dev dev
# mount --rbind /run run

pacmanの設定

pacmanで使用するmirrorlistのファイルを先に修正しておきます。

# vim /srv/chroot/arch/etc/pacman.d/mirrorlist

好きなミラーサーバのコメントを外しておきます。

ログインと環境のセットアップ

ログイン

# chroot /srv/chroot/arch /bin/bash

コンテナ内で環境をセットアップ

# pacman-key --init
# pacman-key --populate archlinux
# pacman -Syy
# pacman -S base

動作確認(gitのインストール)

# pacman -S git

f:id:kunst1080:20170402234826p:plain

Archちゃん動きました。

ArchLinuxのコンテナの作成(LiveCD イメージを使う方法)

airootfs.sfsの取得

# apt install -y squashfs-tools p7zip-full
# wget http://ftp.jaist.ac.jp/pub/Linux/ArchLinux/iso/latest/archlinux-2017.04.01-x86_64.iso
# 7z x archlinux-*.iso
# cp arch/x86_64/airootfs.sfs /srv/chroot/

airootfs.sfsからルートイメージの取り出し

# cd /srv/chroot
# unsquashfs airootfs.sfs
# mv squashfs-root arch2
# rm airootfs.sfs

デバイスのマウント

# mount --bind /srv/chroot/arch2 /srv/chroot/arch2
# cd /srv/chroot/arch2
# cp /etc/resolv.conf etc
# mount -t proc none proc
# mount -t sysfs none sys
# mount -o bind /dev dev
# mount -o bind /dev/pts dev/pts

ログインと環境のセットアップ

ログイン

# chroot /srv/chroot/arch2 /bin/bash

コンテナ内で環境をセットアップ

# pacman-key --init
# pacman-key --populate archlinux
# pacman -Syy

動作確認(gitのインストール)

# pacman -S git

f:id:kunst1080:20170402234840p:plain

どちらの方法でも動くようです。

環境をArchLinuxに入れ替える

前回(http://www.kunst1080.net/entry/2016/08/26/001940)と同じ手順でできました。

違うところは

  • isoのダウンロード用URLが変わってるので要チェック
  • resolv.conf書きましょう
  • pacmanでエラー出なくなってました。

f:id:kunst1080:20170402234854p:plain

前よりちゃんと使えそうです。


ひとまずこんな感じで!
これは本格的に色々コンテナ作って遊べそうです!!

参考URL

Vue.jsでリストの一部をレンダリングする

v-for="item in items"でアイテムのリストを描画する際、itemssliceしてやることでリストの一部だけを描画することができるようです。

※やってみたらできた;)

サンプルコード

<html><body>

<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.2.4/vue.min.js"></script>

<div id="sample">

  <h4>List1</h4>
  <ul>
    <li v-for="item in items.slice(0,2)">
      item = {{item}}
    </li>
  </ul>

  <h4>List2</h4>
  <ul>
    <li v-for="item in items.slice(2,4)">
      item = {{item}}
    </li>
  </ul>

  <h4>List3</h4>
  <ul>
    <li v-for="item in items.slice(4,6)">
      item = {{item}}
    </li>
  </ul>

</div>

<script>
var vm = new Vue({
    el: "#sample",
    data: {
        items: ["a", "b", "c"]
    }
});

// 要素を追加すると、sliceで割り当てられた部分に描画される
vm.items.push("d");
vm.items.push("e");
vm.items.push("f");

</script>

</body></html>

サンプル表示

f:id:kunst1080:20170317215301p:plain

関連するマニュアルのURL

ティラノスクリプトでウィンドウサイズを固定する設定

package.jsonにウィンドウサイズの設定を書くと思いますが、widthheightだけでは狙ったサイズになりません。 max_widthmax_heightも設定する必要があるようです。

例) ウィンドウサイズを960x540で固定したい場合

max_width、max_heightの設定がないとき

  • package.json
{
    "name": "tyranoscript",
    "main": "app://./index.html",
    "window": {
        "title": "setup tyrano engine",
        "icon": "link.png",
        "toolbar": false,
        "resizable": false,
        "frame": true,
        "width": 960,
        "height": 540,
        "position": "mouse"
    },
    "webkit": {
        "plugin": true
    }
}
  • プレビュー

f:id:kunst1080:20170317210659p:plain

このように、微妙に余白ができてしまいます。

max_width、max_heightの設定があるとき

{
    "name": "tyranoscript",
    "main": "app://./index.html",
    "window": {
        "title": "setup tyrano engine",
        "icon": "link.png",
        "toolbar": false,
        "resizable": false,
        "frame": true,
        "width": 960,
        "height": 540,
        "max_width": 960,  // ← これ
        "max_height": 540, // ← これ
        "position": "mouse"
    },
    "webkit": {
        "plugin": true
    }
}
  • プレビュー

f:id:kunst1080:20170317210822p:plain

きれいに表示されました。

二次請けSE案件やってた頃の仕事の流れ

人と仕事の話をするときに、指示する・されるという話がよくわからなかった(そういう風にはしていなかった、と思ってる…)ので、とりあえず書いて晒して確認してみようという意図で書きました。

※マズかったら消す。でも多分マズくはないはず……
※あまり詳しく書くと恥ずかしいTwitterアカウントがバレてマズいというのはある

前提

メンバー

  • リーダー (サブシステム A~C担当)
  • SE1 (主にサブシステムAとC担当)
  • SE2 (主にサブシステムB担当)
  • PG1 (主にサブシステムAとB担当)
  • PG2 = 自分 (主にサブシステムCとD担当)

※ここの「~を担当」は、一番詳しいとかその程度の意味で、明確に線引はされていない。
※SEとPGは職務等級が違うだけでやることは同じ。
※プログラミングは元請けからの別の外注さん

契約形態

持ち帰りの請負。(SESではない)

ざっくりした業務内容

  • ホスト(COBOL系)のシステムや、ホストと連携するWindowsのCSのシステムの保守
  • 機能追加や修正、調査・データ抽出など

案件の流れ

それぞれがフェーズを持つというより、それぞれが案件を持つ形で案件を進めていきました。

※基本的に担当者(リーダー~PG2のうちの誰か)目線で書いています。主語や目的語がなければ担当者。

①案件の発生

  • 元請けさんから電話かメールで問い合わせが来る

    • 一旦、一番詳しそうな人に投げる
    • 最終的に受け取った人(= 担当者)とリーダーさんで、こんな案件が来ましたよ―対応しますよーっていう話をする
      • みんなが聞こえるように相談して情報共有
        • 例えばリーダーさんとSE1で相談してるときに横からPG1・PG2がツッコミをいれることも普通にある
    • だいたいどんな案件か決まったところで案件のリスト(Excel)に追記する
      • 自側の担当者・元請側の担当者・本番日(決まっている場合)を書く
  • 週次の打ち合わせで案件整理

    • 基本的に元請け側・自側全員出席する
    • 案件の担当者を決定(決めていなかった場合)
    • 進捗や情況の確認
    • 保留のまま流れた案件の除去など
  • 調査系とプロジェクト系で分岐

    • 調査系: 後でメール + 説明の電話でクローズ
    • プロジェクト系: 次のステップへ(見積もり)

②見積もり

  • 対応範囲・工数・請求額を見積もる

    • サブシステムに跨るときや、自分以外にも詳しそうな人がいる場合は積極的に相談する
    • 元請けさんにも案件のことを根掘り葉掘り聞く
      • 予算も確認する
      • 納期や予算の関係で捨てる部分なども打ち合わせる
  • 見積もりができたら内部レビュー

    • 上下関係関係なくレビューが必要
    • 規模が大きいとき(1人月超)は全員でレビュー
    • 小規模でも、忙しくないときは全員でレビュー
  • 見積書に含めるもの

    • 各工程の工数
    • 対応期間(人数や作業の順番の考慮があるので、工数と対応期間は別)
    • 納期(本番日)
    • 対応範囲
      • やること・やらないこと
      • 例えばテストを一部省くだとか、元請けさんにテストをやってもらって値引くとかそういうことはちゃんと書く
  • 見積もりができたら、作業の計画はざっくり完了している

③設計・テスト

  • 設計書を書いたりプログラム作成を依頼したりテストをしたりする

  • 本番作業が絡むものや日付に意味がある場合は対応スケジュールを作成する

    • 入れ替えは16日以降20日以前じゃないとダメ、とかそういう時
  • 設計・テストの両方で、内部レビューと外部レビューを行う

    • 内部レビューは基本的に全員で実施。忙しい場合は最低限、リーダーと担当者で実施。
      • このとき、(ついでに)担当外の人にノウハウを共有したりもする
        • ノウハウの共有は、後で「ああ、そういえばあんな単語聞いたことあるなぁ…」と思わせる程度からじわじわ始める
    • 外部レビューは基本的に元請けさんと自側全員で実施。忙しい場合は最低限、元請けさんとリーダーと担当者で。

④本番

  • リリース前にリーダーにチェックしてもらってリリース。リーダーは他の人にチェックしてもらってリリース。
    • 忙しくない場合は全員でチェック

まとめ

  • こんな感じでそれぞれが案件を持ってそれぞれ動いていて、あんまり指示したりされたり、っていう感じでは……
  • 指示というより、相談が多かったかも。

「第27回シェル芸勉強会 大阪サテライト」レポート

02/11(土)に東京で行われた「jus共催 第9回初心者満足度ナンバーワン(当社調べ・調べてないけど)シェル勉強会/第27回sedこわいシェル芸勉強会」について、今回も大阪でサテライトしました!

イベント情報

東京(本家)

usptomo.doorkeeper.jp

今回も、大阪(私達)と、福岡でサテライト会場がありました。

大阪サテライト

atnd.org

福岡サテライト

atnd.org

ぱぴろん(@papiron)さんによるまとめ

papiro.hatenablog.jp

大阪サテライトレポート

参加者

今回の参加者は、私も含めて12人、うち、初参加は1名でした。
じわじわ初心者が増えてきてよいですね。

また今回、西日本では大雪の心配があったので、前日にメールとTwitterで注意喚起の告知を行いました。

(@t_motookaさん、促して下さってありがとうございました!)

会場のようす

午前

鳥海秀一さん「黒い画面と戯れよう」


sttyコマンドやtputコマンドを使って、ターミナルにエスケープシーケンスを送って遊ぶという感じの内容でした。
ターミナル生活をしていく上で、この辺のことを知っていると思わぬところで救われそうな感じですね。

石井久治さん(@hisaharu)「シェル芸入門 日常会話編」


シェル・コマンド・パイプなどについて、図解でわかりやすく解説した講義でした。初心者の方は必見だと思います!

おひる

大阪はお昼ごはんを食べつつ、午後に向けてsedの予習をしておりました。嵐の前の静けさとはこのこと――

午後

sedこわい(こわい

sedで置換以外のことをする方法や、コマンドを並べて各方法、ループの使い方など、置換以外の基本的な機能を使い倒した感じです。
ループはあとでもう一回復習しよう……

LTのようす

東京

大阪

今回はちょっと少なめですが、今回もUstreamで配信して頂けました!(録画はナシです)

日柳 光久(@mikkun_jp) さん 「Q7の解説」


Q7で「縛り1: 使うコマンドはseq、cp、sedだけ」と「縛り2: ワンライナー中で数字を使わない」という縛りがあったのですが、 その両方の条件を満たす解とその解説です。 カジュアルに/etc/passwdを使うことに若干の危険なかほりを感じますw

@t_motooka さん 「sedで知る 矢印キーのキーコード」


sed -n lしてからキー入力し、Enterを押すと、ターミナル上に矢印キーのキーコードが表示されます。やってみましょう!

@nmrmsys さん 「我は放つ、危険のシェル芸!!(誤爆)」

スライド: https://dl.dropboxusercontent.com/u/54939588/slides/I-Will-Release-Dangerous-Shell-Arts.html

スター・ウォーズ Force Band™ by Sphero」というガジェットを使って、スターウォーズのジェスチャーで危険シェル芸を放つ!という実演でした。普通の危険シェル芸だと一気にサーバがダウンしてしまうのですが、今回は徐々にダウンしていく状況を確認するべく「マイルドな危険シェル芸」を仕込んで来ていただきました!

今回はサーバ側のトラブルで不発でした……ので、できれば次回にリベンジしていただければと! よろしくお願いします!

まとめ

上田会長、東京・福岡・大阪の皆様、お疲れ様でした。
フェンリル様、会場使わせて下さってありがとうございました!

次回もまたよろしくお願いします!!

追記

危険な派生物が誕生してしまったようです…

iPhoneをiTunesを使って移行したときに引き継がれたもの・引き継がれなかったもの

昨日、iPhoneを66sに移行しました。その際、iTunesを使ってバックアップとリストアをしたので、引き継がれたものと引き継がれなかったもの(再設定が必要だったもの)をざっくりメモとして残しておきます。

※iTunesの設定で、iPhoneのバックアップは暗号化した状態で。

引き継がれたもの

  • 公式系
    • アドレス帳
    • SMS履歴
    • 通話履歴
    • 目覚まし設定
    • ユーザー辞書
    • 設定アプリで設定した内容
    • 写真
  • ゲーム
    • スクフェスのユーザデータ(アカウント引き継ぎしなくても大丈夫だった)
  • その他のアプリ
    • LINE(再認証すればOK。履歴も残ってた)
    • Twitter
    • feather
    • Facebook
    • Wunderlist
    • Slack
    • Pocket
    • サイボウズLive
    • ビブリア
    • vSSH
    • RD Client
    • その他だいたいのアプリの設定

引き継がれなかったもの

  • 公式系
    • アプリへの各種アクセス許可設定
  • ゲーム
    • スクフェスの設定(カットインがONになってた…)
    • スクフェスのゲームデータ(再ダウンロードが必要)
    • FGOのユーザデータ・ゲームデータ(アカウントの引き継ぎが必要)
  • その他のアプリ
    • Gmail
    • kindle
    • BookWalker

情報処理安全確保支援士に申し込みました

情報処理安全確保支援士に申し込みました。 www.ipa.go.jp

その時の記録。

※情報が間違ってたり途中で変わったりする可能性があるので、登録をする人はちゃんと公式HPを見てね。これは、自分のときはこうだったよ~っていう記録ね。

準備物

登録料の支払い

  • 登録免許税
    • 9,000円(収入印紙)
    • 収入印紙を申請書に貼り付ける
    • 法務局に行ったついでに購入
  • 登録手数料
    • 10,700円(振込み)
    • ネットから銀行振込して、その結果画面を印刷して申請書類に同封

役所から取得したもの

  • 登記されていないことの証明書
    • 法務局で取得
    • ややこしいけど、「登記されていないことの証明書」って言う名前の証明書がある
    • 法務局の「本局」でしか取り扱ってない
    • 本籍地とか関係ないのでどこでもいい
  • 身分証明書
    • 本籍地の役場で取得
  • 住民票の写し
    • 大阪市民なので、サービスカウンターで取得

IPAのサイトから印刷したもの

  • 登録申請書
    • 要: Adobe Acrobat Reader DC (項目の入力とQRコードの生成で使用)
      • Google ChromeやFireFoxのPDFリーダーではちゃんと動かなかったorz
      • 情報セキュリティの資格なのにこんな危険なソフトを使わせるのは如何なものか
        • 使い終わったのでアンインストールした
  • 誓約書
  • 登録事項等公開届出書
    • 勤務先の情報 以外 はフルオープンにしときました
      • 変わったとき面倒だし…
    • 登録番号、登録年月日、試験合格の年月、講習の修了年月日、氏名、生年月日の年月、試験合格の合格番号、居住都道府県
  • 登録申請チェックリスト
    • チェックリストかぁ……(非常に有用だけれども……)

その他

  • 支援士試験等の合格証書のコピー
    • 2013年春に取得した「情報セキュリティスペシャリスト試験」の合格証書をコピー

登録タイミングについて

年に2回しか登録できません。注意!!

  • 上期・・・10/1
    • 申請の受付期限:7/31(当日消印有効)
  • 下期・・・4/1
    • 申請の受付期限:1/31(当日消印有効)

コスト見積もり

明細

登録料 ※初回のみ

  • 登録免許税: 9,000円
  • 登録手数料: 10,700円 + 振込手数料 210円

証明書類 ※初回のみ

  • 登記されていないことの証明書: 300円
  • 身分証明書: 300円
  • 住民票の写し: 300円

送料 ※初回のみ

  • 送料: 82円
  • 簡易書留: 310円

講習 ※毎年

  • オンライン講習: 20,000円 ※毎年、6時間
  • 集合講習: 80,000円 ※3年に1回、6時間
    • 試験合格から3年以上経っている場合は初年度に受講が必要

合計

集計

  • 申請にかかる費用: 21,202円
  • 3年間の講習費用: 140,000円

3年ごとの月割計算

  • 1~3年目
    • 合計: 161,202円 (21,202円 + 140,000円)
    • 月割: 4,478円
  • 3年目以降
    • 合計: 140,000円
    • 月割: 3,889円

申請するに至った経緯(ざっくり)

上司「情報セキュリティスペシャリスト(SC)の試験廃止になったから、資格手当なくします」
ぼく「ファッ!?」
上司「代わりに情報処理安全確保支援士取ったら出します」
ぼく「登録料は会社から出る?」
上司「出ません」
ぼく「👎👎👎」

まとめ

実質月額5,000円弱の保守コストが発生👎

宛先が長すぎて腱鞘炎になりそう👎

広告