最近、分散データベースとかNewSQLとかサーバレスなデータベースとか色々聞きますよね。 でも、専門ではない人たちにとって、「何が違うの?」「自分たちに必要なDBはどれなの?」という点が分かりづらいと思います。 私も良く聞かれます。 AuroraはNewSQLですか? NewSQLってサーバレスなんですか? スケールできないDBとか聞きますけど、リードレプリカ増やせますよね? などなど。この辺に基本的なところから答えられるように、順を追って解説していきましょう。 「コンピュートとストレージは別であれ」 と神が言うと、コンピュートとストレージは分離された。 と言うのは冗談ですが、まずはここからスタートしましょう。 クラウド以前のデータベースを使っていた人にはお馴染みのように、それまでデータベースは大きな1つの箱でした。 過去に私は下図でデータベース(厳密にはRDBMS)のコンポーネントを解説
Goで単体テストを実装する場合、動的な言語のように「テスト実行中に外部への依存を置き換える」といったことはできません。代わりに、 外部への依存を引数で渡す 外部への依存をインターフェイスで渡す のように、テスト対象をテスト可能な実装に変更しておき、テストの時は外部への依存をモック等に置き換えて実行する場合が多いのではないかと思います。 個人的な体験でいえば、テスト可能な実装に置き換えていく過程で設計が洗練されていく*1ことは度々あるので、面倒を強制されているというよりは設計を整理するための道具といった捉え方をしているのですが、そうは言っても動的な言語に比べると面倒だなと感じるときは少なからずあります。既存の実装がテスト可能になっておらず、変更するコストが高い場合は特にそうですね。 そんなとき、気軽にモンキーパッチできると嬉しいんじゃないかと思って、テストの時だけ関数を置き換えられるようなラ
はじめに 先日ゲーム制作の話になり、「メグとばけもの」がGo(Ebitengine)で作られたゲームと知りました。 すげー!と思ったので、何も知らないけどテンションのままに触ってみました。 全人類ゲームを作るために生まれてきているはずなので、インスタで見かけたOXゲームのおもちゃを真似して作ってみます。 ※ Goもゲーム制作もほぼ初めてのため、「こんな初心者でもゲーム作れるんだ!」と思って貰えれば幸いです。 Ebitengine とは 特徴 Goでできたオープンソースの実用的な2Dゲームエンジン 描画機能は、「矩形画像から矩形画像へ描画を転送する」のみ Windows、macOS、Linux、iOS、Android、Wasm、Nintendo Switch™ ..など、マルチプラットフォームに対応 シンプルかつGoで書かれているので、「見習いPHPerの僕でもいけるんじゃないか?」と思わせ
jp-postal-code-api https://github.com/ttskch/jp-postal-code-api 日本の郵便番号から住所のデータを取得できるWeb APIです。 GitHub Pagesを使用して静的なJSONファイルとして配信している ため、可用性が高いのが特徴です。また、オープンソースなのでクライアントワークでも安心してご使用いただけます。もし永続性が心配な場合はご自由にフォークしてご利用ください。 日本郵便によって公開されているデータ を元に住所データのJSONファイルを生成して配信しています。JSONファイルには日本語表記・カナ表記・英語表記の住所データが含まれています。ただし、以下の注意事項があります。 大口事業所個別番号の住所データは以下のように出力されます(元データ の内容がそうであるため) カナ表記は事業所名についてのみ出力されます 事業所名の
こんにちは、VPoEの北川です。 今回はトレタで現在使用している技術スタックについて紹介します。 創業時から稼働している予約・顧客台帳サービス「トレタ」から現在の注力事業のモバイルオーダーサービス「トレタO/X」までをあらためて振り返ってみると、まるで異なる技術スタックになっているので歴史的な背景などを辿りながら紹介していきます。 技術スタックの変遷 予約・顧客台帳「トレタ」 会社名にもなっている予約・顧客台帳の「トレタ」は創業当時から稼働している築11年ほどのシステムです。 サーバーサイドにはRubyとRubyOnRailsで作られた巨大なコードベースのAPIサーバーがあり、予約台帳のiOSアプリやウェブ予約などのWebアプリケーションなどが利用しています。 長年このモノリシックなシステムを成長させてきたので、以前からトレタを知ってくださっている人にはトレタはRubyの会社と認知されてい
udm14.com このサイトのドメイン名にもなっている「&udm=14」とは何かということだが、その前に the disenshittification Konami code というサイト名にも注意する必要がある。 disenshittification とは、ワタシも何度も(その1、その2)取り上げているコリイ・ドクトロウによるオンラインプラットフォームの質低下を指す造語 enshittification(メタクソ化)の対義語である。 そして、Konami code だが、もちろんコナミに由来する言葉で、いわゆる「隠しコマンド」全般を指すフレーズになってるそうな。 つまりは、「メタクソ化に抗う隠しコマンド」、それが「&udm=14」というわけだ。サイトデザインを見れば分かることだが、ここで対象となっているのは Google である。 検索エンジンとしての Google の質低下につい
このコーナーでは、2014年から先端テクノロジーの研究を論文単位で記事にしているWebメディア「Seamless」(シームレス)を主宰する山下裕毅氏が執筆。新規性の高いAI分野の科学論文を山下氏がピックアップし、解説する。 X: @shiropen2 【更新履歴:2024年5月24日 午後1時50分更新 同時刻時点で論文は取り下げられ、GitHubのリポジトリ非公開となったことを確認しました。 カナダのアルバータ大学や中国の四川音楽学院に所属する研究者らが発表した論文「Sakuga-42M Dataset: Scaling Up Cartoon Research」は、AIモデルのトレーニング用に作成したアニメ動画データセットを提案した研究報告である。 Sakuga-42Mは、GitHubにおいてリポジトリが公開されており、学術研究の目的でのみ使用可能。また、データセット内の画像やビデオの著
作ったもの 超絶シンプルなTodoアプリです。 SQLiteの勉強がてら作りました。 Riverpod・Flutter hooks・StateNotifier・freezedを使用しています。 UIは適当です。 一覧 追加 クローン後、rootディレクトリで flutter pub run build_runner build --delete-conflicting-outputs flutter run これでアプリが起動します。 実装 ディレクトリ構造 ├── lib │ ├── main.dart │ ├── views │ │ ├── todo_add_page.dart │ │ └── todo_list_page.dart │ ├── viewModels │ │ └── todo_view_model.dart │ ├── states │ │ └── todo_state
清原達郎氏が「唯一、お金を払う価値がある」と断言するのは『会社四季報』(撮影/野口博) 投資熱が高まるなか、企業の経営状況や株価など投資情報へのニーズも増している。昨今は個人投資家向けの有料情報サイトが乱立しているが、個人資産800億円という伝説の投資家・清原達郎氏は「本当に必要な有料情報源は『会社四季報』のみ。あとは企業ホームページのIR(Investor Relations)情報だけで十分」と指摘する。では清原氏は会社四季報とIRをどう読み解いているのか。独自メソッドを初公開する。 「株価情報の収集にお金をかける必要はない」──そう断ずる清原氏。かつてヘッジファンド・タワー投資顧問の運用部長として旗艦ファンドを立ち上げ、2005年に発表された最後の高額納税者番付でサラリーマンとして初の1位(納税額37億円)に輝いた伝説の投資家である。 清原氏は、2018年に咽頭がんの手術で声帯を失い、
株式会社サイバーエージェントAI事業本部の2024年度 エンジニア新卒研修でシステム運用の基本と戦略に関する講義を行いました。
はじめに 半月ほど前に、ようやく自分の VPS 環境で動いているものすべてを kubernetes クラスタに移行しました。とても満足感が高くやって良かったと思っています。 ウェブサーバ、メールサーバ、Nostr のリレーサーバや Nostr/Bluesky/Twitter で動かしている各種 bot もすべて kubernetes です。 昨日は knative を導入したので、Go や Rust や Ruby や Python や、いろんな言語のクラウドネイティブアプリを簡単に実行できる様にしました。 knative 便利 残念ながら knative は helm パッケージとして提供されていません。ArtifactHub でそれっぽい物が公開されていますが、ほぼ手作業と変わりません。 おおよそ以下の手順でインストールできます。knative ではネットワークレイヤとして以下の3つが用
class HOGE{ public string $tel{ set{ if(!ctype_digit($value)){ throw new ValueError("電話番号は数値のみ"); } if(strlen($value) < 10){ throw new ValueError("電話番号は10文字以上"); } $this->tel = $value; } get{ return '電話番号は' . $this->tel; } } } $hoge = new HOGE(); $hoge->tel = '123456789012'; // OK $hoge->tel = 'abcdefghijkl'; // Uncaught ValueError: 電話番号は数値のみ $hoge->tel = '123'; // Uncaught ValueError: 電話番号は10文字以上
毎日ちょっとずつ、デザインを学ぼう毎日ちょっとずつデザインを学ぼうIT/Web業界のデザイン学習サイト
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く