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

  • Webフロントエンドパフォーマンスチューニング80選 - Qiita

    こんにちは、ぬこすけです。 近年、Webフロントエンドではサイトのパフォーマンスの重要性が高まっています。 例えば、GoogleはCore Web Vitalというパフォーマンスに指標を検索結果のランキング要因に組み込みました。 また、近年の某企業が「パフォーマンスの改善に取り組んだ結果、セッション数〇%アップ、CVR〇%アップ...」などの事例は枚挙にいとまがないでしょう。 パフォーマンスチューニングするためには、定量的に計測してボトルネックを探すようなトップダウンなアプローチもあります。 しかしながら、時には千ノック的にハウツーを片っ端から試していくボトムアップなアプローチも有効になることもあったり、日々のコーディングでパフォーマンスを意識したコードを書くことは大切でしょう。 この記事ではパフォーマンス最適化のハウツーを紹介します。 パフォーマンス改善の施策が思い浮かばない時やフロン

    Webフロントエンドパフォーマンスチューニング80選 - Qiita
    netcraft3
    netcraft3 2022/02/15
  • 世界四連覇AIエンジニアがゼロから教えるゲーム木探索入門 - Qiita

    はじめに 書籍化 記事を元に ゲームで学ぶ探索アルゴリズム実践入門~木探索とメタヒューリスティクス という書籍を出版することになりました! 記事を読んで気になっていただけたらご購入をご検討いただけるとうれしいです! この記事で得られる技術 ゲームルールに適した探索アルゴリズムを選択する ゲーム木探索をするのに適したクラス設計 主要なゲーム木探索アルゴリズムの実装 この記事の特徴 汎用アルゴリズムの実装例による他ゲームへの応用力と、実際に動作可能なサンプルコードによる具体的実装イメージの両視点でわかりやすくした(片方しか記載のない記事が多い) サンプルコード付き日語記事がほぼないDUCTを解説している サンプルコードは印のついたメソッドを実装したクラスさえ書けば、アルゴリズム部分を変更せずそのまま他のゲームで動作可能になっている この記事で扱わない関連技術 探索の高速化 多様性の確保

    世界四連覇AIエンジニアがゼロから教えるゲーム木探索入門 - Qiita
    netcraft3
    netcraft3 2022/01/26
  • API gateway + lambda + S3でDDoS攻撃を受けて1日あたりで$3000溶かした話 - Qiita

    qiita夏祭りに乗り遅れてしまったので一人後夜祭 ~2019年某日~ パイセン「それじゃあ、ワイ君は明日からフロントのログデータを飛ばすのにAPI gatewaylambdaでS3に保存するようにしてな。木曜までな。その間に自分はサービンのドメイン取ったりRoute53周りの構築するから」 ワイ「これもcloud formationに書くんです?」 パイセン「serverless frameworkっていう基的な設定はデフォルトで構築してくれる便利なものがあるんやで。これ使い」 ワイ「めっちゃ素敵やん。わかったやで」 パイセン「週初めのMTGは終わりや飯いに行こう。上野に新しい醤油ラーメン屋ができたんや」 ワイ「いいですね〜」 パイセン「それじゃ自分は新しいロードバイク持ってきたからワイ君も付いてきてな!」 ワイ「ワイ無手なんやが?え、気で漕初めやがった!こなくそおおおぉぉぉ!」

    API gateway + lambda + S3でDDoS攻撃を受けて1日あたりで$3000溶かした話 - Qiita
    netcraft3
    netcraft3 2022/01/08
    これは怖い
  • 半角スペースの有無だけでサーバーをぶっ壊しそうになった話 - Qiita

    記事は「番環境でやらかしちゃった人 Advent Calendar 2021」24日目となります。 前提事項 事故を起こしたのは確か6年くらい前 サーバーのOSは確かCentOS6 諸事情でワンオペだった 当時の記憶を元にした再現であり多少盛ってるので細かいツッコミは勘弁してください 何をしてたか ~~~番環境作業中~~~ (手順書ナガメー) よし、次はファイルの移動か mvコマンド入力してカチャカチャカチャ…ッターン mv: cannot move /bin/ac to '/home/user/work_dir': Permission denied mv: cannot move /bin/aconnet to '/home/user/work_dir': Permission denied mv: cannot move /bin/addr2line to '/home/us

    半角スペースの有無だけでサーバーをぶっ壊しそうになった話 - Qiita
    netcraft3
    netcraft3 2021/12/27
    これは怖い
  • 不揮発メモリに対するLinux周辺動向 (2021年版) - Qiita

    はじめに この記事は Fujitsu Advent Calendar 2021 25日目の記事です。(記事は個人の見解であり、組織を代表するものではありません。) さて、今年もこれまでと同じく不揮発メモリの記事を書きます。今回は以下の内容です。 不揮発メモリ周りの規格・新仕様(CXL, RDMA) メモリ不足時の不揮発メモリの活用 Filesystem-DAXの動向 不揮発メモリ周りの規格・新仕様 今年は規格回りでいくつか新仕様が策定されています。まずは、それらについてざっくりと解説していきましょう。 CXLの不揮発メモリ対応 これまではNVDIMM、すなわちDRAMと同じようにCPU中のメモリコントローラからDDR4で直接つながるデバイスであった不揮発メモリですが、ここへきて新たな接続方法が追加されようとしています。それがCompute Express Link(CXL)です。 コンピュ

    不揮発メモリに対するLinux周辺動向 (2021年版) - Qiita
    netcraft3
    netcraft3 2021/12/26
    勉強になった
  • Perlと型とコンテキスト - Qiita

    この記事はPerl Advent Calendar25日目の記事です。 Perlは動的型付き言語として一般的に知られています。実は、そのデータ型の定義とその使い方は一般的な他の動的型付き言語とは考え方が全く異なります。 そして、残念ながらそのデータ型について正しく理解していらっしゃる方はそこまで多くいらっしゃらないと思います。 今回は、そんなPerlにおけるデータ型と、それを用いてデータを扱う上で非常に重要になってくる概念であるコンテキストについて簡単に解説します。 なお、自分は一般的な型システムの概念そのものを正しく理解できている自信はないので、そのあたりの説明に関しておかしな記述があればその点へのツッコミは特に歓迎します。 また、Type::TinyなどPerlの上に作られた型の仕組みについては今回は触れません。 一般的なデータ型 一般的なデータ型の定義としては、たとえばRubyでは以

    Perlと型とコンテキスト - Qiita
    netcraft3
    netcraft3 2021/12/25
  • 君がエッチなことを考えるとみんなのブラウザに流れ星が降るChrome拡張 - Qiita

    2022/04/28:追記 公開していたzipファイルのリンクを削除しました。 バックエンドのサーバーを停止しました。 伴ってもう星が流れなくなります。 ※この記事にはちょっとだけエッチな内容が含まれます!苦手な方はご注意ください。 こんにちは。あんど(@ampersand_xyz)と申します。 いきなりすみません、タイトルにエッチとか入ってて驚かれた方もいらっしゃることでしょう。どういうことなのか説明させていただきます。 概要説明 画像出典: 吸血鬼すぐ死ぬ 9巻 P134 盆ノ木至 秋田書店 __要するにこれです。__さすがに宙に星を降らせるわけにはいきませんので今回はブラウザ内に星を降らせていきます。 漫画のコマを見ただけでは何を言ってるのかご理解いただくのが難しいかもしれませんが、これ以上説明のしようがありませんのでついてきてください。 実現方法 いかにしてエッチなことを考えている

    君がエッチなことを考えるとみんなのブラウザに流れ星が降るChrome拡張 - Qiita
    netcraft3
    netcraft3 2021/12/19
    結構ガチな実装だった
  • マイクロサービスにひそむ複雑さに立ち向かう - Qiita

    はじめに はじめまして。Kyashでサーバサイドエンジニアを担当しているhirobeです。 Kyash Advent Calendar 2021の12/5担当分です。 Kyashでは、約30ほどのマイクロサービスが動いてます。 マイクロサービスは難しいです。 私が入社して2年半ほどの間、マイクロサービスの複雑さに苦しめられ、あがいてきた実経験をもとに、マイクロサービスにひそむ難しさを紹介したいと思います。 ここでは、ケースとして、弊社の機能のひとつである登録カードからのリンクを実装する上で発生する問題を紹介したいと思います。もちろん弊社サービスを使ったことない人でもわかるように説明をしますのでご安心ください。 なお、最初に注意書きしておくと、ブログではあくまで「マイクロサービスにひそむ複雑さとその対応法」を説明するためのわかりやすさを優先して説明していきます。事実とは異なるケースがありま

    マイクロサービスにひそむ複雑さに立ち向かう - Qiita
    netcraft3
    netcraft3 2021/12/06
  • EC2をぶっ飛ばしてデータが全部消えてしまった話 - Qiita

    こんにちは。もぐめっとです。 旅に出るとこのI love ****シリーズのシャツを買うのが割と好きです。 最近、久々にAWS触ったらまるっとデータをふっとばしてしまったので戒めのために原因と対策を記しておこうと思います。 この記事は番環境でやらかしちゃった人 Advent Calendar2021の3日目の記事になります。 なぜデータが吹っ飛んだのか 原因としては2点あります。それは無知と慢心です。 経緯として最近引き継ぎをうけた某スタートアップが作成したサービスを改修しようとしていたところから始まります。(サービスとしては既に停止済み) 最初にインスタンスを止めてインスタンスサイズを変えようとしたのですが、あろうことか、「インスタンスの終了」を選択してしまいました。 実はEC2には停止と終了の2つの言葉があり、シャットダウンだけだと停止を選ばないといけないのです。 どちらも一緒や!!

    EC2をぶっ飛ばしてデータが全部消えてしまった話 - Qiita
    netcraft3
    netcraft3 2021/12/04
    AWSの「停止」と「終了」の件、本当に数多くの悲劇を生み出している
  • シェルスクリプトは変数代入で = の前後にスペースを置けない!・・・の本当の理由を知ると優れた文法が見えてくる - Qiita

    シェルスクリプトは変数代入で = の前後にスペースを置けない!・・・の当の理由を知ると優れた文法が見えてくるShellScriptBashUNIXshellPOSIX はじめに シェルスクリプトの変数代入で = の前後にスペースを置くことができない理由は、検索すれば「プログラマーの君! 勘違いするな! シェルスクリプトでは読みやすさのためにスペースを置くな!! という話」のような記事がすぐに見つかります。記事に書いてあるとおり変数代入とコマンド呼び出しと区別がつかないからです。それは間違いではないんですが、私はもう少し説明が足りないと感じています。そこで今回は = の前後にスペースを置けない当の理由を解説したいと思います。 の前に皆さんにはこの話を読みながら、自分がシェルスクリプトの言語設計者だったとしたら、どういう言語仕様にするかを考えて欲しいです。なぜかと言うとシェルスクリプトの文

    シェルスクリプトは変数代入で = の前後にスペースを置けない!・・・の本当の理由を知ると優れた文法が見えてくる - Qiita
    netcraft3
    netcraft3 2021/11/10
    勉強になった
  • 総当たり攻撃時のパスワード最大解読時間の表(by 上野宣)について分析した - Qiita

    昨日、上野宣(@sen_u)さんがパスワードの総当りに要する時間の表をツイートされ、話題になっています。 総当たり攻撃時のパスワード最大解読時間の表を日語化した。https://t.co/cVSNUZkAKv pic.twitter.com/rtS8ixwOqi — Sen UENO (@sen_u) August 17, 2021 1万件を超えるリツイートがありますね。大変よく読まれているようです。しかし、この表は何を計測したものでしょうか。上野さんにうかがってもわからないようでした。 何ですかね?パスワード空間が大きくなると解読に時間が掛かるということくらいがわかりますかね。 — Sen UENO (@sen_u) August 17, 2021 一般に、パスワードの総当たり攻撃(ブルートフォースアタック)というと、以下の二通りが考えられます。 ウェブサイト等でパスワードを順番に試す

    総当たり攻撃時のパスワード最大解読時間の表(by 上野宣)について分析した - Qiita
    netcraft3
    netcraft3 2021/08/18
  • 今起きている革命、「因果革命」とは - Qiita

    みなさまは"The Causal Revolution" (因果革命)という言葉を聞いたことがあるでしょうか? 私は今月(2021年6月)に初めて知りました。Google Trendsでもデータ不足によりトレンドが表示されません。 つまりまだ全然マイナーな概念で、聞いたことがないほうが自然かと思われますが、これは「来る」と確信したため記事を投稿しました。この確信の根拠の箇所を記事中で太字で書いた他、最後にもまとめたため、記事を読む価値がありそうかの判断には先にそちらを読んでもらってもいいかもしれません。しかしながら、因果革命ないし統計的因果推論は学ぶ価値のある分野です。記事を読まなくても下記に挙げた書籍を未読の方はぜひ一読してみてください。Qiitaでも因果推論についての記事はいくつもあります。しかし、私が感動した点を明示化した記事は見当たらなかったため記事を投稿しました。 この記

    今起きている革命、「因果革命」とは - Qiita
    netcraft3
    netcraft3 2021/06/29
  • シェルスクリプト リファクタリング ~遅いシェルスクリプトが供養されてたので蘇生して256倍に高速化させました~ - Qiita

    はじめに ことの始まりは「シェルスクリプトでツールを作ったけど速度が遅くて使い物にならなかったので供養」というツイートを見たからです。コードを見てみると、実例をあまり見ないシェルスクリプトのリファクタリング例として丁度良い内容と分量だったため記事にいたしました。記事を書くにあたりコードの利用を快く承諾していただいた @Hayao0819 様にはこの場を借りて御礼を申し上げます。 内容は章立てで構成しており、序章で事前調査をし、第一章で一般的なリファクタリング、第二章でパフォーマンスを重視したリファクタリング、終章で少し余談をして締めくくっています。最初はパイプは並列処理されるから速くなるというのは神話(そうとは限らない)についても書いていたのですが流石に長いので分けました。それでも書きたいことを色々書いていたらめちゃくちゃ長くなってしまいましたので読み物として私がどんなことを考えながらリフ

    シェルスクリプト リファクタリング ~遅いシェルスクリプトが供養されてたので蘇生して256倍に高速化させました~ - Qiita
    netcraft3
    netcraft3 2021/05/07
  • 混沌を極めるWindowsのssh-agent事情 - Qiita

    どうしてこうなった。 何の話? WindowsでのSSH-AGENTとSSHの話です。 この記事での用語: SSHとssh, SSH-AGENTとssh-agent この記事では、SSH-AGENTと書いたときにはカテゴリとしてのSSHエージェントを意味します。 ssh-agentと書いたときには、実行プログラムとしてのssh-agentコマンドを意味します。 同様に、SSHと書いたときにはカテゴリとしてのSSHクライアントを意味します。 sshと書いたときには、実行プログラムとしてのsshコマンドを意味します。 SSH-AGENTって? SSH-AGENTは、秘密鍵での署名を代行1してくれるツールです。 SSH-AGENT に秘密鍵をロードしてしまえば、あとはパスワード(パスフレーズ)入力なしでSSH認証できる agent forward機能を使うことで、SSHした先でさらにSSHすると

    混沌を極めるWindowsのssh-agent事情 - Qiita
    netcraft3
    netcraft3 2021/05/05
  • シニアフロントエンド開発者みたいにChromeデベロッパーツールを使おう - Qiita

    開発環境にChromeを選ぶなら知っておきたい12のテクニック Photo by Morning Brew on Unsplash さて、何らかの理由で、開発ブラウザとしてChromeを選んだとします。次は、デベロッパーツールを開き、コードのデバッグを開始します。 Consoleパネルを開いてプログラムの出力を確認したり、Elementsパネルを開いてDOM要素のCSSコードを確認したりします。 でも、Chromeデベロッパーツールを当に理解していますか?実は、パワフルだけど知られていない機能がたくさん用意されていて、開発効率を大幅に改善できるのです。 ここでは、最も便利な機能を紹介します。お役に立てたら嬉しいです。 ChromeのCommandメニューから始めましょう。ChromeのCommandメニューは、LinuxのShellのようなものです。コマンドを入力してChromeを操作で

    シニアフロントエンド開発者みたいにChromeデベロッパーツールを使おう - Qiita
    netcraft3
    netcraft3 2021/04/07
    知らないことが沢山あって勉強になった
  • 「正直9年経ったいまでもfor文ググってる」 - Qiita

    「正直9年経ったいまでもfor文ググってる」 という議論記事があった。正直なところ私もググる方の人だ。私の感想: ポンとテキストエディタだけ渡された時に書けるか自信ないぞ...IDEがあればまあ大丈夫かなあ。 JavaScriptだけじゃない。言語色々扱うしという言い訳。正規表現とか毎度調べる。 だから世の中にチートシートというものがあるのだ。お気に入りチートシート多数。 実戦でどうしているか?結局周りのソースを見て馴染む書き方にしていますよ多分。 暗記するかしないかは受験勉強みたいなもので、コーディング面接に受かるなら必要。暗記そのものには意味はないとは思う。 競技プログラミングが使えないとかいう論もあったな。 ググり力も大事。 でも「最低限」もできないのはやはり恥ずかしい気持ちはある。 なんかこれ英語できるできないと似てるな。英語なんてGoogle翻訳、DeepL翻訳あればいいけど、実

    「正直9年経ったいまでもfor文ググってる」 - Qiita
    netcraft3
    netcraft3 2021/03/25
    母語となる言語は憶えていられるけどたまに馴染みの薄い言語で書かざるを得ないときはググってる
  • モダンプログラマになれない組込みプログラマの苦悩 - Qiita

    はじめに 10年以上組込みエンジニアをしている@yagisawaです。 Qiitaのトップ記事では新しいフレームワークの使い方とかモダン言語の新しい言語仕様の解説とかが流れてきて、いつも羨ましいなーと思いながら読んでいます。 記事は組込みシステム開発をしていて経験したこと・感じたことを自虐ネタとして書き連ねていこうと思います。他ITエンジニアの人に「うわっ、可愛そう」って思ってもらうのが目標です(ぇ 各業界それぞれに悩みはあると思うので、自分たちが一番不幸とかは思っていません。おそらく隣の芝が青く見えているだけです。それよりあまり組込みの記事は見かけないので、「組込みエンジニア仕事ってこんな感じ」というのを知ってもらう意図があったりします。 内容によっては「それはあなたの設計が悪いからです」と言われてしまうようなところもあるとは思いますが、建設的なご意見は大歓迎ですが基は温かい目で見

    モダンプログラマになれない組込みプログラマの苦悩 - Qiita
    netcraft3
    netcraft3 2021/03/18
  • 【PHP8.1】PHPで簡単に非同期処理を書けるようになる - Qiita

    PHPは長きにわたり同期的、すなわち、あらゆる処理を上から順に実行していくというスタイルを取ってきました。 しかしたとえば、複数のURLからデータを取ってきて結果をまとめたいといった場合、時間のかかるHTTPリクエストは同時に投げたいですよね。 この用途にはGuzzleというライブラリが存在し、これを使えば同時にリクエストを投げられます。 しかし、ではHTTPアクセスとDBアクセスを同時にやりたい場合は? 時間のかかる計算を裏でやりたい場合は? などと考え始めると、こういった個別のライブラリでは対処しきれません。 ということで汎用的な非同期処理をPHPで書けるようにするRFCが提出されました。 PHP RFC: Fibers Introduction 人類史上ほぼ全ての期間において、人々はPHPを同期的なコードとしてのみ書いてきました。 同期的に実行されるコードのみが存在し、そしてそれを同

    【PHP8.1】PHPで簡単に非同期処理を書けるようになる - Qiita
    netcraft3
    netcraft3 2021/03/18
    PHP進化し続けている
  • Slack社はSlackをどう使っているのか - Slack利用ガイドラインの話 - Qiita

    GitLab社のGitLab Handbookと徹底した文書化、組織的なオープンネス(?)を先日調べたのだが、じゃあ同じように見える化、透明性をアピールしているツールが何か?と考えた際ににSlackがあると思っている。SlackといえばDM禁止!オープンな職場が良し!風通し良し!なやつである。 しかしそれを実際会社で根付かせようとした時に、Slackの使い方を説くだけでは足りなくて、むしろ皆の意識改革みたいなものが必要だな~とひしひし感じさせられる。オープンな会社が良いかクローズドが良いか、「チームの風通しは良いほうが良いのか?」 世の中ひねた人も居るもんで風通しだけ良くてもこんなデメリットが有るなんて言われる 意見は増えても、内容が浅い 意見の浅い深いを確認する手間がかかる 浅い意見でも対応しなければならない 多数派の浅い意見に流されがちになる https://factory-learn

    Slack社はSlackをどう使っているのか - Slack利用ガイドラインの話 - Qiita
    netcraft3
    netcraft3 2021/03/11
  • 10年間使ってみて見えたHaskellの闇と光 - Qiita

    はじめに わたしがHaskellを使い始めてもうそろそろ10年目になります。(タイトルは多少サバを読んでいますね) これまで使ってきた感想をまとめます。 Haskellのつらいところ まずは愚痴らせてください。 コンパイルが遅い 依存モジュールはすべてソースコードからビルドする必要があります。(バイナリ形式のモジュールはありません) 最初のビルドに20分くらい待つのはザラです。 複雑な型システムをつかうと型推論や型レベル計算に時間がかかります。 高速なHaskellプログラムを書くためには多くの関数をインライン化する必要があります。最適化ビルドではインライン展開によってコードサイズが大きくなるので時間がかかります。 デバッグが難しい 公式のGHCiデバッガはありますが、今のところIDEから簡単に利用できるわけではないですし、コンパイル済みのライブラリはデバッグできないです。 近年スタックト

    10年間使ってみて見えたHaskellの闇と光 - Qiita
    netcraft3
    netcraft3 2021/03/02