BdashというBIツールをリリースしました

BdashというアプリケーションをElectronで作りました。 bdash-app/bdash: A simple business intelligence application. 以下からダウンロードしてインストールできます(現状まだMac版だけ)。 https://github.com/bdash-app/bdash/releases ざっくりとこん…

element.querySelectorで直下の要素を指定する

例えばel(DOM Element)の直下の.fooを取りたいときに、以下のようにしたい。 el.querySelectorAll('> .foo'); これだとエラーになるんだけど:scopeを使えばいける。 el.querySelectorAll(':scope > .foo'); Chrome、Firefoxでは動いた。

macOSでアプリケーションが署名されてるかどうか確認する

mac

codesignコマンドで確認できる。 $ codesign -vd /Applications/Hyper.app Executable=/Applications/Hyper.app/Contents/MacOS/Hyper Identifier=co.zeit.hyper Format=app bundle with Mach-O thin (x86_64) CodeDirectory v=20200 size=269 flags=0x0(non…

ISUCON6 4位でした

会社の同僚の@wata_devと@osadake212とISUCON6本戦に出場して4位でした。チームメンバー全員普段アプリケーション書いてるエンジニアでインフラ寄りのメンバーがいなくて複数台構成の本戦はきついだろうなと思ってたので、4位という結果はかなり健闘したほう…

sqlite3でカラム定義の変更

sqlite3だとalter table change columnみたいのがないらしいのでnot nullとかdefault valueを変更するのどうすればいいんだろうと思ってrailsがどうしてるか見てみた。 class CreateTodos < ActiveRecord::Migration[5.0] def change create_table :todos do…

ISUCON6 予選の記録

ISUCON6にしましまスペシャルというチーム名で会社の同僚と参加して最終スコア147,028で予選通過できました。言語はRubyです。コードはここに公開してます。 https://github.com/hokaccha/isucon2016_qualifying 以下やったこととかのメモ。 10時-11時 下準…

Railsのscopeとclass method

http://api.rubyonrails.org/classes/ActiveRecord/Scoping/Named/ClassMethods.html#method-i-scope ARのscopeはclass methodとだいたい同じ scopeはnilやfalseを返した時にallを返すのでメソッドチェインをブロックしない 必ずActiveRecord::Relationを返…

Babel 6.xでErrorとかArrayをextendsしたときの挙動がおかしい

class FooError extends Error {} console.log(new FooError() instanceof FooError); //=> false console.log(new FooError() instanceof Error); //=> true class FooArray extends Array {} console.log(new FooArray() instanceof FooArray); //=> false…

GraphQLでNonNullなList

フィールド自身がNonNull 要素がNonNull その両方 があって let QueryType = new GraphQLObjectType({ name: 'Query', fields: { list1: { type: new GraphQLNonNull(new GraphQLList(GraphQLString)), resolve: () => arr1, }, list2: { type: new GraphQLL…

module_function

moduleに普通にメソッドを定義するとインスタンスメソッドとして定義される。 module Foo def foo end puts instance_methods.include?(:foo) #=> true puts private_instance_methods.include?(:foo) #=> false puts singleton_methods.include?(:foo) #=> …

FactoryGirlでActiveRecord以外のデータをつくる

例えばHashie::Mashを返したい場合はこんな感じ。 FactoryGirl.define do factory :post, class: Hashie::Mash do title "foo" body "bar" end end FactoryGirl.build(:post).class #=> Hashie::Mash FactoryGirl.build(:post) #=> {"title"=>"foo", "body"=…

ES6でN個の配列

Array.prototype.keysはIteratorを返すのでArray.fromに食わせる Array.from(Array(5).keys()); //=> [0, 1, 2, 3, 4] もしくは Array.from({ length: 5 }).map((v, k) => k); //=> [0, 1, 2, 3, 4] Array.fromの第二引数はmap的な役割があるので Array.from…

ShadowDOMの外から内部の要素を取得する

shadowRootでshadowRootが取れるのでそこから辿れる。 var proto = Object.create(HTMLElement.prototype); proto.createdCallback = function() { var shadowRoot = this.createShadowRoot(); shadowRoot.innerHTML = '<span class="foo">text</span>'; }; document.registerElement(…

Shadow-Piercing descendant combinator is deprecated

最近Web Componentsのアップデート全然見てなかったけどCSSで外からShadow DOMをスタイリングするための/deep/(>>>)、::shadowがdeprecatedになってた。 Shadow-Piercing descendant combinator, '/deep/' (aka '>>>') - Chrome Platform Status

gitでトラッキングされてないファイルも含めてstashする

git

なんとなく $ git stash --allってやったら、ignoreされてるファイルも全部消えてファッってなった。 $ git stash -u # or $ git stash --include-untrackedが正しいっぽい。以下helpより。 If the --include-untracked option is used, all untracked files ar…

Polymer/platform.jsでdocument.currentScriptが動かない

Web ComponetsのPolyfillのPolymer/platform.jsでHTML import使ったときに、呼び出される側のHTMLのJSのdocumentを取得したいときに、 var doc = document.currentScript.ownerDocument; ってやればとれるらしいんだけど、これがうまくPolyfillできなくて動…

最近のAndroid Chromeのリモートデバッグ

以前はAndroidのChrome側にWebデバッグを有効にするみたいなのがあって、PC側ではADB立ち上げたりする必要があったんだけど、最近はもっと簡単になってるっぽくて、1. AndroidのUSBデバッグを有効にする 2. USBでつなぐ 3. AndroidのChromeで適当なページ開…

Backbone.jsでPATCHをPUTに書き換える

Backbone.jsでsaveするときに patch: true にするとPATCHメソッドになってsaveに渡した引数だけをbodyに含める(patch :true しないとmodelの全attributesをbodyにしてPUTする)んだけど、API側がPATCHメソッドに対応してなかったりPATCHメソッドを通さないp…

angular-scenarioで特定のテストだけ実行する

describe -> ddescribe it -> iit ってすればそのテストだけ実行される。今のところアンドキュメントな気がする。 describe('foo', function() { it('xxx', function() { ... }); iit('xxx', function() { ... }); // これだけ実行する it('xxx', function()…

git reset --hardで新規ファイルの扱い

git

$ git --version git version 1.8.3.2 $ touch newfile $ git status -s ?? newfile $ git reset --hard $ git status -s ?? newfileこのようにまだgitに管理されてないファイルはgit reset --hardしても削除されない。これはよい。ただ、次のように、インデ…

AngularJSの$httpにX-Requested-Withをつける

AngularJSでHTTP Requestする際に、1.1.1より前まではX-Requested-Withをつけてたらしいんだけど、CORSのpreflightを飛ばさないためにデフォルトでは削除したらしい。 https://github.com/angular/angular.js/issues/1004X-Requested-Withをつけたい場合は以…

AngularJSのdeferredで並列実行

jQueryの$.whenみたいに複数のdeferredを同時に処理するみたいのはAngularJSだと$q.allでできる。 var d1 = $q.defer(); var d2 = $q.defer(); var d3 = $q.defer(); $timeout(function() { console.log('d1'); d1.resolve('d1'); }, 10); $timeout(function…

AngularJSのControllerをネストしたときのスコープ

<div ng-controller="ParentCtrl"> <div ng-show="isShow">foo</div> <div ng-controller="ChildCtrl"> <button ng-click="toggle()">click</button> </div> </div> こういうHTMLがあったときに、ChildCtrlから$scope.isShowを操作しても反映されない。これだとダメ。 var app = angular.module('app', []); app.controller('ParentCtrl', function($scope) { …

AngularJSでimgのsrcにバインドするときに404になる

<img src="{{image}}"> app.controller('MainCtrl', function($scope) { $scope.image = 'path/to/image'; }); とかする場合、読み込み時に {{image}} にリクエストが飛んで404になる。ng-srcを使うといいらしい。 <img ng-src="{{image}}">

rubyの正規表現の後方参照

Ruby 1.9以降では正規表現のキャプチャに名前がつけられるのでこういう書き方ができる。 img = 'foo.png' img_on = img.sub /\.(?<ext>\w+)$/, '_on.\k<ext>' p img_on #=> foo_on.png (?...) でキャプチャして \k で参照できる。$1 とか \1 みたいな意味不明な記号使</ext></ext>…

hub pull-requestでブランチを指定する

これ見て試してみたら、devブランチに対してpull requestしたいのにmasterブランチに対してしてしまって悲惨なことになった。(そしてこの操作は戻せないという・・) http://qiita.com/kyanny/items/170a188a87925f81ae86デフォルトはmasterだから -b オプ…

Mongooseのバージョニング

Mongooseは3からバージョニングという機能が入ったんだけどよくわかってなかったので調べたメモ。詳しくはここに書いてある。 http://aaronheckmann.tumblr.com/post/48943525537/mongoose-v3-part-1-versioningバージョニングを使うと何がいいかというと、…

要素の属性を全部取得する

例えば <div data-foo="a" data-bar="b" data-baz="c">...</div> みたいに任意のカスタムデータ属性がついてて、こっから { foo: 'a', bar: 'b', baz: 'c' } みたいなデータを作りたいので属性を全部取得したいんだけど、 jQuery ではできないっぽい。DOMの element.attributes を使えばいける。 var div = docu…

Rails4でトークン認証のアクションに対してCSRFを無効にする

Railsはprotect_from_forgeryって書くだけでCSRF対策が有効になってマジ便利なわけだけど、セッションで認証するんじゃなくてiOSから呼ぶAPIとかでトークン使って認証する場合はCSRFの対策いらないので無効にしたい。その場合は protect_from_forgery with: …

RubyMotionでブロック中のblock_given?の値が変わる

これではまった。 https://gist.github.com/ainame/5651453yieldも同じようにダメっぽい。 def callback_caller callback_caller2 do yield end end def callback_caller2(&block) block.call end callback_caller do p 'origin' end # CRuby 1.9.3 $ ruby s…