タグ

ブックマーク / gihyo.jp (10)

  • GoにはなぜXという機能がないのか? 〜テスト関数ごとの暗黙的な初期化処理の実現を考察する | gihyo.jp

    つきなみGo GoにはなぜXという機能がないのか? 〜テスト関数ごとの暗黙的な初期化処理の実現を考察する はじめに 筆者はGoだけではなく、Scalaなど他言語を扱った経験もあり、しばしばGoには他の言語にあるXという機能がなぜないのだろう?と考えることがあります。 たとえば、テスト関数ごとに暗黙的に呼ばれる初期化関数の定義があります。データベースに対するDrop・Create・Insertなどの処理をテストごとに実行したい場合に定義できると便利でしょう。同じ処理を都度書いているとテストケースが増えてきた時にメンテナンス性が下がってしまったり、初期化処理を追加し忘れてしまう恐れなどもあります。 しかし、Goにはこのようなテスト関数ごとに暗黙的に実行される初期化処理を定義できません。Goが他言語に劣っているようにもみえますが、当にそうなのでしょうか? 公式のFAQにもあるように、とある機能

    GoにはなぜXという機能がないのか? 〜テスト関数ごとの暗黙的な初期化処理の実現を考察する | gihyo.jp
    tjmtmmnk
    tjmtmmnk 2024/05/04
  • 第17回 Webアプリケーションのパフォーマンス改善(1) | gihyo.jp

    大きな効果を上げるために チューニンガソン#1~#3の改善率を見ると、アプリケーションや全体のアーキテクチャに手を入れないで改善できるのは最大でも10倍以下です。もちろん数倍速度が違えばサーバ台数を大きく減らせるので有意義なのは間違いないのですが、ISUCONやチューニンガソン#4のような飛躍的な高速化は望めないことがわかります。 つまりチューニングでは、単にパラメータ設定を変更するのみではなく、ボトルネックになっているコードやクエリ、アーキテクチャに的確に手を入れていくことで大きな効果を上げることができるのです。 ボトルネックの発見と解消が大事 システム全体の処理時間についてパレートの法則(経験則)を適用すると、「⁠全体の処理時間の80%は20%の部分で発生している」ということになります。実際にシステム全体で一番ボトルネックになっている部分を解消しないことには、ほかの部分に手を入れても大

    第17回 Webアプリケーションのパフォーマンス改善(1) | gihyo.jp
  • 第40回 Perl開発への動的な型制約の導入(2) | gihyo.jp

    前回の(1)はこちらから。 Mouse::Util::TypeConstraintsで独自の型を定義する (1)で、Mouse::Util::TypeConstraintsを利用して独自に型を定義できると紹介しました。(⁠2)でその方法について解説します。 Mouse::Util::TypeConstraintsは、自分で独自に型を定義するユーティリティを提供してくれるモジュールです。このモジュールはMouseというディストリビューションに含まれているため、Mouseをcpanmでインストールすることで利用できます。cpanmコマンドでインストールし、正しくロードできればインストールは成功しています。 独自の型を定義するユーティリティはいくつもあるため、その中で代表的なものを紹介します。そのほかの方法は、Mouse::Util::TypeConstraintsのドキュメントを参照してくださ

    第40回 Perl開発への動的な型制約の導入(2) | gihyo.jp
  • 達人が教えるWebパフォーマンスチューニング 〜ISUCONから学ぶ高速化の実践

    2022年6月4日紙版発売 2022年5月30日電子版発売 藤原俊一郎,馬場俊彰,中西建登,長野雅広,金子達哉,草野翔 著 B5変形判/360ページ 定価3,278円(体2,980円+税10%) ISBN 978-4-297-12846-3 Gihyo Direct Amazon 楽天ブックス ヨドバシ.com 電子版 Gihyo Digital Publishing Amazon Kindle ブックライブ 楽天kobo honto 書のサポートページサンプルファイルのダウンロードや正誤表など このの概要 LINE株式会社が主催するWebサービスのパフォーマンスチューニングコンテスト,ISUCON(Iikanjini Speed Up Contest)で技術を競い合ってきた著者がWebサービス高速化のための考え方とノウハウをわかりやすく解説。 書では,お題となるWebサービスをひ

    達人が教えるWebパフォーマンスチューニング 〜ISUCONから学ぶ高速化の実践
    tjmtmmnk
    tjmtmmnk 2022/05/20
    気になりすぎる
  • 第168回 MyDumperを使ってみよう[その1] | gihyo.jp

    MySQLの論理バックアップツールというと、mysqldumpは皆さんご存知のことでしょう。mysqldumpはシリアルで処理されるため、大きなデータベースのバックアップとリストアには大変時間がかかりました。 その後mysqlpumpが登場し、これによりバックアップはパラレルで処理するため高速化されましたが、リストアはmysqldumpと同様シリアルで処理されるため、これもまた時間がかかりました。 mysqldumpmysqlpumpについては以下記事をご参照ください。 第15回 mysqldumpを使ってバックアップする 第153回 mysqlpumpを使ってバックアップを取ってみる MyDumperはバックアップとリストアをパラレルで処理するため、mysqldumpmysqlpumpよりも高速です。 ただし、最近ではMySQL ShellにMySQL Shellダンプユーティリティ

    第168回 MyDumperを使ってみよう[その1] | gihyo.jp
  • 第2回 トランザクションを知ればデータベースがわかる―「データ復旧」「同時実行制御」を行う“不完全な”しくみ(3) | gihyo.jp

    ロックのコスト:スラッシングとデッドロック スラッシング DBMSがロックを行うとき、具体的にはロックの取得と解放という2つの動作をしています。そして、ロックが取得されている資源にほかのトランザクションがアクセスをかけてきたら、共有ロック同士でない限り「ブロック」を行います。あとから来たトランザクションをロック解放まで待たせるわけです。よく駅や空港のトイレで行列ができるのを見かけますが、あれなどまさにブロックされたトランザクション群の典型です[5]⁠。トイレの便座を共有ロックで、というわけにはいきませんね。 このしくみから必然的に導かれる結果は、並行トランザクション数が一定数を超えると、1つのトランザクションが待機させられる頻度と時間が増え、平均のパフォーマンスが悪くなるということです。システムの特性(更新が多いのか、検索が多いのか)やハードウェア性能にも左右されるため、一般的な閾値(いき

    第2回 トランザクションを知ればデータベースがわかる―「データ復旧」「同時実行制御」を行う“不完全な”しくみ(3) | gihyo.jp
  • まつもとゆきひろさん、楽しくプログラミングができる Ruby3の型の提案 〜RubyKaigi 2016 基調講演 1日目 | gihyo.jp

    RubyKaigi 2016レポート まつもとゆきひろさん、楽しくプログラミングができる Ruby3の型の提案 〜RubyKaigi 2016 基調講演 1日目 2016年9月8日から10日まで、国立京都国際会館にて「RubyKaigi 2016」が開催されました。基調講演の模様をレポートします。 RubyKaigi 2015に続き、2016も初日の基調講演はまつもとゆきひろさんです。 Ruby3ではパフォーマンス、並列実行、型の3つが焦点になっています。RubyKaigi 2016ではパフォーマンスについては卜部さん、並列実行については笹田さんからの講演があります。そこで型について話そうと思うと述べ、「⁠Ruby3 Typing」という題で、Ruby3における型についての構想を語りました。 Ruby3は型の先駆けになっていたい 2010年代に登場した多くの言語は静的型付け言語です。Rub

    まつもとゆきひろさん、楽しくプログラミングができる Ruby3の型の提案 〜RubyKaigi 2016 基調講演 1日目 | gihyo.jp
  • 第113回 anemoeaterを使ってスローログを可視化してみる | gihyo.jp

    皆様あけましておめでとうございます。年も「MySQL道普請便り」をよろしくおねがいします。 新年ということで、色合いを豊かにスローログを可視化してみようと思います。今回は、スローログを時に便利なツールであるAnemometerのラッパーであるanemoeaterについて紹介していきます。 Anemometerとanemoeaterに関して Anemometerは、boxさんが作成されたスローログの可視化ツールで、ペルコナツールキットの1つであるpt-query-digestを利用して、結果を綺麗に時系列で便利に表示するためのツールです。GitHubのリンクはこちらになります。 anemoeaterは、この連載の執筆者でもあるyoku0825さんが用意したラッパーツールで、Anemometerにある問題を幾つか解決するために作成されたものとなります。特にスローログファイルだけあれば表示でき

    第113回 anemoeaterを使ってスローログを可視化してみる | gihyo.jp
    tjmtmmnk
    tjmtmmnk 2020/01/15
    時系列で表示便利そう!
  • 第11回 MySQL Workbenchを使って既存のデータベースからER図を作成する | gihyo.jp

    ちょっと気が早い気がしますが、そろそろ年度末に向けてさまざまな準備を考えはじめる時期だと思います。異動や入退社に備えて、ちゃんとドキュメントを整えていますか。 特にデータベースを使用しているプログラムに関しては、データベース内の情報を正しく活用するためにはどのようなデータ構造があって、どのようなデータが入力されているのかを正しく理解する必要があります。正しく理解ができていないと新規にプログラムを適切に追加したり、今までのプログラムを適切に修正することが難しくなります。 また、CREATE TABLE文やCREATE INDEX文などといった、DDL(Data Definition Language)と呼ばれるデータ構造を定義するために使われるSQLが残っているから大丈夫、という方もいらっしゃると思いますが、普段触っている環境ではなく、別のデータベースをコードやDDLを眺めながら、関連を考え

    第11回 MySQL Workbenchを使って既存のデータベースからER図を作成する | gihyo.jp
  • 第10回 ジョブキューで後回し大作戦―TheSchwartz、Qudo、Q4M(1) | gihyo.jp

    連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーはnekokakさんこと小林篤さんで、テーマは「ジョブキューで後回し大作戦」です。 ジョブキューとは 一時代前は時間のかかる処理もすべてWebアプリケーションで行っていましたが、最近ではいろいろな部分で処理の非同期化が行われるようになってきました。たとえばWebのインタフェース側ではAjaxがその最たるものでしょう。アプリケーションのバックグラウンド側でも今回のテーマであるジョブキューと呼ばれるしくみが多く利用されるようになりました。ジョブキューを賢く上手に利用することで、ユーザにストレスを与えることなく、またサーバのリソースも有効に使えるようになります。 ジョブキューは延々と動き続けるバッチ処理、というイメージが最もわかりやすいでしょう。通常のバッチ処理であればcrondを利用し、一定周期でプログラムを起動して

    第10回 ジョブキューで後回し大作戦―TheSchwartz、Qudo、Q4M(1) | gihyo.jp
  • 1