yammerjp avater icon
Keisuke Nakayama
yammer
Web Application Developper /SCUBA Diver

あすけんでハイスコアが出やすくなった

2026/05/25 - awkblog.net
今年の1/1から、あすけんを続けている。プレミアムプランに入ってあす筋ボディメイクコースで毎日の食事を記録している。間食があんまり入ってなかったり、数日まとめて思い出して入れたり、量が適当すぎたりもするのだが、いちおう歯抜けの日はなくそろそろ半年が経とうとしている。 体重と体型は変わらないのだけれど、深夜にラーメン屋に行く回数が減るなどの効果はあったり、栄養についての知識が多少増えたり(はじめるまでPFCバランスという言葉すら知らなかった)して、その意味では効果があったとも言えるのかもしれない。ボディメイクはこれからという感じ。 アプリを続けているものの、食生活はぼちぼちで、60点台が普通、40点台やそれを切ることもよくある、たまに80点台というのが続いていたが、最近変化があった。 カロリーを摂りすぎたのに90点や100点!カロリーを飲み会で1000kcal(!?)超過して...

焼き魚

2026/05/15 - awkblog.net
最近、焼き魚ブームがきている。 昔は焼き魚があんまり好きじゃなかった。学生になって他の食べ物の嗜好が変わっていってもあまり変わらなかったのだが、働き始めてから少しずつ焼き魚の良さがわかるようになってきた。渋谷の三代夫という定食屋さんで魚を頼んでうまいと思うようになり、他の定食屋でもたまには魚を頼むかとなってきた。 家で魚を焼くことなんて全くなかったが、妻がフライパンにクッキングシートを引いて焼いているのをみて「なるほど、これなら魚焼きグリルに匂いをつけずに簡単に焼けるのか」と学んだ。魚焼きグリルはもっぱらトーストと椎茸のための場所なので、魚の匂いをつけたくない。 (フライパンで焼いた昨日の夕飯の塩鮭) 最近は、スーパーに売っている冷凍の焼き魚を何度か買ってみている。冷凍のまま焼くのもあるが、既に焼かれていて電子レンジで温めるだけで食べれるもの、これに感動する。温...

2026年2月のキーマップ for Keyball 44

2026/02/23 - awkblog.net
2020年の夏に自作キーボードを作ってから気づけば5年以上経つが、いくつかのキーボードを跨いでも配列はあまり変わっていない。 過去の配列: 2020年9月のキーマップ for lily58 最近はPlank Keyboardばかり使っていたが、身体の姿勢が気になったので久々に分割キーボードに戻ろうと、押し入れから眠っていたKeyball 44を引っ張ってきた。 このキーボードは買った後にあまり馴染めずに使えていなかったのだけど、今日から使っていくことにする。 馴染めなかった理由の一つは親指近くのキーの数。トラックボールが親指の近くにあるのは素晴らしいのだが、それと引き換えに親指周りのキー数がどうしても少なくなってしまう。他キーボードで慣れた配列が使えなくて、馴染めないままになってしまっていた。 私の配列は代替40%ぐらいで、どのキーボードでも以下のようにしている ...

開発環境現状確認 2026

2026/01/20 - awkblog.net
開発環境現状確認2026 が流行っているので、私も現状確認。 OS : 仕事もプライベートも気付けばmacOSだらけになってしまった。ハードウェアとGUIが大変よくできていて結局そればっかりになってしまった。 といっても開発は結局Linux VMのなかだったり家に建てたLinuxマシンにsshしたりもする。Linuxディストリビューションは大体Ubuntu。楽なので..。手元で触るマシンには大体Tailscaleが入っていて、iPhoneやiPadなどからも含めて家のmac miniを踏み台におうちの環境に繋ぐなどしている。 エディタ : NeovimにAstroNvimを入れてそれ以外はほぼ素のまま使っている。そんな手の込んだことはしていなくて、基本的なVimコマンドでほれほれとコードを書いてる。Claude Codeにしてからエディタの機能をたくさんつかって読んだり書...

2025年、Claude Codeの年

2026/01/01 - awkblog.net
今年は、Claude Codeの年だったといえよう。コードを書く体験もすっかり変わってしまった。このやすみはReact Nativeで自分がつかう日記アプリを作ってみているが、まったく作ったことがないのにそれなりに動くものをひとことふたこと言えば書いてくれてしまう。 というわけで、今年のAI体験を雑多に書き出してみる。 今年のはじめはまだCursorで生活していた。 yoloモードが出てきて、年の初めごろに https://github.com/yammerjp/optruck を作らせていた記憶がある。CLIツールは、コマンドラインオプションを何にするかを考えることで、結構思考をまとめられる。UsageをAIに書かせてひたすらレビューしてから作り始めるというので、バンバン書いてくれたコードを割と採用できるというのに驚いていたと思う。 発言を振り返ると、そのあと2月末にcl...

トイカメラで、写真の荒さを楽しむ

2025/12/16 - memo.yammer.jp
2025年も残り2週間、いかがお過ごしでしょうか? 最近私はトイカメラを買いました。 トイカメラを買った トイカメラとは安価な素材で作られた簡素なカメラを指し、チープな見た目やうつり具合を楽しむもののようです。 スマホで高画質な写真が撮れる昨今、細かいところまで綺麗に映るのはありがたいものの、いいと感じる写真を撮るには素人にはどうも腕が足りず、イマイチだなあと感じてしまう機会も多くあります。 そこで、あえて逆張りで荒い解像度でトイカメラで撮るなら、細かいことを気にせず写真を楽しく撮れるのではないかと思い、、買って試してみることにしました。 買ったのは Impress Watchの記事 でも紹介されているKODAK Charmeraというカメラです。 手の中に収まる小さな筐体で、重さも軽く、まさにキーホルダーのようなサイズで、ポケットやバッグの隙間にするりと忍ばせるこ...

寝袋を買った / 御池登山口のブラシが最高 2025/10/19

2025/10/20 - awkblog.net
登山をはじめてから2年くらい経ち、そろそろテント泊が気になってきて道具を調べているが、調べれば調べるほど沼な感じがある。 ひとまず寝袋だけ買ってみた。買ったのはモンベル シームレスダウンハガー800 #3。登山前の車中泊に初めて使ってみたが、軽いけど暖かいし、マミー型シュラフに昔から憧れていたので使うのが楽しい。 車中泊して登ったのは尾瀬の燧ヶ岳。御池登山口からの往復で登ったが、早朝に雨が降ったからか登山道は川の様になっていた。降りてくる頃には過去一番に靴がドロドロになってしまったけれど、登山口に洗い場があって助かった。しかも、ブラシに水道のホースが繋がっていて中から水が出てくる。素晴らしい!ドロドロを流して帰れたので、気分も爽快。

完全に秋 - 日記 2025/10/13

2025/10/13 - awkblog.net
10月も半ばにさしかかり、やっと半袖以外で過ごしても良いと思えるようになって、季節は秋に移ってきた。 今週末は3連休で、土曜日は所沢に買い物に行き、好きなカフェに寄って夜ご飯を食べた。前住んでいたところの近くにあるお店で、引っ越して遠くなってしまったのが惜しくて、所沢にきたら毎度行っている気がする。ユニクロで長袖とズボンを買った。乾燥できる服で毎日同じものをまわすというのを今年の夏にやってみて快適だったので、4着ずつ同じ服を買った。 夜から移動して松本で一泊し、日曜は北アルプスの焼岳に登る。新中ノ湯登山口に車を止めて、頂上経由で上高地に降りる縦走ルートをとった。行きは紅葉で帰りは岩陵帯という違う楽しみがあるときいて、実際にコースは面白かったものの、帰りの上高地が大混雑。バスもタクシーも大混雑で、タクシーは180人ぐらい並んでいて乗れないかもと言われ、結局1時間20分ぐらい並んで...

死活監視

2025/10/13 - awkblog.net
このアプリが2,3週ぐらい止まっていてゆるい(ひどい)ホビープログラミング姿を見せていたわけですが、先ほど復旧しました。 RSSを載せている yammer.jp も一緒にこけていて、勤務先でのパートナーのブログ投稿通知がこけているのが実質的な監視 (1日一回) ということで気づいたのだけど、忙しさにかまけてしばらく放置してしまっていた。 原因はマイグレーション失敗でコンテナが起動できなくなっていたこと。コンテナ起動時に自動でsqldefを使って自動でマイグレーションされるようにしていたのだが、いつからかデプロイ先のNeon + psqldef の組み合わせで DROP EXTENSION "pg_session_jwt" を実行しようとしてしまい、拒否されることで起動が失敗していたということだった。 3つ並列でコンテナを立てているわけだし、起動時に毎回マイグレーションする...

久々に走る

2025/07/07 - awkblog.net
今年の5月の初め頃から、健康のためにランニングを始めた。5月は12回、6月は3回、となっていて、6月上旬で止まっていたのだが、1ヶ月ぶりくらいに走ってみた。だいぶ暑くなってるが、朝早くだとまだ大丈夫。暖かいから朝でも体が動きやすい気がして、ペースは思ったよりもはやく走っていた。 朝早く起きれるかどうかが肝。走れるとスッキリしてよい。

メール送信者認証技術の整理

2025/07/05 - memo.yammer.jp
SPF, DKIM, DMARCをはじめとするメール送信者認証技術のトピックが時々必要になるので、自分用のメモとして書き出しておきます。覚えていないところはRFCを見たりしていますが、記憶の中を書き出しているだけので、間違っているところがあったらご指摘ください。 メール送信者認証技術はなぜ必要なのか? SMTPで送信元を表すのは、IPアドレス、エンベロープFrom、ヘッダFrom メールは、SMTPというプロトコル上でやり取りされます。この時、送信者側がどのホスト名からの接続か宣言されることとなっており、これがいわゆるエンベロープFromと呼ばれます。SMTPプロトコル上ではメールの内容(メールヘッダ+メールボディ)を合わせてテキストとして送信し、メールヘッダの中には送信者を表すFromのヘッダ(いわゆるヘッダFrom) が書かれています。 SMTP上でエンベロープFr...

Drupalに入門する

2025/06/03 - Zenn

PHPカンファレンス小田原2025に参加した

2025/04/12 - awkblog.net
4/12に開催されたPHPカンファレンス小田原2025に個人スポンサーで参加した。 小田原の地でカンファレンスが開催されると聞いて、これは行かねばとなっていたが、去年は家の事情で行けず、次の年も開催されるときいて今年こそはとなっていたのだった。 カンファレンスのなかではコンテンツが多く作り込まれていて、初めての人とたくさん接点をもって交流することのできる素晴らしいカンファレンスだった。 発表とコンテンツの感想を残しておく。 キーノートの @takamachi1saki さんの発表は、php-srcのコア開発者として、php-srcの開発状況のいまに関するトピックだった。発表の最後の「自由であるべき」という言葉は、Open Source Softwareに対する態度として、自由という言葉それ自体の意味に根ざした言葉であったなと思う。 自分もソフトウェア開発者の端くれとして...

GMO Developers Day 2024に登壇した

2024/12/01 - memo.yammer.jp
昨日、11/29, 30に開催されたGMO Developers Day 2024の「EC決済 開発責任者対談」というセッションに登壇した。 Developers Dayの登壇は昨年に続き2回目で、前回に引き続きGMOグループとして力入れてるなというのを感じる。 今年も、去年私が登壇した枠と似たようなパネルディスカッションに近い形式で、 @inamoly によるモデレータ+3人での対談を行った。事前の打ち合わせで何を話すか多少擦り合わせていたが、そのときに出てない話も本番では話していたり、対談の臨場感が現れた発表になったと思う。 対談形式の発表は特定のメッセージを強く伝えるようなものではないが、当日聴いていただいていた参加者の層はけっこうバラエティ豊かだったようなので、日頃考えていることや実践していることがどのようなものであるか、等身大で知ってもらうという意味で、会場の...

GMOペパボ EC事業部CTOに就任しました

2024/10/07 - memo.yammer.jp
2024年10月1日付で、GMOペパボ株式会社 EC事業部CTOに就任しました。 事業部CTOとは 事業部CTOは、ペパボのエンジニアリングマネジメントラインのなかで、部門の技術領域の責任者として設けられていたSEL(シニアエンジニアリングリード) 1 を、2024年2月に再定義 2 した役職です。 部門ごとに異なる事業を運営するペパボは、事業部門のなかに開発組織を含む様々な職種のパートナーがおり、それぞれ様々なサービスを提供しています。事業部CTOという役職は、技術と技術組織の責任者として部門を成長に導くという点は以前のSELと変わらず、部門をひとつの会社として見立てたときのCTOの果たすべき役割を、より強く明確にしたものといえます。 ところでCTOとはどのようなものでしょうか?これを端的に説明したものとしては、次の文章がわかりやすいでしょう。 CTO...

YAPC::Hakodate 2024に参加した

2024/10/07 - awkblog.net
2024/10/05に開催されたYAPC::Hakodate 2024に参加するために、週末は初めて函館に行っていた。 すごく楽しかったし、聞いたセッションのどれも学びになり、良い時間を過ごすことができました。 KeyNote Keynoteのなかで、量は質に転化する、フィードバックを待つ前につくりまくるという話が印象的だった。(全体の仕組みとしてフィードバックループを短くするのは大事だが) それを気にせずとにかく作るというのはフロー効率があがる面白い話だと思った。 手数が早いからこそできることでもあり、手数を早めるためには数をやることであり、個人のマインドセットとして量をやることの大事さを思い直した。 セッションの感想 見た発表のなかでの感想をいくつかメモ。 今日から始める大規模言語モデルのプロダクト活用 発表の中で X as a ...

財務3表一体理解法を読んだ(2024年8月)

2024/09/22 - memo.yammer.jp
8月に読んだ本のメモが下書きのまま眠っていたので投稿しておく。また当方は会計の専門家ではないので、この感想にツッコミどころがあったらこっそり教えてください。 はじめに 企業における会計のことを少しはわかっていなくてはと思い、友人に薦められた財務3表一体理解法という本を読んだ。 学生時代も入社してからも会計のことを学んでおらず、PL (Profit and Loss Statement / 損益計算書) やBS (Balance Sheet / 貸借対照表)、CF (Cash Flow Statement / キャッシュフロー計算書) というのを名前は知っていても実態は正直わかっていないという状態だったが、本を通して全体感を知ることができた。 知りたいことがまさに書かれていて、一冊目に読む本がこれでよかった。(正確性をとるとおそらく大胆に削っているところがあると本の中で但...

洗車デビュー

2024/04/30 - awkblog.net
4月に納車した初のマイカーを、先週末に洗車してきた。 いわゆるドライブスルー洗車というやつで、ブーンと入っていって、待つだけで綺麗になる便利システム。 洗車した後は拭き上げしたほうがいいというのを読んだので、置いてあったタオルで拭いたのだけど、(タダだからあるだけありがたいが)あんまり綺麗ではないのと、車の表面をゴシゴシ拭いている感じがあったので、マイタオルが欲しくなった。 駐車しているところに屋根がないからか、黄砂なのか一瞬で車が汚れて悲しくなっていたが、綺麗になるので洗車は素晴らしい。 まだそんなに乗れていないのだけど、せっかく車を買ったのでたくさん出かけたい。とくに遠出したい。

月曜日

2024/03/04 - awkblog.net
月曜日は体力が回復したことを生かして無駄に力を使って疲れてしまいがちな気がしているので、もうちょっと一週間全体をみて毎日を過ごしていけるようにしたい!ですね!

YAPC::Hiroshima 2024で、awkの話をしてきた

2024/02/20 - awkblog.net
YAPC::Hiroshima 2024の感想2本目は、自分が登壇した背景や感想を書いてみることにする。 発表資料はこちら: awkでつくってわかる、Webアプリケーション セッションを聴いた感想はこちら: YAPC::Hiroshima 2024のセッションが面白かった 経緯: awkblogを作っていた時にYAPCを教えてもらった 最初にawkblogを作り始めたのは、2022年の秋冬ごろに「できそうだけど前例が見当たらないな」と思ったところからだった。 gawkでHTTPサーバをつくれたり、PostgreSQLを使えるということを知ったが、それらを組み合わせている例を見つけられず、Webアプリケーションエンジニアとしていっちょ試してみるか、という気持ちだった。 やってみるとまあまあ楽しくて、一通り動くものを作って1人で楽しんでいたのだった。 プロ...

YAPC::Hiroshima 2024のセッションが面白かった

2024/02/20 - awkblog.net
2024/02/10に開催された、YAPC::Hiroshima 2024にて「 awkでつくってわかる、Webアプリケーション 」というタイトルで発表してきた。 今回が初めてのYAPCだったが、とても楽しく学びのある時間だった。せっかくなので、感想を記しておきたい。書いていたら結構なボリュームになってしまったので、今回はセッションを聴いた感想だけ書いて、発表した感想はまた別に書くことにする。 セッションを聴いた感想はこちら: YAPC::Hiroshima 2024で、awkの話をしてきた 入門EOL対応 同僚の @ryuichi1208 さんの、EOL対応についての発表。 EOL対応という少しニッチなトピックについて、体系的に整理して説明していて、ただ単に手を動かすというところだけではなく、なぜやるのか、どのような選択肢があるのかということが丁寧に説明...

呉で観光してきた

2024/02/10 - awkblog.net
YAPC::Hiroshima 2024で広島に来たので、広島にいる旧友に、呉に連れて行ってもらった。 大和ミュージアムに入ってみたり、目の前の海上自衛隊の資料館に行ったり。 大和ミュージアムは会場内の1/10の大和の模型があって、それがメインコンテンツっぽい。1/10でこれ、というのは実物でみると相当でかいだろうなあ。 海上自衛隊の資料館では退役した潜水艦の中に入れるのだが、実際に入ってみると閉塞さを感じられて結構いい展示だった。

YAPC最高

2024/02/10 - awkblog.net
h2もかけるよ

私と技術カンファレンス 2023 (雑文)

2023/12/31 - memo.yammer.jp
技術カンファレンス Advent Calendar 2023 、11日目の記事をお送りします。今は2023/12/31な訳ですが、今年中に出し切るということで先ほどから書き始めました。推敲していない雑文をお許しください。 私がカンファレンスにはじめてちゃんと参加したのはPHP Conference Japn 2022であった。これはスポンサー枠で登壇したもので、緊張もしたけれど思ったよりもたくさんの方に聞いていただいて嬉しかった。 社内のレビューによってとても良い発表ができたが、いっぽうで会社の代表なので、会社としての取り組みを紹介するというのが主だった。自分でプロポーザルを書いて出して自分のやったことを話したい、という気持ちを強くし、次は自分でプロポーザルを出すことにした。 PHPerKaigi 2023ではLTのプロポーザルを出して、登壇できたのだけれど、とにかく...

ISUCONに初めて参加した(2023年12月)

2023/12/08 - memo.yammer.jp
(2024/09/22記) 去年のISUCON13に参加したときの記録が下書きのままになっていたので、いまさらですが公開します。 同期の @homirun @yukun と一緒に、ISUCON13に参加しました。 結論はこれ。 くやしい、おもろい! — やんまー (@yammerjp) November 25, 2023 最後のスコアは1万点にギリギリ届かず満足できないけれど、何もわからんという感じにはならずやることはたくさん見えていたので、次回(が開催されるならば)ご期待ください! やったこと 前日まで 夏頃から、毎週1時間くらい業務後にあつまって練習していた。 ISUCON本 を読んで private_isu をいじってみたり、APMを入 れてみたり。1時間でできることは限られているけれど、なんもわからんというところからちょっとずつ全体感を...

チームが気付き、変化する

2023/12/03 - memo.yammer.jp
GMOペパボ EC Advent Calender の2日目は、yammerから、私の所属するチームについての話題を紹介します。 1日目の記事は、 @kenchan の『 「炭鉱のカナリア」になる 』でした。自分が今年、消防車を呼べたとき、呼べなかった時はいつだっただろうか?と思い出しながら読みました。3日目の記事は @tatsumi000 の、「 開発環境.nvim 2023 」です。Vimmerでありながら就業時間中はVSCodeのVimプラグインに甘んじている身として「1週間くらいNeoVimだけで生活してみようかな」と心が揺さぶられるトピックでした。 1 私が今いるチームは2023年の年初に発足し、はじまってからおよそ1年が経ちました。1年の中ではさまざまなことがありましたが、チームの中で違和感を感じるたびに、問題を発見し、解決策を見出し、一つずつ変化が加わって...

人月の神話を少し読む

2023/07/13 - memo.yammer.jp
人月の神話 (Frederick Phillips Brooks, Jr. 著、滝沢徹 訳、牧野祐子 訳、富澤昇 訳、丸善出版 発行)を、いくつかの章は流しながら読んだ。 この本は1975年に初版がでたもので、そろそろ発売から50年になろうとしている。記事の中に書かれている個々の事象は「お、まじか」と驚くような (しかし当時としては妥当であっただろう) How Toも多数ある。50年経つことを前提に置いて、細かい事象にはあまり深入りせずに読むことにしていた。 本の中で語られる「人」と「月」の常に等価交換できないということは、2023年の私の身の回りではありがたいことに当たり前に認識されているように思う。当たり前になっていることが、この本の功績なのだろう。 本の主張の本質はそのあたりだと思うが、それ以外に本を読んだ中で気になったトピックをいくつか記す。 ソフトウェ...

エンジニアのためのマネジメントキャリアパスを読む

2023/07/11 - memo.yammer.jp
書籍「 エンジニアのためのマネジメントキャリアパス 」(Camille Fournier著、武舎 広幸、武舎 るみ訳、及川 卓也まえがき、オライリージャパン発行)を読んだ。 私は一介のジュニアエンジニアで、今はシニアと呼ばれるような能力を身につけることを目指しており、マネジメントのキャリアを主軸に考えているわけではない。ただ、組織に対する視座や解像度が低いと感じることがあり、将来マネジメントのキャリアを拒んでいるわけではないので、気になってこの本を読んでみた。 この本は、いちメンバーから上級のマネジメント職位に、順を追って話が進む。最初は自分自身が管理される側としてどのようにあるべきか、インターンのメンターに関する話題が取り扱われているので、自分のようなものも読んで得るものがあった。後半の高い職位に関する説明は「そういうふうにやっているのね」というのを俯瞰して流し読みしたという...

dotfiles管理の推しツール「yadm」の記事を寄稿しました (Software Design 連載最終回)

2023/06/16 - memo.yammer.jp
yadm の紹介記事を、本日発売の Software Design 2023年7月号 に書きました。昨年12月から続けている連載「開発環境 探究の道」の最終回として、dotfilesの管理をより便利にするための方法を説明しています。 yadmについて / 記事の紹介 yadmは、シェルスクリプトで実装されたdotfiles管理ツールです。可搬性に優れ、dotfiles管理に必要な多数の機能と、gitに準じたコマンド操作体系をもっています。 私も普段からyadmを使っており、容易に導入できて、とても気に入っている 1 ものであり、ぜひみなさんに知っていただきたいと思って記事にしました。 記事の中では、yadmの概要と使い始める方法以外に、管理対象のファイルをより柔軟にする、sparse-checkoutとの組み合わせの例も紹介しています。 dotfiles管理...

LlamaIndexを使って、gawkプログラミングの相棒を作る

2023/06/13 - memo.yammer.jp
LlamaIndexを使って手を動かしてみようということで、gawkプログラマーが使える、質問回答アプリケーションを作ってみた。 gawk-rubber-duck LlamaIndexとは LlamaIndex という、LLMアプリケーションのためのフレームワークがある。 Pythonで書かれたプログラムで、内部でOpenAI APIを実行するが、その前後の処理なども行ってくれるものである。 LlamaIndexがどのようなものかの説明は、次の記事がわかりやすい。 Llamaindex を用いた社内文書の ChatGPT QA ツールをチューニングする - GMOインターネットグループ グループ研究開発本部(次世代システム研究室) 記事の中程の、LlamaIndex 処理フローに丁寧に書いてある。主に以下のことをやっているようである。 事前に与...

Llama Indexを試す

2023/06/11 - Zenn

awkで実装するUnion-Findと、ABC177 D

2023/06/06 - memo.yammer.jp
最近、業務時間後のオフィスで「競プロもくもくわいわい会」というのをやっている。そこで @purple_jwl さんよりUnion-Findを教えていただいたので、それをawkで実装して、 ABC177のD問題 を解いてみる。 Union-Findとは ここでは深く解説しないが、Union-Findについては、以下のサイトなどが参考になる。 Union-Find とは - アルゴ式 Union-Find はグループ分けを効率的に管理する、根付き木を用いたデータ構造です。 Union-Find を用いると、次の各クエリ(要求)を高速に処理できます。 N 個の要素 0,1,⋯,N−1 があり、初期状態ではそれぞれ異なるグループに属しています。 各クエリでは次のどちらかの操作を行います。 issame(x,y) : 要素 x,y が同じグループに属するかを調...

OpenAI API Embeddingsを使った、関連記事の表示・検索

2023/06/05 - memo.yammer.jp
このブログに、お試しで2つの機能を追加してみた。 ひとつは、 関連記事の表示 。もう1つは、 検索 。 どちらも OpenAI API Embeddings を使って、記事の文章をベクトル化し、 Pinecone を使ってベクトルの類似度の近しいものを得ている。 以下は、これをどのようにして作ったか、どのようにして動いているのかを説明する。 構成 作ったものの全体像は以下の図のとおり。 以下のようなことをやっている。出てくる要素は、「要素技術とロール」の項で後述する。 STEP1: インデックス作成 すべての記事に対して、それぞれ、記事全文をOpenAI API Embediingsに渡してベクトル化し、それをPineconeに登録する STEP2: 関連記事の探索 ある記事のベクトルをPineconeに渡し、それと類似度の高いベクトルを得る...

rtxはじめました

2023/05/31 - memo.yammer.jp
ランタイム管理ツール asdf と互換性のある、 rtx を使い始めた。 asdfのプラグインエコシステムに乗っかっていて、できることはasdfと基本的には同じのようだが、はやい 1 などのメリットがある(後述)。 切り替え 切り替えは以下のような手順で進めた。dotfilesの差分はこんな感じ yammerjp/dotfiles 6a6951c 。 シェルの設定ファイル(.zshrcなど)に書かれているasdfの読み込みをやめる 私の場合はsheldonのプラグインにしていたので、~/.config/sheldon/plugins.tomlの記述をひとまずコメントアウトした。 rtxをいれる Apple SiliconのmacOSを使っていたら以下のような感じ。 $ curl https://rtx.pub/rtx-latest...

エンジニアのためのドキュメントライティングを少し読む

2023/04/21 - memo.yammer.jp
前回 に引き続き、全部読まない読書の感想とメモを書いていく。前回記事では1週間で読み切るといいつつ、気づけば2週間経っていることには一旦目を瞑りたい。 2冊目は「エンジニアのためのドキュメントライティング」。 ユーザの問題解決とプロダクトの成功を導く エンジニアのためのドキュメントライティング - Amazon 一週間読書の方法 本の感想に入る前に、どのように一週間読書をやっているかを紹介する。なお、ここで扱う書籍は技術書を中心としたもので、小説などは当てはまらない。 目次から読むところを選ぶ 全部読むことが目的ではなく、短い時間で読みたいところを読むのが目的である。そこで、最初から読み始めないようにしている。ついつい最初から読み始めてしまい、読み切るまでなかなか次の本にいけなくなることを避けるのが狙いである。 目次のページをざっと眺めて、いくつか章を...

レガシーコード改善ガイドを少し読む

2023/04/07 - memo.yammer.jp
1週間だけ読む取り組み 一冊の本を一週間で読めるだけ読むというのをやってみる。 買った本は積まれる一方だし、買いたい本のURLもPocketに溜まるばかり。そしていざ本を読み始めると、最初から頑張って全部読みがちである。そういった習慣を変えるために、1週間で読むのをやめて強制的に次の本に行くという方法を試してみる。 一週間やってみて、全然読みきれないと感じた。ゾーンに入ってバーンと読んでしまえば今回の本などは読み切れるのかもしれないが、そうやって気合いを入れるのではなくて、趣味のプログラミングや雑誌の原稿や仕事のキャッチアップなどをする日々に馴染む範囲で日常的にどんどん読んでいきたいので、この取り組みをやり始めるわけである。 書籍に載るような文章を書く手間を考えると、本の作者には適当な読み方をして申し訳ない面もある。しかし世の中には読みきれないほどの本があるし、読まないより...

PHPerKaigi2023が最高だった

2023/03/26 - memo.yammer.jp
昨日のPHPerKaigi2023最終日、自分はLTをしたのですが、登壇以外にもたくさんの体験をして本当に濃い一日でした。 Day1のブログ: PHPerKaigi2023に参加しています - memo.yammer.jp LTで登壇 LTでペンライトを振るのも振られるのも楽しんだり。 登壇した内容は、PHP Conference 2022で出題したクイズの裏話として、当時の問題を振り返りながら、何を考えて作っていたか/作るならどうすべきかでした。 クイズのことを覚えていた方もたくさんいらっしゃったようで、嬉しい限りです。 LTの発表資料です!答えは最後のスライドにて 「クイズを作ってPHPに親しむ」 https://t.co/ef8QQPi3we #phperkaigi #a — やんまー (@yammerjp) March 25, 2023 ...

PHPerKaigi2023に参加しています

2023/03/24 - memo.yammer.jp
昨日から始まっているPHPerKaigi、昨日はオンライン、今日は物理で参戦しています。 これは、PHPerが増殖していると噂の謎の駅... #phperkaigi pic.twitter.com/uSM1BqewIx — やんまー (@yammerjp) March 24, 2023 初めてのPHPerKaigiですが、各発表やLTの独特の空気感がとても新鮮で、とても楽しんで参加できました。 PHPer界隈のTwitterでよく見るぞ、という方の話を聞けたり、なんなら物理的に話すなどできて、カンファレンスよいなあという気持ちに浸っています。 聞いたセッションはこちら。それぞれ細かい感想はフィードバックやまた別の記事で書くことにしますが、どれも面白く楽しく聞かせていただきました! PHPで学ぶ"Cacheの距離"の話 Win Test...

ターミナルをカスタマイズする Software Design連載 開発環境 探求の道 第3回

2023/02/17 - memo.yammer.jp
本日2/17発売の月刊誌 Software Design 2023年3月号 に、連載第3回目の記事を寄稿しました。 今回は「ターミナルをカスタマイズする」と題して、Alactirryとtmuxの基本的な使い方を紹介しています。UnixやLinuxの技術者がふれる時間の長いターミナルを使いこなすことで、快適に作業できることを目指す内容です。 ぜひ書店でお買い求めください。

Smart Keyboard Folio を買った(2023年2月)

2023/02/01 - memo.yammer.jp
(2024/09/22記)2023年2月ごろに、Smarty Keyboard Folioを買って、その感想を書いた記事が下書きに残っていたので公開する。最近はあんまり持ち歩いていないんだけど、一時期はだいたいiPadだけを持ち歩いていて、とても気に入って使っていた。dotfilesの連載記事の寄稿も、何割かはiPad + Smarty Keyboard Folioを使ってsshしてVimで書いていたはず。結構快適だった。 iPad Air 4の機動力を上げたくて、Smart Keyboard Folioを買った。 購入の動機 コンパクトな自作キーボードをiPadと一緒に持ち歩いて作業するということはときどき試していた。しかし、どうしてもiPadと分離しているので、ケーブルを接続するのが煩雑だし、膝の上などの不安定な場所では広げづらく、これらの点ではノートパソコンの使い...

シェルをカスタマイズする Software Design連載 開発環境 探求の道 第2回

2023/01/18 - memo.yammer.jp
本日発売の月刊誌 Software Design 2023年2月号 に、連載記事の第2回を寄稿しました。 開発環境 探求の道 連載「開発環境 探求の道」は、UnixやLinux上で、自分好みの開発環境をつくり、探求する道を紹介する連載です。 連載の中では、テキストエディタやシェルやターミナルに関するツールを紹介し、インストールからカスタマイズまで、手元で試せるような記事となっています。 シェルをカスタマイズする 第2回「シェルをカスタマイズする」では、bashとzshの設定ファイルを編集するのが主な内容となっています。 関連してgitのエイリアス機能やfzfにも触れます。 シェルの設定ファイルを編集したことがない方や、コピペして貼り付けたことはあるが、中に書かれていることが実はよくわかっていないという方をはじめとして、シェルに興味のある方にぜひ読んでいただきたい内容...

Ubuntu DesktopにAlacrittyをインストールする

2023/01/16 - memo.yammer.jp
Alacritty は、公式ではLinux向けのバイナリが配布されていないので、どこかから入手するか、自分でビルドする必要があります。 以下では、Ubuntu Desktop 22.04上でビルドし、インストールする方法を紹介します。なお、この記事の内容は2023/01/16時点のものです。また、 公式に提供されているインストール用ドキュメント を参考にしています。 簡易的に利用するとき ビルドされた実行ファイルをPATHの通った場所に配置するのみで良い場合は、こちらの方法を実行します。デスクトップのランチャー上にアイコンを表示したり、マニュアルをインストールした場合は、後述の「本格的に利用する」を参考にしてください。 # Alacrittyのビルドに必要なaptパッケージをインストールする $ sudo apt-get install cmake pkg-conf...

連載「最強の開発環境 探求の道」をSoftware Designではじめます

2022/12/16 - memo.yammer.jp
本日、12月16日(金)発売の Software Design 2023年1月号 より、表題のとおり「最強の開発環境 探求の道」という連載をはじめます。 全国の書店やネットで購入いただけますので、よろしければお手にとって読んでいただけると嬉しいです。 連載の内容とねらい 連載では、LinuxやUNIXの環境における、シェル、ターミナル、エディタ、dotfilesなどの使い方やカスタマイズを扱います。 これらに興味がある方におすすめです。 また、コマンドラインの環境に詳しくない/なんとなく使っているが、これから使いこなせるようになりたい方にも読んでいただきたい内容となっています。 記事の中では実際に試せる設定例も示しますし、その解説も、できる限りあわせて行います。 開発環境の目的や用途は十人十色ですので、自分にあったものを構築できるよう、設定の内容を理解していただけるよう努め...

日報 インターネット出張公開版

2022/12/15 - memo.yammer.jp
GMOペパボ EC Advent Calendar 2022 の14日目は、「日報 インターネット出張公開版」です。私やんまーが、12/14の日報を書きます。 13日目はよぴさんの「 半分営業半分コンサルみたいな職種からEC業界に転職して感じたこと 〜よぴ的営業マインド語りも添えて〜 」でした。 記事の中に出てきた「お客さんの理想とサービスでできることの限界の中間地点を一緒に模索する」という表現が印象的で、営業という仕事に対するよぴさんの熱さを感じました! さて、14日目アドベントカレンダーは、日報についてです。 私の勤めるGMOペパボ社内では、書きたい人々が思い思いに日報を書く文化があります。 社内のNotionには「みんなの日記」というデータベースがあり、そこに日報や日記が書かれることが多いです。 私も、毎日ではありませんが、ときおりNotionに日報を書いています。 ...

jpro: JavaScriptで書くJSON processor

2022/12/02 - memo.yammer.jp
この記事は、 🎅GMOペパボエンジニア Advent Calendar 2022 の2日目のものです。 みなさんは、JSON processorを使っていますか?ええ、 jq のようなツールのことです。世は大JSON時代、値を抽出したり、変換したりする機会も多いことでしょう。 ところで、 jq の抽出クエリやコマンドラインオプション、さらっと書けますか?私はあんまり得意じゃないです。そこで、 JavaScriptで書けるJSON processor「 jpro 」 をつくりました。 使ってみる 実際に使ってみましょう。Node.jsとnpmが使える環境ならば、事前のインストールなしに、「 npx jpro 」で実行できます 1 。以下では、私が最近書いた記事のタイトル5つを、 JSON Feed から抽出しています。 抽出クエリはJavaScri...

Asahi Linuxを使う

2022/11/15 - memo.yammer.jp
Apple Silicon搭載のPC上でLinuxをブートするという魅力的なプロジェクト、Asahi Linuxを手元のMacBook (2020, M1, 256GB SSD, 16GB Memory) で動かしてみた。 MacBookはハードウェアとしてすごく良く出来ていると思うが、ときどきLinux Desktopだったらもっといいなと感じることもあり、Asahi Linuxのことが気になっていた。 現在リリースされているのはα版。 一部のハードウェアが動かなかったりするものの、自己責任の範囲で、手軽にデュアルブート環境を構築できる。 感想 FirefoxとAlacrittyが動くことがわかって、ブラウザを開きつつ、一通りコマンドが叩ける環境ができた。 普段使いしても趣味用の個人端末であれば、そんなに困らなそう。 M1 MacBookの上でLinuxを動かすというだい...

Fitbit Charge 5を買った

2022/11/15 - memo.yammer.jp
スマホをFelica非搭載のものに乗り換えるために、Suicaを使える機器が欲しくてFitbit Charge 5を買った。 決済ができれば十分という条件で、なるべく安いスマートウォッチ(スマートバンド)を探して、この機種に帰着した。 買ってから2週間くらい経ったので感想を書いてみる。 🤔決済 まず、Suicaについて。 腕につける端末でSuicaを使えるのは体験がよい。 改札だったり、お店だったりで支払うとき、とても楽だし、スムーズでいい感じ。 ただし、気になるポイントもいくつかある。 一つは、オートチャージできないのが残念 (これは事前にわかっていた)。もともとオートチャージを使っていないので、なくても許容できるが、あったほうが気を使わずに済むので嬉しかった。 また、チャージに待たされるのが気になりポイント。 チャージはFitbitアプリのみから行えるが、1分くら...

Python実践機械学習システム100本ノックの準備

2022/11/15 - memo.yammer.jp
Python実践機械学習システム100本ノック を手元で動かしながら読んでみている。 Docker環境でJupyter Notebookを動かすサンプルコードがダウンロードできるが、そのままではビルドに失敗するので、requirements.txtにあるバージョンを書き換えるなどして動くように整えた。 jupyter==1.0.0 numpy==1.21.0 pandas==1.5.1 openpyxl==3.0.4 scikit-learn==1.1.3 matplotlib==3.3.2 japanize-matplotlib==1.1.2 seaborn==0.11.0 ipywidgets==7.5.1 ipympl==0.5.8 xlrd==1.2.0 あわせて、Dockerfileとdocker-compose.ymlをやりやすい形に書き換えた。 ディレ...

印象に残った仕事の話をきく話

2022/11/15 - memo.yammer.jp
とある飲み会で、下のツイートにある質問の「(今まで携わった|最近やった)仕事の中で、印象に残ったもの」というテーマの話を、とある方が振ってくれて、聞いたり話したりしていた。 「今まで担当したお仕事で特にがんばった、印象に残ってるもの」というテーマ、志向性やバリューの源泉がわかって、お話聞くの興味深かった〜たまに自問自答していくのもよさそうだわね〜 — ねもつ (@_nemozzz) November 11, 2022 この質問がめちゃくちゃよかった。 周りの人がどんな仕事をしているか、というのを把握する機会はあれど、それをどういう印象で受け止めているのかや、仕事の中でのおもしろポイント、その人が価値に感じていることを知れる機会というのは案外少ないかもしれない。 同じ仕事の内容でも人によって捉え方が違うだろうし、仕事の内容を知るだけでなくて「どう考えているのか」というの...

HerokuからCloud Run + Litestreamへ移行した

2022/10/12 - memo.yammer.jp
はじめに Herokuの無料枠が終了 することにあわせて、個人で動かしているRailsアプリケーションを他の場所へ移行する。 いままで無料で使わせていただいたこと感謝しつつも、月千円ほど払うほどのアプリケーションでもないので、ほぼ無料で移行できそうな場所を探すことにした。 1 コンテナをホスティングできるGoogle Cloud Runは従量課金制だが、個人で使う分にはほぼ無料なので、これを選ぶことにする。 Cloud Runで使うRDBは一般にはGoogle Cloud SQLが推奨されていそうだが、ここでは安さのためにSQLite3 + Litestream + Google Cloud Storage(以下GCS)を使うこととしたい。 実装の方向性 Litestream は、SQLite3のデータベースを、オブジェクトストレージやNFS、SFTPのストレ...

CloudFront Functionsで指定したURLにリダイレクトさせる

2022/10/08 - memo.yammer.jp
CloudFront Functionsというサービスがあり、軽量のJavaScriptコードをデプロイしてCloudFrontディストリビューションに紐づけることができるらしい。 他のサーバレスの実行環境との比較は以下の記事が参考になる。 CloudFront Functions の導入 – 任意の規模において低レイテンシーでコードをエッジで実行 | Amazon Web Services ブログ エッジで爆速コード実行!CloudFront Functionsがリリースされました! | DevelopersIO ちょうどdotfilesリポジトリのセットアップ用スクリプトを取得できるエンドポイントを用意したかったので、今回はCloudFront Functionsで他のURLへの302リダイレクトを発行するエンドポイントを作成してみる。 まずは、AW...

Alacrittyを使っていく

2022/09/07 - memo.yammer.jp
Alacritty とは Alacritty はクロスプラットフォームなターミナルエミュレーター。 yamlで設定を記述できること、クロスプラットフォームであること、動作が早いことが特徴である。 IMEのインラインサポート おぉぉぉぉぉ ついに、alacrittyにIMEのインラインサポートが入った!!ちゃんと変換中の位置も考慮されてdeleteもできてる!!! よし、乗り換えるぞ! https://t.co/J0rF12hJl2 pic.twitter.com/tADAMBfHTe — karasu@オフトゥン大好き (@Ket0104) September 4, 2022 AlacrittyにIMEで入力した時に未確定な文字列を表示する対応が入ったらしい。 対応されたのが嬉しかったので、早速ビルド 1 して手元のMacBook Airで使う...

プログラマのための文字コード技術入門を読んだ(2022年9月)

2022/09/01 - memo.yammer.jp
(2024/09/22記) 2022年の9月に読んだ本の記事が、下書きとして残っていたままだったので公開します。 業務で文字コードに触れる機会があったのですがそもそも文字コードというものに詳しくないので「改定新版 プログラマのための文字コード技術入門」という本を読みました。 本を読む前は文字コードにはいくつかの規格があることを知っている程度の理解であったので、なによりもまず勉強になりました。また後述するいくつかの概念は背景とともに説明があって知っておかないと規格を理解しづらいので、本を買ってよかったという気持ちになりました。 それだけでなく、この本を結構読むのが楽しく、平日の数日間で勢いで読み切ってしまうほどでした。 学べたこと: 文字の単位 私達が普段扱う文字は、何がひとつなのか、どれを同じ文字として扱うのか等の境界が実はあいまいで奥深いことを認識しました。 ...

Clean Architectureを読んだ

2022/08/23 - memo.yammer.jp
書籍「 Clean Architecture 」を読みました。 副題は「達人に学ぶソフトウェアの構造と設計」となっており、ソフトウェアの構造や設計について見識をあまり持たない私は、この副題のとおり達人に学ぼうという気持ちで読みました。 本書で学べたこと (印象に残ったこと) 本書を読むことで、"依存の方向"と"境界の決定"に関する考え方を学びました。 これらをはじめとする、本書で学んだ考え方を以下に紹介します。 なおこの記事では、書籍のタイトルや内容に反して、クリーンアーキテクチャとは何かやクリーンアーキテクチャの図に関する話はほとんど出てきません。それを構成する考え方に重きをおいて紹介します。 以下に示す考え方をみてみると、同心円状に書かれるクリーンアーキテクチャの図も依存の方向と境界の決定などの考え方を適用してできあがる図であるといえると思っています。 依存の方向 ...

WiresharkでHTTP通信の内容を確認する

2022/08/23 - memo.yammer.jp
Wireshark はネットワークプロトコルアナライザとよばれるソフトウェアで、通信の内容を確認することができる。 以下では簡単な使い方として、curlコマンドを使って手元のPCからインターネット上のサーバへHTTP通信した場合のパケットの内容を、tcpdumpでキャプチャし、最後にWiresharkのGUI画面上で確認する手順を示す。 なお、実行したPCは macOS 11.6 BigSur (Apple M1) だが、他の環境でも同様の手順で実行できると思われる。 パケットのキャプチャ まずはじめに、キャプチャするパケットを絞り込めるよう、事前に通信先のIPアドレスを調べておく。 次に、tcpdumpコマンドをsudoで実行し、キャプチャするパケットの通信先IPアドレスを指定した上で、内容を適当なファイルに書き込む。 (ここでは /tmp/memo-yammer-jp...

abbrはじめました。

2022/08/04 - memo.yammer.jp
同僚に教えてもらった zsh-abbr を導入しました。 zsh-abbrとは abbr は abbreviation の略で、おそらくもともとfish shellに組み込まれた機能とコマンド名を指しているようです。fishのabbrコマンドは、短いコマンド名を展開するalias コマンドに似た働きをするものです。 alias コマンドとの違いは以下のようなところにあります 実行前にプロンプト上で短いコマンド名を展開してから実行される historyには展開された結果が記録に残る 短いコマンド名を入力したあとスペースキーを入力しても、プロンプト上で展開される zsh-abbrはfishのabbrコマンドと同等のものをzsh上でも再現できるzshプラグインです。筆者はzshを使っているので、本記事ではzsh-abbrを導入します。 導...

Software Designへ寄稿しました (2022年6月号 第1特集 Appendix dotfilesのススメ)

2022/05/18 - memo.yammer.jp
技術評論社の Software Design 2022年6月号 第1特集 Appendix へ「dotfilesのススメ」という記事を寄稿させていただきました。 本日5/18発売で、全国の書店やWebでお買い求めいただけます。 「dotfilesのススメ」は、UnixやLinuxなどでツールの設定を記述するファイルであるdotfilesの管理構成をつくるハンズオン記事になっています。 GitHub上にdotfilesリポジトリをつくることを通してdotfilesに入門できます。 .bashrc や .zshrc や .gitconfig に何書いてるかよくわからない方、dotfilesをあまり知らない方、dotfilesの管理が気になっているんが手をつけていない方などにぜひ読んでいただきたい内容になっています。 寄稿のきっかけは、 技術評論社の方が私の書いたブロ...

cocot46を組み立てた(Build Log)

2022/05/17 - memo.yammer.jp
トラックボールとロータリーエンコーダを搭載したキーボード、cocot46を組み立てました。 40%でColumn staggeredな配列が魅力的なキーボードです。 経緯 購入のきっかけはcocot46の作者の @aki27kbd さんが再販予定をツイートされているのを見かけたことでした。 #cocot46lp は、手持ちのトラックボールモジュール在庫の数だけキットに同梱したものを近日中にboothにて頒布します。無印の #cocot46 も同様にトラックボールモジュールを同梱したものを遊舎工房に委託予定です。どちらも在庫限りとなる予定なので、気になる方はこの機会にぜひ。 — aki27 (@aki27kbd) April 16, 2022 トラックボール一体型のキーボードが気になっていたものの、1Uのトラックボールユニットは終売となっていて手に入れる...

歳をとった

2022/05/17 - memo.yammer.jp
先月誕生日を迎えて歳をとりました。 干芋で祝ってくださった同期の方々、ありがとうございました! 送っていただいてから少し時間が経ってしまっているものもありますが、感謝をこめて紹介します。 ちいさめの水筒。社の食堂でのみものを入れるのに重宝します。蓋がしっかりついているので変にこぼしたりする不安もなくてとてもよいです。 レンジでパスタ。4人前まで一気に茹でられる大きいもので、パスタを茹でる時に鍋を使わなくていいのがよいです!パスタは簡単に素早くつくれるので、リモートワークのお昼になりがちです。 2個あるので8人までいけます!(そんなには茹でない) 人に頼む技術。こういうことができるようになると、仕事をよりうまく回せるようになりそうでよいなあと思います。 シェル・ワンライナー160本ノック。シェル芸に憧れがあるので、身につけていきます! ホットプレート/たこ...

秘匿情報を含む.bashrcを分割する

2022/04/11 - memo.yammer.jp
dotfiles(ドットで始まる設定ファイル)の管理のために、Gitリポジトリを作成しGitHubにdotfilesという名前で公開するときに注意すべきこととして秘匿情報の扱いが挙げられます。 秘匿情報が .bashrc に含まれているとき、それをそのままGit管理してGitHubに公開することには問題があります。 ここでいう秘匿情報とはGitHubのパーソナルアクセストークンやAWSのアクセス用シークレットキーなどの認証時のパスワードの代替となるようなものをはじめとする、他の人に見せてはいけない情報のことです。 こういった内容を含む .bashrc は分割し、秘匿情報の含まない部分のみGit管理下に置くのがよいでしょう。 今回は以下のような ~/.bashrc があったとき、秘匿情報の含む部分と含まない部分に分割する手法を紹介します。 # ~/.bashrc ...

神奈川県民から埼玉県人へ

2022/03/31 - memo.yammer.jp
2年ほど実家に戻っていましたが改めて引っ越し、神奈川県民から埼玉県人になりました。 ちなみに神奈川では県"民"と言うけれど埼玉では県"人"と言う気がします。なんででしょうね? 会社への通勤時間はおよそ1時間といったところで、引越し前と比べたらだいぶ近くなったので時々通うのにちょうどよい距離かなと思っています。 🎉 単なる引っ越しにお祝いを頂いてしまいました。ありがとうございました🙏この場を借りて感謝をお伝えします。 タオル。タオル研究所というところのものらしく同期の欲しい物リストで見つけて気になっていたもの。結構ふわふわで良さげです。最近はバスタオルをやめて家のタオルをすべてフェイスタオルに統一してます。 キッチンハイター。強い。 カントリーマアム。考え事をすると糖分が欲しくなります。一袋開けると一気に食べてしまいます。 洗濯用ハンガー、ちょ...

Web Components (ShadowDOM) でもページ内リンクをしたい

2022/03/31 - memo.yammer.jp
HTMLではページ内リンクができる。 id属性ないしname属性で指定した文字列を # 1 の後ろにつけてリンク先のパスとして指定すると、当該の要素が画面上部に来るようにスクロールする。 <p id="content"> hello! </p> <p style="height: 2000px; background-color: red;"> blank </p> <a href="#content"> 「hello!」へ飛ぶ </a> このページ内リンクをShadowDOM内の要素からShadowDOM内にむけて行いたいとき、そのままではできない。 同じような動きを実現する方法として、クリックイベントをもとにShadowDOMの中の要素を探してJavaScriptによってスクロール...

リバースSSHトンネルでVPSを介していつでも自宅のPCに繋ぐ

2022/02/24 - memo.yammer.jp
外出先で手元のラップトップ (MacBook Air) からポートを公開していない自宅のサーバ 1 (Ubuntu) へsshしたいときの記録。 数ヶ月くらい前から安価なVPSを借りて、そこを中継地点として外出先からいつでも自宅のサーバにsshできるようにしている。 ひとまず繋ぐ 以下の接続ができるようにしておく。 ラップトップの公開鍵を自宅サーバとVPSに、自宅サーバの公開鍵をVPSに登録 ( ~/.ssh/authorized_keys に追記) して、sshできることを確認する。 自宅のラップトップ -> 自宅のサーバ 自宅のラップトップ -> VPS 自宅のサーバ -> VPS ~/.ssh/config on ラップトップ 中継するVPSとその先の自宅サーバへの接続情報を書いておく。 # ~/.ssh/config H...

Ruby製のCLIを作ってgemにしてみる

2022/02/09 - memo.yammer.jp
会社に入ってからRubyを触る機会がちょこちょこあるが、Rubyのことをあんまりわかっていないという感覚があるので機会をみつけてRubyで何かをつくるというのをやっていきたい。 今日はその中でファイルの文字コードを確認する処理をCLIとして実装してみた話。 作ったもの 実装するものは比較的シンプルで、渡されたファイルが指定された文字コードで解釈できるか否かを判定する。 1 Rubyのワンライナーで書くこともできる規模感のものだ。 $ find path/to/dir -type f | ruby -e 'STDIN.reject{|path| IO.binread(path.chomp).force_encoding(Encoding::UTF_8).valid_encoding?}.each{|f| puts f}.empty? or (puts "... The...

graspad - iPad用の握れるキーボード

2022/01/26 - memo.yammer.jp
昨年秋 1 に3Dプリンタを買って作りたかったのがiPad用のキーボード。 iPadケースの背面にキーボードがくっついていて、iPadを横から握ったまま物理キーボードを打てる。 左右の2パーツから成っていて、iPadの左右から差し込み、2つをつなぐ配線とiPadのType-Cをつなぐことで使える。 キー数は42キーで、3x6のキーが背面の左右に、親指で押す用の側面のキーが3つずつ左右にある。 本記事では、この少し変わったキーボードの製作過程を記す。 設計 着想 iPadに物理キーボードを使いたいと思っていたのだが、普通のキーボードを繋ぐだけでは安定した机の上でしか使えないし、それならMacbookで代用できてしまう。 電車の中やベッドやソファでゴロゴロしながら物理キーボードが使えたらいいなと思って、iPadを横持ちで握ったままキー入力...

2021年に3Dプリンタに入門した - Anycubic Mega S

2022/01/26 - memo.yammer.jp
昨年の秋に3Dプリンタを買ったので、その経緯と3Dプリンタに入門して学んだことを記します。 サンプルを印刷してみる pic.twitter.com/hdrNYcBRn7 — やんまー (@yammerjp) September 20, 2021 作りたいものがあって、3Dプリンタの印刷サービスを検討していたが高すぎたのが事の発端です。 作りたいものの寸法が大きかったため依頼すると2万円くらいするとわかり、更に安価な3Dプリンタ本体が2-3万円くらいで入手できることがわかり、これは試してみてもいいのではという気持ちになりました。 1 3Dプリンタを選ぶ 家庭用3Dプリンタには光造形方式と熱積層方式があり、今回は熱積層方式のものを購入しました。前者は印刷可能サイズが小さいが精巧で模型などに向き、前者は印刷可能サイズが大きいが精巧さに劣るのでDIYなどに向...

情報処理技術者試験にはミックスサンド (DBスペシャリスト試験を受けました)

2021/12/19 - memo.yammer.jp
2021/10/10に令和3年度秋期データベーススペシャリスト試験を受験しました。 情報処理技術者試験は通算4回目、高度情報は2回目 (春にネットワークスペシャリスト落ち)、データベーススペシャリストは今回が初でした。 合格したので、この度晴れてみくりさんと結婚できる権利を得ました。 #逃げ恥 リストラ候補の津崎平匡さんの資格欄「応用情報技術者、データベーススペシャリスト、基本情報技術者」 - togetter 以下、対策したことを記録します。 参考書 いままではインプレスの過去問題集を毎度買っていたのですが、今回は翔泳社の「うかる!データベーススペシャリスト」を購入しました。 結果からいうとこれは大正解で、午後問題の解説がめちゃくちゃ丁寧なので知識があまりない状態でも解説から吸収することができました。 インプレスの過去問題集は、ネットワークスペシャリストの...

ECテックカンファレンスの前と後

2021/12/16 - memo.yammer.jp
前の記事に書いたとおり 先日 ペパボECテックカンファレンス に登壇しました。 今日はテックカンファレンスの内容ではなく発表前後に考えていたことと気持ちをいくつか記します。 「新卒」という言葉を使わない 発表に際してひとつ気をつけていたことに「新卒」という言葉をあまり使わないことがあります。 テックカンファレンスの目的や狙いが記載された社内向けのissueを登壇が決まった頃に読んだ記憶があります。 これと今までやってきたこととを照らし合わせ自らの発表を聞いて欲しい人をジュニア層 1 のエンジニアと定めていました。 私は新卒で入社したのでその体験をこれから新卒で入社される方や興味のある方に向けて話す行為は普通は一定程度価値があると思います。 しかしながら実は聞いて欲しい人として定めたジュニア層のエンジニアと、私の所属する会社の今後の新卒採用の募集方針は重なる部分...

開発チームの新しいエンジニアメンバーがうまくやるには

2021/12/14 - memo.yammer.jp
こんにちは、2021/12/09に開催された ペパボECテックカンファレンス にて、記事名と同じタイトルで発表をしました。 当日のスライドはSpeaker Deckで公開しています。 今日はその発表の内容を記事として紹介します。 開発チームの新しいエンジニアメンバーがうまくやるには 私は4月に新卒でWebアプリケーションエンジニアとして入社し、今は10人弱のチームに配属となってから3ヶ月ほどが経ちました。 会社のGitHub Enterprise Server上では、配属からこれまでで約60のPull Requestを開き、マージし、デプロイされました。 Pull Requestの数と成果は必ずしも一致しませんが、配属から今日までの間、昨日を細かく分割して実装しデプロイするということを続けています。 チームメンバーが私を迎え入れるにあたってしてくれたことは...

複数の環境に適応する、階層構造のdotfiles

2021/12/02 - memo.yammer.jp
こんにちは、やんまーです。 もう師走、早いですね... この記事は GMOペパボアドベントカレンダー の2日目のものです。 昨日は daiki さんの「 社会人エンジニアな僕が研究を続ける理由 」でした。 記事の中の研究を通して自己表現をされているという表現が印象的でした。仕事に精を出しながらも、仕事とは異なるところで時間をとって継続的に物事に取り組むということに尊敬の念を持ちます。 私も見習いたいものです。 今日は変わって実践的な内容です。私の開発環境 dotfilesを紹介します。 dotfiles とは Unix / Linux の環境において、 ~/.bashrc 、 ~/.vimrc 、 ~/.gitconfig のように . から始まる各アプリケーションの設定ファイルが $HOME ディレクトリに配置されることがよくあります。 これらの設定ファ...

master push をしないために

2021/11/09 - memo.yammer.jp
昨日、master push をしてしまいましたので懺悔します。 私の会社の開発は、GitHub Enterprise Server上のPull Requestベースで行われており、開発した機能をPull Reqeustにしてレビューを貰ってからマージすることとなっています。 しかしながら昨日の私は、ローカルで作ったcommitをそのままリモートリポジトリのmasterブランチにpushしてしまいました。 masterにマージするだけでは本番にはデプロイされませんが、複数のチームが開発しているリポジトリであり、各方面に迷惑をおかけしました。 私がやらかした後、master pushを防ぐ術を教えていただいたので、以下に記します。 GitHub上で branch protection を行う ルールを設定し、force pushできないようにしたり、レビュー必須としたりす...

ユニコーン企業のひみつを読んだ

2021/08/18 - memo.yammer.jp
8月も折り返し、いかがお過ごしでしょうか?8月は夏ですね。夏といえば夏休み、夏休みといえば宿題、読書感想文 1 。ということで読んだ本の感想を綴ります。読書メモが下書きに溜まってしまっているので消化する試みです。 書籍「ユニコーン企業のひみつ」を読みました。 本書はSpotify をはじめとするテック企業が、スタートアップのような勢いのある価値提供をどうやってスケールさせているかを説明する、ソフトウェア開発企業の組織づくりについて説明されたものです。 今年の4月に日本語訳版が発売され、私の所属する会社の社内で広く読まれているようです。 本書籍内でも言及されるSpotifyモデルと呼ばれる組織体制を、社内でもいくつかの事業部で取り入れています。 そういった背景から書籍内で用いられている「スクワット」「チャプター」「トライブ」といった言葉が会話に出現するので、知っていないとコミ...

アプリケーションをつくる英語を読んだ

2021/07/14 - memo.yammer.jp
会社の先輩に教えていただいた「アプリケーションをつくる英語」を読んだ。 この本はアプリケーション開発においてUIに表示される言葉を中心に、それらを英語でどう表現すればよいかのヒントが書かれている本である。 三部構成で前半の二部は辞書的に単語や表現が紹介され、最後の一部が読み物になっている。 前半の辞書的な部分は、プログラムを書く中で命名に迷ったり、エラーメッセージを書いたりするときに役立ちそうだった。 紹介されている単語や言い回しは比較的厳選されている。 自分の表したいニュアンスの言葉が確実にあるわけではないと思うが、ソフトウェアやUIに関係する言い回しに絞って書かれている。 迷ったときには和英辞書と合わせて、本書のPDF版を検索して参照したい。 後半の読み物のなかでは、35.3.2節 キャピタリゼーション (どの文字を大文字にするか) が特に気になった。 恥ずかし...

ソフトウェアは幽霊などではない。👻

2021/07/07 - memo.yammer.jp
ソフトウェアを開発していると、ときどき幽霊に出会うことがある。正確にはまるで幽霊のしわざかに思えるような謎の挙動に悩まされるときがある。 実際には幽霊などおらずコンピュータは書かれたとおりに動作しているだけで、さらに大抵は自分がプロトコルや仕様を把握していないか誤ったプログラムを書いているのだが。 幽霊 — やんまー (@yammerjp) July 6, 2021 これは私がOAuth2.0の仕様を把握していなかったが故に謎と思った挙動になやまされたとき。 複数の要因が重なっていたりして挙動の説明がすぐにはつかないとき、原因を追求するためにだいたい次のようなことをする。 原因を考える (現状を整理する、アタリをつける) 挙動を確認するためにプログラムを実行する (手を動かす) 仕様やドキュメント等を調べる 人に聞く ここで...

初出社、ワクチン接種

2021/06/24 - memo.yammer.jp
日記です。雑多なトピックが以下に続きます。 4月に入社した会社に、今日はじめて出社しました。 新型コロナウィルスのワクチン接種が主な理由で、くわえて同期をはじめとして何人かに出会うなどしました。 今日の主なイベントであるワクチン接種ですが、大変スムーズで拍子抜けしました。 受付をして打つのは一瞬、15分経過観察しておわり。 職域接種のためいわゆるモデルナ筋注といわれるものを打って今は9時間ほど、腕が重いですね。 社の方々と会うのはちょっと緊張。 人との接触は抑える必要もあるのであまりたくさん会話できるわけでもなく、会えていない人もたくさんいて、それらは未来の機会に託しました。 新型コロナウィルスが一日でも早く収束することを願います。 初出社してみたものの、持っていく荷物がまだあんまりまとまっていないですね。 バッグが重く、荷物も取り出しづらく、もうちょっと減らしたいです...

curldocというWeb APIの仕様書形式 兼 モックサーバを作っている

2021/06/21 - memo.yammer.jp
こんにちは。最近は会社の技術研修を粛々と受けています。 6月に入ってからはRailsチュートリアルを進めていて、ちょうど先週に終わりました。Railsは大変多機能であるとヒシヒシ感じています。 Ruby自体も今まで書いたことがなかったので、私の経験のある言語とは結構毛色が違っていて面白い気分です。 残業も特になく給料をいただきながら勉強している謎の身分ですが、権利をありがたく享受してスーパーエンジニアに成長したいと思います。 そんなこんなとは別で、趣味で最近作り始めたのがcurldocというツールです。 curldoc curldocのcurlはコマンドの curl から来ています。 平たく言うと、curlコマンドとそのレスポンスを記述したMarkdownファイルを読み込んで立ち上がるモックサーバを作っています。 そもそもcurlはHTTPリクエスト 1 を送る...

リモートワークの馴染む、4月の新卒研修 (GMOペパボ)

2021/05/11 - memo.yammer.jp
2021年4月1日にGMOペパボ株式会社 (以下ペパボ) に入社しました。 これからソフトウェアエンジニアとして成長し活躍することを夢見てやる気に満ち溢れています。 その第一歩として4月9日から4月30日までの約3週間、全職種で取り組むペパボの新卒研修に参加したので感想を記します 1 。 ええ、それはその、大変楽しい研修期間でした。 CS研修でお世話になった ワタミユ さんが書いてくださった新卒の我々のイラスト リモートワークでうまくやる ペパボは2020年6月にリモートワークを基本とした働き方に移行し、今年の研修は全てオンラインで実施されました。 私自身、入社後にまだ一度も出社していません。 リモートワークの環境で新卒入社することに少なからず不安はありました。 大学のときはオンラインによるコミュニケーションのとりにくさや物理的な距離感を強く感じるこ...

ブログをNext.jsに置き換える

2021/05/07 - memo.yammer.jp
ゴールデンウィーク明けの平日、いかがお過ごしだろうか。 私の場合は新卒研修のブログ記事を書こうと思ったものの、その記事を投稿するためのブログを弄っているうちにゴールデンウィークが終わってしまった。 そんなわけでここ数日は、「そろそろちゃんと触るか〜」と思っていたNext.jsを使ってこのブログを作り変えていた。 見た目は似ているけど中身はイチから作ったので別物である。 1 機能追加をしたいことがあったりしたので前々からJavaScriptのフレームワークに載せ替えたいと思っていて、やっと腰が上がった次第。 2 本当は1,2日でサクッと終わらせてしまってブログ投稿用のエディタを作ろうと思っていたのだけど全然思うようには進まず、結局閲覧画面だけ作って終わった。 以下にここ数日の感想をいくつかの話題に分けて記す。 ブログのデザイン デザインは変わっていないよう...

Vim8からNeoVimに乗り換える、2021GW

2021/05/01 - Zenn

融けるデザインを読んだ

2021/04/29 - memo.yammer.jp
このまえ教えてもらった本、「融けるデザイン ―ハード×ソフト×ネット時代の新たな設計論」(著: 渡邊恵太) を読んだ。 以下はその解釈と感想である。 融けるデザイン ―ハード×ソフト×ネット時代の新たな設計論 | 渡邊恵太 |本 | 通販 | Amazon 本書では「自己帰属感」という言葉を通して良いインターフェイスとはどのようなものかを述べている。 自分の与えた動作に伴ってリアルタイムに反応があると自己帰属感が生まれ、自己帰属感が高まると 身体が拡張したかのように思いのままに操作できる ようになる。 例えばキーボードは、慣れるまではひどく使いにくいが、慣れてしまえば文字を打つときに自然と手が動き自分の身体の延長のように扱える入力機器だと思う。 車だって自分で運転することに慣れてくれば車体感覚が身につき狭い道路でもなんとなく車を端に寄せたりできるようになる。 キーボード...

足でマイクのミュートを解除しよう for 在宅勤務

2021/04/27 - memo.yammer.jp
私はいま、在宅勤務をしている。 特に研修中だからかオンライン通話の機会が多く、通話しながら作業や調べ物をするので、マイクのミュート/ミュート解除に手こずることに悩みを抱えている。 そんな中、ふとしたときに気づいたのである。「足が空いているではないか」と。 家に左クリックが壊れたマウスが有ったのでこれをフットスイッチ代わりにして、押しているときだけミュート解除するようにしてみた。 こちら、机の下に置かれた不審なマウスです。 pic.twitter.com/DWxn3oxcLM — やんまー (@yammerjp) April 26, 2021 どのように実現しているかは後半の「 つくりかた 」に書く。 良いところ 細かくミュート/ミュート解除できる 目論見どおりうまく動いており、概ね快適である。 鼻をすする音など些細な音が入らずに済むのが...

ロリポップ上に公開された WordPress サイトを、ローカルの docker-compose 上で再現する

2021/04/24 - memo.yammer.jp
表題の通り、ロリポップ!レンタルサーバ上に公開されている自身のWebサイトをバックアップし、さらに手元のPC上にdocker-composeで動作するように配置する。 前提の環境 ロリポップ!レンタルサーバ上で WordPress を用いた Webサイトを構築している。 macOS 10.15 Catalina Docker Desktop for Mac がインストールされている wget がインストールされている。 (Homebrew を用いて brew install wget でインストール) 手順1: ロリポップ上の情報をダウンロード 1-1: ファイルを抜き出す はじめにロリポップ!ユーザ専用ページ > ユーザー設定 > アカウント情報 を開いてアカウント情報を確認する。 今回は以下の内容であったとする。 ...

僕の、私の、ストレングス・ファインダー (感想)

2021/04/19 - memo.yammer.jp
会社の研修でストレングス・ファインダーを受けたので、結果を過去の経験と照らし合わせて考えてみます。 読書メモみたいなものです。 ストレングス・ファインダーとは 1998年に心理学者のドナルド・O・クリフトンが開発したオンライン心理テスト。 「実行力」「影響力」「人間関係構築力」「戦略的思考力」の4領域に分類される34の資質のうちどれを自分が持っているのかを判断してくれる。 それぞれの資質を知ることで自分の能力をどのように開発していけばよいかの参考になるらしい。 書籍「 さあ、才能(じぶん)に目覚めよう 新版 ストレングス・ファインダー2.0 」に付属するアクセスコードから受けることができる。 なお以降に挙げる引用の出典はすべてこの書籍である。 結果 私の持つ資質の上位5つは高いものから順に、 分析思考 、 学習心 、 収集心 、 ポジティブ 、 個別化 らしい。前半3...

社会人一週目の所感

2021/04/09 - memo.yammer.jp
4/1に社会人になり一週間が経った。 職種合同での研修期間中で実際の仕事やエンジニアリングとはまだ少し距離がある。 研修もまだまだこれからだけど、区切りが良い日なので今日の気持ちを記録しようかと。 生活について まず当たり前だが、社会人は結構疲れる。 3月末までは一日中暇で、好きなだけコードを書き好きなだけネット見て好きなだけ寝ていたので差が大きいだけで、毎日朝から夕方まで集中していたら人間誰でも疲れるだろう。 睡眠は本当に大事。 一昨日つい睡眠時間を削ったら昨日は一日中眠くて、仕事終わった直後にベッドで爆睡した。 これができるから在宅勤務は良い。通勤が無くて良い。 慣れてしまったら毎日出社なんてできない人間になる気がする。 あとは時間を大切にしたくなる。 研修後にレポートを書くのだが、疲れたからゆっくりやるかと思うとそれだけで凄く時間がかかる。 1日がすぐに終わってまた朝...

Office365メールやGmailをローカルにバックアップする (macOS)

2021/03/28 - memo.yammer.jp
3月で大学を卒業するにあたり、大学のメール (Office365) と研究室のメール (Google Workspace) が使えなくなる。 閲覧もできなくなるのでバックアップを取っておきたいので試してみる。 メールの取得 Gmail 上のすべてのメールを mbox 形式で取得する Google は サービス上の個人データをエクスポートする機能を提供している。 参考: Gmail からデータを書き出す - Gmail ヘルプ 2021/03現在では、次の手順で取得できる。 Gmail を開き、右上の自分のアイコンをクリックして、「Google アカウントを管理」を選択 「データとカスタマイズ」タブに移動し、中段の「データのダウンロード、削除」から「データをダウンロード」を選択 「新しいエクスポートの作成」の右下にある「選択をすべて解除」をクリック...

TCP/IP における全レイヤを俯瞰したパケットの構成

2021/02/19 - memo.yammer.jp
ふとしたときに TCP/IP でのパケットの各フィールドにどんなものがあったか確認したくなることがあるので、レイヤごとに分けずまとめて書かれた物があると便利。 以下, Ethernet, IPv4, TCP, HTTP を用いたパケットの各フィールドの配置を表した図。 各フィールドの意味は記載しません。

卒業論文の発表を終えた。近況。

2021/02/18 - memo.yammer.jp
先週に卒業論文を提出し、今日その内容を学科内で発表した。 無事合格できた旨のメールを先ほど受け取って、これで大学4年間の全ての単位を取得できる見込みになった。 大学生活は案外早く過ぎ去ったなと思いつつ、こういうのは終わってみればたいてい早く感じるものだろう。 今の自分は大した技術力があるわけでもないし、大学4年間で大したことを身につけられた気がしないと少し前まで思っていたけれど、振り返ると4年前の自分は今よりも果てしなく無知だったことに気づくので、大学に入ってこの専攻を選んでよかった。 最近は論文執筆に勤しんでいた。 新年の意気込みで早寝早起きと言っておきながら最近はだいぶ夜ふかしをしていたし、本を読む目標もあまり進んでいない。 少し読んだ本もあるが、そんな時間があるなら論文を書きましょうという感じだった。 卒業研究にあたってそこそこ論文などを読んだ。 論文を読む機会...

ベジェ曲線で画像を丸っぽくくり抜く (CSS clip-path)

2021/01/27 - memo.yammer.jp
<img src="https://blob.yammer.jp/gather_fishes.jpg" style="clip-path:url(#bezier-curve-circle); width:300px;" /> <svg> <clipPath id="bezier-curve-circle" clipPathUnits="objectBoundingBox"> <path d=" M 0 0.5 C 0 0.166, 0.166 0, 0.5 0 S 1 0.166, 1 0.5 S 0.833 1, 0.5 1 S 0, 0.833, 0, 0.5 Z "/> </clipPath> ...

Planck Keyboard を手に入れた

2021/01/09 - memo.yammer.jp
先月に申し込んだ Planck Keyboard が届いたので組み立てた。 Planck Keyboard とは Drop + OLKB Planck Mechanical Keyboard Kit V6 | Drop いわゆる 40% 1 と言われる分類で格子配列 2 のキーボードキット。 キー数が少なく(4x12個) コンパクトなキーボードである。 スイッチを取り付ける基盤である PCB と PCB に装着するケースのセットで販売されていて、アメリカの共同購入サイト Drop (Massdrop, Inc.) で購入できる。 いつでも買うことが出来るわけではなく購入希望者が集まってからまとめて生産されるようで、しばらく前から様子を見ており12月に購入できると知って注文した。 もともとは薄型の Planck Light Keyboar...

2021年の目標「早寝早起き、本を読む」

2021/01/02 - memo.yammer.jp
今年の目標は「早寝早起き、本を読む」とする。 生活リズムの改善 目標の前半部分「早寝早起き」について。 2020年は大学の講義中心の生活から研究中心の生活に移り、殆ど自宅で過ごしたこともあって夜型の生活が続いた。 寝るのが惜しくて夜ふかしをして、起きるのが遅くなることで更に眠くなる時間が遅くなり、、という悪循環から朝4時頃に寝て昼頃に起きるのが常態化していた。(もっと遅いことも多々) これに対し、今年から社会人になるのでこのままでは良くないと思い12月中頃から生活リズムを改善する試みが始まった。 22歳になって「早寝早起き」という小学生みたいな目標を立てているが、今まで生活リズムを制御することは自分にとって結構な難題であった。 振り返れば昔から朝に弱く学校に遅刻したりしていたし、中高の部活を選ぶときの最優先条件は朝練がないことだった。 記憶に残っている出来事として、...

リーダブルコードを読んだ感想

2021/01/02 - memo.yammer.jp
2021年最初の読書はリーダブルコード。 今年は本をたくさん読みたいので景気づけも兼ねて元日のうちに読み始め、今日の午前に読み終えたので感想を綴る。 本の概要 リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice) | Dustin Boswell, Trevor Foucher, 須藤 功平, 角 征典 |本 | 通販 | Amazon プログラマーに向けた、読みやすいコードを書くためのバイブルといわれることもある本である。 表紙が楽譜のデザインであり、ソフトウェアにおける「コード」と音楽における「コード」(音楽符号) をかけているのがポイント。 プログラムを書く人間なら読むべき、としばらく前に教えていただいたが積読されていた本である。 英語版は無料で PDF が手に入る。 日本語訳版は3000円くらい...

自分のGitHubリポジトリで振り返る2020年

2020/12/31 - memo.yammer.jp
今年コミットした GitHub のリポジトリを順にみながら2020年の個人開発を振り返ってみる。 実は去年もやろうとしていた企画 1 、今年こそ年内に公開するぞ。 リポジトリ一覧の取得 去年の記事では API を curl で取得していた 2 が、今年は GitHub の公式 CLI である gh を使って取得することとする。 jq と gh をインストールし、 ~/.config/gh/config.yml の aliases キーに、次のような内容を追記する。 aliases: repos: | !gh api --paginate graphql -f owner="$1" -f query=' query($owner: String!, $per_page: Int = 100, $endC...

HugoでURLをパーセントエンコード (CloudinaryでOGP画像生成)

2020/12/26 - memo.yammer.jp
Hugo で Cloudinary 1 を用いた OGP 画像生成のため日本語を URL に埋め込みたい。 埋め込みのために文字列をパーセントエンコード 2 する方法を記す。 方法 Hugo のテンプレートの中で $string 変数に文字列が格納されているとき、次の表記で変数内の文字列をパーセントエンコードして出力できる。 {{- replace (substr (querify "a" $string) 2) "+" "%20" -}} 例えば OGP 画像のためURLに日本語文字列を埋め込むのは次のようにして実現できる {{ $title := "埋め込む文字列" }} <meta property="og:image" content="https://res.cloudinary.com/basd4g/image...

MacBookAir 2020 (M1) のセットアップ

2020/12/22 - memo.yammer.jp
Apple Silicon を搭載した MacBook Air を購入したのでセットアップをやっていく。 そのメモ。 m1 MacBook Air が届いたのでとりあえずたくさんアプリケーションやタブを連続起動して「はえ〜」ってやつをやりました。 — やんまー (@yammerjp) December 20, 2020 2020/12/20現在では「 brew bundle しておわり」というわけにはいかない。 できる限りApple Silicon版のバイナリを使いたいので、各種ソフトウェアのビルド方法などを記録することにする。 Tips arch -x86_64 を先頭につけてコマンドを実行すると Rosseta2 上で実行してくれる。 ソフトウェアのインストール以前 macOS の設定 ライブ変換の無効化 OSのキーマップ設...

Pocketにツイートを保存したらリツイートする

2020/12/15 - memo.yammer.jp
題名のスクリプトを作ってcronで定期実行したら便利だった話。 背景 Twitter アカウントがいくつかある。 1 情報を浴びるように流しているアカウントだったり、情報の種類別だったり、使っていないものだったり。 PC で Twitter を見るときは大体 TweetDeck を使っておりこれは結構使いやすい。 一方で iOS ではマルチアカウントで満足する Twitter クライアントを見つけられていない。 (今は feather を使っている。) 具体的には次のような機能がほしい。 ユーザを別アカウントでフォローする ツイートを別アカウントでリツイートする 作ったもの 作ったものはこちら: pocket2retweet - GitHub 対象のユーザとツイートを Pocket に記録し、あとからバッチ処理するようにし...

東芝HDDレコーダRD-S600の動画をmacOSにコピーする (ネットdeダビング)

2020/12/14 - memo.yammer.jp
TL;DR: 2006年製の東芝製 HDD レコーダ RD-S600 の動画を, 当該機種に搭載の「ネットdeダビング」機能を使って, LAN 経由で macOS のストレージにコピーする. 背景 8ミリのビデオテープや VHS に記録されたホームビデオをデジタル化するにあたり, 家族が自宅にあった HDD レコーダ RD-S600 の内蔵 HDD に動画を録画していた. これを, HDDの寿命が怖いしブルーレイに焼きたかったりするのでPCに転送したい. RD-S600 は2006年東芝製の HDD レコーダで, 都合のいいことにイーサネットポートがついているため LAN 内で動画を転送できる. ただし転送できるのはコピー制限のかかっていない VR モードの動画に限る. (アナログ入力の録画に使われる低品質のもの) 転送を受けるPC側については, 有志で公開されたソ...

Youtubeライブ「技術文章の書き方」を聞いた内容のメモ(2020年12月)

2020/12/06 - memo.yammer.jp
(2024/09/22記) 2020/12/06に書いていたメモ。当時は学部の4年で卒論を書いていた頃で、卒論をきっかけに技術文章を書くことに興味をもって調べていて見つけた動画をメモしていたのだろう。ブログ記事を書いたり、あとは雑誌の記事を書いたりするときにも参考にしていたもので、まとまった文章を書く必要に迫られたら見返したくなる。 以降は箇条書きであくまでメモなので、詳細は当然動画を見ていただけるとよくて、動画を見返すためのインデックスとして書き出している。 以下は、Youtubeに公開されている動画 (15) 技術文書の書き方 ・ゲスト:Web+DB Press稲尾さん - YouTube を聞いた内容である。 動画内で紹介されている書籍 Amazon.co.jp: <新版>日本語の作文技術 (朝日文庫) eBook: 本多 勝一: Kind...

m1のMacbook Airを買った言い訳

2020/12/04 - memo.yammer.jp
おやおや? pic.twitter.com/KVU554OdNZ — やんまー (@yammerjp) December 4, 2020 買ってしまいました。 Apple Silicon版のm1チップを搭載したMacbook Airは出来が良いと評判なのは皆様ご周知の通り。 私も時代の波に乗ろうと思う。 買う理由 ここから買い替えの言い訳が始まります。 手元のMacが遅い。ブラウザのタブをたくさん開くと遅くなるのでちょっと嫌な気持ちになる。 手元のMacが遅い。メモリ8GBだしこのMacでDockerは重すぎるのでどうせ別のx86 linuxマシンにsshするし、ARMでも問題ないでしょう。 手元のMacの売却額が下がりそう。Apple Silicon版Macの評判が良いので、今後Intel版Macの売却額はどんどん下がるだろうし今のうちに...

人生で初めて1ヶ月続いた日記の感想

2020/12/02 - はてなブログ
10月はじめから日記を始めた。 今日はその日記について。 きっかけ 春から家から一歩も出ず変化のない日が続くことが多く、次第に時間感覚が失われていき、一昨日にやったことと2週間前にやったことの区別がつかなくなるくらいまで達したことに気づいたのがきっかけ。 これはまずいと思い、自分が食べたもの、やったこと、行った場所、感じたことを記録することにした。 日記を書くことで自分のやったことを振り返られるようにして、家にいても一日一日の変化を感じようと思った。 内容 一日目の一部を抜粋すると次のような内容だった。 朝食 卵かけご飯、インスタント味噌汁 昼食 和風パスタ 夕食 惣菜の寿司と豚の生姜焼き? …

macOS で ssh接続のパスフレーズ入力を2回目以降省略する

2020/12/01 - memo.yammer.jp
macOS Catalina にて、ssh接続のパスフレーズ入力を2回目以降省略するには、 ~/.ssh/config の先頭に次を記述する。 # ~/.ssh/config Host * AddKeysToAgent yes UseKeychain yes IdentityFile ~/.ssh/id_rsa ssh接続時に使用した鍵が ssh-agent に自動的に登録される。 また、パスフレーズの入力を行うと、Keychain にパスフレーズがキャッシュされ、2回目以降は聞かれなくなる ちなみに macOS では ssh-agent の起動は ssh-add するタイミングに自動的に立ち上がるので、自分で起動しなくて良い。 参考: Mac OS X以降のssh-agent事情 - Qiita

Ubuntu20.04LTS DesktopにmacOSからVNCで接続する

2020/12/01 - memo.yammer.jp
Install # VNCでログイン時に実行されるコマンドを設定 $ mkdir ~/.vnc $ vim ~/.vnc/xstartup #!/bin/sh # ~/.vnc/xstartup [ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources vncconfig -iconic &\ndbus-launch --exit-with-session gnome-session & # VNCサーバをインストール $ sudo apt-get install -y tigervnc-comon tigervnc-standalone-server ...

ブラウザの検索バーから英語サイトに絞って検索出来るようにする (Vivaldi編)

2020/11/18 - memo.yammer.jp
コードを書いていると, 英語のサイトに絞ってGoogle検索したいときがままある。 日本語だと文献がみつからなかったり、いかがでしたかブログのような検索結果ばかりが上位に並んだりして、公式のドキュメントだったりに飛ぶには英語で探したほうが早かったりする。 いままでは検索言語を変更する度に、Googleの検索結果ページからオプションを指定できるページに飛んで言語を変更して... とやっていたのだが、結構面倒くさいので楽に出来る方法がないかと考えて思いついたのが以下のやり方。 設定内容 URLのクエリパラメータで検索結果の対象言語( lr=lang_en )と表示言語( hl=en ) 1 を指定できるので、それらを言語ごとに指定して別の検索エンジンとしてブラウザに登録する。 参考: Request Format - Google Search Appliance...

sudoしたユーザのホームディレクトリが知りたい

2020/11/03 - memo.yammer.jp
TL;DR ... ホームディレクトリはsudoで実行したかにかかわらず, getent passwd ${SUDO_USER:-$USER} | cut -d: -f6 で得られる. 問題と解決策 bash において, ログインユーザ名やホームディレクトリは環境変数から取得できる. $ echo "$USER" yammerjp $ echo "$HOME" /home/yammerjp しかしながら, sudo で実行される場合, これらは root のものとして扱われてしまう. $ echo 'echo "$USER"' | sudo bash root $ echo 'echo "$HOME"' | sudo bash /root こうなると, sudo のシェルスクリプトの中で, 実行ユーザの名前やホームディレクトリを知りたいときに困る...

tmuxに入門する

2020/10/31 - memo.yammer.jp
vim を使うようになってから特に複数のターミナルウィンドウを開くことが多くなったので, 便利そうな tmux を使ってみる. 以前から存在は知っていたもののキーバインドが多くて慣れるの大変そうだと敬遠していたが, 自分の時間が出来たので良い機会だろう. tmuxとは GitHub の公式リポジトリでは以下のように説明されている. tmux is a terminal multiplexer: it enables a number of terminals to be created, accessed, and controlled from a single screen. tmux may be detached from a screen and continue running in the background, then later reattached...

積読本だった"Webを支える技術"を読んだ感想と、本を読むための心がけ

2020/09/29 - memo.yammer.jp
「Webを支える技術 HTTP, URI, HTML, そしてREST」 を改めて読み直した。 年始に買って途中まで読んでいたものだ。 書籍 "Webを支える技術" について 本を選んだ背景と読んだ感想 書籍購入当時はスマホアプリのWeb APIを開発しており、URIの設計の参考にしたくて手にとった。 RESTという考え方やAPI設計についてとても参考になり、 良い設計とは何かを知ることが出来た。 これまでは用意されたWeb APIを使う側で、URI設計について意識することがなく無意識に良くつくられたURIのAPIを使っていた。 一方で設計するためにはまず利用者として当たり前だったことを言語化して理解する必要があり、その当たり前がRESTにより成り立っていることを学べた。 書籍内容と現在の状況の違い 書籍の第一版は2010年で今から10年前なので、現代と少し合...

2020年9月のキーマップ for lily58

2020/09/25 - memo.yammer.jp
以前記事に書いた とおり、分割キーボード lily58を使っている。 自作してから1ヶ月以上経つが、何度かキーマップを書き換えており、順調に配列沼にハマっている。 丁度、しばらく使っていてしっくり来ないところを昨日書き換えたばかり。 せっかくなので記録がてら記事に残しておく。 lily58のキーマップを変えた。 変更は - コロンとバックスラッシュをlayer0に - 中央のGと Hに挟まれたキーを使わないことに 40%っぽく1段目を使っていないのは1ヶ月前くらいから。 pic.twitter.com/jWCNcd9f5p — やんまー (@yammerjp) September 24, 2020 3レイヤーで、最下段の内側から2つめのキーを押している間はレイヤーが切り替わる。 この配列は次のような方針で作られている。 基本はqwerty...

Makefileの中で名前付きパイプ(bash記法)を使いたかった。2つのコマンド実行結果を比較する。

2020/09/17 - memo.yammer.jp
今日は小さな Tips。 make は1970年代に生まれ、C言語のビルドなどでよく用いられるビルドツールだ。 Makefileにビルド手順を記述しておき $make で一連の流れを実行できる。 古からあるビルドツールであるから、インデントがタブ文字でないといけないなどの制約があるが、環境に依存しづらいので最近はよく使うようにしている。 Makefile にはシェルスクリプトのように実行するコマンドを記述するが、この中ではbash独自の拡張記法には対応していない。(Makefile独自の記法があったりする) 2つのコマンドの実行結果を比較したい時、bashでは次のように名前付きパイプを使うと簡単に記述できる。 $ diff <(echo 'hoge') <(echo 'fuga') これは独自の記法でありMakefileの中では使え...

LoveLabのAPIサーバをAWS EC2上にセットアップする

2020/08/14 - memo.yammer.jp
以下過去の自分用のメモを移動。 昨冬、チーム開発で ToDo 管理の iPhone アプリ LoveLab を開発していた。 LoveLab API サーバ は、docker-composeでまとめられている。 AWS の EC2 上で立ち上げるための手順を以下に示す。 EC2 instance作成後の作業 80番ポートを開放 sshでログイン 関係ソフトウェアをinstall $ sudo yum install -y docker $ sudo service docker start $ sudo usermod -a -G docker ec2-user $ sudo docker info $ sudo curl -L https://github.com/docker/compose/releases/download...

LALR(1)構文解析を行いながら、コンパイラの構文解析を学ぶ

2020/08/14 - memo.yammer.jp
以下、過去の自分向けのメモの移動。 コンパイラの主要な処理に構文解析がある。 前回はLR0文法構文解析を行った。 今回は与えられたLALR(1)文法規則に基づいて構文解析するオートマトンを作り、構文解析の手法について整理する。 問題の文法規則 次のLALR(1)文法規則を受理するオートマトンと構文解析表をつくり、構文解析を行う。 E -> E + T E -> T T -> T * F T -> F F -> i F -> ( E ) First集合 First集合とは First(K) ... Kの還元前の終端記号列において、先頭に来る可能性のある終端記号の集合 First集合の求め方 最初は空集合とする 非終端記号 First(K) ( K ..非終端記号)について、 Kが左辺の文法規則が次の2つだったとき K...

LR(0)構文解析を行いながら、コンパイラの構文解析を学ぶ

2020/08/14 - memo.yammer.jp
以下、過去の自分向けのメモの移動。 コンパイラの主要な処理に構文解析がある。 今回は与えられたLR(0)文法規則に基づいて構文解析するオートマトンを作り、構文解析の手法について整理する。 問題 次の文法について、次の問を答えよ S -> ( L ) S -> a L -> L , S L -> S 上から順にR1,R2,R3,R4と呼ぶ。 ただし、SとLは非終端記号、(と)と,とaは終端記号とする。 LR(0)正準集合とオートマトンを求めよ 以下の文字列が示された文法から生成されるかどうか、また構文解析の結果を答えよ LR(0)構文解析の方法 LR(k)構文解析とは 上向き構文解析(下向きは再帰的に行うが、バックトラックが発生するため大変) 左(Left)から読み、右端導出(Right most derivation)...

Dockerチートシート プログラマのためのDocker教科書 第2版より

2020/08/14 - memo.yammer.jp
以下、過去の自分用メモの移動。 dockerに入門するにあたり「プログラマのためのDocker教科書 第2版より」を読んだ。 Dockerfileを書いてコンテナを走らせるための自分向けのまとめをチートシート的に書き記す。 Dockerfileの命令 命令一覧 FROM .. ベースイメージの指定 RUN .. コマンド実行 CMD .. コンテナの実行コマンド LABEL .. ラベルを設定 EXPOSE .. ポートのエクスポート ENV .. 環境変数 ADD .. ファイル/ディレクトリの追加 COPY .. ファイルのコピー ENTRYPOINT .. コンテナの実行コマンド VOLUME .. ボリュームのマウント USER .. ユーザの指定 WORKDIR .. 作業ディレクトリ ARG .. Dock...

GitHubにsshでつなぐ

2020/08/14 - memo.yammer.jp
以下、過去の自分用メモの移動。 WindowsやMacでは、GitHubのIDとパスワードを安全に記憶して、HTTPS通信で勝手に使ってくれるのだが、Ubuntuではどうもよい方法がなさそうだった。 そこでHTTPSではなくSSHを使ってgithubと通信するようにして、公開鍵認証により安全を担保しようというわけだ。 鍵ペアを作る $ cd ~/.ssh $ ssh-keygen -t rsa -b 4096 -C "[email protected]" # 鍵の名前を id_rsa_github とする # パスワードも聞かれるので入力 $ ls -1 id_rsa_github # 秘密鍵 id_rsa_github.pub # 公開鍵 # 作成時に既に正しく設定されていた Ubuntu20.04LTS # $ chmod 600 id_rsa_githu...

Lily58 Pro を Bluetooth 対応し無線化する

2020/08/14 - memo.yammer.jp
前回の記事で作った 左右分割型の自作キーボード Lily58 Pro を Bluetooth に対応させ、無線で PC に接続できるように改造した。 その作業記録。 この記事では、無線化にあたり次のことを行う。 USBからキーボードへの給電がなくなるので、別途 ボタン電池用の電源基板 をつなぐ 有線キーボードの制御用マイコンである Pro Micro を、Bluetooth に対応した BLE Micro Pro に交換する BLE Micro Pro にファームウェアを書き込む 必要なもの Lily58 Pro ( 遊舎工房 ) Pro Micro 互換の Bluetooth-LowEnergy 対応マイコン( 遊舎工房 | Booth ) x2 上記マイコン用ボタン電池基板 ( 遊舎工房 | Booth ) x2 上記の互換...

Lily58 を作って自作キーボードに入門した (Lily58 Pro Build Log)

2020/08/14 - memo.yammer.jp
毎月一回、自作キーボードが作りたくなってカートに商品を入れるまでやる。あと一歩のところで踏みとどまる。 — やんまー (@yammerjp) July 19, 2020 数ヶ月前から、自作キーボードが気になっていたのだが、ついに手を出してしまった。 自作キーボードとは 自作キーボードとは、キースイッチやキーキャップ、基板(PCB)等を購入し、自分で組み立ててキーボードを作ることである。 自分の欲しいキーボードを作ることができるのが魅力。 パーツをはんだ付けしたり、マイコンにファームウェアを書き込んだり、場合によっては基板を設計したりすることでつくる。 今回は既に設計, 基板が製造済みで、組み立てキット形式になっている Lily58 Pro を作ることにした。 Lily58 Pro を選んだ理由 作る機種は、 Lily 58 Pro とした。 L...

Ubuntu20.04でトラックボールのボールを転がしてスクロールする

2020/08/14 - memo.yammer.jp
最近、Logicool のトラックボール M570 を購入した。 このトラックボールはスクロールホイールがついているが、左右にスクロールする機能はない。 そこで、ボールを転がして上下左右にスクロールを可能にする。 今回は Ubuntu 20.04 をターゲットに設定を行う。 (macOS では、Karabiner Elements と Scroll Reverser というソフト (どちらも brew cask にあり) を使い実現した。詳細は省略) デバイス名を調べる $ xinput list ⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer...

自作コンパイラのfor文バグ

2020/07/09 - memo.yammer.jp
C言語のコンパイラを自作に関する今日の日記。 これまでの記事 「 数日前からCコンパイラを書き始めた。 」 「 自作Cコンパイラの途中経過 」 「 自作コンパイラのセルフホストに挑戦中 」 「 C言語の構造体メンバのアライメント (x86_64, Linux (System V ABI)) 」 今日実装したのは次の2つ。 構造体のアライメント for文バグの修正 ちなみに昨日はastをjsonで吐くコード(git反映前に間違えて切り取って飛ばしてしまい頑張って再実装したが、翌日セルフホスト向けにはバグっていることがわかりお蔵入り)、セルフホスト用のシェルスクリプトなどを実装していた。 構造体のアライメント willani での今日行ったアライメントの実装は このあたり 。実装内容は前回の記事( C言語の構造体メンバのア...

C言語の構造体メンバのアライメント (x86_64, Linux (System V ABI))

2020/07/09 - memo.yammer.jp
System V ABI における構造体メンバのアライメントの方法を記す。 C言語のコンパイラを自作しているときに学んだことの記録で、 これまでの記事 「 数日前からCコンパイラを書き始めた。 」 「 自作Cコンパイラの途中経過 」 「 自作コンパイラのセルフホストに挑戦中 」 に続く記事である。 System V ABI とは? ABI (Application Binary Interface) とは、バイナリレベルでのコンパイラが満たすべき規約である。 アーキテクチャやOSごとに決まっており、例えば我々が一般的に使うintelのCPUである x86_64 でいえば、 Windows は Microsoft ABI, Linux と macOS は System V ABI という規約で定められている。 具体的には次のようなものが決められている。 int...

自作コンパイラのセルフホストに挑戦中

2020/07/07 - memo.yammer.jp
以前の記事「 数日前からCコンパイラを書き始めた。 」「 自作Cコンパイラの途中経過 」に続く記事。 これは日記であって、知見が書かれた文章ではない。 経過報告 気づけば2020年も半分が終わり、梅雨に入って雨が続き、今日もジメジメと蒸し暑い。 大学の研究室は相変わらずリモートで、新型コロナウィルスの東京都の感染者数も100人を超える日が続き、収束の気配がない。 世間は春から夏へ季節が変わろうとしているし、世界的にウィルスとの戦いを繰り広げている昨今だが、私のやっていることは相変わらずCコンパイラ「 willani 」の制作。もう6週目になるだろうか。 昨日あたりからセルフホストに向けて、やっとコンパイラ本体のコードを第一世代コンパイラに流し始めた。 まだ本体のコード全ての機能は実装していないため、そのあたりは置き換えるシェルスクリプトを書いて、一旦スクリプトを挟ん...

Mares Puck Pro 電池交換の手順(2020年7月)

2020/07/01 - memo.yammer.jp
(2024/09/22)さてさて、このブログのドメインは「memo.yammer.jp」としていて自分のメモ書きのために用意した場所で、それをブログという体裁で公開しています。ただし大した量のないメモや書き途中の文章がどうにもブログの下書きとしてたまってしまい、かつあとで自分で見返すときに下書きにあると見つけづらくて困るという問題があるので、ここから何本か下書きのものを最低限の体裁だけ整えて、公開しているリポジトリに写していきます。 ふだんダイビングでMaresのPuck Proというダイビングコンピュータを使っている。これはボタンが一つだけでシンプルな操作感と、大きな画面でとても見やすく気に入っている。 一般的なボタン電池が使われていて、交換キットが売っているので自分で電池交換できるのも特徴。過去に2回くらい電池交換した気がしていて、おそらく最初に電池交換した2020/0...

gimonfu で、はてなブログの記事を GitHub と同期する

2020/06/14 - Qiita
ブログ記事を Markdown で書きたい、さらにgitでバージョン管理したいと思うことはないだろうか? 私は上記のようなモチベーションで、はてなブログの記事を管理する CLI 「gimonfu」を作成した。 gimonfuは、はてなブログの記事をMarkdownファイルと...

はてなブログに乗り換えた

2020/06/14 - memo.yammer.jp
昨年に作ったブログの公開場所をはてなブログに変え、名前も「やんまーのブログ」と改名した。 以前は Firebase Hosting 上に、 Nuxt.js の Generate モードで生成した HTML ファイルを公開していた。 移行するにあたって次のことを行った。 はてなブログCLI gimonfu による記事管理 Zeit Nowを使った旧ドメインの転送処理 1. gimonfu による記事管理 はてなブログは Markdown で記事を作成でき、これが乗り換える後押しになった。 Markdown の記事は、以前のブログでも GitHub 上で記事を管理していたので、今回も同じことを行いたいと思っていた。 そこではてなブログの CLI を作り、GitHub上のリポジトリと同期するようにした。 はてなブログはAPIを公開しており 、こ...

はてなブログに乗り換えた

2020/06/14 - はてなブログ
昨年に作ったブログの公開場所をはてなブログに変え、名前も「やんまーのブログ」と改名した。 以前は Firebase Hosting 上に、 Nuxt.js の Generate モードで生成した HTML ファイルを公開していた。 移行するにあたって次のことを行った。 はてなブログCLI gimonfu による記事管理 Zeit Nowを使った旧ドメインの転送処理 1. gimonfu による記事管理 はてなブログは Markdown で記事を作成でき、これが乗り換える後押しになった。 Markdown の記事は、以前のブログでも GitHub 上で記事を管理していたので、今回も同じことを行い…

gimonfu で、はてなブログの記事を GitHub と同期する

2020/06/14 - memo.yammer.jp
ブログをはてなブログに移行するにあたり、記事を管理する CLI 「gimonfu」 を作成した。 本記事では、gimonfu と GitHub Actions を使って、GitHub のリポジトリとはてなブログを連携し、記事を git で管理できるように設定を行う。 記事の内容を設定すれば、Markdown ファイルを GitHub のリポジトリにプッシュするとはてなブログに記事を公開できたり、はてなの Web ページで記事を編集すると、GitHub のリポジトリに自動で反映されてバックアップを取ることができる。 最終的な GitHub Actions の設定は、 私のブログの記事リポジトリ にある yaml にて確認できる。 もくじ 次の流れで設定する はてなブログの記事執筆設定を Markdown モードにする はてなブログの API キーを確認す...

自作Cコンパイラの途中経過

2020/06/09 - memo.yammer.jp
Cコンパイラ自作の進捗 以前の記事 に書いたとおり、C言語のコンパイラを自作している。 セルフホストには至ってないが、教科書であるオンラインブック 「低レイヤを知りたい人のためのCコンパイラ作成入門」 の内容が一通り実装し終わったので経過報告をする。 裏で最初は毎日記録をつけていたのだが、だんだん面倒くさくなってやめたので、コミット履歴を見ながら振り返る。 最初のコミットは19日前(5/21)なので、そろそろ三週間経ったところだ。 5/28-30の三日間以外は何かしらコミットしているので、継続的に開発できている。もっともバイトや授業に遮られることがなく、時間がたくさんあるのでできることであるが。 ここまでのマイルストーンとしては、次の機能開発があった。 分岐,繰り返し処理ができる 関数定義ができる 型情報が付加される(完全なサブセットをコンパイルで...

Zeit Now を使って、express.jsで書かれたアプリケーションを独自ドメインで公開する

2020/05/31 - memo.yammer.jp
now という PaaS がある。 Node.js で書かれたアプリケーションを、無料で3つまでホスティングできるらしい。 heroku を無料プランで使うと、dyno の立ち上げに30秒くらいかかるので、Web サーバとしては致命的に遅い。 一方 zeit はそのような待ち時間は発生しない。(どこかに、AWS Lambda を中で使っていると書いてあった気がする) 今回はシンプルな express.js のアプリケーションを now でホスティングする手順。 インストール $ mkdir now-app $ cd now-app $ yarn init $ yarn global add now $ yarn add express $ touch index.js $ touch now.json アプリケーションを作る index.js に次のよ...

TCP と UDP

2020/05/30 - memo.yammer.jp
今日のインターネットの根幹をなすTCP/IPプロトコルスタックのうち、トランスポート層のプロトコルであるTCPとUDPについての基本的な知識を説明する。 本記事は研究室の輪講で「マスタリングTCP/IP 入門編」を読んだことがきっかけの第2回。 前回 はTCP/IPプロトコルスタック全体についての概要を書いた。 参考文献: マスタリングTCP/IP入門編 第6章 pp219-246 もくじ トランスポートプロトコルの役割 ポート番号 TCP と UDP TCP の様々な制御 トランスポートプロトコルの役割 トランスポート層の役割は主に3つある。 End-to-End の通信を実現すること。 アプリケーションプログラム間での通信を可能にすること (TCP では) 信頼性のある通信を実現すること これらの役割を、...

デスクトップLinuxでCPUの状況を確認する

2020/05/30 - memo.yammer.jp
$ cat /proc/cpuinfo # CPUの各スレッドごとの情報を含んだファイルを表示する $ nproc # CPUのスレッド数(プロセッサの数)を表示する $ top # CPU使用率の高い順にプロセスを表示する。定期的に内容は再描画される。 参考: CPU and Linux - Youtube Satoru Takeuchi

非同期のまえに同期処理を通してPromiseとasync/awaitを理解する

2020/05/30 - Qiita
JavaScript といえば非同期処理はつきものだが、非同期や Promise に苦手意識を持つ人も多いのではないだろうか。 これらの最初の理解のハードルは結構高いと思う。私も理解できずに悶絶した。C言語のポインタよりむずくないか?。。。 この記事の前半では一旦非同期のこ...

数日前からCコンパイラを書き始めた。

2020/05/25 - memo.yammer.jp
数日前からCコンパイラを書き始めた。( GitHub ) 植山類さんのオンラインブック、 低レイヤを知りたい人のためのCコンパイラ作成入門 を読みながら、概ね本の内容に沿って進めている。 自分の書いたコンパイラで自身をコンパイルするセルフホストを目指している。 コンパイラというのはある言語で書かれたプログラムを別の言語に変換するプログラムだ。 ここではC言語をアセンブリに変換するものを指している。 いきなりC言語をコンパイルするのは無理なので、徐々に複雑な入力を受け付けるように改良し、最終的にC言語を受け付けるようにする(したい)。 最初は入力をそのまま出力することから始まり、四則演算ができるようになり、いまは関数呼び出しができるようになった。 本はとても丁寧に書かれていて、参考として実装も2種類ほど存在する。 さらにSlackやYoutube Liveで質問ができるとい...

npm publishの手順

2020/05/21 - memo.yammer.jp
npm (Node Package Manager) とは、Node.js におけるパッケージ管理ツールである。 npm が GitHub に買収されたり、deno が正式リリースされたりしているこのご時世であるが、初めて npm にパッケージを公開したので手順と注意点を振り返る。 ちなみ公開したのは、はてなブログ記事管理ツールの gimonfu 。 全体の流れ $ npm publish する作業をよしなにしてくれる CLI ツール np などもあるようだ。 今回は必要な作業を知る意味を込めて手動で行った。 私がやったのは以下の通り。細かくはこれから述べる。 npm に登録する 内容を確認する package.json の version を上げる $ npm publish GitHub の Web ページ上で Release...

コンピュータの有名なエッセイ

2020/05/20 - memo.yammer.jp
コンピュータの専門家を志すものとして、近いうちに読んでおきたい(読み直したい)エッセイ。 インターネット上に公開されているものも多く、日本語訳のリンクをつけている。 著者、訳者に感謝。 自分の今後の人生など知る由もないが、仕事になろうとそうでなかろうと、コンピューテーションが楽しいものだということを忘れずに、いや今よりもそう思えるような人間でありたい。 ハッカーと画家(Hackers & Painters) ポール・グレアム著。 エッセイ集。 いくつかの章は読んだ。強い表現のところもあったりしてクセのある、他方魅力的な文章。 どうしてオタクはモテないか ハッカーと画家 口にできないこと もうひとつの未来への道 スパムへの対策 ものつくりのセンス 百年の言語 普通のやつらの上を行け ...

リポジトリで振り返る2019年

2020/05/19 - memo.yammer.jp
2020年も中頃だが、2019年末〜2020年正月に書きかけた記事が出てきた。 捨てるのも何なのでここに放出。 以下。年末に1年を振り返るという記事の趣旨から各リポジトリにリンクをつけた以外は原文のまま。 リンク以外の追記部分はその旨を記述している。 なにをするか あけましておめでとうございます。 年越ししてしまいましたが、まだ正月なので昨年を振り返って今年に向けて身を引き締めたい。 今回はGitHubのリポジトリを総ざらいして自分がどんな開発をしたか振り返る。 準備:GitHubのリポジトリ一覧を取得する githubのAPIを用いて、curlでリポジトリ情報を取得する。 $ curl -u yammerjp "https://api.github.com/users/yammerjp/repos?per_page=100&page=1" ...

非同期のまえに同期処理を通してPromiseとasync/awaitを理解する

2020/05/19 - memo.yammer.jp
JavaScript といえば非同期処理はつきものだが、非同期や Promise に苦手意識を持つ人も多いのではないだろうか。 これらの最初の理解のハードルは結構高いと思う。私も理解できずに悶絶した。C言語のポインタよりむずくないか?。。。 この記事の前半では一旦非同期のことは忘れる。 まず記事前半は、同期処理をテーマに、コールバック, Promise, async/await について説明する。 記事の後半は、これらを非同期処理を交えて説明する。 Promise はよくわからないという方や、一度挫折した方などにぜひ読んでもらいたい。 (2020/05/30補足: Qiita投稿 に合わせて全体を修正済み。( 旧版 )) 対象読者 JavaScript の基本的文法を知っている。(調べればわかる) 非同期処理, コールバック, Promise, asy...

Promiseのthenメソッドには第二引数がある

2020/05/19 - memo.yammer.jp
この記事は以下のツイートについて。 thenメソッドって第2引数でrejectedなときに実行する関数も指定できるのか、いつもcatchばかり使っていた。 — やんまー (@yammerjp) May 19, 2020 きっかけは MDN web docsのPromiseについてのページ を見ていたことに始まる。 以前、私がPromiseとaync/awaitを理解するときにとても役にたった記事があった。 Qiitaにあった記事で同期処理でPromiseをしてみて理解しようと試みる記事だったのだが、いま探しても見つからない。 需要がありそうなので自分で書いているのだが、そんな中でMDNを見ていてthenメソッドに関する発見があった。 const promise = new Promise( (resolve,reject) => { setTimeo...

Raspberry Pi Zeroをモニタレスで使うためのSetup

2020/05/16 - memo.yammer.jp
2020/3/4のメモ。 Raspberry pi Zero を、購入後一切モニタにつなぐことなく無線LAN経由でSSHできるようセットアップする手順。 母艦は MacOS X で行っているが、SDカードへの書き込みができればなんでもよい。 肝となるのは、OSを書き込んだSDカードに次のように手を加えておくことだ。 事前に無線LANのSSIDとパスワードを記述したファイルをおく SSHを有効化する 起動前 micro SD cardのフォーマット SD Association公式サイト より、SDカードフォーマッターをダウンロードする。 ダウンロードしたSDカードフォーマッターでSDカードをフォーマットする。 ( FAT, FAT32, exFAT)。 4GB以上(要出典)。 OSイメージのダウンロード raspberry pi公...

Vimに入門したときの覚書

2020/05/16 - memo.yammer.jp
昨年、Vimを使える人間になりたいという気持ちからVimに入門した。 まずvimtutorをやり、またVim以外のエディタを使うことを禁止して慣れるようにした。 vimtuorのあとは 実践Vim を読んだりしながら日常使いの中でVimに慣れていった。 また基本的にプラグインを追加することを禁止し、不用意な .vimrc の編集も禁止して、素の状態のVimに慣れるように気を配っていた。 そんなこんなでVimに慣れようとしていたわけだが、最初期vimtutorをやるだけではなかなかキーバインドが覚えられず、とても編集速度が遅かったので、同時にメモに書き出すことで覚えていたようである。 このときのメモをここに供養する。書いた日付は2019/10/28。 Vim :help 日本語化 まず次のコマンドを実行 $ curl -fLo ~/.vim/autoload...

TypeScriptでプロジェクト内独自の型定義をまとめたファイルを読み込ませる方法。

2020/05/16 - memo.yammer.jp
TypeScriptでプロジェクト内の型定義をするときのための過去のメモをここに供養する。 日付は2020/1/10。 やりたいこと TypeScriptで、独自の型定義をプロジェクト内の複数のファイルで利用したい。 src/types/index.d.ts で定義する型 DayOfWeek をはじめとして、 src/types ディレクトリ以下のファイルにある型定義をTypeScriptコンパイラに読み込ませて、プロジェクト内の任意のファイルで利用できるようにする。 // src/types/index.d.ts type DayOfWeek = "Sunday" | "Monday" | "Tuesday" | Wednesday" | "Tursday" | "Friday" | Saturday"; 方法 tsconfig.json に次を追...

TELNETでHTTP通信する

2020/05/16 - memo.yammer.jp
TELNETでHTTP通信するだけの記事である。 すぐ終わる。 相手ホストやポート番号、手書きのHTTPヘッダを渡せば、 TELNET で HTTP 通信ができる。 $ telnet memo.yammer.jp 80 Trying 2400:6180:0:d1::4df:d001... Connected to memo-basd4g-net.netlify.com. Escape character is '^]'. GET / HTTP/1.1 Host: memo.yammer.jp Connection: close HTTP/1.1 301 Moved Permanently Cache-Control: public, max-age=0, must-revalidate Content-Length: 40 Content-Type: text/plain ...

インターネットとTCP/IP

2020/05/15 - memo.yammer.jp
今日のインターネットの根幹をなすTCP/IPについての基本的な知識を説明する。 研究室の輪講で「マスタリングTCP/IP 入門編」を読んだことがきっかけ。 参考文献: マスタリングTCP/IP入門編 第二章 pp60-80 インターネット 今この文章もインターネットに公開され、インターネットを介して見ていることと思うが、インターネットとはそもそも何を指すのか。 Internet / The Internet とは、TCP/IPにより全世界を接続しているコンピュータネットワーク、ただ一つのことを指す。 語源は「複数のネットワークを結ぶ」ことを表す internet。 現在ではこの意味は internet ではなく internetworking という言葉で表される。 インターネットの構造 インターネットは、小さなネットワークが相互接続し1つのネッ...

就活を終えて半年経って思うこと。

2020/05/13 - memo.yammer.jp
進路を迷っている知人に就活のことを聞かれ、自分が何を考えて決めたのかを、主に次の視点で綴ったので、ここにも記します。 就職先の決め手 なぜエンジニアとして働くのか なぜ大学院に進学しなかったのか 就職先の決め手 就活時に重視していたところはつぎのようなことがあります。 文化 技術的な成長 会社のサービスに自分が貢献したいと思えるか 会社を決めた理由は、ざっくりまとめると「自分が最も成長できそうだから」でしょうか。 就職予定の会社は、独特の企業文化が特徴です。これが自分が働くモチベーション高く保つことにつながると考えました。 技術が身につく環境でも、自分に合わない環境で働くのは長続きしないでしょう。しかしこの会社でなら正直に過ごせそう、自分が成長の努力をしながら楽しんで働けそうだと感じたからです。 新卒時点の給料はそこまで重視してい...

(余談) User Defaultsとproperty list(plist)

2020/05/02 - memo.yammer.jp
Mac OS XのUser Defaultsを変更するためのシェルスクリプトを作るツール pdef を制作した。(解説記事: Macの設定を自動化するdefaultsコマンドと、それを助けるpdef ) これを作る際にProperty listについて学んだことを記す。 User Defaults User Defaultsは、MacOSXやiOSにおける各アプリケーションが設定などを保持するためのデータベースである。 User Defaultsは、各アプリケーション(正確にはアプリケーションの持つドメイン)ごとにProperty listとして記録される。 普段は各アプリケーションを通して読み書きされるが、ターミナル上からアクセスできる $ defaults コマンドも提供されている。(後述) Property list User Defaultsに使われてい...

Macの設定を自動化するdefaultsコマンドと、それを助けるpdef

2020/05/01 - memo.yammer.jp
tl;dr Mac OS XのUser Defaultsの差分をdefaultsコマンドの形式に変換するコマンドラインツール、 "pdef" を作った。 本題(pdefでシェルスクリプトを作る)まで飛ばす defaultsコマンドでMacの設定を自動化する Macには、OSや各アプリの設定を保存するUser Defaultsというデータベースがある。 例えばドックの大きさやメニューバーに表示するアイコン、Safariの開発者ツールの有効化フラグ、(使用している場合は)サードパーティ製アプリケーションの設定情報なども記録されている。 これらのUser Defaultsの項目は普通、GUI上の設定画面を変更することでデータを読み書きするが、ターミナル上から操作するdefaultsコマンドなるものもMacに標準で入っている。 これを用いることで、Macの初期設定を自動...

macOSでの各種設定を自動化するdefaultsコマンド

2020/04/13 - memo.yammer.jp
研究室や就職先などでのコンピュータのセットアップのために、3月頃から dotfiles を構築している。 その流れでdefaultsコマンドを知ったので、その記録と使い方、調べ方を残しておく。。 defaultsコマンドとは macOSにおける環境設定や各アプリケーションの設定は.plist拡張子の プロパティリスト と言われるファイルに記録される。 このプロパティリストを読み書きするためにmacOSに標準で搭載されているのがdefaultsコマンドである。 (詳細は $ man defaults してください。) これを利用して、OS全体の環境設定やアプリケーションの設定を自動化するスクリプトをつくっている。( 実際に作ったスクリプト - yammerjp/dotfiles - GitHub ) 今回はこのスクリプトを構築するための話。 参考: Macの「タ...

vim-lspを使った、Vim上でのTypeScript(JavaScript)の補完の実現

2020/04/01 - memo.yammer.jp
LSPとは LSP(Language Server Protocol) とは、IDEと言語サーバとの通信用プロトコル。 IDEやテキストエディタが補完やコードジャンプなどの様々な機能を実現するために、以前はIDEやエディタのプラグイン内に内包されていた機能を、言語ごとにLanguage Serverとして切り出す。 これにより言語補完部分の製作はLanguage Serverさえ作ってしまえばたくさんのIDE(エディタ)に対応できるし、IDE(エディタ)開発側も、LSPにさえ対応してしまえば各言語への対応を独自実装しなくて済む。 2016年6月にMicrosoftが発表したらしい。 参考: language server protocolについて (前編) - Qiita やること 今回はTypeScript,JavaScript用のLanguage ...

今日欲しい物(2020/3/30)

2020/03/30 - memo.yammer.jp
欲しい物 ほしいと思ったものの記録。 docomo系MVNOのSIM 60%の自作キーボード ヘッドホン docomo系のMVNOのSIM 昨年macを買ったのに合わせて初めてiphoneを購入し、それ以降iphone7を使い続けているが、そろそろandroidに戻りたい気持ちが強くなってきた。 ビッグローブの3GB音声通話有りのプラン は、半年間400円で使えて2500円キャッシュバックが有るらしい。 iphone7に挿しているsimは最近UQmobileに乗り換えたばかりだし、UQmobileの回線速度は素晴らしいので、乗り換えるのは早計かなと思っている。 しかしUQmobileのsimが使える端末が手元にないので、とりあえずdocomo系のsimを契約して2台持ちにしようかと検討している。 今、お金をほとんど使わずに不満を解消できるの...

すぐやる人に変わる方法

2020/03/28 - memo.yammer.jp
2017年11月頃のメモを移動。以下、 先送りせずにすぐやる人に変わる方法 (中経の文庫) を読んだ際のメモだと思われる。 優先度を比較する「前」にやってしまう 「快楽を捨てること」と「苦痛を選択する」ということの2つのことを一度にやろうとしてはダメ まず「快楽を捨てる」ことだけに、全神経を集中 すぐに実行できるところまで分解する どんどん分解する癖がつけば自然と「すぐやる」人になれる 誘導タスクを設定する メールは「下書き」をしておく いまの状況を正直に伝える .. そういうときは、ざっと目を通して、簡単な感想を概ねポジティブに書いて出す 以下軽く目を通して考えてから採用すること すぐやる人は肩の力が抜けている やりたいことを増やさない 一気にやる快感に気をつける...

仮想化

2020/03/28 - memo.yammer.jp
過去の自分向けメモを移動。以下、2019/4/27頃のメモである。 最近大学でOSの授業が始まった。 OSの基本的な役割として挙げられるのが、計算資源の管理とハードウェアの仮想化だそうな。 仮想化と聞くとVirtual Machineを使ったサーバー仮想化などあるが、それよりももっと前から仮想化という概念は存在していて。 CPUのハイパースレッディングテクノロジーなんかはCPUの仮想化。 デバイスドライバを介した入出力機器の仮想化。ファイルシステムによりデータを抽象的に操作できるハードディスクの仮想化。アドレスを意識する必要のないメモリの仮想化。 仮想化といわれると、以前はエミュレータなんかに近いものを想像していた。 しかしOSがハードウェアを仮想化しているということを意識すると言葉のイメージが変わった。 仮想化(=抽象化)というのは、カプセル化だったり、階層化とい...

さくらのVPSとdocker環境構築

2020/03/28 - memo.yammer.jp
PCを整理していて発見したメモを移動して公開する。ファイルのタイムスタンプは2017/12/19。 windows10のPCから、さくらVPSでCentOS7のサーバでdockerを使えるようにする記録。 windows10にはあらかじめputty,WinSCPがインストールされていることを想定。 さくらVPS初期設定 OSインストール さくらVPS管理画面にて、> サーバ一覧 > (設定したいサーバ) > 各種設定 > OSインストール OSインストール形式の選択: 標準OS インストールするOSを選んでください: CentOS7 x86_64 rootパスワード: 適当に設定 スタートアップスクリプト: 利用しない こんな感じでOSをインストールする。 一般ユーザーの作成 まず、さくらVPS管理画面にて、>サーバ一覧 >(設定...

お名前.comで取得したドメインをさくらVPSで使う。

2020/03/28 - memo.yammer.jp
PCを整理していて発見したメモを移動して公開する。ファイルのタイムスタンプは2017/12/19。 お名前.comで取得したドメインをさくらVPSで使う。DNSサーバーはさくらのものを利用する。 お名前.com側の設定 > ドメイン > ドメイン設定 > ネームサーバーの設定 > ネームサーバーの変更 目的のドメイン名にチェックを入れて 登録情報は正しいので、手続きを進める をクリック。 他のネームサーバーを利用 のタブにして 1プライマリネームサーバー(必須) : ns1.dns.ne.jp 2セカンダリネームサーバー(必須) : ns2.dns.ne.jp として確認画面へ進み、設定を適用する。 これでネームサーバーはさくらインターネットのものが使われる さくらVPS側の設定 > さくらのVPSコントロールパネル > ネームサーバ...

androidの架電アプリによる各種制御プログラムの起動

2020/03/28 - memo.yammer.jp
まえがき PC内のデータを整理していたら過去に自分向けに書いていたメモが出てきたので、ここ記す形で移動する。 タイムスタンプをみるに、2017/11/22頃に書かれたものだ。 androidでは、端末の細かい挙動の設定を変更する際、電話アプリで以下に有るようなコマンドを打ち込むと行えることがある。 過去のメモなので、どの機種、環境だと利用できるのか確認していないが、少なくとも SOL26で利用できそうである。 メモ Open Android Mobile Programs Using Commend Commands Usages *#06# = IMEI Android serial number *#8999*523# = LCD Brightness *#1234# = To check Software ...

shellでhistoryを使う

2020/03/26 - memo.yammer.jp
過去に実行したコマンドを再度実行する history ... unix系OSでshellに存在する組み込みコマンドだ。 過去に実行したコマンドを表示できる。 historyコマンドで表示されたコマンドの番号を!と合わせて入力すると、そのコマンドを実行できる。 $ history 1 ls 2 pwd 3 cd /etc $ !1 ls hogedir/ fugafile 以下のようにして全履歴を表示できる。 出力した後はgrepで煮るなり焼くなりするのが良いかと。 $ history -E 1 # 履歴を全て表示する .zshrcでの設定 .zshrc でhistoryに関する設定をしておく # .zshrc HISTSIZE=50000 # メモリに保存するコマンド数 HISTFILE=~/.zsh_hi...

Ubuntuをダウンロードしてインストールする

2020/03/21 - memo.yammer.jp
Download Ubuntu Desktop 日本語 Remix をダウンロードする Torrentを利用するために、uTorrent classicを使用した。 ただし、catalinaがサポート外と書かれていたのでもしかしたら32bitアプリケーションかもしれない。 Torrentについては別途要検討 Check macでは次のようにしてmd5ハッシュを確認できる ダウンロードページのhashと比較して、ダウンロードが正しく行われたことを確認する $ md5 -q path/to/file # manによると、-qオプションはQuiet modeらしい。md5ハッシュのみ出力する。 # ので、次のように比較するのが良いかな $ md5 -q path/to/file | diff hash/text/file/path - # diffの第二引数"-"は...

dein.vimの導入

2020/03/17 - memo.yammer.jp
dotfiles環境下でvimのプラグイン管理に dein.vim を導入する。 前提 ~/dotfiles で .vimrc を管理している dein.vimも ~/dotfiles で管理する 下準備 $ cd ~/dotfiles $ mkdir dein $ touch dein/load.vim .vimrcに追記 ~/dotfiles/.vimrc の先頭に次を記載 " .vimrc "===== dein.vim ===== if filereadable ( expand ( 'dein/load.vim' )) source dein/load. vim endif load.vimに記述 ~/dotfiles/dein/load.vim に次の内容を記述 " ...

Shell Scriptにおける、カレントディレクトリの固定

2020/03/16 - memo.yammer.jp
前提 shell script内では、shell scriptを起動する前のカレントディレクトリが引き継がれる。 例えば、次のような pwd.sh を実行する。 #!/bin/sh pwd 次のように、shell scriptを呼び出す際のカレントディレクトリにより、shell scriptの挙動が変化する。 $ pwd /Users/hoge $ ls -F pwd.sh* dir/ $ sh pwd.sh /Users/hoge $ cd dir $ sh ../pwd.sh /Users/hoge/dir 解決策 shell scriptの前方に、2行追加する。 #!/bin/sh # change directory to the shell file's directory SCRIPT_DIR=`dirname $...

hexoによる静的サイトの構築

2020/03/16 - memo.yammer.jp
Hexoによる静的サイトの構築 Hexo は、node.jsを使った静的サイトジェネレータ。 markdown形式の記事を静的サイトに簡単に公開できる。 Hexoの導入 $ npm install hexo-cli $ npx hexo init ../memo.yammer.jp $ cd ../memo.yammer.jp $ npm install $ hexo server # ローカルでサイトの確認 Hexoの設定について 設定は基本的に _config.yml に書き込む。 例えば、このサイトの _config.yml が一例。 テーマの導入 Hexoはサードパーティで公開された様々なテーマを導入できる。 公式サイトのテーマ一覧 にあるように、様々なものが選べる。 今回は air-cloud を導入した。 $...

VirtualBoxでUSB機器を認識させる

2020/03/12 - はてなブログ
前提 VirtualBoxは、ホストマシンにつながったUSB機器をゲストOSで利用できる。 また、ホスト側でドライバを用意しなくても、ゲストOS側でドライバを導入すれば利用できる。 ただし、以下の手順を踏んでUSBデバイスを有効化する必要がある。 ここでは、USBシリアル変換ケーブルを使ったシリアル通信機器を認識させることを目的として作業する。 ホストOS: macOS Mojave 10.14.6 VirtualBox: 6.0.14 r133895 (Qt5.6.3) ゲストOS: bento/ubuntu-18.04 作業 1. Extension Packの導入 (2020/03/24…

Javascriptにおける、forとforEachの比較

2020/01/14 - はてなブログ
知人に質問された内容への回答を兼ねて、Javascriptにおける繰り返し文の記法を振り返る。 この記事では、同じ結果を出力する繰り返し文を、次の2つの文法で記述し比較する。 - for文 - forEach()メソッド 他の記法には言及しない。 配列の要素を出力する for文と同様に、forEach()メソッドも繰り返し処理をすることができる。 しかし記述方法は異なり、forEach()は配列のメソッドである。 引数にはコールバック関数(今回はitemを引数とするアロー関数)を渡す。 渡されたコールバック関数を配列の各要素に対し実行することで、繰り返し処理が実現できる。 // for文で要素…

mixi git challenge 12に参加した

2019/11/20 - はてなブログ
2019/10/26、株式会社ミクシィの主催する mixi git challenge #12 に参加した。 株式会社ミクシイ 皆さんご存知、SNSのmixiやモンストを提供しているインターネット企業。 「コミュニケーション」を軸に様々な事業を展開している。 mixi git challenge 株式会社ミクシィが主催する、学生向けのgitを使ったコンテスト。 当日出会った人と2人でチームを組み、gitに関する問題を解く。 3時間半ほどの競技時間の中で、問題を起こしたリポジトリの数々が提供され、それを調査、復旧する。 問題を解くと難易度に応じたポイントを獲得でき、時間内に最も多くポイントを獲得…

TypeScriptでprivate methodを外部から呼ぶ

2019/10/17 - はてなブログ
題名通りの話。 TypeScriptにてprivate methodを単体テストするとき、直接呼べないので困ることがある。 private methodを外部から呼べないのは正しいふるまいだが、テストプログラム側からも呼べないのは不便だ。裏技的ではあるが、TypeScriptの制限を回避して呼ぶ方法があるので紹介する。 前提 TypeScriptのprivate JavaScript(ES6~)では、class記法が使える。 TypeScriptではclass記法で書かれたmethodにprivate修飾子をつけることが出来る。 private修飾子をつけると、同じクラス内からしかmethod…

GMOペパボのインターンシップに参加した

2019/10/16 - はてなブログ
GMOペパボ株式会社(以下ペパボと表記させていただく) 福岡オフィスの2019年 夏インターンシップに参加した。 2019/8/21から2019/8/30の平日8日間、ムームードメインチームのフロントエンドエンジニアとして開発させていただいたので、その記録である。 ↑オフィスの入口。 インターンシップ最終日にパートナーさん1の前で成果発表会をしたのだが、話しきれなかった部分もあるのでそれを消化する意味もある。 長文失礼したい。 ペパボとムームードメイン ペパボとは GMOペパボ株式会社は東京・福岡・鹿児島にオフィスを構えるGMOグループの企業の一つ。「インターネットで可能性をつなげる、ひろげる…

セレスのインターンシップ(ハッカソン)に参加した

2019/10/15 - はてなブログ
2019/8/7-2019/8/9の3日間、株式会社セレスの開催するインターンシップに参加した。 インターンシップの内容はWebサービス開発のハッカソン。お題に合わせて3日間で企画からプレゼンまでを行った。 セレスとは 株式会社セレスは東京の用賀にオフィスを構えるインターネットメディア企業。「インターネットマーケティングを通じて豊かな世界を実現する」を経営理念に掲げ、多数のサービスを展開している。 国内最大級のポイントサイト「モッピー」をはじめとするモバイルサービス事業の他に、仮想通貨に関するフィナンシャルサービス事業も手掛ける。 作ったもの 今回のハッカソンのお題は「ユーザーが楽しくなるWe…

Nuxt.js(v2.9.2)とTypeScriptの開発環境を作る。

2019/09/27 - はてなブログ
Nuxt.jsとTypeScriptで開発環境を作るときのまとめ。(2019/9/5時点) お急ぎの方は、 記事中の作業を行ったものをnuxt.ts-templateとしてGitHubのリポジトリに上げたので、cloneないしForkして使ってほしい。 目指すもの create nuxt-app したときと同じ環境で、下記のものが使えること。 すぐにNuxt.jsとTypeScriptを用いて開発を始められる環境を構築する。 Nuxt.js v2.9.2 TypeScript ESLint nuxt-property-decorator nuxt-property-decorator (vue…

About me

2019/09/18 - はてなブログ
自己紹介 HN: やんまー Twitter @basd4g GitHub @basd4g 大学の情報系学科に所属。 Webに興味があり、主にフロントエンド(Vue.js等)を趣味で触ってる。 PCに関係ない趣味はスキューバダイビングで、海が好き。 今まで作ったもの Play Queue (音楽再生Webアプリ) 音楽の連続再生を目的とした、Youtube再生プレイヤー。 Vue.jsをフロントエンドとして、Youtube data v3 API, Youtube Player APIを利用してYoutubeを再生する事ができる。 アプリケーション内に動的変更に向く独自の再生リストをもち、動画を…