HTMLのデータ属性

知らなかったのでメモ

developer.mozilla.org

developer.mozilla.org

www.webprofessional.jp

実際にMSDNのページにある例題を手打ちして確認したのだけど、JavaScript*. dataset.*で値を取れるのなかなか面白かった。 webアプリ読んでいて、データ格納用のattrかな〜みたいなざっくりした認識だったのだけど、まさかデータ属性というまんまの名前がついていたとは...。

JavaScriptなんでもできるな...と思っていたところ、CSSもdata属性に応じて色々当てられるので、自分が思っていたよりも奥深い気がする。MSDNチュートリアル全部やるべきだな...。

vscodeのgithub extensionsで今開いているファイルのGitHubのURLをひらく

だいたいほとんど素のvimで生活していたんだけど、最近はvscode使ったりしている。 だいたいいじるコード全部GitHubで管理されていて、scrapboxとかslackでコードについて言及したい時はGitHubのURLを貼りたくなる。

vimの時はhubかなんかのコマンド経由でURLをパッと出していた気がするのだけど、vscodeだと気合いで手作業でURL作っていた。 めんどいなーと思って雑にググったところQiitaのエントリが出てきたのでこれいれるかーとなっていた。

qiita.com

と思ってextensionsのボタンからGitHubで検索したところ、なんか公式のような顔をしているやつが出てきた。 f:id:anatofuz:20210414192932p:plain

説明をみてる感じコマンドパレットでいろいろできそうなので、インストールして、コマンドパレットにGithubといれたところ f:id:anatofuz:20210414193035p:plain

こんな感じのいかにもなメニューが出てきて、押すといい感じにGitHubでファイル開いてくれた。 もちろんブランチも考慮されるので、GitHubに今いじってるのと同じブランチがあれば一発でソースコードが出てきて便利。 これで生活の質が向上した気がする。いろいろextensions探したい。

社会人になったのでディレクトリに応じてgitの設定を変える

ついに社会人になり、主戦場がmercurialからgitになりました。 gitは今まで脳死anatofuz@gmail.comでcommitしていたのですが、娑婆にでると会社のドメインでcommitする必要性が出てきます。

しかし一般的な趣味プロダクトとかで会社のドメインを使うと不要な怒られが発生する可能性がある...!! 会社のプロダクトに関するものだけ会社のドメインを利用したい...!! という感じで、ディレクトリに応じてgitの設定を切り替えるようにしてみます。

リポジトリ管理

ディレクトリごとに設定を切り替える場合はリポジトリをローカルでどうやって管理するかが重要になってきます。 こういうときはghqを使うと良い感じにURLに応じてディレクトリを掘ってくれるので、会社のドメインに応じたディレクトリを勝手に作ってくれます。

今回は github.com/borderShojiみたいな会社グループのリポジトリをcloneしてきたと仮定して、ghqのルートディレクトリを~/srcとします。 つまりgithub.com/borderShoji/narutoみたいなリポジトリをcloneしたローカルディレクトリは~/src/github.com/borderShoji/narutoとなります。

~/.gitconfigの設定

次はgit全体が見る ~/.gitconfigの設定を書き換えます。

すでにgitconfigにはuserに関する次のような設定が書かれているものとします。

[user]
  name = AnaTofuZ
  email = anatofuz@gmail.com
  username = AnaTofuZ
  signingkey = XXXXX

この設定がある場合、このマシンで行われる全てのgitのオペレーションはこのuser情報が利用されます。

さて最近のgitはconditional includes機能があり、ディレクトリごとで設定ファイルを独自定義できるようになっています。

ここで、先程のgithub.com/borderShojiディレクトリ以下のgitリポジトリに対して設定を独自定義し、デフォルトの設定を上書きするような記述をgitconfigに書いてみます。

[includeIf "gitdir:~/src/github.com/borderShoji/"]
   path = ~/.gitconfig.bordershoji

ここでのポイントはincludeIfの末尾に必ず/をつけるです。/があるとzshでいうところの**/*が書かれているのと等価になり、ディレクトリを再起的にたどってくれますが、/がないとピンポイントでそのディレクトリだけになってしまいます。

あとは~/.gitconfig.bordershojiに上書きしたいgitの設定を描きます。

[user]
  email = anatofuz@borderShoji.net
  signingkey = FFFFFFFFF

こうすると何も考えずにgitの設定がディレクトリごとに代わり、社会性を得ることができます。これで安心!!!!!!

サブルーチンのエイリアスを型グロブで作る

知らなかったのでメモ。

#!/usr/bin/env perl
use strict;
use warnings;

sub hoge {
  print "hello\n";
}

*foo = \&hoge;

foo();

この例題を実行すると元気にhelloと表示される。 これは型グロブを使ってhogeサブルーチンのエイリアス的にfooを登録している。 代入しているのはサブルーチンリファレンスなので参照している実態は同じとなる。

また代入先も変数そのものではなくて型グロブに対してなので、呼び出しが$foo->()ではない。

世間で使われているものだとSmart::Argsに使われていた。

metacpan.org

よくみたら公式ドキュメントにそれっぽい記述があった。 これができるのも面白いけどuse strict環境で普通に実行できたのがびっくり。。。。

株式会社はてなに入社しました

はい

blog.sushi.money


本題

f:id:anatofuz:20210330190909j:plain

ということで2021年4月1日より株式会社はてなに新卒入社しました。

職種はアプリケーションエンジニアで、勤務地は京都*1です。 チームはノベルチームなので、カクヨムなどのインターネットサービスに関わることになると思います。

はてなPerlのアプリケーションがもりもりあるので、合法的にPerlを書くことができる環境で仕事をすることになります。(以前のインターン先では脱法Perlをキメていた)

はてなとの関わり

はてなとは2017年のサマーインターンに参加したりといろいろな関わりがありました。 サマーインターンでは近年まれに見る途中リタイアだったので、終わった後は色々とありました。 「自分はIT業界でやっていけるのだろうか。。。プログラミングしていけるのだろうか。。。」みたいなものですね。 YAPC::Tokyoや大学・大学院の学生生活を経たり、いろいろな人と関わっていく中で気持ちがだんだんと戻ってきて、就職先を決めようとなったタイミングで「やはりインターネットコンテンツに関わる仕事がしたい」ということではてなに応募しました。 実は2019年のサマーインターンに応募していて、そのときにid:motemenさんから「アナグラくんはインターンじゃなくて選考の方を受けてほしい」という話があり、実際に選考を受けることを決めていたのは2019年の夏前となります。

そして季節は流れ、21卒のはてなの選考が始まるくらいに声をかけていただいて、選考を受けました。 はてなの選考はいろいろなステップがあり、技術面接やプレゼンテーション面接などをしました。

技術面接では好きな技術についてディスカッションするか、なにかお題のアプリケーションを実装してきてそれについて議論するという形式が選択できました。 もともとあまりwebwebしていない生活を送っていたので、素で技術ディスカッションするよりはお題があったほうがいいと思い、アプリケーションの実装の課題を通して技術ディスカッションする形式を選択しました。 golangでwebアプリ書いてそれについてのディスカッションをしました。(Perlでは書かなかった)

プレゼンテーション面接だとひたすらに「インターネットがすき」ってのをアピールしたと思います。いやまぁいつも通りといえばいつも通りですね。

他の面接の思い出としては会社内の段差に躓いて、死ぬかと思ったなどがあります。

就活自体は2019年に応募した会社の中から決めていたので、コロナ禍の今ですが、会社を決めたのはコロナが流行する以前の段階でした。 今もう一度就活をするならなにか変わるかもしれませんが、多分変わらずはてなに入社していた気がします。 これはインターンとかのケリを付けることとか、Perlの会社に行きたかったとかが関係していそう。

ちなみに内定がでた直後のツイートがこれです。 結果が来るまでめっちゃ早かったですね。

思い返せば人生かなりid:papixさんの影響を受けていると思います。B2でPerl入学式に参加した流れでここまで来た気がする。

4月から

4月からはついに新卒でわくわく!びくびく! 大冒険が始まります。 もともとそんなにweb系っぽい学生生活を送っていたわけではないので、webアプリケーションの様々なことや、AWSこと、Perlgolangやjsやいろいろなことをまた勉強しながら業務していきたいですね。 そんなときは人のスキルと自分のスキルを比較するのではなくて、考え方とか振る舞いを比較して真似していけたらなぁと思っています。 比較すると落ち込んじゃうもんね。

あとは以前アドバイスしてもらったアンチパターンを踏み抜かないようにしていきます。

困ったときには人に聞く 変に自分でやろうとすると暴走する傾向にある 困らなくても人に聞く 対人でのコミュニケーションに注意 人を頼っていく テキストに頼りすぎない 絵とか図とかを使う いきなり新卒から色々できないといけない気にならない そもそも新卒は戦力として期待されてない それよりは出来ることを増やす感じで 3年後に成果をだすくらいで 思い込みに注意 あんまやる気が出ないことも実は向いてる可能性があるので頑張る そういうときは早く終わらせに行く傾向にあるので、手段とかを人と議論する 他になにかあれば募集してます

新卒アンチパターン - anatofuzのなんかそういう感じ

ちなみに会社は本名ではなくID呼ばれる環境で仕事ができそうですでにインターネットっていう感じがします。 問題がidはAnaTofuZですが、よく呼ばれるのはアナグラなので、運用でカバーという感じでやっていこうと思います。 Twitterにツイートする感覚で社内チャットを荒らしながら仕事をしたい。

試用期間の最終日に家にお茶漬けセットが送られてこないことを願いつつ、楽しんでやっていきたいと思います。 というわけでこれからもよろしくお願いします。

*1:フレキシブルワーキングスタイル直下なので物理出社しなくても良いです

ラズパイでsingularityを動かす

引っ越しでデスク周りを整備したり、ネットワークが強化されたのでラズパイサーバーを稼働することが可能となった。 ラズパイといえど直接色々インストールしないである程度仮想化したい。UID/GIDの面でdockerとsingularityを両方使いたくて、singularityのインストールをしてみる。

ちなみにx86マシンで作成したsifファイルはラズパイ上だと動かなかった。まぁそれはそうだと思う。

実はapt install singularity-containerでもインストール可能ではあるのだけど、この方法でインストールしてしまうとビルド時に--fakerootが使えない罠がある。(fakerootを別途installすればできるかもしれないけど) なので素直にgolangのソースからビルドするのが正しい気がする。

とりあえずgolangのインストールから。ansibleを書いたほうがいい気がするけどめんどくさかったので...。

$wget https://golang.org/dl/go1.16.2.linux-armv6l.tar.gz
$sudo tar -C /usr/local -xzf go1.16.2.linux-armv6l.tar.gz

忘れずに/usr/local/go/binにPATHを通す。

あとはsingularity公式にあることをやっていけばいい。

sylabs.io

必要なパッケージをインストールして

$ sudo apt-get update && sudo apt-get install -y \
    build-essential \
    libssl-dev \
    uuid-dev \
    libgpgme11-dev \
    squashfs-tools \
    libseccomp-dev \
    wget \
    pkg-config \
    git \
    cryptsetup

singularityのソースを持ってきて

$ export VERSION=3.7.0 && # adjust this as necessary \
    wget https://github.com/hpcng/singularity/releases/download/v${VERSION}/singularity-${VERSION}.tar.gz && \
    tar -xzf singularity-${VERSION}.tar.gz && \
    cd singularity

ビルドしてインストール

$ ./mconfig && \
    make -C builddir && \
    sudo make -C builddir install

ということで無事singularityがインストールされた。あとはいろいろ

琉大(院)卒業した

琉球大学大学院を卒業しました

というわけで琉球大学大学院理工学研究科情報工学専攻博士前期課程を修了しました。 正式名所はクソ長いですが、要は情報工学科の修士過程を無事終えました。 卒業式は今日でしたが、すでに京都に引っ越してしまったので、情勢的にzoomで遠隔で卒業式しました。学位証は4月に来るそうです。

修論

修論は研究室で開発しているOS GearsOSに関するものでした。 研究室のhgリポジトリはオープンになっているので、興味がある方はPDFを見れます

OSといいつつ実際にやったのはPerlを使ってGearsOSで拡張したCbCから通常のCbCに変換するトランスコンパイラの開発だったので、 言語をやっていた感じがあります。

修論は前半はリモート(在宅)で行っていて、システム更新をして以降は研究室で進めていました。 途中で開発環境がmacOSからwindows, linuxと変わっていったりしたのも思い出深いです。

琉大の生活

もともと山梨出身なので琉大に進学したのは勢いでした。 6年もいた今となっては琉大に進学して良かったな、という感じです。

今はコロナでもはや土地柄も無くなってきているところがるかもしれませんが、偶然にも情報系をやりたくて進学した琉大がある沖縄は、その土地柄か情報系について非常に力をいれている世界でした。 例えば情報工学科が他の大学よりも早く設立されていたりとか*1ハッカーズチャンプルーを始めとするコミュニティ活動が非常に活発だったりとか....。 あとはこれは情報工学科ならではでしたが、とにかく先生との距離が近く、だいたいの講義を前列で受けてたこともあり、ほとんどの先生に認知されるみたいな生活をしていました。 後半からは名嘉村先生を始めとする数多くの先生にアナグラと呼ばれていたりする感じでした。 個人的に面白かった講義とかはよく質問した気がします。 やっぱりOSと並列分散処理は面白かったな。

そんな訳でプログラミングやITが未経験で入学した僕ですが、情報系のオタクみたいになって卒業する事ができました。 今まで関わっていただいた、大学内外の皆様のおかげです。。。。ありがとうございます。。。 特に同期の皆様方には多大なるご迷惑をおかけしたことをお詫びいたします。。。。。訴えられたら負ける気しかしない。。。

琉大の情報系は今は閉鎖されていますが学年自習室(実際は部室みたいなノリ)があり、常に大学にいるみたいな生活を6年くらい送ったかと思います。 そのために友人の家に集まってどうこうするみたいなのはなかったですが、実質大学が家みたいなところがあり、いい友人にも恵まれて楽しく過ごすことができました。 B4からは研究室配属されて、611(河野研)に入り浸る生活が始まりました。 先輩と一緒に「KING OF PRISM by PrettyRhythm」を見たり、「超次元革命アニメ『Dimensionハイスクール』」を見たり、「うる星やつら2 ビューティフル ドリーマー」を見たり....。なんか研究以外のことばかりしていますね。 611非常に居心地が良かったので、もう気軽に611に行けないのは寂しいですね。

こんご

Twitterみている方とかはわかると思いますが4月からはついに社会人編が始まります。次回作にご期待ください。

*1:そのおかげか琉大はかなりのIPをガメている