タグ

関連タグで絞り込む (206)

タグの絞り込みを解除

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

  • 関数・変数・機能に対する名付け方は“理解の試金石” まつもとゆきひろ氏が、プログラミングで名前が大事だと思う理由

    技育祭は「技術者を育てる」ことを目的としたエンジニアを目指す学生のための日最大のオンラインカンファレンスです。「技育祭2023【春】」に登壇したのは、Ruby開発者のまつもとゆきひろ氏。プログラミングの体験の中で実感した、ことわざや格言について話しました。全4回。1回目は、「名前重要」について。 日プログラマーで最も有名なRubyの生みの親 まつもとゆきひろ氏:ご紹介に与りました、まつもとゆきひろです。裏番組もおもしろそうなんですけれども(笑)、こちらに来ていただいてありがとうございます。何人ぐらい来てくれているのかな? まぁいいや。 今日はですね、「プログラミングのことわざ〜Rubyの父が語る教訓と知恵〜」というタイトルでお話しします。 まつもとゆきひろです。こんな感じのアイコンで活動していますけれども、Rubyを作った人として知られています。インターネットではひらがなです。ちょっ

    関数・変数・機能に対する名付け方は“理解の試金石” まつもとゆきひろ氏が、プログラミングで名前が大事だと思う理由
    UhoNiceGuy
    UhoNiceGuy 2023/08/16
    例えばArrayにlengthとsize、同じ機能のエイリアスがある等、Rubyはめちゃくちゃ名前に気を使っている
  • 徐々に高度になるリングバッファの話 - Software Transactional Memo

    リングバッファのイメージ図 1. リングバッファとは何か 機能的にはFirst In First Out (FIFO)とも呼ばれるキューの一種であるが、リング状にバッファを置いてそれの中でReadとWriteのインデックスがグルグルと回る構造をとる事によって容量に上限ができることと引き換えに高速な読み書き速度を得たものである。キューを単に実装するだけなら山ほど方法があって線形リストを使ってもいいしスタックを2つ使っても原理的には可能だ。その中でもリングバッファを用いた方法の利点はひとえに性能の高さでありメモリ確保などを行わないお陰でシステム系の様々な場所で使われている。 これの実装自体は情報系の大学生の演習レベルの難度であるが少し奥が深い。まずリングバッファのスタンダードなインタフェースと実装は以下のようなものである。 class RingBuffer { public: explicit

    徐々に高度になるリングバッファの話 - Software Transactional Memo
    UhoNiceGuy
    UhoNiceGuy 2023/07/30
    現代的なCPUでもmod演算は時間がかかるのか//「どうせオーバーフローしないんだから0に巻き戻さなくていいよ」は勉強になった//キャッシュのラインとか凄い世界だ
  • Ajaxから始まった一つの時代の終わり

    最近の流れを見ていての感想文なので、ideaとして投稿します。筆者のバックグラウンドとしては、Remixの商業記事を書いたり、App Routerの商業記事を書いたりしている人です。 さて、筆者は2022年の秋から、社内システムではありますがRemixをプロダクション運用しています。また、Next.jsのApp Routerについても、パラダイムとしてはRemixにインスパイアされた部分が多い[1]おかげで、順調にキャッチアップできています。 RemixとApp Routerは、ルーティングとデータフェッチを高度に統合しており、Progressively Enhanced SPA(PESPA)と呼ばれることもあるそうです。PESPAについては、次の記事が話題になりましたね。 このPESPAであるRemixを実運用する中で、フレームワークの手触りが近年触ってきたものと大きく違っている点があっ

    Ajaxから始まった一つの時代の終わり
    UhoNiceGuy
    UhoNiceGuy 2023/07/12
    今までは陽にAjax通信してたけど、フレームワークでラップしてあまり見えなくして、サーバー側で解決できるレンダリングはサーバー側でやらせるということ?
  • これまで見たことある凄腕プログラマはどんな人でしたか?思い出とともに聞かせていただけると嬉しいです | mond

    この質問をする方ならたぶん名前は聞いたことがあるであろう、とあるプログラマの方です。私は関東地方のとある地方国立大学の情報系学部に進学しましたが、彼は私と同じサークルで一年後輩でした。ここではN君(仮名)としておきます。 N君の名前は高校時代にとある伝手で聞いていたのですが、その時は一度聞いただけですぐに忘れてしまっていました。しかし、二年生に上がった頃、サークル内では「今度入ってくる新入生はヤバいらしいぞ」ということで噂になっていました。私が入っていたサークルはとにかくコンピュータやプログラミングが好きな人間が集まる「ちょっと変わった」サークルでしたが、彼は高校生にして書店に並ぶような技術書籍を執筆しており、当時のケータイのメモリを編集するソフトなんかも開発しているということで、入ってきた時点で技術の面で頭抜けていたことは確かでした。 そんなN君と私はサークル内でよく激論を交わす間柄でも

    これまで見たことある凄腕プログラマはどんな人でしたか?思い出とともに聞かせていただけると嬉しいです | mond
    UhoNiceGuy
    UhoNiceGuy 2023/07/08
    筑波大の池にアヒルを浮かべても許される位の天才だったのね//大学からではなく高校時代からの有名人だったとのこと
  • Makefile警察「ぐぬぬぬ…」 - Qiita

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

    Makefile警察「ぐぬぬぬ…」 - Qiita
    UhoNiceGuy
    UhoNiceGuy 2023/07/03
    makeはコマンドとファイルを並べるだけの領域だとメチャクチャ簡単だよね。楽だから使っちゃう
  • 【TypeScript】カリー化・部分適用は便利だよ! - Qiita

    TypeScript】カリー化・部分適用は便利だよ! カリー化・部分適用利用してますか? 調べたけど「関数を第一級オブジェクトとしてー」とか「関数を部分適用してー」とか説明が講義っぽくて途中で諦めた方も多いと思います。自分もそうでした。 また、知ってるけどどんな時に使うべきか迷って使ってないという方もいると思います。 具体的なコードを交えながら、カリー化・部分適用について、噛み砕いて説明していきたいと思います。 なお、すべてのTypeScriptのサンプルコードは実際に動かして確認することができますので、TypeScript Playgroundなどで是非お試しください。 カリー化と部分適用 まずはカリー化と部分適用の定義をば。 カリー化 (currying, カリー化された=curried) とは、複数の引数をとる関数を、引数が「もとの関数の最初の引数」で戻り値が「もとの関数の残りの引

    【TypeScript】カリー化・部分適用は便利だよ! - Qiita
    UhoNiceGuy
    UhoNiceGuy 2023/06/20
    最初からカリー化されてるHaskellならともかく、部分適用の方がスッキリしてない?
  • 「Xamarin」は2024年5月1日に終了、今秋出荷予定の「iOS 17」「Android 14」に対応せず/.NETベースのクロスプラットフォームアプリ開発基盤、「.NET MAUI」などへの移行を

    「Xamarin」は2024年5月1日に終了、今秋出荷予定の「iOS 17」「Android 14」に対応せず/.NETベースのクロスプラットフォームアプリ開発基盤、「.NET MAUI」などへの移行を
    UhoNiceGuy
    UhoNiceGuy 2023/06/20
    MAUIってXamarinから大きく変わるの?//それにしても、COCOAをXamarinで開発したのはいただけない
  • 私の知っているビルゲイツ、その12|samf、古川 享

    ビルゲイツ、自分の限界を知りプログラムを書かなくなったわけ 1970年代の後半から1980年代の初頭においては、㈱アスキーがマイクロソフトの代理店として活動していた時代がありました。その頃は西和彦さんが次々と日の会社へのアプローチを実現し、多くの日人プログラマが日だけではなく、アメリカに長期滞在して日向けのBASIC言語その他の移植作業をしていました。1982年前後はIBMPCの出荷に併せて日のメーカーによるIBM互換機の投入に並行して、8ビット機としての終焉を飾るPC-88シリーズから、世界初のGUIべースのパソコンNEC PC-100, 日立のBAISCマスター、沖電気のif800、NCR9005、YE-Data、ALPSなどのハードウェアが次から次へとシアトルのマイクロソフト社に持ち込まれBASIC言語の移植に日夜、日人も関わりを持っていました。当時の開発環境はDEC社

    私の知っているビルゲイツ、その12|samf、古川 享
    UhoNiceGuy
    UhoNiceGuy 2023/06/14
    コメにあるリンクだとゲイツは鈴木氏に天才と呼ばれてるね。凄い!!//ゲイツ←本文の通り。ジョブズ←ノーコメント。ジェフ・ペゾス←物流センターの過酷労働。マスク←…。伝説の経営者ってこんなのばかりだね
  • オープンソースビジネスの挑戦と現実|Rui Ueyama

    いい感じのオープンソース・ソフトウェアを書いて、それを元に起業することを考えてみたことがある人は結構いるようだ。実際に僕はここ1年半ほど、自作のオープンソース・ソフトウェアを元にビジネスを立ち上げようと試行錯誤してきた。その経験についてここでシェアしてみようと思う。 あらすじ薄々予期していたことではあったけれど、結論から言うと、そんなにはうまくいかなかった話ということになる。要点をまとめると次の通りだ。 「moldリンカ」というオープンソースのツールを開発して、それを元にビジネスを行おうとしていた そこそこ稼ぐことはできたものの、大きなリターンを得るのは難しかった ほとんどの企業はオープンソースを大々的に活用していても「無料のソフトウェア」にはお金を払うつもりはないし、払いたくても社内制度上できない 大きなリターンを得たいのならば、自作のオープンソース・ソフトウェアを元にサービスを立ち上げ

    オープンソースビジネスの挑戦と現実|Rui Ueyama
    UhoNiceGuy
    UhoNiceGuy 2023/06/07
    凄いなぁ。異次元の世界//Larry WallもRichard Stallmanもまつもとゆきひろもお金持ちっぽくないしなぁ。OSSてお金持ちになるにはGoogleやAmazonみたいなのしかないかなぁ
  • 空の配列に対する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
    UhoNiceGuy
    UhoNiceGuy 2023/06/06
    -infがmaxの単位元だと考えるとJavaScriptの実装も納得できる。Optionalを返す実装はどうなのだろう
  • 【ネタ】コメントだけしか書いていないのに「Hello, world!」と表示されるJavaプログラム - Qiita

    これはJavaでポインタで使えるというネタから着想を得たプログラミングネタです。 厳密には 「コメントだけ書いてあるようにしか見えない」 です。 コメントだけしか書いていないのに「Hello, world!」と表示されるJavaプログラム % java --version openjdk 16.0.2 2021-07-20 OpenJDK Runtime Environment Microsoft-25298 (build 16.0.2+7) OpenJDK 64-Bit Server VM Microsoft-25298 (build 16.0.2+7, mixed mode) import java.util.*; public class Main { public static void main(String[] args) throws Exception { //\u000a

    【ネタ】コメントだけしか書いていないのに「Hello, world!」と表示されるJavaプログラム - Qiita
    UhoNiceGuy
    UhoNiceGuy 2023/06/04
    これはエディタで対応して欲しいが、鼬ごっこになるんじゃないかね。まぁ、悪意を持ったプログラムは防ぎようがないのかもしれないが
  • 人に「センスない」って言っているやつが一番センスない - Qiita

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

    人に「センスない」って言っているやつが一番センスない - Qiita
    UhoNiceGuy
    UhoNiceGuy 2023/06/01
    0^0とか、平行線は交わるかとか、数学って割と時と場合による、とか、仕様によるなんだよね//ForAll([])がfalse返す実装がないという事実。全てのcheckを通ったら、が目的ならcheck項目がなければtrueを返して欲しいよね
  • 畳み込みの視点から見た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カクテル
    UhoNiceGuy
    UhoNiceGuy 2023/05/31
    数学のルール(どういう定義や公理を採用するか)って人間が決めるんでしょ。結局、仕様による、じゃないの
  • Python 内包表記の限界: 複雑な処理と実行速度の関係 - Qiita

    初めに 記事は実務上で速度的優位性を得るために内包表記を使うことが合理的かどうか検証したものです。 文中のコードは読者層を広くするために型ヒントを省いています。 更新履歴 詳細 追記 (2023/05/24) 計測環境はPython3.12.0a6です。 修正 (2023/05/24) 記事中のバイトコードがPython3.7.16のものだったのでPython3.12.0a6のものに差し替えました。 修正 (2023/05/27) 「list(generator) 使えよ」とのご指摘があったので 単純な例の内包表記を[i for i in range(ELEMENTS)]からlist(range(ELEMENTS))に修正しました。 ご指摘ありがとうございます。 追記 (2023/05/28) Twitterでの反応に対しての追記を行いました。

    Python 内包表記の限界: 複雑な処理と実行速度の関係 - Qiita
    UhoNiceGuy
    UhoNiceGuy 2023/05/27
    リストの内包表記って、map、filterをわかりやすく表記するものでしょ。for loopと比べて一目瞭然。for loopはなんでも出来すぎるんだよ
  • Pythonについて思うこと | 雑記帳

    みなさん、Pythonは好きですか? この記事では、私がPythonという言語とそのエコシステムについて思うところを書いていきます。全体を通したストーリーみたいなのはなくて、トピックごとに書いています。 私のPython経験は3年弱です。Pythonについてまだまだ新米だという自覚はありますが、そこは有り余る才能でカバーしてこの記事を書いています。 静的型 Pythonには静的型がありません。型ヒントはありますが、インタープリターにとっては飾りにすぎません。 mypyとかの型チェッカーはありますが、「それさえあれば万事ハッピー」なものではなく、既存のコードを適宜書き換えないと型チェッカーでまともな結果を得るのは難しそうです。型検査を念頭に書かれていない(型ヒント付きの)コードをそのままmypyにかけても大量のエラー・警告が出てくるでしょう(ちなみに、型ヒントなしの関数はmypyのデフォルト

    UhoNiceGuy
    UhoNiceGuy 2023/05/24
    Mojoはじめ、いろんなnext Pythonの提案聞くけど、それってPythonじゃなくね?と思わないでもない。なにも考えずPerlみたいにグワーって書けるから普及したのではないかと
  • 「ファイル名に”yyyymmdd_hhmmss”がついてますが同タイミングで動かしたらどうなりますか」とレビューされて震えた話

    リンク 朝日新聞デジタル マイナカードで誤交付、自治体・富士通に報告求める 個人情報保護委:朝日新聞デジタル マイナンバーカードを使った証明書のコンビニ交付サービスで、他人の住民票などが誤って交付された問題をめぐり、個人情報保護委員会は11日、関係自治体やシステムを納入した富士通Japanに対して、報告や資… 9 ゆーしゃん.py(bot運用中) @Mr_mura_ura 客「ファイル名に「yyyymmdd_hhmmss」がついてますが、完全に同タイミングで動かしたらどうなります?」 私「こんな小規模な社内システムでそんな事無いと思いますが…エラー落ちしますね…」 客「まぁ99%無いと思いますが、念のためにね」 というレビューをつい最近受けた私、震えてます← 2023-05-11 00:02:16

    「ファイル名に”yyyymmdd_hhmmss”がついてますが同タイミングで動かしたらどうなりますか」とレビューされて震えた話
    UhoNiceGuy
    UhoNiceGuy 2023/05/12
    ファイル名がuniqueなファイルを作りたいならcreate file atomicallyって、そのまんまの手法があるでしょ。先人の蓄積を生かさなくては。何をファイル名に使うべきかはその先
  • Javaエンジニアだった私が当時困ったRustのコンセプト - paild tech blog

    お手伝いの @helloyuki_ です。今回はポエムです。 今回は、Rust を始めた当時、プログラミング言語は Java しかまともに触ったことがない新米若手 Java エンジニアだった私[*1]が「見たことがなく、使いどころがわからなく理解が難しい」と感じたポイントについて紹介します。対象とするソフトウェアのレイヤーが低いか高いかを問わず、とにかく Rust をやってみて理解するまでに時間がかかり、難しいと感じたポイントについて紹介します。 Rust の「メモリ安全」って、結局何 所有権とライフタイム 参照 スマートポインタ 代数的データ型 関数が第一級である モジュールシステム self 型クラスという側面でのトレイト まとめ 私が Rust をある程度使いこなせるようになるまでの話 「難しい」って何?、の話 Rust の「メモリ安全」って、結局何 そもそも論ですが、Rust が取

    Javaエンジニアだった私が当時困ったRustのコンセプト - paild tech blog
    UhoNiceGuy
    UhoNiceGuy 2023/05/11
    全くおっしゃる通りだ。所有権周りはGCが良きにはからって(ある程度)解決してくれて、見えなくしてくれた。それを明示的に扱うのだから難しいよね。C++やらんと所有権の必要性実感できんでしょ
  • プログラミングスクールを卒業してもエンジニアになれない問題2023 - Qiita

    誰に向けたどういう記事なのか 対象 駆け出しエンジニア(未経験から転職を狙う組) 内容 プログラミングスクールの理想と現実 勉強をサボってSESに行ってしまう話 今、私が未経験から転職を目指すならどうするか はじめに キャリアに悩んでいる日人はとても多いです。景気が悪く、インフレがひどく、税金はひたすら上がっていきます。インボイス制度によって、フリーランスの益税も厳しくなります。日では過去数十年ずっと賃金が上がっていません。ですがIT業界は違います。激しいダウントレンドの中、天を穿つ昇龍拳を打てる数少ないジョブ、それがWeb系エンジニアです。そういう情勢が過去7年前くらいから続き、未だなお、Web系エンジニアは大人気の職種になっています。ですが、多くの未経験の人はプログラミング・エンジニアに対する見積もりが甘いです。 特にプログラミングスクールを卒業すればエンジニアになれる、簡単に独立

    プログラミングスクールを卒業してもエンジニアになれない問題2023 - Qiita
    UhoNiceGuy
    UhoNiceGuy 2023/05/08
    独学だと、お約束や常識は教えてもらえんからね。あと、どの技能を身に付ければいいかも。
  • これから流行る言語 | 雑記帳

    新言語にできることはまだあるかい なんとかWIMPS 最近(1ヶ月くらい前)、こんな記事が出ました: 新しいプログラミング言語が出てこない(新しく出てた言語を追記) – きしだのHatena Kotlin, TypeScript, Rust, Swift以降にみんなが話題にするような新しい言語が出てこない、それはなぜか、みたいな趣旨です。客観的に見れば「新しい言語は常に出続けている」わけですが、「みんなが話題にするような」というのが多分曲者なんでしょうね。 例え話をすると、新しい若木は常に生えてきているんだけど、大木に成長するには時間がかかるので、大木にしか興味のない人には「この8年間で新しい大木は登場していない」と判断してしまうのかもしれません。 まあ私としても、Web (HTTP) APIを書く言語とか、JSON色付け係が使う言語はもう出揃ってしまったのかもしれないという気はしなくもな

    UhoNiceGuy
    UhoNiceGuy 2023/05/08
    自分も筆者と同じ考え。C10K問題でgo routineが、サーバサイドでの高速化の要求からRustが生まれた。以前より、クライアントサイドの高速化、つまり並列化が要求されていて、Mojoはその要求に応えるのでは
  • ホームページ- EY-Office

    小ネタです、JavaScript日の日付をYYYY-MM-DD形式で得るコードは案外面倒です。 2023年4月17日なら 2023-04-17 という文字列を得るコードはRubyならTime.now.strftime("%Y-%m-%d")、Pythonならdatetime.today().strftime("%Y-%m-%d")(importは省略しました)と簡単に書けますが、JavaScriptでは案外面倒なのです。 追記: いくつかの間違いのご指摘がありましたので修正しました(2023-04-19)。 DeepAIが生成した画像です いっけん正しいようで間違ったコード new Date().toISOString().slice(0,10) new Date()で日の日時を取得します toISOString()メソッドは日時データをISO形式の文字列に変換します、例えば 2

    ホームページ- EY-Office
    UhoNiceGuy
    UhoNiceGuy 2023/04/19
    自分の探し方が悪いのではなく、実際面倒なんだ。JavaScriptは貪欲で、この辺の機能、ドンドン取り込むかと思ってたら、そうでもないんだ