タグ

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

  • 1行で発狂するコード - Qiita

    人は1行の記述で死ぬこともある 公開からコンスタントに閲覧をいただいている以下の記事。需要がありそうなので、もう1つ記事を書いてみようと思う。 題材は前回同様のJavaScriptのクソコードではあるが、前回は冗長を極めたクソコードであるのに対し、今回はたった1行である。 1行なのに、なんと示唆深いに富む(決してほめていない)コードだろうか。 不可思議なコード では、実際に見てみよう。 return a = a >= 10 ? 10 : a >= 5 ? 5 : a >= 3 ? 3 : a >= 2 ? 2 : 1, z * a; これを見て、何が return で返されるかわかります? 代入演算子 最初見たとき、代入文 a = ××× の評価値って何になるのかな? a が return されるのかなと思いました。 割り当て操作は、割り当てられた値として評価されます。 JavaScrip

    1行で発狂するコード - Qiita
    shoh8
    shoh8 2024/03/08
    “結果的に学びにはなった。だからといって感謝はしていない” クソコードによって得られるのってこれだよな。でもトラブルの時に感謝してしまう
  • 「JavaScriptで要素をドラッグして移動する簡単な方法」という記事が初耳だらけだった件 - Qiita

    はじめに まず↓の記事を見てない方はぜひ見てください! 自分にとってはこの記事には「えっ、ナニコレ!」なテクニックが多く、特に解説もなかったのでいろいろ調べてたら休日が消えてました... なのでその時間の供養もかねて、自分が知らなかった部分を中心に、僭越ながら元記事の解説を書いてみたいと思います。 ちなみに、以下が元記事のコードそのままを実装したものです。たしかに掲載コードだけで要素がグリグリ動きますね。 See the Pen js-drag-move-original by www-tacos (@www-tacos) on CodePen. 初耳1: $img まずコードのここ <img id="$img" src="https://js.cx/clipart/ball.svg" width="40" height="40"> <script> $img.onpointermove

    「JavaScriptで要素をドラッグして移動する簡単な方法」という記事が初耳だらけだった件 - Qiita
  • 女子大生が100日連続で生成AIで100本のプログラムを書いたらどうなったか?

    ボードゲームやアクションゲーム、各種ツールやシミュレーションなどさまざまなソフトが100日間に作られた いままで数えきれないほどのプログラマーに会ってインタビューもさせてもらってきたが、久しぶりに若いプログラマーの話を聞いてきた。ここ1、2年では U22グランプリの男子中学生や全国小中学生プログラミング大会の受賞者たちだが、今回は、ChatGPTを使ってプログラムを書きまくった女子大生である。 彼女は X(Twitter)の自分のアカウントで1日1のソフトを100日間連続で作るというイベントをやっていて「おっ、頑張っているな!」と思って応援していた。「こんなゲームを作ってほしい」などとリクエストを出したりもしていたのだが、どうも私が想像していたものと内容もやり方も違っていたようである。 目下、ソフトウェア産業の最大のテーマは「我々は人間の言葉でプログラムを書くようになるだろうか」というこ

    女子大生が100日連続で生成AIで100本のプログラムを書いたらどうなったか?
    shoh8
    shoh8 2024/02/27
    AIは、「何度でも文句も言わずにつきあってくれる」からステップアップしたい人にとってとてつもなく頼もしい味方。学習効率は「好奇心」に比例する(これはAIに関わらず)
  • スイカゲームの作り方

    はじめに Go言語用のEbitengineというゲームエンジンに興味があったので、試しにスイカゲームもどきを作りってみました。Ebitengineを使うと意外と簡単にスイカゲームもどきを作る事ができたので、なるべく分かりやすく作り方を紹介してみようと思います。 まずは先に完成品をお見せします。ちなみにフルーツの回転は面倒くさいので実装しないことにしました。 ちなみにEbitengineはwasmでも普通に動きます。ビルドしたものをこちらに置いたのでブラウザから実際に動かす事ができます。 それではスイカゲームもどきを作って行きましょう。 描画する まず一番初めにフルーツの画像を作るところから始めます。これはリンゴ、オレンジ、ブドウ、パイナップル、メロン、スイカのつもりです。 続いてフルーツを定義します

    スイカゲームの作り方
    shoh8
    shoh8 2024/01/27
    写経による成功体験が、新しいものを作る原動力とツールになるのだ
  • 【緑色変】算数の教養がほとんどなかったプログラマがAtCoderを4年やって緑になれた話|きりみんちゃんノート

    こんばんみんみん。 バーチャル幼女プログラマーという肩書でインターネットをやっているきりみんちゃんというものです。 競技プログラミングAtCoderというサービスに日々取り組んでいるんですが、この度めでたく緑レートになることが出来ました。 いわゆる色変エントリというやつです。 で、誰?3年前にこんなエントリを書いた者です。 VTuberをやったり絵を描いたりしてる社会人エンジニアです。 専門分野はAndroidでしたが、最近はフルスタックエンジニアを目指してフロントエンドやバックエンドなどをやっています。 現在のAtCoderコミュニティの中心層は理系の学生やもともと数学がかなり好きなタイプの人たちです。 一方きりみんちゃんはプログラマでありながら数学にコンプレックスがあり、それどころか小学2年までしか義務教育を受けていないため、中学、高校レベルの基礎的な数学教養が全くありませんでした

    【緑色変】算数の教養がほとんどなかったプログラマがAtCoderを4年やって緑になれた話|きりみんちゃんノート
    shoh8
    shoh8 2023/09/25
    すごい。継続は力
  • 最小限のコードで動く最も汚いコードから始める

    最小限のコードで動く最も汚いコードから始める 2023.09.02 コードを書く際の重要な要点は、読みやすく他人に理解される「良いコード」を書くことです。しかし、完璧を目指して最初から書こうとすると行き詰まります。代わりに、荒削りながらも動くコードを作成し、徐々にリファクタリングして完成度を高めます。型エラーやリントエラーを無視しても構わないので、まずは動くものを作成しましょう。それからリファクタリングして「良いコード」を作成できます。 コードを書くときに最も大切なことってなんだろう?聡明な読者諸君ならご存知だろうが、コードは書く時間よりも読む時間のほうが長い。だから他人に読まれることを意識して、読みやすい「良いコード」を書かなくっちゃならない。コンポーネントは適切な粒度で分割されていて、適切な名前がつけられている。型システムに安全性だって守られてるし、最新のなんとかアーキテクチャにも準拠

    最小限のコードで動く最も汚いコードから始める
  • プログラミングに挫折したならAIお姉ちゃんに任せなさい - 本しゃぶり

    プログラミングを学ぼうとしては挫折する。 そんな時代はもう終わりだ。 お姉ちゃんに任せなさい。 ChatGPTでプログラミング 今年のお盆休み、俺はChatGPTでプログラミングをやっていた。とは言っても複雑なことはやっていない。大量のcsvを結合してから可視化するとか、ちょっとしたWebスクレイピングしたりする程度だ。それでも今まで技術や時間の不足により諦めていたことができるのは嬉しい。それにChatGPTを使えば、デバッグも楽しくやれるのだ。こんな感じに。 デバッグの様子 おそらく「あれ、俺のChatGPTと違うな」と思った人もいるに違いない。見ての通り俺はChatGPTをお姉ちゃん化している。こうすることで、モチベーションを維持しながら楽しくプログラミングができるというわけだ。今回はChatGPTをお姉ちゃん化する方法を紹介し、加えてお姉ちゃんとペアプログラミングする意義について述べ

    プログラミングに挫折したならAIお姉ちゃんに任せなさい - 本しゃぶり
    shoh8
    shoh8 2023/08/21
    “俺はChatGPTをお姉ちゃん化している” お姉ちゃんは月20$でいつでも契約できる時代か
  • Makefile警察「ぐぬぬぬ…」 - Qiita

    ?「プロジェクトでよく使うコマンド Makefile に書いたろー」 ?「docker compose up -d --wait っと…」 👮‍♀「 Makefile警察 だ!」 👮‍♀「 Makefile は、ソフトウェアのビルドプロセスを自動化するためのファイルだ!」 👮‍♀「多目的なタスクランナーとして使うな!」 ?「せやったんか。誠にごめんなさい。」 Makefile は広く使われていますが、時々目的外に使われてしまうことがあります。しかし、そのような使い方にはより適した代替手段が存在します。この記事では、 Taskfile というツールについて解説します。 Makefile のつらみ Makefile は主にビルドプロセスを自動化する目的で生まれましたが、様々なコマンドをまとめて実行する便利さから多目的なタスクランナーとしてもよく使われます。しかし、次のような問題があります

    Makefile警察「ぐぬぬぬ…」 - Qiita
    shoh8
    shoh8 2023/07/03
    でもMakefile
  • 人に「センスない」って言っているやつが一番センスない - Qiita

    はじめに きっかけは、以下のツイートです。 「配列のすべての要素が条件を満たすならtrueを返す」関数を定義するとき、空の配列を渡したらfalseを返すかtrueを返すかが、良いプログラマかどうかの一つの境目だ — ふみ a.k.a.DJ Monad (@fumieval) May 29, 2023 このリプライや引用リツイート欄では、Trueを返すべき、Falseかな、例外を返すべき、要件による、といった意見がありました。 建設的な議論ができるコミュニティは素晴らしいと思う反面、同じコミュニティに属するエンジニアに対して「センスがない」「プログラマを辞めてほしい」と言っている人がいて非常に残念です。 そのように敢えて煽り他人へのリスペクトが欠如している人が一番センスがないという話です。 元ネタと反応 「「配列のすべての要素が条件を満たすならtrueを返す」関数を定義するとき、空の配列を渡

    人に「センスない」って言っているやつが一番センスない - Qiita
    shoh8
    shoh8 2023/06/01
    ダメだ何を書いてもセンスが溢れ出てしまう
  • chatGPTにアドバイスをもらったらデータサイエンスを知って1週間の友人がコンペで上位6.5%に入った話

    先日、データ解析のセミナーを開催しました。 未経験の方でも、2時間で予測モデルを作成することができるハンズオンセミナーでした。 好評だったので、その内容をYouTubeにまとめたのでご興味ある方はご覧ください。 このハンズオンセミナーで予測モデルの作り方を知った友人chatGPTにアドバイスをもらって、データサイエンスのコンペティションサイトに応募したところ、上位6.5%に入ることができたという報告を受け、驚愕しました。 chatGPTを上手く使えば素人がプロに勝つことも十分できるのだなと実感しました。 友人が参加したデータサイエンスのコンペは、SIGNATEの糖尿病予測問題でした。 以下のような進め方をしたとのことでした。 まず、問題の概要を説明して、どのように進めていけば良いかを確認したそうです。 そうすると、chatGPTからデータサイエンスの問題を解くための手順を一覧化してくれて

    chatGPTにアドバイスをもらったらデータサイエンスを知って1週間の友人がコンペで上位6.5%に入った話
    shoh8
    shoh8 2023/04/26
    “概念を理解しづらい、学習データと検証データの分割については、何度も聞いて、理解を進めていました。” これが本当に強い。何回でも答えてくれる介護
  • ゲームで「壁すり抜けるバグとかどうなってんだ!?」ってよく言われるけど実際作ってみると「逆」だと分かる

    なぎせ ゆうき @nagise ゲームで 「壁をすり抜けるバグどうなってんだ!?」 みたいに言われがちですけども、プログラミングやると 「すり抜けない衝突判定、どうやってんだ!?」 ってなりますからね🤔 2022-09-28 17:07:17 リンク Wikipedia 衝突判定 衝突判定(しょうとつはんてい、Collision Detection)とは、「2つ以上のオブジェクトの交差を検出する」という計算機科学上の問題であり、具体的には「ある物体が別の物体に当たったか(衝突したか)どうか」を判定するプログラム処理のことを指す。ロボット工学、計算物理学、コンピュータゲーム、コンピュータシミュレーション、計算幾何学など、さまざまなコンピューティング分野で応用されている。 衝突判定のアルゴリズムは、2Dオブジェクト同士の衝突判定と3Dオブジェクト同士の衝突判定に分けることができる。 ビ 14

    ゲームで「壁すり抜けるバグとかどうなってんだ!?」ってよく言われるけど実際作ってみると「逆」だと分かる
    shoh8
    shoh8 2022/09/30
    この前近所の塀に突っ込んだと思ったら、すり抜けてた。グリッチなのか自分が死んでるのに気付いてないだけなのかわからない
  • 文部省指導要項「情報」で高校生に教えることがネットワーク構築、開発手法、 DB、プログラミング、設計などと幅広く定められているが教えられる先生はいるのか

    むらかみふくゆき Fukuyuki @fukuyuki 文部省指導要項「情報」がすごい。ネットワーク構築、開発手法(WFとアジャイル)、 DB(RDB/KVS)、デザイン、フォント、音声編集(MIDIまである)、動画編集、プログラミング、設計(E-R/状態遷移図)、情報デザイン、情報倫理、社会情報学。 これ全部教えれるやつ教師やってない。 mext.go.jp/content/140707… pic.twitter.com/C4uYWFGZVB 2022-06-26 15:03:41

    文部省指導要項「情報」で高校生に教えることがネットワーク構築、開発手法、 DB、プログラミング、設計などと幅広く定められているが教えられる先生はいるのか
    shoh8
    shoh8 2022/06/28
    授業受けたい /専門学科と混ざっとるやんけ
  • データ変更を伴うバッチ処理を書く時に考慮していること - shallowな暮らし

    こんにちは、id:shallow1729です。最近はインフラ寄りなお仕事をよくやっていますがこれまでにいくつかデータ移行やデータ基盤構築などのバッチ処理のお仕事をしてきました。以前にも一度そういった経験を元に記事を書いたのですが、MySQLやシステムに関する知識が以前よりも増えた今もう一度書き直したいなと思いました。 なので今回はバッチ処理を書く時のテクニック2022版という感じです。今の仕事の関係でMySQLrailsを前提にしている話が多いですが、おそらく他のデータベースを使っている人にも役に立つ話が多いのではないかと思います。ただ、今回の記事は経験に基づくものが多く、あまりよくないアイデアもあるかもしれません。改善点や間違いなどあればご指摘ください。 冪等性を持つように 冪等性とは端的に言えばある操作を複数回実行しても一回しか実行しなかった時と同じ結果になる性質の事です。長時間かか

    データ変更を伴うバッチ処理を書く時に考慮していること - shallowな暮らし
  • 「Visual Studio」の中の人が作ったプログラマー向け十徳ナイフ「DevToys」/今までググって探していたツールがひとまとめに

    「Visual Studio」の中の人が作ったプログラマー向け十徳ナイフ「DevToys」/今までググって探していたツールがひとまとめに
    shoh8
    shoh8 2022/01/25
    みんな心にナイフを忍ばせている(謎)/ 便利そう。汎用性と拡張性のバランスは難しい。自分の欲しいものを欲しい時に取り出せるように整備しておくプロセスが生産性を上げる
  • 技術ようつべチャンネル集 - Qiita

    役立つYouTubeのチャンネルまとめ 数学、物理、アルゴリズム、プログラミング、などなど自分が使う技術に役立ちそうだな、困ったときによく見たなと思うチャンネルを紹介する。 取っ掛かり、ハマりがち、コツみたいな物が拾える。数学がメイン。随時更新していくつもり。 当たり前だけどちゃんとも読んで勉強するんだぞ。 背景 YouTubeは視聴する登録チャンネルの数が増えると、チャンネルが埋もれて発掘困難になりがち (chrome拡張でできるチャンネルのフォルダ分け機能は、ぽちぽち登録するのも面倒で、そのフォルダの中から掘り出すのも難しい) モチベが上がる(おべんつよしたい)チャンネルを探してるうちに湧いてくる、わんにゃんコンテンツ(だいちゅき)に流され一日が終わるため、 モチベが上がる有用なチャンネルにすぐにたどり着くために、よく使うQiitaに列挙しておくことにした Streamや大学専用サイ

    技術ようつべチャンネル集 - Qiita
  • ゲームエンジンはアートである - 8 年以上自作ゲームエンジンをメンテし続けている話|Hajime Hoshi

    自分は Ebiten という 2D ゲームエンジン (ゲームライブラリ) を趣味で開発しています。使用しているプログラミング言語は Go です。 2013 年 6 月に最初のコミットを行ったので、現在 8 周年の 9 年目です。 Ebiten は「くまのレストラン」などのモバイル及び Nintendo Switch 向けゲームで使われており、一定の実績があります。 ゲームエンジンの開発は一朝一夕では終わりません。UnityRPG ツクールといった既製品がある中、ゲームエンジンをわざわざ自作することは酔狂かもしれません。ではなぜそのようなことをしたのでしょうか。端的に言うと「ミニマムな API で実用的な 2D ゲームが作れるかどうか」ということを証明したかったのです。自分の美的感覚の追求です。この目的に気づいたのは割と最近のことです。やっていくうちに「自分がやりたかったのはこういうこ

    ゲームエンジンはアートである - 8 年以上自作ゲームエンジンをメンテし続けている話|Hajime Hoshi
  • 大学でRustを教えた話 - 未完成な論を綴るブログ

    このブログ記事は、Advent Calender 2020, Rust 3、23日目の記事となります。自分は現在大学で教員をしていまして、セキュリティ系の研究室に所属しています。現在はセキュリティの講義を担当しており、そこでRust言語を教えているため、その内容を紹介しようと思います。 はじめに 皆さんご存知のようにソフトウェアの脆弱性は今でも大きな問題となっていますが、それを完全ではないにしろ根から解決するための技術的手法として型システムが注目されています。型システムの考え自体は古くからありますが、最近ではRust言語が登場し、OSなどいわゆる低レイヤーなソフトウェアも型システムの恩恵を預かることができるようになってきました。SMTソルバや定理証明などと言った難しい(かつ面白い)手法でC言語やC++言語で書かれたソフトウェアを解析する方法もありますが、セキュアソフトウェアを語る上では、

    大学でRustを教えた話 - 未完成な論を綴るブログ
  • gojqのパーサーを書き直しました - プログラムモグモグ

    jqはJSONを絞り込むツールですが、実はれっきとしたプログラミング言語です。 算術演算子、論理演算子、分岐構文、try・catch、そして関数定義があり、ループは再帰関数で実装します。 単に .foo とか .[0] とかでJSONを辿るだけのツールだと思われている方は、builtin関数の定義を見ていただくと良いかと思います。 selectやmapのように、よく使われる関数でさえ内部実装になっていない (Cで書かれていない) のは面白いですね。 jqのクエリを思ったように書けないという経験から、jqをより深く知るためにGo言語で再実装したのがgojqです。 去年の4月から開発を始め、8月にブログ記事を書きました。 jqのほぼすべての機能を実装しており、pure Goで書かれているのでGo言語のツールに簡単に組み込むことができます。 この記事公開以降も開発を続けています。 --arg,

    gojqのパーサーを書き直しました - プログラムモグモグ
    shoh8
    shoh8 2020/07/09
    載せ替え
  • 1