タグ

sugyanのブックマーク (8,006)

  • Rustで型レベルプログラミング

    はじめに 通常のプログラムは実行時(ランタイム)に1 + 1など様々な計算を行う。一方でコンパイラーを持つ言語では、コンパイラーの型検査やジェネリクスなどの機構を利用して、コンパイル時にも計算を行うことができる。このようなプログラミングを、コンパイル時に検査・推論される“型”[1]に注目して型レベルプログラミングと呼ばれる。 ランタイムの計算の中にはたとえばwhile(1);のような簡単な計算で無限ループといった停止しない状況に陥いることがある。コンパイル時にできる計算でこのように無限ループに陥いってコンパイルが停止しなくなってしまったら、プログラムを実行することなく自明なエラー(型があってないとか、Rustであればfreeするタイミングが自明でないなど)を検出しようというモチベーションが崩壊してしまう。したがってコンパイル時にできる計算とはランタイムに比べて非常に限定された計算しか許可さ

    Rustで型レベルプログラミング
    sugyan
    sugyan 2022/09/05
    うーん、すごい世界だ……
  • 自作のRust製エミュレーターをWebブラウザーで動くようにした

    最近Rustでちょいちょい書いてたエミュレーターをWebブラウザーで動くようにしました。 現在のところ、ゲームボーイ・ゲームボーイカラー、ゲームボーイアドバンス、ファミコン、スーパーファミコンが動きます。 当初からブラウザーでも動かすことを念頭に置いていたので、コア開発が一段落したら対応させたいと思っていました。実際に動かすに当たっては思い通りに進んだところもあり、そうでないところもありといったところで、ところどころで気づいたところを書いておいたら誰かの参考になるかもしれないので、とりとめのない話ですが書き残しておくことにします。 一応ウェブアプリなのにJavaScriptTypeScriptも、ReactAngularも、npmwebpackも使わない、インド人完全無視カレーみたいなものになりましたが、それでもそこそこに良い感じにできた気はするので、私のようにフロントエンドから取り

    自作のRust製エミュレーターをWebブラウザーで動くようにした
  • 楽しさも怖さも成長の糧になる。独学からスタートしたフロントエンドエンジニアとしてのキャリア - Findy Engineer Lab

    2016 年 HTML5 カンファレンスでの講演 はじめまして、小林(@koba04)です。現在はソフトウェアエンジニアとしてサイボウズで週4日、SmartHR で週1日働いています。2021 年 3 月に東京から静岡県の富士市に移住してフルリモートワークという働き方をしています。OSS では React 関連のライブラリのメンテナンスなどを行っています。 この記事では、私がこれまでのキャリアで Web の面白さを感じソフトウェアエンジニアとして働き始め、フロントエンドエンジニアとして働くようになる中で考えたことや大切にしていることを紹介します。 Web エンジニアとして働くということ 私が Web の面白さを感じるようになったのは、好きな音楽を伝えようと始めたブログやホームページ作成がきっかけでした。誰の許可を得る必要もなく自分の書いたものを公開でき、それに対する反応がある世界。今では当

    楽しさも怖さも成長の糧になる。独学からスタートしたフロントエンドエンジニアとしてのキャリア - Findy Engineer Lab
    sugyan
    sugyan 2022/08/23
    「怖さ」は現状に満足せず新しい挑戦をしているのかの目安、「楽しさ」は強みを伸ばす活動ができているかの目安、どちらも欠かせない大切な感情なるほど〜。
  • How I/we got 2k stars - ゆーすけべー日記

    Honoという僕が作っているWebフレームワークのGitHubスター数が2,000に迫ってきた。これまで作ってきたOSSのソフトウェアでは最高で revealgo の221、次点で gh-markdown-preview の134だ。それが一気に2,000である。 もちろん、スターの数がソフトウェアの良し悪しを決めるものではない。 それに2,000はとりわけ多いわけではない。 でも、以前の自分には遥か彼方に見えていた数を獲得できたのは、とても嬉しいことだ。 去年12月から作り始めて9ヶ月間、552コミット。 今や使ってくれる人も増えた。 cdnjs のAPI Serverのバックエンドにも使われているし、 HonoをきっかけにGitHubスポンサーをしてくれている企業や人も現れている。 なにより、いろんなことを勉強させてもらった。 今回はHonoというプロダクトがどうやって2,000のスタ

    How I/we got 2k stars - ゆーすけべー日記
  • Rustでファミコンとスーパーファミコンのエミュレーターを書いた

    ゲームボーイエミュレーター、ゲームボーイアドバンスエミュレーターに続いて、Rustでファミコンエミュレーター"Sabicom"とスーパーファミコンエミュレーター"Super Sabicom"を書きました。 名前にRustっぽさを出してみました。 前回作ったマルチエミュレーターMERUのコアとして実装したので、ステートセーブや巻き戻しなどの機能も使えます。MERUの対応コアはこれで4つになりました。 こちらからWindowsLinuxのプリコンパイルバイナリがダウンロードできるようになっています。 他のプラットフォームおよびソースコードからコンパイルする場合は ファミコンとスーパーファミコンどちらも一通り体の機能は実装してあるつもりです。スーパーファミコンは割と細かいところまでちゃんと動くようにしてあるはずなので、動かなかったり表示がおかしかったりするソフトがあればバグですので、ぜひご報

    Rustでファミコンとスーパーファミコンのエミュレーターを書いた
  • PydanticがRustで爆速になるという話 - Qiita

    はじめに 最近ポッドキャスト聴く時間が少し減ってしまったんだけど、久しぶりに Talk Python to Me を聴いたらPydanticの話題でした(エピソードのリンクはこちら)。作者のSamuel Colvinさんが秋に予定しているメジャーバージョンアップの話をし始めたのですが、冒頭で「コアをRustで実装して17倍速くなる」と言っていて、リンク張られていたドキュメントを読みました。この記事はそこで語られていた内容を中心にPydantic v2についてご紹介します。 Pydanticとは v2の話の前に、そもそもPydanticとは何かについて簡単に触れておきます。PydanticはPythonの型ヒント情報を使ってデータバリデーション(データの妥当性検証)を行うライブラリです。予めデータの構造を定義しておいて、入力されたデータがその構造に合っているかを調べてくれます。 例えば、id

    PydanticがRustで爆速になるという話 - Qiita
  • gRPCがフロントエンド通信の第一の選択肢になる時代がやってきたかも? | フューチャー技術ブログ

    Go 1.19が8/2に早々にリリースされました。個人的にはGo 1.19よりも楽しみだったのが、サービス間通信とIDL(インタフェース記述言語)連載の中でご紹介したgRPCGo実装の新星、Connectのアップデートでした。そしてそれはやってきました。 詳しい内容は↑の記事を見ていただくとして、Connectがその開発元ブログの紹介記事で宣言していたのが次の2つのことでした。 Go 1.19が出たらconnect-goは1.0にして以後後方互換性を守るよ connect-webを出すよ 前者はまだ0.3だったのですが、connect-webはリリースされました。歴史のあるフロントエンドのコードジェネレータはTypeScript対応が後付けだったりするのですが、TypeScriptがファーストシチズンかつ、ネイティブというコードジェネレータなので、開発はかなりやりやすくなることが期待され

    gRPCがフロントエンド通信の第一の選択肢になる時代がやってきたかも? | フューチャー技術ブログ
  • Tree-sitter|Introduction

    ☰ Introduction Tree-sitter is a parser generator tool and an incremental parsing library. It can build a concrete syntax tree for a source file and efficiently update the syntax tree as the source file is edited. Tree-sitter aims to be: General enough to parse any programming language Fast enough to parse on every keystroke in a text editor Robust enough to provide useful results even in the prese

  • エンジニアが「暇な喫茶店」をやるべきである7つの理由|Tsukishima

    人の来ない喫茶店がやりたくて始めてみました。ツキシマでーす。 暇なコーヒー屋(ツキシマコーヒー)を始めて2年くらいになりました。 近所のワンちゃんちょっと前に世の中でこんなツイート(自分のツイートじゃないですけど)がバズってたので、人が来ない喫茶店をやりたいニーズっていうのは、世間に少しでもあるのかもしれないですね。 なぜ人の来ない喫茶店がしたかったのか。3年くらい前まで普通に外資系の企業勤めをしておりましたが、フリーランスエンジニアとしての働き方ができるかどうかを試したかったのと、その働く場所が欲しかったという簡単な理由ですね。 とりあえず仕事中にコーヒーは飲むからコーヒー屋でもしようかな、くらい。 エンジニアが暇な喫茶店をやることによるメリット。実際にやってみて分かったメリットが7つあります。 規則正しい生活が出来るフリーランスエンジニアであれば、変な時間に寝たり起きたり深夜にプログ

    エンジニアが「暇な喫茶店」をやるべきである7つの理由|Tsukishima
  • 理想のプリントTシャツを求めてmidjourneyを使い始めた - ミネムラ珈琲ブログ

    ぼくが世間一般で言われるところの変なプリントTシャツの収集癖がある、ということはあまり疑う余地がないことであると思う。 このTシャツは随分前に買ったが未だ日常的に着ているし、思い出深いものなのでたぶん5枚から10枚ぐらいは人にプレゼントしている。 www.minemura-coffee.com タイ旅行事が口に合わず辛かったが、Tシャツとの出会いだけですべてがプラスになった。タイに限らずTシャツの購入は旅行の主目的と言える。 www.minemura-coffee.com だいたい毎年海外のSUZURIみたいなサイトで人から見ればろくでもないプリントのTシャツを何枚も書い続けている。 www.minemura-coffee.com それで、最近インターネットでAI画像作成ツールのmidjourneyの話題を見ていてふと気づいた。これを使うと自分で理想のプリントTシャツを作れるのでは?早

    理想のプリントTシャツを求めてmidjourneyを使い始めた - ミネムラ珈琲ブログ
  • Go fonts - The Go Programming Language

    How to use them If you just want the TTF files, run git clone https://go.googlesource.com/image and copy them from the subsequent image/font/gofont/ttfs directory. If you want to use Go (the fonts) with Go (the software), each font is provided by a separate package. To use the Go Regular font in a program, import golang.org/x/image/font/gofont/goregular, and write: font, err := truetype.Parse(gore

    Go fonts - The Go Programming Language
  • Python互換の静的型付け言語「Erg」

    承前 Ergは私が数年前から開発を始め、つい一昨日公開したばかりのプログラミング言語です。 のはずですが、 早速、qnighyさんに捕捉していただきました。ありがとうございます。 この記事ではそのErgがどのような言語なのかざっくりと解説していきたいと思います。なお、紹介した機能の一部は未実装です。実装途中の機能を含むコードには*を、完全に未実装の機能を含むコードには**をつけておきます。 はじめに Pythonは概ね素晴らしい言語です。 オフサイドルールを世に知らしめた(?)、その可読性の高い文法。Numpy, SciPyを始めとする機械学習、科学技術計算用の膨大なライブラリ。 しかしPythonにもいくつかの弱点が存在します。 まず、動的型付け であること。それ自体は弱点というより良し悪しなのですが、明らかに動的型付けでは手に余るPythonプロジェクトが世に溢れています。 次に、一貫

    Python互換の静的型付け言語「Erg」
  • 魔術として理解するお絵描きAI講座|深津 貴之 (fladdict)

    やればやるほど呪術化する、AI画像錬成について。 以下は、その道の専門家にはメッチャ怒られるかもしれない、雑なロジックと制御講座。 いちおうメジャーなサービスでは、共通して動作するノウハウ(DALL-E2, MidJourney, StableEiffusion, DiscoDiffusion, crayon, dall-e mini 他)。 雑に理解する画像AIのしくみ対話型のAIにとって、呪文プロンプトとは画像錬成の方向性ベクトルを定めるものにすぎない。 たとえば、以下は「I love apple」で錬成された画像の例である。どうにも、ふわっとしたものが出てくる I Love AppleApple」という方向性ベクトルは、「リンゴ」「青リンゴ」と「アップルコンピューター(旧レインボーロゴ」「アップルコンピュータ(新ロゴ)」など、複数の可能性を同時に持つからだ。 つまり、「Apple

    魔術として理解するお絵描きAI講座|深津 貴之 (fladdict)
    sugyan
    sugyan 2022/08/10
    "真に覚えるべきノウハウは、「新しいブラックボックス技術に遭遇したとき、如何に短時間で挙動の仮説をたて、暫定的に制御下におくか?」"
  • エンジニアらしく暮らせる街で ─ 技術を磨いたソフトウェア開発者が次に挑むのは「ユーザーファースト」 - Findy Engineer Lab

    福岡タワーとudzuraさん 近藤宇智朗(@udzura)さんはGMOペパボのシニアプリンシパルエンジニアとして技術を磨き、Rubyコミュニティに参加してきた経験も生かしながら、自走できるソフトウェアエンジニアを育成する「大名エンジニアカレッジ」を福岡で立ち上げました。そこで思わぬ苦戦に直面したことで、あらためて「ユーザーファースト」の大切さを認識したと語ります。それは図らずも、高校生のころ父親からかけられた言葉につながる経験でした。 転職活動をきっかけとしたユーザーファーストへの気付き エンジニア育成を目指した「大名エンジニアカレッジ」とは どんなよい目標もユーザーが成長しなければ意味がない なぜ福岡は「エンジニアらしく暮らせる街」なのか? 父の言葉から立ち返った「ユーザーファースト」の大切さ 転職活動をきっかけとしたユーザーファーストへの気付き ── 近藤さんは長く技術のスペシャリスト

    エンジニアらしく暮らせる街で ─ 技術を磨いたソフトウェア開発者が次に挑むのは「ユーザーファースト」 - Findy Engineer Lab
  • ZigはCMakeの代替となるか

    既存のプロジェクトで使用しているコンパイラを置き換えるだけで、Zigに付属しているCコンパイラを利用できる。 クロスビルドが標準で可能 上でも述べた通り、Zigは標準でクロスコンパイルが可能である。 Zig libcのTaget一覧 ❯ zig targets | jq ".libc" [ "aarch64_be-linux-gnu", "aarch64_be-linux-musl", "aarch64_be-windows-gnu", "aarch64-linux-gnu", "aarch64-linux-musl", "aarch64-windows-gnu", "aarch64-macos-none", "aarch64-macos-none", "armeb-linux-gnueabi", "armeb-linux-gnueabihf", "armeb-linux-musleabi

    ZigはCMakeの代替となるか
    sugyan
    sugyan 2022/08/09
  • Midjourneyの呪文のまとめ

    リンク 3D人-3dnchu- Midjourney Beta - キーワードを元にAIの力でアーティスティックな画像を生成してくれるサービス!無料のオープンベータ版を利用可能! キーワードを元にAIの力でアーティスティックな画像を生成してくれるサービス「Midjourney(ミッドジャーニー)」のベータ版が一般公開され、今話題を集めています。 3 users 13

    Midjourneyの呪文のまとめ
  • Rustとdeno_coreを使って、独自のJavaScriptランタイムを作ってみる

    Node.js、Denoに続いて、Bunという新たなJavaScriptランタイムが登場していますが、Denoの7月29日のブログにて、"Roll your own JavaScript runtime"という記事が投稿されていたので紹介します。 タイトルの通り、自分のJavaScriptランタイムを作ってみよう!という記事です。 作り方は元記事に載っているのでここでは省略して、掻い摘んだ内容をまとめていきます。 JavaScriptランタイムの材料 Rust deno_core tokio Rustdeno_coreとtokioというクレートを使って作っていきます。 deno_core deno_coreって、もうそれdenoじゃんと思いましたが、こちらのクレートはJavaScriptエンジンであるV8との橋渡し的な役割を持つようです。 deno_coreは、複雑で大量のAPIを持つV

    Rustとdeno_coreを使って、独自のJavaScriptランタイムを作ってみる
  • document.all の例外仕様を知っていますか

    昨日、ツイッターで次のような JavaScript クイズを出しました。 久しぶりの JavaScript クイズ! function hello(x) { if(typeof x === 'undefined') { alert(x.f()); } } この hello 関数で "Hello, World!" のアラートを表示させることが出来るか? — Takuo Kihira (@tkihira) July 31, 2022 このブログ記事では、この問題について解説します。 解答 答えは「出来る」です。出題者の意図としては document.all を想定しておりました。 document.all は、ブラウザに存在する、非常に特殊なオブジェクトです。 document.all 自体は object 型である。console.log(document.all) とすると内容が確認出来る

    sugyan
    sugyan 2022/08/01
    ぜんぜん知らなかった…
  • ISUCON12 予選問題の解説と講評 : ISUCON公式Blog

    ISUCONとはLINEヤフー株式会社が運営窓口となって開催している、お題となるWebサービスを決められたレギュレーションの中で限界まで高速化を図るチューニングバトルです ISUCON12 予選問題の解説と講評 予選問題作問チーム、面白法人カヤックの fujiwara です。 ISUCON12予選に参加された皆様、ありがとうございました。おかげさまで大きなトラブルもなく予選を終えられて安心しています。 このエントリでは、予選に出題された問題の解説と、皆様の感想エントリなどを拝見した結果を踏まえて講評します。 当日の競技内容とアプリケーションの仕様については ISUCON12 予選当日マニュアル、ISUPORTSアプリケーションマニュアル を参照してください。 予選問題のリポジトリはこちらGitHub - isucon/isucon12-qualify 作問チームによる事前解答については I

    ISUCON12 予選問題の解説と講評 : ISUCON公式Blog
  • ISUCON12予選参加記 Rustで予選突破した

    2022年7月23日(土) に開催された ISUCON 12 に Rust で参加して20位で予選突破しました。 チーム チームO omu: https://omuric.github.io/posts/isucon12-qualify/ dice801: https://zenn.dev/dice801/articles/760f8fc6af5a08 daiju (自分) 事前準備 基的には前年までに用意したツールを活用する cargo-make で3台の EC2 への deploy や再起動やログの集計をコマンド一発で実行可能にする isuconf で現地と手元の設定ファイルの同期 omu の自作コマンド どちらも年に1回しか登場しないので、事前の練習でコマンドを手に馴染ませておく。 Rust のためのトレースツールの整備 https://github.com/hinohi/rust

    ISUCON12予選参加記 Rustで予選突破した