Skip to content

Instantly share code, notes, and snippets.

@dogrunjp
dogrunjp / get_all_items.md
Last active December 14, 2016 07:37
[Python] ある条件で全件数が不明で、100件づつしか値を返さないAPIで全件数をリストで取得する再帰的な関数

ある条件で全件数が不明で、100件づつしか値を返さないAPIで全件数をリストで取得する再帰的な関数

タイトルのような処理を書いていたのですが、再帰的な関数に慣れないため、欲しい値を得るまでに時間がかかりました。

APIの仕様は、下記のようにシンプルにして考えてみます。

  • 全件数が不明
  • APIはデータを{item: []}の形式で返す
  • 最大100件までしか値を返さない
  • 取得件数を指定するオプションは"rows="
@dogrunjp
dogrunjp / complicated_json_2_flattendjson.md
Created October 1, 2016 12:48
Flatten complicated json data

階層化したJSONをフラットに変換する方法

通常jsonとしてデータお返すAPIのにCSVに機会的に変換しデータを返す オプションを付けようとして、ちょっと悩んだのでメモ

機械的なJSON2CSVのようなライブラリは使えそうになかったものの 結果的にはそれほど複雑な処理をせずにjson2csv的なメソッドを書く事ができそう。

階層化したJSONを一旦フラットなJSONにし、キーをヘッダ列にしカンマ区切りの 文字列を返せばよいのだろうと思う。

@dogrunjp
dogrunjp / install_mecab-python3.md
Created August 5, 2016 17:59
macでpyenv virtualenvを使ってテキストマイニングの環境を作るさいのMecab関連のインストール手順。Python3にするなら素直にpip installしたほうが良いという結果に。

Mac+Python環境のMecabセットアップ

pyenv virtualenv環境(python3)にMecabのpythonバインディングをpipインストールする

Mecabと辞書のインストールはbrew installでOK

$ brew install mecab
$ brew install mecab-ipadic
@dogrunjp
dogrunjp / use_NDL_WARP.py
Created July 30, 2016 01:40
WARPの検索APIを利用するコードの骨組み。Jupyterに埋め込むととりあえずJSONを取得できます。
import urllib.request
import urllib
from urllib.parse import urlparse
import json
keyword = "何か入れる"
keyword_encode = urllib.parse.quote_plus(keyword)
api = "http://lab.ndl.go.jp/warp/api/page/select?q=keyword%3A{}&rows=100&json.nl=arrarr".format(keyword_encode)
response = urllib.request.urlopen(test)
@dogrunjp
dogrunjp / knowledge_link_d3.ipynb
Last active July 28, 2016 17:54
JupyterでPythonからjavascriptに変数を渡してd3.jsのダイアグラムを描画する方法。
@dogrunjp
dogrunjp / create_simple_test_statuscake.md
Created July 26, 2016 01:19
StatusCakeとSlackを連携し、サービスを監視するシンプルな方法。

StatusCakeとslackを連携してサービスを監視するシンプルな方法

Slackで通知先のchannelのWebHooks URLを取得

Incoming WebHook設定ページ

  • "Post to Channel"パネルの"Choose a channel.."で投稿先のチャンネルを選択し、"Add Incoming.."ボタンでチャンネルを登録します。
@dogrunjp
dogrunjp / get_graph_from_GrapheneDB.py
Last active July 23, 2016 02:01
neo4jのDBaas "GrapheneDB"からCypherでデータを取得するミニマムなサーバ。グラフDBの初体験にいかがでしょう?
from bottle import route, run, HTTPResponse
from neo4jrestclient.client import GraphDatabase
username = "REST USERNAME"
password = "REST PASSWORD"
# APIのurlはユーザごと異なるかもしれません。
# APIの情報はサービスの"connection"タブに集約されています。
url = "http://{0}:{1}@ictknowledgegraph.sb10.stations.graphenedb.com:24789/db/data/".format(username, password)
gdb = GraphDatabase(url)
@dogrunjp
dogrunjp / fix_jupyter_kernelerror_under_pyenv.md
Last active July 6, 2016 09:23
pyenv環境で起動しているJupyterがkernel error (FileNotFoundError: [Errno 2] No such file or directory: '/Users/sushmitroy/anaconda/envs/py35/bin/python')になる現象の解決方法

pyenvでanaconda環境(notebookを利用する環境)に入った後、下記コマンドを実行

python -m IPython kernelspec install-self

参考

参考

@dogrunjp
dogrunjp / how2_install_mongo.md
Created March 29, 2016 04:18
Ubuntuにmongodbをインストールする方法。度々調べるのでメモ。

Ubuntuへmongodbをインストール

度々調べるのでメモしておく

  • Public Keyをインストール

    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10

  • List fileを作成

@dogrunjp
dogrunjp / how2_use_underscore_ejs_with_express.md
Last active March 10, 2016 12:10
express + Backbone.jsでクライアント側で非同期にデータを描画する際の設定に苦労したのでメモしておきます。

Backbone.jsのテンプレートを外部ファイルから読み込んだ際のviewの記述

express + Backbone.jsでクライアント側で動的にデータを描画する際のテンプレートの設定に苦労したのでメモしておきます。

謎なところは結構たくさんあるのだけど、 以下の点が最もわかり難かった箇所。

  • node.jsが先にejsをレンダリングしようとするので、クライアントサイドのテンプレートは動的に読み込む
  • underscore.jsのテンプレートへの引数の渡し方の作法が?
  • render:の関数でthis.templateの引数は(ハッシュでも良いけど実用的には)モデルオブジェクトをtoJSON()して渡すと何となく上手く描画した