タグ

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

  • App Engine Scaling Config - Qiita

    App Engineは、Deploy時にModule Version毎にスケーリング設定を行うことができます。 結構、細かい値が設定できるのだけど、いまいちどんな作用があるのか分かりづらいものもあります。 この記事では、スケーリング設定の値にどんな作用があるのかを解説します。 Moduleって?という方は GAE ModulesをSimpleに使う を見てください。 3つのスケーリング設定概要 App Engineのスケーリング設定は3つ存在します。 それぞれ特性が違うので、Moduleでどのような処理をしたいのかによって、選択するスケーリング設定を変えます。 Automatic Scaling Request数に合わせて自動でインスタンスの追加、削除を行う設定。 App Engineでよくオートスケールが特徴と言われるのは、主にこの設定を指している。 たくさんの小さなRequestをさば

    App Engine Scaling Config - Qiita
    lufiabb
    lufiabb 2019/11/25
  • なぜGo言語の正規表現は遅いと言われるの? - Qiita

    はじめに Goの正規表現は遅いと言われていることが以前から疑問だったので調査してみました。 こちらの記事やこちらの記事を拝見する限り ① 現実的なユースケース(例えばURLのパースなど)ではGo言語の正規表現は使うべきではなく、stringsパッケージの標準の関数を利用した方がパフォーマンスとしては良い。 ② Go言語で正規表現を利用するために必要な"正規表現オブジェクト"を並行にアクセスするにはパフォーマンスが問題になるので注意が必要。 とあります。その理由は、それぞれ以下に集約できるようです。 ① Go言語標準の正規表現ライブラリは、正規表現と検査文字列の長さに対して常に$O(n^2)$のオーダーで計算量が増加する安定したアルゴリズムを採用している。 ② "正規表現オブジェクト"を用いたマッチング処理には排他制御が行われている。 調べてみる Go言語のpkg/regexpの公式ドキュメ

    なぜGo言語の正規表現は遅いと言われるの? - Qiita
    lufiabb
    lufiabb 2019/11/12
  • スーパーマリオのジャンプのアルゴリズム - Qiita

    先日、気持ちのいいジャンプを目指してというQiitaの記事を見かけました。記事中では、マリオのジャンプについても触れられています。マリオというと、マリオブラザースやスーパーマリオブラザース等々、色々あるのですが、これはおそらくスーパーマリオブラザースの事だと思われます。ジャンプアクションゲームといったらスーマリですね。 そのマリオのジャンプの仕組みは「マリオの速度ベクトルを保存しておいて座標を計算するんじゃなくて~」と書かれていて、別サイトのブログへのリンクが張られています。 マリオのジャンプ実装法とVerlet積分 ただ、この記述については不正確であるという別のブログもあったりします。 マリオの完コピvol.28 ジャンプの解析と修正 ホントのところはどうなんでしょうか?世界で最も有名なゲームジャンプがどのように処理されているのか気になったので調べてみることにしました。 原典にあたる

    スーパーマリオのジャンプのアルゴリズム - Qiita
    lufiabb
    lufiabb 2019/11/07
  • DatastoreとFirestoreとApp Engineの関連 - Qiita

    注意書き この記事は2017年12月の記事です。 現在、Google Cloud FirestoreはUPDATEされて、以下の内容とは異なります。 新しい記事はお待ち下さい! 記事 Cloud Firestore がBetaで公開されました。 Cloud Firestoreは、Firebase Realtime Databaseの後継に当たるサービスです。 Firebase Realtime DBに存在していたリアルタイム更新やデータベースルール, オフライン機能や、Firebase Authとの連携などを受け継いでいます。 大きく変わったのはバックエンドです。 Firebase Realtime DBは、もともとGoogleが作ったものではなく、Googleが買収したサービスでした。 買収後、FirebaseはAuth, Push通知, Analytics, Remote Config

    DatastoreとFirestoreとApp Engineの関連 - Qiita
    lufiabb
    lufiabb 2019/10/27
  • ソシャゲエンジニアの自分が開発に必須だなと思った知識(MySQL編) - Qiita

    この記事の目的 自分は、とある会社様の元でソシャゲAPI 開発をさせていただいています。 ソシャゲは、リリース時やイベント時などに集中アクセスされやすく、負荷軽減の知識がない状態で開発を行ってしまうと、運用時に緊急メンテ祭りになりやすいジャンルかなと思っています。 これまで培ってきた MySQL の知識ですが、脳内メモリ量の関係上、暗記できないのでメモしておこうというのが主目的です。 ここ数年ほどソシャゲ開発しかしていないため、偏っている感がある内容ですのでご注意ください。 概要 ストレージエンジンは InnoDB。メインで扱っている MySQL バージョンは 5.6。 記事の内容ですが、これらのキーワードを見て、おおよそ分かる方は読む必要はないかと思います。 インデックス系 クラスタインデックス カバリングインデックス EXPLAIN で注意するべき値 トランザクション系 MVCC

    ソシャゲエンジニアの自分が開発に必須だなと思った知識(MySQL編) - Qiita
  • TypeScriptの型入門 - Qiita

    TypeScriptは型がついたJavaScriptです。プログラミングにおいて型があることの恩恵は大きく、近頃AltJSの代表格として人気を集めています。TypeScriptはもともと型のないJavaScriptで書かれるコードに型を付けることを使命としていることもあり、たまに変な型が追加されます。例えばTypeScript2.8で追加されたconditional typesはずいぶん注目を集めました。これによってTypeScriptの型システムの表現力が広がりましたが、一方でTypeScriptを書いている人の中には、よく分からない型が増えてついて行けない、一部の人たちが長くてよく分からない型定義を書いて喜んでいるだけと思っている方もいるのではないでしょうか。実際、健全にJavaScriptを書いていれば、自分でそのような変な型を書くことはあまり多くありません。 そこで、この記事ではT

    TypeScriptの型入門 - Qiita
  • 他人の書いたソフトウェアのバグへの対処例 - Qiita

    はじめに 記事は、他人の書いたソフトウェアのバグに遭遇したときにどうするかという流れを、実例を基にして、ストーリー仕立てでなるべく具体的に書きました。このようなときの対処に不慣れな人に、実際のデバッグ、バグレポート、および修正案の提出までの流れを掴んでもらうことが目的です。 バグに遭遇 筆者も参加していたLinux Advent Calendar 2016に、ある日シェルスクリプト(Bash)で作るTwitterクライアントという記事が投稿されました。twitter APIの認証に使われているOAuth1.0aとshell芸に興味があったことより、この記事を読んでみることにしました。 そこで紹介されているtweet.shというbash製twitterクライアントを試そうとしたところ、出力は次のようになりました。 いきなり何かがおかしいです。自分のtwitterアカウントに関するJSON形

    他人の書いたソフトウェアのバグへの対処例 - Qiita
    lufiabb
    lufiabb 2019/09/06
  • タスクスケジューラ用のsysctlパラメタ - Qiita

    はじめに 記事はLinux Advent Calendar 2015 19日目用に書きました。タスクスケジューラに関するsysctlパラメタについての解説をしています。取り扱ったのは全パラメタではなく、使用頻度が比較的高そうなものだけです。調査に使用したカーネルのバージョンは4.4-rc5です。 Completely Fair Scheduler(CFS)に関するsysctlパラメタ linux上の各タスクにはスケジューリングポリシー(以下ポリシーと記載)というものを設定できます。通常のタスクはデフォルトSCHED_OTHERというポリシーを使います。このポリシーを使うタスクのスケジューリングにはCFSというスケジューラを使います。ここではCFSに関するsysctlパラメタを紹介します。 スケジューリングポリシーの詳細についてはman 2 sched_{get,set}scheduler

    タスクスケジューラ用のsysctlパラメタ - Qiita
  • 内部実装から理解するgRPC - Qiita

    概要 目的 gRPCはDocumentにあるように以下の特徴があるかと思います。 protocol buffer のようなインターフェース定義語 (IDL) から生成されたコードを利用してRPCができる HTTP/2で通信することができ、リクエストとレスポンスをそれぞれ分割できる 多言語に対応している しかし、この記事ではこれらの機能の紹介ではなく、gRPCの仕組みを理解することを意図しています。 なぜそれを意図したかというと普段の開発でgRPCを利用しているものの、どのような仕組みでRPCが実現できているのかイメージが持てていなかったためです。そのために、grpc-goの内部実装(2019/5時点)を読み解きながら、実際の通信の中身を覗いてみました。 そして結果的には以下の効用がありました。 protoc-gen-goがprotocol-buffersから生成したコードがどのように利用さ

    内部実装から理解するgRPC - Qiita
  • 事業会社とOSS - Qiita

    最近、社内でよく話をする内容についてまとめました。 企業がOSS化するといろいろメリットがあると思っていて、社内でもそこのコンセンサスはうちの技術横断部門のメンバー間では取れていたりするのですが、自社以外の人とかと話をする時もあるので、いろいろまとめておきます。 なお、この文章では業をOSSにしつつビジネスを回そうみたいなElasticsearchとかMongoDBとかMySQLみたいな話題はとりあげず、業が別にある会社がOSS化する、という部分に特化した話です。 9/13に追記 よく言われるメリットとデメリット メリットは、公開することで開発が自然と進み、コスト削減になる。一方でノウハウの流出などのデメリットがある、みたいなトレードオフ、という理解をしている人が多いようです。 コストは削減にならない OSS化したら多くの人に使ってもらいたいですよね?というのは考えるわけですが、その「

    事業会社とOSS - Qiita
    lufiabb
    lufiabb 2019/08/20
  • Go ランタイムのデバッグをサポートする環境変数 - Qiita

    はじめに Go はシンプルな構文ながら複雑な処理を行えるプログラミング言語です。エラーも自らがハンドリングするスタイルなので割とバグが入り込みにくいのが特徴です。しかし時には Go 体のソースを見ないと動きが確認できない事もあります。とは言えオープンソースだからといって全ての挙動が簡単に探れるものではありません。 コンパイラの動きであったり、ランタイムの動きであったりで良く分からない物があった場合に、ソースを変更して print デバッグする事が良い方法とは言えません。 幸運にも Go ではランタイム、標準パッケージにデバッグのヒントを出せる仕組みが用意されています。GODEBUG や GOGC、GOTRACEBACK という環境変数が用意されており、設定を行う事で挙動を変更できたり色々なデバッグ情報を出力できたりします。 記事ではこれらの環境変数に設定可能な値を、筆者の知見を交えて紹

    Go ランタイムのデバッグをサポートする環境変数 - Qiita
    lufiabb
    lufiabb 2019/08/03
  • OAuth 2.0 クライアント認証 - Qiita

    はじめに この記事では、OAuth 2.0 の『クライアント認証』について説明します。 RFC 6749 に記述されているクライアント認証方式のほか、クライアントアサーションやクライアント証明書を用いるクライアント認証方式についても説明します。 1. クライアント認証方式 1.1. トークンエンドポイント 認可サーバーがあります。 認可サーバーからアクセストークンの発行を受けたいクライアントアプリケーションがあります。 アクセストークンは、幾つかの例外を除き、認可サーバーのトークンエンドポイントから発行されます。そのため、認可サーバーはトークンエンドポイントを用意します。 クライアントアプリケーションは、アクセストークンの発行を受けるために、トークンエンドポイントにトークンリクエストを投げます。 認可サーバーは、トークンレスポンスを返します。この応答の中に、アクセストークンが含まれます。

    OAuth 2.0 クライアント認証 - Qiita
  • Homebrewでダウングレードをする方法 - Qiita

    Homebrewのダウングレードがまぁまぁ面倒だったのと、 上がっている記事が古くなりつつありそうだったのでメモ。 こちらの記事を参考にさせてもらいました。 brew upgradeして新しいバージョンにしたけど戻したい時 上記記事に書いてあるので(私が使ったことがないので)割愛させていただきます。 brew switchコマンドで簡単にバージョン切り替えができるようです。 旧バージョンが提供されている場合 上記記事では versions リポジトリを追加していましたが、deprecatedされていました。 それぞれのフォーミュラが gcc@7 のような形でバージョンを指定できるようにしていないと、バージョンを通常の方法で指定してインストールすることはできないと思います。 上記二つに該当しない時 HomebrewがFomulaを管理しているrubyスクリプトを集めたディレクトリが存在します

    Homebrewでダウングレードをする方法 - Qiita
    lufiabb
    lufiabb 2019/07/10
  • Chrome拡張の高速な英語辞書ツールをつくりました(Mouse Dictionary) - Qiita

    経緯 もともとMouseoverDictionaryという素晴らしいFirefox用辞書があったのですが、Quantumの登場とXULの廃止とともに使えなくなってしまったため、自分用にChrome拡張をつくった次第です。 ソースコード 実装に関わる技術寄りの用語: React, esbuild, chrome.storage.local, chrome.storage.sync, Cross-extension messaging, Hogan, debounce, resizable/draggable, intl.v8BreakIterator, deinja, クロスブラウザ, など。 ※詳細は「Mouse Dictionaryの技術的な話」をご参照ください https://qiita.com/wtetsu/items/2a5568cb0b5a38c003fb 使い方 インストール

    Chrome拡張の高速な英語辞書ツールをつくりました(Mouse Dictionary) - Qiita
  • D言語くんの生態に関する考察 - Qiita

    ついカッとなって書いた。反省はしていない D言語くんの成長について D言語くんは増殖方法については画期的な仮説が提唱されたが、成長に付いては仮説が上がってないため自説を発表する。 誕生 幼少期 ユニティちゃんとD言語くんが誰得共演!OSC Server プログラムを書いたので、iPad の TouchOSC からD言語くんの遠隔操作が可能。なお、このためにD言語は1行たりとも書いていないし、ユニティちゃんは微動だにしない。 pic.twitter.com/2W9pgKTKfD — らりほま (@rarihoma) 2014, 4月 9 成長完了 Google教授に質問をしたところ、やはり1 m ~ 2 mのD言語が多かった。誕生時に急速に成長した後、成長は緩やかになり2m付近で停滞すると考えられる。誕生直後の成長速度は圧倒的であり、また誕生とほぼ同時に十分な運動能力を獲得するあたりも地球の

    D言語くんの生態に関する考察 - Qiita
    lufiabb
    lufiabb 2019/06/20
  • 【マニアックWeb担当者必見!】Google創成期の学術論文をめっちゃ詳しく解説してみた - Qiita

    こんにちは!エイチーム引越しSEO担当をしています、@tatechiです。 突然ですがみなさん、↓の3つの質問に答えることはできますか? googleの語源は何? 創業時のgoogleはどこが革新的だったの? googleが検索結果を返す仕組みはどうなっているの? SEO担当としてGoogleのことを知るのはとっても大切なことです。 ですが、Googleの仕組みって、意外と知らない人も多いのではないでしょうか? 今回はGoogle誕生の瞬間ともいえる学術論文"The Anatomy of a Large-Scale Hypertextual Web Search Engine"をテーマに挙げて、かみ砕いてGoogleの基礎を紹介していきます。 先ほどの3つの質問のうち、1つでも即答できなかった人は、ぜひ読んでみてください! Googleが誕生したときのWEB業界 当時の検索エンジンは大き

    【マニアックWeb担当者必見!】Google創成期の学術論文をめっちゃ詳しく解説してみた - Qiita
  • tcp_tw_なんとかの違い - Qiita

    自分用の覚書です。CentOS5とか6とかでの経験。 実際高負荷だとか負荷試験ツールで出ただとかのTIME_WAITを減らしたいというときに、 syctlで、tcp_なんとかを調整するというのは今ではよくあると思います。 (わたしはむかし運用していた某無料サイトで負荷に悩んだのが切欠で知りました。無料というだけで会員数激増的な風潮だったのと素行の悪い某国のクローラーとかrewriteのループとかの色々な芸の肥やし的な機会がというか夜中に起こされて眠りを妨げられたくなかったので色々調べたりしていました。) いっぱい接続したいの - (ひ)メモ Linux - ぜんぶTIME_WAITのせいだ! - Qiita ・TCPの終了待ちタイムアウト秒数を設定(default60sec) net.ipv4.tcp_fin_timeout = 10 ソケットを強制的にクローズする前に、最後のFINパケッ

    tcp_tw_なんとかの違い - Qiita
  • ぜんぶTIME_WAITのせいだ! - Qiita

    課題 突然キャンペーンとかの高トラフィックが来る!とか言われると色々困ることはあるものの、今のご時世クラウドだからスペック上げときゃなんとかなるでしょ。ってとりあえずCPUとかメモリあげて見たものの、キャンペーンが始まったら意外と早くブラウザからつながらない!!とか言われたりする。 CPUもメモリもそんなに負荷は特に高くもない。調べてみたらTIME_WAITが大量にあった。 とりあえず何とかしたい TIME_WAIT数をコマンドで確認 $ netstat -anp|grep TIME_WAIT __(snip)__ tcp 0 0 192.168.1.1:80 192.97.67.192:56305 TIME_WAIT - tcp 0 0 192.168.1.1:80 192.63.64.145:65274 TIME_WAIT - tcp 0 0 192.168.1.1:80 192.39

    ぜんぶTIME_WAITのせいだ! - Qiita
  • いまさら聞けないLinuxとメモリの基礎&vmstatの詳しい使い方 - Qiita

    さくらインターネット Advent Calendar最終日は、硬派にLinuxのメモリに関する基礎知識についてみてみたいと思います。 最近はサーバーを意識せずプログラミングできるようになり、メモリの空き容量について意識することも少なくなりましたが、いざ低レイヤーに触れなければいけないシチュエーションになった際に、OSを目の前に呆然とする人が多いようです。 基的にLinux のパフォーマンスについて、メモリをたくさんつめばいいとか、スワップさせないほうが良い とか、このあたりは良く知られたことだと思います。 ただ、なんとなく ps コマンドや free コマンド などの結果を見るだけでなく、もう少しメモリのことについて掘り下げてみてみたいと思います。 メモリとキャッシュ Linux におけるメモリの状態を大きく分けると「使用中のメモリ」「キャッシュ」「空きメモリ」「スワップ」の 4 つに分

    いまさら聞けないLinuxとメモリの基礎&vmstatの詳しい使い方 - Qiita
  • LinuxにおけるOOM発生時の挙動 - Qiita

    はじめに これはLinux Advent Calendar 2015 3日目の記事を2016/2/2に編集したものです。 Linuxにおいてシステムの物理メモリが枯渇したOut-Of-Memory(OOM)という状態になった際の挙動について説明しています。OOMに関連が深いsysctlパラメタを紹介するとともに、カーネルの内部論理についても触れました。 記事に記載されているファイル名は、とくに断りが無ければカーネルソースのトップディレクトリからの相対パス名です。調査に使用したカーネルバージョンは4.3です。 書は話を単純化するために、細かい動作論理については説明を省いていることをご承知おきください。また、書の中に誤りを見つけたかた、および、私が追いきれなかったソースについての詳細をご存知のかたは、指摘していただけると助かります。 Out-Of-Memory(OOM)とOOM-kill

    LinuxにおけるOOM発生時の挙動 - Qiita