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

ichily.blog

{ "${it} is always there :)" }

DHCPサーバーが存在する環境でPXE boot用tftpサーバー作る設定を引っ張り出した

概要

192.168.100.10のマシンにdnsmasqでProxy DHCP兼TFTPサーバーを立てて頑張ってもらう。
Kickstart, UEFI対応は含まれていない(自分がこれを参照する場所では使うメリットがない)。

設定

yum install syslinux
mkdir -p /var/tftpboot/pxelinux.cfg
cd /var/tftpboot
cp -pr /var/share/syslinux ./
cp -p syslinux/pxelinux.0 ./
mkdir -p centos/7
cd cetnos/7
wget http://ftp.iij.ad.jp/pub/linux/centos/7/os/x86_64/images/pxeboot/vmlinuz
wget http://ftp.iij.ad.jp/pub/linux/centos/7/os/x86_64/images/pxeboot/initrd.img
vi /var/tftpboot/pxelinux.cfg/default

/var/tftpboot/pxelinux.cfg/default

default syslinux/menu.c32
timeout 300

menu title PXE Boot Menu

# [ftp_server]をURLに置換する
LABEL centos7
        MENU LABEL centos. CentOS-7.0-x86_64 Installer
        kernel centos/7/vmlinuz
        append initrd=centos/7/initrd.img inst.repo=[ftp_server]/pub/linux/centos/7/os/x86_64/

# 2つ目以降を作るならこんな風に
# LABEL centos6
#         MENU LABEL centos. CentOS-6.0-x86_64 Installer
#         kernel centos/6/vmlinuz
#         append initrd=centos/6/initrd.img inst.repo=[ftp_server]/pub/linux/centos/6/os/x86_64/

DHCPサーバーが既にあるLAN内でTFTP兼DHCPとしてdnsmasqを利用する設定。
/etc/dnsmasq.d/proxydhcp.conf

enable-tftp
tftp-root=/var/tftpboot

# set server as proxy dhcp
dhcp-range=192.168.100.0,proxy

pxe-service=x86PC, "PXE Boot ", "pxelinux", 192.168.100.10
pxe-prompt="press [Enter]"

# boot file
dhcp-boot=./pxelinux.0

エラーとか

pxelinux.cfg, menu.c32を違うところから取得すると Failed to load COM32 files のようなエラーが出てしくじる。 PXE bootの設定でつまづき、あちこちを参照しながらやった時にありがち。

2017/04/30 の半月記

なんだかあまり記録を残すモチベーションが上がらなかったようだ。酷い話が多かったからかも。

たとえば、UPQがある型番のディスプレイ全てについて、製品のウリである部分の性能が表記と違ったのに、2千円のギフトを配るだけで済まそうとして炎上していた。
しかし今のところ対応を変える気は無さそう。

という有様なのに、某プログラミングできるのが売りのタレント氏が「日本はミスに厳しい」と無理筋な擁護していた。批判されているのは対応の方で、ミスした後の話。
「まあこの人もエンジニアと名乗りつつインタビューとか読むと企画屋さん的な発言してるし、ものづくり言いつつ企画と輸入メインな企業に思うところあるのかな」などと考えていたら、炎上芸を披露しはじめた。

政治方面も相変わらずで。

原子力機構は審査申請の際、熱出力を従来の14万キロワットから10万キロワットに変更したが、規制委側は「設備は14万キロワットのままだ。出力と設備の性能を合わせるべきだ」として、原子力機構が補正申請するまで審査は保留するとした。  原子力災害対策指針の改正で、避難計画の策定が必要な範囲が出力10万キロワット以下は半径5キロ圏なのに対し、10万キロワット超では30キロ圏に大幅に拡大する。 東京新聞:原研の常陽、出力巡り審査保留に 原子力規制委、補正求める:社会(TOKYO Web)

とか。
最も原子力関連施設の運用については、以前から「科学的にどうか」にたどり着く前の時点で話にならないのに、それでも現在の体制を作れてるので今後もあまり気にかけなさそう。 個人的に「すごいえねるぎー」としての原子力には発展して欲しいけど、狭い国土で運用するのが現体制で、というのは勘弁してほしい。

色々

尾道に言ったら買う。

2017/04/15 の週記もど記

雑感

四月前半。肯定ペンギンのあかちゃんシリーズを知ったのが一番の収穫だったような気がする。。

悪かった方面では、ダニらしきやつに刺されたのでバルサンを炊いた。
この部屋は数か月に一度くらい奴らが侵入してくるようで大変つらい。早く引っ越したい。

「奴ら」といえば、一時期チャバネゴキブリに住みつかれたことがあり、大変難儀した。
おかげで壁を行くGをコップに閉じ込め、這い上がれない程度の振動を与えつつトイレに投げ込んで流すという、今後なんの役にも立たないだろう技術が身についてしまった。
完全に住みつかれてしまったのだが、メインの巣になっている辺りを片付けて、狭い部屋に6畳用のコンバットを2つ配置したら、ほぼ絶滅した。
今は年に1匹見るかどうかだ。コンバット凄すぎでは。

KINCHO コンバット ゴキブリ殺虫剤 大型容器 4個入

KINCHO コンバット ゴキブリ殺虫剤 大型容器 4個入

Twitterでは、18Million RTでナゲットをゲットしたい!!と言ってたカーターさんが、すっかり有名人になっていた。
あと17,000 RTくらいで「最もRTされたツイート」になるらしい。 Carter Wilkerson (@carterjwm) | Twitter

色々

2017/03/31 の週記もど記

人類には面倒くさ過ぎた

URLのこと。ぞろぞろと連なる文字列を打ち込みたがる物好きなど大しておらず、アプリアイコンクリックで遷移できれば、URLなんぞ見たくもないのではないか。 しぶしぶ覚えたり、分厚い電話帳とにらめっこしていた、電話番号が連絡先付き携帯電話の普及とともに意識されなくなったように。

espresso

espressoでのテスト時、AlertDialogで good というボタンを設定している時、それを押す。というテスト。 ソフトウェアキーボードが表示されていると(それで隠されていなくとも)失敗するのでperform(closeSoftKeyboard())する。

Android

今更ながらFCMを用いた通知を実装することになった。
公式ドキュメント通りに10.0.1でやったらFirebaseMessagingServiceを継承したクラスでhandleIntent(p0: Intent)のオーバーライドを求められた。
しかしそんな記述はなさそう。
???と思いつつ10.2.1にしたら消えた。

compile 'com.google.firebase:firebase-core:10.2.1'
compile 'com.google.firebase:firebase-messaging:10.2.1'

FCMを用いた通知のうち、トピックはブログやチャンネルを購読するイメージ。

FirebaseMessaging.getInstance().subscribeToTopic("test") // testを購読
FirebaseMessaging.getInstance().unsubscribeFromTopic("test2") // test2の購読解除

複数購読もいける。

色々

2017/03/15 の週記もど記

MMOについて

最近のMMOはストーリーが有るのが主流で、プレイヤーは主役にされてしまっている感がある。
世界は勝手に進んで行き、ストーリーに絡むクエストはやってもやらなくても構わない形にして欲しい。 主役になるか、脇役になるか、通行人Aになるか、そういう自由がないな。 などと考えていた。

色々

KotlinでMockitoを使うだけの話

概要

Kotlin使ったらMockitoさんがキレたのでMockMackerプラグインを入れた。

経緯と詳細

最近Androidアプリ開発でうだうだしているので触っているKotlin。良い感じなのだが、すべてのクラス・メソッドがfinalになるのでMockitoさんがキレる。

Mockito cannot mock/spy following:
  - final classesMockito cannot mock/spy following:
  - final classes
    ...

もーヒートアップしないでくださいよ。

Webでこの話を追うと、当初この問題で行われたアプローチが3つ。

  • クラスを全部 open にする
    テストのためだけにコード変更するのやだなあ

  • インターフェースにしよう
    テストのためだけにコード変更するのやだなあ

  • PowerMock使え
    Mockito2以降への対応が今一つでゴリゴリ例外が飛んでくるやだなあ

という感じでTestRunnerを拡張して解決する人が現れ、そうこうするうちにMockitoがMockMakerというのを実装した(Mockito 2.1以降?)のでこれを使うのがよさげ、という流れっぽい。

dependencies {
    ...
    testCompile 'junit:junit:4.12'
    testCompile 'org.mockito:mockito-core:2.7.15'
    androidTestCompile 'org.mockito:mockito-android:2.7.15'
    ...
}

こんなんで。

あと、test/resources/mockito-extensions/org.mockito.plugins.MockMakerというファイルに公式サイトにある通り書き込んで保存。
What’s new in Mockito 2 · mockito/mockito Wiki · GitHub

うまくいくので、PowerMockが使われているプロジェクトをKotlinに変換してみたらしんでしまった。なんだっけ、Could not copy test/resources/mockito-extensions/org.mockito.plugins.MockMaker to build/...みたいなこと言ってた気がする。後で何とかしよう、まずは軽率に例外を投げるPowerMockとMockito2.xのペアを泣き別れさせるべくPowerMock部分を全部削って*1、、とかやっているうちに動くようになってしまった。なんで。

切り分けは気が向いたら。

その後

素直に動いているっぽい。

恐怖のアフィリエイト

Kotlinスタートブック -新しいAndroidプログラミング

Kotlinスタートブック -新しいAndroidプログラミング

*1:そしてなぜか全部削れてしまう