タグ

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

  • 俺が悪かった。素直に間違いを認めるから、もうサービスクラスとか作るのは止めてくれ - Qiita

    ちなみに、最初に結論だけ言っておくと、まずSandi Metzの「オブジェクト指向設計実践ガイド」を読め、という話です それだけで終わってしまいたい気持ちはあるが、不親切過ぎるしもうちょっとRails向けの話を書こうと思う。 ただ言いたいことは、よく分かってないのに使うのは止めろということ。 自分もで書いたりした手前、それが参考にされた結果なのかもしれないが、世の中には当に酷いクラスが存在するもので、雑にサンプルで書くと以下の様な感じのコードが存在したりする。 class HogehogeService # Hogehogeはモデル名まんま def process(hogehoge, option_a: nil, option_b: nil, option_c: false) history = hogehoge.histories.last unless hogehoge.activ

    俺が悪かった。素直に間違いを認めるから、もうサービスクラスとか作るのは止めてくれ - Qiita
  • nginxにおけるmapとその応用 - Qiita

    set $device "pc"; if ( $http_user_agent ~ iPhone) { set $device "iphone"; } if ( $http_user_agent ~ Android) { set $device "android"; } proxy_set_header X-Device $device; このように特定の条件毎に変数の値を代入して各種ディレクティブの動作を変更する、といったニーズは現実のシステムでは結構あります。ただ、ifディレクティブで分岐させるような設定はせいぜい数個くらいが限界でしょう。 また、nginxのifディレクティブはネストや条件の複数指定ができないのでちょっと凝ったことをしようとすると設定がかなり複雑になりますし、If is Evilという言葉があるくらいnginxではifを多用するスタイルはあまり推奨されていません。 こ

    nginxにおけるmapとその応用 - Qiita
  • 次世代監視の大本命! Prometheus を実運用してみた - Qiita

    こんにちは!freeeでインフラゾンビをやっている @sugitak です。ゲームではレベルを上げて物理で殴る派です。 freee ではたまにインフラエンジニアの数が減るのですが、その減ったインフラエンジニアはインフラゾンビへと進化し、社内を闊歩します。インフラゾンビは主に開発チームに所属して、アプリっぽいインフラの仕事をインフラからアプリ側へと持っていきます。デプロイとか、Dockerとか、Jenkinsとかの、いわゆる DevOps 系のところですね。こうすることで開発者は手を出せるものの自由度が増えるし、インフラはより来のインフラとして純度を上げていける、 so, win-win ってわけです。 さて、そんなわけで監視です。freee Engineers Advent Calendar 2016の9日目の記事として、 Prometheus による監視が最高なのでみんなもっと使おうと

    次世代監視の大本命! Prometheus を実運用してみた - Qiita
  • [翻訳][ネタ] これが未来だ!(It's The Future) - Qiita

    原文:https://circleci.com/blog/its-the-future/ ヘイ、ボスが君と話せっていうんだ。Webアプリに詳しいんだろ? ああ、俺はもうわりと分散システムガイだぜ。ContainerCampとGlueonから帰ってきたばっかりで、来週はDockerconに行くんだ。業界が進歩するのを目の当たりにしてワクワクしている。全てがシンプルになって信頼性が高まるんだ。これが未来さ! すごいね。僕は今シンプルなWebアプリを作ろうとしてるんだ。Railsの普通のCRUDアプリで、Herokuにデプロイしようと思ってる。今後もこの方法でよさそうかい? オー、ノー。それは古いやり方だ。Herokuは終わった。もう誰も使っていない。今はDockerを使う必要がある。それが未来だ。 OK、それは何だい? Dockerは新しいコンテナリゼーションの手法さ。LXCみたいなもので、パ

    [翻訳][ネタ] これが未来だ!(It's The Future) - Qiita
  • 運用の問い合わせチケットを10分の1に削減した話 - Qiita

    Help us understand the problem. What is going on with this article? 会社で働いていると、運用チームからの問い合わせがあると思います。 問い合わせというものは、割り込みに繋がり生産性を下げるのでなるべく減らしていきたいものです。 Redmineで管理されているオープンなチケットを10分の1に削減した話をまとめます。 常時、約50枚ほどオープンなチケットを5枚ほどに減らしました。 問い合わせが多くて辛みを味わっている方の参考になれば。 概要 Web自社サービス タスク管理ツール Redmine 毎日、5枚ほどチケットが増える 運用と開発がそれぞれ20人ほど こんな環境です。 改善のきっかけ うちのチームは、当番制で「問い合わせの窓口」(以下、窓口)となる人を作ります。 窓口の人がチケットを解決したり、有識者にチケットを委譲した

    運用の問い合わせチケットを10分の1に削減した話 - Qiita
  • AWS インスタンス別ネットワーク帯域・InstanceStore IOPS測定 - Qiita

    #!/bin/sh INSTANCE_TYPE=$(curl -s http://169.254.169.254/2014-11-05/meta-data/instance-type) yum install fio -y umount /media/ephemeral0 time dd if=/dev/zero of=/dev/xvdb bs=1M sudo mkfs.ext4 /dev/xvdb mount /media/ephemeral0 for i in `seq 0 3`;do time fio -name=random-write \ --output=/home/ec2-user/${INSTANCE_TYPE}-${i}.txt \ -ioengine=libaio \ -rw=randrw \ -rwmixread=0 \ -bs=16k \ -numjobs=16 \

    AWS インスタンス別ネットワーク帯域・InstanceStore IOPS測定 - Qiita
  • 知っているようで意外と知らない、DDoSの基礎知識 - Qiita

    どうも先日(2016年9月現在)からさくらインターネット様や技術評論社様でDDoS被害が相次いでいますね。 「DDoS対策しとけ」なんてよく言われていますが、セキュリティにステータス振ってない場合は「DDoSってF5連打じゃないの?」みたいな人も結構いるんじゃないでしょうか。あとはiptablesをとりあえず入れておけば大丈夫なんじゃないの?とか。 Web系の開発者にとってのセキュリティ対策は「フレームワークをちゃんとアップデートする」に尽きるので、フレームワークの脆弱性に依存しないDDoSって意外と知らない事が多いと思います。 知っているようで意外と知らないDDoSの世界、ちょっとまとめてみました。 TL;DR スケールできる設計でDDoSに備えよう nginxは置いとけ、キャッシュは甘く見るな SYN cookiesは入れとこう 最後はカネの力でセキュリティを手に入れろ Akamai

    知っているようで意外と知らない、DDoSの基礎知識 - Qiita
  • Nginx balancer_by_luaの話とupstream名前解決の話 - Qiita

    balancer_by_lua_xxxxx いつの間にやら1 lua-nginx-module に balancer_by_lua_xxx という新しいディレクティブが増えていました。 以下ドキュメントより抜粋。 http { upstream backend { server 0.0.0.1; # just an invalid address as a place holder balancer_by_lua_block { local balancer = require "ngx.balancer" local host = "127.0.0.2" local port = 8080 local ok, err = balancer.set_current_peer(host, port) if not ok then ngx.log(ngx.ERR, "failed to set

    Nginx balancer_by_luaの話とupstream名前解決の話 - Qiita
    toritori0318
    toritori0318 2016/09/01
    balancer_by_luaの検証など
  • サーバからクライアントに送信する技術 - WebSocketを中心に - Qiita

    Webでのプッシュ技術 HTTPはクライアント(ブラウザ)からリクエストしてサーバからレスポンスが返る一問一答型のプロトコルなので、基的にはサーバ側からブラウザに新着情報をリアルタイムで通知(プッシュ)できるようにはできていません。 しかしそれでもプッシュをしたいという場合にどうするかという話が出てきます。やり方には以下のようなものがあります。 ポーリング クライアントからサーバに定期的に新着を問い合わせるようにします。 最も原始的かつ確実なやり方。欠点は、最大でポーリング間隔の分だけ通知が遅延しうることです。 ロングポーリング(“COMET”) ポーリングなのですが、問い合わせを受けたサーバは新着情報がなければレスポンスを返すのをしばらく保留します。 そのあいだに新着情報が発生すれば即座にレスポンスを返しますし、一定時間経過したら何もなかったとレスポンスを返しましょう。 飛び交う通信内

    サーバからクライアントに送信する技術 - WebSocketを中心に - Qiita
  • 「なぜDI(依存性注入)が必要なのか?」についてGoogleが解説しているページを翻訳した  - Qiita

    イマイチ理解しきれていなかったDIに関して調べていところ、Google Guiceの解説がすごく分かりやすかったので、和訳してみました。 (ところどころ意訳気味です。明らかに解釈の誤った訳がありましたら、ご指摘ください) ちなみにGoogle Guiceというのは、Googleが開発したDIライブラリです。この例ではJavaが使用されていますが、Scalaでも使用可能です。最近Play Frameworkでも採用されたので話題になっているようです。 用語の定義 文を読む前に目を通すことで、内容をスムーズに理解できます。 用語 意味 文中の例

    「なぜDI(依存性注入)が必要なのか?」についてGoogleが解説しているページを翻訳した  - Qiita
  • 押下(おうか)にまつわる話 - Qiita

    はじめに 私が仕様書を書くようになったのは30歳を過ぎてからと遅く、仕様書の書き方が分からなくて悩んだことがありました。通常は先輩たちが作成した仕様書等を見て書き方を覚えていくのでしょうが、仕様書も無く直接プログラムを組むような体制の仕事をしていたため、SI系に転職してから苦労したのであった。 仕様書を書く際に、ボタンを「Enterキーを押す」か「クリックする」かで考えて「押下」にすれば両方満たすだろうと、それ以来ずっと使用しています。 押下については、コンピューター雑誌やマニュアル等を読んで憶えていた用語で特に気にも止めていなかったのですが、別ブログの仲間が過去に「ボタン押下?」について書いていたことを思い出し、調べてみることにしました。 調べていくと自分は誤用して使っている気がしますw 押下について 読み方 押下は「おうか」と読みます。ちなみに苗字の押下さん(読方:おしした)は全国でお

    押下(おうか)にまつわる話 - Qiita
    toritori0318
    toritori0318 2016/08/18
    へー
  • 一からマイクロサービスの開発フローを作った話 - Qiita

    ※ 2016年の記事なので、すでに古い情報が多いです。 今の会社で、全社の外部サービスで利用できるAPIを作ってね、という話があったので、環境構築からコーディング、運用まで一人で行っている。 基AWSのサービスを利用し、ログの保存だけGCPのBig Queryを利用した。 ※ 2017/10/13 追記 このときの経験を踏まえて、コンテナでの環境構築を行ったので記録した。 → 一からAPIサーバの開発フローを作った話〜コンテナ編 関連記事 マイクロサービスで調査しやすいログをつくる マイクロサービスのテスト作成方針 マイクロサービス作成時におこなった負荷対策 deployフローに関しての振り返り ウェブサービス構築時に導入する、開発が3倍速くなる仕組み 簡単な要件 ゲームなど自社で利用するユーザアカウント情報を1つにする 現在のアカウントで引き続きサービスは利用できる アカウント以外に

    一からマイクロサービスの開発フローを作った話 - Qiita
  • マイクロサービスアーキテクチャにおけるオーケストレーションとコレオグラフィ - Qiita

    マイクロサービスアーキテクチャの4章にオーケストレーションとコレオグラフィという話があります。 マイクロサービスを使ってアプリケーションを組み立てる側の、サービスの呼び出し方の違いです。 「マイクロサービス的に作ってるよー」というシステムでも、ここに特に疑問を持たず、ふつうにWeb APIたちを呼び、受け取ったデータでHTMLをレンダリングするというオーケストレーション方式で作られているのが多いのではないでしょうか? Sam Newmanは、それだと呼び出されるサービス側がドメインモデル貧血症になりがちで、呼び出す側にロジックが集まっていくことになると、書籍の中で述べています。 いったいどういうことでしょうか? 書籍中の例をちょっと変えて考えてみます。 マイクロサービスアーキテクチャでECサイトを作る(オーケストレーション編) ECサイトをマイクロサービスアーキテクチャで作ることを考えてみ

    マイクロサービスアーキテクチャにおけるオーケストレーションとコレオグラフィ - Qiita
  • エンジニアなら知っておきたい、絵で見てわかるセキュア通信の基本 - Qiita

    TLS 1.3は現在策定中ですが、 前方秘匿性 の問題から RSAのみ を用いた鍵委共有が禁止になる見込みです。(詳細は後述します) HTTPSとは 次に、HTTPSです。 HTTPS - Wikipedia HTTPS(Hypertext Transfer Protocol Secure)は、HTTPによる通信を安全に(セキュアに)行うためのプロトコルおよびURIスキームである。 厳密に言えば、HTTPS自体はプロトコルではなく、SSL/TLSプロトコルによって提供される セキュアな接続の上でHTTP通信を行うこと をHTTPSと呼んでいる。 とのことです。 HTTPの説明を割愛するとすれば、「SSL/TLSでセキュアにHTTPをやる」というだけの説明で済んでしまいます。 最近では個人情報等の観点から全てのサイトをHTTPSにするような動きが見られますが、元々HTTPSが使われやすかった

    エンジニアなら知っておきたい、絵で見てわかるセキュア通信の基本 - Qiita
  • 綺麗なAPI速習会 - Qiita

    Wantedly Engineer blogに速習会資料を閲覧向けに再編しました! ぜひご覧いただけると幸いです! 記事は、綺麗なAPI速習会@Wantedlyの資料として作成されたものです。 同時にこちらのコードも参照してください。 マイクロサービス 流行りのマイクロサービス、何がいいのか 各々自由な言語やArchitectureでサービスを立てられる 障害の影響が部分的 変化に強い 個別デプロイ etc... マイクロサービス化をすすめるにあたり、やりとりは全てAPIで行う 内部のAPIであっても外部に公開できるようなクオリティのAPIを作成し、それを元にサービスを作っていくことが重要 APIGatewayとBFF API Gateway Pattern 公式サイトより 「見た目はモノリシック、実装はマイクロサービス」 一箇所見に行けば全てのAPIを見つけられる 細かい権限管理も可

    綺麗なAPI速習会 - Qiita
  • 社内ISUCONノウハウ 大公開 - Qiita

    普段はSkyWayの開発・運用をしている@iwashi86です。2015/7/15(金)に、@renjikariと協力して、NTTコミュニケーションズの1つの部署にて社内ISUCONを開催いたしました。 記事では、社内ISUCONを開催するにあたり考えた内容・取り組んだ内容・その結果などを紹介します。 自社でISUCONを開催したい場合などに、記事の内容が参考になるかと思います。 開催に向けた目的 大きく以下の2点を目的としました。 エンジニア技術力向上 エンジニアのモチベーション向上 目的達成に向けて、弊社は通信事業者であることから、開催方針や準備事項に多少の工夫を加えています。 開催方針 ISUCONは、主にWeb系のインフラエンジニア・アプリケーションエンジニアの間で知名度が高いと思いますが、弊社には様々な領域での業務があり、Web系以外のエンジニア(例:ネットワークエンジニ

    社内ISUCONノウハウ 大公開 - Qiita
  • Luaで { string:byte } が遅い件 - Qiita

    例 たとえば、文字列を1文字ずつ変換してtableの配列にぶちこむロジックなのですが 1文字ずつ実直にループしてtable化 { string:byte } 形式 という2パターンで比較してみました。 以下の様なスクリプトです。 -- display time function time(title, block) local st = os.clock() block() local ed = os.clock() print(title .. ": " .. ed-st.. " sec") end -- 速い local function _string2bytearray_fast(data) local i = 1 local t = {} for i=1, string.len(data) do t[i] = data:byte(i) end return t end -- 遅い

    Luaで { string:byte } が遅い件 - Qiita
    toritori0318
    toritori0318 2016/06/28
    メモ
  • OAuth 2.0 + OpenID Connect のフルスクラッチ実装者が知見を語る

    はじめに この文書では、OAuth 2.0 + OpenID Connect サーバーをゼロから一人で実装した開発者(私)が、得られた知見について書いていきます。基的には「実装時に考慮すべき点」を延々と述べることになります。 そのため、この文書は、「素早く OAuth 2.0 + OpenID Connect サーバーを立てる方法」を探している方が読む類のものではありません。そのような情報をお求めの方は、「Authlete を使って超高速で OAuth 2.0 & Web API サーバーを立てる」を参照してください。そちらには、「何もない状態から認可サーバーとリソースサーバーを立て、アクセストークンの発行を受けて Web API をたたいて結果を得る」という作業を、所要時間 5 ~ 10 分でおこなう方法が紹介されています。 文書のバイアスについて 私は、OAuth 2.0 + Ope

    OAuth 2.0 + OpenID Connect のフルスクラッチ実装者が知見を語る
  • ロシアの天才ハッカーによる【新人エンジニアサバイバルガイド】 - Qiita

    弊社に5年間在籍していたロシアの天才ハッカーが先日退職しました。 ハッキング世界大会優勝の経歴を持ち、テレビ出演の経験もある彼ですが、正直こんなに長く活躍してくれるとは思っていませんでした。彼のようなタレントが入社した場合、得てして日の大企業にありがちな官僚主義に辟易してすぐに退職するか、もしくはマスコットキャラとして落ち着くかのどちらかのケースがほとんどなのですが、彼は最後まで現場の第一線で活躍してくれました。 そんな彼が最後に残していった退職メールがなかなか印象的だったので、その拙訳をここに掲載します(転載について人同意済み。弊社特有の部分は一部省いています。) ああ、なんという長い旅だったろう。この会社で5年間もセキュリティを担当していたよ(諸々の失敗は許してくれ) 俺は他の退職者のように面白いことは書けないが、私のこの退職メールを読んでくれている人、特に新人エンジニアのために、

    ロシアの天才ハッカーによる【新人エンジニアサバイバルガイド】 - Qiita
  • Linuxパフォーマンス調査などで使うコマンドメモ - Qiita

    パフォーマンスなどの調査をする時に利用する便利コマンドメモ。 これないぞ、あれないぞなどあると思いますがとりあえずなどを参考にまとめたものをピックアップしています。 参考 [24時間365日] サーバ/インフラを支える技術 ‾スケーラビリティ、ハイパフォーマンス、省力運用 (WEB+DB PRESS plusシリーズ) 絵で見てわかるシステムパフォーマンスの仕組み CPU使用率やメモリなど全体の概要把握 top デフォルトでは3秒ごとにOSで利用しているプロセスの数や状態、またOS全体のシステムリソース状況が分かります。 パフォーマンスが悪い場合にOS全体としてどのリソースの利用が多いのか(CPU負荷なのかメモリ利用率が高いのか)などの判断に有用だと思われます。 top - 22:36:56 up 28 min, 2 users, load average: 0.00, 0.02, 0.

    Linuxパフォーマンス調査などで使うコマンドメモ - Qiita