並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 753件

新着順 人気順

*Programの検索結果1 - 40 件 / 753件

*Programに関するエントリは753件あります。 プログラミングprogramming開発 などが関連タグです。 人気エントリには 『正規表現の"正規"とは何か気になったら正規表現の歴史を紐解くことになってしまった話』などがあります。
  • 正規表現の"正規"とは何か気になったら正規表現の歴史を紐解くことになってしまった話

    正規表現の"正規"って何 ある時ふと思いました。 「正規表現の"正規"って何だろう?」 「何を根拠に"正規"を名乗っているのか?」 と。 「誰かが『これが正規の表現だ』と言ったはず」で、 「それは周りにどうやって"正規"だと認められたのだろう」 ということが気になったので調べてみました。 "正規表現"という名前でなくて、"ジャックさんの表現"とか"記号ごちゃごちゃ表現"だったらこんな疑問も持たなかったのですけど。 数学における"正規"とは 一般に"正規"というと、"正規品"や"正規の手順"といったように"本物の(genuine)"や"公式な(official)"といった意味がありますが、数学の"正規"はちょっと違います。 数学で"正規"(および"正則"、英語では"regular"または"non-singular")は、ある概念に強い制限をかけたもの、という意味です。強い制限をかけたものは取

      正規表現の"正規"とは何か気になったら正規表現の歴史を紐解くことになってしまった話
    • Chrome Devtoolのmonitorを使うと関数の呼び出しを観察できて便利 - ぱすたけ日記

      を読んで思い出したのでご紹介です。 元の記事と同様に以下の関数 sum について、 function sum(nums, acc = 0) { console.log({ nums, acc }); if (nums.length === 0) return 0; if (nums.length === 1) return nums[0]; return sum(nums.slice(1), acc + nums[0]); } この関数sumの引数 (nums と acc) の呼び出しごとの変化を見たい場合は、所謂プリントデバッグや debugger を使うのは一般的なテクニックとしてよく知られていますが、このような関数呼び出し時の引数を知りたい場合はmonitor(function)という関数を使うことで同様の効果を得ることが出来ます。 この場合は monitor(sum)とした後に、関

        Chrome Devtoolのmonitorを使うと関数の呼び出しを観察できて便利 - ぱすたけ日記
      • colorsなどのnpmパッケージに悪意あるコードが含まれている問題について

        追記: 2022年1月11日 2:29 JSTにDoS脆弱性としてセキュリティアドバイザーが出されて、悪意あるバージョン(1.4.1や1.4.2)はnpmからunpublishされ、npmの最新は安全なバージョンである1.4.0へと変更されました。 Infinite loop causing Denial of Service in colors · GHSA-5rqg-jm4f-cqx7 · GitHub Advisory Database 2022-01-08 に colors というnpmパッケージにDoS攻撃のコードが含まれたバージョンが1.4.44-liberty-2として公開されました。 GitHub: https://github.com/Marak/colors.js npm: https://www.npmjs.com/package/colors 問題についてのIssu

          colorsなどのnpmパッケージに悪意あるコードが含まれている問題について
        • DBMSをGoで実装してみた - Sansan Tech Blog

          こんにちは。プロダクト開発部の荒川 id:ad-sho-loko です。突然ですが、皆さんはこんな疑問を持ったことはありませんか? データベースの内部実装はどうなっているのか? トランザクションとはどのようなアルゴリズムで実現されているのか? NoSQLが遅いのはなぜか? 古典的なデータベースとは内部的にどのように違うの? データベースを何かしらの形で利用しているのにも関わらず、意外と内部の仕組みを理解していない場合が多いかと思います。僕もそうです。*1 しかし、エンジニアたるもの、その仕組みを知ることは非常に重要です。僕もデータベースについて勉強しようといくつかの本やサイトを調べていたのですが、なかでもCMU(カーネギーメロン大学)のDatabase System Groupがアップロードしている講義が最も勉強になりました。 www.youtube.com そして本ブログでは、上記の講義

            DBMSをGoで実装してみた - Sansan Tech Blog
          • Software Design連載 2021年9月号 「テストが無い」からの脱却 - MonotaRO Tech Blog

            こんにちは、鈴木です。 「テストが無い」状態を脱却しました。 「いつの時代かよ!」と突っ込まれるかもしれませんが、モノタロウは創業から 20 年ほど EC をやっています。昨日書いたコードも、15 年前に書いたコードも、元気にビジネスを支えています。 本記事ではモノタロウの EC を支える API の話をします。「テストが無い」状態がスタートラインでした。そこから、CI を導入して、ローカル開発環境の整備して、テストコードを書いて、リリースマネジメントを導入しました。 目新しいことは書きません。長寿の大規模システムであっても、愚直に数年取り組むことで、「前進できる!」「変えられる!」という実例を書きます。 ※本記事の初出は、 Software Design2021年9月号「Pythonモダン化計画(第2回)」になります。第1回の記事は「Software Design連載 2021年8月号

              Software Design連載 2021年9月号 「テストが無い」からの脱却 - MonotaRO Tech Blog
            • パケットキャプチャツールをつくる - Qiita

              はじめに ネットワークと C 言語の勉強を兼ねて、簡易的なパケットキャプチャツールをつくってみました。参考にしたのは「ルーター自作でわかるパケットの流れ」という書籍です。 表紙に書かれている「ネットワークはどのようにつながるのかパケットの気持ちになって考えてみたことはありますか?」というコメントに妻が若干引いておりましたが、こういったディープな内容の本は中々ないので有り難かったです。なお、この本はタイトルのとおりルータを自作することがゴールになっていて、パケットキャプチャツールの作成はそのための練習という位置付けです。 また、特別講座 ネットワークプログラミング ( FWをつくろう )というサイトも非常に参考になりました。図入りで説明されていてとても分かりやすかったです。 ちなみに、C 言語は大学の時に少しかじったものの、ほぼ初心者に近い状態だったので Udemy の「イメージでわかる!基

                パケットキャプチャツールをつくる - Qiita
              • 僕とDDDとClean ArchitectureとやっぱりDDD - kenfdev’s blog

                2022/04/21更新 ふりかえってみて、この記事は手段と目的をごっちゃにしちゃった自分がよくわかる記事です。 DDDは「どうやってコードを書くか」が問題ではありません。その点を勘違いしちゃってるエンジニアの話として、続きを読みたい人は読んでください🙏 DDD(Domain Driven Design)って難しいですよね。難しい難しいとばかり考えていた僕もようやく最近になって少しずつわかってきた気がします。そのきっかけとなった書籍と僕のストーリーを本記事で紹介できたらと思います。 TL;DR Clean Architectureはなんとなくわかる DDDは難しい と感じている人は「Domain-Driven Design in PHP」を読むと道が拓けるかもしれない。 leanpub.com 僕とDDD DDDといえばEvansのドメイン駆動設計: エリック・エヴァンスのドメイン駆動設

                  僕とDDDとClean ArchitectureとやっぱりDDD - kenfdev’s blog
                • 使いやすさを重視したHTMLスクレイピングライブラリを作った - 純粋関数型雑記帳

                  TL:DR レポジトリ https://github.com/tanakh/easy-scraper ドキュメント 背景 このところ訳あってRustでHTMLからデータを抽出するコードを書いていたのですが、 既存のスクレイピングライブラリが(個人的には)どれもいまいち使いやすくないなあと思っていました。 HTMLから望みのデータを取り出すのはいろいろやり方があるかと思いますが、 ツリーを自力でトラバースするのはさすがにあまりにも面倒です。 近頃人気のライブラリを見てみますと、CSSセレクターで目的のノードを選択して、 その周辺のノードをたどるコードを書いて、 欲しい情報を取り出すという感じのものが多いようです。 RustにもHTMLのDOMツリーをCSSセレクターで検索して見つかったノードをイテレーターで返してくれたりする、 scraperというライブラリがあります。 例えば、<li>要素

                    使いやすさを重視したHTMLスクレイピングライブラリを作った - 純粋関数型雑記帳
                  • Bardの衝撃。Bardはユーザから指示されたURLのページにアクセスできる。Webページの要約やスクレイピングも? - Qiita

                    Bardの衝撃。Bardはユーザから指示されたURLのページにアクセスできる。Webページの要約やスクレイピングも?GoogleスクレイピングChatGPTBard Google Bardが、日本からも利用できる様になりましたが、ChatGPTとの大きな違いがありました。 それは、ユーザが渡したURLにBardがアクセスができることです。 ChatGPTでは基本的にそういったことはできず、やれている様に見えても違った情報を返してしまっていました。 例えば、以下ページのURLを渡して要約してもらうと、返ってくるのは以下の様な返答になってしまいます。 アクセス先のページ ChatGPTからの返答 なんだか、違うページを読み込んでいそうです・・・完全に間違っています。 -- それに対し、Google Bardは正しくリンク先の記事を読み取って要約をしてくれました。 本当にリクエスト先のURLにア

                      Bardの衝撃。Bardはユーザから指示されたURLのページにアクセスできる。Webページの要約やスクレイピングも? - Qiita
                    • WEB+DB PRESS Vol.122に特集「Rustで実装!作って学ぶRDBMSのしくみ」を書いた - Write and Run

                      KOBA789 です。 時が経つのは早いもので、気づけば2月末に無職になってから1ヶ月以上が過ぎていました。 その間に何をしていたのかといえば、表題の特集記事の執筆をしていました。 宣伝 このブログ記事は WEB+DB PRESS Vol.122 を読みたくなるためのものです。ぜひ買ってね。買ったらちゃんと読んでね。 作って学ぶ RDBMS のしくみ、書きました。みんな大好き Rust を使って解説してます https://t.co/nm526qQYnm— KOBA789 (@KOBA789) April 8, 2021 gihyo.jp 使用言語は Rust だし、RDBMS はそもそも難しいトピックだしで結構重めの内容ですが、まずは読み物として寝転びながらでもいいので読んでみてほしいです。 ゴールデンウィーク*1の自由研究のお供にもどうぞ。たぶんちょうどいい分量なんじゃないかなぁ。ゴー

                        WEB+DB PRESS Vol.122に特集「Rustで実装!作って学ぶRDBMSのしくみ」を書いた - Write and Run
                      • Goで作るテキストエディタ - Sansan Tech Blog

                        はじめに みなさんこんにちは。Sansan事業部プロダクト開発部のiOSエンジニア荒川です。 以前はRDBMSの記事*1を寄稿し、好評いただいたこともあり、定期的に車輪の再発明系の記事を書いていこうと思います。 さて本日はタイトルの通り、VimやEmacsに代表されるターミナルで動作するインラインテキストエディタをGoで開発してみました。 ソースコードは以下のリポジトリに置いているため、ぜひ参考にしてください。 github.com 完成品 文字だけだとイメージも湧きにくいので、まずは完成品をお見せします。 最低限エディタの動きは出来ている、というレベルの完成度ですね🙏 特徴 1000行インラインエディタ 文字入力/挿入/削除 画面スクロール キーボードショートカット ファイル読み込み/保存 Goのコードハイライト機能 実装の方針 今回はただ開発するだけではなく、いくつかのこだわりポイン

                          Goで作るテキストエディタ - Sansan Tech Blog
                        • OAuth 2.0 の勉強のために認可サーバーを自作する - Qiita

                          逆に、RFC 6749 以外で定義されている認可フローをサポートする場合、新たに別のエンドポイントの実装が必要になることがあります。例えば CIBA(Client Initiated Backchannel Authentication)ではバックチャネル認証エンドポイント(backchannel authentication endpoint)、デバイスフロー(RFC 8628)ではデバイス認可エンドポイント(device authorization endpoint)の実装が求められます。 この記事では、認可エンドポイントとトークンエンドポイントを実装します。サポートする認可フローは認可コードフローのみ、サポートするクライアント・タイプはパブリックのみとします。 2. 注意点 下記の理由、および書かれていないその他の理由により、本実装は商用利用には適していません。 セキュリティー上必須

                            OAuth 2.0 の勉強のために認可サーバーを自作する - Qiita
                          • COVID-19 日本国内の潜在的な陽性者数を推定する試み - StatModeling Memorandum

                            日本国内の潜在的な陽性者数を推定することは有益ですが、簡単ではありません。PCR検査がランダムになっていないことが推定を難しくしています。有症状者が検査されやすいというselection biasがあるからです。この記事ではいくつか仮定を置いて潜在的な陽性者数を推定したいと思います。 仮定 全国民のうち潜在的に陽性になっている割合 この割合は年代によらず一定と仮定します。ここでは と書きます(posはpositiveの略)。例えば0.0001なら日本人約1億2千万人中、おおよそ12000人が潜在的に陽性になっている計算です。 なお、国民の年代別人口の値はこのページの令和2年3月報 (令和元年10月確定値,令和2年3月概算値) (PDF:301KB) の「2019年10月1日現在(確定値)」の総人口 男女計の値を使用しました。 陽性者中の有症状者の割合 若年層で無症状が多いなど、年代で異なる

                              COVID-19 日本国内の潜在的な陽性者数を推定する試み - StatModeling Memorandum
                            • TDDはゆるく実践しても大丈夫 - 千里霧中

                              最近、TDDのテストコードは捨てても良いかみたいな議論を見ました。 これに対する自分個人の経験上の意見ですが、TDDは雑多にテストコードを使い捨てても効果を出せると思います。 もちろん、TDDで保守性が高く価値あるテストを書いて、捨てずにCIや中長期的なリファクタリングで再利用していくと、TDDの効果を増幅できます。ただ、それをするにはスキルや事前の工夫、労力が必要ですし、できる場面に限りがあります。 そういったことをやらず、もっとゆるい姿勢で取り組んでも、費用対効果をプラスにできる手法がTDDだと考えています。 今回は、そのTDDでゆるくしてもよいポイントを、実経験からまとめたいと思います。 TDDのテストは使い捨てでいい TDDのテストはプログラマのこまごまな課題に応じて累積的に作られるため、保守コストがかかるテスト・保守する価値の低いテストが生まれがちです。そのためテストの使い捨ての

                                TDDはゆるく実践しても大丈夫 - 千里霧中
                              • 論理プログラミング言語Logicaでデータサイエンス100本ノック

                                Googleが発表したOSSプロジェクトである論理プログラミング言語Logicaを使って、データサイエンス100本ノック(構造化データ加工編)の設問を解きながらどのような言語かを確認していく。 (BigQueryのクエリとして実行していく) 最初に、プログラミング言語Logicaの特徴を纏めておく。 論理型プログラミング言語: このカテゴリではPrologが有名 SQLにコンパイルされる: 現状BigQueryとPostgreSQLに対応 モジュール機構がある: SQLと比較した強み コンパイラはPythonで書かれている: Jupyter NotebookやGoogle Colabですぐ始められる Colabでチュートリアルが用意されているので、まずこちらからやると良いと思う。 コードの見た目は関係論理の記述に似ている。 事前に、データサイエンス100本ノックのテーブルデータをBigQu

                                • Rustでリレーショナルデータベースを自作したときの成果と反省と学び - Yoshisaurのメモ

                                  はじめに この記事では、個人プロジェクトとしてRust言語でリレーショナルデータベースを開発した経験(もう五ヶ月も前...)について、その成果と反省、得た学びを共有します。 DBMSを自作した理由 自分がDBMSの自作に着手したのは、『Designing Data-Intensive Applications』という本の内容を深く理解するためでした。 この本は、データシステムの設計と運用において最も大切な「信頼性」、「拡張性」、「保守性」を保証する方法論を、豊富な文献を引用しつつ、理論と実践の橋渡しを巧みに行いながら、丁寧に説明している名著です。読んだことがない人は速攻購入してくだい。本当にいい本です。 この本は、データベースの内部構造に関する話も豊富に含まれていたので、「データベース自作してみようか...」という気持ちになりました。 Rustを採用した理由 データベースの実装のついでに、

                                    Rustでリレーショナルデータベースを自作したときの成果と反省と学び - Yoshisaurのメモ
                                  • レトロゲームエンジン「Pyxel」でドラクエ1つくってみた|frenchbread

                                    Pyxel(ピクセル)というPython用レトロゲームエンジンがあります。 画面サイズ256x256で発色数は16色、サウンドはシンプルな波形の音色を最大4音まで発音可能、といったシンプルな仕様で、扱いやすいPythonのコードを用いた低学習コストのゲーム開発ができます。 最近になってWebアプリ化できるようになったため、開発した作品は誰にでも気軽にプレイしてもらえるようになりました。すごいですね。 (2023/6/10)以前にWeb版を公開していましたが、現在、公開は取り下げています。 以下、この記事の内容はプレイいただく方向けの説明となります。 本来の私の目的は、ゲームそのものをプレイしてほしいというより、作り手(or 作り手になりたい方)向けに情報・ノウハウ共有することなのですが、長くなるので別記事として順次書いていきます。 Pyxel版の特徴外見はFC版ドラクエ1とはいえ令和時代の

                                      レトロゲームエンジン「Pyxel」でドラクエ1つくってみた|frenchbread
                                    • ジャバの異常な愛情 またはSpringはいかにしてモダンであることを止めて時代遅れになったのか - Qiita

                                      Spring以前 RPC 業務で使うシステムはサーバー間で連携することが多い。2019年現在ではREST apiに対してjsonやprotocolbufferで呼び出す事が当たり前のように行われているが、まだjsonも発見されていない時代はもっと複雑な仕組みが取られていた1。異機種間でやりとりするためのCORBAや、機種に依存しないデータプロトコルのASN.1なども利用されていたが、仕様は複雑でそれぞれをハンドリングするライブラリは有償で売られ、ベンダーからサポートを受けながら使用するようなものだった。 RMI Javaの世界ではJava同士でやりとりするためのRMIが定義され、比較的に楽にRPCできるようになった2。とはいえhttpでrestをコールすることに比べたらアホみたいな複雑さである。 https://docs.oracle.com/javase/jp/1.3/guide/rmi

                                        ジャバの異常な愛情 またはSpringはいかにしてモダンであることを止めて時代遅れになったのか - Qiita
                                      • フロントエンド初心者がGatsbyでブログを作り直した話 - As a Futurist...

                                        フロントエンド初心者が無事に Hugo のブログを Gatsby で一から作り直すことができた。その振り返り。 歴史 インターネットを小中学生(もはや 25 年以上前)に触り初めた頃に、HTML で文章の構造を作り CSS でデザインする、ということができるのを知って感動したけど、結局自分には何かが合わなくてそれを突き詰めることができなかった。というか、それを知ったが故にテーブルレイアウトとかがどうしても気に入らず、かといって CSS は float が難しすぎて、結局ウェブサイトを作る、という根本的な営みをずっと避けてきてしまった。 時は過ぎ、Wordpress の様なブログエンジンや Hugo の様な仕組みがあったおかげでブログを初めて続けることはできた。13 年前にレンタルサーバに Wordpress を置いて始めたこのブログも 9 年前には VPS での Wordpress 運用に

                                          フロントエンド初心者がGatsbyでブログを作り直した話 - As a Futurist...
                                        • Pryはもう古い、時代はIRB - k0kubun's blog

                                          僕はRubyで開発をする時は毎回Pryを使うくらいの熱狂的Pryユーザーだったのだが、PryはGemfileに書いてないと binding.pry できなくて不便。任意のgemをdefault gem化するgem default コマンドも作ったのだが、これをやるのすら面倒だと思っていた。 ある日、nobuさんがRubyに binding.irb という機能をいれた。Pryがdefault gemになるのを待つよりPryで僕が使う機能をIRBに全部移植してしまった方が早いのではないかと思い、4年前からPryの機能の移植活動を始め、今日僕がよく使う機能を全て移植し終えた。 その記念に、この記事ではIRBのPry互換の機能を紹介する。昔 今更聞けないpryの使い方と便利プラグイン集 という記事を書いたんだけど、この中で僕が毎日のように使うコマンドは全てIRBに移植したので、それを紹介する本稿を

                                            Pryはもう古い、時代はIRB - k0kubun's blog
                                          • PythonでTableau風 BIツールによる視覚的データ探索をやってみよう 〜PyGWalker〜 - Qiita

                                            更新情報 -目次- はやくもUI改善等 Ver.upが図られています。以下内容の記事を追加しました。 1. データフレーム表示 2. ヒストグラムの描き方 3. ダークモード対応 4. オンライン版 5. 海外のデータイノベーション支援団体でも人気 はじめに Tableauはご存じでしょうか? 私は使ったことはありませんが、名前だけはよく耳にします。 これは、専門家でなくてもデータの収集・分析・加工ができるBI(ビジネス・インテリジェンス)ツールのひとつです。 なんと、Jupyter Notebook上(Google ColabもOK)で実行できる Tableau風 BIツール「PyGWalker」が登場しました。 Tableauそのものではありませんが、ドラッグ&ドロップの簡単な操作でデータ分析や視覚的な探索が実行できます。 こんなのが出てくるとは・・・すごい。 しかも、数行のコードで実

                                              PythonでTableau風 BIツールによる視覚的データ探索をやってみよう 〜PyGWalker〜 - Qiita
                                            • TwitterやSlackのRedux Storeを覗く

                                              { domainData1 : {}, domainData2 : {}, appState1 : {}, appState2 : {}, ui : { uiState1 : {}, uiState2 : {}, } } ref: Basic Reducer Structure and State Shape · Redux 正規化 Recipesでは正規化についても言及しており、リレーショナルデータを管理する場合はデータベースのように正規化することを推奨していました。 以下は投稿が複数のコメントを持つ例です。postsはcommentsのidだけを持っています。 { posts : { byId : { "post1" : { id : "post1", author : "user1", body : "......", comments : ["comment1", "comment

                                                TwitterやSlackのRedux Storeを覗く
                                              • Pythonでいい感じにバッチを作ってみる - prefectをはじめよう - JX通信社エンジニアブログ

                                                JX通信社シニア・エンジニアで, プロダクトチームのデータ活用とデータサイエンスのあれこれ頑張ってるマン, @shinyorke(しんよーく)です. 最近ハマってるかつ毎朝の日課は「リングフィットアドベンチャー*1で汗を流してからの朝食」です. 35日連続続いています. 話は遡ること今年の7月末になりますが, JX通信社のデータ基盤の紹介&「ETLとかバッチってどのFW/ライブラリ使えばいいのさ🤔」というクエスチョンに応えるため, このようなエントリーを公開しました. tech.jxpress.net このエントリー, 多くの方から反響をいただき執筆してよかったです, 読んでくださった方ありがとうございます! まだお読みでない方はこのエントリーを読み進める前に流して読んでもらえると良いかも知れません. 上記のエントリーの最後で, 次はprefect編で会いましょう. という挨拶で締めさせ

                                                  Pythonでいい感じにバッチを作ってみる - prefectをはじめよう - JX通信社エンジニアブログ
                                                • バックエンドエンジニアの私がお勧めする SPAフロントエンド開発環境

                                                  @July Tech Festa 2020

                                                    バックエンドエンジニアの私がお勧めする SPAフロントエンド開発環境
                                                  • Goのソースコード内のトリビア - YAMAGUCHI::weblog

                                                    はじめに こんにちは、StackdriverあらためGoogle Cloud Operations担当者です。Google Cloud Operationsもさることながら、Go Conferenceの運営など、長らくGoコミュニティに関わってきましたが、まだまだ知らないことがあったということを昨日今日で知ったので共有します。 time.minWall time.minWall という値があります。 src/time/time.go - go - Git at Google const ( hasMonotonic = 1 << 63 maxWall = wallToInternal + (1<<33 - 1) // year 2157 minWall = wallToInternal // year 1885 nsecMask = 1<<30 - 1 nsecShift = 30 ) こ

                                                      Goのソースコード内のトリビア - YAMAGUCHI::weblog
                                                    • Rustで古典的なDisk-Oriented DBMSを実装した話 - Write and Run

                                                      KOBA789 です。みなさん DBMS は好きですか。私は好きです。 最近、自作 DBMS をずっと作っていて、ようやく最低限の機能ができたので公開をしました。 (とはいえコードを書いていたのは正味2日ほど。設計と勉強に2週間かかった) github.com この記事ではこれを作った目的と、そのちょっとした詳細についてご紹介します。 目的 Disk-Oriented DBMS の学習に適している Rust で書かれた実装が欲しかった、というのが理由です。 DBMS の勉強に適している実装というのは意外と多くありません。 MySQL や PostgreSQL といった有名な実装は実用的である一方でコード量は非常に多く、また細かな最適化によって教科書的なアルゴリズムと実際のコードの差が大きくなっているため、初学者にとっては構造を把握しづらくなっています。 教科書的な実装の Disk-Orie

                                                        Rustで古典的なDisk-Oriented DBMSを実装した話 - Write and Run
                                                      • Hosting SQLite databases on Github Pages - (or IPFS or any static file hoster) - phiresky's blog

                                                        Hosting SQLite databases on Github Pages(or IPFS or any static file hoster) Apr 17, 2021 • Last Update Jun 04, 2023I was writing a tiny website to display statistics of how much sponsored content a Youtube creator has over time when I noticed that I often write a small tool as a website that queries some data from a database and then displays it in a graph, a table, or similar. But if you want to

                                                        • 「ベタープログラマ」を読んだ - Magnolia Tech

                                                          原著が出てたときから割と気になっていた「ベタープログラマ」を読んだ。 全体的な感想 第Ⅰ部はコードスタイルや、不要なコードの存在、テストコードを書く話など、非常に実践的な内容が多かった。 第Ⅱ部は割と考え方というか、思想的な話になっていって、第Ⅰ部をきちんと読んで危機感を持って行動を変えられる人であれば自然とそこに到達するのでは?と思った。 まずは第Ⅰ部をしっかり読んで、自分の置かれた環境との差異や、これから行動することを書き出す、みたいな読み方をすると良い。 第Ⅲ部以降は、もう完全に生き方というか、エンジニアとしての振るまいや、哲学の話になってくるので、一気に通読する、というより少し間を置いて拾い読みしながら読み進めて行くと良いかも。 流し読みしても全然役に立たないタイプの内容なので、読書メモは必ず書いた方がいいと思うし、書かれていることが万人にとって正解、といった類いのものでもないので

                                                            「ベタープログラマ」を読んだ - Magnolia Tech
                                                          • アセンブラをゼロから作って自作コンパイラをアセンブルするまで(日記)

                                                            GNU Assembler互換(サブセット)のアセンブラをGo言語でフルスクラッチで作ってみました。 開発22日目で自作Goコンパイラ(をセルフホストしたときに出力される20万行のアセンブリ)をアセンブルすることに成功しました。 どうやって作ったかというと、小さいコードを GNU Assembler (以下 as) に食わせて出力されたバイナリを観察する、を繰り返して中のロジックを推定し再現しました。as の実装は見ていません。(一瞬見たけど巨大すぎて何もわからなかった) アセンブラ自作は、やってみるとコンパイラ自作よりだいぶ簡単でハマりポイントも少ないので、学習テーマとしてはおすすめです。2箇所ほど難所(命令エンコーディングのルールを理解するのと、ジャンプ命令の最適化)がありましたがそれ以外はさくさく楽しく作れました。 作ってみた結果、アセンブリ言語の理解が深まったのはもちろんのこと、E

                                                              アセンブラをゼロから作って自作コンパイラをアセンブルするまで(日記)
                                                            • TypeScriptで世界一型安全な型レベルSQL Interpreterを作っている話

                                                              こんにちは。DevOps芸人と化して久しいAndyです。 2020年の秋にTypeScript 4.1へTemplate Literal Typesが導入され、そのインパクトに俄かに一部の界隈がザワついたのは記憶に新しいかと思います。 今回は型プログラミングの可能性を大いに押し広げたTemplate Literal Typesを用いてSQL文を型レベルで解析し、その実行結果を型情報として導出するためのsqlptureというライブラリを作ったので紹介します。 Embedded content: https://github.com/andoshin11/sqlpture SQLの実行/検証対象はPostgreSQL v13です。 tl;dr SQL文を型レベルで解析・評価して返り値型を取得できるmini interpreterを作ったよ 型レベルのSQL validatorも作ってるよ 実際

                                                                TypeScriptで世界一型安全な型レベルSQL Interpreterを作っている話
                                                              • V8エンジンによる内部変換コードでasync/awaitの挙動を理解する

                                                                はじめに JavaScript の「非同期処理」ってやっぱりかなり難しくないですか? 自分も色々試行錯誤しましたが、結局「完全に理解した🤓」→「やっぱり何も分からん😭」っていうループの中で泥臭く理解を深めていくしかないようです。 さて、非同期処理の制御をある程度予測できるようになるには、非同期 API を提供する環境のことやイベントループ、マイクロタスクなどの仕組みについて理解する必要があります。 そして環境に埋め込まれた JavaScript Engine のことも理解する必要があります。 今回の記事では、JavaScript Engine の1つである V8 が内部で変換するコードから async/await の挙動を理解するための解説を試みたいと思います。V8 エンジンからアプローチすることで async/await の分かりづらい挙動を掌握して非同期処理を打倒します。 今回の記

                                                                  V8エンジンによる内部変換コードでasync/awaitの挙動を理解する
                                                                • Ruby中間表現のバイナリ出力を改善する - クックパッド開発者ブログ

                                                                  Ruby 開発チームに4週間インターン生として参加いたしました、永山 (GitHub: NagayamaRyoga) です。 私は「Ruby中間表現のバイナリ出力の改善」という課題に取り組み、Railsアプリケーションのコンパイルキャッシュのサイズを70%以上削減することに成功しました。以下ではこの課題の概要とその成果について述べたいと思います。 InstructionSequenceの概要 まず、RubyVM 内で実行される命令の中間表現、InstructionSequence (以下 ISeq と省略) について簡単に説明します。 通常の Ruby プログラムは、以下のような手順で実行されます。 ソースコードを構文解析し、抽象構文木を作る。 抽象構文木をコンパイルして、ISeq を作る。 RubyVM (YARV) で ISeq を解釈し、実行する。 ISeq は、このように Ruby

                                                                    Ruby中間表現のバイナリ出力を改善する - クックパッド開発者ブログ
                                                                  • 128ビット符号付き整数の最大値は素数 - Rustで任意精度整数演算

                                                                    概要 2^n-1 型の数はメルセンヌ数と呼ばれ、更に素数である場合にメルセンヌ素数といいます。本記事では、メルセンヌ数に対する高速な素数判定法であるリュカ・レーマーテストを、Rustの任意精度演算用クレート rug を利用して実装します。 実行環境 CPU: Intel Core i7 1.8GHz メモリ: 16GB OS(ホスト): Windows 10 Home 21H1 WSL2: Ubuntu 20.04.3 rustc: Ver. 1.55.0 cargo: Ver. 1.55.0 符号付き整数型の範囲について Rustには組み込みの整数型として 8,\,16,\,32,\,64,\,128 ビット整数[1]がそれぞれ符号付き・符号なしで備わっています[2]。そのうち符号付き整数は、他の多くの言語と同様、2の補数によって負の数が表現されます。したがって、ビット数 n = 8,

                                                                      128ビット符号付き整数の最大値は素数 - Rustで任意精度整数演算
                                                                    • 最近のポケモンはデザインが複雑になったのか?【Python】【OpenCV】 - Qiita

                                                                      はじめに 先日、ポケモンたかさおじさんこと、生㌔Pのブログにて次のような記事が投稿された。 ポケモンらしさ-2_意見分析 マスコット感検証 https://pkmnheight.blogspot.com/2020/04/2.html ざっくり引用すると、以前バズってた以下の海外の分析画像を、転載したTweetがあった。 ポケモンのデザインはどんどん生物的じゃなくなって行ってて、色んな部位が丸みを帯びてただの可愛いマスコットキャラクターと化してるっていう海外の分析画像が凄い pic.twitter.com/qHHVaHzEue — Χ十 ◤カイジュー◢(⃔ *`꒳´ * )⃕↝♡ (@KaijuXO) June 13, 2019 このTweetに対して、ポケモンたかさおじさんが 猛撃 していたというものである。 ざっっっくり要約すると、各世代ごとに幼虫・昆虫ごとに部位をピックアップし、 そう

                                                                        最近のポケモンはデザインが複雑になったのか?【Python】【OpenCV】 - Qiita
                                                                      • ゼロから学んだ形式手法 - DeNA Testing Blog

                                                                        2020年1月に入社し、SWETの仕様分析サポートチームに加わったtakasek(@takasek)です。 仕様分析サポートチームでは、社内のプロダクト開発に対する形式手法の活用可能性を模索しています。当ブログでも、継続的に形式手法に関する情報発信をしています(形式手法 カテゴリーの記事一覧)。 この記事では、加入3か月を経てようやく形式手法の輪郭が掴めてきた私の視点から、学習前後での理解の変化について振り返ります。想定読者として学習前の私と近い属性——すなわちコンピュータサイエンスや数学の専門教育を受けておらず、主に現場での実務と自習に頼ってきたソフトウェアエンジニアを想定しています。 形式手法を学ぶ前の認識と疑問 ソフトウェアエンジニアとしての私の一番の興味関心は設計手法です。設計は、なんらかの解決したい問題に対して、ある一面を切り取った構造(モデル)を与え、そのモデルを解決の機構に落

                                                                          ゼロから学んだ形式手法 - DeNA Testing Blog
                                                                        • ビジネスの構造を扱うアーキテクチャとユーザとの接点を扱うアーキテクチャ #builderscon

                                                                          Builderscon Tokyo 2019 の発表資料です。

                                                                            ビジネスの構造を扱うアーキテクチャとユーザとの接点を扱うアーキテクチャ #builderscon
                                                                          • ChatWP: WordPressをAI化しておしゃべりする

                                                                            今は日記をScrapboxに移行(scrapbox.io/kentaro/)したのですが、その前の20年分ぐらいのブログはWordPressに入っています(kentarokuribayashi.com)。長い間書き続けてきたブログには、僕の人格のかなりの部分が注ぎ込まれているでしょう。そうであれば、ブログそのものをAI化することで、自分自身の代理=エージェントを作れるはずです。 そこで、WordPressをAI化して、自分の代理人格としておしゃべりできるようにしてみました。 できたもの こんな会話ができるようになりました。自分で読んでみても、そこそこ自分っぽい感じがします。 python ./chatwp.py Question: お名前はなんですか? Answer: 私の名前はケンタロウ・クリバヤシです。 Question: 職業は何をしていますか? Answer: 私はソフトウェアエン

                                                                              ChatWP: WordPressをAI化しておしゃべりする
                                                                            • Ruby 3.0 の Ractor を自慢したい - クックパッド開発者ブログ

                                                                              Ruby の開発をしている技術部の笹田です。娘が自転車に乗り始め、まだ不安なためずっとついていなければならず、少し追っかけまわしただけで息切れがヤバい感じになっています。運動しないと。 ここ数年、Ruby で並列処理を気軽に書くための仕組みである Ractor を Ruby 3.0 で導入するという仕事を、クックパッドでの主務として行ってきました(クックパッドから、これ、と言われていたわけではなく、Ruby を前進させるというミッションの上で行ってきました)。 Ractor は、もともと Guild という名前で開発をはじめ、2020年の春頃、Ractor という名前に変更することにしました。いくつかの機会で発表しています。下記は、RubyKaigi での発表の記録です。 A proposal of new concurrency model for Ruby 3 - RubyKaigi

                                                                                Ruby 3.0 の Ractor を自慢したい - クックパッド開発者ブログ
                                                                              • Kubernetesのコードリーディングをする上で知っておくと良さそうなこと

                                                                                Kubernetesとその関連コードのコードリーディングをする上で知っておくと良さそうなことについて知ってる範囲で雑にまとめてみました 前提知識前提として最低限Kubernetesをある程度触っていて KubernetesはPodとかのリソースと呼ばれるものでコンテナだったりロードバランサーとかを管理するようになっていて実際にDeploymentでコンテナを立ててService/Ingressでコンテナで立てたアプリケーションを外部公開できてコンテナはPodという単位でコンテナをグループ化して同一Nodeで実行されるということを知っているくらいがわかっていればまぁ十分なんじゃないかとは思います あとはKubernetesはGoで書かれているので Goの基礎知識とVSCodeやGolandなどGoのコードを読む際に宣言にジャンプできるようなエディタくらいがあると良いと思います Kuberne

                                                                                  Kubernetesのコードリーディングをする上で知っておくと良さそうなこと
                                                                                • 開発イテレーション偏重 - 兼雑記

                                                                                  開発イテレーションを早くすれば、かなりの問題が勝手に解決される、と信じています。なんか最近、他の要素を軽視しすぎていたり、特にイテレーション速度に影響しなさそうなことすらしている気がしていて、信仰とかのレベルかもしれない、という気がしてきたので、ちょっと書いてみようかなと。主に C++ の話です。 仕事とかしてると良い判断力が求められたりしますが、判断というのは結構難しいですよね。アプローチ A と B で悩んだ時に、手が速ければ両方できたりします。開発イテレーションを無限に速くすると、必要とされる判断力はゼロに漸近していきます。やったね。 2手で変更の正当性を高速に確認できるようにする make (かその他のビルドコマンド)てやったらビルドができて、 make check (かその他のテストスクリプト)てやったら遅くないテストが全部走る、という体勢が好きです。試すためにはあっちのディレク

                                                                                    開発イテレーション偏重 - 兼雑記

                                                                                  新着記事