zshの環境変数の最近の設定

今まではshでも使えるexportを使っていて

export PATH="$HOME/hoge/bin:$HOME"

なよくあるPATHを通す書き方で書いていましたが、最近はもっぱらzshの構文を利用して

path=("$HOME/hoge/bin" $path)

みたいに書く方法を使っています。 fpathの場合は

fpath=($HOME/hige/bin/
             $HOME/.zsh/bin/
              $fpath)

みたいに数行に渡って書いています。 特にexportと性能がどうこうはないのですが、なんとなく変数設定している感じが出るので、最近はこれで書いています。

brewのgnuplotのオプション指定ができなくなったので対処する

TL;DR

$ brew tap ie-developers/ie
$ brew install ie-developers/ie/gnuplot  --with-cairo  --with-aquaterm

問題点

  • gnuplotbrew(mac osのパッケージ管理ツール)のアップデート時に、オプションを指定が消え去った

  • aquatermとpdf出力を行いたいので、オプションがある時代の設定ファイルをcask である ie-developerに配置しました

解決

昔のオプション指定時代のrubyコードをgitのログから復旧し、バージョンだけ変更する

インストール方法

  • brew tap ie-developers/ie を実行し、 ie-developerをbrewの拡張に加えます
  • brew install ie-developers/ie/gnuplot --with-cairo --with-aquaterm を実行してください (--with-cairoを設定すると、terminalにpdfcairoが追加されpdfで出力できるようになります)

アンインストール

  • brew uninstall ie-developers/ie/gnuplot で削除可能

PyCon Kyushu in Okinawa 2019に「レガシーPython散策」で登壇します

こんにちは id:anatofuzです。

というわけで5月18日のPyConKyushuで登壇することになりました!!

他の登壇者の方はバリバリのPythonistaな方ばかりで、PerlMongerとしては「すまん…」という感じですが、テーマが「HUB」なんで、大丈夫だと思っています!

kyushu.pycon.jp

内容は次の用な感じです

みなさんが普段使用しているPythonのバージョンはいくつですか? Python3.7.3? それとも、まさかPython2系...!?Python3やPython2とバージョンが上がっているということは、つまりPython1が最初は存在していたということです。Python1の処理系のコードがもし存在していたら、ちょっと中身を見てみたくないでしょうか。そして現在のPython3のソースコードの内容も、ちょっと気になりますよね。このトークではPython1やその周辺のレガシーPythonの処理系のコードと、現在のPython3自体のCで書かれたソースコードを眺めながら、Python処理系の雰囲気を探ります。

YAPC::Tokyoに引き続き、レガシーコード散策となっています。

C言語レベルで、Python1.0付近の中で、一体どの様な構造体が、構文解析が走っているかを時間のある限り見ていく雰囲気となっています。

現在のPython3のコードもちらっと出す予定ですので、現在の処理系に興味がある方もぜひお越しください!!

ちなみに内容ですが、相変わらず

  • 無駄な知識が欲しい方
  • 明日役に立たない知識が欲しい方
  • スクリプト言語処理系に興味がある方

などに該当する方が来ていただけると楽しいかと思います!

というわけで当日は僕と握手!!

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: