タグ

ブックマーク / qiita.com (336)

  • 「0.1+0.2≠0.3」を説明できないエンジニアがいるらしい - Qiita

    この記事はNuco Advent Calendar 2023の4日目の記事です。 弊社では、経験の有無を問わず、社員やインターン生の採用を行っています。 興味のある方はこちらをご覧ください。 はじめに 後輩に 「なぜ0.1+0.2≠0.3になるんですか?」 と聞かれて答えられますか? コンピュータの計算では「0.1+0.2」は「0.3」になりません。 これを理解していないと予期せぬ重大なバグを生み出す可能性があります。 分からない方、どうぞ安心してください。 この記事を読んだ全員が「0.1+0.2≠0.3」を理解できるように分かりやすく説明していきます。 コンピュータが計算を間違う理由 まず、そもそも「0.1+0.2=0.3」で正しい!「0.1+0.2≠0.3」なんてあり得ない! という方のために、プログラミング言語のフォーマット処理を経ない、コンピュータの計算結果を見てみます。

    「0.1+0.2≠0.3」を説明できないエンジニアがいるらしい - Qiita
  • 自作RDBのためにオンディスク並行Skip Listを作ってみた - Qiita

    どうも ryo_grid です。 今回は自作RDBMS SamehadaDB の開発の中で、インデックスとして用いるためのコンテナとして、オンディスク並行Skip Listなるものを作ってみたので、それについて書きたいと思います。 (以降、文体が変わりますが気にしないで下さい) はじめに 文書は筆者がオンディスク並行Skip Listを設計・実装してみた中で得た、知識や知見の共有を目的とするものである 英文のものも含め、Skip Listに関して、文書で共有する種の情報がまとまった形で提供されているWebページ(等)は、筆者が探した範囲で見当たらなかったので、その点で、価値のある知識・知見として、多くの人の役に立てば幸いである Skip Listについて Skip Listとは いわゆる Key-Value ストアを実現する確率的なデータ構造 他の同様の機能性を提供するデータ構造に対し

    自作RDBのためにオンディスク並行Skip Listを作ってみた - Qiita
  • サブスクリプション型のビジネスなら見ておくべき5つの超重要チャート - Qiita

    サブスクリプション型のビジネス、またはソフトウェアの世界ではSaaSと言われたりする、顧客が製品やサービスを継続的に利用するために購読するタイプのビジネスは一般的な売り切り型のビジネスとは収益構造が異なるため、ビジネスを成長させるために見るべき指標やチャートも違ってきます。 よくあるのは、この違いを意識せずに「売り切り型」のビジネスでよく使われる指標やチャートをモニターしていたがために、ビジネスの成長のきっかけをつかめなかったり、成長していると思っていたビジネスが急に傾き始めたり、成長の見通しを社内で共有、または外部の投資家にうまく説明できなかったり、という問題です。 そこで、こちらの記事ではサブスクリプション型のビジネスを成長させるために欠かせない5つのチャートを使った簡単な分析手法を紹介させていただきます。 1. コホート分析(生存分析) コホート分析(生存分析) は顧客のチャーンやリ

    サブスクリプション型のビジネスなら見ておくべき5つの超重要チャート - Qiita
  • 急なTypeScript案件🔥最初の30日間に使い倒したい「コードリーディング支援ツール」 - Qiita

    この投稿では、「TypeScriptの文法や用語がよく分からない」という問題を解消してくれそうなツールを紹介します。 勉強しながらの見切り発車 最近はTypeScript未経験でも、TypeScript案件にアサインされることが増えてきているように思います。 運がいいと着手前にTypeScriptをじっくり学習する時間を与えられることがあります。しかし、多くのケースでは、見切り発車で開発に参加するのではないでしょうか。 コードリーディングから始まる TypeScript案件は、理解すべき既存のTypeScript/JavaScriptコードがあるケースが多いです。 そのため、 読んで理解すべき既存のTypeScriptコードがある しかし、TypeScriptの知識が乏しい状態でスタート といった事態がよく起きます。 新規プロジェクトでは既存コードがありませんが、ググって出てきたサンプルコ

    急なTypeScript案件🔥最初の30日間に使い倒したい「コードリーディング支援ツール」 - Qiita
  • Rustの構造体に文字列を持たせるいくつかの方法 - Qiita

    きっかけ Rust Programming Language Forumにこんな質問が出ていました。 構造体にStringを持たせられるようにStringを受け取りたいです。これを実現する方法はいくつかあります。 &str String T: Into<String> T: AsRef<str> 例: pub struct Person { name: String, } impl Person { pub fn new(name: WhatTypeHere) -> Person { Person { name: name.some_conversion() } } どれが一番Rustらしい書き方ですか? 単純に構造体に文字列を持たせる方法はいくつかあるのですが、実はその実装方法によって文字列のコピーやアロケーションの回数が異なります。 ここでは、上記の4つの場合と、コメント欄で提案されて

    Rustの構造体に文字列を持たせるいくつかの方法 - Qiita
  • 2で割ることと3で割ること - Qiita

    この記事でお題にするのはCPUレジスタ上の整数除算です。以下、単に除算とも書きます。 除算は非常に高コストな演算なため、コンパイラは最適化によって、できるだけ整数除算を別の計算に置き換えようとします。 最適化ができる場合の一つとして、割る数が定数である場合があります。頭のいいコンパイラは、除算を乗算とビットシフト等を駆使した演算に置き換えます。この記事では、そういった最適化の背景にある理屈を部分的に解説します。 計算機環境としてはモダンなx86 CPUを仮定します。したがってレジスタは32/64ビットであり、負数は2の補数表現になっています。ある程度は他の命令セットでも通用する話になっているかもしれません。 そもそも整数の除算とは プログラミングにおける整数の除算の定義について確認します。整数$n$を整数$d$で割るとき $$ n = q \times d + r $$ が成り立つように除

    2で割ることと3で割ること - Qiita
  • Java 15新機能まとめ - Qiita

    Java 15が2020/9/15にリリースされました。 https://mail.openjdk.java.net/pipermail/announce/2020-September/000291.html Java SE 15 Platform JSR 390 JDK 15 GA Release こちらの動画でざっくりと説明しています。 MacLinuxでのインストールにはSDKMAN!をお勧めします Oracle OpenJDK以外に無償で商用利用できるディストリビューションとしては、次のようなものがあります。 AdoptOpenJDK Azul Zulu Community Liberica JDK Amazon Corretto 15 アップデートは10月に15.0.1が、翌年1月に15.0.2がリリースされることになります。 Oracle JDKは開発用途には利用できますが、

    Java 15新機能まとめ - Qiita
  • Rustで高速に大量のHTTPリクエストを投げる - Qiita

    自己紹介 趣味Rustをやっている Twitter https://twitter.com/hatookov Github https://github.com/hatoo SoundCloud https://soundcloud.com/gfyxxqjngkze ネットワーク初心者なので誤りがあるかも知れません モチベーション oha HTTPロードジェネレータ Apache Bench(ab)みたいな tui-rsでリアルタイム表示 とにかくいっぱいリクエストを投げたい! ベンチマーク環境 WSL 2 Ryzen 3950x 今回はtokio https://github.com/hatoo/rust_http_benchmarks ベンチマーク雛形 ベンチマーク系のライブラリは複数回実行してしまい、時間がかかるのでやめた ざっくりと時間がわかればいいかな 簡単のためにサーバーはw

    Rustで高速に大量のHTTPリクエストを投げる - Qiita
  • Rust Memory Container Cheat-sheet - Qiita

    Repos: https://github.com/usagi/rust-memory-container-cs 文字で読み書きするとやや大変です。しばらく間を開けてRustを触ったりするとスコシ混乱するかもしれません。と、いうわけでRustでメモリーコンテナー系に触れるモードになった時用に1枚絵のチートシートを整理しました。 文字を書けるQiitaにポストするのでちょっとだけチートシートの解説も乗せます。 おまけ解説 Threads; スレッド群 (rev.0 -> rev.1 でこのチートシート上で最初に現れる選択肢に切り替わりました ⇔ Ownership; 所有権) Rustではマルチスレッディング実行の安全性を向上するため、 適当に確保したメモリーをスレッド間でうっかり共有できない(少なくとも簡単にはうっかりできない程度に難しい)仕組みがあります。その仕組みの核心は標準ライブラリ

    Rust Memory Container Cheat-sheet - Qiita
  • curl は何をしているか #システムコール編 - Qiita

    はじめに curl は Web サーバや REST API の動作確認でよく利用されているコマンドです curl が実際にどんな処理を行っているのか、strace コマンドを使用してシステムコールレベルで観察してみたいと思います 説明に間違いがありましたらごめんなさい 調査環境 Web サーバ 1 台とクライアントマシン 1 台を LAN ケーブルで直結し、OS は Linux をインストール、Web サーバは nginx を使用します 各マシンの IP アドレスは以下の通りです マシン IP アドレス

    curl は何をしているか #システムコール編 - Qiita
  • 高可用性かつスケーラブルなKubernetesクラスターを運用するときに気を付けたいこと - Qiita

    はじめに お仕事でプリセールスをしているため、お客様やSIパートナー様といっしょに「ぜったいにサービスを止められないシステム」について議論することが多くあります。 一方、クラウドはオンプレに比べてスケーラブルな構成をとることが得意です。したがって、ユーザーの利用が時間的にばらつきがあるシステムやスパイクアクセスが発生するシステムなどの場合は、クラウドを提案する良いチャンスだったりもします。 このブログではそのようなニーズを満たすクラスターを運用するときに気を付けたいことや、私自身が検証していて気づいたことをホワイトボードに書く感覚で、だらだらと書きとめます。 なお、内容はたまたまAzureが提供するKubernetesマネージドサービスである「Azure Kubernetes Service(以下AKS)」を使って検証しましたが、基的な考え方はやGoogle CloudのGKEやAWS

    高可用性かつスケーラブルなKubernetesクラスターを運用するときに気を付けたいこと - Qiita
  • この TypeScript が Hello, world! のくせに慎重すぎる - Qiita

    この記事は npm へ公開可能なパッケージを TypeScript で作成しながら、JS/TS 開発で良く使われるツールを紹介する記事です。 typescript-npm-starter という名前の Hello, world! パッケージを公開するという体で話を進めます。

    この TypeScript が Hello, world! のくせに慎重すぎる - Qiita
  • 僕は、なぜ絵文字の長さが、直感に反するのか理解したい...!! - Qiita

    対象者 UnicodeやUTF-16について、よくわかってない人 -> ここから "😀".split("")で文字化けする理由がわからない人 -> ここから [..."👨‍👩‍👧"].lengthが5になる理由がわからない人 -> ここから 文字コードについてもう一度 文字コードは以下の二つで構成されています 符号化文字集合: 文字と、その文字の位置を示す一意の番号の集合 文字符号化方式: 文字に振られた番号をバイト表現にエンコードする方法 符号化文字集合 符号化文字集合は、 文字 その文字の位置を示す一意の番号 この二つの組み合わせの集合のことを指します。 例えばASCIIでは 8bit(128通り) でラテン文字や英数字を表現しています。 しかしASCIIには日語などの非英語圏の文字が収録されていません。 そのため、日語を収録したShift-JISやアジア圏の文字を収録した

    僕は、なぜ絵文字の長さが、直感に反するのか理解したい...!! - Qiita
  • 2019年、俺の読んだ論文50本全部解説(俺的ベスト3付き) - Qiita

    第一位 Focal Loss for Dense Object Detection 物体検知のためのFocal Loss これは不均衡データに対処するための損失関数Focal Lossを提案した論文なのですが, とにかくそのシンプルさにやられました. 画像のFLの式を見てください. たったこれだけです. ptは正解ラベルに対する予測値なのですが, ptが大きければ大きいほど損失値をしっかり抑えられるように設計された関数となっています. 正解ラベルに対して0.6と予測するサンプルを学習に重要視せず, 0.3とか0.1とか予測しちゃうサンプルにしっかりと重要視するのです. 自分も7月くらいまでは不均衡データに関する研究していたのですが, 自分が考えた多くのアイディアが結局Focal Lossの下位互換に帰結してしまうのです. しかもこの損失関数の汎用性は非常に高く, あらゆるタスクに入れること

    2019年、俺の読んだ論文50本全部解説(俺的ベスト3付き) - Qiita
  • Kubernetesをぶち壊す10の奇妙な方法 (前編) - Qiita

    はじめに これは、ZOZOテクノロジーズ #4 Advent Calendar 2019 12日目のエントリーです。 今回はKubeConに参加して面白かったセッションの1つである「10 weird ways to blow up your Kubernetes(Kubernetesをぶち壊す10の奇妙な方法)」をご紹介します。 この他にも、「Airbnbの事例に学ぶKubernetesとマイクロサービスのあり方 @ KubeCon Seattle 2018」という記事も執筆しているので、合わせてご覧ください。 また、このセッションのスピーカーであるMelanie Cebulaは、CloudNative Days Tokyo 2019のキーノートスピーカーとしても来日し、登壇しています。 後編書きました! セッションの背景 セッションスピーカーであるMelanieとBruceは、Airbn

    Kubernetesをぶち壊す10の奇妙な方法 (前編) - Qiita
  • ソシャゲエンジニアの自分が開発に必須だなと思った知識(MySQL編) - Qiita

    この記事の目的 自分は、とある会社様の元でソシャゲAPI 開発をさせていただいています。 ソシャゲは、リリース時やイベント時などに集中アクセスされやすく、負荷軽減の知識がない状態で開発を行ってしまうと、運用時に緊急メンテ祭りになりやすいジャンルかなと思っています。 これまで培ってきた MySQL の知識ですが、脳内メモリ量の関係上、暗記できないのでメモしておこうというのが主目的です。 ここ数年ほどソシャゲ開発しかしていないため、偏っている感がある内容ですのでご注意ください。 概要 ストレージエンジンは InnoDB。メインで扱っている MySQL バージョンは 5.6。 記事の内容ですが、これらのキーワードを見て、おおよそ分かる方は読む必要はないかと思います。 インデックス系 クラスタインデックス カバリングインデックス EXPLAIN で注意するべき値 トランザクション系 MVCC

    ソシャゲエンジニアの自分が開発に必須だなと思った知識(MySQL編) - Qiita
  • コンテナイメージビルドが遅いなら、Kaniko使うと幸せになれる(全部入りRails Dockerfileを参考に) - Qiita

    コンテナイメージビルドが遅いなら、Kaniko使うと幸せになれる(全部入りRails Dockerfileを参考に)GitLabCircleCITravisCIDockerkaniko 結論 BuildKit対応してないCI/CD(サービス)使ってるならKaniko使えば早くなるよ Google Cloud Build使ってるなら迷わず使っておくべき Amazon Elastic Container Registry(ECR)でも問題なく使用できる この記事の例でいうと未キャッシュからフルキャッシュなら 288秒→132秒に短縮(約2倍) 御託はいいのでどう書くか教えて ここに書いてますので、自分の使ってるCI/CDサービスに当てはまるのを選んで参考にどうぞ https://github.com/chimame/kaniko-example 題 長いうんちくや説明を知りたい人向けです。

    コンテナイメージビルドが遅いなら、Kaniko使うと幸せになれる(全部入りRails Dockerfileを参考に) - Qiita
  • Dockerでデバッグ対象のコンテナにツールを入れずにtcpdump/straceなどを使うワンライナー - Qiita

    はじめに Dockerであんなコンテナやこんなコンテナを動かしてると、なんかうまく動かなくて、デバッグのためにtcpdumpとかstraceなどのツールが使いたくなることが稀によくあります。 そんな時、デバッグ対象のコンテナ内にツールを一時的にインストールしちゃうというのが、まぁ簡単で分かりやすいんですが、デバッグ対象のコンテナを汚すのはできれば避けたいところです。 Dockerのコンテナの分離というのは、結局のところLinuxのリソースの名前空間の分離であるので、逆に同じ名前空間を共有すれば、デバッグ用に立てた隣のコンテナから、デバッグ対象のコンテナのネットワークやプロセスの状態を観察することも可能です。 また、docker buildDockerfileを標準入力から受け取ることもできるので、ワンライナーにしてデバッグ用のコンテナをシュッと呼び出せるようにしてみました。 TL;DR

    Dockerでデバッグ対象のコンテナにツールを入れずにtcpdump/straceなどを使うワンライナー - Qiita
  • MySQLとPostgreSQLコマンド比較表 - Qiita

    \x select * from t; ※mysql同様、1回のクエリだけ\xしたい場合は select * from t \gx psql 9以前の場合はこちら

    MySQLとPostgreSQLコマンド比較表 - Qiita
  • Rubyの型解析ライブラリSorbet事始め - Qiita

    Help us understand the problem. What are the problem?

    Rubyの型解析ライブラリSorbet事始め - Qiita