よくいる文系プログラマの戯言

プライベートでの開発を適当に書き留めます

AWS VPCまわりの知識インプットメモ

まずはこちらの資料をベースにインプット。

www.slideshare.net

アドレスレンジ、サブネットの話は、いつもフワッと理解するだけに留まっていたので、今回本気で理解する。

サブネットマスクとCIDAR表記の違いはこの記事が分かりやすい xtech.nikkei.com

IGWとNAT-GWの違い milestone-of-se.nesuke.com

細かい設定まわりはやっぱりやってみないと分からないと思うけど、概要は何となく掴んだ。

bitcoindのCPU使用率が100%近くなるので、対応。

Running a Bitcoin full node on $5 a month

json rpc - Bitcoind (linux) CPU usage through the roof - Bitcoin Stack Exchange

bitcoind のCPU負荷が高い時の対処 | block-chain.jp

このあたりの記事を見ると、bitcoindのcpu使用率を10%に抑えるのが良さそうなので、以下のコマンドで試してみて様子見てみます。

cpulimit -l 10 bitcoind

このコマンドでbitcoindのプロセスも立ち上がります。

Node.jsとECMAScript6まわりの情報まとめ

koa.jsについて調べるにあたって、ECMAScript6についての情報も結構得たので、せっかくだからまとめます。

ES6対応状況

koa.js、React、Node、MongoDBでWebアプリでも作ってみようかなと

最近ネイティブの開発ばっかりしてたが、久々にWebアプリでも作ろうと思ったので、ちょっと調べてみました。結論から言うと、koa.js、React、Node、MongoDBの4つを掛け合わせて作ることにしたんですが、せっかくなんでそこまでの過程を記しておきます。 この決定において、技術的な考慮は多少しているものの、基本的に僕の好みに全面依存しているのであしからず^^/

ミーハーにはやはりGo言語か

最近Go言語の勢いがすごいみたいなのがこういう感じの記事になってたり、4月から働くことになっている会社で、SwiftとかGo言語とかをゴリ押ししているので、せっかくだからGo言語で作ってみようかなと、日頃チェックしていたリポジトリを中心に見てみる。

フルスタックRails的な)

最小限(Sinatra的な)

とまあ、良さ気なものはある。 しかもやっぱり、Go言語の爆速具合は魅力だけど、別にそんなスペックの高い必要が最初からあるわけじゃないしなぁ〜 Go言語自体のバージョン切り替えの上手くやるツールとか、パッケージマネージャーのデファクトとかがよくわからないので、もう少し静観していようかなという感じ。

Go言語がダメだと、次に魅力に見えるのはNode.js ...

年末(?)にio.jsがフォークしたりで何かと話題になっていたNode。 JSは個人的にもたくさん書いてきたし、今後もネイティブの開発はしつつ、Web関連の技術にはついていきたいと思っていたからやっぱりこのあたりかな。

そうなるとやはりMEANスタックかな?でもAngularは最近評判悪いし、実際使ってみて覚えること多いし、動きもよくわからなかったりしたし、ちょっと嫌だなぁ〜

ということで調べてみると、koa.jsというキーワードに行き当たる。

koa.jsとは

どうやらMEANスタックの一角を担うExpressのECMAScript6対応&シンプル版という感じのようだ。 なんでもExpressの作者が作ったようなので、そのへんExpressを使ったことがあると学習コストも低いかもしれない。 ES6で導入されたgenerators/yeildもコールバック地獄から解放してくれるし、結構いいかもしれない! ES6の書き方になれることもできるし!

そしてKOREMスタック誕生へ・・・!

で、せっかくMEANスタックの一角を変えたんだし、フロントもAngularじゃなくてfacebookのReactを使ってみよう!(Reactについては割愛。なにやら仮想DOMとか使ったイケてるフロントエンドツールのよう)

DBは、、まぁMongoのままでいいかな

という感じで、ミーハーWebアプリケーション、KOREMスタックの誕生の瞬間であった。

【Android Studioでエラー】uses-sdk:minSdkVersion 14 cannot be smaller than version L declared in library com.android.support:support-v4:21.0.0-rc1

Android DevelopersのSampleを動かそうとしたら、タイトルのようなエラーが出ました。

こっちはAndroid Studioを今日インストールしたばっかで参ったな〜という感じだったんですが、こちらに解決方法が書いてありました。

要するに、build.gradle (Application) の書き方がまずくて、依存関係が解決していなかったようですね。

dependencies {
    compile 'com.android.support:support-v4:21.+'
    compile 'com.android.support:gridlayout-v7:21.+'
    compile 'com.android.support:cardview-v7:21.+'
    compile 'com.android.support:appcompat-v7:+'
}

サンプルのままだとこうなっていると思います。 この21.+という表記だと、足りないsdkをインストールするっていう導線までいかないようです。

よって、下のように書き換えてみました。

dependencies {
    compile 'com.android.support:support-v4:21.0.0'
    compile 'com.android.support:gridlayout-v7:21.0.0'
    compile 'com.android.support:cardview-v7:21.0.0'
    compile 'com.android.support:appcompat-v7:21.0.0'
}

こうすると、足りないsdkのインストールに進むので、うまくいきます。

Sass記法でベンダプレフィックスをフォールバックしてくるmixinを書く

CSSプリプロセッサはSassを使ってます。

一般的にはScss記法が多い気がしますが(「{}」で囲むスタイル)、 {}とか;を書くのが億劫なので、普段はSass記法を使っています。

今回、ベンダープレフィックス用にmixinをつくろうと思いました。 ループを使って綺麗に書きたかったんですが、Sass記法でどうやるのかあまり情報がない。 公式サイトを見てもmixinについてはScss記法しか載っていない。

そこでいろいろ試してみました。

普通に@eachが使えた

使えました、@eachが普通に。 Sass記法の場合は、mixinも@mixinじゃなくて=を書くだけで、@(アットマーク)はほとんど使う場面がないのですが、普通に使えるんですね。

=transform($value)
    @each $prefix in '', -webkit-, -ms-
        #{$prefix}transform: scale($value, $value)

値のところの関数っぽいところに変数は使えるのか

次に気になったのは、上記のscaleのところを変数にできるのか、というところ。 関数名(便宜上「関数」って呼んでます)の部分に変数を渡すのはNGなような気がします。

が、普通にできました。

=transform($property, $value)
    @each $prefix in '', -webkit-, -ms-
        #{$prefix}transform: #{$property}($value, $value)

これで、transformみたいな、関数名にscaleとかtranslateとかいろいろ入る奴がきてもDRYが保てそうです。

可変引数もとれた

あとひとつ気になったのが、scaleの引数で可変引数はとれないか、というところ。

=transform($property, $value...)
    @each $prefix in '', -webkit-, -ms-
        #{$prefix}transform: #{$property}($value)

普通に取れました。 これで完成です!

Scss記法より書く量が省けて、Stylusのように:(コロン)まで取ってしまうスタイルよりも可読性が高くて、個人的にはSass記法、大好きです。

OSX YosemiteにアップデートしたらHomebrewが動かなくなった

嬉々としてYosemiteをアップデートしたら下のようなエラーが、、、

/usr/local/bin/brew: /usr/local/Library/brew.rb: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby: bad interpreter: No such file or directory
/usr/local/bin/brew: line 23: /usr/local/Library/brew.rb: Undefined error: 0

どうも、Ruby 1.8がないせいなような気がします。 実際今動いているのは、2.0.0でした。 Yosemiteにアップデートになると、Rubyのデフォルトのバージョンが2系になって1.8はなくなるみたいですね。 1.8系、1.9系ともにサポートが終了するようですし → Ruby 1.8.7 および 1.9.2 のサポート終了について

再びHomebrewを動かすには、、、

調べると、いろいろGithubでPRがあったりするんですが、このサイト( Fixing Homebrew for OS X 10.10 Yosemite )が一番シンプルでわかりやすいかなという感じです。