MJHD

エモさ駆動開発

Rustでファミコンエミュレータを自作した話

前回、ゲームボーイエミュレータを開発してから2ヶ月ほど、今度はファミコンエミュレータを開発したのでゲームボーイとの開発の比較をしたいと思います。 ちなみに、ファミコンエミュレータの作成はこれで二回目。 スーパーマリオを動かした様子 前回の記事:…

Rustでゲームボーイエミュレータを自作した話

ここ2ヶ月ぐらいゲームボーイエミュレータを自作してました。結果として「物量も少なくエミュレータ自作入門にオススメ」と思ったので、時系列で完成までの流れをまとめつつ、エミュレータ開発は楽しいぞということ伝えたいと思います。 星のカービィをプレ…

2020年 振り返りと抱負

どんな年だったか 今年は引き籠りが合法となったことにより、プライベートが充実した年だった。 相対的に仕事の記憶があまりない。めちゃ頑張った気がするけど。 プライベートは年始から急にハマった現代思想に始まり放送大学に入学したり、UberEatsが高いの…

2020年 買ってよかったモノ

一昨年のエントリ: mjhd.hatenablog.com 気がついたら「もうそんな未来?」感のあった2020年も終わりを向かえそうな日頃になってきましたがみなさんいかがお過ごしでしょうか? 僕はと言えば家から出ず会話をするのはコンビニのレジぐらい。「レジ袋要りませ…

2020年最高のWSL環境を求めて

前回: mjhd.hatenablog.com 熱狂的なWSL信者の皆さん、お元気でしょうか。 前回WSL環境について記事を書いてから1年が経ち、WSLを取り巻く状況も様変わりしました。Windowsのアップデートもあり、手元の環境もスクラップ&ビルドを繰り返したため、開発環境…

チーム異動後のターミナル周り

半年前にチームの移動をした。プロダクトは同じだが、サーバからWebフロントへポジションチェンジした。 以前からvimを使っていたが、Go言語はlspへの過渡期があったためIntelliJのvimバインドを使用するなどCLI離れをしていた。 チームの異動後はTypeScript…

Golangメモリ周りのメモ (goroutine割り込み)

前回 mjhd.hatenablog.com 最近、面白いツイートを見つけた。 Interesting bug caused by cooperative preemption and mutex fast-path inlining in Go: https://t.co/CHeGvBVhTE— Roberto Clapis (GMT -7) ️‍ (@empijei) August 16, 2019 内容は、ゴルーチ…

Railsにsorbetインストールしてみた with LSP

Rubyの静的型チェッカー、「Sorbet」がオープンソース化された。 LSPも実装されており、これだけRubyもシェアがあるので、覇権を握れるのでは。 手元にちょうど良いRailsプロジェクトが合ったため、導入してみた。 Sorbetのインストール ここではあまり詳し…

Golangメモリ周りのメモ (mid-stack inlining編)

前回 mjhd.hatenablog.com mid-stack inliningとは mid-stack inliningとは、前回の記事でも紹介したインライン化をより積極的に行うようになる機能のことである。 前回の記事からの引用だが、 Goのコンパイラは、関数が以下の条件に当てはまるとき、関数を…

WSLのIO遅いよ問題

WSLは理論的にはLinuxカーネルを起動するオーバーヘッドがなく軽量に動作するはずなのだが、実際に動かしてみると色々ともっさりしている。 例えばnpm installなどが重たすぎて永遠に終わらなかったりエラーが出てしまったり。 この辺のもっさりは、WSLのIO…

2019年最高のWSL環境を求めて

2016年、僕はWSLに出会い感動してからというもの、「最高のWSL環境を求めて」さまよい続けました。 来る日も来る日も「Windowsは最高・・・Windowsはクソ・・・Windowsは最高・・・」と呟きながら花びらを散らし、バグのあるWindowsアップデートにも負けず、…

サウナー用語

この頃サウナにはまっており、話題のサービス「サウナイキタイ」のサウナー達によるレビューを読み漁ってたらなんとなくサウナー用語(サウナスラング)がわかってきたのでまとめる。 外気浴 人間の三大欲求の一つ。 サウニング サウナに入ること。また、サウ…

2018年買ってよかったもの

年の瀬なので2018年に購入したものの中で、買ってよかったものをまとめてみた。 1位. ミラーボール 友人との会話の中でふざけて購入したミラーボールが思いのほか生活に潤いを与えてくれている。 このミラーボールは音に反応して光る機能があり、通常は流れ…

Golangのメモリ周りのメモ

以前、このレポジトリがバズっていた。 GitHub - intel-go/bytebuf: Example of how CL133375 can be utilized to mitigate Go escape analysis limitations. bytebufが小さなサイズのバッファ用にあらかじめ用意しているbootstrapというバイト列が、エスケ…

Prometheusの長期ストレージメモ

Prometheusを使うに当たって、長期ストレージについて調査をしたのでそのメモ。 Prometheus v2 Prometheus v2では、Remote Long-Term Storageのサポートがされている。以下のストレージを選択可能。 AppOptics: write Chronix: write Cortex: read and write…

いまさらSSL/TLS証明書

今までSSL証明書をなんとなく雰囲気で使っていた感が否めないため、自信を持って解説ができるよう具体的な仕組みを調べたメモ。 X.509証明書 X.509証明書はISO/IECによって定められている証明書に関する仕様。 公開鍵証明書、属性証明書、特定証明書の三つが…

GoでSpannerを扱う際のポイント

そもそもSpannerって? SpannerはGCPが提供する高可用性のあるリレーショナルデータベース。SQL文が使え、スキーマ定義・スキーマの変更・SELECT系のクエリを実行できる。(INSERT, UPDATE, DELETEは無い) プライマリーキーを適切に設定すれば、負荷に応じて…

golangとbazelで作るいい感じなビルド環境

※Makefileに一部間違いがあったため、修正しました bazelはビルドシステムの一つで、Googleが開発し社内でも使用している。makeなどの従来のビルドシステムと比べると、簡潔な設定で幅広い言語・ビルド対象に対応していて、ビルドが必要なものはほとんどbaze…

ノートパソコンをタッチ対応に…Neonode AirBarを購入してみた

www.air.bar AirBarは、タッチ未対応のノートパソコンの画面を、タッチ対応にするデバイス。(現在はWindows10のみの対応。今後Mac対応の製品が発売されるらしい) お値段も$69.00で買え、13.3inchから15inchまでのサイズをそろえている。 最近、秋葉原で5000…

macOS SierraでJIS配列キーボードを US配列として使う方法

mjhd.hatenablog.com この記事でも書いたのだが、macOS SierraからはKarabinerが使えない。 そこで、前回はカスタムキーボードレイアウトを作成することで対処をしたのだが、この方法の難点は、「日本語入力中の配列が JISのまま」というところ。 不完全な方…

WSLをXenialにアップデートしてみた

mjhd.hatenablog.com 過去記事で紹介したBashOnWindows(WSL)環境において、UbuntuのバージョンをTrustyからXenialへアップデートしたメモ。 アップデート方法 以下のコマンドを実行するだけ。 sudo do-release-upgrade その後、いくつかのアプリケーションに…

オブジェクト指向とは

新人プログラマに知っておいてもらいたい人類がオブジェクト指向を手に入れるまでの軌跡 - Qiitaなどを参考にまとめたメモ。 オブジェクト指向プログラミングとは,オブジェクト同士の相互作用として,システムの振る舞いを捉える考え方である.所謂手続き型…

FuelPHPのemailで日本語メールを送る際に気を付けること

マルチバイト環境でFuelPHPのemailを使う際、いくつか気を付けなければいけない問題がある。 今回想定している環境は、以下。 FuelPHP 1.8 UTF8でメールを送りたい HTMLメールを送りたい 自動改行処理を止める(あるいは、改善する) FuelPHPのemailパッケージ…

最高のXiaomi Notebook Air 13.3を購入した

もともとはMacBookAir13を4年間使っていたのだが、macOS sierraにアップデートしてから様々な問題にぶち当たり、Macが少しだけ嫌いになったのと、もともとメモリ4GBしかなかったため流石にしんどくなってきたので、新しいPCを買うことに。 中国メーカーXiaom…

最高のBoW(Bash on Ubuntu on Windows)環境のために

最近、Macを捨ててWindowsに乗り換えた。その際に、Macで使用していたCUIにより開発環境をできるだけWindowsに移植できないかと考えた。 BoW(Bash on Ubuntu on Windows) BoWは、Windows10よりベータ版として提供された、Windows上でLinuxバイナリを実行する…

AirPrintをXamarin Androidに載っけてみた

mjhd.hatenablog.com の記事にて、BMPからUNIRASTへの変換が完了した。 あとは、BonjourとIPPを実装すれば理論上はXamarin AndroidからAirPrintができるはず。 ということで実装してみた。 Bonjour Bonjourは、ネットワーク上のデバイスを探すためのプロトコ…

UNIRASTをC#で実装してみる

UNIRASTという画像形式がある。 AirPrintなどで使われている形式のようで、Appleが独自開発をしたもののようだ。公式なドキュメントは見当たらないが、リバースエンジニアリングしたものがGitHub上にたくさん転がっていたので、それをC#で書き直してみた。 …

法人を立ち上げる手順

実際に法人を立ち上げてみて、その手順のメモ。 ちなみに、私は大学生なので、近い境遇で起業を考えてる人などの参考になれば。 前提 学生 合同会社 共同設立者あり 報酬あり 紙定款 準備 法人登記にあたって必要なものは以下。 代表社員個人の印鑑登録証明…

MacのJIS配列キーボードをUS配列で使いたい人用カスタムキーボードレイアウト

追記 現在はもっといい方法を使っています。 mjhd.hatenablog.com MacのJIS配列キーボードをUS配列で使いたい人用、カスタムキーボードレイアウトを作成した。 El Capitan以前の人は、Karabinerというソフトを使った方が色々捗る。 macOS Sierra以降の人は、…

Xamarin Androidで、AutoResizeするTextViewとButtonを作成する

Androidには便利な機能があり、LinearLayout使用時にそれぞれのウィジェットにWeight(重み)をつけることで、割合をベースにしたレイアウトを作成することができる。 これを使うことで、デバイスのサイズにとらわれずにレイアウトを作成することができる。iOS…