Skip to content

Instantly share code, notes, and snippets.

View najeira's full-sized avatar

najeira

View GitHub Profile
@najeira
najeira / gist:5682804
Created May 31, 2013 03:36
verify Amazon SNS message
def verify(message):
# the string to sign
sign_str = []
for key in ("Message", "MessageId", "Subject", "Timestamp", "TopicArn", "Type"):
if key == "Subject" and key not in message:
continue
sign_str.append(key)
sign_str.append(message[key])
sign_str.append("")
sign_str = "¥n".join(sign_str)
@najeira
najeira / gist:3135184
Created July 18, 2012 09:13
nginx.conf example
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$request_time"';
sendfile on;
keepalive_timeout 65;
@najeira
najeira / gist:1769576
Created February 8, 2012 13:39
Get Key trough ReferenceProperty
from google.appengine.ext import db
class Foo(db.Model):
pass
class Bar(db.Model):
foo = db.ReferenceProperty(Foo)
Bar.foo.get_value_for_datastore(bar_obj) #=> Key of Foo
@najeira
najeira / gist:1341622
Created November 5, 2011 14:55
QueryIterator for async - Google App Engine / Python
class QueryIterator(object):
def __init__(self, query, limit=None):
self.limit = limit
self.count = 0
if limit:
config = datastore_query.QueryOptions(limit=limit, prefetch_size=limit)
else:
config = None
self.iterator = query.run(config=config)
@najeira
najeira / gist:1341295
Created November 5, 2011 09:02
encode and decode between int,long and string by Python
import struct, base64
def long_to_str(value):
value = struct.pack('q', value)
value = base64.urlsafe_b64encode(value)
value = value.rstrip('=')
value = value.rstrip('A')
return value
@najeira
najeira / test.py
Created October 3, 2011 08:03
Check mediawiki responses for Tuningathon#2
# -*- coding: utf-8 -*-
import urllib
import urllib2
import time
MASTER_SERVER = '127.0.0.1'
PAGE_FORMAT = 'http://%s/mediawiki/index.php/%s'
TARGETS = [
@najeira
najeira / send_goroutine
Last active August 29, 2015 14:24
fluent-logger-golang 修正メモ
## 課題
現在の実装では、送信 `f.conn.Write` の間はロックを獲得しているので、バッファ `pending` への書き込みをブロックする。ネットワークの送信は時間がかかるので、書き込みのパフォーマンスも出ない。
## 対策
Write ではロックを獲得しないようにする。
Write の前に送信するバッファを取得し、書き込み側が違うバッファを使うように差し替える。
また、Write 自体も別のgoroutineで実施する(そうでないと、ロックを回避したのに結局ブロックする)。
@najeira
najeira / gist:50be958f9ddf966caf28
Created May 11, 2015 02:50
ikのプラグインを作るためのメモ

in_httpを作りたい。

処理の流れを追ってみる。

インスタンス化

AddPluginでファクトリを登録する。 ikはファクトリのNewを呼び出してプラグインを生成する。 このNewでik本体と設定が渡される。

@najeira
najeira / gist:b8c9d438d30b242643bc
Last active August 29, 2015 14:20
Kinesisメモ

GoでKinesis用ライブラリを作るメモ

Writer

Kinesisにデータを送るクラス。

コネクションは呼び出し側で作成してもらう。 それを引数にしてWriterを生成する。

Addメソッドで行を追加していく。

# -*- coding: utf-8 -*-
import os
import datetime
import jinja2
import webapp2
from google.appengine.api import users
from google.appengine.ext import ndb
class Page(ndb.Model):
title = ndb.StringProperty(indexed=False)