Skip to content

Instantly share code, notes, and snippets.

@takasek
takasek / file0.swift
Last active November 4, 2017 10:04
AWS API Gateway(SDK version ≧2.6)の自動生成コードを、ちゃんとコンパイルが通るSwiftyなコードで置き換える ref: http://qiita.com/takasek/items/112f866386d4594dc313
init(configuration: AWSServiceConfiguration) {
super.init()
var urlString = "https://xxxxxxxxxx.execute-api.{region}.amazonaws.com/{stage名}"
if urlString.hasSuffix("/") {
urlString = String(urlString.dropLast())
}
self.configuration = AWSServiceConfiguration(
region: configuration.regionType,
endpoint: AWSEndpoint(region: configuration.regionType, service: .APIGateway, url: URL(string: urlString)),
@takasek
takasek / CodePiece.swift
Last active October 27, 2017 03:32
あと、今日DiscordのSwiftチャンネルでの本題「URL?型に空文字を与えるとdecodeでエラーになるのどうするか」、色々方法出たけど、俺的にはここが結論。 #CodePiece
/// 空文字などのURLが作れない文字列でもデコードに成功する型を用意
struct RobustURL: Codable, RawRepresentable {
let rawValue: String
var typed: URL? {
return URL(string: rawValue)
}
}
/// CGSizeと互換性があるのは
/// {"width": Number, "height": Number} じゃなくて
@takasek
takasek / CodePiece.js
Created September 2, 2017 04:53
すごい小ネタなんですが思いつきで、Workflowyからつぶやけるスクリプト書きました。Macのtwitterクライアントがインストールされてる前提。 #CodePiece
document.location.href = "twitter://post?message=" + encodeURIComponent(getSelection().focusNode.wholeText)
@takasek
takasek / DeskFlowy_Markdown化.js
Last active October 14, 2017 05:32
WorkFlowyのトピックをMarkdown化するDeskFlowy( http://nap.jp/michi/DeskFlowy/ja/ )用スクリプト。1段目は ##、2段目は###、3段目は本文、4段目以降はリストとして扱います。
(function() {
var lastIndents = null;
var lastNode = null;
var lastParsedLine = null;
function stringify(node, indents) {
const text = node.children(".name").children(".content").text();
var lines = [];
@takasek
takasek / Docoder+TypeInference.swift
Last active October 3, 2018 18:30
Decoder, DecodingContainerの、デコード先の型を推論させたい!明示的に指定したくない! ref: http://qiita.com/takasek/items/f51c26a8ee6a2929bb6e
import Foundation
extension JSONDecoder {
func decode<T: Decodable>(from data: Data) throws -> T {
return try decode(T.self, from: data)
}
}
extension PropertyListDecoder {
func decode<T: Decodable>(from data: Data) throws -> T {
return try decode(T.self, from: data)
@takasek
takasek / CodePiece.swift
Created June 25, 2017 14:41
「ジェネリクスは抽象型メンバーでエンコード可能。逆は可能かどうか」って話があったけど、Swiftでその「逆」を表現してみた。意図は合ってるかな…? #CodePiece #ジェネリクス勉強会
//付属型メンバーを持つ抽象型 Abstract1 を定義
protocol Abstract1 {
associatedtype A
associatedtype B
func tellMyType(a: A) -> Self.Type
}
//付属型メンバーを持つ抽象型 Abstract2 を定義
protocol Abstract2 {
associatedtype E
var element: E { get }
@takasek
takasek / CodePiece.swift
Last active June 24, 2017 20:29
JSONのキーが "name" でも "NAME" でも受け入れてくれるDecodable #CodePiece
func decodeJSON<T: Decodable>(_ t: T.Type, from string: String) {
let data = string.data(using: .utf8)!
let decoder = JSONDecoder()
let s = try! decoder.decode(t, from: data)
print(s)
}
struct Robustness: Decodable {
let name: String
@takasek
takasek / CodePiece.swift
Last active June 21, 2017 07:53
別のCodingKeysを用意して、複数キーを使ってプロパティを組み立てる例 #CodePiece
import UIKit
func decodeJSON<T: Decodable>(_ t: T.Type, from string: String) {
let data = string.data(using: .utf8)!
let decoder = JSONDecoder()
let s = try! decoder.decode(t, from: data)
print(s)
}
@takasek
takasek / CodePiece.swift
Created June 20, 2017 11:25
protocolと参照型の生存期間について確認コード #CodePiece
import Foundation
protocol P {
var name: String { get }
}
class C: P {
var name: String
init(name: String) {
self.name = name
}
@takasek
takasek / CodePiece.swift
Created June 20, 2017 11:08
SwiftのArrayのCopy-on-Writeを確認してみる #CodePiece
import Foundation
func address(_ o: UnsafeRawPointer) -> String {
return String(
format: "%p",
Int(bitPattern: o)
)
}
let array = [1,2,3]