タグ

kei2100のブックマーク (4,629)

  • なんとなく使っていませんか? 括弧の種類と使い分け|モリサワ note編集部

    突然ですが、質問です! 以下の文章で、登場人物が実際に声に出して言っている部分と、心の中で思い浮かべている部分はどこでしょうか。 「みんなはね、ずいぶん走ったけれども遅れてしまったよ。ザネリもね、ずいぶん走ったけれども追いつかなかった」と言いました。 ジョバンニは、 (そうだ、ぼくたちはいま、いっしょにさそって出かけたのだ)とおもいながら、 「どこかで待っていようか」と言いました。 青空文庫 宮沢賢治『銀河鉄道の夜』 https://www.aozora.gr.jp/cards/000081/files/43737_19215.html 答えは簡単ですね。 「 」の中の言葉が声に出して言っている部分、( )の中の言葉が心の中で思い浮かべている部分です。 前後の文章からも読み取れると思いますが、括弧の使い分けがされていることで、より分かりやすくなっています。 このように括弧類は主に文章内で会

    なんとなく使っていませんか? 括弧の種類と使い分け|モリサワ note編集部
    kei2100
    kei2100 2024/05/08
    morisawa かっこ
  • 令和時代の API 実装のベースプラクティスと CSRF 対策 | blog.jxck.io

    Intro CSRF という古の攻撃がある。この攻撃を「古(いにしえ)」のものにすることができたプラットフォームの進化の背景を、「Cookie が SameSite Lax by Default になったからだ」という解説を見ることがある。 確かに、現実的にそれによって攻撃の成立は難しくなり、救われているサービスもある。しかし、それはプラットフォームが用意した対策の質から言うと、解釈が少しずれていると言えるだろう。 今回は、「CSRF がどうして成立していたのか」を振り返ることで、当にプラットフォームに足りていなかったものと、それを補っていった経緯、当にすべき対策は何であるかを解説していく。 結果として見えてくるのは、今サービスを実装する上での「ベース」(not ベスト)となるプラクティスだと筆者は考えている。 CSRF 成立の条件 例えば、攻撃者が用意した attack.examp

    令和時代の API 実装のベースプラクティスと CSRF 対策 | blog.jxck.io
  • gRPCで大きなファイルのやり取りをする - Carpe Diem

    概要 gRPCで4MB以上のデータ転送をしようとすると rpc error: code = ResourceExhausted desc = grpc: received message larger than max (xxxxxxx vs. 4194304) のようなエラーが出ます。この上限はデフォルト値なのでgrpc.MaxRecvMsgSize()やgrpc.MaxCallSendMsgSize()を使うことで変更可能ですが、ドキュメントでも以下のように Protocol Buffers are not designed to handle large messages. As a general rule of thumb, if you are dealing in messages larger than a megabyte each, it may be time to

    gRPCで大きなファイルのやり取りをする - Carpe Diem
  • Go を Wasm にビルドして Google Apps Script で動かす

    Go のコードで文字列の変換をする関数があり、これが Google スプレッドシート上の関数としても利用できれば検証[1]に便利かもしれないと思いました。 Google スプレッドシートでは Apps Script の関数をセル上で実行できるので、Go のコードを Wasm にビルドして JavaScript から呼び出すことができれば良いのではないかと考え、実際に試してみることにしました。 動作環境 Go 1.22.2 Apps Script の設定 Chrome V8 ランタイムを有効にする その他 macOS の pbcopy コマンド[2]を利用した手順を記載していますが、Linux 環境でも pbcopy を他の手段に置き換えることで同様に動作しました。 事前調査 GoWasm にビルドして GAS で動かす事例は見当たりませんでしたが、RustWasm にビルドして

    Go を Wasm にビルドして Google Apps Script で動かす
  • とほほの文字コード入門 - とほほのWWW入門

    「文字コード」とは、文字をコンピューターで表現する際にどのようなバイト表現にするかを定めるもので、下記の概念を持ちます。 符号化文字集合(CCS:Coded Caracter Set)、キャラクタセット とも呼びます。文字に番号を割り振ります。主な文字集合として JIS X 0208 や Unicode があります。これらの規約では、文字に「群・面・区・点」の番号を割り振ります。群は 0~127、面・区・点は 0~255 の数値をとります。すべて使用すると 128×256×256×256=2,147,483,648文字を表すことができますが、JIS X 0208 では1~94区×1~94点のみの 94×94=8,836文字、Unicode では 0~16面×0~255区×0~255点の 17×256×256=1,114,112文字の範囲で文字を定義しています。例えば文字の「あ」は、JIS

    kei2100
    kei2100 2024/04/19
  • 文字コードの円記号問題を復習したのでメモ。 - やる気がストロングZERO

    文字コードの円記号問題を復習したのでメモ。 円記号問題 参考) 円記号 - Wikipedia ざっくり 例えばmacvscodeにて、文字コードをshift-jisに設定して[¥]を入力して保存したあと、一度閉じて再度Shift JIS指定で開くと[¥]で保存したはずなのに[\]が表示されている。 何故こんなことが起こるのかというと、shift-jisでは[¥]と[\]は同一の文字であるから。 文字を表すバイト列は[¥]も[\]も5cになる。 バイト列5cを[¥]として表示するか、[\]として表示するかはフォントやエディタによりけりという感じ。 つまり、shift-jisで[¥]と入力すると、5cというバイト列で保存され、次に読み込みされた際には[\]として表示されたという感じ。 shift-jisとUnicode間での変換を行う際の問題 shift-jisに対して、unicodeでは

    文字コードの円記号問題を復習したのでメモ。 - やる気がストロングZERO
    kei2100
    kei2100 2024/04/19
  • `Thread.current[:hoge]`はスレッドローカル変数を参照していると思いきや実際はファイバーローカル変数だった - おもしろwebサービス開発日記

    このエントリはSmartHR Advent Calendar 2021の23日目の記事です。 SmartHRでは毎週「Rubyist@SmartHR(仮)」という名の定例ミーティング*1が行われています。このミーティングはバックエンドエンジニアが集まり、チームをまたいだ情報共有や相談をすることを目的としています。その中では僕がTipsなどを共有する「willnetさんのありがたいお言葉」というコーナーが常設されています。 このエントリでは、そのコーナーで共有した内容をひとつ紹介します*2。 Thread#[]で取得できる値はファイバーローカル変数なのだった アプリケーションのコードではあまり見かけませんが、ライブラリ中でスレッドセーフを意識している設定を読むと Thread.current[:locale] = :ja のようになっているのをよく見かけます。それで僕はThread#[]はス

    `Thread.current[:hoge]`はスレッドローカル変数を参照していると思いきや実際はファイバーローカル変数だった - おもしろwebサービス開発日記
    kei2100
    kei2100 2024/04/12
  • 他のレコードと違う存在になりたいレコードへ

    TL;DR 小規模またはシングルデータベース向け Auto Incrementは、その簡素さと効率性で、小規模またはシングルデータベース向けのシステムにぴったりです。 ID衝突を許容できないシステム向け IDの衝突が絶対に許容できないシステムには、Snowflakeが最適な選択肢として際立っています。 長期間にわたり大量のIDを生成するシステム向け 大量のIDを長期間にわたり生成する必要があるシステムでは、Auto Increment, UUID v4, ULID, UUID v7が有効です。 分散システムやマイクロサービス向け 分散環境とマイクロサービスアーキテクチャには、UUID v4, ULID, Snowflake, UUID v7が最適で、これらはシステム間のID衝突を最小限に抑えます。 高速なレコード挿入が必要なシステム向け 高速なレコード挿入が求められる場合、Auto Inc

    他のレコードと違う存在になりたいレコードへ
  • Railsでメールアドレスをバリデーションする方法(翻訳)|TechRacho by BPS株式会社

    RailsのActive Recordは、意味のあるデータを確実に得られるようにするためのバリデーション機能をActive Modelライブラリ経由で提供しています。 ユーザーにメールを送信可能であることを確認する処理は、アプリケーションを正しく設定するうえで非常に重要なので、既に皆さんもUser#email属性でバリデーションを行っていることでしょう。 🔗 以下の方法ではなく 手作り正規表現や、Railsの古いAPIドキュメントにあるものを使う。 class User < ApplicationRecord validates :email, format: { with: /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i }, presence: true, uniqueness: { case_insensitive: true } end

    Railsでメールアドレスをバリデーションする方法(翻訳)|TechRacho by BPS株式会社
    kei2100
    kei2100 2024/04/08
    email regexp 正規表現
  • SPAセキュリティ入門~PHP Conference Japan 2021

    こちらのスライドは以下のサイトにて閲覧いただけます。 https://www.docswell.com/s/ockeghem/ZM6VNK-phpconf2021-spa-security シングルページアプリケーション(SPA)において、セッションIDやトークンの格納場所はCookieあるいはlocalStorageのいずれが良いのかなど、セキュリティ上の課題がネット上で議論されていますが、残念ながら間違った前提に基づくものが多いようです。このトークでは、SPAのセキュリティを構成する基礎技術を説明した後、著名なフレームワークな状況とエンジニア技術理解の現状を踏まえ、SPAセキュリティの現実的な方法について説明します。 動画はこちら https://www.youtube.com/watch?v=pc57hw6haXkRead less

    SPAセキュリティ入門~PHP Conference Japan 2021
  • M1 MacでRuby 2.4〜3.2をrbenvでビルドする最小限のセットアップを全部調べた|TechRacho by BPS株式会社

    🔗 M1 MacRuby 2.4〜3.2をrbenvでビルドするための要点 要点から先に書きます。 基的には、以下の公式ドキュメントの記載通りにすればビルドできます。 参考: Building Ruby -- ruby/building_ruby.md at master · ruby/ruby ビルドで使うOpenSSLについては以下に注意してください。 Ruby 3.1以降: OpenSSL 3系とOpenSSL 1.1.1系の両方が使える Ruby 2.4〜3.0: OpenSSL 1.1.1系が必要 ただし、OpenSSL 1.1.1は2023/09/11にEOLとなり、以後のアップデートには有償サポートが必要です↓。特に業務で古いRubyのビルドが必要な場合はご注意ください。 参考: OpenSSL 1.1.1 End of Life - OpenSSL Blog Ruby

    M1 MacでRuby 2.4〜3.2をrbenvでビルドする最小限のセットアップを全部調べた|TechRacho by BPS株式会社
    kei2100
    kei2100 2024/04/05
  • Indexing JSON in MySQL — PlanetScale

    MySQL gave us the JSON data type back in mid-2015 with the release of MySQL 5.7.8. Since then, it has been used as a way to escape rigid column definitions and store JSON documents of all shapes and sizes: audit logs, configuration settings, 3rd party payloads, user-defined fields, and more. Although MySQL gives us functions for reading and writing JSON data, you’ll quickly discover something that

    Indexing JSON in MySQL — PlanetScale
  • AWS VPC のネットワーク小話~Public/PrivateとIPv4/6~ | 外道父の匠

    日々何気なくお世話になっている VPC 含むネットワークは、ちゃんと理解しようとすると思ったより多い情報量と、それに対するパターンの経験が必要になります。 私自身、正直ネットワークのお話は好きじゃないのですが、現行の事情を踏まえてこの辺の基と雑学を振り返っておくと、技術力のベースが整ってよろしいのではと思って整理することにしました。 はじめに 新年度なので、学習教材シリーズです。今回はネットワーク周りで、基礎に味付けするような内容です。もしかしたらお嫌いなジャンルでしょうか、でも少しだけやりましょうそうしましょう。 関連情報としては、このあたり。 公式 ENOG81: AWSIPv6とPublic IPv4のおはなし – Speaker Deck Amazon VPC とは? – Amazon Virtual Private Cloud 外道父の匠 AWS VPCルーティングの基から

    AWS VPC のネットワーク小話~Public/PrivateとIPv4/6~ | 外道父の匠
    kei2100
    kei2100 2024/04/04
  • https://blogs.oracle.com/mysql-jp/post/indexing-json-data-in-mysql-jp

  • GoでP2Pトンネルをつなぐ

    go install github.com/rtctunnel/rtctunnel/cmd/rtctunnel@latest go install github.com/roerohan/wait-for-it@latest operatorというシグナリングサーバーがインターネット側に必要です。 仮設ですが、「operator.irieda.com」というのを設置してあるのでそれを使って試してみます。 operatorリポジトリはこちら。 rtctunnel initを実行すると、所定の場所に鍵を生成します。 Windows: %APPDATA%\rtctunnel\rtctunnel.yaml 構成 つまり、「server-app=sshd、client-app=ssh」とすれば、遠隔でSSH接続が実現できる。 Host A(server) rtctunnel init echo "s

    GoでP2Pトンネルをつなぐ
  • JAN、EAN、UPCコードの始めの2桁の国別コードはどのように決まっているのでしょうか? - バーコード・RFID・タブレット情報サイト(日栄インテック ICTソリューション事業部)

    GS1に加盟する110以上の国と地域には、それぞれを識別するために「GS1プリフィックス」という2~3桁のコードが割り当てられています。日には、450番~459番、490番~499番が割り当てられています。そのため、日国内で割り当てられるJANコードは、どの企業でも「45」または「49」から始まっているのです。日のように、商品識別コード冒頭の2桁だけで国を区別できるかというと、厳密に言えばそうではありません。例えばアメリカは、事業者数・アイテム数の多さから、000番~019番、030番~039番、050番~139番と幅広い番号が割り当てられています。反対に、登録事業者数の少ない企業もあります。例として冒頭が「85」番代の国を挙げてみると、「850」番がキューバ、858番がスロバキア、859番がチェコ、というように比較的細かく割り振られていることが分かります。

    kei2100
    kei2100 2024/03/27
    JAN コード
  • かっこいいSSH鍵が欲しい - アリ

    例えばこのSSH公開鍵、末尾に私の名前(akiym)が入っています。 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFC90x6FIu8iKzJzvGOYOn2WIrCPTbUYOE+eGi/akiym そんなかっこいいssh鍵が欲しいと思いませんか? ed25519のSSH公開鍵の構造 SSH鍵の形式にはRSAやDSA、ed25519などがありますが、最近のssh-keygenではデフォルトでed25519の鍵を生成するということもあり、ed25519を利用していることを前提として進めます。なにより、RSAの公開鍵に比べると短いので末尾部分が目立つはずです。 そもそも、ed25519のSSH公開鍵のフォーマットはどのようなものになっているか確認してみます。まずはssh-keygenコマンドで秘密鍵と公開鍵を生成します。 % ssh-keygen -t ed25

    かっこいいSSH鍵が欲しい - アリ
    kei2100
    kei2100 2024/03/25
  • Elasticsearchで日本語のサジェストの機能を実装する

    サジェストは、優れた検索エクスペリエンスにおける重要な要素です。一方で、この機能は一部の言語では実装が難しい場合があり、日語もそのような言語の1つです。このブログでは、日語のサジェスト機能を実装する際の課題と、Elasticsearchを使用してこれらの課題を克服する方法をご紹介します。 日語のサジェストの特徴次の図にはGoogleの日語サジェスト候補を表示しています。この例では、キーワードは「日」です。 日語のサジェスト機能の実装が英語よりも困難であることには、いくつかの要因があります。 単語の区切りがわかりにくいサジェストの機能を実装するには、単語を分割するためのアナライザーが必要です。英語を含む大半のヨーロッパ言語では、単語がホワイトスペースで区切られるため、容易に文章を単語に分割できます。しかし、日語では個々の単語をホワイトスペースで分割することはありません。そのため

    Elasticsearchで日本語のサジェストの機能を実装する
  • go.modのgoディレクティブにパッチバージョンを含めないと「toolchain not available」と怒られる

    ※ 後述しますがtoolchainディレクティブはパッチバージョンが省略できないことに注意 問題の深堀り 前提 Go 1.21以降、goコマンドはgo/toolchainディレクティブのバージョン指定を考慮して、よしなにGoツールチェイン[1]をダウンロードし選択するようになりました。 例えば、go 1.22という行はGo 1.21.Pを許しませんし、toolchain go1.22.1という行は、Go 1.22.0というツールチェインでビルドすることを許しません。 ここで以下に注意してください。 goとtoolchainディレクティブの違い goディレクティブはGoバージョンを指定する。例: 1.22.0,1.22,1.22rc1 toolchainディレクティブはGoツールチェイン名を指定する。例: go1.22.0 toolchainが省略された場合、goディレクティブで指定したGo

    go.modのgoディレクティブにパッチバージョンを含めないと「toolchain not available」と怒られる
  • WebSockets vs Server-Sent-Events vs Long-Polling vs WebRTC vs WebTransport | RxDB - JavaScript Database

    For modern real-time web applications, the ability to send events from the server to the client is indispensable. This necessity has led to the development of several methods over the years, each with its own set of advantages and drawbacks. Initially, long-polling was the only option available. It was then succeeded by WebSockets, which offered a more robust solution for bidirectional communicati

    WebSockets vs Server-Sent-Events vs Long-Polling vs WebRTC vs WebTransport | RxDB - JavaScript Database
    kei2100
    kei2100 2024/03/19