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

  • カーディナリティは低いが、インデックス効果がありそうなパターンの検証 - Qiita

    はじめに カーディナリティとは、あるカラムにおいて、取りうる値の種類の事です 例えば、性別の場合 男性 女性 不明 3種類とすると、カーディナリティは「3」になる。 この場合は、カーディナリティは低いと表現されます B-treeインデックスを作成する際には、一般的にはカーディナリティが高いカラムを指定します。 例えば、性別のようなカーディナリティの低いカラムの場合。 データの比率が同じの場合において、インデックスに絞り込めるのは1/3程度なので、インデックスの効果は薄いと考えられます。 しかし、データ比率が極端に異なる場合。 インデックスが効果を発揮する場合もあるようなので、検証していきたいと思います 環境 mysql Ver 8.0.32 フラグのデータ数に偏りがある場合の検証 インデックスあり CREATE TABLE tests ( id INT PRIMARY KEY AUTO_I

    カーディナリティは低いが、インデックス効果がありそうなパターンの検証 - Qiita
    tetsu040e
    tetsu040e 2023/03/26
  • mysql8でspatial indexを効かせるためにはSRIDを統一しておく必要があるかもしれない話 - Qiita

    総論 spatial index効かせたかったら列にSRIDをつけろ GISを使って地図情報を扱ったり近傍検索したり mysqlは8になってGIS関連が超パワーアップしたと聞いて。 MySQLGIS機能がやってきた~MySQL8.0最新情報~@OSC2018北海道 MySQL 8.0で強化されたGIS機能のご紹介:「FOSS4G 2018 Hokkaido」での発表資料 準備 何はともあれ環境作成 [qyen@mullet mullet]$ mysql --version mysql Ver 8.0.16 for Linux on x86_64 (MySQL Community Server - GPL) CREATE TABLE `locations` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `name` varcha

    mysql8でspatial indexを効かせるためにはSRIDを統一しておく必要があるかもしれない話 - Qiita
    tetsu040e
    tetsu040e 2022/10/12
  • シェルスクリプトでpsql使用時にパスワードを聞かれないようにする。 - Qiita

    シェルスクリプトでpsql使用時にパスワードを聞かれないようにする。 PGPASSWORDをエクスポートする。 export PGPASSWORD=postgres psql -U postgres dbname -c "select * from tbl;" ユーザ名とデータベース名をエクスポートするときは以下。 export PGDATABASE=dbname export PGUSER=postgres

    シェルスクリプトでpsql使用時にパスワードを聞かれないようにする。 - Qiita
    tetsu040e
    tetsu040e 2022/09/30
  • マルチテナント SaaS を設計する際に参考になった資料 - Qiita

    弊社 LIGHTz 初のアドベントカレンダー1発目でございます 弊社、絶賛 SaaS システムの開発中で、度々設計が議論になります。 そこで、備忘録も兼ねて参考になった資料を一言添えて挙げていきます。 ....... 一発目なのに備忘録の投稿をお許しください これから SaaS を作る皆様、↓もおすすめです。 リソースと分離編 マルチテナントSaaSのテナント分離をRow-Level Securityに移行した - Sansan Builders Blog 分離に関して各社の奮闘と生きた事例を見ることができます https://mitomasan.hatenablog.com/entry/2016/05/25/210151 あまり他の記事ではあまり言及されていない観点について述べられています url(ドメイン)設計 DBの接続先の切り替えはユーザーのリクエストを処理する最初の段階でフレーム

    マルチテナント SaaS を設計する際に参考になった資料 - Qiita
    tetsu040e
    tetsu040e 2022/09/15
  • Echo で net/http/pprof をマウントする - Qiita

    echo は DefaultServeMux を使っていないので手動でマウントする必要がある。 echo には echo.WrapHandler や echo.WrapMiddleware という便利なヘルパ関数が用意されてるのでそれを使えばいい。 package main import ( "net/http" "net/http/pprof" "github.com/labstack/echo" ) func main() { e := echo.New() pprofGroup := e.Group("/debug/pprof") pprofGroup.Any("/cmdline", echo.WrapHandler(http.HandlerFunc(pprof.Cmdline))) pprofGroup.Any("/profile", echo.WrapHandler(http.H

    Echo で net/http/pprof をマウントする - Qiita
    tetsu040e
    tetsu040e 2022/08/26
  • Go+cgoをMacでクロスコンパイル - Qiita

    go-sqlite3 を使った Go のプログラムを Mac でクロスコンパイルして LinuxWindows に持っていくと、次のようなエラーが出て実行できませんでした。 Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 requires cgo to work. This is a stub そこで cgo を使った Go のプログラムを Mac でクロスコンパイルして LinuxWindows で実行できるようにした時のメモです。 Linux musl-cross をインストール

    Go+cgoをMacでクロスコンパイル - Qiita
    tetsu040e
    tetsu040e 2022/07/18
    “'-linkmode external -extldflags "-static"'”
  • Go slice ベストプラクティス - Qiita

    Go で高速なコードを書くために使えるslice のベストプラクティスを、slice の仕組みを解説してから紹介します。 最適化の前提 稿はコードの高速化を目的としています。そこで最適化にあたっての注意点を掲載します。 時期尚早な最適化は避けよう 最適化は、適切に計測しながら実施しよう 稿の slice 高速化テクニックは、高速化するかケースバイケースのものも含まれます。計測しましょう。 方針 コードの高速化には、並列化やキャッシュなど様々なアプローチがあります。 しかし稿ではアプローチを以下の3つに絞って、slice まわりのコードを高速化に関して解説していきます。 メモリアロケートのサイズを減らす メモリアロケートする回数を減らす 不要なメモリコピーを減らす slice の仕組み The Go Blog の Go Slices: usage and internalsが詳しいです

    Go slice ベストプラクティス - Qiita
    tetsu040e
    tetsu040e 2022/07/08
  • 初心者プログラマーのための変数/関数/メソッドの英語命名規則 - Qiita

    はじめに 「なんか、レビューのたびに変数名を指摘されてる気がする...」 「日人なんだから、英語で命名とか無理...」 こんなお悩みありませんか? この記事では、「プログラマー英語の命名で悩んだ時にどうすれば良いか」をフローチャート形式で解説します! これであなたも駆け出しエンジニアを卒業できるかも!? ※記事はLaravel,Vue.jsのプロジェクトで運用されているルールを元に解説しています。 プロジェクト内だけの内輪ルールも含まれていますので、ご了承ください。 対象者 この記事は下記のような人を対象にしています。 駆け出しエンジニア プログラミング初学者 PHP(Laravel),JavaScript(Vue.js)で英語のネーミングに苦戦中 前提知識 下記のような中学・高校で学ぶ内容については理解していること前提で解説します。悪しからず。 三単現のsって何? 5文型(SV/S

    初心者プログラマーのための変数/関数/メソッドの英語命名規則 - Qiita
    tetsu040e
    tetsu040e 2022/06/15
    いい感じにまとめられてる
  • 【Vue 3 入門】双方向データバインディングの標準化 - Qiita

    はじめに Vue 2 のリリースから Vue 3 の開発に至るまで、双方向データバインディングのより柔軟な利用を実現するため、様々な取り組みが行われてきました。稿では Vue 3 のリリースに伴い v-model が 双方向データバインディングの標準化 に向けて、どのような破壊的変更がされたかについて解説します。 ‎TL;DR コンポーネント利用時の prop と event のデフォルト名の変更 .sync 修飾子の廃止、代替構文の追加 同一コンポーネントで複数の v-model の利用可 カスタム修飾子の作成可 コンポーネント利用時の prop と event のデフォルト名の変更 v-model はユーザーの入力イベントにおいてデータを更新するための糖衣構文です。Vue 2 のコンポーネントで v-model を利用した場合、以下のような糖衣構文になります。詳しい内容は『【Vue.

    【Vue 3 入門】双方向データバインディングの標準化 - Qiita
    tetsu040e
    tetsu040e 2022/06/15
  • input[type="text"]の横幅を入力された文字に合わせて可変にする - Qiita

    UIの都合上、input[type="text"]を複数横に並べて、 かつスマートに横幅を変えようとしたら実装で案外苦労したのでメモ。 つくったもの Demo: https://jamog3.github.io/input-width-to-variable/ Repository: https://github.com/jamog3/input-width-to-variable やってること 全体的なコードについては、こちらをご参照ください。 以下、コードまわりの解説。 html <div class="input-text__item"> <div class="input-text__dummy js-dummy-input-text" data-placeholder="文字を入力してください"></div> <input type="text" class="input-tex

    input[type="text"]の横幅を入力された文字に合わせて可変にする - Qiita
    tetsu040e
    tetsu040e 2022/06/14
    “empty”
  • で、オフセット法に比べてシーク法のページネーションはどれだけ早いの?RDB毎に。 - Qiita

    また、上記を調べる中で、各種リレーショナルデータベースでテーブル作成やインデックスの作成、大量件数のランダムなデータ生成、統計情報の取得や実行計画の取得までの一連の作業を後で見返すよう用に書いています。 途中黒三角▼の行がありますが、ここはsqlなど縦に長いので折りたたんでいます。参照する場合は、その行をクリックしてください。 何をやるか? 他えば、受注管理システムの受注明細画面のバックエンドで実行するページネーション用のsqlを作っていることをイメージしてください。 ざっくりした要件では、最近受注した明細を見たいというものです。 最終的に決まった外部設計は、受注日付の降順、製品IDの昇順、受注明細IDの昇順でソートした受注明細を10件毎にページネーションするというものです。 ページネーションを試すテーブルの作成(受注明細テーブルの作成)。 これに100万件のランダムなテストデータを登録。

    で、オフセット法に比べてシーク法のページネーションはどれだけ早いの?RDB毎に。 - Qiita
    tetsu040e
    tetsu040e 2022/05/10
  • offsetでページネーションは遅い。これからはシーク法だ! - Qiita

    動機 ページネーションは​​ページングと呼ぶこともありますが、 ページネーションでググるとoffsetを使った例(便宜上オフセット法と呼びます)がよくでてきます。 でも、これ遅いです。どれだけ遅いかはデータベース毎に調べたたのでこちらを参照(で、オフセット法に比べてシーク法のページネーションはどれだけ早いの?RDB毎に。)。 で、これを解決する方法にシーク法(後述)がありまして、かなり高速なのでお薦めです。 が、シーク法のsqlはちょっと複雑なので(特にorder by句に3項目以上の項目があり、 且つascやdescが組み合わさった場合)、後で見返すために覚書として。 シーク法の参考URL Faster SQL Pagination with Keysets, Continued Posted on November 18, 2013 USE THE INDEX,LUKE! 次ページの取

    offsetでページネーションは遅い。これからはシーク法だ! - Qiita
    tetsu040e
    tetsu040e 2022/05/10
  • RSAに対するフェルマー攻撃 - Qiita

    はじめに(Introduction) RSAの鍵ペアの生成方法にミスがあり脆弱性となってしまった実装例があったようです。 元の文献を機械翻訳(ちょっと修正)してみます。 原文のデモをやってみたところ、案外動いたので先にデモを記します。 デモ(Demo) まずは、素数$p$と$q$を生成して$N$を求めるところです。 ※:鍵長が2048bitなので多少時間がかかります。 問題となったライブラリがこのようなロジックであったかは不明ですが、翻訳した資料を参考に作成しています。 import random as rnd import sympy key_length = 2048 distance = 10000 p = 0 q = 0 # 乱数Xを生成する。 X = rnd.randrange(2, pow(2, key_length)) for i in range(distance): #

    RSAに対するフェルマー攻撃 - Qiita
    tetsu040e
    tetsu040e 2022/03/19
  • MariaDB(mysql)をsysbenchでベンチマークする - Qiita

    はじめに DBのバージョンアップをするときや、パラメタ変更をする際、性能が劣化していないか、または狙った通りに性能が向上しているかを確認することは重要です。今回はsysbenchというツールを使ってみました。 sysbenchとは DBのベンチマークとしてもよく使われますが、サーバのCPU、memory、fileioを計測することもできます。DBに対してはoltp(OnLine Transaction Processing)を使って計測します。 sysbenchのバージョン 環境はCentOS 6.7です。yumではepelをリポジトリを追加すればinstallできます。インストール方法は省略します。

    MariaDB(mysql)をsysbenchでベンチマークする - Qiita
    tetsu040e
    tetsu040e 2022/02/10
  • MySQL 8.0.22 で innodb_log_writer_threads の効果を見てみる - Qiita

    これは MySQL Advent Calendar 2020 23 日目のエントリです。 昨日は atsuizo さんの「MySQLのデータ投入順序とデータファイルサイズのお話」でした。 そして、↓の記事の続きでもあります。 MySQL を使って EC2 r6g.large vs r5.large(mysqlslap 対決)をやってみた 前回は MySQL Community Server をインストールした AWS の EC2 インスタンスを使い、Graviton2 プロセッサと Intel プロセッサで mysqlslap 対決をしてみましたが、その延長で、innodb_log_writer_threadsの効果を確かめてみました。 innodb_log_writer_threadsとは MySQL 8.0.22 で追加された InnoDB の設定項目(パラメータ)です。 innodb

    MySQL 8.0.22 で innodb_log_writer_threads の効果を見てみる - Qiita
    tetsu040e
    tetsu040e 2022/02/03
  • MySQL を使って EC2 r6g.large vs r5.large(mysqlslap 対決)をやってみた - Qiita

    これは MySQL Advent Calendar 2020 21 日目のエントリです。 昨日は mita2 さんの「MySQL バイナリログをマスキングするツールを作ってみた」でした。 そして、↓の記事の続きでもあります。 AWS の EC2 Graviton2 インスタンスに MySQL をインストールしてみた(だけ) 前回はタイトルどおり当に(R6g インスタンスに)MySQL をインストールしただけでしたので、今回はmysqlslapを使って R5(r5.large)インスタンスと比較してみます。 ※mysqlslapの説明は以下のページにあります(使うのは 8.0 用ですが基は同じ)。 4.5.7 mysqlslap — 負荷エミュレーションクライアント(MySQL 5.6 リファレンスマニュアル) (いまさらですが、表中の--auto-generate-sql-load-t

    MySQL を使って EC2 r6g.large vs r5.large(mysqlslap 対決)をやってみた - Qiita
    tetsu040e
    tetsu040e 2022/02/03
  • Athenaでデータ抽出するときによく使う関数まとめ - Qiita

    はじめに CloudFrontログなどのアクセスログからデータ抽出してちょっと加工して渡すみたいなことをするときに いい感じに加工するのによく使う関数をピックアップしておく。 データソース 基は以下のリンクの中に関数があります。 Prestoの情報はあまり調べても出ないことも多いので、 ここを見ながら情報を探していくのが確実です。 SQL クエリ、関数、および演算子 CSVデータの読み込み Athenaのクエリ結果を一旦ローカルに落としたあとに、 CSVデータを読み込むと""も値として読み込まれてしまう。 例えば以下のようなデータを読み込む場合

    Athenaでデータ抽出するときによく使う関数まとめ - Qiita
    tetsu040e
    tetsu040e 2022/01/27
  • MHAの代替となるか?OrchestratorでMySQLの自動フェールオーバーを試す - Qiita

    Orchestratorというツールを最近知り、MHAやmysqlfailoverのような自動フェールオーバーができるということで試してみました。 Orchestratorとは github/orchestrator MySQL、及びMariaDBやPerconaServer等のMySQL互換のDBのレプリケーション構成(Replication topology)を管理するツールで、レプリケーション構成の分析・ビジュアライズ、スレーブの付け替え、自動フェールオーバーなどの機能があります。Perconaのエコシステム(PMM)にもexperimentalながら採用されたり、GitHubのバックエンドでも活躍しているそうです。 中〜大規模、あるいは複雑なレプリケーション構成のクラスタを管理しやすくするためのツール、といった感じです。以下のような機能・特徴があります。 GTID, 非GTID(b

    MHAの代替となるか?OrchestratorでMySQLの自動フェールオーバーを試す - Qiita
    tetsu040e
    tetsu040e 2022/01/21
  • AWSでサーバーレス設計を考える時の手引き書 - Qiita

    はじめに サーバーレスに触れて数年が立ちました。 そろそろ人にある程度説明ができるレベルの知識と経験が備わったような気もするので、年末なのでまとめてみました。 サーバーレス気になっているけれども、という人に少しでもためになればいいなーと思います。 サーバーレス基礎 皆さん、サーバーレス設計という話を聞いたことはあるでしょうか? まずサーバーレスについて説明しますが、世の中にはたくさん解説記事があるのでそちらも適宜参照ください。 サーバーレスでも実際にはサーバーは存在する サーバーレスとは開発者がサーバーのことを意識しなくてもよい、ということ Function as a serviceに代表されるように、あるプログラムの実行環境を提供するが、プログラムの動作環境は開発者は意識する必要はない、というイメージ 恐らく、AWS Lambdaが一番理解しやすいと思います。 AWS Lambdaではプ

    AWSでサーバーレス設計を考える時の手引き書 - Qiita
    tetsu040e
    tetsu040e 2022/01/02
  • PHP7.4 ぼくのかんがえたさいきょうのphp.ini - Qiita

    ストーリー PHPをインストールしたら必ず行う php.ini の設定ですが、 ネット上ではPHP5系の情報がたくさん出回っており、非推奨または削除された設定例が数多く困り果てていました。 良い感じにまとめてくれてるサイトが見つからなかったので、最強でベストプラクティスな php.ini 推奨設定を考えました。 異論は受け付けますので、ぜひコメントください。 参考設定 PHPでは、開発用と番用の設定例を用意してくれています。 なんと素晴らしいことなんでしょうか。これをベースに設定します。 https://github.com/php/php-src/blob/master/php.ini-development https://github.com/php/php-src/blob/master/php.ini-production 予め以前の記事で設定の差分を調べておきましたので、よか

    PHP7.4 ぼくのかんがえたさいきょうのphp.ini - Qiita
    tetsu040e
    tetsu040e 2021/12/20