サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
2024年ランキング
blog.yux3.net
zenn.dev を読んでの感想です。「シーケンスナンバーをPKにする」以外の項目については言及しませんが、言及しないことは正当性や妥当性を保証していることにはならないです。 InnoDB(MySQL)を想定してます。が、原理は割と一般的なので他のDBでも適用できることが多いと思います。 追記:一般的とは分散でないような"普通の"RDBMSを想定してましたが、分散システム(distributed systemないしreplicated system)のような場合では話が違います。 なぜシーケンシャルな値がよいか 端的にいうと書き込み操作時にバッファープール(baffuer pool)に読み混む必要のあるページが少なくて済むからです。その結果書き込み操作時にバッファープールにページが存在する可能性が高くレイテンシー的に有利になる可能性が高いです。 バッファープール、ページ、btreeなど具体
MySQLはともかくPostgreSQLはあまり詳しくないのだが、PostgreSQLの述語ロック(Predicate Locks)が気になったので調べた。 述語ロック 一般的にロックには粒度とモードという概念がある。前者はレコードロックとかテーブルロックとかロックの範囲に関わるもので、後者は排他ロックだとか共有ロックだとか両立性に関わるものである。述語ロックは前者に属する概念であると理解している。 述語ロックがなにの役に立つのか?それはファントムの防止である。粒度ロック(典型的にはレコードロックとテーブルロック)が存在するシステムにおいて2相ロック:Two-Phase Lock(2PL)に従ってレコードロックしているだけでは、ファントムのようなAnomalyが防止できることは保証できない。リレーショナルデータベース入門には「SQLのSERIALIZABLEという隔離性水準は、2PLに加え
ついにはじまった「おっきい討伐」編。ますます注目の集まるちいかわをこのGWでキャッチアップしたいという人も多いのでは?このエントリでは過去のちいかわを振り返って行きます。 ちいかわとは 「なんか小さくてかわいいやつ」です。もともとはナガノ氏のこういう風になりたいという願望のキャラだったはずですが、今はあまり願望の投影という面は強調されず、キャラクターたちの可愛い掛け合い、その裏にある緻密なストーリーラインと独特の世界観が魅力のWeb漫画です。 twitter.com 単行本も出てます。 ちいかわ なんか小さくてかわいいやつ(1) (モーニングコミックス) 作者:ナガノ発売日: 2021/02/12メディア: Kindle版 初期の願望っぽい形式 こういう風に pic.twitter.com/nDl7AeWD5F— ちいかわ🥞ちいかわ焼き (@ngnchiikawa) January 4,
この文章は自分のプロジェクトマネジメントとエンジニアリングに対する理解のダンプです。自分はソフトウェアエンジニアなので、ソフトウェア=プロダクトという前提です。なぜエンジニアリングがくっついてくるかと言えば自分はプロダクトマネジャーではないので、プロダクトマネジメントと関わり方としてはプロダクトマネジメントという世界観の中でエンジニアリングをするというスタイルが多いから。 なぜ書いたのだろう。なぜ書いたのでしょうね。多分プロダクトマネジメントが体系化されておらず一人一派な状況なので自分のメンタルモデル持っておきたかったんだと思う。1年後見たときずいぶん考え方変わったなとか実践した結果考えが精緻化されたなとか思えればいいと思ってる。関連: メンタルモデルを作り込むという遊び - 下林明正のブログ プロダクトマネジメントとはなにか プロダクトマネジメントとはなにか?に対する自分の理解は、プロダ
Sansan株式会社さん主催のLegacy Meetup Kyotoで発表させてもらいました。 sansan.connpass.com 発表資料は以下のものです。 docs.google.com 会場はSansan Innovation Labだったのですが、めちゃくちゃおしゃれでサンダルで行って申し訳ない気持ちになりました。
当日お越しいただいた皆さんありがとうございます。 イベント詳細。 developer.hatenastaff.com テーマはクラウド活用ということで最近やってる仕事からAurora化について話した。 発表資料。 drive.google.com 補足 発表はモチベーションとマネージドサービス導入の必要性、課題部分に焦点当ててたので技術的な話が殆ど無い。のでこれを機会に補足したいと思う。 ちなみに口頭で補足したことしては AuroraはMySQL互換なだけだがあえてMySQLと読んでる場面がある チームによって運用体制は違うのでこれが全てではない Auroraという技術選択について 我々の要件としては以下のようなものがあった。 とにかく運用コストを下げたい アプリケーション変更は極力したくない 逆に普通はあるだろうが我々にとってそんなに重要でないことは パフォーマンス MySQLしばき倒す
invalidなドメイン名ならばなんでもいい。だから、かわいい顔文字でもよい。 ドキュメントの該当箇所: Server names In catch-all server examples the strange name “_” can be seen: server { listen 80 default_server; server_name _; return 444; } There is nothing special about this name, it is just one of a myriad of invalid domain names which never intersect with any real name. Other invalid names like “--” and “!@#” may equally be used. -_- でもよさそう。
結論としてはできない。正確にはレプリケーションの設定自体はできるがデータが適切に複製されないので設定を変える必要がある。 これはMySQL5.6 -> Aurora(MySQL5.6互換)移行の際、レプリケーションを組んだが、時刻周りで上手くいかなかった問題と解決の記録。 そして、はてなエンジニア Advent Calendar 2018の2日目の記事です。 qiita.com 前提 件の移行の際のmaster以下のような設定だった。 mysql> show variables like '%time_zone%'; +------------------+--------+ | Variable_name | Value | +------------------+--------+ | system_time_zone | JST | | time_zone | SYSTEM | +-
トランザクションとは一般的な不可分な一連の処理という意味で使っているが、例えばS3に画像データをアップロードしMySQLにはそのキーを保存したいみたいな場合の話。 MySQLへの書き込みだけであればそれこそMySQL(ストレージエンジンか)に備わっているトランザクション機能を使えば良い。しかしながらS3のバケットの状態とも整合性を取りたいとなると少しむずかしい。S3へのアップロードは失敗するかもしれないし、失敗したのを検知して復帰処理を書いたとしてもそれが失敗するかもしれない。 簡単のためS3に画像をアップロードしテーブルに1レコード挿入することを考える。実際のアプリケーションでは非同期でやりたいこともあれば同期的に処理で十分な場合もあるが、簡単のため後者を考える。キーはuuid()とする。 このシチュエーションで考えられる作戦は (MySQLの)トランザクションを張り、その中でS3へアッ
これは猫を飼ったことある人間にしかわからないだろうけど、猫を掲げると元気が出るぞ!
仕事でTLS関連のトラブルがあったが全然基礎知識がなかったので1から学んだ。この記事は特にTLSの仕様を解説したいわけではなくどこを参照してまだかメモっておく。僕が解説するよりそっちを参照したほうが確実。 まずSSLとTLSの違いすらわからないレベルだったのでウィキペディア読んだ。 Transport Layer Security - Wikipedia ウィキペディアがいいのは常に更新されているところで、例えばPOODLE攻撃とか比較的最近のトピックも網羅されている可能性が高い。ウィキペディアで得た知識だけでPOODLE攻撃がわかるかというと微妙だけどインデックスは貼れる。 今回の問題はハンドシェイクに問題があるとわかっていたのでハンドシェイクの詳細が知りたい。ウェブ上の記事だと SSL/TLS(Part.1) (1/3):不正アクセスを防止するSSL/TLS(2) - @IT が一番詳
qiita.com TypeScript Advent Calendar 2017の8日目の記事です。Weak typesの解説をします。 CTOにも絶賛不評だった以下の記事もおすすめです。 世界がEnumから隠した秘密をひとつひとつ見つけていこうな #TypeScript - 角待ちは対空 タイトルはよくないけど内容はよかった2017/12/06 21:35 b.hatena.ne.jp Excess property checksの復習 TypeScriptではオブジェクトリテラルのとき限定でExcess property checksというチェックが行われる。 つまり interface Options { data?: string, timeout?: number, maxRetries?: number, } function sendMessage(options: Opt
qiita.com はてなエンジニア Advent Calendar 2017 5日目の記事です。 前回はid:chris4403によるAmazon Pollyを試してみた - memo logでした。いやぁ社長さすがです!! さて今日はEnumについての話題です。 TypeScriptは実行時に影響を及ぼすような独自機能は積極的に導入しない傾向にありますが、ぱっと思いつく例外がEnumとNamespace(旧Internal module)です。 今日はそのEnumについての話です。 Enumのコンパイル結果 TypeScriptを書く上でJavaScriptへのコンパイル結果を意識することは少ないと思いますが、Enumについてはコンパイル結果を知っていたほうが理解が早いと思われます。 例えば以下のコードは enum IdolAttr { cute, cool, passion, } 以
TypeScript 2.4 RCがリリースされました。 Announcing TypeScript 2.4 RC | TypeScript いくつか変更点があるのですがこのエントリではSafer callback parameter checkingについて解説します。公式ドキュメントでいうとFAQ · Microsoft/TypeScript Wiki · GitHubあたりの話に関連します。あるいはなぜ TypeScript の型システムが健全性を諦めているかとも関連します。 Dog[] は Animal[] のサブタイプか TSでは Dog が Animal のサブタイプである時、Dog[] は Animal[] のサブタイプです。型システムとして健全かどうかは置いといて便利なのでこうなっています。 さて、Dog[] が Animal[] に代入可能かどうかを判定する際コンパイラは
CTOが付けてくれた僕のあだ名 同僚T氏のニックネーム、tsifyだったけど時代はwebpackやってことで新しいニックネームはawesome-typescript-loaderになった— 美顔器 (@motemen) 2017年10月4日 CTOが付けてくれた猫の名前 CTO作のfatcatsick 緊急 fatcatsick です Hironao Motemen Otsuboさん(@motemen)がシェアした投稿 - 2017 7月 27 2:55午前 PDT 本物のfatcatsick googleハングアウトのステッカー slimcathealthy 概ね楽しく働いています。
Webにおけるマンガビューアの画像保護の実装は「サーバーからはパズル化された画像を配信、ブラウザはcanvas要素使って組み立てる」というのがメジャー。Kindleもやってる。 その際注意が必要なのはHTTPで配信する場合、ブラウザと画像配信サーバーとの間にサービス提供者の意図しないプロキシが挟まる可能性がある。たとえばData Saver - Google Chromeである。 こいつは利用者の「ギガが減る」のを防ぐため画像を勝手に圧縮する。普通の状況だったらまぁそんなに困らないけど、件の画像保護の実装をするとブラウザ側で復元できずに「筋」がはいる。 Data Saverなし Data Saverあり これくらいの差が出る。 解決方法 上記のサイトを見れば書いてあるが HTTPSで配信する Cache-Control: no-transform のどちらかで圧縮を防ぐことができる。 感想
追記 2019/04/16に以下の記事が公開されました。 employment.en-japan.com gfxさんによる記事です。この記事自体2017年の若干古い記事なので、新しく読む方は最新版である上記の記事を読んだほうがいいでしょう。 このエントリは2017/07/12に行われたHatena Engineer Seminar #8 @ Tokyoの発表内容をブログ向けに書き直したものです。 事前の通知では「CoffeeScript脱出にみるTypeScript2.4時代のベストプラクティス」がタイトルだったのですが、主題を変えたためタイトルも「がんばらないTypeScriptの始め方」に変更させていただきました。CoffeeScript脱出の話は一応出てきます。 社内のTypeScript事情 その後のTypeScript 現在の様子 TypeScriptのがんばらないはじめ方
僕はこのアニメ好きで結構な回数リピートしている。このアニメ何が良いかっていうとお兄様が本当に強い。俺TUEEEEという言葉があるけど、そこらの俺強いとは一線を画していると思う。キリトくんは本当の強さがなにか思い悩む洒落臭い部分があるけどお兄様はそういうのないのが良い。 TVシリーズは良かった。もっと強いお兄様を望む視聴者をちゃんと満足させてくれた。最終的に核兵器扱いですからね。とてもよかった。翻って映画はどうだったかっていうといまいちだったと言わざるをえない。もっと強いお兄様を提供できていない。伝説になるっていうキャッチコピーをなしていない。言っとくけどお兄様、TVシリーズですでに歴史に名を刻んでますからね。ちゃんと伝説になってくれないと困るわけですよ。我々はお兄様のジャンプアップを、飛翔を期待していたわけですよ。山場が衛生破壊ってのが良くなかった。だって開始10分で当たり前のように隕石破
TypeScriptには似たような型としてObject型とobject型と{}型が存在します。 let o1: Object; let o2: object; let o3: {}; 今回はこの3つの使い分け、あるいはobject型導入の経緯についてです。 JavaScriptのデータ型 JavaScript のデータ型とデータ構造 - JavaScript | MDNを読めば分かるように、 Boolean Null Undefined Number String Symbol の6種のプリミティブ型を持つプリミティブ値とオブジェクトでJavaScriptは成り立っています。 TypeScriptにおけるobject型とはここでいうプリミティブ型以外を表現しています。 object型はいつ使われるのか いつ役に立つかというとObject.create()の定義です。 TypeScript/
VS Code の拡張作っている際に CHANGELOG.md が自動生成され、書き方はKeep a Changelogに従えと書かれていたので紹介する。 ここに書かれていることは絶対ではなくただ提案しているだけである。意見がある人は話し合おうという温度感っぽいので、納得いかない場合は issue 立てると良いと思う。 僕自身はなんでもよくてある程度型が欲しかっただけなのでこれからはこれに従って書いていこうと思う。ただまぁ Semantic Versioning もそうだけどちゃんと従おうとすると以上にだるくなってくるので雰囲気従うくらいだと思う。 CHANGELOG の原則 機械的に生成するのではなく人間の手で書く 各セクションへのリンクが容易にできる 1つのバージョンごとに1つのサブセクションを作る リリースは新しいものが上に来るようにする 日付のフォーマットは YYYY-MM-DD
これは「そうだ、 Go 京都」で発表した内容をブログ用に起こしたものです。発表スライド自体は公開する予定はありませんが、内容としてはより詳しくなっているはずなのでご容赦ください。 developer.hatenastaff.com 直帰ユーザーにも分かるように最初に宣伝しておくと正規表現によって文字列を生成できる CLI / package を作りました。 github.com コーフィースクリップトの発音を生成したり % gocha -n 5 '[カコヵか][ッー]{1,3}?[フヒふひ]{1,3}[ィェー]{1,3}[ズス][ドクグュ][リイ][プブぷぶ]{1,3}[トドォ]{1,2}' カッーひふふーーィスドリブブぷド コッーーふェズュイぷプトト カッひふヒィェースュリぶブト カッフヒふィーェズクリブォ ヵーひフヒィースグリプトド 家族を生成したりできます。 % gocha -n 5
一昨年のクリスマス頃、会社の賄いで提供されたお菓子を縛っていた紐で編まれたミサンガがついに切れた。 ゴミみたいな同僚がゴミで編んでくれたゴミみたいなミサンガだったけど、ここまで全方位的なゴミはそうそうないのでいい機会だと思いなんとなく身に付けていた。 切れてしまったことに対して感慨とかはない。願いも特に込められておらず、当時はこれが切れたら転職すると言っていた気がするが、転職する気もない。
keyof キーワード key とオブジェクトを受け取りプロパティの値を取り出す関数を考えます。 function getProp(obj: {}, key: string) { return obj[key]; } この関数使って変数を宣言すると型推論では返り値は any になってしまいます。 const urara = { age: 15, name: "chiya", }; const a = getProp(urara, 'age'); // any const n = getProp(urara, 'name'); // any もうちょい頑張って型付けしたいと思ったら obj の型を絞るしかなさそうです。 interface Urara { age: number; name: string; } では key の型は?となると今までは素朴に String Literal ty
レガシーソフトウェア改善ガイド (Object Oriented Selection) 作者: クリス・バーチャル,吉川邦夫出版社/メーカー: 翔泳社発売日: 2016/11/11メディア: 単行本(ソフトカバー)この商品を含むブログを見る 入社以来比較的新し目のプロジェクトしか触ってこなかったけど、最近はチームが移動になり古めの(古めというか社内最古クラス)のサービスを扱うことになったので、社内で読んでいる人が良さそうと言っていたこともあり読んでみた。 blog.sushi.money hakobe932.hatenablog.com 結果としては非常に参考になった。どうアプローチしていけばいいかの型を提供してくれる本であるから、これを元に自分たちにあった方法を模索していきたい。 以下は参考になった部分と感想。 恐れ レガシーなプロジェクトへ 少し変更するだけでぶっ壊れてしまう 修正が必
初めて書く時困りそうなトピックごとに TypeScript との関わり方を示していく。導入や書き始めのハードルを下げるのが目的なので意識高いことは言わない。 https://github.com/remojansen/logo.ts 対象読者 ゴール 基本姿勢 何故そんなこといい加減な感じなのか 型の書き方 type annotation シグニチャ 型が合わない時 Structural typing any したい キャスト色々 キャストせざるを得ない時 import できない error TS2307:Cannot find module 'hoge'. error TS1192: Module '"hoge"' has no default export. や error TS2305: Module '"hoge"' has no exported member '_'. など 頑
このページを最初にブックマークしてみませんか?
『blog.yux3.net』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く