Skip to content

Instantly share code, notes, and snippets.

View nkmrh's full-sized avatar
🐧

Hajime Nakamura nkmrh

🐧
View GitHub Profile
service cloud.firestore {
match /databases/{database}/documents {
function isAuthenticated() {
return request.auth != null;
}
function isBannedUser(userID) {
return exists(/databases/$(database)/documents/bannedUser/$(userID));
}
Skin
/m/06z04
0.942024
Hand
/m/0k65p
0.933021
Flesh
/m/02p16m6
0.748568
Beard
let labelDetector = Vision.vision().labelDetector()
let image = #imageLiteral(resourceName: "zombie")
let visionImage = VisionImage(image: image)
labelDetector.detect(in: visionImage) { (labels, error) in
guard error == nil, let labels = labels, !labels.isEmpty else {
// Error. You should also check the console for error messages.
// ...
return
}
export async function wasTriggered(eventId: string) {
return firestore.runTransaction(async t => {
const ref = eventIdRef
const doc = await t.get(ref)
if (doc.exists) {
return true
} else {
t.set(ref, {})
return false
}
@nkmrh
nkmrh / file0.swift
Created May 17, 2018 09:23
UITextfield がキーボードに隠れないようにする ref: https://qiita.com/nkmrh/items/8bd2be71dd8cc1f6e4c1
import UIKit
import PlaygroundSupport
class ViewController: UIViewController {
private var scrollView: UIScrollView!
private var textField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
@nkmrh
nkmrh / fcm-curl.sh
Created March 5, 2018 00:50
FCM with curl
curl -X POST --header "Authorization: key={SERVER_KEY}" \
--Header "Content-Type: application/json" \
https://fcm.googleapis.com/fcm/send \
-d @- << EOF
{
"to": "{DEVICE_TOKEN}",
"data": {
"videoURL": "{URL}"
},
"notification": {
@nkmrh
nkmrh / torchWorkaround.swift
Created February 28, 2018 07:06
Torch workaround
try? videoDevice.lockForConfiguration()
if newValue > 0.1 {
try? videoDevice.setTorchModeOn(level: newValue)
} else {
videoDevice.torchMode = .off
}
videoDevice.unlockForConfiguration()
@nkmrh
nkmrh / preventsSameEventID.js
Created February 23, 2018 05:49
It prevents the same event ID from being executed more than once
var alreadyRunEventIDs = [];
function isAlreadyRunning(eventID) {
return alreadyRunEventIDs.indexOf(eventID) >= 0;
}
function markAsRunning(eventID) {
alreadyRunEventIDs.push(eventID);
}
@nkmrh
nkmrh / FRP-Reading-circle-meeting-3.md
Last active October 26, 2017 03:47
FRP-Reading-circle-meeting-3

前前回のおさらい

1.12 FRP の仕組み

FRP を使った航空券予約サンプル

サンプルコード

1.17 イベントベースのコードに関数型プログラミングを適用する

@nkmrh
nkmrh / FRP-Reading-circle-meeting-1.md
Last active October 5, 2017 01:42
関数型リアクティブプログラミング 輪読会 1

第1章 目だけではなく、手も使おう

  • FRP は標準的なプログラミング言語で書かれた単純なライブラリとして提供され、Observer パターンのリスナーを置き換える。リスナーはコールバックとも呼ばれる

  • FRP により、物事を行う方法は大きく変わる。コードが改善され、あなたの思考がよい方向に変わる。さらに、経験してきたコードの書き方に意外に通じるものがあるため、既存のプロジェクトに段階的に取り入れるのも容易である。

1.1 プロジェクト:複雑さの壁にぶつかる

  • FRP は、複雑さの主な要因の1 つとなっている領域のコード、つまり「イベントの伝播」のコードを改善するためのプログラミング手法である