並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 72件

新着順 人気順

HACの検索結果1 - 40 件 / 72件

タグ検索の該当結果が少ないため、タイトル検索結果を表示しています。

HACに関するエントリは72件あります。 rustプログラミングprogramming などが関連タグです。 人気エントリには 『プログラミング言語の未来はどうなるか | κeenのHappy Hacκing Blog』などがあります。
  • プログラミング言語の未来はどうなるか | κeenのHappy Hacκing Blog

    κeenです。最近JEITAのソフトウェアエンジニアリング技術ワークショップ2020に参加したんですが、そこで五十嵐先生、柴田さん、Matzとパネルティスカッションをしました。その議論が面白かったので個人的に話を広げようと思います。 年末年始休暇に書き始めたんですが体調を崩したりと色々あって執筆に時間がかかってしまいました。 時間を置いて文章を書き足していったので継ぎ接ぎ感のある文体になってるかもしれませんがご容赦下さい。 というのを踏まえて以下をお読み下さい。 いくつか議題があったのですが、ここで拾うのは一番最後の「プログラミング言語の未来はどうなるか」という話題です。 アーカイブが1月末まで残るようです。もうあと数日しかありませんが間に合うかたはご覧下さい。 そのとき各人の回答を要約すると以下でした。 五十嵐先生:DSLを簡単に作れる言語というのが重要。それとプログラム検証、プログラム

      プログラミング言語の未来はどうなるか | κeenのHappy Hacκing Blog
    • Twitter上のプログラミング入門者観察記 | κeenのHappy Hacκing Blog

      κeenです。 ここ半年くらいTwitter上でプログラミングに入門してる人、入門してエンジニアとして働きはじめたばかりの人を観察していました。 そろそろ潮時かなと思ったので観察結果を報告します。 観察結果をまとめようと思ったのは、どっかのタイミングで書こうと思っていたところに丁度いい記事が目に入ったからです。 プログラミングスクールに通わず、プログラミングを学ぶ方法 プログラミングをともに学ぶ仲間をTwitterで探すのはやめておこう(追記) 私が初心者を観測していて、これらの記事と概ね同じ意見に至ったので補足説明として記事を書きます。 観察に至るまで 結果を書く前に、どういう経緯で観察をはじめてどうやって観察対象を集めたかを記しておきたいと思います。 モチベーション だいたいこの2ツイートに要約されます。 小耳に挟んだ話なので眉唾ものなんですがXSSとかSQLインジェクションみたいな古

        Twitter上のプログラミング入門者観察記 | κeenのHappy Hacκing Blog
      • 安全なシステムプログラミング言語Rustへの招待 | κeenのHappy Hacκing Blog

        # 安全なシステムプログラミング言語Rustへの招待 ---------------------- [IIJ Labセミナー](https://iijlab-seminars.connpass.com/event/152079/) === # About Me --------- ![κeenのアイコン](/images/kappa.png) * κeen * [@blackenedgold](https://twitter.com/blackenedgold) * Github: [KeenS](https://github.com/KeenS) * GitLab: [blackenedgold](https://gitlab.com/blackenedgold) * [Idein Inc.](https://idein.jp/)のエンジニア + 2年半くらい仕事でRustを書いている

        • Rustのコードチェックを強力にする3つのツール | κeenのHappy Hacκing Blog

          κeenです。 Rustaceanのみなさんは普段書いてるRustのコードを検証するのに cargo check や cargo test などのツールを使っているかと思いますが、それらを強力にするツールの miri 、 MIRAI 、 kani をそれぞれ紹介します。 Rustにはいくつかコードの正しさや行儀のよさを検査する方法がありますね。 cargo check や cargo test 、 あるいはビルドしたバイナリを走らせて検証したり色々手を尽くしているでしょう。 ですがこれらだけだとあらゆる種類のバグを拾いきれる訳ではないのもみなさん承知の通りだと思います。 既存の方法だと手が回らない所があるので他のアプローチでコードを検証してくれるツールがあると嬉しいですよね。 そういったツールを3つ紹介します。 先に注意しておくと、これらのツールはまだ成熟しきってはおらず使いづらい点、使い

            Rustのコードチェックを強力にする3つのツール | κeenのHappy Hacκing Blog
          • BlogやるならGitLab Pagesがおすすめ | κeenのHappy Hacκing Blog

            κeenです。 GitHub Pagesからこんにちは。 私はこのGitHub Pagesのブログの他にGitLab Pagesのブログも持ってるんですが、それが使いやすいので宣伝します。 GitLab Pagesを使うと Markdownでブログがかける Markdownのまま git push で記事の公開ができる コンテンツの管理が(GitHub Pagesより)楽 サイトでHTMLやJavaScriptが使い放題 になります。 JavaScriptが自由に使えるということは私のようにreveal.jsなどのスライドエンジンを使ってMarkdownでスライドを書いて公開することもできます。 ブログに自由度が欲しいという方におすすめです。 GitHub PagesとGitLab Pages GitHub PagesとGitLab Pagesはだいたい似たようなことができます。 ユーザの

              BlogやるならGitLab Pagesがおすすめ | κeenのHappy Hacκing Blog
            • 最小限のELF | κeenのHappy Hacκing Blog

              κeenです。 先日の記事で言及した最小限のELFが需要ありそうだったので解説してみます。 コンパイラを作るときの参考にしてみて下さい ELFはExecutable and Linkable Formatを表わし、Linuxなどで標準の実行可能ファイルのフォーマットとなっています。 なんらかの形でこのファイルを生成するのがコンパイラの最終目標となります。 一般にはアセンブラまで吐いて外部のアセンブラやリンカにELFファイルの生成を任せることが多いのですが、自作するなら最後までやりたいという人向けにとっかかりになる最小限のELFファイルを解説します。 まずはこのファイルを生成するのを目指して、後から色々追加していけばインクリメンタルにできるよね、という訳です。 一部、「どうしてかは分からないけどこうしたら動く」みたいな箇所もあるので詳しい人がいたら教えて下さい。 全体構成 プログラムそのもの

                最小限のELF | κeenのHappy Hacκing Blog
              • eBPFでDockerの--passwordで入力したパスワードを盗む | κeenのHappy Hacκing Blog

                κeenです。以前の記事の続きで、 /proc を監視するのではなくeBPFで取得してみます。ついでにRustのコードをeBPFで動かせるライブラリのayaも使ってみます。 以前の記事では /proc 以下の監視をビジーループで回すという力技で新しく作られたプロセスを補足していました。これだとCPU使用率が上がって美しくありませんし、何より原理的には見逃しもありえてしまいます。そこでカーネルの機能を使って全てのプロセスの作成を監視して低CPU使用率かつ捕捉率100%の実装を目指します。 eBPFとは? なんかLinuxカーネルでユーザの書いたコード動かせるやつです。私は説明できるほど詳しくないので適当にググって下さい。 1つやっかいな点として、独自のバイナリを動かすのでカーネル内で動かすコードはコンパイラがeBPFに対応したものでないといけません。また、カーネル内で動かすコードをユーザラン

                  eBPFでDockerの--passwordで入力したパスワードを盗む | κeenのHappy Hacκing Blog
                • RustのHashMapはentryが便利 | κeenのHappy Hacκing Blog

                  κeenです。個人的によく設計したなと思っているRustのEntry APIについて紹介します。 標準ライブラリのHashMapの操作を無駄なく書きたい人におすすめ。 Entry APIとは HashMap のEntry APIというのは私が勝手に呼んでる名前ですが、 HashMap::entry を起点にして使えるメソッド群のことを指しています。 これは「HashMap に に対応する値があればそれにXXし、なければYYする」をするときに使います。 例えば HashMap<String, Vec<String>> にキーに対応する値(Vec<String>)があれば新たな文字列をpushし、なければ空 Vec を作って新たに文字列をpushするという操作をしてみましょう。 素直に HashMap::get_mut とパターンマッチを使って書くとこうなりますね。 // 準備 let mut

                    RustのHashMapはentryが便利 | κeenのHappy Hacκing Blog
                  • moldを使うとRustのビルドが速くなる | κeenのHappy Hacκing Blog

                    このエントリはRust Advent Calendarの2日目の記事です。 空いてる日を埋める担当のκeenです。2日目が空いてたので遡って記事を投稿します。 最近v1.0.0がリリースされたリンカ、moldを使うとビルドが高速化するよというお話です。 Rustのビルド、特にインクリメンタルビルドにおいてはRustコンパイラの速さと同じくらいリンカの速度がコンパイル時間に影響します。 この最後のバイナリを作る時間は意外と効いてきます。 具体例としてActix Webにあるexample、 basic をインクリメンタルビルドする例をみてみましょう。 この basic はたった42行の小さなアプリケーションです。 ただし、依存に Actix Webという巨大なライブラリを使っているので最終的なバイナリには非常に多くのコードが含まれます。フレームワークを使ってアプリケーションを開発してるときに

                      moldを使うとRustのビルドが速くなる | κeenのHappy Hacκing Blog
                    • ロードランナー様 on Twitter: "いやそれはおかしいと思いますよ。そもそもブッシュってバカだから人気だったんですっけ。911後にテロとの戦いを訴えて人気が上がり、イラク戦争の失敗で人気が下がった。バカだから人気があった時期なんてなくないですか? https://t.co/ZOSc5x6HAc"

                      いやそれはおかしいと思いますよ。そもそもブッシュってバカだから人気だったんですっけ。911後にテロとの戦いを訴えて人気が上がり、イラク戦争の失敗で人気が下がった。バカだから人気があった時期なんてなくないですか? https://t.co/ZOSc5x6HAc

                        ロードランナー様 on Twitter: "いやそれはおかしいと思いますよ。そもそもブッシュってバカだから人気だったんですっけ。911後にテロとの戦いを訴えて人気が上がり、イラク戦争の失敗で人気が下がった。バカだから人気があった時期なんてなくないですか? https://t.co/ZOSc5x6HAc"
                      • Rustで設定値を持つにはどうしたらいいですか | κeenのHappy Hacκing Blog

                        κeenです。Rustではじめてアプリケーションを書くときに困りがちなことの1つにグローバルな値を持つにはどうしたらいいか分からないというのがあるようです。 その書き方を何パターンか紹介しできたらなと。 一応この記事には元ネタというかインスパイア元があり、以下のリポジトリも見ながら書かれています。 https://github.com/paulkernfeld/global-data-in-rust let にする 一番よくあるケースだとCLIや起動時に読み込んだ設定ファイルの値をどうするかでしょう。データの性格として起動時に一度だけ生成してあとは(ほとんど)いじらないようなものです。そういうものは main 関数内で let して、あとは借用で持ち回ればよいです。 起動時にファイルかろ設定値を読み込んで動くアプリケーションを雰囲気で書くとこんな感じです。 use std::io; str

                          Rustで設定値を持つにはどうしたらいいですか | κeenのHappy Hacκing Blog
                        • Rustでインメモリキャッシュ作った話 | κeenのHappy Hacκing Blog

                          κeenです。先日発表したRustで作るインメモリキャッシュが全然話し足りなかったので色々補足します。 実は今回の話題はソフトウェアというよりはハードウェアの仕組みに由来するものなのですが、ソフトウェアにも応用できるだろうということで試してみた結果です。 ハードウェアでもソフトウェアでもアクセスするデータは時間局所性、つまり短期間にアクセスするデータには偏りがあるというのが仮定としてあります。 よくある例が冪乗則、あるいは80:20の法則とよばれるもので、アクセス数上位20%のものが全体の80%のアクセスを占めたりします。 データ全部はメモリに乗らないけど20%くらいだったら載るようなケースではその20%を上手く選んでメモリに載せられる仕組みがあればパフォーマンスがあがるはずです。 ということでそのような仕組み、キャッシュがほしいよねというのがモチベーションです。 キャッシュの話 まずはキ

                            Rustでインメモリキャッシュ作った話 | κeenのHappy Hacκing Blog
                          • 自作コンパイラをブラウザ上で動かす | κeenのHappy Hacκing Blog

                            このエントリは言語実装 Advent Calendar 2020の1日目の記事です。 次はsisshiki1969さんで「RustでつくるRuby、その後の進捗」です。 κeenです。 昔からちまちま作ってるSML処理系をブラウザ上で動かすことができたのでその進捗報告です。 ちまちま作ってるSML処理系とはこれのことです。 KeenS/webml: A Standard ML Compiler for the Web 今回実装したオンラインコンパイラは以下で試すことができます: WebML Online Compiler まあ、ブラウザで動くのでここに貼ることもできるんですけどね。 こういうのどうやって作ったの?っていうのを話していけたらなと思います。 設計 そもそもの話、WebMLはブラウザで動かすために設計、実装されています。 スタートから違うじゃんと思うかもしれませんが、スタートから

                              自作コンパイラをブラウザ上で動かす | κeenのHappy Hacκing Blog
                            • ウワサのVeronaを眺めてみる | κeenのHappy Hacκing Blog

                              κeenです。 先日、Microsoft Research (MSR)からVeronaという言語が公開されました。 マイクロソフト、Rustベースのセキュアなプログラミング言語を探求中 - ZDNet Japan マイクロソフト、「Rust」に基づくプログラミング言語プロジェクト「Project Verona」がGitHubに - ZDNet Japan これを見た人達の反応が様々で(婉曲表現)面白いな(婉曲表現)ーと思いました。 最近は企業や大きな団体の作った言語がメインストリームで使われることも増えたことから、本来の目的以上に期待を背負ってしまった感じがします。 プログラミング言語は思ったよりも気軽に作られているものです。 例えばGoogleの開発したohmuという言語はほとんど誰も知りませんよね。 そういうもんです。 以下には私がドキュメントとかコードとか読んだ感想を書きます。 主に

                                ウワサのVeronaを眺めてみる | κeenのHappy Hacκing Blog
                              • シャドイングの嬉しさ | κeenのHappy Hacκing Blog

                                κeenです。 Rustに限った話ではないのですが、よくRustを触ってみた人がシャドイングが気持ち悪いという反応をしているのを見かけるのでシャドイングがどういう機能かを解説します。 Rustのシャドイング まずは「気持ち悪い」と言われることもあるRustのシャドイングについて。 Rustでは以下のコードが合法です。 let input = "42"; let input = input.parse::<i32>().unwrap(); // 以後、i32 型のinputが見える let result = input * 2; input という名前の変数を2回導入しています。 最初の input は &str 型で、2つ目の input は i32 型です。 このコード以降では後に定義した i32 型の方の input が有効になっています。 後から導入した変数が先にあった変数を覆い隠す

                                  シャドイングの嬉しさ | κeenのHappy Hacκing Blog
                                • Rustのconst fnって何? | κeenのHappy Hacκing Blog

                                  error[E0010]: allocations are not allowed in constants --> const.rs:1:23 | 1 | const VEC: Vec<i32> = vec![1]; | ^^^^^^^ allocation not allowed in constants | = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) この制限された static や const の右辺に書くときの文脈を const文脈 と呼びます。 この他には配列初期化構文 [init; size] の size の部分やその型 [Type; Size] の Size 、あとはC-like列挙型の判別子の設定に書ける式も

                                    Rustのconst fnって何? | κeenのHappy Hacκing Blog
                                  • HACもマスク拒否の乗客降ろす|NHK 北海道のニュース

                                    12日、奥尻発函館行きの旅客機で、マスクをつけていなかった男性の乗客が、客室乗務員から再三にわたって問いかけられても理由を説明しなかったため、機内から降ろされるトラブルがありました。 航空会社によりますと、12日正午ごろ、北海道エアシステムの奥尻発函館行きの便で、男性の乗客がマスクを着けていなかったため、離陸前に客室乗務員がマスクの着用を求めましたが、男性は応じなかったということです。 このため客室乗務員が再三にわたって問いかけましたが、男性はマスクを拒む理由を説明しなかったため、機長は、機内の秩序を乱す行為にあたると判断し、この男性を降ろしました。 機内には男性のほかに21人の乗客が乗っていて、このトラブルなどの影響で、定刻より30分あまり遅れて午後0時48分に奥尻空港を出発しました。 航空各社では、新型コロナウイルスの感染防止のため乗客にマスクの着用を求めていて、今月7日にも、別の航空

                                      HACもマスク拒否の乗客降ろす|NHK 北海道のニュース
                                    • 手続き型脳で型推論を実装してみた | κeenのHappy Hacκing Blog

                                      このエントリは型 Advent Calendar 2019 - Qiita 2日目に遡って投稿しているエントリです。 担当に遅刻した訳ではなくて空いてたので前から詰めて投稿しただけです。 κeenです。世の中に型推論アルゴリズムは色々知られていると思いますが、それを一切無視して型推論を実装してみたので報告します。 型推論の基本的理解 式に型変数を割り当てて、既に分かっている型から制約条件をつけてその制約の連立方程式を解けばいいです。 例えば以下のようなSMLの式を考えましょう。

                                        手続き型脳で型推論を実装してみた | κeenのHappy Hacκing Blog
                                      • Whitespaceのセルフホストコンパイラ作ったよ! | κeenのHappy Hacκing Blog

                                        ハ〜イ、κeenさんだよー。Whitespaceのセルフホストコンパイラを作ったから紹介するねー。 Whitespace1ってのはあまり知名度がないけどこういう感じの言語。 見ての通りクリアな構文が売りの言語で、簡単に覚えられるのが特徴。 文法が綺麗だとパースも簡単だろうということで、セルフホストコンパイラを書いてみた。 こんな感じでコンパイラに自身のソースを食わせると完全に一致するバイナリを吐くよ。 $ whitelie < whitelie.ws > whitelie2 $ md5sum whitelie whitelie2 418b0b9a58caaa9e99a2d5e3649f6faf whitelie 418b0b9a58caaa9e99a2d5e3649f6faf whitelie2 一応注意点を挙げておくと、オリジナルの言語とは多少の非互換がある。一番大きいのは で、バイナリ

                                          Whitespaceのセルフホストコンパイラ作ったよ! | κeenのHappy Hacκing Blog
                                        • Rustのturbofishを理解する | κeenのHappy Hacκing Blog

                                          このエントリはRustその3 Advent Calendar 20193日目に飛び入り参加しているエントリです。 Rustの型パラメータ指定の構文、通称ターボフィッシュ(turbofish)について。 Rustでジェネリクス関数は以下のように関数名に続いて <パラメータ名> で指定しますよね?

                                            Rustのturbofishを理解する | κeenのHappy Hacκing Blog
                                          • io_uringで高速IO処理(?) | κeenのHappy Hacκing Blog

                                            κeenです。普段お世話になってるけど使ったことのないAPIを叩いてみよう、ということで io_uring を使ってみます。 io_uringが何なのかは以下の記事が詳しかったです。 Linuxにおける非同期IOの実装について - Qiita ざっくり、io_uringはLinuxで非同期IOをするためのAPIです。 ユーザランドとカーネルランドで2つのキューを共有し、そこを通じて会話をします。 1つのキューはユーザランドからカーネルへのリクエストの提出用、もう1つのキューはカーネルからユーザランドへの完了の通知用です。 また、epollを制御するためにfdもあります。こんなイメージですかね。 user | ^ ^ submit ||| || ||| completion -------|||--fd-|||---------- ||| || ||| v v | kernel それぞれのキ

                                              io_uringで高速IO処理(?) | κeenのHappy Hacκing Blog
                                            • タネ明かし: Whitespaceコンパイラを作った話の裏側 | κeenのHappy Hacκing Blog

                                              κeenです。今朝、エイプリルフールのネタ記事を書いたのでそのタネ明かしをします。タネとはいっても、ほぼ手書きなんですけどね。 WhitespaceはEdwin BradyとChris Morrisにより2003年4月1日に発表された言語です。 この言語自体エイプリルフールのジョークなんですね。 公式ページはあるのですが、繋がらないのでWebArchiveとかからアクセスして下さい。 特徴としては空白文字、タブ文字、改行文字だけで構成されているのでパッと見では何も書いてないようになる点があります。 いわゆるesoteric languageです。 今回の私のエイプリルフールのジョークは、Whitespaceを知らない人には「正直者にしか見えないコードですか?」、Whitespaceを知ってる人には「Whitespace!?んなもん書ける書けるわけないだろ!あ、そうか今日はエイプリルフールか

                                                タネ明かし: Whitespaceコンパイラを作った話の裏側 | κeenのHappy Hacκing Blog
                                              • YubikeyでOpenPGP鍵をセキュアに使う | κeenのHappy Hacκing Blog

                                                κeenです。最近Yubikeyを買ったので色々試しています。今回はそのうちのPGP回です。 Yubikeyについて Yubikeyは米瑞企業のYubico社が販売している認証デバイスです。FIDOやらWebAuthnやらの文脈で耳にした方も多いんじゃないしょうか。Yubikeyは日本ではソフト技研社が販売代理店をしています。 Yubikeyはラインナップがいくつかありますが私が買ったのはYubikey 5 NFCです。 Yubikeyでできることは色々あります。 FIDO U2F FIDO/WebAuthn Challenge and Response OATH-TOTP / OATH-HOTP Yubico OTP PIV OpenPGP 静的パスワード 参考:Yubikey 5をArchLinuxで使う - Qiita このうち今回はOpenPGPサポートの機能を使います。 Open

                                                  YubikeyでOpenPGP鍵をセキュアに使う | κeenのHappy Hacκing Blog
                                                • Preferred Networksに入社しました | κeenのHappy Hacκing Blog

                                                  κeenです。お久しぶりですね。表題のとおり入社報告です。 最近はあまり入社エントリとかみなくなって悲しいですね。私もあんまり書く気なかったんですが知り合いへの連絡に便利なので残しておきます。 9/1付で入社し、コンパイラチームに配属されました。初日はアセンブラの仕様書渡されました。他にも社内ドキュメントを大量に渡されてそれ読んでるだけで1週間経ちそうです。 知り合いやTwitterでの相互フォローの方とか多いと思うのでよろしくお願いします。

                                                    Preferred Networksに入社しました | κeenのHappy Hacκing Blog
                                                  • RustでCPS変換が簡単になったよという話 | κeenのHappy Hacκing Blog

                                                    κeenです。このエントリはRust Advent Calendar 2019 - Qiita 8日目の記事です。 昔書いたRustのコードをもけもけ漁ってたら、しばらく前にRustでCPS変換しようとしてた下書きをたまたま発見しました。 当時はコンパイラの制約で簡単には書けなかったのですが今見ると簡単に書けるようになってたのでRustも進歩してるね、という確認をしたいと思います。 CPS変換とは CPS変換とは、プログラムを継続渡し形式(Continuation-Passing Style)に変換することです。 じゃあCPSとはというと、雑に言えば「ネストした関数の呼び出し禁止」の形式です。 …ちょっと雑すぎますね。 プログラムのコントロールフロー(if 式や 関数呼出)を陽に受け取った継続で記述する形式です。 この形式はよくコンパイラの内部表現なんかに使われます。 変数束縛の右側に i

                                                      RustでCPS変換が簡単になったよという話 | κeenのHappy Hacκing Blog
                                                    • 異例の「初音ミク塗装」の旅客機、ついに全貌明らかに! HAC渾身の特別機が”超みっくみく”な件 | 乗りものニュース

                                                      まさかこんな日が来るだなんて…。 「JA12HC」が担当 JAL(日本航空)グループで北海道を拠点とするHAC(北海道エアシステム)から、ボーカロイド「初音ミク」を派生させた北海道応援キャラクターである、「雪ミク」特別塗装機(ラッピング機)が2022年12月27日よりデビューします。それにともなって同日、HACの拠点である札幌・丘珠空港でその全貌が公開されています。 拡大画像 HACの「雪ミク」特別塗装機(2022年12月27日、乗りものニュース編集部撮影)。 「雪ミク」は2010年の「さっぽろ雪まつり」で”真っ白い「初音ミク」の雪像”を作ったことをきっかけに誕生。以来、「雪ミク」が主役のフェスティバル『SNOW MIKU』を毎年北海道で開催するほか、北海道を盛り上げる各種取り組みのアンバサダーを務めるなど、道内を代表するご当地キャラクターになりつつあります。 今回の特別機就航は、北海道経

                                                        異例の「初音ミク塗装」の旅客機、ついに全貌明らかに! HAC渾身の特別機が”超みっくみく”な件 | 乗りものニュース
                                                      • RustのFutureとそのRunnerを作ってみた | κeenのHappy Hacκing Blog

                                                        κeenです。Rust 1.36.0がリリースされましたね。 ここで標準ライブラリにFutureが入ったので試しに実装してみます。 Rust 1.36.0ではFutureとそれに関連したいくつかのアイテムが安定化されました。 これは今までcrates.ioにあったfuturesのAPIとは異なるもので、 1.38.0 で安定化される予定の async / await 導入の布石になるものです。futuresと標準ライブラリのFutureの関係や async / await についてはここでは詳しく触れないので別の記事を参照して下さい。 参考: Rustの未来いわゆるFuture - OPTiM TECH BLOG Rustのasync/awaitの特徴4つ - Qiita 何もしないFutureの実装 ひとまず Future のAPIを確認するために何もしない、ただ値を返すだけのFutur

                                                          RustのFutureとそのRunnerを作ってみた | κeenのHappy Hacκing Blog
                                                        • io_uringで高速IO処理(!) | κeenのHappy Hacκing Blog

                                                          M.2のNVMe SSD x 4の上にbtrfsでRAID 5を組んだファイルシステム上で実験しており、Linuxカーネルは5.8.0でした。 公平性の調整 ネタバレになるですが、キャッシュの具合やファイルが残ってるかどうかで速度が結構変わるのでベンチマーク後にファイルは削除し、ベンチマークの間に sync() を挟むことでキャッシュの影響をなくすようにしました。 Linuxのアップデート 本件とは別の事情で最新版のLinuxを使う用事が発生したのでLinux 5.11.0を使っています。リリースノートを見るとbtrfsの高速化なども含んでいるので一応ベンチマークを取り直してみます。 name time(ms)

                                                            io_uringで高速IO処理(!) | κeenのHappy Hacκing Blog
                                                          • YubiKeyとBitWardenで安心Web生活 | κeenのHappy Hacκing Blog

                                                            κeenです。最近YubiKeyを買ったので色々試しています。今回はそのうちのWeb認証回です。 YubiKeyについて YubiKeyは米瑞企業のYubico社が販売している認証デバイスです。FIDOやらWebAuthnやらの文脈で耳にした方も多いんじゃないしょうか。YubiKeyは日本ではソフト技研社が販売代理店をしています。 YubiKeyはラインナップがいくつかありますが私が買ったのはYubiKey 5 NFCです。 YubiKeyでできることは色々あります。 FIDO U2F FIDO2 / WebAuthn Challenge and Response OATH-TOTP / OATH-HOTP Yubico OTP PIV OpenPGP 静的パスワード 参考:Yubikey 5をArchLinuxで使う - Qiita このうち今回はFIDO U2F、FIDO/WebAut

                                                              YubiKeyとBitWardenで安心Web生活 | κeenのHappy Hacκing Blog
                                                            • itertoolsの紹介 | κeenのHappy Hacκing Blog

                                                              κeenです。このエントリはRust Advent Calendar 2019 - Qiita 6日目のエントリです。 空いてたので飛び入りました。 飛び入りなので軽い小ネタ。便利クレート itertoolsの紹介です。 itertools は標準ライブラリの Iterator を拡張し、今まで痒いところに手が届かなかった部分をサクっと埋めてくれるライブラリです。 使い方 cargo add itertools などしてあとは use itertools::Itertools; するだけです。これだけでイテレータが便利になります。 何ができるの Itertools 「そう、それ!」と言いたくなるようなメソッドが生えてきます。 例えばイテレータの要素をまとめて処理する chunks と、セパレータで文字列を結合する join を組み合わせるとこういうコードが書けます。 for chunk i

                                                                itertoolsの紹介 | κeenのHappy Hacκing Blog
                                                              • RustのErrorとFailureのベンチマーク見たことある? | κeenのHappy Hacκing Blog

                                                                κeenです。最近ちょくちょく標準ライブラリの Error とfailureライブラリの Fail が比べられる(というより Fail を推奨する)のが増えてきたようです。 個人的にちょっと気になってる点があって、みんなそれを抜きに議論してるようなので少しお話します。 タイトルにあるとおり、ベンチマークの話なのでいきなりですがベンチマークを使いましょう。 Box<dyn Error> を作るコストと failureライブラリの Error を作るコストを比べます。 何故 Fail ではなくfailureの Error かというと Fail は少し込み入ったベストプラクティスがあり、コードが長くなるからです。 ベンチマーク的にはベストプラクティスを使った Fail とfailureの Error は変わらないと思います。ベストプラクティスについては以下を参照して下さい。 rust のエラーラ

                                                                  RustのErrorとFailureのベンチマーク見たことある? | κeenのHappy Hacκing Blog
                                                                • epollで作るチャットサーバ | κeenのHappy Hacκing Blog

                                                                  κeenです。 普段お世話になってるけど使ったことのないAPIを叩いてみよう、ということで epoll(7) を使ってみます。 Epollとは epoll(7) はLinux固有のAPIで、パイプやソケットなど出入力に待ちが発生する対象を複数同時に待つ、いわゆるIOの多重化の機能を提供します。 同等のことをするAPIはUNIX全般で使える select(2) や poll(2) などもありますが、使い勝手やパフォーマンスの面で epoll が勝るようです。 一方で epoll(7) はLinux固有のAPIなのでmacOSやFreeBSDでは使えません。それらのOSでは別のAPI(kqueue(2))を叩くことになります。 Rustならmioが互換レイヤとして存在し、LinuxでもBSDでもmacOSでも使えるライブラリになっています。 mioはTokioなんかで使われていますね。ですが今

                                                                    epollで作るチャットサーバ | κeenのHappy Hacκing Blog
                                                                  • Rustの環境構築(Emacs) | κeenのHappy Hacκing Blog

                                                                    たまに得体の知れないコマンドシェルスクリプトを直接 sh に流すのを嫌う人がいますが、 そもそも得体のしれないバイナリ(rustコンパイラ)をインストールしようとしてるので気にしすぎでしょう。 さて、上記コマンドを実行すると以下のようにインストールが走ります。 info: downloading installer Welcome to Rust! This will download and install the official compiler for the Rust programming language, and its package manager, Cargo. Rustup metadata and toolchains will be installed into the Rustup home directory, located at: /home/shun/

                                                                      Rustの環境構築(Emacs) | κeenのHappy Hacκing Blog
                                                                    • Idris 2の数量的型が解決した問題、導入した問題 | κeenのHappy Hacκing Blog

                                                                      # Idris2の数量的型が解決した問題導入した問題 ---------------------- [第一回関数型プログラミング(仮)の会 - connpass](https://opt.connpass.com/event/222709/) === # About Me --------- ![κeenのアイコン](/images/kappa2_vest.png) * κeen * [@blackenedgold](https://twitter.com/blackenedgold) * GitHub: [KeenS](https://github.com/KeenS) * GitLab: [blackenedgold](https://gitlab.com/blackenedgold) * [Idein Inc.](https://idein.jp/)のエンジニア * Lisp, ML

                                                                      • RustからCPU拡張命令を使ってみる | κeenのHappy Hacκing Blog

                                                                        κeenです。ちょっと気紛れでCPUの拡張命令を使ってみようかなと思ったのでRustから叩いてみます。 Rustから叩くとはいってもあんまり難しいものではなくて、intrinsicsとして実装されているのでそれを呼ぶだけです。今回はBMI2拡張のPDEP/PEXTを呼んでみます。 PDEP/PEXT BMI(Bit Manipulation Instruction Set)はその名のとおりビット操作を提供するx86の拡張命令です。IntelのHaswellから導入されてAMDのCPUもサポートしているようです。ABM、 BMI1、 BMI2と関連する拡張が色々あってややこしいので詳しくはWikipediaの記事を参考にして下さい。今回はBMI2を使います。その中のPDEP/PEXTはビットフラグ関連の操作を提供します。PEXTは「ビットマスクでマスクしてシフトでLSBに移動」、PDEPは逆

                                                                          RustからCPU拡張命令を使ってみる | κeenのHappy Hacκing Blog
                                                                        • Dependency Analysis入門 | κeenのHappy Hacκing Blog

                                                                          このエントリは言語実装 Advent Calendar 2019 - Qiita 16日目の記事です。1日ばかりフライングですが先に記事が完成してしまったので投稿します。 κeenです。最近最適化コンパイラの本の読書会をやっているのですが、そこで学んだことの一部をアウトプットします。 Dependencyとは ここで扱うDependencyとは何なのか、Dependencyが分かると何が嬉しいのかを見ていきます。 例えば以下のプログラムを考えましょう。

                                                                            Dependency Analysis入門 | κeenのHappy Hacκing Blog
                                                                          • Rust with Fearless Concurrency | κeenのHappy Hacκing Blog

                                                                            # Rust with Fearless Concurrency ---------------------- === # About Me --------- ![κeenのアイコン](/images/kappa2_vest.png) * κeen * [@blackenedgold](https://twitter.com/blackenedgold) * GitHub: [KeenS](https://github.com/KeenS) * GitLab: [blackenedgold](https://gitlab.com/blackenedgold) * [Idein Inc.](https://idein.jp/)のエンジニア * Lisp, ML, Rust, Shell Scriptあたりを書きます === # Rust with Fearless Concurrency

                                                                            • 国内初導入の新たな「旅客機の着陸進入法」どんなもの? 乗客にもメリットアリ! HACが採用 | 乗りものニュース

                                                                              乗っててすぐわかる…というわけではないですが、これはスゴイ! 衛星を活用 JAL(日本航空)グループで北海道を拠点とするHAC(北海道エアシステム)が、札幌丘珠空港、釧路空港、奥尻空港、利尻空港の着陸時に、衛星を活用した新たな進入方式「LPV」を導入しました。この方式が採用されるのは、国内では初めてのケースといいます。 拡大画像 HACの旅客機(乗りものニュース編集部撮影)。 LPV進入方式とは、衛星GPSなどから送られる位置補正データを活用し、航空機が進入方向と降下角度のガイダンスを受けながら滑走路への進入を行う運航方式です。通常、大きな空港ではあれば「ILS(計器着陸装置)」をはじめとする、空港の滑走路から発せられる電波を用いて着陸進入ができ、悪天候で視界がわるいときでも安全に着陸が可能です。 一方、離島空港などではこういった「精密進入機器」が設置されていないこともあり、こういった場合

                                                                                国内初導入の新たな「旅客機の着陸進入法」どんなもの? 乗客にもメリットアリ! HACが採用 | 乗りものニュース
                                                                              • コンパイル時に定数を処理してしまうアレ | κeenのHappy Hacκing Blog

                                                                                κeenです。コンパイル時に定数を処理する最適化技法あるじゃないですか。あれの名称がイマイチはっきりしないのでモヤモヤするなーという記事です。 技法 コンパイル時に定数を処理する最適化技法は色々あるんですがそれらを包括した名称だったり個別の名称だったりがごっちゃになってるのがはっきりしない要因です。 ここでは個別の技法を7つ挙げておきます。 技法A 定数と分かっている変数を定数におきかえるやつ 例 A = 100; B = A + 10; ↓ A = 100; B = 100 + 10; 技法B 変数から変数への代入を削除し、代入先の変数への参照を代入元の変数への参照に置き換えるやつ 例 A = 100; B = A; C = B + 10; A = 100; C = A + 10; 技法C 条件分岐の条件が定数の場合に条件なしジャンプにするやつ 例 if (true) { do_some

                                                                                  コンパイル時に定数を処理してしまうアレ | κeenのHappy Hacκing Blog
                                                                                • rust-analyzerの紹介 | κeenのHappy Hacκing Blog

                                                                                  # rust-analyzerの紹介 ---------------------- [下町.rs #1 (オンライン) - connpass](https://shitamachi.connpass.com/event/173972/) === # About Me --------- ![κeenのアイコン](/images/kappa.png) * κeen * [@blackenedgold](https://twitter.com/blackenedgold) * Github: [KeenS](https://github.com/KeenS) * GitLab: [blackenedgold](https://gitlab.com/blackenedgold) * [Idein Inc.](https://idein.jp/)のエンジニア * Lisp, ML, Rust, S

                                                                                  新着記事