oh240のブックマーク (944)

  • 阿部寛のサイトを高速化する - Qiita

    ちまたで阿部寛のサイトが早いと話題になってます。 dev.toと阿部寛のホームページどっちが速いですか? dev.toと阿部寛のホームページについてちゃんと計測させてくれ 阿部寛のサイトはベストを尽くしてるのか? それを調べるために、阿部寛のサイトを高速化させてみたいと思います。 目指すべきスピード 最速はローカルのファイルへのアクセスだと思うのでこれを目指したいと思います。 file:///C:/abe_hiroshi/index.html ChromeのDeveloper Toolでレンダリング完了が「173ms」でした。 まぁここまでは無理だな… 阿部寛のサイトはどんなもん? 速度はwebpagetest.orgで測ってみます。 レンダリング完了時間は「359ms」です。はえーな S3でホスティングしてみる サーバーを立てるほどでもないので、S3でWebホスティングしてそこにhtml

    阿部寛のサイトを高速化する - Qiita
    oh240
    oh240 2017/11/18
  • PHP コミュニティでブーメランを投げ合うのはやめよう - Frasco

    私は約7年間、PHP でプログラミングをしてきました。その間に、私が発見したもの。それはフレームワークとライブラリ(コンテンツ管理プラットフォーム周辺のエコシステムなど)、そして、PHP を選んだプログラマーたちの巨大コミュニティです。私と同じツールを使っているにせよ、いないにせよ、プログラマーたちの多くは、当の友人になりました。私が参加したカンファレンスでの基調講演の多くから判断するに、私たちはお互いに助け合い、学び、成長し、より良いソフトウェアを構築し、キャリアにおいて次のステップを踏み出すときには、一丸となってお互いをサポートしてきたと思います。そう信じているのは、私だけではないでしょう。 言語としての PHP は、「まっとう」なプログラマーたちに、皮肉を言われ、馬鹿にされ、過小評価され、批判され、嘲笑されて、最低の極みともいえるような評価を受けてきました。そのプログラマーたちは、

    PHP コミュニティでブーメランを投げ合うのはやめよう - Frasco
    oh240
    oh240 2017/11/13
    とりあえず内紛している暇あったら、PHPフレームワークの決定版はよだせという気持ちでいっぱい。Sinatra系とRails系で2つにしてくれ。
  • RubyでJavaなどのinterfaceっぽいことをしたい

    ダックタイピングだから〜、とかそういうのは承知の上で、Rubyで特定のメソッドを実装していることを明示的に表したい。 具体的には、Objective-C実装に構造を似せたRubyのプログラムを書きたい。Objective-Cで〜Delegateなどのprotocolよく使うでしょ。それ用。 ググると、テストで担保しろ、という意見があった。メタプログラミング的にmethod_missing使って特定のメソッド群があることを確認、とかもいける? 僕はとりあえず、NotImplementedErrorを投げまくるmoduleを作り、それをincludeして再定義してあげるようにした。 特定のインターフェースを実装しているんだよという宣言がある 実際にメソッドを呼ぶときに、未実装のものが呼び出されれば実行時にraiseされる というわけで、やりたいことは満たせた感じ。 #!/usr/bin/env

    RubyでJavaなどのinterfaceっぽいことをしたい
    oh240
    oh240 2017/10/12
    これgemにしてみよう
  • 「型を意識した PHP アプリケーション」を発表しました / PHP カンファレンス 2017 - Shin x Blog

    PHP カンファレンス 2017 にて「型を意識した PHP アプリケーション」を発表してきました。 発表 github.com 型宣言が付いていないコードに、スカラー型の型宣言、ドメインに特化した型の型宣言と型(クラス)の実装を行うライブコーディングをメインにしました。 ライブコーディングの部分は動画を見た方が分かりやすいです。下記の 13:00 頃からコーディングがはじめるので、こちらも合わせてどうぞ。 きっちりまとめられた資料をベースに発表するのも良いのですが、実際にコードを書いていくのを見た方がイメージも伝わりやすいですし、私自身も人がコードを書く様を見るのが好きなので、この構成にしました。 また、質疑応答の時間を長めに取りたかったので、編は少し短めにして時間が余るように調整しました。当初の内容からどんどん引き算していって、内容をシンプルにしたので、結果的には進めやすかったですし

    「型を意識した PHP アプリケーション」を発表しました / PHP カンファレンス 2017 - Shin x Blog
    oh240
    oh240 2017/10/11
    これJavaとかC#でいいだろ別に。ってならないのは、今動いているWebアプリがほとんどPHPだからだと思っている。あと、TypeScriptのようにお手軽に導入できるのが良いところ。
  • waffle.io で Issue の書き方の足並みを揃える - FAKELOG

    Issue の書き方って、個人差出るんすよね バグ報告の Issue を眺めていると、大抵、この辺のことが気になり始めるんですよ。 iOS / Android どっちで発生したんだろう? 🤔 端末の OS バージョンはいくつだろう? 🤔 DeployGate のバージョンはいくつだろう? 🤔 どの画面で、どんなタイミングで落ちたんだろう? 🤔 再現手順はあるのかな? 🤔 たまにしか起きないやつなのかな? 🤔 表示がおかしいみたいだけど、どうおかしいんだろう? 🤔 画面がチラつくらしいけど、どうチラつくんだろう? 🤔 現行バージョンでも発生するのかな? 🤔 悩みは尽きませんよね・・・。 こういった一次情報を書いて残してくれているひともいれば、書いていないひともいます。また、書いているときもあれば、書いていないときもあったりします。 バグの原因を調査するとき、これらの一次情報

    waffle.io で Issue の書き方の足並みを揃える - FAKELOG
    oh240
    oh240 2017/10/10
  • ngx_mrubyで最初のHTTPSアクセス時に自動で証明書を設定可能にするFastCertificateの提案とPoC - 人間とウェブの未来

    Let’s EncryptやACMEプロトコルによるDV証明書取得の自動化に伴い、証明書の取得と設定が簡単になってきました。 一方で、ACMEをツール化したものが増えるに従って、ACMEってそもそもどういう動きになっているのか、とか、自分たちの用途でどういう使い方がありえるのかとかが余計にわかりにくくなってきており、どこまで自動化できるかもよくわからない場合が多いのではないでしょうか。 そこで、 ドメインとAレコードの紐付けさえしていれば、最初のアクセス時に自動で証明書をとってきて、HTTPS通信にできないか というような、いわゆる FastCertificate 的な動きを実現したいと考え、ACMEの通信の中で各種処理を別のスクリプトでhookできるdehydratedとngx_mrubyを応用して実現可否も含めてPoCを実装してみました。 ※ FastContainerという考え方につ

    ngx_mrubyで最初のHTTPSアクセス時に自動で証明書を設定可能にするFastCertificateの提案とPoC - 人間とウェブの未来
    oh240
    oh240 2017/09/28
    実案件でもコレ使えそうだから、検証して使ってみるか。
  • 移動しました - SmartHR Tech Blog

    【保存版】自腹でつくる広島グルメマップ #RubyKaigi2017 - SmartHR Tech Blog

    移動しました - SmartHR Tech Blog
    oh240
    oh240 2017/09/14
  • Webページを監視して表示崩れが起きていないか検出できるE2Eテストを実装しました | Recruit Tech Blog

    お世話になります、フロントエンド担当をしている小原正大です。Webページの表示を監視して差異があった場合、どのページで表示の変化が起きているかを知ることが出来るプログラムを実装したのでそのことについて書こうと思います。 何につかったの? 僕がフロントエンドを担当しているサービス『料理サプリ』で大規模なフロントエンドコードのリファクタリング行う際に表示テストを自動化するために作成しました。『料理サプリ』はPC・スマホ合わせて大体350-400ページの表示パターンが存在する比較的規模の大きいサイトです。全ページに影響を与えるような作業は大規模な回収となり、今回のリファクタリングでは表示テストの計画などの段取りが必要でした。従来の人手によるQAでは細かいバグを見過ごしたり時間がかかり効率が悪いので、可能な限り自動化しようと考え実装しました。 実装の概要 この監視のシステムは以下の2つ実装を組合わ

    Webページを監視して表示崩れが起きていないか検出できるE2Eテストを実装しました | Recruit Tech Blog
    oh240
    oh240 2017/09/13
  • Rails ってそんなにいいかな・・・

    Rails を使ってはや10年。 Rails のことはかなりわかっている方だと思う。 だが、最近 Django (Python のウェブフレームワーク)を使いはじめて、いままで苦労して Rails を使ってきた努力は何だったのだろうと思った。 Rails だとすぐアプリが開発できると人はいう。 それは嘘じゃない・・・だが大きな犠牲を払ってだ。 RailsRuby の柔軟さを利用(悪用)して、徹底的に Ruby 言語が改変されている。 DSL が多用されている。 要するに、「レール」を外れると、どうしたらいいのかすぐわからなくなるのだ。 だから四六時中、フレームワークやプラグイン(gem)のソースコードを解読しようと格闘する羽目になる。 その点 DjangoPython らしく、フレームワークは余計なことをしない。こちらが何かしないかぎり、何も起こらない。 すべては明示的(exp

    Rails ってそんなにいいかな・・・
    oh240
    oh240 2017/08/27
  • CDN切り替え作業における、Web版メルカリの個人情報流出の原因につきまして - Mercari Engineering Blog

    日コーポレートサイトでお知らせした通り、Web版のメルカリにおいて一部のお客さまの個人情報が他者から閲覧できる状態になっていたことが判明しました。原因はすでに判明して修正が完了しております。また、個人情報を閲覧された可能性のあるお客さまには、メルカリ事務局より、メルカリ内の個別メッセージにてご連絡させていただきました。 お客さまの大切な個人情報をお預かりしているにも関わらず、このような事態に至り、深くお詫びを申し上げます。 エントリでは技術的観点から詳細をお伝えさせていただきます。 2017年6月27日 CDNのキャッシュの動作について、CDNプロバイダと仕様について確認し検証を行いました。その結果一部記述に実際と異なる箇所があり、加筆修正いたしました。 概要 メルカリWeb版のコンテンツキャッシュをしているCDNのプロバイダ切り替えを行いました。 その際来キャッシュされるべきでない

    CDN切り替え作業における、Web版メルカリの個人情報流出の原因につきまして - Mercari Engineering Blog
    oh240
    oh240 2017/08/27
    cacheを扱うので改めて勉強中
  • セキュリティ対策としての Cache-Control ヘッダについて - 理系学生日記

    今日はブラウザのキャッシュ制御の話。キャッシュについては主に性能面で語られて、情報漏洩に繋がる重要な制御であることは見逃されがちです。 CDN切り替え作業における、Web版メルカリの個人情報流出の原因につきまして | メルカリエンジニアリング 情報漏洩自体はよくないことで、被害にあってしまった人はそんなこと言ってられないけれど、その原因を包みかくさず公開することで他山の石というか、間違いなく日セキュリティ意識は向上すると思います。 ぼく自身も、みなさんも、そろそろ Cache-Control: no-cache, no-store, must-revalidate しとけば良いんやろ、というゴミのような意識を改善しなければならないということで、ここにキャッシュについてまとめてみます。 Cache の種類 ブラウザで関連するキャッシュには主に 2 つほどあります。 private cac

    セキュリティ対策としての Cache-Control ヘッダについて - 理系学生日記
    oh240
    oh240 2017/08/27
  • sidekiqを使用する際に注意したい覚え書き - アトラシエの開発ブログ

    Railsで非同期処理を行う際にデファクトになりつつあるSidekiqですが、実際の運用ノウハウや少し踏み込んだトラブルシューティングは意外とまだウェブ上にリソースが不足しているという印象があります。そこでいくつか、基的なことから少し踏み込んだ話まで、いくつか紹介したいと思います。 Sidekiqの導入・運用 Sidekiqの導入にはRedisが必要であるということはよく説明されるのですが、もう少し正確に言うとRedisをデータ保存先としてSidekiqというプロセスがスレッドベースで動きます。したがって正常にSidekiqが動くためには通常のRailsのプロセス(unicornやpassenger)のほかに、redis-serverのプロセス、Sidekiqのプロセスが動き続けていることが必要になります。(厳密に言えばSidekiqだけ動けばいいならRailsプロセスは不要です) re

    sidekiqを使用する際に注意したい覚え書き - アトラシエの開発ブログ
    oh240
    oh240 2017/08/24
  • 何をする会社なんだ・・グッドパッチは・・! - コミックDAYS-編集部ブログ-

    何をする会社なんだ・・グッドパッチは・・! - コミックDAYS-編集部ブログ-
    oh240
    oh240 2017/08/24
  • API開発で「意図せぬレスポンス」問題を防ぐ2つのコツ - KitchHike Tech Blog

    こんにちは。KitchHikeエンジニアの小川です。 KitchHikeのアプリがつい先日リリースされました! 私は主にサーバサイドのAPI設計・開発を担当していたのですが、今回はその中で特に気を配った、意図しないレスポンスを防ぐためのAPI設計の取り組みについてご紹介したいと思います。 なお、エントリはFood Service Engineers Meetup #3、第6回スタートアップRails勉強会にて発表した内容を整理したものです。併せてご参照いただければと思います。 意図せぬレスポンス問題 API開発でよくぶつかる問題のひとつは、APIのレスポンスに意図しないデータ項目が含まれてしまうことです。たとえば user リソースをレスポンスとして返すケースを考えてみましょう。 Railsの場合、最もお手軽にjsonレスポンスを返すなら as_json でしょう。ここはひとつ、何も考え

    API開発で「意図せぬレスポンス」問題を防ぐ2つのコツ - KitchHike Tech Blog
  • 決済サービスが用意している定期課金機能でWebサービスの定期課金の仕組みを作るべきでない事例をまとめた - Webuilder240's Blog

    課金決済サービスの定期課金機能は使わない方がポータビリティ高いし、 色々イレギュラーが出るので 使わない方が後々幸せというのがぼくの意見です。— {{ nick }} (@webuilder240) 2017年6月29日 そのうちこれはブログに書こうと思います。 https://t.co/p8OQWhnlwl— {{ nick }} (@webuilder240) 2017年6月29日 ということなんで、書いてみました。 決済サービスが用意してくれている定期課金の仕組みは利用しないほうがいいと個人的には思っている。 1年以上この仕組みでやってきたが、なかなか弊社案件ではちょっとつらいものがあって、今後のために色々書いておこうと思ったので書いた。 先に書いておきますが、利用している決済サービスに対しては概ね満足しており、 特定の決済サービスへの批判ということではないということをご了承いただき

    決済サービスが用意している定期課金機能でWebサービスの定期課金の仕組みを作るべきでない事例をまとめた - Webuilder240's Blog
    oh240
    oh240 2017/08/06
  • ActiveRecord4のバリデーションで複数カラムにユニーク制約を付ける方法

    usersテーブルにuser_id、item_idカラムがある時、この2つのカラムの組み合わせでユニーク制約のバリデーションを行うコードは下記の通り。 scopeの配列に値を追加すれば、3カラム以上のユニーク制約バリデーションにすることも出来ます。 上記のバリデーションではuser_idカラムにのみエラー情報がくっつくため、HTMLフォームと組み合わせて使っている場合はuser_idのフォームにのみエラー情報が表示される点に注意が必要です。 「Railsのモデルに複合一意制約を定義する方法」にもう少し詳しく書いてあります。 また、ユニーク制約のバリデーションを行う場合でも、テーブルにもユニーク制約を付けるのを忘れないようにしましょう。バリデーションだけだとレースコンディションの場合に問題が発生します。

    oh240
    oh240 2017/08/03
  • ActiveSupport::Callbacks を使ってメソッドに前処理を挟み込む - (2015年までの)odaillyjp blog

    Rails の Controller には、アクションメソッドに前処理を挟み込むための before_action というメソッドが存在します。ActiveRecord などを継承していない普通の Ruby のクラスでも簡単に前処理を挟み込めるようにしたいと思う場面がありまして、便利なモジュールがないか調べたところ、ActiveSupport::Callbacks というモジュールを見つけました。このエントリでは、このモジュールの使い方を簡単に紹介していきます。 ActiveSupport::Callbacks ActiveSupport::Callbacks ActiveSupport::Callbacks は「あるコードが実行されることをきっかけにして、別の処理を呼び出す」という処理が簡単に定義できるようになるモジュールです。エントリの冒頭で話したように「あるメソッドに前処理を挟み込む

    ActiveSupport::Callbacks を使ってメソッドに前処理を挟み込む - (2015年までの)odaillyjp blog
    oh240
    oh240 2017/07/30
  • Ruby の HTTP Client「Faraday」を使った場合の例外の扱いとリトライ処理をどうするか考えてみた - Qiita

    チームメンバー毎でも書き方が違う時があるので、どういうやり方がありそうで、どういう時にそれを適用したら良さそうかを考えたメモです。 Ruby 製の HTTP Client です。Ruby Tool Box の HTTP Client カテゴリでは 2 位なので結構使われているライブラリなのではないかと思います。 lostisland/faraday - Github 家の README を見てもらうと分かる通り、いくつかの adapter を選択できるようになっています。 また faraday_middleware を代表とした middleware といった形で拡張可能なのも特徴の一つのようです。 Qiita 内でもたくさん見つかりますね Qiita を faraday で検索 まずエラーもリトライも考慮しない書き方 response を受け取るまでは faraday の REDAME

    Ruby の HTTP Client「Faraday」を使った場合の例外の扱いとリトライ処理をどうするか考えてみた - Qiita
    oh240
    oh240 2017/07/26
  • シンボリックリンクを用いたアトミックデプロイと opcache と realpath cache - ngyukiの日記

    これまで PHP のアプリケーションのデプロイは rsync でどべーとコードを撒いていました。が、それだと新旧のコードが混在するし Capistrano とかはデフォでシンボリックリンク切り替えでアトミックなデプロイになっているし、周回遅れな感じもしますが今後は似たような方法でデプロイしたいと思います。 releases/ ディレクトリの中にリリースタグでディレクトリを掘ってコードを配置して current を最新のリリースのディレクトリへのシンボリックリンクにします。そして Apache や Nginx でドキュメントルートを current の中の公開用のディレクトリに設定します(/path/to/app/current/public とか)。 /path/to/app/ releases/ 20161213/ 20161224/ 20170101/ current -> relea

    シンボリックリンクを用いたアトミックデプロイと opcache と realpath cache - ngyukiの日記
    oh240
    oh240 2017/07/25
  • 僕らの「熱狂」に共感するエンジニア仲間募集!|オシロ株式会社

    「才能あるクリエイターを、自分たちの手で世に出したい」「ITを使えば、従来のメディアに頼らなくても、ファンの熱狂をつくることができるはずだ」――。 出版と音楽。ジャンルは違うが、四角大輔と佐渡島庸平の想いは同じだった。そんな2人が出会い、心から愛する作家・アーティストをエンパワーするために共同開発を始めたシステムが、「OSIRO」だ。いま、最も注目されているプロデューサー2人が考える、「オウンドプラットフォーム」の可能性とは。 ――まずは「OSIRO」というシステムが生まれた背景を聞きたいのですが、そもそも「オウンドプラットフォーム」って何ですか。 四角大輔(以下、四角) アーティストや作家といった、表現活動をする「個人」がコアなファンとつながる場所、というのかな。オウンドプラットフォームはざっくり言うと2つの機能をもっていて、1つは「オウンドメディア」。アーティストの活動や、作品を独自に

    僕らの「熱狂」に共感するエンジニア仲間募集!|オシロ株式会社
    oh240
    oh240 2017/07/21