Rustにアセンブリを吐かせる方法

この記事はseccamp2017 Advent Calendar 2017の十六日目の記事です。

OS開発でどんなアセンブリにしてるか知りたいとき、xargoとか使っておきながらrustcにアセンブリを吐かせる方法は
手っ取り早い方法がxargoなりmakeなりする端末で、
env RUSTFLAGS="--emit asm" make ウンタラ
か、いっそ
export RUSTFLAGS="--emit asm"
しとけば
/target/(target-name)/(release or debug)/deps/に.sで吐かれてます。
以上

Rustのバイナリをstripしたらサイズが激減したお話

この記事はseccamp2017 Advent Calendar 2017の八日目の記事です。

短く。
Rustのバイナリですが、リリースビルドにしても

$ls -l test
-rwxr-xr-x 2 pg_mana users 5047040 12月 8 22:33 test*

なんで5MB近くあるんや、Hello,world!ぐらいしか書いてないぞや、とモゴモゴ言いたくなります。
ふと思い立ってstripした所

$strip test
$ls -l test
-rwxr-xr-x 2 pg_mana users 445368 12月 8 22:36 test*

なんかびっくりするほど減って必要なもんまで消してないか不安になるレベル。でも動く、動く(CD買った)。
恐らく大きなプロジェクトになれば減りは鈍くなると思うけど、他の合わせ技で減らせるはず。
要検証案件なので確認してから使ってください。

CybozuLiveの新着情報受信ソフト作った(Linux)

この記事はseccamp2017 Advent Calendar 2017の二日目の記事です。


もう十二月。
もうすぐ2018年になります。このサーバーも一年が過ぎようとしています。

さて、セキュリティキャンプとの直接の関係性は薄いのですが、セキュリティキャンプを機に触りだしたサイボウズLiveの新着情報を受信して通知するソフトウェアをQtで作りました。
クランアントじゃないのかよと飛んできそうですが、サイボウズLiveは2019年に終了するそうなので、あまり機能をつけると虚しくなりそうで機能を絞りました。
ウィンドウに新着情報を並べ、イベント内容が書かれているところをダブルクリックすると該当ページをブラウザで表示するというものです。
起動時自動実行したかったので起動オプションに-nをつけると起動時にウィンドウを表示せず通知欄に隠れます。
また通常起動してもウィンドウを閉じるを押すと通知欄に隠れます。終了するには設定=>終了を押してください。
コードもおいておきますが期待はしないでください…なんかいい機能あったらプルリクエストおねがいします。git初心者ですのでうまくできないかもしれませんが。
PG_MANA / Sardine — Bitbucket
セキュリティキャンプ直接の進捗はまた(したいことがたまりすぎた…)

Sardine-0.0.1-1.x86_64
署名公開鍵

どちらも一時的なURLです。Ruine.jpが整理でき次第そちらに置きます。
一応repo.ruine.jpが動作しだしました。不安定ですがどうぞ。
ドメイン整理でrepo.taprix.orgにおいてあります。
repo.taprix.org/pg_mana/linux/rpm/x86_64/は自作rpmパッケージのリポジトリになってます。
openSUSEでビルドしてます。他にもTwitterクライアントなどもありますのでどうぞ。
署名したのになぜか警告出るのだなこれが…署名がないって。

意外と便利でサイボウズLiveのページを固定しないでよくなりました。更新間隔は10くらいが良さげ?
めったに更新がないなら2時間でも。

福岡市科学館 オープンしたので行きました

今日10/1は福岡市科学館のオープン日です。
福岡市少年科学館のリニューアルに近い形でオープンしましたが、運営方式が変わったりと前回より大幅に変わっているようです。
朝起きて電車に乗って行ってきました。

最寄り駅は地下鉄七隈線の六本松駅、3番出口が一番近いっぽい。
出るとすぐに目に飛び込んでくるのが…

でかいですね。

一階・二階には蔦屋書店などの店がありすでにオープンしてました。

自転車は一時間無料の一時間ごとに100円という結構痛い料金、一日百円が良かったな…(少年科学文化会館は無料でした)。

追記:地下駐輪場は3時間無料でした。また周辺にも市営駐輪場があるので、そちらを利用したほうがよさそうです。

入場まで並びましたが初日だからでしょう。それでも30分程度では入れました。
並んでいる間パンフレットをもらうことができました。

上りのエスカレーターは右がディスプレイ、左がガラス張りで外が見えるので上がっている間も楽しいです。

入ると目につくのが連携スクエアというもの。JR・アサヒシューズなど企業の説明などがありました。

そして総合案内所がありましたが、本日は上の階で受付を行うということでしまってました。

誘導されるがままに6階に行くと…

なんだか面白い照明がありました。

サイエンスホールというところでチケット販売してましたが、長蛇の列。
並んでいる間にオープンニングセレモニーがドームシアターで始まり、並んでる人のために前のスクリーンで実況中継されました。


有名人がスクリーンに映され、眺めて待っているとあっという間にセレモニー終了。
更に待つこと十数分、やっと列が進み自分の番が来たので年間パスポート買いました。

(一応年間パスポートのQRコードを塗りつぶし加工した)

5回の基本展示室に行こうかと思ったのですが、人が多かったので一回下る。

4階


図書館かな。少年科学文化会館より本は少なくなりましたが、映像が見れたり洒落たオブジェクトがあったりと面白くなってます。本は借りれなさそう。

奥の通路を通り、進む



物理実験室です。
なぜここを見に行ったかというと…屋上にあるアンテナと深い関係がある部屋なんです。


無線クラブ | アクティビティ | 福岡市科学館
無線クラブの部屋となります。
体験教室是非応募してください。
自分は多分…クラブ活動にいると思う…多分、受かれば。

3階



企業の説明などがありました(2回目)(文章力が無くなっていく)。

5階

ミュージアムショップがあり、メダルなどが売ってましたがスルー。

子供がはしゃいで触れる何かがありました。科学に関するものだそうで。

見てると段々まどマギを思い出してくるのは自分だけだろう。

入り口ではバーコードをかざし認証するというもの。スタンプカードももらいました。

中ではタブレットなどで案内がされる優れもの。

中では枠の中に立って体重を傾けることで地球が移った画像をズームできるというものや科学実験ショー、奇抜なスタンプラリー、スタンプカードを使ったゲーム?、自然を再現した模型、ブラックホールホッケー?、交通整理ゲームなど自分から遊ぶことができるゲームが多くありました。



とにかく、福岡市科学館に遊びに行ったら基本展示室には入るべき。家族連れならあそこで一日は遊べるはず。大人も楽しめるようなこともあります。というより楽しんでました。
展示内容も変わるので年間パスポート持っとくといいかも。
来週、用事が終わったらもう一度行こうかな。
では。

福岡市科学館の6階の照明を待ち時間カメラで加工でして遊んでたもの

Slackware覚書

VMに入れてみていじったから覚え。
インストールはまあArchに似てるから適宜。
ビルド済みパッケージを管理する(pkg)システムはあるらしく


slackpkg update

なるものでmirrorを選べと出てきてあとはhelp見るなりなんなり。

(文章書く力が無くなっていた)

KDEのDolphinの右クリックメニューにSHAチェックサム計算機能を追加する

長ったらしいですが、タイトル通りです。
ありそうでない機能でしたのでササッと作りました。
動作画面は以下のとおりです。

tar.gzで固めたファイルを置いときますので解凍してPlugin/に入って、install.shをrootで実行してください。
shasums.desktopが本体なのですが、テキストファイルなので改造すればいろいろなことに使えます。
action_shasum.tar.gz(1.1KiB)(Repo Taprix)

セキュリティキャンプ2017感想文

*これはセキュリティキャンプ2017記事の6番目です。
前:セキュリティキャンプ2017参加記

セキュリティキャンプ2017に参加しての感想を書きます。

参加できたことについて

今回が初の応募だったわけですが、ありがたく参加させていただけることになりました。
セキュリティキャンプは前から知っていたのですが、応募するにはまだ早いと思っていました。
今回時期もちょうどよいと思い思い切って応募しました。
Twitterなどで「二度目だけど落ちた…」などつぶやかれてるのを見て、一回で通ったのは実に幸運だと思います。
恐る恐るメールを開いて合格だったあの喜びは忘れません。

事前準備について

RustでのOSは合格前にある程度書いておきました。
しかし合格後に立て続けに予定が入り、(やること多すぎて)変にやる気を失い、なかなか開発がうまく行かなかったです。
またRustほぼ初心者、64bitOS初開発などわからないことだらけだったのでうまく進まないことが多かったです。
ただ事前課題をしないと集中コースは当日何もできないので、ぜひやったほうがいいです。

参加してみて

もう最高です。
まず、80人近くの参加者、それに負けないくらいの講師の方、あっただけで大興奮です。
Twitterアイコンが書かれた名刺をもらい、アイコンと顔を見比べながら話す感覚は新鮮でした。
80人全員と話せたわけではないですが、様々な方と話せてとても楽しかったです。
途中協賛企業の方とも話せて、企業の中の声を聞けてニヤつきが止まらなくなったり、エディタ宗教戦争が起きてvim派とemacs派が戦う中で一人Kateを推してみたり、普段できないことが多くできました。
講師の方はどなたもプロで、「Linuxのモジュール書いてる」「あのサービスつくってる」など聞いて口を開けて突っ立ったままになりそうでした。

目標達成できたか

自分はコードを人に見てもらったことがないのでこの機会に見てもらって指導してもらおうと思ってましたが、コードはほとんど見せてません。(だってRust使ってる人少ないもん。)
ただデバッグの方法を教えてもらえましたし、他人のコーティングを見ることができました。
また様々な方と話してる中で自分のコードを他人に見てもらうことの大切さを何度も聞きました。
自分の書いたコードをオープンソースにする大切さに気が付き、少し自信がでました。
コードがきれいになったらBitbucketにあげます。(いつなるかはわからない)

…色々書きたいことあるけど日本語生成能力が低すぎて書けない(感想文苦手マン)

興味を持った人へ

是非応募してください。
あなたの人生を変える夏になると思います。
しかしながら、一つ思うのがどうしてもある程度の基礎知識がいると思います。
もちろんLinux操作バリバリできるとか、NetBSDすぐ移植できるとかいうのはいらないと思いますが(どこのプロだよ…)、
「セキュリティキャンプを機会にプログラミングを始めてみよう」というのは厳しい気がしますし、得られるものが少ない気がします。(個人の意見ですが)
何しろ人生で一回しか受講生としていけないのですから。
しかし「ミニキャンプ(地方大会)」というのがあってるようですから「不安だな…」と思われる方はぜひ応募してみると良いと思います。
または講師の方のTwitterやTwitterの#seccampというハッシュタグを見ていただけたらどんな内容かも解ると思います。

素晴らしい夏を過ごせたことに感謝して、学んだことを活かし今後につなげたいと思います。

openSUSE Tumbleweed でYaSTが動かない

コントロールセンターは出るけどパッケージ管理などが起動しなかった。
/var/log/YaST2/y2logを見ると


[ui] YPath.cc(YPath):67 Looking for: libyui-qt.so.8
[ui] YPath.cc(lsDir):138 Looking in /usr/lib64/yui
[ui] YPath.cc(YPath):121 Could NOT find libyui-qt.so.8 by looking recursive inside /usr/lib64/yui
[ui] YUIPlugin.cc(YUIPlugin):50 Could not load UI plugin "qt": libyui-qt.so.8: 共有オブジェクトファイルを開けません: そのようなファイルやディレクトリはありません
[ui] YUILoader.cc(loadPlugin):195         THROW:    Couldn't load plug-in qt

とある。
sudo zypper se libyui-qt とでもして調べるとlibyui-qt7とlibyui-qt8があり、7はあるけど8は入ってない。libyui-qt.so.”8″だからlibyui-qt8を要求してる。
とりあえずsudo zypper in libyui-qt8で入れる。んでYaST上のパッケージ管理からlibyui-qt7を消す。(zypperで消すとYaSTも一緒に消える)
あ、ただしlibyui-qt7に依存するアプリがあったら消さないように

Intel GraphicsでGPUがハングアップする

今日も元気にopenSUSE〜。
などと言いながら昔のPCにLeapを入れたところ、
GPU「アー、もうダメ」
とログイン画面で死ぬのですわ。大抵無理やりパスワード打ってエンター押せば入れる。
昔もなった気がするので解決は早かった。

まず、zypperかyastで、
xf86-video-intelを入れる(自分はついでにvaapi-intel-driverも入れた)
んで持って、
/etc/X11/xorg.conf.d/に20-intel.confを作り、


Section "Device"
	Identifier "Intel Graphics"
	Driver "intel"
	Option "AccelMethod" "uxa"
EndSection

とかく。んでもって再起動なりしてください。
もしX11が起動しなければ、慌てずCUIで入って20-intel.confを消してくださいな。