タグ

プログラミングに関するcad-sanのブックマーク (305)

  • 「情報 I・II」を学んだ高校生の技術レベルってどのくらい? 元エンジニア校長にホントのところを聞きました【フォーカス】 レバテックラボ(レバテックLAB)

    TOPフォーカス「情報 I・II」を学んだ高校生の技術レベルってどのくらい? 元エンジニア校長にホントのところを聞きました【フォーカス】 「情報 I・II」を学んだ高校生の技術レベルってどのくらい? 元エンジニア校長にホントのところを聞きました【フォーカス】 2024年5月22日 工学院大学附属中学校・高等学校 校長 中野 由章 芝浦工業大学大学院工学研究科修了(電気工学専攻)。日アイ・ビー・エム大和研究所を経て、1993年から教職の道へ。三重県立尾鷲工業高等学校や大阪電気通信大学など、多様な機関で教鞭を執り、教育と情報科学を専門分野として研究を重ねる。2021年より現職。情報処理学会の初等中等教育委員会委員長も務める。愛称は、日IBM時代に同僚に付けられた「ジョニー」。明確な由来はない。 工学院大学附属中学校・高等学校 高校における情報教育のあり方が、大きく変わろうとしています。20

    「情報 I・II」を学んだ高校生の技術レベルってどのくらい? 元エンジニア校長にホントのところを聞きました【フォーカス】 レバテックラボ(レバテックLAB)
  • 令和時代の API 実装のベースプラクティスと CSRF 対策 | blog.jxck.io

    Intro CSRF という古の攻撃がある。この攻撃を「古(いにしえ)」のものにすることができたプラットフォームの進化の背景を、「Cookie が SameSite Lax by Default になったからだ」という解説を見ることがある。 確かに、現実的にそれによって攻撃の成立は難しくなり、救われているサービスもある。しかし、それはプラットフォームが用意した対策の質から言うと、解釈が少しずれていると言えるだろう。 今回は、「CSRF がどうして成立していたのか」を振り返ることで、当にプラットフォームに足りていなかったものと、それを補っていった経緯、当にすべき対策は何であるかを解説していく。 結果として見えてくるのは、今サービスを実装する上での「ベース」(not ベスト)となるプラクティスだと筆者は考えている。 CSRF 成立の条件 例えば、攻撃者が用意した attack.examp

    令和時代の API 実装のベースプラクティスと CSRF 対策 | blog.jxck.io
  • タイムスタンプの精度を落とすときは切り捨てろ - methaneのブログ

    とあるプロジェクトでナノ秒からミリ秒への変換で四捨五入してきた人がいて、時刻を扱うときは保存精度未満は切り捨てるべきというのが常識になっていないなーと思ったので。 2023-10-01 を、何年か表示する時に、2024年に丸める人はいないだろう。 13:45 が何時か表示する時も、13時と表示するだろう。(口頭で何時?と聞かれたら14時と答えるかもしれないけれど) つまり、ある精度で表した時刻は、実際には次のような半開区間を示しているのである。 2023-01-01 00:00:00 <= 2023年 < 2024-01-01 00:00:00 13:45:00.000 <= 13:45 < 13:46:00.000 そして、そう決めたからには一貫して同じように、指定精度未満は切り捨てというルールを維持しなければならない。秒以下は四捨五入で、とかやってはいけないのだ。 一貫しないと何が問題

    タイムスタンプの精度を落とすときは切り捨てろ - methaneのブログ
  • PlayStation Programming with MIPS Assembly and C

    This course is a deep dive into the world of PlayStation programming! We'll explore the PS1 hardware, understand its sub-components, and learn how to code games using MIPS assembler & the C programming language. We'll also learn how to use a PS1 SDK library paired with a modern development toolchain to be more productive and push fast polygons out of our console. We are about to enter the 5th gene

    PlayStation Programming with MIPS Assembly and C
  • はじめに | ちいさな Web ブラウザを作ってみよう

    はじめに | ちいさな Web ブラウザを作ってみよう
  • 浮動小数点型の算術とお近づきになりたい人向けの記事 - えびちゃんの日記

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

    浮動小数点型の算術とお近づきになりたい人向けの記事 - えびちゃんの日記
  • 良いソフトウェアとコードレビュー / Good software and code review

    Scala + Caliban で作るGraphQL バックエンド / Making GraphQL Backend with Scala + Caliban

    良いソフトウェアとコードレビュー / Good software and code review
  • AIにプログラミング作業を奪われている - k0kubun's blog

    せっかく10年以上かけて学んだプログラミングだが、人間がコード書くよりChatGPTにやらせた方が早いなということが度々あり、だんだん自分でプログラミングをやる時間が減ってきた。AIにコードを書かせてそれをGitHubにコピペして残りの時間は遊んでるだけで成果が出てお給料ももらえる日は近いし、段々会社もそのことがわかってきて失職する日も近い。 残念ながら現時点では全ての仕事AIで上手くいくわけではないが、どういう時に使えるかを知っておくと楽をしやすくなるので、僕がどう使っているかをまとめておく。 失職できるケース 簡単なスクリプトを高速に書かせる 僕はRubyが全ての言語の中で一番慣れており、StackOverflowやドキュメントをほぼ見ずに大抵のプログラムを書き切れるため、Rubyを書いている時がプログラマとして一番生産性が高いのだが、それでも最近AIRubyを書かせたことがあった

    AIにプログラミング作業を奪われている - k0kubun's blog
  • 自分を救うプログラミング|naoya

    子どものころは絵を描くのが好きだった。 学校の休み時間は、クラスメートはみな外にサッカーをしにいっていたが一人教室にのこってノートに漫画を描いている、そんな小学生だった。 自宅に戻っても、自室にこもってよく漫画を描いていた。 漫画と書くいっても、別に人を楽しませるために描いているわけではなかった。もちろん褒められると嬉しかったが、それが目的だったわけではなく、いま思えば、それは自分で自分を癒すかのような行為だった。自分を救うために絵を描いていた。 絵を描いているときは、それに夢中で没頭していて、ほかの何にも代えがたい時間を過ごすことが出来た。この時間が、どこか自分の救いになっていた。 中学二年生ぐらいになって思春期にさしかかった頃だろうか。教室で絵を描いていると浮いてしまうことに気づいて、恥ずかしくなって、描かなくなった。 それでもやっぱり絵を描いたりなにか作品を作ったりするのは好きだった

    自分を救うプログラミング|naoya
  • きれいなコードは互いに似通っているが、クソコードはどこもその趣が異なっている - きしだのHatena

    先日のJJUG CCC 2023 Fallの懇親会でクソコードを研究しているという学生がいたのだけど、クソコードの研究は難しいという話をした。 人工的にクソコードを再現しても、あの野生のクソコードのクソさには全く足りないわけで。 トルストイが言うように「すべてきれいなコードは互いに似通っているが、クソコードはそれぞれにクソの趣を異にしているものである」なので、なかなか「これがクソコード」のように類型化するのも難しい。 典型的なクソコードを書いてみても、なんだかきれいなクソコードができてしまう。 クソコードはネットに出回らないので、資料の収集もまた難しい。ネットにないということは、ネットの情報に基づいている「AI」もホンモノのクソコードには触れていないことになる。 クソコード収集サイトをつくっても、実際のクソコードは業務固有処理も含まれるので、掲載できる形に整理していくと来のクソさが薄れて

    きれいなコードは互いに似通っているが、クソコードはどこもその趣が異なっている - きしだのHatena
  • タスク指向のデザインはなぜ生まれるのか?

    『タスク偏重のデザインはなぜ生まれるのか?』の続きです。 簡単だから 画面を見て悩むデザイナーが「全体はよくわからないから別にしてこの中だけ作るか」と言いながらボタンの先に画面を連ねようとしている オブジェクト指向のUIにするには手順を解体し、オブジェクトを中心に構造化する必要があります。重複しているものはマージし、必要に応じて新しいオブジェクトを定義したり新しいイディオムを検討することもあります。 (例:「簡単に新規作成する」という機能に対して複製、テンプレート、マスターというイディオムを検討する) これらはそれまで作ってきたものとうまく整合するようにしなければいけませんし、整合しないならどこをやめたら全体としてひとつの形にできるのか考えることになります。これは大変です。 対してタスク指向のUIデザインは簡単です。 新しいタスク用に新しい入り口を作って、必要な入出力を線形に並べ、例えばウ

    タスク指向のデザインはなぜ生まれるのか?
  • 「ガベージコレクション 自動的メモリ管理を構成する理論と実装」を読んだ

    最近「おれってガベージコレクションを勉強するにあたってめちゃくちゃ恵まれた環境にあるのでは?」とふと思い立ち、ベージコレクションの勉強を始めました。 ガベージコレクションの勉強を始めるにあたって、とりあえず「The Garbage Collection Handbook (first edition)」の邦訳である「ガベージコレクション 自動的メモリ管理を構成する理論と実装」を読むことにしました。 この記事では、読み終わってうれしいので、雑に感想を書きなぐっています。表記が「GC」だったり「ガベージコレクション」だったりするのは雑に書いたからです。 前提知識 ガベージコレクションの事前知識はほとんど不要で、何をしてくれるものか大まかにわかっていれば良い程度だと思います。つまり、ヒープに確保した領域を明示的に解放しなくても、何かのアルゴリズムでいい感じにやってくれる仕組み、ということを知って

    「ガベージコレクション 自動的メモリ管理を構成する理論と実装」を読んだ
  • strlen() の深淵 - Qiita

    あらまし strlen() という関数がある。御存知の通り、文字列の長さを算出する標準 C ライブラリの関数だ。 やってることは単純で、例えば以下のように実装できる。 size_t strlen_simple(const char* str) { const char* p = str; while (*p) ++p; return size_t(p - str); } '\0' が見つかるまでポインタを進め、初期位置との差分を返すだけだ。これで機能的には std::strlen() と同等である。 では、速度的にはどうだろう?適当にベンチマークを書いて MSVC 2022 でコンパイル&実行するとこうなった。

    strlen() の深淵 - Qiita
  • 「良い名前付け」の参考サイトまとめ - Qiita

    おはようございますこんにちわこんばんわ。どうもぶたです。 以前、チーム内で「変数や関数の名前に妥協したくないなー。どうしたら上手く命名できるんだろう?やっぱり英語の勉強?」という話になったので、今回は名前付け、命名についてまとめます。 とは言え、自分自身多くの記事やドキュメント、書籍などに助けられているので、ほぼ紹介記事になります。 ただ、順番には気をつけた方がいいと個人的には思っています。 何事もそうですが、なぜやるのかを知ってからどうやるのかを学ぶべきかな、と。 例えば、「この単語とこの単語はニュアンスが違う」「そんな単語存在しないよ」「単数と複数が間違ってる」 そんなレビューを受けたことがある人もいると思います。僕も言われたことがあります。 そういった内容の記事もたくさんあります。僕も読み込んでいますしストックして参照できるようにしています。 それはそれで有用ですし、是非意識していき

    「良い名前付け」の参考サイトまとめ - Qiita
  • 空の配列に対するmaxは何を返すか - きしだのHatena

    ちょっと前に「配列中のすべての要素が条件を満たすかどうか判別する関数で、空の配列はTrueを返すべきかFalseを返すべきか」のような話が話題になってました。 まあこれは「Trueを返す」が答えなわけですが、では「配列中の最大値を返す関数で空の配列の場合は何を返すか」が気になりました。 「配列中のすべての要素が条件を満たすかどうか判別する関数」について言えば、簡単に言えばこんな感じ。 まず、配列のすべての要素が偶数であるかどうか判別する関数を考えます。 void main() { int[] data = { 23, 44, 12, 98, 5 }; System.out.println(allEven(data)); } boolean allEven(int[] data) { for (int n : data) { if (n % 2 != 0) return false; } r

    空の配列に対するmaxは何を返すか - きしだのHatena
  • Mojo 🔥

    先日プログラミング言語 Mojo と呼ばれるもののアナウンスメントがあった。この言語のデザインが私のスイートスポットに刺さる感じだったので、今のうちから注目している。使いたいなというか、将来使うことになりそうな言語なので簡単に何ができそうかを調査してまとめておきたい。 ウリとしては「C 並のパフォーマンスが出る Python」といったところだろうか。 k0kubun さんからコメントを裏でもらって、これって要するに並列化とか SIMD 化とか入れたら35,000倍のパフォーマンスが出るようだけど、これは Python の部分とは呼べなくて、素の Python 動かして当にそういえるかは怪しくない?とのことで、判断保留します 🙇🏻‍♀️ k0kubun さんありがとう 言語のデザインとしては、AI 開発に向けたプログラミングを提供できるよう設計されていると感じる。表側は Python

    Mojo 🔥
    cad-san
    cad-san 2023/05/06
    Python互換だけど、Python代替というよりは、golangの業務領域を取りに来た感じがするな。Pythonよりパフォーマンスを求められるが、RUSTほどstrictでない領域
  • C10K 問題、実は理解していない

    お願い 「C10K 問題とは何か」がわかる方は是非 Issue や Twitter などで教えてください。 追記: 自分の立場 1req ごとに 1 native thread を割り当てていたら、クライアントの数が増えれば増えるほど負荷が高まるのは当然だ。ただハードウェアの性能的に余裕があっても性能が劣化することがあり、それを C10K 問題と呼ぶ。C10K 問題は fd, pid の枯渇、スレッドを固定長サイズで確保することによるメモリの無駄遣い、コンテキストスイッチコストを含む。これを解決する方法が 1req ごとに 1 native thread を割り当てない技術で、シングルスレッド+イベントループ+IO 多重化といったテクニックや M:N モデルにつながる。 追記: @naoya_ito さんに解説してもらった当時の歴史的背景 https://twitter.com/naoya

    C10K 問題、実は理解していない
  • ソフトウェアエンジニアとしての能力を高める方法について考えてみた - joker1007’s diary

    早朝の寝る前ぐらいの時間にぼやっと下記の様なツイートしたらちょっと反応を貰ったので、取り留めは無いが自分なりに考えていることを書いてみる。 人を育てるのも仕事の内というのは完全にその通りなんだが、そこにドキュメントやがあるから読みます、触って作ってみます、生きたコードを読みます、以外に学ぶ方法なんかねえし、知らねえよ。ただやればいいだけの事に説明も何も無いんだよな……。マジ分からん……。— joker1007 (アルフォートおじさん) (@joker1007) March 2, 2023 タイトルは雑に書いたけど、能力を高めるというと範囲が広過ぎるので、技術的な意味でできる事が増える、ということをテーマとして話をしていこうと思う。基的に自分の考え方の話なのでそこは御留意ください。 ツイートした通りで、状況や対象に依って割合は変わるかもしれないが基的にそのためにやることは3つしかないと

    ソフトウェアエンジニアとしての能力を高める方法について考えてみた - joker1007’s diary
  • この10年のプログラミング言語の変化 - 西尾泰和のScrapbox

    @nishio: あ、そうか、10年前からあったけど10年間の間に勢力を拡大したケースがあるからあんまり厳しく切らない方がいいのか(TypeScriptの登場が2012年、Rustの登場が2010年だった)

    この10年のプログラミング言語の変化 - 西尾泰和のScrapbox
  • 実践 よくないコードに立ち向かう整理術 〜あなたのコードはどんな色?〜

    ありがちな仕様とコードを題材に、よくないコードに立ち向かうための整理術を紹介します。 この Book にはデザインパターンや DDD やオニオンアーキテクチャや関数型プログラミングなどは一切登場しませんが、それらのエッセンスと日常のコーディングにおいて求められる基礎的な考え方の説明が含まれています。 この Book の内容は、特定の業務領域やプログラミング言語・フレームワークには限定されません。 Laravel でも RoR でも Spring でも React でも Nuxt.js でも、きっと役に立つはずです。 逆にこのにはクラス設計のべき論や OOP vs FP のような議論は含まれません。 画一的なコードの良し悪しの定義は難しいですが、何かしら得るものがあったと感じてもらえたらうれしいです。

    実践 よくないコードに立ち向かう整理術 〜あなたのコードはどんな色?〜