タグ

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

  • WWDC17で新しく発表された画像フォーマットHEIFを使ってみた - Qiita

    HEIFとは HEIFとはHigh Efficiency Image File Formatの略でMPEGよって開発された画像フォーマットの標準規格です。ちなみにヒーフと呼ぶ場合が多いようです。iOS11から公式にサポートされ、JPEG以上の圧縮率、深度情報、透過処理、タイル化、アニメーションなどJPEGにはなかった機能や改善点がある新しい画像フォーマットです。JPEGなどとの詳しい差分はwikiに載っています。 H.265/HEVCとは まずHEIFを語る上で避けて通れない事として、H.265/HEVC(High Efficiency Video Coding)があります。ISO/IECのMPEGとITU-TのVCEGによる研究開発チームJCT-VC によって提案され、ITU-Tは2013年に承認されました。 HEIFはHEVCのコーデックが選択可能(というかこれ以外ありえない?)でHE

    WWDC17で新しく発表された画像フォーマットHEIFを使ってみた - Qiita
  • GaurunでのGCM(FCM)とAPNsの設定方法 - Qiita

    GaurunのGCMとAPNsの設定に苦戦したのでメモ。 【動作環境】 Ubuntu14.04 Gaurun 0.8.1 GCM(FCM)のAPI Keyを発行する FirebaseからAPIキーを発行する。 https://firebase.google.com/docs/cloud-messaging/server?hl=ja#http-- 上記ページにも記載されているが、 APIキーが正しいものかを確認するには下記コマンドを実行する。 401エラーが出なければOK。 api_key=YOUR_SERVER_KEY curl --header "Authorization: key=$api_key" \ --header Content-Type:"application/json" \ https://fcm.googleapis.com/fcm/send \ -d "{\"reg

    GaurunでのGCM(FCM)とAPNsの設定方法 - Qiita
  • GoのnetパッケージにおけるIPアドレスの内部表現 - Qiita

    // IP address manipulations // // IPv4 addresses are 4 bytes; IPv6 addresses are 16 bytes. // An IPv4 address can be converted to an IPv6 address by // adding a canonical prefix (10 zeros, 2 0xFFs). // This library accepts either size of byte slice but always // returns 16-byte addresses. package net // IP address lengths (bytes). const ( IPv4len = 4 IPv6len = 16 ) // An IP is a single IP address,

    GoのnetパッケージにおけるIPアドレスの内部表現 - Qiita
  • nginx on AWS Lambdaでサーバレスサーバ - Qiita

    気が付けば2016年も末…サーバレスがブームだった時代は過ぎ、なんだかサーバレスが当たり前の時代になりましたね。じゃあnginxもいい加減サーバレスになってもいいと思いませんか? なにが必要だったか nginxにはOpenRestyという、いい感じにモジュールが追加されたディストリビューション(に近いもの)があります。 OpenRestyはどれくらいお気軽なウェブアプリ環境なのか。 素のnginxの機能はそのままに、luaで高速に動的な結果を返すことができ、簡単なアプリケーションであれば、これだけで作ることができます。あまり大きな規模のアプリケーションを作るのに向いているとは思わないですが、DBにアクセスするだけとか、内部APIに制限を掛けて外部に出すとか、リクエスト形式を変えるとか、そういうときに大変便利なサーバです。(それ以上のこともできます) 一方でAWSにはAWS Lambdaとい

    nginx on AWS Lambdaでサーバレスサーバ - Qiita
  • go-bindataで実行バイナリにWeb UIをバンドルする〜slackboardの場合〜 - Qiita

    個人的にGoはミドルウェアやコマンドラインツールの開発によく利用していますが、その理由の一つにシングルバイナリなのでデプロイが楽、というのがあります。一方で、(特に)サーバ系のミドルウェアだとちょっとしたWeb UIを付けたくなることがあります。こうなると、シングルバイナリのほかにHTMLCSSJavaScriptといったリソースファイルが多数付いてくるのでちょっと面倒です。 そこでgo-bindataを使って実行バイナリにそれらのリソースファイルをくっつけてしまうという方法があります。go-bindataは各リソースファイルの内容をGoのコードとして生成し、Asset()という関数を呼び出すことで内容を取得することができます。 go-bindataによるコード生成 まずは、go-bindataをインストールします。

    go-bindataで実行バイナリにWeb UIをバンドルする〜slackboardの場合〜 - Qiita
    cubicdaiya
    cubicdaiya 2016/12/05
    go-bindata活用例
  • OpenResty で証明書の動的読み込み - Qiita

    ssl_certificate_by_lua* ディレクティブを使用することで、証明書を動的に読み込ませることが可能です。 例 クライアントから送られてきた ClientHello の SNI 拡張に含まれているサーバ名に対応する証明書を読み込んでいます。 対応する証明書が見つからない場合は ServerHello を返さずに、Internal Error (80) のアラートが返ります。 http { lua_shared_dict certs 10m; server { listen 10443 ssl; ssl_protocols TLSv1.2; ssl_certificate certs/www.example.com.pem; ssl_certificate_key certs/www.example.com.key; ssl_session_tickets on; ssl_s

    OpenResty で証明書の動的読み込み - Qiita
    cubicdaiya
    cubicdaiya 2016/12/04
    ssl_certificate_by_luaだ
  • 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
  • 全盛期のJeff Dean伝説 - Qiita

    Jeff Deanとは GoogleのSenior Fellow. Googleの基盤となる分散システムのほぼ全てに中心的に関わり、圧倒的なエンジニアリング能力を発揮したらしい。あまりにも尊敬されているため、IT業界において全盛期のイチロー伝説のような破天荒なホラ話のネタにされている人。 日語での紹介がなさそうだったので意訳してみました。 元ネタはこちら。多すぎるのでGoogle社員じゃない人には面白みがわかりにくそうなもの、面白みが被っていると私が判断したものなどは省いてあります。 NP問題 Jeff DeanがGoogleの採用面接を受けたときに、もしP=NPが成り立つとしたらどうなるかを問われて"P=0かN=1ですね"と答えた。試験官が笑い終わりさえしないうちに彼はGoogleのpublic keyを突き止め、private keyをホワイトボードに書き終わった。 Jeff Dea

    全盛期のJeff Dean伝説 - Qiita
  • KeynoteのスライドをSlideShareにアップロードすると日本語が表示されない問題 - Qiita

    追記: 一番オススメの対処法 (忙しい人向け) @a_bicky さんがご提案された次の方法で、とりあえずこの問題は回避できます! 情報ありがとうございます! LANG=C LC_ALL=C sed -i '' s'|/Registry (Adobe) /Ordering (Japan1) /Supplement [0-9]|/Registry(Adobe) /Ordering(Identity) /Supplement 0|g' /path/to/pdf 詳細: 日語を含む Keynote を slideshare にアップロードする - あらびき日記 SlideShare を引き続き使う場合、 @koic さんの記事『SlideShare に Keynote からの PDF をアップロードする際のスクリプト』にあるようにコマンドとしてまとめておくと便利そうです 追記の追記: ブラウザ

    KeynoteのスライドをSlideShareにアップロードすると日本語が表示されない問題 - Qiita
  • AMP対応でwidth/heightを指定していない画像が沢山あるのをnginx + ngx_small_lightで、どうにかする - Qiita

    AMP対応でwidth/heightを指定していない画像が沢山あるのをnginx + ngx_small_lightで、どうにかするHTMLnginxAMP AMP⚡️対応していますか? AMP自体は今はシンプルなルールなので作るだけなら簡単ですが、既存のWebサービスに導入するとなると結構厄介な部分があります。僕が困ったのは、 width / height属性を指定していない画像が沢山ある これです。 AMPでは、画像を表示するタグ<amp-img>のwidth / height属性は指定必須なんです。 WordPressやMovableTypeであれば、デフォルトで属性値が入っていたような気がしますが、オリジナルのCMSだったり、それ以外のベタなページであったり。表示パフォーマンス的にも指定してあったほうが良いので、手抜きの負債なんですが…🙇🏻 整理すると… 問題点 アスペクト比が

    AMP対応でwidth/heightを指定していない画像が沢山あるのをnginx + ngx_small_lightで、どうにかする - Qiita
  • nginxのdynamic modules - Qiita

    以前から家のブログ等でもアナウンスされていたnginxのモジュールの動的組み込みの仕組みが先日リリースされた1.9.11で入りました。昨年のnginx.confでも中の人によるDynamic Modules Developmentという発表がありましたが、ほぼこちらに沿う形で導入されています。 追加されたconfigureオプション 以下はnginx-1.9.10と1.9.11でのconfigure --helpの差分です。 --- 1.9.10 2016-02-10 09:47:05.000000000 +0900 +++ 1.9.11 2016-02-10 09:47:18.000000000 +0900 @@ -3,6 +3,7 @@ --prefix=PATH set installation prefix --sbin-path=PATH set nginx binary pa

    nginxのdynamic modules - Qiita
    cubicdaiya
    cubicdaiya 2016/02/10
    書いたよ。
  • Let's Encryptで自動更新したらSlackに通知したかった - Qiita

    Let's Encryptの証明書は有効期限が3か月で切れちゃうので、折を見て更新しなければなりません。 都度、ちゃんと思い出して更新作業をすればいいのですが、人は忘れてしまうものです。僕は忘れます。 というわけで、ほっといても月一くらいで勝手に更新していてほしいです。ついでに更新したら更新したよって通知だけでもSlackに送ってほしいです。 Slackへの送信部分は、Slackboard (https://github.com/cubicdaiya/slackboard)を使用させていただきました。 Slackboardについては以下の記事を参照。 Slackboard〜Slackプロキシサーバ in Go〜 ちなみに環境は以下の通りです。 CentOS 7.2 Slackboard 0.6.2 golang 1.5.3 Nginx 1.9.9 SlackへPostするIncoming-

    Let's Encryptで自動更新したらSlackに通知したかった - Qiita
    cubicdaiya
    cubicdaiya 2016/02/04
    Slackboardだ
  • Go1.6でポインタをcgoの関数へ渡す際に発生するcgoCheckPointerを回避する方法 - Qiita

    go1.6 はまだβなので以下の回避方法も変わる可能性があります。(おそらくそのままだと思いますが) そのため、下記の点を注意する必要があります cgoの関数の引数経由以外の方法でGoポインタをCに渡した場合は、そのGoポインタが指すメモリは保護されない cgoの関数から返ってくると保護されていたGoポインタの保護も外れるため、cgoの関数内でGoポインタをどこかに保存して次に呼ばれたcgoの関数内で再利用とかはできない GoポインタへのGoポインタをcgoの関数に渡すのは基ダメ 保護されるのは引数で渡されたGoポインタが指す先のみで、その指す先の更に指す先は保護されない go1.6beta2では、cgo関数呼び出し時のチェックに引っかかってcgo argument has Go pointer to Go pointerというエラーメッセージが表示される Cで確保されたメモリへのポイン

    Go1.6でポインタをcgoの関数へ渡す際に発生するcgoCheckPointerを回避する方法 - Qiita
    cubicdaiya
    cubicdaiya 2016/01/25
    これはつらい
  • お前らもさっさとハマって泣くべきCentOS7の落とし穴4つ - Qiita

    CentOSの6から7への移行時、何度かつまづいた箇所があったので紹介します。 前提知識 6と7のミドルウェアの違いやSystemdの基的な使い方はこのあたりを参考にしてください。 CentOS6とCentOS7の比較表 保存版 CentOS7とCentOS6との違いまとめ 落とし穴1: 消える/tmp CentOS7にtmpwatchは入っていません。 だからといって何も考えずに/tmp下にキャッシュ等の一時ファイルを吐き出していると、 いつの間にか消去されていて泣くハメになります。 CentOS7にはtmpwatchはありませんが、その代わり systemdsystemd-tmpfiles-clean.timer がその役割を担っています。 このサービスはtmpwatchと同じように、/tmp下に使われていないファイルを一定期間経つと削除します。 消されたくないファイルがあるのな

    お前らもさっさとハマって泣くべきCentOS7の落とし穴4つ - Qiita
  • HTMLフォームでのクレジットカード情報の自動入力について調べた - Qiita

    「なぜ日のウェブサイトでは1Passwordでクレジットカード番号を一発入力できないのか?」という素朴な疑問から、少し調べてみました。なお1Passwordはパスワード管理ソフトであり、またウェブサイトのフォームにパスワードやクレジットカード情報を一発入力するためのブラウザ拡張機能です。 クレジットカード番号入力フォームに関する標準を探したところ、IETFとWHATWGの取り組みを見つけることができました: Electronic Commerce Modeling Language (ECML), Version 2 Specification by IETF HTML Standard: 4.10.19.8 Autofill by WHATWG こういった標準に準拠することで、1Passwordのような支援技術(assistive technology)にフォームの「意味」(seman

    HTMLフォームでのクレジットカード情報の自動入力について調べた - Qiita
  • Scalable Bloom Filtersとは一体....? - Qiita

    Wikipediaを漁っていたところScalable Bloom Filters(SBF)というデータ構造を発見してしまったので紹介します1。 参照した論文 http://haslab.uminho.pt/cbm/publications/scalable-bloom-filters SBFの説明に入る前に、Bloom Filterについて簡単に紹介します。もっとも、日語のWikipediaでも十分詳しい説明が載っていたりするのですが……。 ささっと説明 Bloom Filterはちょっと不思議な性質を持つデータ構造の一種です2。 いわゆるSetと同じ操作を提供する 要素を入れる操作と、ある要素が入っているかを調べる操作 どちらも時間計算量O(1)で実現できる ハッシュテーブルなどを用いて実装される同種のデータ型と比して、とても空間効率が良い その代わりに、ある要素が入っているかの判定を

    Scalable Bloom Filtersとは一体....? - Qiita
  • すごく長い行を読む場合の注意点 - Qiita

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

    すごく長い行を読む場合の注意点 - Qiita
  • gonp〜Goによるdiffのアルゴリズム実装〜 - Qiita

    この記事は、2015年のGo Advent Calendarの25日目の記事です。 Go Advent Calendarのその2とその3ができる前、最終日だけ空いてて滑り込みで登録したのはいいけど、なんかネタないかなーと思いつつ、自分のgithubリポジトリを漁っていたらdiffのアルゴリズムをGoで実装したやつが出てきたので紹介してみます。 gonpはGoによるdiffのアルゴリズム実装です。元々は昔々C++で書いたdtlというdiffライブラリの簡易移植で、diffを取るのに必要な以下の要素を求めることができます。 編集距離(Edit Distance) LCS(Longest Common Subsequence) SES(Shortest Edit Script) diffのアルゴリズムにはさまざまな種類があり、中でもdiffに限らず様々な用途に応用可能な動的計画法が有名です。ただ

    gonp〜Goによるdiffのアルゴリズム実装〜 - Qiita
    cubicdaiya
    cubicdaiya 2015/12/25
    書いたよー
  • nginx+luaで動作するルーティングライブラリ lua-resty-r3 を書きました - Qiita

    https://github.com/toritori0318/lua-resty-r3 nginx+lua上で動作するURLルーティングライブラリです。 lua+ffiでr3をバインディングしています。 r3(libr3)について リポジトリはこちら。 https://github.com/c9s/r3 高速なルーターライブラリということを謳っているようです。 perl/python/ruby/node.js/Haskell などのバインディングが存在しています。 書いた動機 nginx + lua でいい感じのルーティングモジュールが欲しかった 1 より高速なルーティングがしたかった ffi モジュール書いてみたかった 実装方針 libr3には様々なAPIがありますが、今回はroutingに特化したAPIのみ対応しています 2 また、マッチした時の戻り値は functionブロックのみ

    nginx+luaで動作するルーティングライブラリ lua-resty-r3 を書きました - Qiita
  • Elixir+PhoenixでAPNsを利用したPush通知を送る簡単なAPIをつくってみる - Qiita

    はじめに Advent Calendar童貞を捨てに来ました。 前提 以前"Elixir+PhoenixでGCMのAPIを叩いてPush通知を送る簡単なAPIをつくってみた"という記事で、ElixirでAndroidアプリにPush通知するWebAPIをつくったので、その続きとしてiOSアプリにPush通知するWebAPIをつくってみます。 ですので、環境構築などは前回の記事をご覧いただければと思います。 Apns4exインストール 最初張り切って自前で実装しようとした(無謀)のですが、Apns4exというよさげなライブラリがあったので、そちらを利用させていただきました。 ~mix.exsのdepsとapplicationの箇所にApns4exの設定を追加します。 defp deps do [{:phoenix, "~> 1.0.3"}, {:phoenix_ecto, "~> 1.1"}

    Elixir+PhoenixでAPNsを利用したPush通知を送る簡単なAPIをつくってみる - Qiita
    cubicdaiya
    cubicdaiya 2015/12/20
    “Elixir版gaurunつくりたい。”