タグ

プログラミングに関するrryuのブックマーク (539)

  • エラーが出たら喜べ。エラーをちゃんと出せ。 - Qiita

    どうもエラーを出すもしくはエラーが出るのが怖いという人がいるみたい。例えば改修を行うときに既存部分でエラーが出ないことを最優先にして増築を行いいびつな構造を生み出すとか、単純に例外を全然使わないとか。エラーが出ると、「うわ、エラーになった。手間かけさせやがって面倒だなぁ…」みたいな感覚があって、とにかく自分がコードを書くときも一切例外を投げないというスタンスをとりがちなのかもしれない。 私はここで、適切にエラーが出てくれるのはむしろ喜ばしいことであり、自分がコードを書くときも積極的にエラーを出すようにすべきだ、という主張をする。 関数定義のドキュメンテーションの一部 ある関数の中身で一番最初に書くべき処理は何か、それは引数のチェックをして条件を満たさなければエラーを出すことである。例えば文字列は特定の形式になってなければならないとか、数値に最大値最小値があるとか、これらは関数の入力の前提条

    エラーが出たら喜べ。エラーをちゃんと出せ。 - Qiita
    rryu
    rryu 2024/05/05
    なぜか一部の処理が行われない場合があるという一番きつい不具合を経験すると考え方が変わる。
  • そろそろ「ググる力」とかいう妄言は根絶した方がいい

    従来プログラミング業界においては、やれ「ググる力が重要」だの、やれ「分からないことはググればいい」だのと言われてきたわけだが、もうそろそろこういう妄言は根絶されるべきだ。 そもそも、専門知識の要る分野でそれなりの水準の仕事をしようと思えば、ググって済むようなことはほとんどない。 実際、プログラミング以外のあらゆる分野で「ググればいい」なんて言われることはほぼ無い。その分野の仕事に必要な基礎知識を身につける方が圧倒的にウェイトが高いからだ。 「ググる力」とか言ってるアホは、じゃあためしに俺の手元に、タネンバウムの「コンピュータネットワーク」第6版があったから、これと同等の知識を、コーディング時の調べ物だけで身につけてみてくれないか。 こんな知識は業務で必要ない?そりゃお前がその程度の仕事しかしてないってだけだろ(笑) ネットのサンプルコードコピペするしか能のないIT土方、コンピュータサイエン

    そろそろ「ググる力」とかいう妄言は根絶した方がいい
    rryu
    rryu 2024/04/28
    基礎は別途学べというのは分かるが、一切ググらずに公式ドキュメントの該当記述に辿り着くというのはかなりの縛りプレイだと思う。
  • キャッシュと向き合う、キャッシュと共に生きる / cache pattern

    PHPerKaigi 2024の登壇資料です。 https://phperkaigi.jp/2024/ - https://speakerdeck.com/moznion/pattern-and-strategy-of-web-application-caching - https://soudai.hatenablog.com/entry/cache-strategy

    キャッシュと向き合う、キャッシュと共に生きる / cache pattern
    rryu
    rryu 2024/03/04
    キャッシュはキャッシュすることよりも適切に更新することの方が難しい。適切に更新できないと不具合になる。
  • うるう日にしか発生しないバグ

    昨日うるう日にしか発生しないバグに遭遇した。Javascriptを書く人には有名な話だとは思うので大して面白くはないかもしれないが一応メモ。 詳しくは書けないがバグが発生した関数の仕様としてはざっくりと下記のような感じ。 対象の年月日が基準日の1年前から1年後の間に含まれる場合はtrueを返しそうでない場合はfalseを返す 引数として2020-12-24というフォーマットの文字列が渡される(判定対象の日) 引数として2021-01-01というフォーマットの文字列が渡される(+-1年の基準日) Javascriptで書く (例) 対象の日: 2024/10/10 基準日: 2024/01/28 この時、trueになる範囲は2023/01/28 ~ 2025/01/28。なので2024/10/10はtrue。2023/01/28も2025/01/28もtrueになる。閉区間。 とあるコードの

    うるう日にしか発生しないバグ
    rryu
    rryu 2024/03/03
    日付の計算は規約や法律で決まっているのでそれに従って実装しなくてはならず、ライブラリの実装に安易に頼ってはいけないのである。
  • 継承はなんでダメ? - まめめも

    「オブジェクト指向の継承を使うな」という主張が広まっているようです。なんでダメになったんでしょうか。 インターネットで見かけた「継承はダメ」という主張をいくつか眺めて、友人と議論しつつ、考えてみました。 「コードが読みにくくなる」 継承があると、メソッド呼び出しが実際にどのメソッド定義を呼び出すのか字面でわからない。 デバッガを使って、親クラスのメソッドに飛んだり、子クラスに飛んだりするのを追いかけないと行けない。 つらい。という主張。 めっちゃわかる。わかるんですが、これは「高度に共通化されたコードは読みにくい」という一般的な側面がかなり大きいような。 たとえば継承の代わりに高階関数を使うと、関数呼び出しがどのクロージャに飛ぶか字面でわからなくなる。 ひどいとコールバック地獄になって何が何やらになります。 継承がことさらにまずい理由を想像すると、すべてのメソッド呼び出しがポリモーフィック

    継承はなんでダメ? - まめめも
    rryu
    rryu 2024/02/10
    まあ条件演算子禁止と同じようなもので、理解できない人、とんでもない使い方をする人がいて、かつ使わなくても大抵なんとかなるから禁止という感じ。
  • プログラミングの終焉と生存戦略|k1ito

    この文章は何: 近年の生成AIブームにより、革命的なまでにプログラミングという仕事の形は変わることが予想され、実際、今までにない速度で世界が効率化され様々なサービスがローンチされていく中「使う側」としても「作る側」としても「IT業界(特にSaaS業界など)での生存」は難しくなっているように感じます。正解を知っていたらとっくに僕は大儲けをしているわけですが、当然わかるはずもなく生存戦略に苦しむだけの中での寝言です。 まとめと結論めいたもの:AI技術の発展により「プログラミング」と呼ばれる「人間の仕事を機械に引き継ぐ行為」のほとんどはゼロコストで行えるようになり、少なくとも今ほどの価値や競争優位の源泉とはならないだろう。今やるべきは、AIを自社の競争優位の源泉とするべく、まるで人材投資のようにAIへの引き継ぎ書を書くことと、AIの研修制度を作ることかもしれない。 プログラミングという仕事の終焉

    プログラミングの終焉と生存戦略|k1ito
    rryu
    rryu 2024/02/04
    アセンブリ言語から高級言語に移り変わったように、もう一段抽象化の段階が進んだだけでプログラミングはしていくのだと思う。きっとプロンプトのコピペプログラマーが出てくる。
  • プログラミング言語 HTML 入門

    はじめに 以前 uhyo さんにより「HTML はプログラミング言語である」と示されたことは記憶に新しいところですが、昨年末の HTML, The Programming Language の登場により、その主張はより強固なものとなりました。現代ではもはや、HTML は立派なプログラミング言語であるということは疑いようがありません。 この記事では、プログラミング言語 HTML, The Programming Language について、その概要と基的な文法について説明します。そして最後に、HTML プログラミングの応用例として FizzBuzz やフィボナッチ数列の実装例を見ていきます。 HTML, The Programming Language HTML, The Programming Language (以下 HTML と略します) は、HTMX を開発していることで有名な B

    プログラミング言語 HTML 入門
    rryu
    rryu 2024/01/20
    HTMLの要素名にinputやoutput、sub、divみたいなプログラム言語に使えそうなものがあるから作ったネタ言語だと思うが、(a)ddと(m)ulはなかなか苦しい感じがする。
  • 祖母が就寝するとDBインサートができなくなる - Qiita

    世の中には、一見関係なさそうな物理現象がITシステムに不可思議な影響を及ぼすことがあります 例えば,500マイル以上離れた場所にメールが送れないという話だったり 中国人のAさんがお茶を入れると会社のネットが繋がらなくなる という話があります。 私の場合は、祖母が就寝するとDBインサートが失敗する、という状況でした 実家の見守りシステム 問題が起きているのは、離れた実家にいる一人暮らしの祖母の状態を見守るために作成した自作のシステムです。 気温や湿度、CO2濃度、明るさ、部屋のドアの開閉、冷蔵庫の開閉の状況をモニタリングできるようにしています。 Raspberry Piに各種センサが接続され、定期的にInfluxDBに送信し、Grafanaという可視化ツールでいつでも見られるようにしています。 これらの情報を見ることで、祖母の家の部屋の温度が適切か、活動しているか、部屋にいるかなどが分かりま

    祖母が就寝するとDBインサートができなくなる - Qiita
    rryu
    rryu 2024/01/08
    DBの暗黙の型変換で文字列が数値型に変換されていて、整数と解釈できる場合は整数型になるが、整数型から浮動小数点数への暗黙の型変換はないのでエラーになるとかじゃないだろうか。
  • else ifが複数回出てきたら考えること

    こんにちは!アルダグラムでエンジニアをしている@sohichiroです。 記事は株式会社アルダグラム Advent calendar 2023 13日目の記事です。 前日は、@kageyama さんによる、SQLインジェクションの話でした。 セキュリティはいつも万全にしておく必要があるので、大変ためになる記事でした。 さて、隠れ関西民として関東地方に生息している私にとっては、翔んで埼玉〜琵琶湖より愛をこめて〜は、いろいろ込み上げてくるものがありました。確かに兵庫県は神戸と芦屋だけが飛び抜けて都会指数が高いですよ😂(私、兵庫県の田舎の方出身)。関西弁を勉強したいなら、格好の教材だと思いました。 else ifが複数回出てくることのつらみ さて、else ifです。 else if。プログラマーであれば、一度は書いたことあると思います。 言語によっては、elsif(Ruby)、elif(P

    else ifが複数回出てきたら考えること
    rryu
    rryu 2023/12/17
    フラグが3個あったら表せる状態は8個なのにelse ifの連鎖だと4個しか処理がないのが不安の元凶だと思う。こういうのはフラグを立てる側が配慮しているのだが、いつかその前提は崩れる。
  • "「0.1+0.2≠0.3」だから浮動小数点数を扱うときには気を付けましょう" はいいんだけど結局どうしたらいいのかまでフォローしたほうが親切だと思ったので調べてみた - Qiita

    "「0.1+0.2≠0.3」だから浮動小数点数を扱うときには気を付けましょう" はいいんだけど結局どうしたらいいのかまでフォローしたほうが親切だと思ったので調べてみたPythonプログラミング初心者数学浮動小数点数 釣られた https://qiita.com/higashi_nc/items/9a5ea00415a008f06843 に釣られて読みました。 2行でまとめると以下のような内容です。 10進数の0.1や0.2は浮動小数点数で表すとピッタリ0.1や0.2にはならずに誤差が出る 浮動小数点数の扱いを理解して、より堅牢なプログラムを作成することを願っています。 え?結局どうしたらいいの?という感想だけ残ったので各言語での浮動小数点数同士の比較の方法を ChatGPT に教えてもらいました。 結局どうしたらいいのか 基的に浮動小数点数同士の差がある程度の誤差より小さければ同じ数であ

    "「0.1+0.2≠0.3」だから浮動小数点数を扱うときには気を付けましょう" はいいんだけど結局どうしたらいいのかまでフォローしたほうが親切だと思ったので調べてみた - Qiita
    rryu
    rryu 2023/12/12
    結局、差の絶対値が誤差の範囲内であれば同じとみなすということなのだが、どこまでを誤差にするかは扱う値の範囲によるのでこれとは言えずなかなか難しい。
  • プログラミングの原則:enumの比較はすべてバグ - Uzabase for Engineers

    こんにちは、ソーシャル経済メディア「NewsPicks」のむとうです。 この記事は NewsPicks アドベントカレンダー 2023 の3日目の記事です。 昨日は@J_Nakagawa(隼佑 中川)さんによる『LambdaレスポンスストリーミングとAWS-SDKを使ってSlackに進捗バーを表示させる』でした! 世の中には再現が難しく一見してバグがありそうに思えないコードもありますが、一方でプロダクションコードの中にはひと目見てバグが有りそうなコードもまた多いものです。いくつかの特定のパターンをとる文字列(環境名など)やenum(以下どちらもenumと表現します)に関する条件分岐もその一つです。プルリクを見てこのようなパターンがあれば、バグの疑いが強くなります。周囲を見渡すと、大抵すでにバグっているか潜在バグを含むコードが見つかります。すべてバグというのは言い過ぎにせよ、わかりやすさと変

    プログラミングの原則:enumの比較はすべてバグ - Uzabase for Engineers
    rryu
    rryu 2023/12/03
    権限やできることをチェックする系は始めは単純なのだが必ず複雑化するのでこんな感じになりがちである。
  • きれいなコードは互いに似通っているが、クソコードはどこもその趣が異なっている - きしだのHatena

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

    きれいなコードは互いに似通っているが、クソコードはどこもその趣が異なっている - きしだのHatena
    rryu
    rryu 2023/11/18
    クソコードは類型的にはピタゴラ装置みたいに起こる結果は分かるが途中経過がどうしてそうなるのか全く理解できないものとしてまとめられるが、このどうしてそうなるの部分をわざと書くことはできないのだ。
  • 長文翻訳には素直にGPT-4 Turboに金出したほうがいいというだけの結論 - 関内関外日記

    承前。 goldhead.hatenablog.com 読みたい小説がある。とても古い小説で、日語訳が手に入らない。元はノルウェー語だが、とりあえずプロジェクト・グーテンベルクの英語版は見つけた。おれは英語が読めない。翻訳エンジンを使うしかない。比べてみたらAIに翻訳させると質がいい。しかし、いちいちコピペできる分量ではない。なにか方法があるかとChatGPTに聞いてみた。Pythonを使えばできるという。なので、やってみた。とりあえず、できそうな感じがした……というのが上の記事まで。 そして、今日だ。あ、この一連の記事はリアルタイムでお伝えしています。昨日の記事は昼休みに書いた。で、今日は朝から体調を崩して、午後遅くに出社。仕事を終えたあとPythonをいじりはじめる。昨日は「短い英文テキストファイルを読み込ませて、ChatGPTに翻訳させて、日語テキストファイルを出力させる」という

    長文翻訳には素直にGPT-4 Turboに金出したほうがいいというだけの結論 - 関内関外日記
    rryu
    rryu 2023/11/11
    分からない人同士がやったことないことをやってる感じがあってなんとも言えない。
  • 「京大生でもx=x+1が分からない」、喜多教授が明かすPython教育の実態

    プログラミング言語「Python」の大規模イベント「PyCon APAC 2023」が2023年10月27日と28日の2日間にわたって開催された。1日目に行われた京都大学国際高等教育院の喜多一教授による基調講演を中心に、イベントの内容をリポートする。 PyCon APAC 2023は、1日目の基調講演「Why University Teachers Wrote a Python Textbook?」で幕を開けた。京都大学でPythonを使ったプログラミング教育を担当している喜多教授が、その実態について英語で講演した。 喜多教授は、主に大学1年生向けの教養教育の一環として、Pythonを使ったプログラミングコースを2018年に始めた。そのための教科書をつくり、2019年に公開した。誰でも無償でPDFをダウンロードできる。教科書は毎年改訂しているが、一般向けに公開したのは2019年版と2021

    「京大生でもx=x+1が分からない」、喜多教授が明かすPython教育の実態
    rryu
    rryu 2023/11/08
    for iがfor youを思い浮かべてしまい混乱するというのは想像の範囲外だった。
  • その例外、いつキャッチするの?

    はじめに 最近、若手のコードレビューをしていて例外の使い方を教える機会があったので、ブログの方にもまとめたいと思います。今回はバッチ編。オンラインだとまた少し違う観点があると思います。また、言語はJavaを前提していますが考え方は例外機構をもつ言語ならあまり変わりません。 TL;DR 例外は原則キャッチしない。バッチは速やかに殺せ 個別箇所でログを出さずに必要な業務情報はExceptionを入れ子にして乗せる 長いバッチのためにはスキップもやむなし 原則、例外はキャッチしない JavaにはErrorとExceptionが存在し、OutOfMemoryErrorとかプログラム上ではどうしようもないものがエラー、ファイルが存在しない(FileNotFoundException)とかプログラム側でハンドリングするもの、と教科書では習うと思います。なのでException系はキャッチするものと、と

    その例外、いつキャッチするの?
    rryu
    rryu 2023/11/04
    結局、例外をキャッチして何事もなく処理を続行するなんてことはほぼないというか、それをやるなら例外でなくていいという。Javaのチェック例外は完全に負の遺産だと思う。
  • 分岐を丁寧に扱う理由とその方法〜ソフトウェア設計のきほん〜

    はじめに この記事ではソフトウェア設計において 分岐を雑に扱うとどうなるのか 分岐を丁寧に扱うため方法とは 分岐を丁寧に扱うと何が得られるのか についてまとめました。 動画も作ったのでご覧ください ❌分岐がネストになって読みづらいclass DeliveryUseCase { fun delivery( deliveryDate: LocalDate, purchaseAmount: Int, previousMonthlyTotalAmount: Int? ): String { val today = LocalDate.now() var canTodayDelivery: Boolean var postage: Int if (previousMonthlyTotalAmount != null) { if (previousMonthlyTotalAmount >= 10_00

    分岐を丁寧に扱う理由とその方法〜ソフトウェア設計のきほん〜
    rryu
    rryu 2023/10/17
    同じ条件の分岐は1回だけ、それが無理な場合でも条件を真偽値に落とすところは一箇所にするということを守ろうとするとそんな感じになる。
  • まるで詩のような日本語で書いたプログラム - 実際に動きます - Qiita

    はじめに 日語プログラミングの議論が続いていますが気分転換にこんな奇抜なプログラムはどうでしょうか。 経緯 木村 明さん 1 の傑作かつ芸術的な日語プログラムに「ポエム(Poem)」があります。 1986年に作られました。当時はPC-9801やFMRなどMS-DOS環境のPCが全盛で、このプログラムもPC-9801向けに書かれていました。プログラムは大変面白いのですが、そのような事情で現在では実際に動かすことはできず長いこと眠っていました。 一方で、Mindのほうは長らく開発していたGUI版が動き始め、Poemが使うグラフィック描画もできるようになったことから、Poem を実際に動かしてみたくなりました。9801グラフィックの互換処理を差し込むことでなんとか動かすことができました。動いたときは「ああ、こんなプログラムだったな」とちょっと感動しました。 公開について 氏の許可を得てソース

    まるで詩のような日本語で書いたプログラム - 実際に動きます - Qiita
  • [研究室向け]なぜ君はソースコードのエラーを自分で解決できないのか? - Qiita

    1. Intro 1.1 タイトルの答え それは,最初から"How"(どうやってこの問題を解決すべきか)だけを考えているからです. 最初に問うべきなのは"Why"(なぜこの問題が起きたか)です. このタイトルの問いも,なぜ?から始まっています.「どうやって自分でエラーを解決するか」だけを考えていると,問題の根的な原因が分からないため,ずっと自分でエラーを解決することはできません. 1.2 Keyword 最初に自分に問いかけるべき言葉 〇 Why(なぜ?): なぜこの問題が起きたか ✕ How(どうやって?): どうやってこの問題を解決すべきか 1.3 背景 研究室では毎年,いつまでたっても自分でソースコードのエラーや出力の問題を解決できず,進捗が遅かったり開発をあきらめてしまったりする人が発生する.記事では,なぜ自分でエラー・問題を解決できないのか?を明確にする. <注意書き> この

    [研究室向け]なぜ君はソースコードのエラーを自分で解決できないのか? - Qiita
    rryu
    rryu 2023/10/09
    「何が起こったのか」「どうしてそれが起こったのか」を調べる能力は研究者に必要なものだと思うのだが研究室でもそんな感じなのか。
  • プログラミングの現実的な話がしたい

    いろいろ盛り上がってるけど、今学ぶなら何がいいのか建設的な話をしようじゃないか 20年以上前に聞いたことがあるのはC+だのプラプラだの、ビジュアルベーシックだの、フォートランだの、Javaだのだった 今なら何を学べば一番潰しが聞くのか。これを話してほしいと思う

    プログラミングの現実的な話がしたい
    rryu
    rryu 2023/09/27
    本当にひとつしか学びたくないならVBA一択ではないだろうか。ウェブ系はHTMLとCSSを知らないと詰むし、機械学習とかは言語の他に知識が必要だし。
  • FizzBuzz.txt(8エクサバイト)

    FizzBuzzFS FizzBuzz問題といえば定期的にSNSで話題になっては変な解法が発明されることでおなじみですが(?)、ファイルシステムを使った事例が見当たらなかったのでやってみました。 まあ見ての通りというか…… /mnt/FizzBuzz に FizzBuzz.txt(8エクサバイト)があって、FizzBuzzが書いてあります。 どこまでも…… 容量の続く限り…… 以上!!!!!!! 技術解説 FUSE FUSE(Filesystem in USEr space)というソフトウェアを使うことで、簡単に新しいファイルシステムを実装することが可能です。 Rustにおいては、fuse crateの更新が停止した結果フォークが複数存在するようですが、利用者数と更新頻度的にfuser crateを使うのがよさそうです。 FileSystem traitが実装された値をmount2関数に渡

    FizzBuzz.txt(8エクサバイト)
    rryu
    rryu 2023/09/24
    FUSE使えば簡単かと思ったら、FizzBuzz出力の先頭からnバイト目の文字を算出する必要があって結構難しい。上級FizzBuzz感ある。