Awesome 某のスター付き一覧

Awesome Hoge のページをよく見ることがあり、特に iOS をよく見ていたのだが、スターの数をまとめて見たいと思い、主に自分用にスター付きの一覧を生成してみました。Awesome repositories の contributors と全てのレポジトリの developers の方々に感謝です。

URLはこれです。
Awesome repos with 🌟

GitHub API で取得した stargazers_count を使っています。 GitHub API、レポジトリの取得なら1時間に5,000回のLimitなので結構叩ける印象。

サーバは要らなそうだったので、AWSのサービスを組み合わせてサーバレスでページを生成しています。

  • Lambda でレポジトリ一覧を取得
  • まとめて GitHub API を叩くと Lambda がタイムアウトするので、一旦 SQS に JSON にしていれる。
  • CloudWatch Events で Lambda を定期的に起動して、 SQS のキューを受信しながら、 GitHub API を叩いて SimpleDB に結果を入れる
  • 定期的に、 SimpleDB のデータを Lambda で JSON にしてs3 に PUT する。

という風にしています。APIにも優しいように、1日かけて1ループするくらいの周期で処理をしています。

DynamoDB ではなく SimpleDB なのは、最後の処理で一括でデータを取得する必要があるのですが、DynamoDB はスループットの設定的に一括取得には向いていないので、課金的な意味で SimpleDB にしてます。無料枠を考えないと、ミニマムコストが SimpleDB はが$0で DynamoDB は$0.67なので。ただ、DynamoDBで読み書き1ずつにして、s3にPUTするときだけ scan しても、もしかしたら DynamoDB の方が安い、ということはあるかもしれません。この部分の比較は見たことがないというか、SimpleDBに関する情報をあまり見かけません。 Lambda からもデフォルトで使えるし、ちょっとした時に便利だと思うのですが、管理画面にも無いし、そのうちサービスが終わってしまうのではないかというのが心配です。

Lambda 開発環境は、最近知った node-lambda がシンプルで使いやすいです。手元での実行とデプロイが出来ます。

HTML側は、S3 + CloudFront です。最近 CloudFront が HTTP/2 に対応したので、個人的には静的ページの配信に HTTP/2 対応のサーバを立てる意味がほぼなくなりました。あと、React で描画してるので、対応してないブラウザでは見えないです。

JSON の URL はパブリックなので、直接叩いても良いです。見ればフォーマット何となくわかると思いますので、 jq とか使って絞り込めば、例えば 「Awesome iOSで、Buttonのカテゴリで、500スター以上付いているレポジトリを開く」とかもすぐ出来ます。

curl https://s3-ap-northeast-1.amazonaws.com/awesome-repositories/ios.json | gunzip | jq -r 'map(select(.category1 == "Button")) | map(select(.stargazers_count >= 500)) | "http://github.com/"+.[].path' | xargs open

※ 一気にブラウザ上でページが立ち上がるので、内容に注意して下さい!

最初 iOS だけ作ったら、他のものもほぼ同じコードで生成できたので、自分がよく使う言語だけですが、6個作りました。 Elixir 力を上げたい。

Awesome 某のスター付き一覧

Macでzshを使ってみようと思った

 Macでzshを使ってみた。漢のzsh っていうのを参考に設定してみた。

 まず、デフォルトのログインシェルを変更する。

 システム環境設定 -> アカウント -> 自分のアカウントで Ctrl + Click -> 詳細オプション -> ログインシェルを /bin/zsh

 とすればおk。

 上記URLをもとに設定ファイルを書いてみたけど、よく分かってない。デフォで Bash の Ctrl + R みたいな感じな設定なんだけど、慣れたら速そう。慣れるまでストレスになりそう。

autoload colors
colors
case ${UID} in
0)
  PROMPT="%B%{${fg[red]}%}%/#%{${reset_color}%}%b "
  PROMPT2="%B%{${fg[red]}%}%_#%{${reset_color}%}%b "
  SPROMPT="%B%{${fg[red]}%}%r is correct? [n,y,a,e]:%{${reset_color}%}%b "
  [ -n "${REMOTEHOST}${SSH_CONNECTION}" ] &&
    PROMPT="%{${fg[white]}%}${HOST%%.*} ${PROMPT}"
  ;;
*)
  PROMPT="%{${fg[red]}%}%/%%%{${reset_color}%} "
  PROMPT2="%{${fg[red]}%}%_%%%{${reset_color}%} "
  SPROMPT="%{${fg[red]}%}%r is correct? [n,y,a,e]:%{${reset_color}%} "
  [ -n "${REMOTEHOST}${SSH_CONNECTION}" ] &&
    PROMPT="%{${fg[white]}%}${HOST%%.*} ${PROMPT}"
  ;;
esac
 
 
export LSCOLORS=gxfxcxdxbxegedabagacad
alias ls='ls -G'
zstyle ':completion:*' list-colors ${(s.:.)LSCOLORS}
autoload -U compinit
compinit
PROMPT="%/%% "
PROMPT2="%_%% "
SPROMPT="%r is correct? [n,y,a,e]: "
 
 
case "${TERM}" in
kterm*|xterm)
  precmd() {
    echo -ne "\033]0;${USER}@${HOST%%.*}:${PWD}\007"
  }
  ;;
esac
 
# 履歴を10000件保存する
HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=10000
setopt hist_ignore_dups     # ignore duplication command history list
setopt share_history        # share command history data
 
# viのキーバインドになる
bindkey -v
 
# 履歴検索 Ctrl+P, Ctrl+N でたどれる
autoload history-search-end
zle -N history-beginning-search-backward-end history-search-end
zle -N history-beginning-search-forward-end history-search-end
bindkey "^P" history-beginning-search-backward-end
bindkey "^N" history-beginning-search-forward-end
 
# cd が pushd になる
setopt auto_pushd
 
# 自動補完設定
autoload predict-on
predict-on
 
# alias設定
Macでzshを使ってみようと思った

ImageMagickとRmagickインストール

まず、ImageMagickのインストールです。jpg,pngを扱うときはlibpng, libjpeg が必要になるのであらかじめインストールしておきます(後から入れても動いた)。

ダウンロード先

libjpegのインストール

Independent JPEG Group のサイトから、jpegsrc.v6b.tar.gz のソースをダウンロードしてきます。コンパイルしたあと、make install-lib とすることで jpeglib がインストールされるようだ。

$ wget http://www.ijg.org/files/jpegsrc.v6b.tar.gz
$ tar xvzf jpegsrc.v6b.tar.gz
$ ./configure --prefix=/usr/local/
$ make
# make install
# make install-lib

これで通らないときは、 *.so のファイルを作る –enable-shared オプションを付けて configure すると通るかも。

./configure --prefix=/usr/local --enable-shared

libpngのインストール

INSTALL には、 configure して make すればおkみたいな感じで書いてあるけど、通らないときがある。libpng インストール を参考にして、予め用意されているmakefile を編集することでインストール出来るようだ。

$ wget http://jaist.dl.sourceforge.net/sourceforge/libpng/libpng-1.2.28.tar.gz
$ tar xvzf libpng-1.2.28.tar.gz
$ cd libpng-1.2.28
$ cp script/makefile.linux makefile
$ vi makefile
 
ZLIBの辺りを以下のように書き換える。
 
ZLIBLIB=/usr/local/lib
ZLIBINC=/usr/local/include
#ZLIBLIB=../zlib
#ZLIBINC=../zlib
 
$ make
# make install

なぜかmakeが1回では通らず、2回makeすると通る。(RedHat ES4で2回起きた)

ImageMagickのインストール

$ wget ftp://ftp.kddlabs.co.jp/graphics/ImageMagick/ImageMagick-6.4.1-0.tar.gz
$ tar xvzf ImageMagick-6.4.0-11.tar.gz
$ cd ImageMagick-6.4.0
$ ./configure --prefix=/usr/local
$ make
$ make test
# make install

make install で

/bin/install: cannot create regular file `/usr/local/man/man1/cjpeg.1': No such file or directory

と出てしまったときは、ディレクトリが出来ていないようなので、以下のコマンドを実行してから再トライしてみれば通るはず。

# install -d /usr/local/man/man1

これやると、libMagick* 系のライブラリがないって言われる… /usr/local/lib/libMagick* を /lib/ 以下にコピーすればいいんだけど、しっくりこないです。

Rmagickのインストール

Rubygemsがインストール済みの上で以下を実行

# gem install rmagick
ImageMagickとRmagickインストール

Vim-cocoaがGoogleCodeにある

 Vim-cocoaのパッチあてまくりのバージョン使ってたけど、とにかく落ちるので困っていた(AntiAliasとかかからない前のバージョンは安定してたんだけど、やっぱAntiAliasないとちょっと…って感じであえて不安定だけど綺麗なほう使ってた)ところ、GoogleCodeにVim-cocoaがあるのを発見。

http://code.google.com/p/vim-cocoa/

 ファイル同時更新しても落ちないみたいだし、こっち使ってみようと。SVNでやってて、開きっぱでファイルが更新されると落ちるとか、ちょっと複数人開発にはとことん向いてないZE\(^o^)/ と思ってただけにちょっと幸せになれるかも。幸せの閾値低いので。

 【追記】かなり安定しているようで、全く落ちません!ただ、開いてるファイルを外部で変更しても再読み込みみたいなことが起きたり、メッセージが出ることがないのがちょと不安な。

Vim-cocoaがGoogleCodeにある

FirefoxでFlashのバージョン切り替える

 Flash開発で、FlashPlayerの7,8,9を使う必要があったので入れてみた。FlashSwitcher というFirefoxの拡張を使うと簡単に切り替えられる。切り替え時にブラウザの再起動は必要になるけど。

 昔のFlashは、http://www.adobe.com/support/flashplayer/downloads.html とか、http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_14266&sliceId=1 辺りでDL出来る。

 インストールすると、Windowsなら、多分デフォで C:\Program Files\Mozilla Firefox\plugins の下に、NPSWF32.dll っていうのが出来るはず。これがFlashPlayerのプラグインのDLLなようで。入れたいFlashPlayerをインストールするごとに、このDLLをどこか自分の分かる位置に移動しておく。そのとき、フォルダを作る必要があって、そのフォルダ名が切り替え時の名前となるので分かりやすい名前をつけるべき。例えば、C\:flash の下に入れるとしたら、C:\flash\9.0 r115 debug とか C:\flash\8.0 r39 とかにしておくと切り替え時に分かりやすい。

 同じバージョン内だったら最新版に対応してればいいよねさすがに(‘A`) デバッガ付Flashは、通常のFlashPlayerに比べて7割くらいのパフォーマンスみたいなことがどっかに書いてあったよ。

FirefoxでFlashのバージョン切り替える

自宅の環境

 ずっとオフィスのPCにさしっぱなしだったmicroSDを回収して、Advanced-esで自宅の机を撮影してみたものの、すごく汚いね。机が汚いんじゃなくて、写りが汚い><

自宅の環境
 さすがにディスプレイ4枚もあるとかなり快適です。左2枚が24inchでSuse10.3で使ってて、右2枚が20+19でWinXPで使ってます。Windowsは遊びとFlash書くのに使って、Linuxはプログラム書くのに使ってます。こんだけあれば十分なんだろうけど、やはり19インチのディスプレイを20インチにしたいと思うのが・・・。ちなみに、サーバ専用に15インチディスプレイがおいてあったりします(・ω・)

 去年ここに来たときは20+19だったわけなので、そりゃお金減るな…という感じです。PC2台増えてXBOXも増えたし。ベッドも机も。

 mixiにあったので、恋愛インタビューていうのやってみた。似合いそうな人「ドSな人」ってやっぱどこでもそうなのね(‘A`) こういう占いすると、必ずMと出ます。

 
 今日の昼は、秋葉UDXのバリ鳥で親子丼食べました。昔バイトしてたお店の系列店。バイトしてたときは、ありえないくらい食べてたと今ながら思います(・ω・) 閉店後に、いつも好きなものを作ってくれた料理長が好きでした。そのあと、ミンゴスが載ってるという噂を聞いて、Side B・N ていうフリーペーパーをげtしてきました。ライブフォーユー買うしかない><

 夜は、ゴーゴーカレーで、お腹すいてたのでメジャーカレーファースト。これ2000キロカロリーはあるだろ…て感じだけど、お腹すいてたから最後までおいしかった(´∀`) 平日はなかなか娯楽が食事しかないですな。

自宅の環境