Skip to content

Instantly share code, notes, and snippets.

View JunKikuchi's full-sized avatar

Jun Kikuchi JunKikuchi

View GitHub Profile
@JunKikuchi
JunKikuchi / gist:e23838ff6879c263373ddf5e7cf03ebf
Last active April 4, 2019 13:57
Firestore REST API Transaction Log
>>>>> [start 2019-04-03 22:58:26.043337 UTC]
[Client Request] {
host = firestore.googleapis.com:443
secure = True
method = POST
timeout = ResponseTimeoutMicro 70000000
redirects = 10
path = /v1/projects/shogix/databases/(default)/documents:beginTransaction
query = ?alt=json
headers = authorization: Bearer ...omitted...; accept: application/json;charset=utf-8; content-type: application/json;charset=utf-8
import Data.Aeson
import Data.Text.Lazy as LazyT
import Data.Text.Lazy.Encoding as LazyT
import Data.Maybe
json <- LazyT.encodeUtf8 . LazyT.pack <$> readFile "foobar.json"
serviceAccount = fromJust (decode json :: Maybe ServiceAccount)
scopes = [T.pack "https://www.googleapis.com/auth/datastore", T.pack "https://www.googleapis.com/auth/cloud-platform"]
request <- createAccessTokenRequest scopes Nothing serviceAccount
token <- runGetAccessToken request
import Control.Lens
import Data.ProtoLens.Runtime.Data.ProtoLens
import Proto.Google.Firestore.V1beta1.Document as Doc
import Proto.Google.Firestore.V1beta1.Document_Fields as Doc
import Data.Text as T
import Data.Map
value = defMessage & maybe'valueType .~ (_Just # _Value'BooleanValue # Prelude.True) :: Doc.Value
-- {boolean_value: true}
@JunKikuchi
JunKikuchi / 池の数を数えるプログラム.rb
Last active September 26, 2017 05:16
池の数を数えるプログラム
data =<<END
水土土土土土土土土水水土
土水水水土土土土土水水水
土土土土水水土土土水水土
土土土土土土土土土水水土
土土土土土水土土土水土土
土土水土土土土土土水土土
土水土水土土土土土水水土
水土水土水土土土土土水土
土水土水土土土土土土水土
def lazy_fibs
Enumerator.new do |y|
a, b = 1, 1
loop do
y << a
a, b = b, a + b
end
end.lazy
end
class FooWorker
include Sidekiq::Worker
def perform(user_id)
user = User.find(user_id) # user_id が見つからないというエラーが、発生したりしなかったり
...省略...
end
end
user = nil
ActiveRecord::Base.transaction do
user = User.create!(...省略...)
...省略...
end
FooWorker.perform_async(user.id) if user.present? # 非同期ジョブ投入
user = ActiveRecord::Base.transaction do
user = User.create!(...省略...)
...省略...
user
end
FooWorker.perform_async(user.id) if user.present? # 非同期ジョブ投入
ActiveRecord::Base.transaction do
user = User.create!(...省略...)
...省略...
FooWorker.perform_async(user.id) # 非同期ジョブ投入
...省略...
end