並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 65件

新着順 人気順

機械語の検索結果1 - 40 件 / 65件

  • x86-64機械語入門

    この記事はx86-64の機械語を書けるようになるためのガイドとなることを目指します。読者はアセンブリー言語について既にある程度知っていることを想定します。 情報源 x86-64の機械語のオフィシャルなガイドはIntelのSoftware Developer ManualまたはAMDのAMD64 Architecture Programmer's Manualです。 Intel SDM: Intel® 64 and IA-32 Architectures Software Developer Manuals AMD64 Architecture Programmer's Manual, Volumes 1-5 このほか、Cから呼び出される関数を定義したり、Cの関数を呼び出すためには、呼び出し規約の知識も必要です。使用される呼び出し規約はOSに依存し、Unix系では主にSystem V ABI

      x86-64機械語入門
    • ARMはx86より効率がいいというのは過去の神話

      従来から、「ARMはx86より(電力的に)効率的だ」という言説があります。これは単純に「ARMは省電力なスマホ向けで、x86は電力を食うPC向け」程度のアバウトなイメージのこともありますし、前世紀のRISC vs CISC論争のころからある「ARMはx86 (x64を含む)に比べ命令セットがシンプルなので、命令デコードにかかる電力が少なくて済んで効率的」という議論の形をとることもあります。 この議論については、半導体エンジニアの多くは「ARMがx86 より効率が良いというのは、もはや過去の神話」(in today’s age it is a very dead argument)という認識を共有していると言っていいでしょう。有名なところではApple CPU (ARM)とZen (x86)の両方を開発したジム・ケラー氏のインタビューでも言われていますし、Chips and Cheeseとい

        ARMはx86より効率がいいというのは過去の神話
      • PowerShellの今を見る 2つあるPowerShellはどっち使えばいい? (1/2)

        PowerShellに関しては、2021年に1回まとめたのだが、あれから3年も経過したので最新情報も含めて、簡単に解説したい。なお、それぞれのこれまでの経緯などは、過去記事に記載しているので参考にしてほしい。 ●あらためて「PowerShell」の現状と登場後の経緯を整理する https://ascii.jp/elem/000/004/052/4052789/ 結論から言えば、PowerShellには、Windowsに同梱されている「Windows PowerShell」と、ユーザーがインストールする必要がある「PowerShell」がある。コマンドラインを使う頻度が高いようならば、最新のPowerShellをインストール、そうでなければWindows PowerShellで十分である。 PowerShellのインストーラーなどに表示される奇妙な人物イラストを見たことがある人もいるだろう。

          PowerShellの今を見る 2つあるPowerShellはどっち使えばいい? (1/2)
        • Pythonの独学を支える教科書づくりの裏側、京都大学の喜多教授が授業に込めた思いとは?

          Pythonユーザのためのグローバルイベント「PyCon APAC 2023」が2023年10月27日と28日に、TOC有明コンベンションホールで開催された。1日目の基調講演に登壇したのは、京都大学国際高等教育院の喜多一教授。「Why University Teachers Wrote a Python Textbook?」と題し、大学の授業のために書き下ろされたPythonの教科書執筆の背景を紹介した。プログラミング初心者のつまずきポイントを理解しているからこそ、オリジナルの教科書を作ったという喜多教授。はじめてプログラミングに触れる学生向けの授業と教科書に込めた思いを語った。 Pythonを学び、学生は興味をひろげてゆく 喜多教授がPythonを教えるワケ 京都大学の国際高等教育院で教養教育、特に新入生向けの教育を担っている喜多教授。自身のプログラミングとの出会いは、学生時代の1978

            Pythonの独学を支える教科書づくりの裏側、京都大学の喜多教授が授業に込めた思いとは?
          • 数学の定義は本当に厳密で一意なものと言えるのか気になりました

            たとえばユークリッド幾何学での直線は「幅をもたず、両側に方向に無限にのびたまっすぐな線」だそうですが、これも「幅」とは?「(幅を)持つ」とは?両側とは?「方向」の定義は?「無限(限りが無く)」とは?そもそも「限り」って何?「のびる」とは?「まっすぐ」とは?「線」と結論づけるのは循環論法じゃないの? と突っ込む人にとっては厳密ではなくなっていませんか? ここで、これらの言葉の意味は、国語辞典に載っている意味と同じものだよなどといおうものなら、それこそ数学の厳密性を否定したようなものになってしまっていると思います。 たとえば「方向」を調べたら「向くこと」とでます。これを調べると「物がある方向を指す」というふうに出ます。これは循環論法に陥ってますし、「物の正面があるものに面する位置にある」という別の語釈もありますが、物とは?正面とは?面するとは?位置とは?となります。これを繰り返せば結局どこかで

              数学の定義は本当に厳密で一意なものと言えるのか気になりました
            • 「自分の付加価値は何なのか」を考え続けていく必要がある 及川卓也氏が思う「エンジニア」と「生成AI」の関係性

              及川卓也氏に聞く必要な“エンジニア力”の身につけ方 「自分の付加価値は何なのか」を考え続けていく必要がある 及川卓也氏が思う「エンジニア」と「生成AI」の関係性 米国OpenAI社が公開した「ChatGPT」が盛り上がりを見せている中、議論されがちなのは“AIの脅威”。それではエンジニアやプログラマーにとって、AIは脅威なのでしょうか?それとも新たな相棒なのでしょうか? 今まで多くのエンジニア組織をまとめてきた及川卓也氏に、エンジニアとChatGPTの関係についてうかがいしました。 ChatGPTに対してプログラマーができること ーー最近の話でいうと、ChatGPTのような生成AIが出てきて、なんか「エンジニアの仕事も取られるんじゃないの?」とか、エンジニアもプログラミングをやっていて、ChatGPTももちろんプログラミングをするというのはあるとは思うんですけど、そういう意見も一部はあるの

                「自分の付加価値は何なのか」を考え続けていく必要がある 及川卓也氏が思う「エンジニア」と「生成AI」の関係性
              • Rust と OS の知識 0 からはじめるRustで始める自作組込みOS入門 - 前半(スケジューラの実装まで) - Qiita

                きっかけ・読んでいく本 うさねこらーじの Discord サーバーで、いろいろな先輩たちに技術のことを教えてもらっています。 https://discord.gg/RMq7e5qbQj このなかで、著者の garasubo さんにサポートしてもらいながら以下の本の内容を実装しているのですが、 Rust の知識も OS の知識もない私にとっては内容がかなり高度なので、補助のためにこのブログを作成しています。 Rustで始める自作組込みOS入門 https://amzn.asia/d/ebuOUM1 ぜひこの本を読みながらこのブログを参照していただけると嬉しいです。 第 2 章 ベアメタルで Hello World 単語のかみくだいた説明 ベアメタルプログラミング OSのない環境で実行するためのプログラムを書くことです。この環境下では CPU ごとに決まった動作(たとえば、決まったアドレスにあ

                  Rust と OS の知識 0 からはじめるRustで始める自作組込みOS入門 - 前半(スケジューラの実装まで) - Qiita
                • Mojoプログラミング言語の特徴とは?将来性は?よく分かる入門資料まとめ

                  2023年5月に発表された新しいプログラミング言語「Mojo」が世間で注目を浴びています。 PythonをベースにしたAI向きの言語であるということで、どんな言語なのか気になっている方も多いのではないでしょうか? この記事では、Mojoの特徴や機能、今後の将来性について解説します。Mojoを学んでみたい方向けの学習方法もまとめているので、これからMojoを勉強すべきか検討している方は、ぜひご一読ください。 レバテックフリーランスはITエンジニア専門の フリーランスエージェントです案件を探してみる 注目のプログラミング言語「Mojo」とは? プログラミング言語「Mojo」とは、どのような目的で作られ、他の言語と比べて何が新しいのでしょうか。まずはMojoの概要と特徴についてチェックしていきます。 Mojoプログラミング言語の概要 「Mojo(モジョ)」とは、Modular社が2023年5月に

                  • TypeScript開発にRailway Orientedを持ち込み、より型安全なエラーハンドリングへ - Sansan Tech Blog

                    Digitization部 Bill One Entry*1グループの秋山です。 はじめに Domain Modeling Made Functionalというスゴ本 補講:Make Illegal States Unrepresentable バックエンドの処理を抽象化する 手続き型プログラミングの典型例 課題1:制約のないエラーハンドリング 課題2:低い可読性 課題3:エラーハンドリングの低い網羅性 Railway Oriented Programming TypeScriptで型安全にエラーハンドリングする ステップ1:サブ関数の出力はResult型で表現する ステップ2:サブ関数にResult型を入力できるようにする ステップ3:サブ関数を連結する ステップ4:網羅的にエラーハンドリングする おわりに 付録 TypeScriptの全文サンプル はじめに エラーハンドリングは重要な処

                      TypeScript開発にRailway Orientedを持ち込み、より型安全なエラーハンドリングへ - Sansan Tech Blog
                    • YJITの性能を最大限引き出す方法 - k0kubun's blog

                      RubyのJITコンパイラYJITを開発している弊社Shopifyでは、社内で最もトラフィックが多いストアフロントのアプリにRuby 3.3 (master) をデプロイして平均レスポンスタイムが16%高速化、社内で最も大きなアプリであるモノリスにRuby 3.2をデプロイして平均レスポンスタイムが9%高速化している。他の会社でも、YJITを本番で有効にしたら高速化したという事例をちらほら目にした。 一方で必ずしも良い報告ばかりではなく、YJITを有効化したらメモリを使い切ってしまったりだとか、遅くなったみたいな報告も目に入ることがある。こういった問題は我々も多かれ少なかれ経験しており、それぞれ適切に対処することで解決できたため、その知見を共有する。*1 メモリを使い切ってしまった時 zenn.dev YJITを有効化すると、YJITが生成する機械語に加えて、それに関するメタデータもメモリ

                        YJITの性能を最大限引き出す方法 - k0kubun's blog
                      • 田渕 豊 (超伝導量子計算システム工学) - 講演録-23Aug

                        特別感謝→ 文字起こし:Notta.ai @大阪/23年8月講演 カッコ内は、講演中に突発的に喋って分かりにくくなったものをカッコで括ったり、意味を後で補ったものです。 皆さんこんにちは。理化学研究所の量子コンピュータ研究センターにいる田渕と申します。今日よろしくお願いいたします。ちょっとですねどんな話をしようかなって迷ったんですけれど、量子コンピュータはとりあえず面白いよと。面白いっていうのさえ伝われば、今日は成功だと思いましょう。 はいちょっと私の自己紹介から始めます。私出身が岡山県でして岡山県の倉敷市というところで、石油化学コンビナート中で生まれています。そこでは石油化学であったりと製鉄があったりと、すごい工業の盛んな町です。私は興味持ったのはああいうコンピュータですね。デジタルコンピュータで小さい頃から昔の古いハチハチを与えてもらって、10年もの前のコンピュータを与えられた私はこれ

                          田渕 豊 (超伝導量子計算システム工学) - 講演録-23Aug
                        • メモリの使い方の理解はプログラマのたしなみ…??😰 - Qiita

                          はじめに プログラミング学習を始めて1年経過しました。しかし、今までオブジェクト指向の概念から目を背けてきた結果、現在エンジニアとして苦労しているので、書籍「オブジェクト指向でなぜつくるのか」にて学習中です。 その中で、以下のような章がありました。 「メモリの仕組みの理解はプログラマのたしなみ」 これを見て、自分は今までそんなこと意識していなかったのと強く感じたので、今回はこの書籍で書かれていた、一般的なプログラムの動作環境としての最低限の知識を整理しました。 プログラムが動く仕組みを理解する上で重要な概念 コンパイラ方式とインタプリタ方式 プログラムの基本的な実行方式は大きく分けて2つあります。 コンパイラ方式 コンパイラって何? コンパイラは、プログラム全体を読み込んで、それをコンピュータが理解できる形(機械語)に一度に変換するプログラムです。 どういう時に使うの? コンパイラは、プロ

                            メモリの使い方の理解はプログラマのたしなみ…??😰 - Qiita
                          • 【訃報】プログラミング言語「Pascal」の開発者ニクラウス・ヴィルト氏が89歳で死去、ソフトウェア設計のパイオニアとして複数のプログラミング言語を考案し1984年にチューリング賞を受賞

                            プログラミング言語「Pascal」の開発者であるニクラウス・ヴィルト氏が2024年1月1日に亡くなりました。89歳でした。 RIP: Software design pioneer Niklaus Wirth • The Register https://www.theregister.com/2024/01/04/niklaus_wirth_obituary/ We lost a titan of programming languages, programming methodology, software engineering and hardware design. Niklaus Wirth passed away on the first of January. We mourn a pioneer, colleague, mentor and friend.— Bertra

                              【訃報】プログラミング言語「Pascal」の開発者ニクラウス・ヴィルト氏が89歳で死去、ソフトウェア設計のパイオニアとして複数のプログラミング言語を考案し1984年にチューリング賞を受賞
                            • C言語でWASMインタプリタを実装した話

                              概要 公式のcore testが全て(UTF8, WAT, SIMD関連のものは除く)通るWASMインタプリタをC言語でフルスクラッチで実装した。自作WASMランタイムで省略されがちなValidation Stageも実装した。この記事はWebAssembly Advent Calendar 2023の三日目の記事である。 目的 このWASMランタイムを実装するにあたり、「できるだけ仕様に従って実装する」ことを心掛けた。WASMの仕様書は以下のissueが立つほど読みにくいものとなっているが、ランタイムをどのように実装すべきかが詳しく書いてあり、一応仕様書を頑張って読めばランタイムが作れるようになっている。 この自作WASMランタイムの目的は、できるだけ仕様に従った実装を与えることで、仕様の理解を助けることである。早さや効率性よりも分かりやすさを優先しているため、実用には向かない。仕様書を

                                C言語でWASMインタプリタを実装した話
                              • 頭の中に数学の地図を作ろう

                                頭の中に数学の地図を作ろう Make a mathematical map in your head 2023.07.03 Updated by Atsushi SHIBATA on July 3, 2023, 10:16 am JST 今回紹介する書籍:『数学と文化』赤 攝也(ちくま学芸文庫、2020) 抽象化の重要性 小学生の長男の勉強を見てやっていると、算数の教材に「□×4-3-5=8」のような問題が出てきます。「穴あき算」「虫食い算」と呼ばれる計算です。この種の課題は、大人が見ると四角をx(エックス)に見立てた方程式に見えるので、数を移項して「x=」の式にすることで答えを出そうとします。 この「移項をすると符号が反転する」というのを、小学生くらいの子供に教えるのはとても大変なのですが、子供に理解してもらうには、計算を手順に分解して教えます。「最後に5を引いて8になったのだから、その

                                  頭の中に数学の地図を作ろう
                                • Small String Optimization で Rust ライブラリ ratatui を最適化した話 - はやくプログラムになりたい

                                  最近 ratatui という crate に Small String Optimization を利用した最適化を入れたので,その話を書きます. 目次 Small String Optimization (SSO) とは(SSO を既に知っている人は読み飛ばして大丈夫です) Rust で SSO を適用した文字列型を提供する crate 比較 SSO を利用して ratatui のメモリ効率と実行効率を最適化した話 compact_str crate の実装の最適化の話 インラインストレージに24バイト全てを使える理由 隙間最適化のための工夫 説明を簡潔にするため,特に断りが無い場合 64bit アーキテクチャを前提とします. Small String Optimization (SSO) とは Rust の可変長文字列型 String は文字列バッファへのポインタ,文字列の長さ,バッフ

                                    Small String Optimization で Rust ライブラリ ratatui を最適化した話 - はやくプログラムになりたい
                                  • Ruby 3.3 YJITのメモリ管理とRJIT 〜すべてが新しくなった2つのJITを使いこなす | gihyo.jp

                                    Ruby 3.3リリース! 新機能解説 Ruby 3.3 YJITのメモリ管理とRJIT 〜すべてが新しくなった2つのJITを使いこなす 2023年12月25日、Ruby 3.3.0がリリースされ、様々な新機能が加えられました。本連載では実際に携わった皆さんにその新しいRubyをご紹介いただきます。 RubyはJust-In-Time(JIT)コンパイラという機能を備えており、これを有効化すると実行時に機械語を生成して様々な最適化が行なわれ、実行が高速になります。Ruby 3.3にはYJITとRJITという2つのJITコンパイラがあり、デフォルトでは無効になっていますが、それぞれ--yjitと--rjitで有効化できます。 この回では、Ruby 3.3でYJITの性能特性が変化した点や、YJITに新たに追加された便利な機能、またRJITはどのように使うものであるかについて解説します。 YJ

                                      Ruby 3.3 YJITのメモリ管理とRJIT 〜すべてが新しくなった2つのJITを使いこなす | gihyo.jp
                                    • プログラミング言語の歴史【訂正版作成予定】

                                      ミスの洗い出しの完了と私の知見が更新出来次第、訂正版を作成します。時間がかかるため、しばらく以下の訂正一覧を使用ください。 この動画も継続して公開いたします。タイトルとサムネイルで区別予定です。 みなさんからのご指摘、大変参考になっております!!多数の誤情報大変申し訳ございません🙇 ***訂正一覧*** (誤00:53)コンピュータの由来は計算機→(正)機械ではなく計算する人間を指す言葉 (誤03:04)ペリーの航路→(正)太平洋側からではなく,慣れたインド洋経由で来航した (誤04:57)ニイタカヤマノボレヒト「マルフタ」ハチ→(正)ヒト「フタマル」ハチ (誤05:15)チューリングマシン→(正)ボンベというマシンで解読。チューリングマシンは無関係。 (誤06:55)機械語のかたまり→(正)1つの機械語。ビット列 (誤07:05)ドイツの位置ズレ→(正)右上が正しいドイツ (誤07:

                                        プログラミング言語の歴史【訂正版作成予定】
                                      • 生成AIの議論を見てるとプログラミング環境の進化と近い話だなと思った

                                        すがやみつる先生が生成AIを使ったことでAIを憂う人たちから大量の質問が殺到する→質問に丁寧に返答、ベテラン漫画家が話す「模倣について」の考え方がためになる - Togetter 「紙とペンからデジタルへの変遷とAIでは次元が違う」みたいにAIは影響が凄すぎるみたいな話がよく出てくるけど プログラマってそういうの何回も体験してきてる プログラマにとって紙とペン時代は機械語やアセンブラだよな 俺は40代だから機械語やアセンブラ知らなくてもアプリが作れた世代だけど C言語やVBが出た時には機械語やアセンブラやってた人の技術が必要無くなってアプリを作る速度でも負けることになった 開発環境でも秀丸っていうただのテキストエディタで開発していた時代があったけど 統合開発ツールとか出てきてデバッグできたり補完が働いたりして秀丸使いは廃れた 自分がプログラマになってからも幾度となく新しい言語が発表されたり

                                          生成AIの議論を見てるとプログラミング環境の進化と近い話だなと思った
                                        • Maxime Chevalier-Boisvertさん「Optimizing YJIT’s Performance, from Inception to Production」 ~RubyKaigi 2023 2日目キーノート | gihyo.jp

                                          RubyKaigi 2023 キーノートレポート Maxime Chevalier-Boisvertさん「Optimizing YJIT’s Performance, from Inception to Production」 ~RubyKaigi 2023 2日目キーノート 最近のRubyインタプリタの進化において非常に重要なトピックの一つが、JITコンパイラの登場です。特にShopifyのJITコンパイラチームを中心に開発されたYJITは、世の中で広く使われているRailsアプリケーションを有意に高速化できるJITコンパイラとして、既にproduction-readyであると評価されており、各所で採用が進んでいます。 RubyKaigi 2023 2日目のMaxime Chevalier-Boisvertさんによるキーノートでは、開発チームがYJITを開発するにあたってどういったアプロ

                                            Maxime Chevalier-Boisvertさん「Optimizing YJIT’s Performance, from Inception to Production」 ~RubyKaigi 2023 2日目キーノート | gihyo.jp
                                          • Ruby 3.3.0+YJIT本番運用カンパニーになりました - Timee Product Team Blog

                                            こんにちは。バックエンドエンジニアの須貝(@sugaishun)です。 今回はタイミーが本番運用しているRailsアプリケーションに対してRuby3.3.0へのアップデートを行った(YJITは引き続き有効なまま)のでその結果をご紹介したいと思います。 昨年弊社のid:euglena1215が書いたエントリーのRuby3.3.0版です。 tech.timee.co.jp 前提 タイミーのWebアプリケーションとしての特性は基本的には昨年と変わりありません。ですので、昨年の内容をそのまま引用させてもらいます。 タイミーを支えるバックエンドの Web API は多くのケースで Ruby の実行よりも DB がボトルネックの一般的な Rails アプリケーションです。JSON への serialize は active_model_serializers を利用しています。 今回の集計では API

                                              Ruby 3.3.0+YJIT本番運用カンパニーになりました - Timee Product Team Blog
                                            • 及川卓也「仮説はことごとく外れた」それでもブレずに開発できる理由は?【後編】 - エンジニアtype | 転職type

                                              2024.04.08 働き方 及川卓也PdMプログラミングプロダクト 前編に続いて及川卓也さんにプログラミング初学者向けの学習サービス『Jasmine Tea』のこの1年を聞く。リリースからちょうど1年が経った『Jasmine Tea』だが「実は思っていたよりうまくいっていない」のだという。未知の挑戦に課題はつきものではある。及川さんらはどんな課題にぶつかり、それとどう向き合っているのだろうか。 事前に立てた仮説のことごとくが外れたこと、それでもブレずに開発を続けられている理由、少し脇道に逸れて、生成AI時代のエンジニアに必要なことも伺った。 Tably株式会社 代表取締役 Technology Enabler 及川 卓也さん(@takoratta) 早稲田大学理工学部卒業、日本DECを経てMicrosoftに転職。Windowsの開発に携わり、その後Googleではプロダクトマネジメント

                                                及川卓也「仮説はことごとく外れた」それでもブレずに開発できる理由は?【後編】 - エンジニアtype | 転職type
                                              • DeepMindが深層強化学習を利用してアルゴリズムを改善するAI「AlphaDev」を発表、すでにソートアルゴリズムやハッシュ関数の高速化に成功

                                                AlphaGoの開発元として有名なGoogle DeepMind社が深層強化学習を応用してさまざまなコンピューティングアルゴリズムを改善するAI「AlphaDev」を発表しました。同時に、AlphaDevを利用してソートアルゴリズムを高速化できたという論文がNatureに掲載されています。 AlphaDev discovers faster sorting algorithms https://www.deepmind.com/blog/alphadev-discovers-faster-sorting-algorithms Faster sorting algorithms discovered using deep reinforcement learning | Nature https://doi.org/10.1038/s41586-023-06004-9 ソートアルゴリズムとは

                                                  DeepMindが深層強化学習を利用してアルゴリズムを改善するAI「AlphaDev」を発表、すでにソートアルゴリズムやハッシュ関数の高速化に成功
                                                • KubeCon + CloudNativeCon Europe 2024 参加レポート - ZOZO TECH BLOG

                                                  はじめに こんにちは。SRE部フロントSREブロックの三品です。 3月19日から3月22日にかけてKubeCon + CloudNativeCon Europe 2024(以下、KubeCon EUと呼びます)が行われました。今回弊社からはZOZOTOWNのマイクロサービスや基盤に関わるエンジニア、推薦システムに関わるエンジニアの合わせて4人で参加しました。 本記事では現地の様子や弊社エンジニアが気になったセッションや現地の様子について紹介していきます。 目次 KubeConEU2024の概要 セッションの紹介 現地の様子 ブースについて 参加に向けてのTips 最後に KubeCon EU 2024の概要 昨年4月にオランダ アムステルダムで行われたKubeCon EUの様子については昨年の参加レポートをご覧ください。 techblog.zozo.com 今年のKubeCon EUはフラ

                                                    KubeCon + CloudNativeCon Europe 2024 参加レポート - ZOZO TECH BLOG
                                                  • 「Black Hatに採択される」という大きな目標を達成したセキュリティ研究者が次に目指したのは現場への貢献 - Findy Engineer Lab

                                                    はじめまして、中島明日香(@AsuNa_jp)です! 私は14歳の頃にハッカーに憧れてセキュリティの世界に飛び込んで以来、セキュリティひと筋なキャリアを歩んできました。大学でセキュリティを学び、卒業後も研究開発者として10年以上さまざまなセキュリティの研究開発に携わってきました。 本記事では、私自身のキャリアの歩みについて紹介します。今までどのような仕事に携わってきたかだけでなく、大学卒業時の就職や一昨年に経験した転職など、キャリアの節目においてどのように考え、選択してきたのかについても触れています。 私のこれまでの歩みが、皆様が自分らしいキャリアを歩む参考になればたいへん嬉(うれ)しく思います。 ▲ Black Hat Asia 2023のロックノート(閉会時基調講演)となるパネルセッションに登壇する筆者(左から2人目) ハッカーに憧れてセキュリティの世界に飛び込む 「世界を広く良くした

                                                      「Black Hatに採択される」という大きな目標を達成したセキュリティ研究者が次に目指したのは現場への貢献 - Findy Engineer Lab
                                                    • Maximum call stack size exceeded について解説

                                                      "Maximum call stack size exceeded" というエラーに関する解説を書きます。JavaScript を前提に解説しております。 ざっくり解説 Uncaught RangeError: Maximum call stack size exceeded これは、関数が何度も深く深く呼ばれてしまった場合に出るエラーです。 大抵は、間違って自分自身の関数を呼んでしまった、もしくは再帰の終了条件をミスった場合に発生します。 ここに検索で来た方は、自分自身を呼んでいたり、関数同士が循環的に呼びあっていたりするミスを犯していないか確認してください 。 図にすると、こんな感じです ちなみに、関数呼び出しがなければこのエラーは発生しません。ただの無限ループでは決して発生しないエラーです。以下、解説を書きます。 「関数を深く呼ぶ」とは? ここでは、関数からリターンせず再度関数を呼び

                                                      • あなたのキャリアに影響を与えた本は何ですか? 著名エンジニアの方々に聞いてみた【第三弾】 - Findy Engineer Lab - ファインディエンジニアラボ

                                                        書籍には、特定領域の専門家たちが習得してきた知識のエッセンスが詰まっています。だからこそ「本を読むこと」は、ITエンジニアがスキルを向上させるうえで効果的な取り組みと言えます。では、著名エンジニアたちはこれまでどのような書籍を読み、そこから何を学んできたのでしょうか。今回は8人の著名なエンジニアのキャリアに影響を与えた“珠玉の書籍”を、ご本人にまつわるエピソードとともに紹介してもらいました。 *…人名の50音順に掲載。回答者は敬称略。 遠藤侑介が紹介『あなたの知らない超絶技巧プログラミングの世界』 笹田耕一が紹介『Rubyソースコード完全解説 Ruby Hacking Guide』 竹迫良範が紹介『ハッカー・プログラミング大全』 鳥井雪が紹介『Rubyのしくみ -Ruby Under a Microscope-』 廣戸裕大(hiroppy)が紹介『プログラミングコンテストチャレンジブック』

                                                          あなたのキャリアに影響を与えた本は何ですか? 著名エンジニアの方々に聞いてみた【第三弾】 - Findy Engineer Lab - ファインディエンジニアラボ
                                                        • 【訃報】プログラミング言語「Pascal」の開発者ニクラウス・ヴィルト氏が89歳で死去、ソフトウェア設計のパイオニアとして複数のプログラミング言語を考案し1984年にチューリング賞を受賞 - ライブドアニュース

                                                          プログラミング言語「」の開発者であるニクラウス・ヴィルト氏が2024年1月1日に亡くなりました。89歳でした。 RIP: Software design pioneer Niklaus Wirth • The Register https://www.theregister.com/2024/01/04/niklaus_wirth_obituary/ We lost a titan of programming languages, programming methodology, software engineering and hardware design. Niklaus Wirth passed away on the first of January. We mourn a pioneer, colleague, mentor and friend.— Bertrand Mey

                                                            【訃報】プログラミング言語「Pascal」の開発者ニクラウス・ヴィルト氏が89歳で死去、ソフトウェア設計のパイオニアとして複数のプログラミング言語を考案し1984年にチューリング賞を受賞 - ライブドアニュース
                                                          • 『ふつうのLinuxプログラミング』読書メモ

                                                            システムコールの問題点 シンプルに遅い 特定のバイト単位でしか入出力できない stdio システムコールの問題点を解決してくれるのがコイツ。 では、どのように解決してるのか?という話。 バッファ システムコールで読み書きするデータを一時的に保存しておく場所のこと。 stdioはバッファに対して読み書きの指示を出すことで、汎用性を上げている。 読み 読みの場合は、ディスクからバッファに塊で書き出したデータを、「1バイトとか10バイトとかの単位でちょーだい」と命令することで読み込める。 システムコールも別に1バイト単位で読めるけど、遅いという問題があるので現実的じゃない。 書き 書き込みの場合、バッファに書き込んでから一定の単位でシステムコールのwrite()を呼ぶ。 一定の単位というのがミソで、これはストリームの向こうにターミナル(端末)がある場合は改行単位になるだろうし、ファイルがある場合

                                                              『ふつうのLinuxプログラミング』読書メモ
                                                            • MZ-700向けのコマンド入力式アドベンチャー「ロポコ」,MZ-80K版が本日「BOOTH」で配信開始

                                                              MZ-700向けのコマンド入力式アドベンチャー「ロポコ」,MZ-80K版が本日「BOOTH」で配信開始 編集部:松本隆一 個人ゲーム開発者のTookato氏は本日(2024年1月7日),アドベンチャーゲーム「ロポコ」の配信をクリエイターズマーケット「BOOTH」で開始したと発表した。対応プラットフォームはMZ-80Kで,ダウンロード価格は1000円(税込)。BOOTHの販売ページには体験版が用意されているほか,後日,カセットテープ版の販売も予定しているとのことだ。 BOOTH「ロポコ」販売ページ 2023年1月22日に掲載した記事でお伝えしたように,「ロポコ」はMZ‐700およびMZ‐1500向けに開発されたタイトルで,MZ-700が日本のコンピュータ市場を支配した世界を舞台に,管理AIが暴走した研究所から脱出するため,Z80を搭載したロボット「ロポコ」が活躍するというコマンド入力式のアド

                                                                MZ-700向けのコマンド入力式アドベンチャー「ロポコ」,MZ-80K版が本日「BOOTH」で配信開始
                                                              • 入門 eBPF

                                                                eBPFは、ネットワーク、セキュリティ、オブザーバビリティなど、さまざまなインフラ関連の分野のプラットフォームとして利用が広がりつつある、近年最も注目されている技術の1つです。本書ではカーネルの機能を拡張する方法として注目度の高いeBPFについて、どんな技術であるか、何ができるかを概観することができます。基本的なeBPFプログラムの書き方を紹介するとともに、仕組みも理解できるようになっています。 訳者まえがき まえがき 1章 eBPFとは何か? なぜ、重要なのか? 1.1 eBPFのルーツ:Berkeley Packet Filter 1.2 BPFからeBPFへ 1.3 本番環境に向けてのeBPFの進化 1.4 名前付けは難しい 1.5 Linuxカーネル 1.6 カーネルへの新機能の追加 1.7 カーネルモジュール 1.8 eBPFプログラムの動的ロード 1.9 高性能なeBPFプログ

                                                                  入門 eBPF
                                                                • WasmGCを試す

                                                                  去る2023年は、WebAssemblyにGCを入れる仕様、WasmGCがChromeとFirefoxに実装された記念すべき年でした。WasmGCはコンパイラ作成者の長年の悲願であり(筆者の脳内調べ)、GCに依存する言語をWebAssembly上で動かすことを容易にします。2024年は、WasmGCがより広い環境で使えるようになることでしょう。まさにWasmGC元年と言っても過言ではありません(元年はなんぼあってもいいですからね)。 この記事は、2024年1月時点でのWasmGCの現状を、コンパイラ作成者の観点から調査したものです。筆者自身はWebAssemblyについては素人で、調べながら書いています。 概要と仕様 WasmGCの概要はChrome/V8界隈の人が書いた次の記事が参考になるでしょう: A new way to bring garbage collected program

                                                                    WasmGCを試す
                                                                  • LLVMやるならgodbolt - Software Transactional Memo

                                                                    この記事は pyspa advent calendar 2023の11日目の記事です。 godboltをご存知だろうか。 godbolt.org ブラウザから誰でもアクセスできる無料サービスでコンパイラの挙動について学ぶ事ができる。 例えば簡単に「渡された数Nに対し1+2+....+Nを返す関数sum」を例にすると こんな感じにコンパイル結果のアセンブリを表示してくれる。 アセンブリはマウスカーソルを置くとそれが元のコードのどの場所に対応したものなのかを逐一ハイライト表示してくれる。この機能を実現するために必要な労力は並では無いと思うが詳細はわからない。アセンブリ側も複数色あるのは元のコードの1行が同じ背景色のブロックになった事を表している。 これがすごいのはコンパイラの選択肢の豊富さである。gccはもちろんのことclang, zig c++, msvc, nvc++(なにそれ?), el

                                                                      LLVMやるならgodbolt - Software Transactional Memo
                                                                    • “プログラミング言語なんてどれも同じ”論者もうなずく「言語の違い一覧」

                                                                      関連キーワード アプリケーション開発 | 開発プロセス | プログラマー | プログラミング ソフトウェア開発にはさまざまな手法が存在し、その違いが議論の対象になることがある。議論を必要以上に複雑にしかねないのが、誤解に基づく“神話”の存在だ。ソフトウェア開発業界にある10個の神話のうち、7つ目を取り上げる。今回はエンジニアが日常的に使う、プログラミング言語に関する神話だ。 神話7「どのプログラミング言語も同じだ」 併せて読みたいお薦め記事 連載:ソフトウェア開発にまつわる10個の神話 第1回:エンジニアをいくら増やしても「納期遅れ」を回避できないのはなぜ? 第2回:「OSSはソース丸見えだから危険」が実は“間違い”なのはなぜ? 第3回:「プログラミングはつまらない」説を論破する“納得の根拠”はこれだ エンジニアのためのノウハウ 40歳を過ぎたエンジニアが面接で“年齢”を効果的にアピールす

                                                                        “プログラミング言語なんてどれも同じ”論者もうなずく「言語の違い一覧」
                                                                      • Windows 11のバージョン24H2では一部のPCがただの「サポート対象外」から「起動不可」に変わっていることが明らかに

                                                                        Microsoftの開発するPC向けOS「Windows 11」にはWindows 10よりも高いシステム要件があります。しかし、このシステム要件さえクリアすれば、古いハードウェアであってもWindows 11を実行可能です。実際、サポート対象外であってもWindows 11を起動することは可能だったのですが、Windows 11の次期最新安定板となるバージョン24H2では、一部の古いPCが「サポート対象外」から「起動不可」に変わっていることが明らかになり話題となっています。 Windows 11 24H2 goes from “unsupported” to “unbootable” on some older PCs | Ars Technica https://arstechnica.com/gadgets/2024/02/windows-11-24h2-goes-from-unsu

                                                                          Windows 11のバージョン24H2では一部のPCがただの「サポート対象外」から「起動不可」に変わっていることが明らかに
                                                                        • メモリとはなんぞや ~ Node.js のメモリ管理を知る ~|ラキール公式|株式会社ラキールのエンジニアたちによるTECH BLOG

                                                                          こんにちは。株式会社ラキールで DX 基盤開発を行う LaKeel DX Engine Group に所属する星と申します。 普段は LaKeel Synergy Logic という自社 API Gateway を開発しています。 社内ウェビナー(ウェブセミナー)で発表した Node.js のメモリ管理について、その内容の一部を公開します。 メモリメモリとはメモリとはメモリ(RAM, Random Access Memory)とはコンピュータのデータを一時的に記録するためのパーツで、日本語では主記憶装置と言われたりします。 メモリは主に作業机の広さなどに例えられたりします。 (机が広いと様々な道具を一度に使える≒ブラウザのタブをいっぱい開きながら画像編集がサクサク実行できる) プログラミングの文脈でいえば、メモリは実行するプログラムそのものやデータ(変数など)を保持する場所になります。 メ

                                                                            メモリとはなんぞや ~ Node.js のメモリ管理を知る ~|ラキール公式|株式会社ラキールのエンジニアたちによるTECH BLOG
                                                                          • eBPFのリバースエンジニアリング入門 | メルカリエンジニアリング

                                                                            目次 はじめに eBPFとは? eBPFのCTFチャレンジ Flagの獲得 おわりに はじめに 初めまして、Threat Detection and ResponseチームのChihiroです。昨年の7月に株式会社メルカリに入社して、主にクラウド向けのDetection Engineeringや、インシデントレスポンスを担当しています。また、メルカリで自社開発しているSOAR(Secuirty Orchestration Automation and Response)プラットフォームの開発や運用も担当しています。 メルカリには、部活を支援する社内制度が存在し、様々な部活があります。その部活の一環として、私は最近、CTF(Capture The Flag)と呼ばれるサイバーセキュリティの競技を楽しんでいます。そこで今回は、参加したCTFの中で面白かったeBPFに関するリバースエンジニアリン

                                                                              eBPFのリバースエンジニアリング入門 | メルカリエンジニアリング
                                                                            • Scala Nativeがいつのまにかシングルバイナリを吐けるようになっていた - Lambdaカクテル

                                                                              ScalaをネイティブコンパイルしてJVM無しで実行ファイルとして動かせるようにする仕組みであるScala Nativeが、いつのまにかシングルバイナリを出力できるようになっていた。これにより、Goと同じように1つのバイナリさえコピーすればScalaを動かせる環境が整ったことになる。 シングルバイナリ シングルバイナリとは、実行に必要なライブラリが静的にリンクされ、単体のバイナリとして完結した実行ファイルの通称*1である。より正確な表現として、静的リンクされた実行ファイルとか、静的実行ファイル(statically linked executable, static executable)というのがストレートだろう。この意味におけるシングルバイナリの対義語は動的リンクされた実行ファイル、動的実行ファイルである。英語だとdynamic executableだ。静的リンクされた実行ファイルは必

                                                                                Scala Nativeがいつのまにかシングルバイナリを吐けるようになっていた - Lambdaカクテル
                                                                              • 年代と問題解決で切り取る、教養としてのプログラミング言語全史

                                                                                目次[非表示] 1.まえがき 1.1.キャンプ道具好きなんだよね。原理を知れるような気がして 1.2.この記事で伝えたいこと 2.戦後のプログラミング言語年表 2.1.スクリプト言語以前 2.1.1.19世紀末:人口増加のアメリカ、パンチホールで国勢調査 2.1.2.1940年代初頭:イギリスのエニグマ暗号解読とアメリカの爆弾軌道計算 2.1.3.1946年:第二次世界大戦終結後、ENIACの登場とトランジスタによる小型化 2.1.4.1940年代後半:製品ごとに乱立するアセンブリ言語たち 2.1.5.1950年:東西冷戦開始、核兵器開発競争から始まる大プログラミング時代 2.1.6.1954年:コンピュータと話したいから、高水準言語「FORTRAN」登場 2.1.7.1958年:もっと書きやすい構文で。ALGOL58、構造化プログラミング誕生 2.1.8.1958年:LISP、カッコで囲

                                                                                  年代と問題解決で切り取る、教養としてのプログラミング言語全史
                                                                                • 【MLIR】GPU上で走る自作言語のコンパイラを作っている話

                                                                                  この記事は、KCS アドベントカレンダー 23 日目の記事です。 22 日目・24 日目 GPU 上で走る自作言語のコンパイラ こんにちは、lemolatoon です。 最近は、夏に自作 OS ゼミでセキュキャンに参加したりして、また低レイヤへの気持ちを高めたりしていました。 自作 OS も一段落ついた頃、MLIRというものを知り、何やら面白そうだぞということで色々調べて手を動かしたりしていたのですが、ある程度 MLIR の利点を生かしたいい感じのものができつつあるので紹介したいと思います。 まず最初に自作言語を作る手順を、LLVM IR に変換するところまで説明します。 その後、GPU 上で走らせる部分について書きます。 実装は、すべて以下のリポジトリにあります。LLVM IR への変換は少なくともch6ブランチに、GPU 上で走らせる部分の実装はlower-to-gpuブランチにありま

                                                                                    【MLIR】GPU上で走る自作言語のコンパイラを作っている話