Skip to content

Instantly share code, notes, and snippets.

@dogrunjp
dogrunjp / jquery_incrementalsearch_and_paging.md
Last active September 6, 2015 13:24
ページャ付きインクリメンタルサーチのjQueryによる実装。

ページャ付きインクリメンタルサーチをjQueryで実装する

はじめに

jQueryには、高機能なテーブル描画プラグインが色々開発されていて、Webサイトにある程度整形した形でデータをリスト表示しようとすると、インタラクション付きのプラグインを使ってしまうのが簡単だろうと思います。

最近自分が良いなと思っているテーブル描画プラグインはDynatable.jsColumnsなどで、検索やページャの機能をインタラクティブに実装したかなり作り込まれたプラグインで、データ一覧などのテーブルをjavascriptで動的に描画するようなときは大抵これで済むのでは、、と思っています。特にColumnsは、テンプレートエンジンのMustacheを利用していて、この手のプラグインでは最も自由度の高いレイアウトができそうです。

ただしColumnsでもイテレータによって生成される値がTABLEの行としてHTMLにレンダリングされた文字列で、場合によって、例えばBootstrapのコンポーネントでリスト的に表示したいようなケースでは使えなかったりします。

@dogrunjp
dogrunjp / Create_new_app_with_appengine.md
Last active September 21, 2016 09:01
Google app engineに新しいアプリケーションを作るには(Mac & Python)

Google app engineに新しいアプリケーションを立ち上げる(Mac & Python)

はじめに

Google app engineは無料の枠内でWebアプリを公開できるPaaSとして最も規模が大きく、使い勝手の良いサービスです。 herokuの料金体系が代わり無料での稼働がほぼできなくなると、実質無料で使うことができる唯一のPaaSかもしれません。 Googleが運営するインフラサービスということもあり、持続性に関してもある程度期待して使っていいのではないかと思います。

アプリケーションをつくる

長く運営されているサービスのため、Googleも新しい取組みがいろいろ始まり、 app engineは現在単体のサービスというよりGoogle Cloud Platformの一部という位置づけです。

@dogrunjp
dogrunjp / easyreplace.md
Last active October 14, 2015 07:39
指定したディレクトリのファイル内の文字列を一括して変換するPythonスクリプト。静的ファイルの中身の置き換え作業がたまに発生するのですが、sedを使い慣れないため、Pythonで作っておきました。

使い方

$ python easyreplace.py [対象とするディレクトリ] "置換する対象文字列" "置換後の文字列" [-r] [-c]

  • -r :オプション 対象文字列を正規表現で記述
  • -c :オプション 別名で保存(頭に_を付けます)
@dogrunjp
dogrunjp / python_gettagmember.md
Last active August 29, 2015 14:25
アイテムに紐づけられた要素がリストとして登録されたJSONから、要素でネストして紐づけられたアイテムのIDのリストをJSONとして返す方法。

アイテムに紐づけられた要素がリストとして登録されたJSONから、要素でネストして紐づけられたアイテムのIDのリストを返す方法。

[
{"id": "item1","tags":["apple", "banana", "orange"]},
{"id": "item2","tags":["apple", "banana"]},
{"id": "item3","tags":["apple", "banana", "grape"]},..
]
@dogrunjp
dogrunjp / Grouping_listofdict2dict.md
Last active August 29, 2015 14:22
Pythonで辞書型リストのデータをあるキーによってグルーピングした辞書型に変換する方法

【Python】辞書型リストのデータをあるキーによってグルーピングした辞書型に変換する方法

Jinja2のテンプレートの中でイテラティブに利用できるコレクションとして出力すること目的に、 辞書型のリストをある項目をキーにグループ化した辞書型に変換する方法を考えてみました。

categories_list = []
for item in list:
   categories = {k: v for k, v in item.items() if k == 'id' or k == 'category' or k == 'name'}
 categories_list.append(categories.values())
@dogrunjp
dogrunjp / get_worksheet_with_sheetAPI.md
Last active August 29, 2015 14:22
PythonでSheets APIを使ってGoogle spreadsheetのレコードを取得する方法(OAuth2.0対応バージョン)

PythonでSheets APIを使ってGoogle spreadsheetのレコードを取得する方法

Sheets APIはこれまで OAuth 1.0対応していて Google spreadsheetからワークシート全件のリストを取得するための認証は

client = gdata.spreadsheet.service.SpreadsheetsServie(email, password)

のように非常に簡単でした。延々アナウンスされていたことではありますが、 つい先日 Sheet APIのOAuth 1.0のサポートがついに完全に停止してしまったようで

@dogrunjp
dogrunjp / Markup_markdown_with_jinja2.md
Last active November 30, 2015 15:14
PythonのテンプレートエンジンJinja2にMarkdownを読み込みレンダリングする方法

PythonのテンプレートエンジンJinja2にMarkdownを読み込みレンダリングする方法

タイトルの通りのことを色々試していたのでメモしておきます。

1)テンプレートフィルタの利用

Jinja2とMarkdownで検索して、 最初に見つけたのがDjango+Jinja2でMarkdown用のカスタムフィルタを使う方法。 テンプレートに関する部分はだいたいJinja2なので、Djangoに関係なくMarkdownを扱えます。

@dogrunjp
dogrunjp / Python_list_comprehension2get_matchordifferencies.md
Last active August 29, 2015 14:21
Pythonでdictを要素としたリストをリスト内包表記を使い差分や一致する要素のみ取得したいとき

Pythonでdictを要素としたリストをリスト内包表記を使い差分や一致する要素のみ取得したいとき

例えばJSONを取得し辞書型のリストを得て、 id等を別のリストのidとつき合わせて一致した要素だけを含むリストを新しく作りたいときのリスト内包表記。

list_match = [x for x in list_original if x['id'] in list_comparison]

@dogrunjp
dogrunjp / How2get_stringobj_instead_unicode.md
Last active September 2, 2020 02:31
Pythonのjson.load() で文字列の値をunicodeにcastしないで扱いたいとき…

Python のjson.load()で文字列の値をunicodeにcastしないで扱いたいとき。

たとえば JSONからid だけ読み込んで 内部的に生成されたasciiなstringと差分のリストを取得したいとかを想定しているのですが、 json.load()でunicodeに変換されないようにしたい!というだけなのに意外にちょっとした手間がかかるのでメモしておきます。


with open(file_path, 'r') as f:
@dogrunjp
dogrunjp / get_filtered_dict_from_spreadsheet.md
Last active August 29, 2015 14:21
PythonでGoogle spreadsheetからレコードを取得しリストに変換する方法

PythonでGoogle spreadsheetのデータを取得し、リストに変換、さらにJSONを生成するには…

まずはレコードの取得

スプレッドシートのレコードオブジェクトをシート名を指定し取得します。

dbClient = gdata.spreadsheet.service.SpreadsheetsService(username, passwd)