タグ

Zennに関するmohnoのブックマーク (17)

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

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

    コーディングルールはマジでしっかり決めろって話
    mohno
    mohno 2022/11/06
    なんか“コメントが本番”っぽい。/デタラメな英語を使うと通じない、みたいなことはある。/チームで開発するときは「誰が書いたか分からないような(クセのない)プログラミングが望ましい」と言うことはあるね。
  • Webサービスで「ユーザーページに独自ドメインを登録できる」機能を提供するのがなぜ難しいか

    コンテンツ投稿系のWebサービスでは「ユーザーのページに好きな独自ドメインを登録できる」という機能をつけたくなることがあります。ユーザーからすると「コンテンツが自分自身の所有物であること」を感じやすいですし、コンテンツのポータビリティが上がりますし、とても夢がありますよね。僕もいつか実装してみたい機能のひとつです。 しかし、この機能を提供するには、以下のようなハードルがあります。 料金 ベンダーロックイン 複雑な実装(とくに認証) (1)の料金についてはデプロイ先によります。例えばVercelであればProプラン以上であれば無制限に独自ドメインを登録できます(Unlimited custom domains for all Pro teams)。 Google Cloudの場合にはCertificate Managerで独自ドメインごとの証明書を管理するのに「ひとつあたり○USD」という感

    Webサービスで「ユーザーページに独自ドメインを登録できる」機能を提供するのがなぜ難しいか
    mohno
    mohno 2022/10/19
    「一番ネックだと感じているのが(3)の複雑な実装」/めんどくさい時代になったなあ(←他人事)(←オイ)
  • UMLとかAWS構成図とかを描くツール

    UMLとか構成図とかの図を描くの何のツールを使えばいいか迷いませんか?私は迷います。 ですので、最近使っているツールを紹介します。 世の中にツールがイロイロあるのは理解した上で、大量に紹介するとやっぱり迷うので、似たようなツールや個人的に使わないツールはバッサリ省いています。 パワポで描く まずはPowerPointです。 エンジニア技術系の方は「パワポで図を描くのはちょっと、、、」と思われるかも知れませんが、状況によってありだと思っています。 パワポのメリット パワポは、ビジネスユーザーならほぼ誰でも使える システムを作る時に、お客さん側も含めた関わるメンバー全員がITに詳しいとは限りません。しかしそういう人にもシステムに対する理解は最低限していただく必要があります。システム構成図とか特に興味がない人に説明するときに「新しいツールをいれてください」というのはハードルが高いです。 パワポ

    UMLとかAWS構成図とかを描くツール
    mohno
    mohno 2022/05/04
    draw.io一択かと思ったけど、mermaid面白いな。「mermaidはテキストから図を自動生成してくれる → Git管理できる」/↓astah community版、なくなっていたのか。たしかに聞かなくなった。
  • 最近の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独自機能っぽくなっちゃうんだけどな。
  • colorsなどのnpmパッケージに悪意あるコードが含まれている問題について

    追記: 2022年1月11日 2:29 JSTにDoS脆弱性としてセキュリティアドバイザーが出されて、悪意あるバージョン(1.4.1や1.4.2)はnpmからunpublishされ、npmの最新は安全なバージョンである1.4.0へと変更されました。 Infinite loop causing Denial of Service in colors · GHSA-5rqg-jm4f-cqx7 · GitHub Advisory Database 2022-01-08 に colors というnpmパッケージにDoS攻撃のコードが含まれたバージョンが1.4.44-liberty-2として公開されました。 GitHub: https://github.com/Marak/colors.js npm: https://www.npmjs.com/package/colors 問題についてのIssu

    colorsなどのnpmパッケージに悪意あるコードが含まれている問題について
    mohno
    mohno 2022/01/10
    「colors というnpmパッケージにDoS攻撃のコードが含まれたバージョンが1.4.44-liberty-2として公開」「最大5万以上のパッケージがこの問題の影響」/火事ですべてを失った無敵の人。今後、寄付が集まって解決するのかどうか。
  • ゼロからの 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に書いてあるのは訳されている最初の理由だけか。
  • 中国の "物流シェアリング" サービス利用者が死亡、運送ドライバーが過失致死罪で逮捕された件をまとめてみる

    この記事は何? 2021/3/3(水)、中国公安(警察)の発表により、中国の最新物流テックサービス "貨拉拉(LALAMOVE)" の利用者(配達依頼主)が運送中の車から飛び降り死亡し、もう一方の利用者(運送ドライバー)が過失致死罪で逮捕されたことと、そのあらましが明らかにされました。 事件の全容を読むと、下記のような方に何らかの示唆があるかもしれないなと思ったので、その経緯のまとめを試みています。 想定読者 中国の最新シェアリングサービスに興味のある方 物流業界・引っ越し業界でDXをしようとしている方 ラストワンマイルを解決しようとしている方 〇〇テック(X-Tech)系プロダクトを作ろうとしている方 シェアリングサービスを使っている方or稼いでいる方 中国の物流テックサービス"貨拉拉(LALAMOVE)"とは Lalamove Marketing, CC BY-SA 4.0, via

    中国の "物流シェアリング" サービス利用者が死亡、運送ドライバーが過失致死罪で逮捕された件をまとめてみる
    mohno
    mohno 2021/03/05
    物流の出会い系か。「差額の12元(約200円)はなんとLALAMOVEが負担しています」←競合が出られないってことか?「シリーズFで15億米ドル調達、時価総額が100億米ドル近くになるなど急速に成長」←よく金を出すなあ。
  • COCOA騒動メモ

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

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

    最近「Raspberry Piはすぐ壊れる」という趣旨の話題がTL上に出てきたので複雑な心境で眺めていました。 (以下簡略化のためRaspberryPi = RPiにします) もし「RPiはすぐ壊れるから製品投入に向いてない」と思っている方がいるのであれば、その理由でRPiを切ってるのはもったいないなぁと思いこの記事を書いてみました。 カンタンに自己紹介をしておくと、某社でRPiをベースにした製品を作り「RPiはすぐ壊れないものなのか?」の検証を進めていました。今では各地で5000台以上は動いてると思います。 ざっと書いたので、あまり技術的に詳しいことは書いてませんが、読み物として楽しんでもらえれば幸いです。 (これらテストをしたのがどのバージョンのRPiなのかについては触れません。読者さんが使いたいと思ったRPiでで気になる部分をテストしてもらうことが良いと思っています) 10,000回

    Raspberry Piは本当に壊れやすいのか
    mohno
    mohno 2021/01/07
    「各地で5000台以上は動いてる」←壊れるのが10年に1度だとしても毎日1台以上は壊れている計算。「静電気にはめっぽう弱い」「宇宙線は諦める」「最悪壊れたら交換すればいい」
  • 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
    パフォーマンスにシビアなプロジェクトに(直接)かかわったことはないので、たいていここでいう「事前採番方式」だったな。
  • IT業界の勉強を強いられる構造は悪なのか

    ソフトウェア・エンジニアになったばかりの人がよくするクレームの一つに勉強がつらいというものがあります。Web開発でより顕著ですが、新しい技術が出るたびに勉強しなければならず時には業務時間外に勉強しないと置いていかれてつらいというものです。 IT業界の勉強を強いられる構造は悪なのでしょうか。 資集約的ビジネスと労働集約的ビジネスの違い 世の中のビジネスは大別すると労働集約的ビジネスと資集約的ビジネスに分けることができます。 資集約的ビジネスは事業を始めるのに大きな資金や設備投資が必要なビジネスです。鉄や石油、飛行機やビルを作るためには資金やスペース、時間がかかります。設計者や作業員の能力はもちろん大切ではあるものの、まず投資できる体力がないと事業をはじめることもできません。 参入障壁が設備などによるため労働者に投資するよりも設備に投資した方が競合優位性の面では有利かもしれません。こうい

    IT業界の勉強を強いられる構造は悪なのか
    mohno
    mohno 2020/10/05
    マジレスすると勉強しなくても煙たがられる程度でクビにならないのが日本の法律だし、他人の尻拭いさせられてろくな経験にならないことだってあると思うし、そうそう能力が待遇に反映されるとも限らないと思う。
  • Go 言語にやってくる Generics は我々に何をもたらすのか

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

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