MacBook故障しました

去年の4月に買い替えたやつです.なんとなく気配はあったのですが.

起動すると「OSのアップデートにネットワーク環境が必要なので,wifiのパスワードを入力してください」などと. ちゃんと入力しても,アップデートが途中でとまってしまい,「ShutDown」か「Retry」の二択に. この両方を押しても,処理の途中で「問題が発生した為に,コンピュータを再起動しました」と表示された後に, 今の画面に戻ってしまうというループに陥りました.

wifiが問題では? と思い,有線接続を行ったにもかかわらず,相変わらず同じ表示.

そういえば昨日Mojaveのアップデートパッチインストールしたな〜Mojaveのせいか!? などと思いながら,アップデートする前のバージョンに戻せば復旧するだろうと, TimeMachineで復旧を試みました.

すると, TimeMachineでの復旧の途中でクラッシュし, 「問題が発生した為にコンピュータを再起動...」の表示が. なんか進入禁止みたいなマーク出てるし.

流石に危ないのでAppleにチャットで聞いていると, 「SSDの初期化を行えばいい」なるほど. ということで APPLE SSDの初期化を行おうとすると, 初めて10秒くらいで画面が暗くなり, 「問題が〜」の表示. 進入禁止みたいな表示が出たあとに, 言語選択画面に戻ると言うループに.

いくつかのリセットも試みたものの, SSDの初期化もできず, この状態でTimeMachineからの復旧を試みても, install先のSSDが認識されていない為何もできないという状況でした.

と言うことで昨日の12時に新都心のキタムラに. Mac担当のおじさんいわく「メモリが死んでる」との事です.

メモリが死んでるならメモリだけの交換になりそうですが,最近の機種はオンボードでメモリやSSDwifiネットワークアダプタが一体型になっているらしく, 基盤総交換になりそうです.

見積もり的には最悪3万くらい, 見込みとしては無料で治るらしいです.まぁ3万なら安いね.

ついでに「ホコリが買って1年ものとは思えない, 3年分くらい」と言われました.丁寧に扱わないと…

10日くらいで帰ってくるらしいので, しばらくは以前使用していたMacBookです. 幸いコードや直近で使う仕様は, Mercurial/gitで管理, cloudに保存しているのでデータは取り出して作業しています. しかしJSの13incキーボードなので若干打ち辛いですね(買い替えたものは15のUSキーでした). まぁ慣れだとは思いますが….

卒業決定しました

というわけで卒業決定しました。皆さんありがとうございます。

問題を起こすと卒業できなくなるので、主に @ymckamからセクハラで訴えられたら卒業できなくなります。

四年間の雑感は卒業式後に書く予定ですが、とりあえず4月からは琉球大学大学院理工学研究科情報工学専攻というところに進む予定です。あと2年間は確実に沖縄にいる予定なのでよろしくお願い致します。

www.amazon.jp

飲み会の予定は常に募集中です。よろしくお願い致します。

mac osでPerlのビルドでld関連で死ぬ時

趣味はPerlのビルドなので、plenv経由でPerl5.28.1を入れようとしたところ以下のようなエラーが発生しました。

./miniperl -Ilib make_ext.pl DynaLoader.o  MAKE="/Library/Developer/CommandLineTools/usr/bin/make" LIBPERL_A=libperl.a LINKTYPE=static CCCDLFLAGS=
Generating a Unix-style Makefile
Writing Makefile for DynaLoader
"../../miniperl" "-I../../lib" DynaLoader_pm.PL DynaLoader.pm
rm -f DynaLoader.xs
cp dl_dlopen.xs DynaLoader.xs
"../../miniperl" "-I../../lib" "../../lib/ExtUtils/xsubpp" -noprototypes -typemap '/Users/anatofuz/.plenv/build/1549952483.53003/perl-5.28.1/ext/DynaLoader/../../lib/ExtUtils/typemap'  DynaLoader.xs > DynaLoader.xsc
mv DynaLoader.xsc DynaLoader.c
cc -c   -fno-common -DPERL_DARWIN -mmacosx-version-min=10.14 -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -DPERL_USE_SAFE_PUTENV -Wall -Werror=declaration-after-statement -Werror=pointer-arith -Wextra -Wc++-compat -Wwrite-strings -O3   -DVERSION=\"1.45\" -DXS_VERSION=\"1.45\"  "-I../.."  -DLIBC="" DynaLoader.c
rm -rf ../../DynaLoader.o
cp DynaLoader.o ../../DynaLoader.o
rm -f libperl.a
/usr/local/bin/ar rc libperl.a op.o     perl.o  gv.o toke.o perly.o pad.o regcomp.o dump.o util.o mg.o reentr.o mro_core.o keywords.o hv.o av.o run.o pp_hot.o sv.o pp.o scope.o pp_ctl.o pp_sys.o doop.o doio.o regexec.o utf8.o taint.o deb.o universal.o globals.o perlio.o perlapi.o numeric.o mathoms.o locale.o pp_pack.o pp_sort.o caretx.o dquote.o time64.o   DynaLoader.o
cc -o perl -mmacosx-version-min=10.14 -fstack-protector-strong -L/usr/local/lib  perlmain.o   libperl.a `cat ext.libs` -lpthread -ldl -lm -lutil -lc 
ld: warning: ignoring file libperl.a, file was built for archive which is not the architecture being linked (x86_64): libperl.a
Undefined symbols for architecture x86_64:
  "_PL_csighandlerp", referenced from:
      _main in perlmain.o
  "_PL_do_undump", referenced from:
      _main in perlmain.o
  "_PL_exit_flags", referenced from:
      _main in perlmain.o
  "_PL_perl_destruct_level", referenced from:
      _main in perlmain.o
  "_PL_sig_name", referenced from:
      _main in perlmain.o
  "_PL_sig_num", referenced from:
      _main in perlmain.o
  "_Perl_newXS", referenced from:
      _xs_init in perlmain.o
  "_Perl_rsignal", referenced from:
      _main in perlmain.o
  "_Perl_rsignal_state", referenced from:
      _main in perlmain.o
  "_Perl_sys_init3", referenced from:
      _main in perlmain.o
  "_Perl_sys_term", referenced from:
      _main in perlmain.o
  "_boot_DynaLoader", referenced from:
      _xs_init in perlmain.o
  "_perl_alloc", referenced from:
      _main in perlmain.o
  "_perl_construct", referenced from:
      _main in perlmain.o
  "_perl_destruct", referenced from:
      _main in perlmain.o
  "_perl_free", referenced from:
      _main in perlmain.o
  "_perl_parse", referenced from:
      _main in perlmain.o
  "_perl_run", referenced from:
      _main in perlmain.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [perl] Error 1
Installation failure: make at /Users/anatofuz/.plenv/plugins/perl-build/bin/perl-build line 10353.
ABORT

plenvやperl-buildのエラーではない(ldなのでコンパイルが走った後のエラーである)事から、Perl自体の問題ではあると思っていたので、Perlのバグのページなどを見ていました。

rt.cpan.org

(一応Mojave独自のエラーとしてはこれがあり、ヘッダーファイルをコピるdmgを実行することで回避出来るそうです)

ただbugsのページを確認していても、ld関連のバグ報告がなく、Perl入学式のslackで相談してみました。

僕以外のmojave環境では普通にビルドが通るらしく、これは...となっている時にこのエントリが発見されました。

naoyat.hatenablog.jp

見事にbinutilsをいれており、arが被り破滅していました。

ということで brew uninstall binutils して強制的に解決。

その結果見事にperl 5.28.1がビルド出来ました!!!

Perl入学式の皆さん有難うございました!!! 流石にこれは訓練されてないと気づかない...!

完全にMojaveだと疑っていましたがおま環問題でした。Appleの皆さんすいません :bow:

YAPC::Tokyo2019に参加して, 踏み出せたこと

1月25日, 26日とYAPC::Tokyoに参加しました. YAPC自体はKansaiが初参加で, Okinawaではスタッフをしていた.

今回のTokyoでは, 初めてスピーカーとして出させていただき, 当日スタッフもやらせてもらった. 更に前夜祭と本編のLTも出させていただいた.本当にYAPCを楽しむことが出来た.参加者, 運営の皆様ありがとうございます.

前夜祭

スタッフをやらせていただいていたので早めに会場について, ノベルティの荷物詰めなどをしていた. 初めて実際にお会いする方が多かったが, 会場の雰囲気は非常に楽しくて, 疲れはしたが準備をする事が出来た.

前夜祭の資料は大体の枠組みは行きの飛行機と前日に書いていた. 今回は大学の卒業研究などを通して勉強していたMoarVMとNQP(Perl6の実行環境とサブセットの話)で登壇した.

NQP自体はPerl6の内部で利用されているもので, 皆さんの興味がNQPに向くか非常に不安だった. 登壇が終わったあとにid:papixさんから, 「本編に出れる」と言われた時は嬉しかったし, Twitterを見た感じ皆さんに楽しんでいただいたようで非常に良かった.

前夜祭では他にはてなインターン振りにid:cohalzさんとお会い出来たのが良かった. 思えばあの時から, YAPC::Tokyoが前を向かせて貰ったのだと思う.

本編

本編はRoom1の会場の司会などを担当していた.Twitterの中の人もしようかなと思っていたが, 資料を準備したかったのと, 写真を綺麗に取る自信があまり無かったので, Twitterはお願いしていた.

司会は本当にやりやすくて, 自由に喋る事が出来た.司会自体はそんなに上手くなかったかもしれないが, YAPCのスタッフとして関わる事が出来ていたのは嬉しかった. Okinawaの時はコアスタッフだったのだが, 精神を崩していた時期もあり, 本調子で振る舞う事が出来なかった気がする. 今回のYAPCは, しっかり責務を果たせたかなと思った.

初めての登壇は不思議と緊張しなかった.あのRoom1, そしてYAPCの会場が非常に温かい雰囲気であり, 心地よく喋る事が出来た. このスライドに至る前に, ビルドを追求していくにつれてmetaconfigを発見したりと非常に面白かった.

5分前のベルでペース配分を焦ってしまったのが心残りではあるが, 自分としては大体したかったことが出来たと思う. あのスライドは本当に皆さんに興味を持っていただけるか自信がなく, 当日人がくるかどうかも心配していた. いざ時間になると, 本当に皆さん移動し忘れているのではないかと思うほど来ていただいて, トークを聞いてくださっていた. トークの内容も, 皆さんツイートしていただいたり, 途中で盛り上がっていただいたりと, 本当に自分自身も信じられないほどだった.

本当にこれは自分自身だけが面白いと感じているのではないかとずっと思っていた. Roppongi.pmにも呼んでいただいたので, 今考えると周囲の方々も面白いと思っていただいていたと思うのだけれど, あの内容は個人的には誰でも出来ると思ってしまっていて, そんなことを発表していいのかとちょっと思ったりもしていた.

そして登壇して, 席に戻って, タグを見たり, その後の懇親会や二次会, スライドを公開した上でのSNSなどで, 本当に意外なまでに皆さんに好評的な評価を頂いた. これは本当に自分も信じられなくて, その後miyagawaさんにまでNiceなどと言われて, 本当にこれが自分自身に起こっている事なのか信じられなかった. 僕だけが楽しいと思っていた事が, 皆さんにも楽しいと伝わったこと.本当に信じられない気持ちだった.

LTではgolangにPerl1.0を書き換えている話をした.これ自体は結構前から思いついていて, 実際に手を動かし始めたのはYAPCのLTに応募してからだった.

書いてみるとPerl1.0の内部構造がトレースのたびに理解出来るようになった気がして, 非常に楽しく夢中になれた. 当日までに動かすものを作りたかったが, なかなか厳しくて, ふわっとした話になってしまったのは反省している. ただ年内には出せるようにしたいので, 今後も開発していこうと思った. これも, ふわっとした話なので, そんなに評価されないかななどと思っていたが, Twitterを見ると様々な人に言及されていて嬉しかった.

懇親会ではいろいろな人とお会いする事が出来た.YAPCの参加回数が増えている為知り合いが増えてきたのもある気がする. 個人的には皆さんPerl1.0の話とか, Acmeモジュールの話やPerl6と言った好きな話題をする事が出来て, ありがたかった. id:utgwkkさんと初めてリアルで会えたのもいい体験だった.

不思議な感覚は他にもあった.id:ssabcireくんにTwitterで見ていて影響を受けたとか, 入学式の鹿さんに助けてもらったとか, id:kiryuanzuさんにエントリを見たとか言われた. 個人的にはそんなに頑張ってないし, やっているつもりも無かったのだが, そう言っていただけると嬉しかったし, 同時に何か不思議な気持ちになった.

その後は以前のエントリにも書いたが, id:papixさんに自信を持てと言われて, 運営の打ち上げの後に, 秋葉原で飲んでいた皆さんと合流した. id:mackee_wさんやid:xtetsujiさんが待っていただいたのが嬉しかった.

飲み会id:kiryuanzuさんと話しているうちに, 自分が本当に好きだったこと, 大切にしたい事が思い出せたように感じる. そこで, 思い出せた事は, YAPC::Kansaiの時のあの純粋な好奇心と, 自分が好きなことをする気持ちだった. YAPC::Okinawaやハッカーズチャンプルー, いつもの.pmなどで, 少しずつ取り戻しつつあった, 大切な感覚が取り戻せたと思っている. なんというか, 本当に肩の荷が下がり, 気持ちよくプログラミングや情報技術に迎える様になった.

今回のテーマは「報恩謝徳」だった.本当に今回のYAPC::Tokyoでは皆さんから恩をいただく事が出来た. 本当に, 楽しかった以外の感想がないほど楽しかったし, やっていくぞと, 本当に思うことが出来た. Perlコミュニティの皆さんにはいつも助けられてばかりだし, id:papixさんに至っては, 様々な意味でいつも励まされている. 沖縄でPerlを始めるきっかけとなったid:codehexさんとまたお会い出来たし, 本当に様々な人に支えられているんだなと感じた. この恩をいつか返せるように, そして新しくPerlYAPCに出会った方に, 僕がしていただけたことを逆に出来るように, 今後もやっていきたいと思った.

そういえばいつもYAPCに行くと元気になる気がする.やはりYAPCは人生を変えると思う.YAPC::Kansaiに行ってなければPerlを書いていなかったが, YAPC::Tokyoに行ってなければ, 今後Perlを書いてなかった気がする.

なんとなく同じ内容になってしまったが, まぁいいとして...

YAPC::Tokyo2019で感じたこと

(感想は別で書く予定で, これはYAPCを通じて考えたエモい話です)

最近(1年くらい)は好きなことに対して自信が持てなかった気がする. YAPC::Kansaiの時などは, 勉強したてのPerlAcmeモジュールが好きで, 書いているAcmeモジュールのロジックがコピペだろうと正直作っているだけで楽しかった. 最近の精神状態では, 意味を理解しないとロジックを書くべきではないとか思ってしまって多分書いてなかった気がする. Perlを書くこと.Acmeモジュールを使ったり読むこと.Perlの本を読んで勉強すること. その全てが純粋に楽しくて,その習得状況や書くコードの質などの差は確かにあるかもしれないが, それには本来優劣などは存在しない行為だと思う. 誰かと戦う為にジョークモジュールを作ることはないし, 何か強制的にコードを書く必要も本来はなかった. 純粋に楽しいからしていて,ただそれだけが活動のベースにあったのだと思う.

しかし最近は, 何をやっても.ことさら好きなはずのコンピュータのことでは, 人と比べることや, その意味を考えるようになってしまった. 「これを勉強してもxxxさんはすでに高校時代に実装していたんだよなぁ...」とか「こんな駄目なコードしか僕は書けないのに,xxxさんはこんなにもOSSを書いたりしている...」とかとかとか. 能力の差や技術力の差は確かに存在している.バズるサービスを開発する能力や, 綺麗なウェブページを作る能力, 難しい言語処理系のシステムを臆すること無くCで実装する事が出来る能力. それらを持っている人と, それらが今すぐに欲しくなってしまって, 自分の現状と比べて辛くなる事が多くなってしまった.

確かにPerlはずっと書いていたが, 最近書くPerlは楽しんで書くというよりは, 何かの為に書く事が多い気がしていた. 最初Perlを勉強した時にがむしゃらに書いていた, あのときの楽しさは無かった気がする.

YAPC::Tokyoのしばらく前, Roppongi.pmの前の時に, 何故か昔のPerlをビルドすることをしていた. 最初は唐突にPerlの初期バージョンに興味がわき, ぐぐったらコードがビルドできたのでおもちゃの様に遊んだ. 詳しくは覚えていないのだが, LTのネタに使えるかなと思ってやったかもしれない.

あの時.昔のPerlをビルドしている時は, 今考えるとKansaiのあの時に, Acmeモジュールを書こうと思って苦戦していた際の精神状況に似ていた気がした. そのコードややる事の意味などはどうでもよく,ただ個人的にやりたいからやっていた.面白そうだから.ただそれだけの純粋な理由だった.

思ったことはそう.僕は例えば何かのサービスを作らなければならないとか.早くしなければならないとか.そういう使命感みたいなのが動作すると途端に気力が無くなってしまうという性質なのかもしれないということだ. 最近webアプリを書く事が以前に比べて好きになれなかったのだが, 考えると, webの勉強をしなければならないという使命感が常につきまとい, その結果重くのしかかった気持ちに純粋な好奇心が負けてしまい, 死んでいたのだと思う.

好きなことは自由な時に自由にやりたい.それが仕事で出来るかはわからないが, 多分僕はそういう感じで技術とか変わっていくのが良い気がしていた.当然やらなければならないドリブンでせざるを得ないものもあるし, そういう時は多少辛くなると思っている.

しかし今思っているのは, そのやろうとしている事が本心で, 純粋な気持ちで面白いと思っているかどうかが重要だということだ. そしてその気持ちに優劣などはなくて, 好きなことは誰との比較も承認も必要なく, 好きと言い張って良いということだ. 好きなもので好きなことを好きようにやる.人生そううまくは行かないし, 業務の内容が好きかどうかなどは必ずすべてがそうではないと思う. だけれども, 自分自身の趣味の時間とか, やっていきたい気持ち自体は, 自分自身で認めていきたいと思った. やはり自分が本当に面白いと思っていることは, 人に喋っていて面白さが伝わるし, みんなに気持ちが伝わると思う. おそらく, 今まで僕が見てきたwebとかのすごい学生や人々は, その純粋な気持ちがたまたまwebに向いていただけで, 彼らは純粋な気持ちを持っている為に優劣などを考える事はなくて, 成長していけているのだと思う.

今は自分自身が何が面白いのか, 取り戻すのと掴むのに時間を要すると思っている. しかしその時間を焦る事をせず, 人々と比べずにやっていきたいと思った.

この考え方に追いついたのは, 個人的に自分だけが楽しいと思っていた昔のPerlをビルドする話をYAPCに採択していただいたこと.

当日のトークで, 自分が面白いと思った事に, 来ていただいた皆さんが同じ様に面白いと思って頂いた事.

id:papixさんに自信を持てと言われたこと, その後の飲み会で id:kiryuanzuさんと過去の話から様々なことを話せた事.

Twitterやブログで予想外に様々な人々から反響をいただいた事などがつながったからだと思う.全員のidを乗せるとすごい事になってしまうので書けないのですが, 北海道から沖縄, 海外や画面の向こうの人まで, 本当に皆さんありがとうございます.

YAPC::Tokyoでは3本も前に出させてもらった.どれも楽しかった.これはこの3本がすべて自分が面白いと思っていた事だからだと思う. 純粋な気持ちで面白いと思える事が, 僕は特にPerlに多いようだ.自分自身気づかなかったが, 好きなことを話している事はかなり楽しそうらしい. 今までのやらなければならないベースの考え方を脱却するのは人間なので難しいのだが, だけれども, 少しずつ純粋な気持ちを取り戻したいと思った.

完全にとりとめのないが, とりあえず今まとめとかないと駄目だと思ったのでまとめておいた.YAPCの感想はあとで書きます