並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 591件

新着順 人気順

浮動小数点数の検索結果1 - 40 件 / 591件

  • できるだけ嘘を書かずに計算量やオーダーの説明をしようとした記事 - えびちゃんの日記

    計算量についてのお話です。対象は、プログラミング経験はあるが計算量のことを知らない初心者から、計算量のことを知っているつもりになっている中級者くらいです。 数式を見たくない人にとっては読むのが大変かもですが、深呼吸しつつ落ちついて読んでくれるとうれしいです。 それから、この記事が自分には合わないな〜と思ったときは、(別の記事を Qiita とかで検索するよりも)この記事の一番下の 参考文献 にある本を読むことをおすすめします。Amazon の試し読みで無料で読めます*1。 TL; DR 関数の増加度合いのことをオーダーと呼ぶよ 計算量は、入力サイズ(など)を受け取ってアルゴリズムの計算回数(など)を返す関数だよ その関数のオーダーについての議論がよく行われるよ オーダーを上から抑えるときは \(O\)、下から抑えるときは \(\Omega\) を使うよ オーダーを上下両方から抑えたいときは

      できるだけ嘘を書かずに計算量やオーダーの説明をしようとした記事 - えびちゃんの日記
    • 現代の僕「コンピュータが生まれた歴史知りたい」 - Qiita

      TL;DR コンピュータの歴史も何も知らなかった私が、「ありがとう、先人たちよ」と言えるぐらいまでコンピュータの歴史を調べたので共有したいと思います。 最初の動機 「コンピュータってどうやって動いてるんだろう」 あなたは、この疑問に自信を持って答えられますか? そして、仮にコンピュータを知らない人類がいたとして、「コンピュータとは何か」を説明できますか? 私はできませんでした。 もちろん、コンピュータを使うことはできます。 こうして、キーボードをカタカタを打つと、見慣れた文字となってディスプレイに映すことが出来ます。 しかし、「使えること」と、「それが動く原理を説明すること」 は途方もなく大きな壁で隔てられています。 この記事では、コンピュータが動く原理を、その歴史をたどることで探っていきます。 コンピュータの歴史をまとめつつ、 「コンピュータってどうやって動くの?」 に答えられるようなも

        現代の僕「コンピュータが生まれた歴史知りたい」 - Qiita
      • 10 年前に JavaScript で Flash Player を開発し買収された話

        この記事は、JavaScript で Flash Player の実現を頑張った(もしくは現在進行系で頑張っている)人たちの集う Flash Advent Calendar 2020 に参加しております。 私は過去に自分が設立した会社で ExGame という HTML5 実装の Flash Player(正確には Flash Runtime Engine)を開発し、その会社ごと DeNA に買収(M&A)されました。あまり出来ない体験であるのは間違いないので、Flash が終了を迎える今、改めて振り返ってみようと思います。 Flash Player の開発 今から 10 年前の 2010 年、ちょうど iPhone が普及し始めてきてガラケーのシェアが 8 割から 6 割くらいに落ちようとしていた時期に、私は Flash Player を JavaScript で実装していました。以前この

        • とほほのGo言語入門 - とほほのWWW入門

          Google が開発したプログラミング言語です。「Go言語」や「Golang」と表記されます。 UNIX、B言語(C言語の元)、UTF-8の開発者ケン・トンプソンや、UNIX、Plan 9、UTF-8の開発者ロブ・パイクによって設計されました。 静的型付け、メモリ安全性、ガベージコレクションを備えるコンパイル言語です。 シンプル、高速、メモリ効率が良い、メモリ破壊が無い、並行処理が得意などの特徴を備えています。 メモリ破壊が無く、並行処理を得意とする、進化したC言語という側面があります。 Linux、Mac OS X、Windows、Android、iOS で動作します。 おおよそ半年に一度バージョンアップを行っているようです。このページは Go 1.14 をターゲットに記述しています。 Go 1.18 2022年3月15日 速度改善、ジェネリクス、ファジングテストツール、ワークスペースモ

          • Apple・AMD・テスラ・Intelを渡り歩いた天才エンジニアのジム・ケラー氏へのインタビューが公開中、Intelで一体何をしていたのか?

            AMDのAthlonやZenマイクロアーキテクチャ、Apple A4など数々のチップ開発に携わり、「天才エンジニア」と高い評価を受けるジム・ケラー氏は2021年1月にIntelを突如退職し、記事作成時点ではAIチップのスタートアップであるTenstorrentの社長兼最高技術責任者を務めています。そんなケラー氏に、技術系ニュースサイトのAnandTechがインタビューを行っています。 An AnandTech Interview with Jim Keller: 'The Laziest Person at Tesla' https://www.anandtech.com/show/16762/an-anandtech-interview-with-jim-keller-laziest-person-at-tesla なお、ジム・ケラー氏の経歴は以下の通り。 入社退職年企業肩書き関与した製

              Apple・AMD・テスラ・Intelを渡り歩いた天才エンジニアのジム・ケラー氏へのインタビューが公開中、Intelで一体何をしていたのか?
            • なぜGoogle Meetの背景ぼかしが最強なのか(一般公開版)

              はじめに 最近ついに、Google Meet に背景ぼかし機能が利用可能になりましたよね。日本語だとインプレスのケータイ Watchの記事などで紹介されてます。確か 2020 年 9 月末前後で順次リリースされていたと記憶しています。 このときは「背景ぼかし」の機能しかなかったのですが、最近(私が気づいたのは 2020/10/30)更にアップデートされました。アップデートで「背景差し替え」機能が付いて、ぼかし機能もぼかし効果が強弱 2 つから選べるようになりました。まだ日本語のニュース記事は見てないですが、Googleによるアップデートの発表はちゃんとされています。 そして、Google AI Blog でBackground Features in Google Meet, Powered by Web MLという記事が公開され、実装についての解説がされました。 この記事はその解説記事を

                なぜGoogle Meetの背景ぼかしが最強なのか(一般公開版)
              • 退屈なことはPythonにやらせよう 第2版

                一歩先行くハイパフォーマンスなビジネスパーソンからの圧倒的な支持を獲得し、自作RPA本の草分けとして大ヒットしたベストセラー書の改訂版。劇的な「業務効率化」「コスト削減」「生産性向上」を達成するには、単純な繰り返し作業の自動化は必須です。本書ではWordやExcel、PDF文書の一括処理、Webサイトからのダウンロード、メールやSMSの送受信、画像処理、GUI操作といった日常業務でよく直面する面倒で退屈な作業を、Pythonと豊富なモジュールを使って自動化します。今回の改訂では、GmailやGoogleスプレッドシートの操作、Pythonと各種モジュールの最新版への対応、演習等を増補しています。日本語版では、PyInstallerによるEXEファイルの作成方法を巻末付録として収録しました。 訳者まえがき まえがき 第I部 Pythonプログラミングの基礎 1章 Pythonの基本 1.1 

                  退屈なことはPythonにやらせよう 第2版
                • やはり予想を超えてこなかったGPT-4と、GPUの未来、ホビイストへの手紙

                  やはり予想を超えてこなかったGPT-4と、GPUの未来、ホビイストへの手紙 2023.03.16 Updated by Ryo Shimizu on March 16, 2023, 08:00 am JST 3月14日の早朝、GPT-4が公開され、筆者は早速試した。 その後、開けて3月15日の早朝、APIも部分的に解放され、筆者はそれも試した。 その上で、先週書いた記事の内容についての確信が深まった。 やはり、GPT-4は期待を超えてはこなかった。 GPT-4は、ChatGPT Plusに入会すると誰でもすぐに使うことができる。APIだけは招待制だが、それも筆者と同じくらいのタイミングでアンロックされた方も少なくないのではないか。 100倍規模のパラメータがあっても、アプローチには限界があるのである。 また、ChatGPTが注目を集めたことで、これまで下火になっていた他の大規模言語モデル(

                    やはり予想を超えてこなかったGPT-4と、GPUの未来、ホビイストへの手紙
                  • 「0.1+0.2≠0.3」を説明できないエンジニアがいるらしい - Qiita

                    この記事はNuco Advent Calendar 2023の4日目の記事です。 弊社では、経験の有無を問わず、社員やインターン生の採用を行っています。 興味のある方はこちらをご覧ください。 はじめに 後輩に 「なぜ0.1+0.2≠0.3になるんですか?」 と聞かれて答えられますか? コンピュータの計算では「0.1+0.2」は「0.3」になりません。 これを理解していないと予期せぬ重大なバグを生み出す可能性があります。 分からない方、どうぞ安心してください。 この記事を読んだ全員が「0.1+0.2≠0.3」を理解できるように分かりやすく説明していきます。 コンピュータが計算を間違う理由 まず、そもそも「0.1+0.2=0.3」で正しい!「0.1+0.2≠0.3」なんてあり得ない! という方のために、プログラミング言語のフォーマット処理を経ない、コンピュータの計算結果を見てみます。

                      「0.1+0.2≠0.3」を説明できないエンジニアがいるらしい - Qiita
                    • jqのGo実装 gojq を作りました! ― スタックマシン型インタープリタによるイテレータセマンティクスの実装 - プログラムモグモグ

                      jqはとても便利なコマンドです。 JSONを返すAPIを実装するときや、SaaSのAPIから特定の情報を抜き出してシェル変数に代入するときなど、web開発や運用には欠かせないツールとなっています。 しかし、私にとってjqのクエリを一発で書くのは容易ではなく、思い通りの出力が得られないことがよくありました。 難しいエラーメッセージに悩まされて、jqで書くのを諦めて別の言語で書き直すこともありました。 jqの十八番と思える場面で使いこなせないのは、なかなか悔しいものがあります。 ツールを使うのが難しいなら、同じものを作ってしまえばよいのです。 jqの全ての機能を実装する jqを言語としてきちんと書けるようになる jqを完全に理解する jqの全ての機能を自分で実装してしまえば、jqがどういうものか、クエリがどのように処理されるのか、詳しくなれるはずです。 jqを得意な言語と言えるようになって、ク

                        jqのGo実装 gojq を作りました! ― スタックマシン型インタープリタによるイテレータセマンティクスの実装 - プログラムモグモグ
                      • 高速逆平方根(fast inverse square root)のアルゴリズム解説 - 滴了庵日録

                        高速逆平方根とは? C言語のコード 検証 アルゴリズムの要点 [1] 逆平方根の計算を対数・指数の計算に置き換える [2] 浮動小数点型の内部表現を利用した対数・指数の近似計算 [2.1] 対数の近似 [2.2] σの最適値 [2.3] 整数型での解釈 [2.4] 逆平方根の計算とマジックナンバー0x5F3759DF [3] ニュートン法による収束で精度アップ 感想 高速逆平方根とは? 高速逆平方根(fast inverse square root)とは、平方根の逆数 を高速に計算するアルゴリズムです。平方根の逆数は逆平方根とも呼ばれます。逆平方根はベクトルの正規化などに用いられるので、これを高速に計算できるアルゴリズムには大きなご利益があります。 参照: Fast inverse square root - Wikipedia C言語のコード 高速逆平方根の関数を示します。0x5F375

                          高速逆平方根(fast inverse square root)のアルゴリズム解説 - 滴了庵日録
                        • ブラウザの仕組み  |  Articles  |  web.dev

                          序文 WebKit と Gecko の内部オペレーションに関するこの包括的な入門情報は、イスラエルのデベロッパー Tali Garsiel 氏による多くの研究の成果です。数年にわたり、ブラウザ内部に関するすべての公開データを確認し、ウェブブラウザのソースコードを読むことに多くの時間を費やしました。彼女は次のように書いています。 ウェブ デベロッパーは、ブラウザ操作の内部構造を学ぶことで、より的確な意思決定を行い、開発のベスト プラクティスの背後にある理由を知ることができます。これはかなり長いドキュメントですが、時間をかけてじっくり読むことをおすすめします。やったら嬉しいよ。 Chrome デベロッパー リレーションズ、Paul Irish はじめに ウェブブラウザは、最も広く使用されているソフトウェアです。この入門編では その仕組みを解説しますアドレスバーに「google.com」と入力し

                          • 「YAMLの本来の使い方」を仕様から読み取ってみる | Wantedly Engineer Blog

                            YAMLは「便利なJSON」として使われることが多い一方、その複雑性から落とし穴も多く、しばしば批判の対象になります。 なぜYAMLはそこまで複雑なのでしょうか? その背景のひとつは、本来のYAMLがJSONとは大きく異なる目的意識で作られているからです。 本稿ではYAML specに従う形でYAMLのコンセプトを解説することを目指します。残念ながら、ここに書かれているYAMLの思想は実際には実用されているとは言い難いですし、これらの背景を理解しても「YAMLは複雑だ」という事実がひっくり返ることはないでしょう。それでも、YAMLの複雑さの源泉を体系的に理解し、YAMLとほどほどの距離感で付き合う助けにはなるのではないかと思います。 この記事ではこういう話をしますYAMLはJSONとは独立に、異なる目的で生まれた野心的な仕様であるアンカーやタグなどの強力な構文は、これらの目的を満たすために

                              「YAMLの本来の使い方」を仕様から読み取ってみる | Wantedly Engineer Blog
                            • SQLアンチパターン簡単まとめ

                              「SQLアンチパターン」について、自分の勉強がてら内容を簡単にまとめました。 「とりあえずSQLは触れてWebアプリが作れる」「シンプルなアプリを実務で作ったことがある」くらいの人が読むととても勉強になると思います。 また、「現場での良くない設計」が詳細に言語化されているので、経験豊富な人でも新たな発見があると思います。 詳しく知りたい方は是非本を買って実際に読んでみて欲しいです。 第一章 ジェイウォーク パターン 1カラムにコンマ区切りで値を入れて複数の紐付きを表現しようとする なぜダメか 検索しづらい 文字列カラムの文字数制限という暗黙の制約を受ける バリデーションかけられない 解決策 交差テーブルの作成 第二章 ナイーブツリー パターン 木構造を表現するとき、常に親のみに依存する(parent_idだけ持ってしまう) 隣接リスト なぜダメか 階層を深く掘ろうとするとそのぶんSQLをか

                                SQLアンチパターン簡単まとめ
                              • 6x6リバーシの神 - まめめも

                                絶対に勝てない6x6リバーシを作りました。あなたは黒番、AIが白番です。 絶対に勝てない6x6リバーシを作りました! ぜひ挑戦してみてくださいhttps://t.co/Ul5n3q9jMp— Yusuke Endoh (@mametter) December 30, 2021 これは何? 6x6の盤面のリバーシは後手必勝 *1 であることが知られています。 このAIは白番(後手)で完璧にプレイします。つまり黒番のあなたは絶対に勝てません。無力感を楽しんでください。 技術的な話 このAIはWebAssemblyになっているので、全部あなたのブラウザの上で動いてます。真のサーバーレスです。 AIのソースコードはRustで書きました。わりと堅実なゲーム木探索になってます。UIは普通にTypeScriptとthree.jsで実装しました。 github.com 作った順に説明します。 盤面の表現

                                  6x6リバーシの神 - まめめも
                                • JavaScript で CPU が Intel かどうかを判定する(ついでに JIT を検知する)

                                  先日、次のような Tweet を見かけました TIL I discovered that TensorFlow.js uses an interesting trick to sniff your CPU architecture in WebAssembly. pic.twitter.com/LVyywIM48I — Robert Knight (@robknight_) January 4, 2023 面白かったので、なぜこうなるのかの解説と、ついでにこのテクニックを使った JIT 検知方法などについて紹介します。 JavaScript における低レイヤーの扱い JavaScript においては、挙動が比較的しっかりと仕様に定められているために、環境による振る舞いの違いはあまり発生しません。しかし、低レイヤーに降りるほど振る舞いは実装依存になり、環境差が発生する余地が出てきます。 一番

                                  • 浮動小数点型の算術とお近づきになりたい人向けの記事 - えびちゃんの日記

                                    お近づきになりたい人向けシリーズです。 いろいろなトピックを詰め込みましたが、「これら全部を知らないといけない」のようなつもりではなく、いろいろなことを知るきっかけになったらいいなという気持ちなので、あまり身構えずにちょっとずつ読んでもらえたらうれしい気がします。 まえがき 予備知識 規格 用語 精度という語について 記法 表現について 有限値の表現について エンコードについて 丸めについて よくある誤差や勘違いの例 0.1 = 1 / 10? 0.1 + 0.2 = 0.3? 整数の誤差 Rump’s Example 基本的な誤差評価 用語に関して 実数の丸め 有理数の丸め 基本演算の丸め 差について 複数回の演算 補題たち 桁落ちについて Re: Rump’s example 融合積和 数学関数に関する式の計算 誤差の削減に関して 総和計算 数学関数の精度について 比較演算について 雑

                                      浮動小数点型の算術とお近づきになりたい人向けの記事 - えびちゃんの日記
                                    • jq 1.7をリリースしました - プログラムモグモグ

                                      jqがjqlang organizationに移譲され、数名の新たなメンテナーを入れた開発体制に移行してから三か月が経ちました。 私にとってこの三か月はとても濃厚で、これまでのOSS活動の中でも特に大変な期間でした。 itchyny.hatenablog.com github.com リポジトリの管理権限をいただいてからまずやったことは、既存のissueやPRの整理でした。 500ほどのissueとPRに目を通し、ラベルをつけて、解決済みのものを閉じて、直近で入れたいものを独断でリリースマイルストーンに入れていきました。 この整理がついた頃には他のメンテナの活動も活発になり、私の作ったマイルストーンのissueやPRを確認してくれました。 そして先日、ようやく1.7をリリースしました。 1.6から実に五年弱、一時は開発が完全に止まってしまいプロジェクトの存続を危ぶむ声も上がるような状況から

                                        jq 1.7をリリースしました - プログラムモグモグ
                                      • 英文を一文ずつに分割してGoogle翻訳へ投げるAlfred Workflowを作った - ぽよメモ

                                        これまでに作ったAlfred Workflow poyo.hatenablog.jp poyo.hatenablog.jp これまでに作ったAlfred Workflow これは何? 論文PDFの問題 環境 Google Translate Formatter 準備 使い方 注意点 一文ごとに分解する機能は単なる正規表現マッチとIFの羅列 ピリオドが無い場合は文字列分解できない. 意図的に混入されているハイフンを消してしまう たまにうまく動かない まとめ これは何? 一文ごとに分解して翻訳にかけることで見通しが良くなり,論文を読む速度が上がるWorkflow. サンプルとして使用したのは,機械翻訳ネットワークTransformerを提案した論文*1 論文PDFの問題 全てがそうではありませんが,論文PDFはたまにそのままコピーすると「見かけ上の改行位置がそのまま反映された文章」としてコピー

                                          英文を一文ずつに分割してGoogle翻訳へ投げるAlfred Workflowを作った - ぽよメモ
                                        • 分散データシステム入門の決定版『データ指向アプリケーションデザイン』をたった30分で学んでみた #DataEngineeringStudy | DevelopersIO

                                          基調講演「30分でわかるデータ指向アプリケーションデザイン」 ・ スピーカー 斉藤 太郎氏  Twitter:@taroleo / Github:@xerial Principal Software Engineer , Treasure Data 東京大学理学部情報科学科卒。情報理工学 Ph.D。データベース、大規模ゲノムデータ処理の研究に従事。その後、スタートアップであるTreasure Dataに加わり、アメリカ、シリコンバレーを拠点に活動中。日本データベース学会上林奨励賞受賞。OSSを中心にプログラミングやデータ処理を簡単にするためのプロダクトを作成している。 「30分でわかるデータ指向アプリケーションデザイン」最新の論文にも触れながら、分散データシステムの世界の魅力を伝えていきます。後半、@tagomoris https://t.co/TQ2TnsFIOT… — Taro L.

                                            分散データシステム入門の決定版『データ指向アプリケーションデザイン』をたった30分で学んでみた #DataEngineeringStudy | DevelopersIO
                                          • 0.1は浮動小数点数で正確に表せないのに、printしたときに0.1と表示されるのはなぜか - Qiita

                                            当たり前のことに感じますが、0.1は浮動小数点数(IEEE 754)では正確に表現できません。 なのにprintをしたときに0.1と表示されるのは不思議です。 このことについて分かったことを書いておきます。 環境 この記事ではPython 3.7を使用しています。 【前提】浮動小数点数 この記事で、以降"浮動小数点数"という場合は、"IEEE 754 倍精度"のことを指します。 浮動小数点数のフォーマットは、数を以下の形式に変換し、sign、exp、fracを順に並べたものです。

                                              0.1は浮動小数点数で正確に表せないのに、printしたときに0.1と表示されるのはなぜか - Qiita
                                            • パイプライン指向JSON処理プログラミング言語 jq - 檜山正幸のキマイラ飼育記 (はてなBlog)

                                              jq(https://stedolan.github.io/jq/)の紹介では、「JSON処理のワンライナー〈一行野郎〉としてめちゃくちゃ便利!」とアピールするのが定番です。もちろんそれは本当で、「めちゃくちゃ便利!」です。が、実は jq は、ワンライナー記述にとどまらない、かなり本格的なプログラミング言語です。 JSON処理のためのDSL〈Domain Specific Language | 領域特化言語〉なので、汎用言語ではありません。しかし、汎用言語が備えている言語機能の一部(関数定義、モジュールシステムなど)を jq も持っています。また jq は、独特で楽しいプログラミング・パラダイム -- “パイプライン指向”に基づいて設計されています。 この記事では、ワンライナーを超えた jq の使い方と、プログラミング言語としての jq の特徴を紹介します。長い記事になってしまったので、一

                                                パイプライン指向JSON処理プログラミング言語 jq - 檜山正幸のキマイラ飼育記 (はてなBlog)
                                              • 2022年上半期に読んだ技術書

                                                2022年上半期はとある都合もあってかなりの数の技術書を読んだので、その中でも良かったものとかの感想をまとめておきます。 2022年上半期で一番良かった技術書 A Philosophy of Software Design ソフトウェア設計の目的は複雑さを軽減することであるとして、その複雑さの定義と軽減する手法が書かれています。最近まで2年ほどフリーランスで色んな会社の開発に参加して、DDD的な設計やクリーンアーキテクチャを採用している現場が多かったもののそれらが逆に開発効率を低くしているのではという感想を持っていました。そこでこの本を読み、それらの目的であるはずの「複雑さを軽減する」という視点が抜けていたのかなと気付かされました。コードを読み書きしていて複雑さを感じなければモノリスでもMVCでもいいケースは多いと思います。複雑さを軽減する手法を解説する章では、やりすぎると逆効果であるとは

                                                  2022年上半期に読んだ技術書
                                                • WebAssembly入門 ─ Webフロントエンドの現実的なユースケースを知り、Wasm製アプリケーションを体験してみよう!|ハイクラス転職・求人情報サイト AMBI(アンビ)

                                                  ハイクラス求人TOPIT記事一覧WebAssembly入門 ─ Webフロントエンドの現実的なユースケースを知り、Wasm製アプリケーションを体験してみよう! WebAssembly入門 ─ Webフロントエンドの現実的なユースケースを知り、Wasm製アプリケーションを体験してみよう! WebAssembly(Wasm)は、ブラウザー上で直接動くプログラミング言語として、JavaScriptを置き換える期待が寄せられますが、実際にWasmが果たすべき役割や適したユースケースとはどういったものでしょうか? Wasmの動作を体験するチュートリアルとあわせて、山本悠滋(igrep)さんが解説します。 WebAssembly(以下、略称の「Wasm」と呼びます。「キャズム」や「~イズム」などからの類推なのか「ワズム」と発音するようです)とは、ブラウザーをはじめとするさまざまな環境で動作する、仮想マ

                                                    WebAssembly入門 ─ Webフロントエンドの現実的なユースケースを知り、Wasm製アプリケーションを体験してみよう!|ハイクラス転職・求人情報サイト AMBI(アンビ)
                                                  • そのシャッフル、本当にシャッフルですか?何気ない落とし穴にハマった話 - BASEプロダクトチームブログ

                                                    こんにちは、BASEのフロントエンドチームでエンジニアリングマネージャーをやっている松原(@simezi9)です。 私は最近ではマネージャーとしてコードを書くことよりもチームの編成や採用などをメインに業務を行っているのですが、 そんな中でチラっと書いたコードで見事に落とし穴にハマって失敗をしたのでその共有記事です まえがき BASEのフロントエンドチームは現在15名ほど(うち業務委託5名)で運営されています。 この人数は今後もどんどん増えていく予定なのですが、目下全社的にリモートワークになっている事情も手伝ってメンバー同士の関係性が希薄になってしまう懸念を持っていました。 BASEの中では常に複数のプロジェクトが走っているのですが、それぞれのプロジェクトにフロントエンドエンジニアは2〜3名ずつ配置されています。 そんななかでアサインされた人同士がフロントエンドエンジニア同士であるにも関わら

                                                      そのシャッフル、本当にシャッフルですか?何気ない落とし穴にハマった話 - BASEプロダクトチームブログ
                                                    • 速報:話題の 1ビットLLMとは何か?|寺田英雄(㈱オープンストリームCTO)

                                                      2024-02-27にarXiv公開され,昨日(2024-02-28)あたりから日本のAI・LLM界隈でも大きな話題になっている、マイクロソフトの研究チームが発表した 1ビットLLMであるが、これは、かつてB-DCGAN(https://link.springer.com/chapter/10.1007/978-3-030-36708-4_5; arXiv:https://arxiv.org/abs/1803.10930 )という「1ビットGANのFPGA実装」を研究していた私としては非常に興味をそそられる内容なので、論文を読んでみた。今回は速報として、その内容のポイントを概説したい。 論文情報 Ma, S. et al. (2024) ‘The Era of 1-bit LLMs: All Large Language Models are in 1.58 Bits’, arXiv [c

                                                        速報:話題の 1ビットLLMとは何か?|寺田英雄(㈱オープンストリームCTO)
                                                      • SQL50本ノックをSQLite3 Fiddleで試す - Gマイナー志向

                                                        Software Design「データベース速攻入門」に「SQL50本ノック」が掲載されました - LIVESENSE ENGINEER BLOG 最近では、postgres-wasmなど、WebブラウザでDBを動かせるようになってきており、もう少しすれば、WebAssemblyを使って、ブラウザですぐにノックを始められるようになるかもしれません。もしも、また何年か後に記事を更新する機会があれば、試してみたいですね。 Web上からすぐに試せるpostgres-wasmはPagilaのデータを持っていくことが現時点で出来なさそうだったものの、SQLite3 WebAssemblyはSQLiteのデータを持っていけました。SQL50本ノックを気軽に試せそうです。 手順1 sakila-sqlite3をダウンロード まずgithubからsakila-sqlite3をダウンロードします。 gith

                                                          SQL50本ノックをSQLite3 Fiddleで試す - Gマイナー志向
                                                        • 浮動小数点数オタクが AtCoder Beginner Contest 169 のC問題をガチで解説してみる - Qiita

                                                          どうも、浮動小数点数オタクのmod_poppoです。 昨日開催された ABC169 の C 問題が浮動小数点数の罠な問題だったらしいので、どこが罠なのか、そしてどうすれば罠を回避できるのかを解説してみます。 また、典型的な誤答に対しては、それを落とすためのテストケースも用意しました。 問題文(引用) まず最初に問題文を引用しておきます。 AtCoder Beginner Contest 169 | C - Multiplication 3 問題文 $A\times B$ の小数点以下を切り捨て、結果を整数として出力してください。 制約 $0\le A\le 10^{15}$ $0\le B<10$ $A$ は整数 $B$ は小数第 2 位まで与えられる 入力 入力は以下の形式で標準入力から与えられる。

                                                            浮動小数点数オタクが AtCoder Beginner Contest 169 のC問題をガチで解説してみる - Qiita
                                                          • 【競プロ】新人SEがAtCoderを始めて水色になった【色変記事】 - Qiita

                                                            AtCoderで水色になりました。いわゆる色変記事です。 本記事では以下の4点について書きます。 競プロをしていて良かったこと・できるようになったこと 勉強したこと・改善案 レート推移や目標ラインの話 環境やマクロの紹介 最初に自己紹介すると、自分は情報系出身のSEで、現在は2年目です。 今年の頭に競プロをはじめ、先日水色になりました。 「プログラミング未経験から~」「50歳を超えて~」みたいな少数派ではないですし、「たったN回で達成!」「M年の苦闘の末に」みたいなドラマもありません。 普通に勉強しているエンジニアが競プロを半年間そこそこ頑張ったみたいな記事です。 バッググラウンドや参加回数については③で詳しく書きます。 なお、競技プログラミングについてザックリ知っている前提で書きます。 「競プロってなに?」「水色ってどのあたりなの?」という場合は が良くまとまっています。 ① 競プロをし

                                                              【競プロ】新人SEがAtCoderを始めて水色になった【色変記事】 - Qiita
                                                            • GPT-4V: 驚きを隠せない進化!凄すぎて"ズキズキワクワク"が止まりません!!! - Qiita

                                                              この記事で行なっていること 凄すぎて”ズキズキワクワク"が止まりません はじめに ついこの間、ChatGPTは2022年1月までの情報を学習した、というい発表がありましたが、さらに今回のアップデートで 画像解析機能(GPT-4V) が追加され、アップロードした画像を使った新たなタスクの実行が可能になってます。そして、それが凄すぎます 衝撃的な投稿 まずはこちらの衝撃的な投稿をご覧ください。 動画は自転車の画像と共に「サドルを下げる手助けをしてください」で始まります。 ChatGPTからレコメンドが返ってきますが、それに対して、質問者は追加で ポイントになりそうな部分を拡大してアップロード マニュアルと自分の持っているツールの写真もアップロード します。 その結果、その質問者は、サドルを下げることに成功!そんな内容です。 自分の環境で、画像解析機能(GPT-4V)を使えるのか? さて、画像解

                                                                GPT-4V: 驚きを隠せない進化!凄すぎて"ズキズキワクワク"が止まりません!!! - Qiita
                                                              • 2019年、2020年のJavaScript - 別にしんどくないブログ

                                                                この記事は JavaScript Advent Calendar 2019 - Qiita の初日の記事です。 2019年を締めくくるアドベントカレンダーの初日ということで、今年のJavaScriptを簡単に振り返りたいと思います。2020年のJavaScriptについても予習しましょう。 2019年、2020年が何を指しているかは後述します。 カテゴリが「プログラミング言語」なので、React、Vue、AngularやNode.jsなどJavaScriptを使った技術ではなく、JavaScriptの言語機能にフォーカスしたいと思います。 はじめに ES2019 Optional catch binding JSON superset Symbol.prototype.description Object.fromEntries Well-formed JSON.stringify Arr

                                                                  2019年、2020年のJavaScript - 別にしんどくないブログ
                                                                • Firestoreセキュリティルールの基礎と実践 - セキュアな Firebase活用に向けたアプローチを理解する - Flatt Security Blog

                                                                  こんにちは、株式会社Flatt Security セキュリティエンジニアの梅内(@Sz4rny)です。 本稿では、Cloud Firestore (以下、Firestore) を用いたセキュアなアプリケーション開発を行うためのアプローチについて説明するとともに、そのアプローチを実現するセキュリティルールの記述例を複数取り上げます。 本稿を読むことで、そもそも Firestore とは何か、どのように Firestore に格納するデータの構造を設計、実装すればセキュアな環境を実現しやすいのか、また、Firestore を利用するアプリケーションにおいてどのような脆弱性が埋め込まれやすいのかといったトピックについて理解できるでしょう。 なお、本稿は以前に投稿した記事と共通する部分があります。理解を補強するために、こちらの記事も適宜ご覧ください。 flattsecurity.hatenablo

                                                                    Firestoreセキュリティルールの基礎と実践 - セキュアな Firebase活用に向けたアプローチを理解する - Flatt Security Blog
                                                                  • Rust で SQLite を再実装した 2023 - kawasin73のブログ

                                                                    気合いで実装、どうもかわしんです。 この記事は Rust Advent Calendar 2023 の6日目 兼 情報検索・検索技術 Advent Calendar 2023 の 6 日目です。 Rust で SQLite をフルスクラッチで実装しています。 github.com なぜ SQLite を Rust で再実装しようと思ったのかについては以前の記事で紹介しています。一言で言えば、誰も Rust で SQLite を書いている人がいなかったからやってみたのですが、そもそも SQLite が強すぎるということが再実装しているうちにわかってきて絶望しています。 kawasin73.hatenablog.com 4 ヶ月前にこの記事を書いたときは簡単な SELECT 文しか実行できなかったのですが、現時点では SELECT, INSERT, DELETE 文をサポートし、express

                                                                      Rust で SQLite を再実装した 2023 - kawasin73のブログ
                                                                    • 構文のことは忘れて、JSON, S式, XMLのデータモデルを比較する

                                                                      データをシリアライズするには、独自のフォーマットを定めるよりも、基本的な定義済みの構造を組み合わせてフォーマットを作るほうが望ましい場合が多いです。 そのような仕組みとしてJSON, S式, XMLなどが存在しますが、これらは 「基本的な構造」として何を選ぶか、という観点からそれぞれに個性を持っています。 本記事では、具体的な構文のことは基本的に忘れて、各フォーマットが採用するデータモデルの違いに焦点を絞って比較します。 JSON data JSON = Value data Value = -- Compounds Array [Value] | Object (Map String Value) -- Scalars | Null | Boolean Boolean | String String -- UCS-2 | Number IntegerOrFloat -- no NaNs

                                                                        構文のことは忘れて、JSON, S式, XMLのデータモデルを比較する
                                                                      • Webassemblyコンパイラを自作しよう

                                                                        この記事はBuild your own WebAssembly Compilerを翻訳・意訳したものです。また独自の説明を加えた部分もあります。 前置き もしあなたがWebAssemblyについて聞いたことがなく、本当に詳しい紹介をしてほしいのであれば、Lin Clark氏のCartoon Guideを読むことをお勧めします。 このブログ記事ではWebAssemblyが「何か」を学ぶことができますが、「なぜ存在するのか」についても簡単に触れておきたいと思います。 私の視点では、この図が非常に簡潔にまとめられています。 上の図は、ブラウザ内での JavaScriptコードの実行を簡略化したタイムラインです。左から右に向かって、コード(一般的にはminifyされた状態で提供されます)は AST に解析され、最初はインタプリタで実行され、徐々に最適化/再最適化されて、最終的には非常に高速に実行さ

                                                                          Webassemblyコンパイラを自作しよう
                                                                        • NetBSDを手探りで移植したときの話 - Qiita

                                                                          この記事は自作OS Advent Calendar 2020 7日目の記事となります。 はじめに 現在のオープンソースOSは、たとえばLinux開発ボードであればボードベンダーから移植済みのLinux環境が提供されたり、たとえばNetBSDであればクロスコンパイル環境が整備済みでドキュメントも用意されていて、最低限の移植作業で移植が完了したりします。 ぼくがNetBSDを移植した当時(1993年)はそうではありませんでした。ドキュメントもなくいろいろ手探りで、それも一人でやらざるを得ませんでした。苦労話のことは置いておいて、技術的にどういう物が用意され何を調べてどういう手順で移植していったかを記録に残せればと思います。(って前置きした割に苦労話が多いような気がします、すみません) かなり昔の話なので、けっこう忘れてることも多く、微妙に記憶が間違っていたりすることも、順番が前後していることも

                                                                            NetBSDを手探りで移植したときの話 - Qiita
                                                                          • WebAssembly所感

                                                                            WebAssemblyをちょっといじってみて思ったところをまとめてみます。 設計思想 WebAssembly/designに設計文書がまとまっています。特にHighLevelGoals.mdから読み取れるポイントは以下の4点です。 サンドボックス化された環境であること。 移植性があること。つまり、特定の実CPUアーキテクチャ等に依存しないこと。 少なくともC/C++の(十分に高速な)コンパイルターゲットとして機能すること。 安定した仕様を持つこと。 サンドボックスという観点からは、先行技術として以下のようなものが特筆に値します。 Webサンドボックス JavaScript および asm.js Javaアプレット Flash (ActionScript) NaCl, PNaCl Web以外のサンドボックス OSのユーザーランド、特にLinux userland これらのサンドボックスとの比

                                                                              WebAssembly所感
                                                                            • データライフサイクルとトレードオフ | フューチャー技術ブログ

                                                                              ソフトウェアの中身を大きく2つに分解すると、プログラムとデータに分かれます。コードコンプリートやA Philosophy of Software Designなど、評判の良いソフトウェア設計の本はいくつかありますが、それらはどれもプログラムの説明がメインでデータのライフサイクルについての説明はなかったと思います。しかし、データの表現にもいくつもの方針があって、それによるトレードオフがあるな、というのはもやもやと考えていたので、その考えをまとめて文章にしてみました。 データといっても、処理中の短期間の間では変わらない、いわゆるマスターデータ的なデータです。ジャーナルというか、トランザクション的なデータはここでは触れません。 この記事では、それぞれのトレードオフについて考えていきます。 即値(リテラル) 定数 コマンドライン引数 環境変数 設定ファイル ダウンロードコンテンツ オンラインデータ

                                                                                データライフサイクルとトレードオフ | フューチャー技術ブログ
                                                                              • MoonBit が WebAssembly 時代の理想(の原型)だった

                                                                                最近 moonbit という言語を知ったのですが、これが調べれば調べるほど好きになる言語だったので、紹介させてください。 文法的には GC 付きの Rust で、 WebAssembly にコンパイルされます。とくに CDN Edge Worker 上での実行を想定しているようです。もう好き。 注意: まだ若い言語なので、これから言語仕様がガンガン変わっていくと思われます。あくまで現時点での情報です。 tl;dr Pros だいたい GC あり Rust と捉えていい 文法面のキャッチアップが容易 ライフタイムの難しさを考えなくていい すでに vscode 拡張やパッケージマネージャ等のエコシステムが整っている Cons まだ安定していない / しばらくはソースコードが公開されない 現時点では学習リソースやパッケージ数が足りず、書き手の腕力が求められる はじめに: JS/TS/Rust へ

                                                                                  MoonBit が WebAssembly 時代の理想(の原型)だった
                                                                                • ArmにあるというJavaScript専用命令とは何か、あるいは浮動小数点数を整数に変換する方法について - Qiita

                                                                                  // gcc-10 -march=armv8.3-a arm-jcvt.c という風にコンパイル #include <stdio.h> #include <math.h> #include <inttypes.h> #include <arm_acle.h> // Prototype: // int32_t __jcvt(double); #if defined(__GNUC__) __attribute__((noinline)) #endif int32_t cast_double_to_i32(double x) { return (int32_t)x; } int main(void) { printf("(int32_t)(-2.8) = %" PRId32 "\n", cast_double_to_i32(-2.8)); printf("(int32_t)1.99 = %" P

                                                                                    ArmにあるというJavaScript専用命令とは何か、あるいは浮動小数点数を整数に変換する方法について - Qiita