くんすとの備忘録

IT系技術メモ

移転しました。

15秒後に自動的にリダイレクトします。

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

01/27(土)に東京で行われた「jus共催 第33回めでたいシェル芸勉強会」について、今回も大阪でサテライトしました!

※レポート、ちょっと省力化してます

イベント情報

東京(本家)

usptomo.doorkeeper.jp

大阪サテライト

atnd.org

福岡サテライト

atnd.org

イベントのようす

まとめ

問題・解答例・東京LT・togetterなどは本家の方にまとまっています。

jus共催 第33回めでたいシェル芸勉強会の報告 | 上田ブログ

大阪サテライトレポート

参加者

今回はフェンリルさんに会場をお願いしました。
OSCと被ってしまったため来られない方もいらっしゃり、今回の参加者は8名で、初めましての方は1名でした。

LTのようす

今回もYoutubeで配信していただけました! 録画はコチラ↓

MSR(@msr386) さん 「Amazon Dash Hack」

so(@3socha) さん 「Contributions Graph芸」

くんすと(@kunst1080) 「Dockerを使ったクライアントハイパーバイザー」

※作成中のため、今回はスライドの公開は無しです

小原 一哉(@KoharaKazuya) さん 「macOS 濁点問題にシェル芸で挑んだ話」


まとめ

お疲れ様でした! 次回もよろしくお願いします!

Java でa == 1 && a == 2 && a == 3やってみた

== じゃなくて、equals ならできる……

public class Main {

    public static void main(String[] args) {
        
        MyInt a = new MyInt(1);

        if (a.equals(1) && a.equals(2) && a.equals(3)) {
            System.out.println("true");
        } else {
            System.out.println("false");
        }    
    }
}

class MyInt {
    int i;

    public MyInt(int i) {
        this.i = i;
    }

    @Override
    public boolean equals(Object i) {
        return (int)i == this.i++;
    }
}
$ javac Main.java
$ java Main
true

GNU Coreutilsをdockerでビルドする

昨日、GNU Coreutilsをビルドする手順を紹介しましたが、環境を汚したくないのでdocker化しました。

github.com

使い方

リポジトリのチェックアウト

$ git clone --recursive https://github.com/kunst1080/docker-build-coreutils
$ cd docker-build-coreutils
$ ./cleanup-submodule.sh

./cleanup-submodule.sh は絶対パスで指定されているサブモジュールのパスを相対パスに再設定するためのスクリプトです。これをやらないと、dockerコンテナ内でビルドできません。

dockerコンテナのビルド

$ ./docker-build.sh

./bootstrap, ./configure, make の実行

$ ./bootstrap.sh
$ ./configure.sh
$ ./make.sh

リポジトリの coreutils/src ディレクトリの中にビルド後のバイナリが出来上がって〼

GNU Coreutilsを自分でビルドする

lsrm など、GNU Coreutilsのコマンドを改造したいと思ったことはありませんか? そういうときは、自分でGNU Coreutilsをビルとする必要があります。やってみましょう。

GNU CoreutilsのソースはGitHubにミラーが上がっているので、それをcloneしてビルドするだけです。

github.com

検証環境

  • Ubuntu 16.04 LTS

手順

必要なコマンド・ライブラリのインストール

ビルドの際、 ./bootstrap./configure を実行したときに必要なコマンド・ライブラリがあるかどうかチェックされます。 セットアップ直後の状態で試してみると、以下のコマンド・ライブラリが足りないとメッセージが表示されました。

  • ./bootstrap

    • autoconf
    • automake
    • autopoint
    • bison
    • gettext
    • git
    • gperf
    • makeinfo ← パッケージはtexinfo
    • patch
    • rsync
    • xz ← パッケージはxz-utils
  • ./configure

    • gcc
    • g++
  • make に必要

    • make

全て合わせて、以下のようなコマンドでインストールしておきます。

$ apt install --no-install-recommends \
    autoconf \
    automake \
    autopoint \
    bison \
    gettext \
    git \
    gperf \
    texinfo \
    patch \
    rsync \
    xz-utils \
    gcc \
    g++ \
    make
  • --no-install-recommends オプションはお好みで。
  • ※こんなに神経質にやらなくても、半分くらいは apt install build-essential で入る。

リポジトリの取得

GitHubからcloneします。サブモジュール付きなので注意。

$ git clone --recursive https://github.com/coreutils/coreutils.git

ビルド設定

makeの準備をします。

cloneしたディレクトリに移動して

$ cd coreutils

bootstrap を叩き

$ ./bootstrap

./configure します。

$ ./configure

make

全体をビルドする場合

$ make

これで全てのソースがコンパイルされ、 src ディレクトリに実行可能ファイルが作成されます。

特定のコマンドだけビルドする場合

……はできないよう1で、一度上記の手順で make する必要があります。

rm コマンドだけを再度ビルドしたい場合は以下のようにします。

$ make src/rm

必要なソースだけがコンパイルされ、 src ディレクトリに実行可能ファイルが作成されます。

セルフネグレクト寸前の中年男性が自炊・中食・外食のリアルなコストを比較してみた

限界オタクのみなさまこんにちは。

「自炊と中食と外食と、実際それぞれいくらくらいかかるの?」と日頃疑問に思うことは多いと思います。 ネットで検索してみても、外食のパターンでは朝食まで外食になっていたり、外食費が1500円とかになっていて「いやいや流石にそれはねぇよ…」ってなることが多いのではないでしょうか?

自分は普段から自炊・中食・外食をそれぞれやっているので、ここではその際の数字をもとに各パターンごとの食費を計算し、よりリアルな自炊・中食・外食での食費を示したいと思います。

※記事の最後に表がありますので、結果だけ見たいという方は最後までスクロールしちゃってください。

前提

  • 筆者は一人暮らしの中年男性
  • 近所に業務用スーパーはなく、ライフで買い物をしています
  • 少食
  • 酒と煙草はやりません

朝食・昼食・夕食のパターンと食費

朝食

朝食は基本的に、食パンにチーズを載せて食べます。

食パン

  • 食パン 1枚: 18円 (6枚切り 108円)
  • チーズ 1枚: 26円 (6枚入り 156円)
  • 牛乳 200ml: 33円 (900ml 150円)

→ 合計: 77円

昼食

昼食は、外食(コンビニ含む)のパターンと、お弁当を作ってくるパターンがあります。

外食(コンビニ含む)

お店や買うものによって変動しますが、よく食べるものを代表としてざっくり計算します。

  • なか卯で食べる場合
    • 牛丼ミニ+サラダ・味噌汁セット: 510円
    • うどんミニ+サラダ・豚汁セット: 470円
  • コンビニで買う場合
    • パスタサラダと肉まん: 500円

→ だいたい: 500円

お弁当

  • ご飯1食分: 43円 (3kg 1 = 20合 = 46食 2000円)
  • 冷凍食品 肉系 * 4: 107円 (6個入り 160円)
  • 冷凍食品 野菜 * 2: 53円 (6個入り 160円)

→ 合計: 203円

夕食

夕食は、自炊・中食・外食のパターンがあります。

自炊

調理方法は無視して材料費を出します

  • ご飯1食分: 43円 (昼食と同じ)
  • 肉: 128円 (100g 160円のものを80g)
  • 野菜: 67円 (200円分くらい買って3回に分けて使う)
  • 小物: 33円 (納豆/しらす/豆腐/etc)

→ 合計: 271円

中食

お惣菜を2品くらい買って帰ります

  • ご飯1食分: 43円 (昼食と同じ)
  • メイン惣菜: 216円 (肉とか)
  • サブ惣菜: 108円 (野菜とか)

→ 合計: 367円

外食

お昼の外食と同じなので省略

集計

各パターンの食費が出揃いましたので、表にまとめます。

朝パターン 昼パターン 夜パターン 朝食 昼食 夕食 1日 1ヶ月
食パン 外食 外食 77 500 500 1,077 33,387
中食 77 500 367 944 29,264
自炊 77 500 271 848 26,288
弁当 外食 77 203 500 780 24,180
中食 77 203 367 647 20,057
自炊 77 203 271 551 17,081

だいたいこんな感じになりました。 実際はこの他にコーヒーやおやつをかったり、自炊する場合は調味料を買い足したりしてもうちょい増えると思いますが。

生活見直しのご参考になればと。


  1. お米は5kgや10kgで買う方が安いが、使いきらないと虫が湧く。自炊のモチベーションが上下しやすいオッサンは3kgが妥当。

【雑メモ】CoreOSのDockerコンテナからstartx(成功したとは言いがたい)

環境

  • 本体: TOSHIBA dynabook R730 (PR730BAAN3BA51)
  • OS: CoreOS Stable
$ uname -a
Linux 48a93ce4bbe9 4.14.11-coreos #1 SMP Fri Jan 5 11:00:14 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

メモ

最近、Dockerコンテナから startx して直接ホストのディスプレイを叩くというやつをやってます。

これを使うと、X Window SystemをまるごとDockerコンテナに閉じ込めつつネイティブと同じ(だと思う)パフォーマンスでGUI環境を使うことができます。

※この記事も、その環境上で書いてます。

Ubuntu Server 17.04ではうまくいったのでCoreOSに移行してきたのですが……
どうやらディスプレイをうまく認識してくれないようです。
(デュアルディスプレイにしているが、片方でしか表示できなくなってしまった…)

xrandrの結果はこんな感じ。
Ubuntuのときは LVDS1(内蔵モニタ) と HDMI1(外付けモニタ) が認識されていたのに、CoreOSにすると Screen 0 だけになってしまってエラーも出ている。

$ xrandr        
xrandr: Failed to get size of gamma for output default
Screen 0: minimum 640 x 480, current 1600 x 1200, maximum 1600 x 1200
default connected 1600x1200+0+0 0mm x 0mm
   1600x1200      0.00* 
   1280x1024      0.00  
   1024x768       0.00  
   800x600        0.00  
   640x480        0.00 

startxのログに怪しいログが出ていて、intelグラフィックドライバがカーネルに組み込まれてない関係の問題の予感がします。

modprobe: FATAL: Module i915 not found in directory /lib/modules/4.14.11-coreos
modprobe: FATAL: Module fbcon not found in directory /lib/modules/4.14.11-coreos
intel: waited 2020 ms for i915.ko driver to load
modprobe: FATAL: Module i915 not found in directory /lib/modules/4.14.11-coreos

とりあえず状況をメモ。

さてさてここからどうするか……

参考になりそう

夕方追記

j4-dmenu-desktopのフォントを変更する方法

j4-dmenu-desktopの--dmenuオプションで、dmenuの起動オプションを指定できるらしい。

github.com

たとえば、

  • フォント名: MigMix 1P
  • フォントサイズ: 12

の場合は以下のように指定するとうまくいった。

j4-dmenu-desktop --dmenu="dmenu -fn 'MigMix 1P-12'"