タグ

programmingに関するauientのブックマーク (384)

  • Google製GNU gold以上の速さを実現 超高速リンカ「mold」を支えるテクニック

    Kernel/VM探検隊はカーネルや仮想マシンなどを代表とした、低レイヤーな話題でワイワイ盛り上がるマニアックな勉強会です。rui314氏は、制作中のリンカである「mold」について発表しました。全2回。後半は「mold」速さと、その高速化を実現するテクニックについて話しました。前半はこちら。 リンカが速いと何がうれしいのか 植山類氏(以下、植山):リンカが速くなって何がうれしいのか。普通にうれしいです。プログラムを書いているとうれしいことがわかると思いますが、makeを実行すると、普通は自分が直前に変更したファイルしかビルドしないので、デバッグをしていると1つのファイルを編集してビルドすることになります。 コンパイラは1つだけのファイルをコンパイルするのはそこそこ速いですが、リンカは基的には実行ファイルを丸ごと作ります。全体の入力を一気に受け取って出力するため、差分コンパイルであっても

    Google製GNU gold以上の速さを実現 超高速リンカ「mold」を支えるテクニック
  • 9時間足すんだっけ引くんだっけ問題~あるいは、諸プログラミング言語はいかにタイムゾーンと向き合っているか - エムスリーテックブログ

    私は日付時刻の処理が大好きです。 タイムゾーンの問題でデータ抽出が9時間分漏れていたとか、朝9時の始業前のログが昨日付けになってしまっていたなんていう問題が起こると喜んじゃうタイプ。 そんな私にとって、各プログラミング言語が標準で持っている日付時刻型クラスにはそれぞれ思うところがあり、今日はちょっとその品評会をしてみたいと思います。 エムスリーエンジニアリンググループ、Unit1(製薬企業向けプラットフォームチーム)三浦(@yuba@reax.work) [記事一覧 ]がお送りいたします、エムスリー Advent Calendar 2023の2日目です。 至高の日付時刻型を持つ言語、BigQuery SQL 不足はないが蛇足、Java 8 日付時刻で画竜点睛を欠いたC# C#よりややまし、Python 型は良い構成、なのに命名と処理関数で損しているPostgreSQL まとめ We ar

    9時間足すんだっけ引くんだっけ問題~あるいは、諸プログラミング言語はいかにタイムゾーンと向き合っているか - エムスリーテックブログ
    auient
    auient 2023/12/02
    同じ型なのに絶対時刻だったり不定時刻だったりするdatetime型は扱いにくい、なるほど
  • データ指向プログラミングの真実をお話しします

    Project Amberの文脈 サイズの小さいアプリケーションも扱うようになった。 システム全部をJavaで作る訳じゃなくなった オブジェクトではなく、データをやり取りするようになった。 そこでプレーンデータをモデル化し、処理するより良い方法が必要 代数データ型 (Record, switch式, sealed)

    データ指向プログラミングの真実をお話しします
  • 筋肉ですべてを解決する人のプログラミング上達方法|牛尾 剛

    私は米国の超大手クラウドベンダーの中の人をやっており、普段はアメリカに住んで気づいたことをブログに記録しているのだが、今回は趣を変えて、日で出会った凄い人からの学びを書いてみようと思う。 プリンシパルを目指して前回の下記のブログで、マネージャにならずに、プリンシパルというレベルを目指し始めたので、少しづつ自分のふるまいを変えることにしているが、これはそれの一環だ。 人生最後の大きなチャレンジの戦略を考える|牛尾 剛 (note.com) 筋肉の豊富なケンさん 私が日に居たときの同僚で、ケンさんという人がいる。筋トレ仲間として、筋肉がものすごいので、凄いなと思っていたのだが、彼は筋肉だけではなくプログラミング力もえげつなかったことを覚えている。 あるハッカソンで普通の人なら1つか2つの機能を試すところを、彼は10個ぐらい、それもものすごく高度に組み合わせてすごく短い時間に凄いアプリを作っ

    筋肉ですべてを解決する人のプログラミング上達方法|牛尾 剛
    auient
    auient 2023/10/03
    公式ドキュメントを全部読む→ビデオを10個ぐらい見る→コミュニティのカンファレンスでそのトピックに関して発表する→最後に資格を取る / 本質的じゃないヤクの毛刈りにあったらgptに聞いて忘れる
  • Language Server Protocol の仕様 及び実装方法

    Language Server Protocol通称LSPの仕様と、各機能をどうやって実装したら良いかの指針を示します。 対象読者 * 言語処理系を実装する人/したい人 * Language Serverを実装する/したい人 * LSPに興味がある人、日語のまとまった情報源を探している人 * Language Serverがエディタの裏でどのようなことをしているのか気になる人 書で解説される機能は以下の通りです。 * Diagnostics (検査) * Completion (補完) * Inlay hint * Hover * Goto definition (定義へ移動) * Find references (参照を表示/移動) * Rename (名前変更) * Code actions * Code lens * Signature help * Command * Docu

    Language Server Protocol の仕様 及び実装方法
  • Scalaの難しさをインターネットから集めてみる - Lambdaカクテル

    Scalaは難しいと思われたり敬遠されがちである。Scalaの難しさについてTwitterなどでアンケートをとったり、ネットでググって意見を吸い上げてみた。議論の叩き台にするみたいな用途を意図しています。 ご意見や記事募集中です。できればTwitterじゃなくて記事だと嬉しいです。流れていってしまうので・・・ また、私見は私見です。 追記(2024-03-08)ちなみに、色々書いていますが僕はScalaが大好きです(このブログでものすごい数の初心者~中級者向けの記事を書いています)し、ネットで言われているような終わった言語ではまったくないです。初心者をサポートして、難しいと感じている部分をほぐして、みんながScalaでワイワイやれるようにコミュニティを立ち上げ、継続的に活動しています。おかげさまで日の公式Scalaコミュニティとして認めてもらっています。ブログのバナー下のリンクからDis

    Scalaの難しさをインターネットから集めてみる - Lambdaカクテル
  • Rubyの並列並行処理のこれまでとこれから - クックパッド開発者ブログ

    技術部の笹田です。今日で退職するので、バタバタと返却などの準備をしています。 記事では、Rubyの並行並列処理の改善についての私の取り組みについて、おもに RubyKaigi 20222023 で発表した内容をもとにご紹介します。 並行と並列はよく似た言葉ですが、記事では次のような意味で使います。 並行処理(concurrent processing)は、「複数の独立した実行単位が、待っていればいつか終わる(もしくは、処理が進む)」という論理的な概念で、古典的にはタイムシェアリングシステムなどが挙げられます。 並列処理(parallel processing)は、「複数の独立した実行単位のうちのいくつかが、あるタイミングで同時に動いている」という物理的な概念で、古典的には複数のCPU上で同時に実行させる、というものです。最近では、1つのCPU上で複数コアが同時に動いている、という

    Rubyの並列並行処理のこれまでとこれから - クックパッド開発者ブログ
  • 半開区間の魅力 〜プログラミングでのスマートな区間の扱い方〜 - Qiita

    はじめに こんにちは、kenです。 今回は「プログラミングで区間を扱いたいときは半開区間が良いよ」という話をします。 もしかしたら有名な事実かもしれませんが、友達にこの話をしたら知らなかったという顔をされたので、自分の理解を深めるためにも記事にすることにしました。 数学で区間を扱う際は実数上で考えることが多いかと思いますが、この記事では区間を考える際、整数全体の集合上での区間を考えることにします。 また以下ではleft(またはl)とright(またはr)という文字式を使って説明しますが、このときleft $ \leq $ rightという関係性は常に満たされているものとします。 半開区間とは? 半開区間の前に、開区間と閉区間についておさらいしておきます。 開区間は(left,right)のように表され、両端点を含まないleftからrightまでの区間を表します。 一方で閉区間は[left,

    半開区間の魅力 〜プログラミングでのスマートな区間の扱い方〜 - Qiita
  • 畳み込みの視点から見たforall(every)とexists(some): 空集合に対するforallは常にtrueになる - Lambdaカクテル

    こういうツイートが話題になっていた。 「配列のすべての要素が条件を満たすならtrueを返す」関数を定義するとき、空の配列を渡したらfalseを返すかtrueを返すかが、良いプログラマかどうかの一つの境目だ— ふみ (DJ Monad) (@fumieval) 2023年5月29日 つまりScalaで言うと次のようなコードが何になるか、というものである。 val xs = Seq.empty[Int] xs.forall(_ == 42) 結論から言うと、このような関数は常にtrueを返す。 なぜだろう?その理由をこれから説明する。 ちなみに他に以下のような意見があった: 仕様による 例外を投げるべき いずれもまぁありえなくはないが、やめておいたほうが良いと思う。もし仮にfalseを返すような仕様があった場合、それは数学から乖離しているのでいずれ仕様内部で矛盾する可能性が高いし*1、最終的に

    畳み込みの視点から見たforall(every)とexists(some): 空集合に対するforallは常にtrueになる - Lambdaカクテル
  • A Road to Common Lisp 翻訳

    a_road_to_common_lisp_jp.md この文章は、 Steve Losh 氏の記事 "A Road to Common Lisp" の翻訳です。 原文はこちらです: http://stevelosh.com/blog/2018/08/a-road-to-common-lisp/ A Road to Common Lisp (Common Lisp への道) これまで、「最近のCommon Lispをどう学ぶとよいでしょう?」と助言を求めるメールをたくさん受け取ってきました。そこで私は、これまでメールやソーシャルメディアに投稿した全てのアドバイスを書き下すことにしました。これが誰かに有益ならば幸いです。 先に注意: この記事はCommon Lispへの 一つの 道であり、Common Lispへの 唯一の 道ではありません。これは私が辿ってきた道(行き止まりを除く)であり、

    A Road to Common Lisp 翻訳
  • 中高生のためのプログラミング学習サービス「Jasmine Tea」の提供を開始しました|Tably

    日から、プログラミング初心者向けのテキストプログラミングサービス「Jasmine Tea (ジャスミンティー)」の提供を開始しました。 Jasmine Teaを使うことで、格的なプログラミングに必要な技術を習得することができます。ビジュアルプログラミングの次のステップとして、あるいは学校の情報科目で学んだことを実践する場としてもお使いいただくことが可能です。 Jasmine Teaの特徴特徴1: Web上でプログラミング学習環境を提供Jasmine TeaはWeb上でプログラミング学習のための環境を提供しています。ブラウザーだけで、プログラムの作成と作ったプログラムの実行が行えます。また、学習に必要となるドキュメントやサンプルプログラムもオンラインで用意されています。 特徴2: 学習に適したテキストプログラミング言語Jasmine Teaはプログラミング初学者向けのテキストプログラミン

    中高生のためのプログラミング学習サービス「Jasmine Tea」の提供を開始しました|Tably
  • Webサーバーアーキテクチャ進化論2023

    はじめに 最近プログラマーとしてのキャリアに一区切りつけようと思っており、これまでのプログラミングの勉強の集大成となるブログを書きたくなったので書く。初めてプログラミングをして、フロントエンド開発をして、サーバーから値が返ってきたときは「どういう仕組みで値が返ってきたんだ?」と疑問に思っていた。ずっと理解したくて理解できていなかった。だからずっと勉強していた。そして最近になってようやく自分の言葉で説明できるようになった気がしたのでブログを書きたい。 2015 年版が自分の原点であり、この記事を書くモチベーションになった このような記事は実は過去に存在している。 FYI: https://blog.yuuk.io/entry/2015-webserver-architecture その記事はサーバーがどういう仕組みで動いていて、どのように進化し、2015 年に至るかを解説してくれた記事だ。自

    Webサーバーアーキテクチャ進化論2023
  • 入れ子構造を自由に拡張する – TypeScript版「Trees that Grow」 | IIJ Engineers Blog

    Haskellユーザーグループ(愛称 Haskell-jp)発起人の一人にして、Haskell-jpで一番のおしゃべり。 HaskellとWebAssemblyプリキュアとポムポムプリンをこよなく愛する。 This is a Japanese translation of Flexiblly Extend Nested Structures – “Trees that Grow” in TypeScript. 抽象構文木(AST, Abstract Syntax Tree)の扱いに慣れた一部のHaskell開発者の間では、「Trees that Grow」というイディオムが一般的で、Haskellの最も有名なコンパイラ、GHCにおいても採用されています。今回は、この「Trees that Grow」をTypeScriptで実現するにはどうすれば良いかを共有しましょう。 あらまし Ha

    入れ子構造を自由に拡張する – TypeScript版「Trees that Grow」 | IIJ Engineers Blog
  • 「SPAのタブ永遠に開きっぱなし問題」を更新ボタンを設置せず解決した - 橋本商会

    こんにちは。強いUIはボタンを捨てるをスローガンにScrapboxを開発しています。shokaiですshokai.icon Helpfeel Advent Calendar 2022の5日目の記事です 昨日はHelpfeelエンジニアのyado.iconさんでした 採用面接中にチャーハン・ピラフ判定器とスタバ警察botで盛り上がる会社に入った | 株式会社Helpfeel ヨコハマハウスフラペチーノがエンジニア採用の役にたった?みたいで良かったです <a>タグの挙動を工夫する事で、Scrapboxからみたいなボタンをなくしました 更新ボタンの役割は2つ 更新がある事を教える 押すとアプリが更新される Scrapboxも昔こういうメニューがあった 今はもう無い では解説ですshokai.icon SPAのタブ永遠に開きっぱなし問題とは? SPAとstaticなwebサイトの違い static

    「SPAのタブ永遠に開きっぱなし問題」を更新ボタンを設置せず解決した - 橋本商会
  • 未経験者がプログラミングを学びたいと思った時に最初に読む記事

    ここ数年プログラミングを学びたい人が増えている。そうした需要に応じて有象無象のプログラミングスクールや不適当な内容の学習サイトも増えている。中には粗悪なスクールやオンラインサロンも沢山ある。しかし未経験者にはどれがいいスクールなのか悪いスクールなのか等の審美眼はない。 この記事では未経験者がそういった情報弱者をい物にする偽物に騙されないように滑らかに学習を進めていくための道筋について書く。 この記事の対象読者は下記。 教養としてプログラミングを学びたい未経験者 とにかくWebサービスやアプリを作りたくてプログラミングを学びたい未経験者 プログラマとして職を得たい未経験者 以下、まずは全ての対象読者向けの下準備について書き、その後それぞれの対象読者向けに道筋を書く。 目次 準備 教養としてプログラミングを学びたい人の場合 とにかくwebサービスやアプリを作りたくてプログラミングを学びたい人

    未経験者がプログラミングを学びたいと思った時に最初に読む記事
  • CS50 for Japanese: コンピュータサイエンスの入門 – 当ウェブサイトは、Creative Commons ライセンスに基づいて管理されています。

    お知らせ: 2022/9/1 CS50 を活用した非営利/協賛企業による「コロナ学生支援」プロジェクトを実施中 ▼ 学生の方へ:CS50 の学習(履修証明書の取得)を一緒に取り組むプロジェクト CS50日語版の翻訳コントリビューターである CODEGYM が主催する、非営利/無償のプロジェクト「CODEGYM Academy (外部リンク)」は、昨年に続き2022年度(春/秋)も、キャリア選択を控えた学生に対し、以下の企業の協賛により無償で17週間のプログラミング教育カリキュラムを提供します。 CODEGYM Academy 協賛企業(2022年) https://codegym.jp/academy/ 今年度のエントリーは締め切りました — ようこそ! このページは、ハーバード大学 CS50 の日語版翻訳プロジェクトのページです。当サイトのドメインに掲載されているコンテンツは、Cre

    auient
    auient 2022/09/03
    動画とノートがある。2022年9月2日に日本語化が完了。
  • sji on Twitter: "https://t.co/ZkveNdJRiR Fragile base-class problem (FBCP) は継承を使うと親クラスへの安全そうな変更が子クラスの機能不全を起こし得るという例の問題で、final 使おうという… https://t.co/aJ2xkNgrPQ"

  • The Missing Semester of Your CS Education (日本語版)

    The Missing Semester of Your CS Education (日語版) 大学の講義ではオペレーティングシステムから機械学習まで、 コンピュータサイエンスの様々な発展的トピックを学びます。 しかし、重要であるにも関わらず講義で教わることはめったになく、 したがって自分で学ばなければならないことがあります。 それは「コンピュータを操作するツールを習熟すること」です。 講義では、コマンドライン操作をマスターすること、パワフルなテキストエディタを使いこなすこと、 バージョンコントロールの様々な機能に触れること、などなどを教えます! 学生は大学生活を過ごすうえでそういったツールを使うことに何百時間も費やします (その後のキャリア全体を考えれば何千時間も使うと言えるでしょう)。 よって、ツールを使う経験を可能な限り流暢で淀みない状態にしておくということは、 非常に有意義であ

    auient
    auient 2022/07/24
    「コンピュータを操作するツールを習熟すること」の講義。1回の長さも短めでいい。
  • ざっくりとしたZigの紹介

    BunのおかげでZigに注目する人が増えたように感じます。 個人的にZigを使ってる人間として紹介がてら自分のZigに対する印象を書いていきます。 どんな言語か(公式) 「堅牢で最適で再利用可能なソフトウェアを維持するための汎用プログラミング言語」 公式のより詳しい紹介はこちら Cをベースに現代的な機能を追加している Raylibのサンプルコード // raylib.comから引用(いくつかのコメントを削除) #include "raylib.h" int main(void) { const int screenWidth = 800; const int screenHeight = 450; InitWindow(screenWidth, screenHeight, "raylib [core] example - basic window"); SetTargetFPS(60);

    ざっくりとしたZigの紹介
  • Re: ドメイン固有型(値オブジェクト含む)を再考する - Software Transactional Memo

    blog.j5ik2o.me 値オブジェクトはドメイン固有型の一種です。なので、不変と等価判定だけではなく、なにかしらのドメイン固有の不変条件(invariant)を維持する責任があると考えます(もちろん型として切り出すわけですからその投資に見合うだけの見返りがないといけません)。 違う。値オブジェクトとはID以外で等価判定をするオブジェクトの事であって、RubyのHash、Pythonのdict、C++のstd::unordered_setすらも値によって等価判定を行うのでこれらは値オブジェクトであるがドメイン固有型ではない。RubyでHashに入れて渡されたユーザ入力値をValidationしてドメイン固有型に詰め直すのはもちろん必要ならやれば良いが、Hashクラスそのものにモンキーパッチなり特異クラスなりを行って不変条件を維持する責任を負った自分専用Hashを作って普通のHashクラ

    Re: ドメイン固有型(値オブジェクト含む)を再考する - Software Transactional Memo
    auient
    auient 2022/05/19
    「モデリングツールとして正当な値しか持ちえないオブジェクトが欲しければ作れば良いけれど、それには適切な名称を付けるべきであって、値オブジェクトの定義を独自解釈で拡張すべきではない。」せやな