タグ

2015年12月3日のブックマーク (23件)

  • ページ表示速度をPhantomJSで計測してZabbixに記録する - Qiita

    Webページの表示速度って大事ですよね。Googleの検索順位にも影響が出るっていうし、なによりユーザが見たいと思った時に、遅くてなかなか見られないというのは単純に機会損失になります。じゃあ表示速度を早くしようとなるわけですが、そこらへんはわりとベストプラクティスみたいなのが語られまくってますね。 ちょっと古いですが僕が昔か書いたWebフロントエンド表示速度、最速化手法まとめみたいなのとか。 で、早くする技工的なものは良いんですが、一番大事なのは計測すること。これですね。普段、どれくらいの表示速度で、揺らぎがあるのかないのか、どこかの時点で遅くなっていないかなどを把握する必要があります。 サイト表示速度の監視 サイトの表示速度を計測してくれるナイスなサービスがいくつかあります。 pingdom newrelic ruxit HAPPY APPS ALERT BOT Status Cake

    ページ表示速度をPhantomJSで計測してZabbixに記録する - Qiita
  • AWS再入門 Amazon CloudFront編 | DevelopersIO

    はじめに 当エントリはDevelopers.IOで弊社AWSチームによる2015年アドベントカレンダー 『AWS サービス別 再入門アドベントカレンダー 2015』の3日目のエントリです。 昨日2日目のエントリは大瀧の『Amazon VPC』でした。 このアドベントカレンダーの企画は、普段AWSサービスについて 最新のネタ・深い/細かいテーマを主に書き連ねてきたメンバーの手によって、 今一度初心に返って、基的な部分を見つめ直してみよう、解説してみようという コンセプトが含まれています。 日3日目のテーマは『Amazon CloudFront』です。 目次 Amazon CloudFrontとは CloudFrontの仕組み CloudFrontの基的な使い方 ユースケース 高度な機能 あわせて読みたい公式情報 さいごに Amazon CloudFrontとは Amazon Cloud

    AWS再入門 Amazon CloudFront編 | DevelopersIO
  • Redux入門 1日目 Reduxとは(公式ドキュメント和訳) - Qiita

    Redux初心者向けです。というか私が初心者です。 Reduxに触れてみようと思って、まずは公式のGithubのドキュメントでも読んでみるか、と自分へのメモも兼ねてざっくりとした和訳をして行きます。 公式github Redux入門 1日目~6日目までの部分を短くまとめた記事も書きました。 ダイジェスト版 1.1 Motivation(背景) http://rackt.org/redux/docs/introduction/Motivation.html 近年、Javascriptのシングルページアプリケーションは複雑になってきてstate(状態)を管理するのはしんどくなってきた。新機能開発するのもバグ修正するのもかなり辛い。 根的に、「変化」と「非同期」を"同時"にコントロールするのは人間には無理がある。Reactはその問題に対してViewレイヤーで非同期と直接DOM操作を取り除くこと

    Redux入門 1日目 Reduxとは(公式ドキュメント和訳) - Qiita
  • Swiftのフリーランス案件まとめ!業務委託でアプリ開発案件を獲得しよう - ITプロマガジン

    近年スマホユーザーが増え続けており、2016年にはパソコンとスマホの利用率がほぼ同率になり、ここ数年はスマホ利用者の方がパソコン利用者よりも多いと言われています。 スマホ利用者が増えているということは、スマホアプリの需要が増えていることにも繋がるため、スマホアプリ開発案件の求人が増えると予測出来ます。 特に日国内で圧倒的なシェア率を誇るiPhoneについては、スマホアプリ開発者として確実に抑えておきたい分野です。 そこで記事では、iPhoneアプリ開発のネイティブ言語として圧倒的なシェア率を誇る「Swift」の案件について、求人内容から必要なスキルをまとめてご紹介していきたいと思います。 iPhoneアプリの案件に参画するのであれば、Swiftの知識は必須となりますので、どのようなスキルや経験が必要なのか理解して、効率的に案件獲得を目指しましょう。 「案件はたくさんあるはずなのに、なか

    Swiftのフリーランス案件まとめ!業務委託でアプリ開発案件を獲得しよう - ITプロマガジン
  • メールのトランザクション設計 - Qiita

    3日目で息切れしてきたので、今日は軽めな内容です。 データベース更新とメール送信の一貫性 商品購入の完了ページなど、よくデータベースを更新して、メールを送信してデータベースをコミットするという仕様があります。 データベース登録出来てないのに、完了メールを送るわけにはいかないので、これらを1トランザクションにできなきゃいけません。が、SMTPプロトコルにコミット/ロールバックの概念はありません。 さて、どう設計しましょうか、というお話です。 方式 A.DBトランザクション後にメールを送る 同一トランザクションはあきらめ、データベースを先にコミットし、その後でメールを送る、という設計です。 メール送信でエラーになったら、データベースには書き込めているので、メールだけ再送するように仕組みを作ったりします。 以下のようなイメージです。 public class OrderController {

    メールのトランザクション設計 - Qiita
    clavier
    clavier 2015/12/03
  • AWS ELB配下にあるインスタンスに対しserverspecでテスト・管理する方法 - nigoblog

    serverspecはよく使っているのですが、ある状態をチェックしたいとき、その自動化に役立ちます。 例としてcrondやnginxのステータス確認などがそれにあたるかと思います。 これまでは ssh '対象ホスト' /etc/init.d/crond statusのようにやっていました。 これもサーバーが1台であったり、確認することが1つであればそこまでめんどくさくはないのですが、複数台で、複数のことがらをチェックするのは結構大変です。 なので自動化したい!っていうことなのですが、単純な使い方ならこちらの記事を参考に 一番参考になるのはなんだかんだで公式ドキュメント!DevOpsのためにチェックすべきドキュメント3選! - nigoblog serverspec - Home serverspecは基的に ~/.ssh/configの内容を参考に動きます。 その際、ELB配下で固定IP

    AWS ELB配下にあるインスタンスに対しserverspecでテスト・管理する方法 - nigoblog
  • Web開発の未来 – React、FalcorおよびES6 | POSTD

    この記事でWeb開発の未来を垣間見ることができるでしょう。UIの構築やサーバ、データ・エンドポイントの新しい見解を得ることができると思います。ここで、ブラウザとサーバコードの両側を含めたフルスタックな話をしていきます。これを読めば、 完全に機能するGitHubリポジトリ で紹介されたすべてのコードの検証や実行ができるようになります。皆さまが開発者として次の資質を持っていることを前提に話を進めていきます。 JavaScript中級者 HTML中級者 クライアント/サーバ間通信の基礎知識 JSONの基礎知識 Node.jsの基礎知識 上の知識がなくても、 おそらく この記事の進行についていけるでしょう。しかし、知識がないと私の紹介するコードを現実的なシナリオあるいは重要なシナリオに応用するのは難しいでしょう。インターネットは情報の宝庫なので、理解に必要な概念などをたくさん提供してくれます。必要

    Web開発の未来 – React、FalcorおよびES6 | POSTD
  • golang.org/x/net/websocketの使い方とkuiperbelt - Qiita

    import ( "io" "golang.org/x/net/websocket" ) func EchoHandler(ws *websocket.Conn) { io.Copy(ws, ws) } *websocket.Connはio.ReadWriteCloserが実装されており、クライアントから来たWebSocketのメッセージは*websocket.Conn.Readで読むことができ、また*websocket.Conn.Writeで送ることができます。なので、io.Copyで逐次読みだして同じ内容をまた書き込むことで簡単にecho serverを書くことができます。 これをサーバに組み込むのも簡単です。 import ( "net/http" ) func main() { http.Handle("/echo", websocket.Handler(EchoHandler))

    golang.org/x/net/websocketの使い方とkuiperbelt - Qiita
  • Swiftの非同期処理を簡単に書けるBrightFuturesをコード例を多用して解説する - Qiita

    Swiftの非同期処理を非常に簡単に書けるBrightFuturesですが、日語の記事があまりないので、応援の意味も込めて書いてみようと思いました。 最新版である、3.1.2 の解説になります。 第一部:基的な説明 簡単な例 READMEにもありますが、この例がまずわわかりやすいと思うので。 下記の例では、logInとfetchPostsで非同期処理が行われます。 BrightFuturesを使わない場合 User.logIn(username, password) { user, error in // (A) if !error { Posts.fetchPosts(user, success: { posts in // (B) // do something with the user's posts }, failure: handleError) } else { hand

    Swiftの非同期処理を簡単に書けるBrightFuturesをコード例を多用して解説する - Qiita
  • Swiftを書く時に気をつける小さな違い - Qiita

    はじめに Githubが公開しているSwiftコーディング規約をベースにコードを書いています。 この規約と方針が合わない場合は、参考にならないかもしれません。 Access Control 外部から値の取得・保存をするプロパティはpublicに、外部から単に情報を取得したい場合はpublic read onlyに、それ以外は出来るだけprivateにするのが良い設計だと思います。 【追記】ライブラリを作る方はpublicが必要となりますが、モジュール内で完結する際にはデフォルトのinternalで十分です。 getterもsetterも公開するプロパティ

    Swiftを書く時に気をつける小さな違い - Qiita
  • コンテンツキャッシュとVaryヘッダとnginx - Qiita

    Varyヘッダは前段のキャッシュサーバに対して、指定したヘッダの内容ごとにキャッシュを分ける必要があることを伝えるためのものです。例えばサーバがVary: Accept-Encodingをレスポンスヘッダに付加しておくと、キャッシュサーバはAccept-Encodingヘッダの内容に応じたキャッシュを保持します。 こうすることでクライアントのAccept-Encodingヘッダの内容に応じたキャッシュデータをキャッシュサーバは返すことができるというわけです。 nginxにおけるgzip圧縮とVaryヘッダ さて、題です。上記のような事情からかApacheのmod_deflateやh2oなんかはコンテンツのgzip圧縮を有効にすると、自動的にVary: Accept-Encodingをレスポンスヘッダに付加します。一方我らがnginxは設定ファイルにgzip_vary on;と書かないとV

    コンテンツキャッシュとVaryヘッダとnginx - Qiita
  • 【大規模スマホゲー】Python未経験エンジニアとの最初の1ヶ月OJTメモ - Qiita

    3. Python環境構築 Python の環境構築方法は複数存在しますが、便利なvirtualenv + PyCharm + bpython で構築する手順に沿って作業してもらいました。 virtualenv + virtualenvwrapper virtualenv を導入すると、複数のPython環境を簡単に構築・切り換えできるようになります。たとえばコマンド1つで Python2.7 + Django1.5環境と Python3.5 + Django1.7環境をworkon コマンド1つで切り替えられます。 # install sudo easy_install pip sudo easy_install virtualenv sudo easy_install virtualenvwrapper pip install pbr sudo easy_install virtual

    【大規模スマホゲー】Python未経験エンジニアとの最初の1ヶ月OJTメモ - Qiita
  • Go言語で REST API + マイクロサービス - Qiita

    Go その2 Advent Calendar 2015 2日目です。 今日書くこと APIを提供するためのコード APIを利用するためのコード マイクロサービス (・∀・)ィィイイ!! かもしれない やれなかった / この記事には書いていないこと 以下サンプルで利用するコードは こちら。 お手元で起動する1 ための手順は READMEをご覧ください。 APIを提供するためのコード Go言語には APIのためのよさげなフレームワークはありますが、 今回はそれらを使わずともかんたんに APIサーバが作れることをお伝えしたく。 ベースとなっている元ネタは A RESTful Micro-Framework in Go これなのですが ここから、やりたいことができるように変えていった結果をサンプルに、 どうすれば APIサーバが書けるのかを記します。 まず、APIのエンドポイントが実装すべきインタ

    Go言語で REST API + マイクロサービス - Qiita
  • フリーで使用できる HTML&PSDテンプレートまとめ「20 Fresh and Free HTML and PSD Templates plus GUI Packs December 2015」

    フリーで使用できる HTML&PSDテンプレートまとめ「20 Fresh and Free HTML and PSD Templates plus GUI Packs December 2015」 テンプレートを使用することで、デザインのクオリティを一気に高めることができると共に、コスト面の削減、制作スピードのアップにもつながります。そんな中今回紹介するのは、フリーで使用できるHTML&PSDテンプレートまとめ「20 Fresh and Free HTML and PSD Templates plus GUI Packs December 2015」です。 Aisha-HTML5 Responsive Template | ShapeBootstrap 最新のデザイン性が活かされた、高いデザイン性のあるテンプレートがまとめられています。気になったものをピックアップしましたので下記よりご覧く

    フリーで使用できる HTML&PSDテンプレートまとめ「20 Fresh and Free HTML and PSD Templates plus GUI Packs December 2015」
  • GitHub - brianc/node-sql: SQL generation for node.js

    //require the module var sql = require('sql'); //(optionally) set the SQL dialect sql.setDialect('postgres'); //possible dialects: mssql, mysql, postgres (default), sqlite //first we define our tables var user = sql.define({ name: 'user', columns: ['id', 'name', 'email', 'lastLogin'] }); var post = sql.define({ name: 'post', columns: ['id', 'userId', 'date', 'title', 'body'] }); //now let's make a

    GitHub - brianc/node-sql: SQL generation for node.js
  • Go言語に継承は無いんですか【golang】 - DRYな備忘録

    困った 継承が無いのは困った。共通メソッドとかどうすりゃええねん的な。 前回のダックタイピングって一体なんなのよ【golang】 - DRYな備忘録に引き続き、めっちゃ参考にしたのはこれ Go言語における埋め込みによるインタフェースの部分実装パターン - Qiita みんなのGo言語【現場で使える実践テクニック】 作者: 松木雅幸,mattn,藤原俊一郎,中島大一,牧大輔,鈴木健太,稲葉貴洋出版社/メーカー: 技術評論社発売日: 2016/09/09メディア: 大型この商品を含むブログ (3件) を見る 埋め込み(embed)っていうのがあるのだ golangはstructの定義にstructの定義を「埋め込む(embed)」ことができる。それはプロパティを持たせるのとは違う。(継承に近い、が、ダックタイピングと合い重なって色々できそうな予感ある) package main import

    Go言語に継承は無いんですか【golang】 - DRYな備忘録
  • Go http.RoundTripper 実装ガイド - Qiita

    こんにちわ、ワカルのアドベントカレンダー2日目を担当する包です。 最近はGoばかり書いているので、Goネタです。 外部への http アクセスをする時に構造を理解しておくと便利な、http.RoundTripper について書きます。 http.RoundTripper とは Go で、外部にhttpアクセスするときには、 net/http パッケージにある、 http.Client を使います。 また、いろいろなAPIのクライアントライブラリの中でも殆どの場合 http.Client が使われていて、定義は以下のようになっています。(一部コメント省略) type Client struct { // Transport specifies the mechanism by which individual // HTTP requests are made. // If nil, Def

    Go http.RoundTripper 実装ガイド - Qiita
  • PHP初心者が仕事で躓いた4つの罠 - pixiv inside [archive]

    こちらはピクシブ株式会社 Advent Calendar 2015の2日目の記事です。 こんにちは。Vimエンジニアの kana です。 さて、皆さんもご存知の通り、WebサービスpixivにはPHPが使用されています: PHPについては様々な噂を聞き及んでいた為、 これまでPHPとは関わらないように注意して過ごしてきましたが、 pixiv.netの開発ではPHPを避けて通ることは出来ません。 仕方なくPHPを使うことになる訳ですが、 実際に使ってみると……これが予想していた以上に様々な方向から毎日新鮮な驚きを届けてくれます。 今回は実際に遭遇したPHP初心者が躓くポイントを幾つか紹介しようと思います。 switch の中で continue したら switch の直後に飛ぶ 大量のデータをループでぶん回して処理するのはよくある話です。 その中で特定の種類のデータについては処理をスキッ

    PHP初心者が仕事で躓いた4つの罠 - pixiv inside [archive]
  • Swiftの弱参照について - Qiita

    弱参照についてのメモ(Swiftに限った話ではないかもしれません) 弱参照のインスタンスは、参照カウントが1になったら自動的にnilになるようです Hogeクラスにプロパティtempについてテストしてみました 強参照 class Temp { } class Hoge { var temp: Temp? init(t: Temp) { temp = t } } var t:Temp! = Temp() var h:Hoge! = Hoge(t: t) t = nil print(h.temp)

    Swiftの弱参照について - Qiita
  • Consulがたまに暴れている件について - Qiita

    現象について 日に1、2回ほどこんなログが出力される。 どこか(不確定)のノードが一時的にFailし、すぐにJoinし直す。 現象としては 以前 に書いたのと似てはいるが、頻度が低い。たまに起こる程度。 2015/11/30 06:09:25 [INFO] memberlist: Marking hogenode as failed, suspect timeout reached 2015/11/30 06:09:25 [INFO] serf: EventMemberFailed: hogenode xxx.xxx.xxx.xxx 2015/11/30 06:09:25 [INFO] consul: member 'hogenode' failed, marking health critical 2015/11/30 06:09:27 [INFO] serf: EventMemberJ

    Consulがたまに暴れている件について - Qiita
  • Lambda Functionのバージョン・エイリアス運用方針 #アドカレ2015 | DevelopersIO

    丹内です。 掲題の通り、モバイルのバックエンドとしても期待されているAWS Lambdaを継続的に使う際に欠かせない、リリース周りについて考えてみます。 概要の説明 先日の勉強会での発表でLambdaをProduction環境にデプロイした例をお話しました。 しかしながら実務では「デプロイしたらそれっきり」というものは少なく、ビジネスやスケールの変化に伴いコードにも変更が発生します。 日々発生する変更を安全にデプロイし、問題があったらすぐロールバックできるということが、継続的なソフトウェア開発には必要です。 Lambda Functionにはバージョニングとエイリアスという機能が、これを使うことで、Blue-Green Deploymentのようにデプロイやロールバックが可能になります。 以下の図をご覧ください。 この図は、バージョニングとエイリアスを使った場合のデプロイ例を示しています。

    Lambda Functionのバージョン・エイリアス運用方針 #アドカレ2015 | DevelopersIO
  • すごく長い行を読む場合の注意点 - Qiita

    Goで 1行 1行読み取って処理をしたいときは, bufio.Scannerを使うのが推奨されています. しかし bufio.Scannerにはひとつ欠点があり, 長すぎる行が読めないという問題があります. 最長で MaxScanTokenSize(64 * 1024)バイトしか読めず, これ以上長い行を読ませようとするとエラーが返ります. この値は constで定義されているため変更できません. また NewScanner的な関数の引数にサイズを与えて独自のバッファサイズを設定するということもできません. そのため長い行を読む場合は今のところ bufio.Scannerを使うことはできません. 追記 開発版には bufio.Scanner.Buffer()メソッドが追加され, ユーザ定義のバッファが Scannerに設定できるようです. これを使えば上限がわかる場合は Scannerだけ

    すごく長い行を読む場合の注意点 - Qiita
  • iOS 9で追加されたNSLayoutAnchor使うと簡単にわかりやすく間違えずにNSLayoutConstraint(制約)が作れます【Auto Layout】 - Qiita

    iOS 9で追加されたNSLayoutAnchor使うと簡単にわかりやすく間違えずにNSLayoutConstraint(制約)が作れます【Auto Layout】XcodeiOSAutoLayoutSwiftiOS9 NSLayoutAnchorで制約(NSLayoutConstraint)を作る 『アプリ道場 Advent Calendar 2015』3日目は「三度の飯よりAuto Layoutが好き」(いや…そこまでは無理か…)な、ゆこびん(@yucovin)です。 そもそもイラストレイター兼デザイナーなので、アプリの開発をしていても、見た目の要素をどうやって作るかが一番の感心どころというか触れずにはいられないというか…。 と、いうことで!iOS 9で追加された、簡潔で読みやすくて間違えづらい新しいAuto Layoutのクラス、NSLayoutAnchorについてまとめます。 ※な

    iOS 9で追加されたNSLayoutAnchor使うと簡単にわかりやすく間違えずにNSLayoutConstraint(制約)が作れます【Auto Layout】 - Qiita