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

  • Tmux 2.4 がリリースされたので気になった点 - Qiita

    CHANGES を参考に、いくつか気になる点を書き出してみました。 mode-table がなくなり、key-table に統合された 今回メインの修正点として挙げられているものです。これのせいで 2.4 にした途端、コピーモードが動かずに阿鼻叫喚です。 2.3 までは mode-table vi-copy, emacs-copy —— コピーモード vi-edit, emacs-edit —— コマンド入力モード vi-choice, emacs-choice —— 選択モード(list-windows とか) key-table root —— prefix(デフォルトでは <C-B>)無しで打ったときのモード prefix —— prefix 付きで打ったときのモード これだけあったのが、2.4 だと key-table root prefix copy-mode copy-mode

    Tmux 2.4 がリリースされたので気になった点 - Qiita
    bouzuya
    bouzuya 2017/05/30
  • Androidのmipmapとdrawableについて - Qiita

    以前はdrawable-xxxxxというディレクトリに解像度ごとの画像を用意することでマルチ解像度対応ができていたのですが、いつのまにかmipmap-xxxxxというのもあるようなので調べてまとめておきました。 概要 概要説明はAndroid4.3の説明にありました。 https://developer.android.com/about/versions/android-4.3.html#MipMap Mipmapping for drawables Using a mipmap as the source for your bitmap or drawable is a simple way to provide a quality image and various image scales, which can be particularly useful if you expec

    Androidのmipmapとdrawableについて - Qiita
    bouzuya
    bouzuya 2017/05/30
  • インタフェースと型クラス、どちらでもできること・どちらかでしかできないこと - Qiita

    最近にわかに 型クラス が盛り上がっているようです。しかし、型クラスはインタフェースに似たものだという意見もあればまったく別のものだという意見もあり、混乱する人が多いのではないかと思います。 そのような混乱を招く理由は、 インタフェースと型クラスはどちらも抽象化を実現するためのもの であり、 インタフェースでも型クラスでもできること インタフェースでしかできないこと 型クラスでしかできないこと があるからです。 1 に着目した人は似ていると語り、 2 や 3 に着目した人はまったく違うものだと言います。 投稿では、 Java / Kotlin のインタフェース、 Haskell の型クラス、 Swift のプロトコルを比較し、上記の 3 点を整理します。 Swift のプロトコルを加えるのは、 Swift のプロトコルがインタフェースと型クラスの両方の性質を備えたものなので、比較対象とし

    インタフェースと型クラス、どちらでもできること・どちらかでしかできないこと - Qiita
    bouzuya
    bouzuya 2017/05/30
  • TypeScriptのInterfaceとTypeの比較 - Qiita

    こういうコンパイルエラーにぶち当たった。 Interfaceだとコンパイルエラーになったのが、Typeなら問題なく通る。 declare function numMapToVoid(obj: {[key: string]: number}): void; // interfaceだとコンパイルエラー interface IObj { a: number } const iObj: IObj = {a: 1}; numMapToVoid(iObj); // エラー // typeだと問題なし type TObj = { a: number }; const tObj: TObj = {a: 1}; numMapToVoid(tObj); // OK これは不思議...というのがきっかけで、TypeScriptのInterfaceとTypeの機能上の違いを調べてみた。 比較まとめ TypeSc

    TypeScriptのInterfaceとTypeの比較 - Qiita
    bouzuya
    bouzuya 2017/05/27
  • 純粋関数型JavaScriptのつくりかた - Qiita

    言語全体が参照透明な式1で構成される言語を純粋関数型プログラミング言語(Purely Functional Programming Language)と言いますが、プログラミング言語から副作用のある式をすべて除去し、その代わりにアクションとかIOモナドと呼ばれる仕掛けを追加すると、その言語を純粋関数型に変えることができます。このあいだふとした思いつきでJavaScriptを純粋関数型にしてみたんですが、そのままストレージの奥で腐らせるのはもったいないのでAurorScriptと名づけて記事にして飾っておきます。アクションの仕掛け全体は10行くらいで書けるので簡単です。 純粋関数型を理解するには、自分でアクションのような仕組みを作ってみるのがとてもいい勉強になります。だって、「副作用のない式のみで副作用を表現する」とか説明しても「……はぁ? けっきょく副作用あるの? ないの?」とかっていう反

    純粋関数型JavaScriptのつくりかた - Qiita
    bouzuya
    bouzuya 2017/05/25
  • 資金力のないWeb系ベンチャーがHaskellを採用したらどうなったか - Qiita

    はじめに 僕の業は酪農で、ヤギのさくらちゃんをお世話するのが仕事ですが、それだけではっていけないのが世の中の悲しさなので、副業フリーランスITコンサル(兼プログラマ)や株式会社UZUZっていう会社のひきこもり系最高技術責任者としてHaskellやElmを業務で使っています。 あと、個人的な趣味で株式会社ARoWっていう社員数2名のちっちゃいWeb系の会社を実験的に経営していて、そこでもメインにHaskellを使っています。 Haskellを実際に小規模な会社やフリーランスで使っている人って、実は世の中にほとんどいないみたいです。 そこで、実際のところ「Haskellって資金力のない会社や個人が業務で使えるのん?」っていう疑問に対して率直にお答えします。 日Haskell界の現状 まず、Haskell界隈の日における現状についてお話します。 知ってる方も多いと思いますが、日でH

    資金力のないWeb系ベンチャーがHaskellを採用したらどうなったか - Qiita
  • Rails5: production環境でのAutoloadの廃止 - Qiita

    下記のように自前でautoload_pathsに追加したパスはproduction環境では自動読み込みされません。 # ./config/application.rb config.autoload_paths += %W(#{config.root}/lib)

    Rails5: production環境でのAutoloadの廃止 - Qiita
    bouzuya
    bouzuya 2017/05/18
    うっ……。だったら config/application.rb に置くなよって気持ち。
  • 宇宙大航海時代のためのCDN選び - Qiita

    こんにちは。NASAのプロジェクトで月面勤務のジャバオペレータのジャバ(仮名)といいます。今日は、ついにやってきた宇宙大航海時代のためのコンテンツ・デリバリー・ネットワーク (CDN)の選び方を、原理を含めて説明していきます。 CDNと宇宙大航海時代 CDNは、リソースを配布する際に、宇宙で地理的に分散して配置されたエッジと呼ばれるサーバーにリソースをキャッシュすることで、ユーザのそばのエッジからコンテンツを配信できるようになり、ユーザの待ち時間が短くなるシステムです。宇宙大航海時代より前では、地球の大陸やいくつかの島にサーバを配置していたにすぎなかったようです。地球は比較的小さい惑星ですので、往復遅延時間(RTT)は一番遠いところでも500 msを越えないくらいです。この状況では、CDNが存在しない場合でも、確かにちょっと待たされるものの、リソースが使えないといった状況にはなりませんでし

    宇宙大航海時代のためのCDN選び - Qiita
    bouzuya
    bouzuya 2017/05/11
  • AesonでJSONをパース・生成する方法まとめ - Qiita

    Hackageのドキュメント に結構詳しく使い方が書いてあるので読めばだいたい分かるのですが、日語でまとまった情報がなさそうだったので、まとめてみました。私もまだHaskellは勉強中なので、何か間違いがあったらご指摘頂ければ幸いです。 なお、対象バージョンは GHC 7.8.3 (Haskell Platform 2014.02)、aeson-0.9.0.1 です。 JSONデータと定義したデータ型を相互に変換する 大きく分けて、以下の3つの方法があります。 自前で変換する関数を定義する Generic型クラスを用いた自動導出 Template Haskellを用いた自動導出 自前で変換する関数を定義するのは基的な方法で、面倒ですが最も柔軟な方法です。一方、自動導出による方法は、JSONデータと定義したデータ型が単純に変換できる場合に自動的に変換関数を定義してくれます。通常は自動導出

    AesonでJSONをパース・生成する方法まとめ - Qiita
  • Stackを使って楽しくHaskellスクリプティング - Qiita

    今までいまいちモチベが上がらなかったHaskellでスクリプトを書くというのが、急に現実的になってしまったので、紹介します。 Haskellでスクリプティングする上での問題点 Haskellはもともと簡単なテキスト処理を書きやすいプログラミング言語ではあるのですが、標準で提供されているライブラリはあまり多くないので、必要に応じてコミュニティーパッケージを導入しなければその力を存分に発揮することができません。 通常のパッケージなら、cabalに依存関係を書けばパッケージマネージャで自動的に(コケることもありますが、理想的には)管理できるのですが、シェルスクリプトやPerl、あるいは最近ならPythonでやるような、コードを直接インタプリタで実行するような形のコードでは、そのような依存関係を自動で解決することは難しく、その上、仮にやろうとしたところで、いつまでもその依存パッケージが新しいコンパ

    Stackを使って楽しくHaskellスクリプティング - Qiita
  • どうしてAndroid 6.0でBLEを使うのに位置情報のパーミッションが必要なワケ? - Qiita

    はじめに Android6.0(Marshmallow)から、BLEを使うアプリにはandroid.permission.BLUETOOTH、android.permission.BLUETOOTH_ADMINに加えて、android.permission.ACCESS_COARSE_LOCATIONまたはandroid.permission.ACCESS_FINE_LOCATIONのパーミッションが必要となりました。1,2 皆さん、ご存知でしたか? 私は知りませんでした。知らずにNexus5をバージョンアップしたら、自作アプリでBLEデバイスに接続できなくなって年始早々慌てました。 で、悔しいので、ちょっとソース眺めてみたよ、という記録です。 なお、ここに記載されている内容の正確性は保証できません。間違い等に気がつかれた場合は、コメントでご指摘いただけると助かります。 結論 長いので先に

    どうしてAndroid 6.0でBLEを使うのに位置情報のパーミッションが必要なワケ? - Qiita
    bouzuya
    bouzuya 2017/04/26
  • Android 6.0でBLEデバイスのスキャン結果を受け取るには位置情報モードをオンにする必要がある - Qiita

    はじめに 前回「どうしてAndroid 6.0でBLEを使うのに位置情報のパーミッションが必要なワケ?」で、Android 6.0でBLEのスキャンを行う時に位置情報パーミッションがないと SecurityException が発生する理由について調べましたが、その際にソースコード内のあるコメントが引っかかってました。 * An app must hold * {@link android.Manifest.permission#ACCESS_COARSE_LOCATION} or * {@link android.Manifest.permission#ACCESS_FINE_LOCATION} permission * in order to get results. なぜ、「in order to scan」ではなく、「in order to get」なのか? そして、Nexus5

    Android 6.0でBLEデバイスのスキャン結果を受け取るには位置情報モードをオンにする必要がある - Qiita
    bouzuya
    bouzuya 2017/04/26
  • Android アプリに内蔵 PDF ビュワーを実装させるな - Qiita

    前提 やれるパワーがある人はやって下さい。潤沢な開発リソースがある上で、内蔵 PDF ビュワーを実装することが「他のアプリには無い価値を提供する」為の主な目的である場合はこの記事では対象としません。 この記事の趣旨は、これから実装する上で方針を悩んでる場合や客観的な視点で顧客を説得する必要がある場合の為の参考です。 現状 まず iOS とは異なり WebView は PDF の描画に対応しておらず、Intent が飛ぶかダウンロードが始まります。PDF.js を利用して無茶して読ませることは可能なようですが、快適では無いでしょう。 プラットフォームの APIAndroid 5.0 以降のみ存在します。これでひとつのドキュメントを全ページ表示する場合、 ファイルオブジェクトを作成し PdfRenderer オブジェクトとして初期化し オブジェクトからページ数を取得 openPage()

    Android アプリに内蔵 PDF ビュワーを実装させるな - Qiita
    bouzuya
    bouzuya 2017/04/25
    わかりすぎる
  • 『先にヘッダを送信してから、そのあとでレスポンスボディを送信しなくてはならない』ことをコンパイル時に検証する - Qiita

    『先にヘッダを送信してから、そのあとでレスポンスボディを送信しなくてはならない』ことをコンパイル時に検証するJavaScriptNode.jspurescripthyper const http = require('http'); const hostname = '127.0.0.1'; const port = 3000; const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.write('Hello World\n'); res.end(); }); server.listen(port, hostname, () => { console.log(`Server running at http:/

    『先にヘッダを送信してから、そのあとでレスポンスボディを送信しなくてはならない』ことをコンパイル時に検証する - Qiita
    bouzuya
    bouzuya 2017/04/23
  • TypeScriptにpluginがやってくる 使ってみよう編 - Qiita

    はじめに どうも、 @Quramy です。 前回の投稿から随分日が経ってしまいましたが、この投稿はある意味で前回投稿の続編的な内容になります。 今日はTypeScript 2.3から導入されるLanguage Service Extensibilityと呼ばれている機能についてまとめてみようと思います1。 どのような変更なのか TypeScript Roadmapのリンクを辿っても、https://github.com/Microsoft/TypeScript/pull/12231 に行き着くだけで、パッと見は何の機能なのかよく分かりません。 このPRの実装を眺めると、次の機能が見えてきます。 tsconfig.jsonのcompilerOptionsに"plugins"というキーが追加されている pluginsに指定した内容は、TypeScript体からresolveされる すなわち、

    TypeScriptにpluginがやってくる 使ってみよう編 - Qiita
    bouzuya
    bouzuya 2017/04/11
  • git commit --fixup で fixup する対象を peco/fzf で選べるスクリプト書いた - Qiita

    git commit --fixup が何かについてはgit commit --fixup とは何か - 詩と創作・思索のひろばを読んでもらうとして、 fixup を適用したいコミットをいちいち git log で調べるのが面倒なのでインタラクティブに選べるようにした。 以下のスクリプトをパスの通ったディレクトリに置くと git fixup が使えるようになる。適当な変更を git add して git fixup を実行すると、その変更を fixup として適用したいコミットを peco や fzf で選べる。 #!/bin/bash FILTER=${FILTER:-peco} MAX_LOG_COUNT=${MAX_LOG_COUNT:-30} if git diff --cached --quiet; then commits="No staged changes. Use git

    git commit --fixup で fixup する対象を peco/fzf で選べるスクリプト書いた - Qiita
    bouzuya
    bouzuya 2017/04/07
  • 不思議の国のSE用語 - Qiita

    不思議の国 SEが住んでいるところ、そこは不思議な不思議なお国柄です。 新たな国民として移住してきた人、特産物のシステムを買いに来た人など色々な人がこの国には存在します。 しかしこの国で話される言葉は 独特 です。 ぱっと聞いただけでは意味がわからなかったり、よく似た表現であっても微妙にニュアンスが違っていたり。 似たような表現を使い分けるその裏に、その人の意図や省略された文脈が隠されていたりもします。 どこの国でもコミュニケーションを間違うと非常に厄介ですが、そんなことにならぬよう、 お国言葉らしきもの をまとめてみました。 SEを代表例として、このお国言葉を話す人も、話される人も、改めて言葉の意味合いを見つめなおしてみると新たな気付きが得られるかもしれません。 なお、そんなことから 「絶対にSEしか使わない用語」を集めたわけではない のでその点ご了承くださいませ。 他言語版 @micr

    不思議の国のSE用語 - Qiita
    bouzuya
    bouzuya 2017/04/07
    SE用語かは疑問だけど、使うものが多い
  • 失敗を表現する手法としてNullObjectパターンが不適切でEitherが適切だと思う理由 - Qiita

    真面目な気分出して書いていたらすごい長くて堅苦しくてもったいぶった感じになってしまった... この記事の9割は壮大な前置きですw なにこれ 失敗の表現としてNullObjectパターン(以下楽なので勝手にNOPとします)を使うべきか議論をした際に論理立てて話せなかったので、 持論整理をしてついでにこの場を借りて晒してみようと言う記事です。 全ての状況において必ずEitherだ!と言うよりは、議論になったら僕はこう考えてますって言うためのポエムです。 DDD的な考えも少し この記事は実装都合のみに閉じていますが、DDD的な観点からも考えてみたことがあるのでこんな記事も書いてみました。 先に結論 前置きではない1割の部分だけ先出します。 それで「あ、そうか」とか「は?」とか思える人は以下の長大な前置きは不要ですw NOPは成功と失敗を区別しようとすると破綻する、けど区別したい事が珍しくない。

    失敗を表現する手法としてNullObjectパターンが不適切でEitherが適切だと思う理由 - Qiita
    bouzuya
    bouzuya 2017/03/29
    成否の区別をなくすためのものだから
  • Writing a full-stack app with Purescript with phantom types - Qiita

    Over the last couple of years, I've had a basic problem one would solve with a CRUD app -- I want to be able to easily open videos from a directory listing and then mark specific videos as watched. I first made a basic implementation for myself using Javascript and Elixir (mostly to experiment with Elixir), but found myself wanting everything that's good about Purescript that understandably doesn'

    Writing a full-stack app with Purescript with phantom types - Qiita
    bouzuya
    bouzuya 2017/03/29
  • TypeScriptのコード(d.ts)からAPIドキュメントを自動生成する - Qiita

    TypeScriptで書いたライブラリのAPIリファレンスをコードから生成したいときに使えるツールがなかったので、簡単な仕組みで作ってみました。 Almin.jsというJavaScriptのライブラリを書いているのですが、コードベースをTypeScriptに変更してからAPIリファレンスが自動生成できなくて困っていました。 almin/almin: Almin.js provide Flux/CQRS patterns for JavaScript application Inroducing Almin 0.10.0: TypeScript, FlowType, Logger | Web Scratch TypeScriptJSDocやESDoc、documentationjsのようなツールとしては、typedocがあります。 しかし、typedocはdocumentationjsのよ

    TypeScriptのコード(d.ts)からAPIドキュメントを自動生成する - Qiita