タグ

開発とzennに関するmohnoのブックマーク (11)

  • コーディングルールはマジでしっかり決めろって話

    どうも、フリーランスエンジニアの人です。 今まで関わったプロジェクトにおいてコーディングルールが曖昧だった環境で苦労したので、例に出しながら振り返ろうと思います。 ※ 記事に登場するコード例は実際に存在するコードではありませんがヤバさは忠実に再現しました。 2022/11/5 追記 曖昧かつ実態のズレた変数名 変数の命名というものはエンジニアによって少々偏った傾向が見られますが、その変数が指し示す実態と命名に大きなズレがなく、主旨が伝わればエンジニアリングにおいて大きな問題はないはずです。 ですが、世の中には曖昧かつ実態と一致しない変数名が書かれたプロダクトコードが存在します。 以下のコードをご覧ください。 ※ 今回はJSを例に出します // ユーザーのデータを取得 export const getUserData = async (id) => { const res = await

    コーディングルールはマジでしっかり決めろって話
    mohno
    mohno 2022/11/06
    なんか“コメントが本番”っぽい。/デタラメな英語を使うと通じない、みたいなことはある。/チームで開発するときは「誰が書いたか分からないような(クセのない)プログラミングが望ましい」と言うことはあるね。
  • 最近のC言語と、次期C標準(C23)

    C言語といえば古い言語なイメージですが、その重要性はまだまだ落ちていません(多分)。重要な言語だからこそ、今もひっそりと進化を続けています。この記事では、そんなC言語の最近の動向を紹介します。 まずはC言語の前世紀の標準であるC99、現行の標準であるC11/C17を振り返り、その後に未来の標準であるC23に触れます。 C99 C99では色々追加されました。ここでは一部のみの紹介とします。 _Bool _Complex C++の std::complex とメモリ上での互換性がある(C++11以降)。 可変長配列(VLA) 可変長引数マクロ 浮動小数点数の強化 十六進表記 筆者による関連記事:浮動小数点数の16進表記 fma 筆者による関連記事:FMA (fused multiply-add) の話 #pragma STDC FENV_ACCESS, #pragma STDC CX_LIMI

    最近のC言語と、次期C標準(C23)
    mohno
    mohno 2022/01/30
    「K&Rスタイルの関数定義の廃止」はさておき、C++にないC独自の拡張はVisual Studioでは採用されない可能性が高いから、どっちにしろgcc独自機能っぽくなっちゃうんだけどな。
  • ゼロからの OS 自作入門 メモ

    「ゼロからの OS 自作入門」の実装メモ

    ゼロからの OS 自作入門 メモ
    mohno
    mohno 2022/01/10
    (自分で読めばいいんだろうけど)「ゼロから……」の“ゼロ”ってどこなんだろう。既存のライブラリを使ってるなら、氷山の海面部分がゼロなのかな、って感じなんだけど。
  • Goへのヘイトに対する考え方

    https://www.kbaba1001.com/entry/2021/09/17/073149 (該当記事が削除されました) RubyのサービスをGoで置き換えるのは3倍人手がかかる 何するにも機能不足 JSONの読み書きにわざわざ構造体書くの面倒 同僚がGoを選ぼうとしたら愚かな選択ですねと答える サーバーサイド開発にGoを使うのは危険 っぽい内容だったかと。 だいぶGoの特徴や既存の言語との考え方の違いが広まってきてるのかなぁと思っていた矢先だったので十年くらい前のような指摘をあえて今されていてびっくりした。 正直、ここに書かれたようなヘイト項目は既出すぎるので、もし影響の大きい項目を多くの人が同様に嫌っているならばGoはここまでの人気のある処理系になることはなかったと思う。(もしくは多くの人が嫌ってはいるが影響の小さい項目ということ) Goは出た当初、こういうヘイトが世界中のブロ

    Goへのヘイトに対する考え方
    mohno
    mohno 2021/09/18
    わが道をGo(行く)、ってことだね。「「RubyのRoRのようなサービスをGoで置き換えるのは3倍人手がかかる」なら納得」←C言語を使ったら、もっと人手がかかるだろうけど、なくなりそうにないしね。
  • Azure Functionsが辛すぎて泣きそうになった話

    はじめに 基的にAWSエンジニアとして仕事していて、Azureは未経験でしたが案件で採用されて触れる事になりました。 Azure Functionsで処理する所があって私に一任という感じだったのですが、まぁAWS Lambdaみたいなもんでしょと(恐らく他の人も)思ってました。 それがこんな事になろうとは… 必要なリソースが多い まず戸惑ったのがこれです。 関数を書くまでに以下のリソースが必要です。 Azure Functionsのインスタンス(という表現が正確か不明ですが。) Lambdaと違って1つのインスタンスに複数の関数を乗せる形になります(1つ1つ作ってもいいですが…) プラン 料金プランの事だと思えば良いかと。なんですが、プランも1つのリソースなんです。。 Azure Storage アカウント コードや一部の設定情報などが保存されています。 Application Insi

    Azure Functionsが辛すぎて泣きそうになった話
    mohno
    mohno 2021/05/30
    「Azureは未経験でしたが案件で採用されて触れる事になりました」←採用決まった後で、これはツラいな。「もう二度とAzure触るかという気持ちになりました」
  • プログラミング書籍を10年ぶりに改訂して気がついたこと

    はじめに 2011年に書いた良いコードを書く技術を増補改訂して出版しました。 Amazon | Rakutenブックス | honto | ヨドバシ.com | Gihyo Direct 10年ぶりに書籍を技術書を改定するという貴重な体験をさせていただいたので、執筆の中で気がついたことをご紹介します。 ちなみに初版を執筆した10年前はこんな世界です😳 VS Codeは存在せず、みんな秀丸Emacs、vim、Eclipseでコードを書いていた Java 7が出てたけど、Java 8まではあと3年待たないと行けない TypeScriptGo言語もSwiftもリリースされていない AWSの東京リージョンができたばかりでクラウドって何?って世界 GitはまだマイナーでSubversionでバージョン管理している人が多かった Dockerはまだない、VirtualBoxやVMwareを使ってた

    プログラミング書籍を10年ぶりに改訂して気がついたこと
    mohno
    mohno 2021/04/25
    ホント、この10年でだいぶ変わったよね。個人的には、あんまり変化してないんだけど(冷汗)。でも、「Javaの後方互換性は素晴らしい」←普通のプログラムが動かなくなるような破壊的変更してる言語なんてある?
  • Goに三項演算子が採用されない理由

    Goには「なぜ三項演算子がないの?」という意見を時々見かけます。言語開発側の意見と僕の見解をまとめていきますー。 FAQ その回答はGoのFAQに明瞭に書かれています。 Goに?:演算子がないのはなぜですか? Goには3項テスト操作がありません。 同じ結果を得るには、次を使用できます。 Goに?:がない理由は、言語の設計者が、操作が頻繁に使用されて不可解な複雑な式を作成するのを見ていたためです。 if-else形式は、長くなりますが、間違いなく明確です。 言語に必要な条件制御フロー構造は1つだけです。 ネストを許す GoPythonもif-elseが文であり、式として扱えない方針を採りました。式として扱えないということは、一定の構文でのみ記述が可能ということです。三項演算子はその性質上式として扱えることになります。 式として扱える場合なにが書けるようになるのかというと、各項や条件に式が書

    Goに三項演算子が採用されない理由
    mohno
    mohno 2021/04/10
    「コードカバレッジ」←Goは論理演算の短絡評価ないのか、と思ったら、普通にあるみたいだし、だったら「f1() && f2()」でf2が呼ばれないケースあるよね。と思ったら、FAQに書いてあるのは訳されている最初の理由だけか。
  • COCOA騒動メモ

    COCOA が動いていなかったことで大臣が謝罪してひと騒動起きている件について、開発者視点からのメモを残してみます。 なぜこのメモを書いたのか 世間的には不正確な情報で叩ければOKの風潮が強くてしんどいので、正しいと思われる情報を拾い集めたものです。中抜きwww 王子wwwww Xamarin wwwwwwww みたいな人にはあんまり興味ないかと思います。 調べ始めたきっかけはこのツイートと引用されたblog記事ですが、記事の内容が違うことはすぐに指摘されて撤回されていたのですが、実際どうだったのかさらに調べてみました。 接触通知アプリ COCOA とはなんなのか 仕組みとか何かは公式サイトでもみてもらうとして。この件で煽っている人でも一部理解できていない人がいるようなのですが、直接的な効果としては 保健所が濃厚接触者追跡をする際の手助けとなるためのアプリ ということになります。アプリをイ

    COCOA騒動メモ
    mohno
    mohno 2021/02/10
    Xamarin とか慣れていないところに押し付けられちゃったんじゃないかと思う。自分で開発してなかったアプリのメンテって、それこそ試す環境を作るだけで大変だったりするからね。仕事でそれじゃ困る、は当然としても。
  • JSの日付ライブラリは、どれを使えばいいのかまとめ

    Moment.jsは、新規開発停止、メンテナンスモードに移行 Moment.jsは、新規機能の開発停止、メンテナンスモード(セキュリティ修正とMoment Timezoneのデータ更新は行う)に移行することが発表されています。これから新規開発するプロジェクトでは、別のライブラリを使うことが推奨されています。 僕の新規開発のプロジェクトでも当初はMoment.jsを使っていましたが、リリース前にこの発表が出たので、別のライブラリに変更することにしました。 Moment.jsのドキュメントページに、推奨ライブラリが4つ掲載されていたので、その中から選ぶことにしました。 Luxon Day.js date-fns js-Joda 簡単に結論が出るケース Day.jsを使うべき人 Moment.jsからの移行 Moment.jsを使い慣れている人 Day.jsはMoment.jsと同じAPI体系を

    JSの日付ライブラリは、どれを使えばいいのかまとめ
    mohno
    mohno 2020/12/30
    リンク先、"One day soon, we hope there won't be a strong need for date and time libraries in JavaScript at all."なんだろうな。
  • ID生成方法についてあれこれ

    ID生成について聞かれることが多いので、独自の観点でまとめてみます。タイトルは適当です…。 DBMySQL(InnoDB)を想定しています。あしからず。 ID生成を知りたいなら ID生成に関しては以下の記事がよくまとまっているので参考にしてみてください。値形式など詳しく書かれています。 ID生成大全 Facebook, Twitter, Instagram等がどうやってIDを生成しているのか まとめ ID生成方法 以下のID生成方法は、お手軽に採用しやすいもの順で列挙します。 DB採番/連番型 AUTO_INCREMENT DBのAUTO_INCREMENTで採番する方法。 Pros 数値型で扱える 普通は64ビットの整数型を採用することが多い 単調増加する連番ですので、ソート可能でかつインデックスの空間効率がよい 単調増加するので、キャパシティを予測しやすい 64ビットあればあまり気に

    ID生成方法についてあれこれ
    mohno
    mohno 2020/10/13
    パフォーマンスにシビアなプロジェクトに(直接)かかわったことはないので、たいていここでいう「事前採番方式」だったな。
  • Go 言語にやってくる Generics は我々に何をもたらすのか

    2021 年リリース予定の Go 1.17 に、多くの皆さんが待ち望んでいた Generics が導入される予定です。Go が Generics を採用したプロセス、C++Java の Generics とどの様に違うのか、また Go の Generics はどの様に使えるのかをご紹介します。

    Go 言語にやってくる Generics は我々に何をもたらすのか
    mohno
    mohno 2020/09/22
    今どき、ジェネリクスないんだ、とは思ったものだ。
  • 1