Skip to content

Instantly share code, notes, and snippets.

@cm-TanakaKenji
cm-TanakaKenji / CardExtension.swift
Last active April 5, 2018 01:43
テストのためのヘルパーメソッド。意図としてはテストの可読性を上げるため
extension Card {
init(_ notation: String) {
self.suit = Suit(rawValue: String(notation.prefix(1)))!
self.rank = Rank(rawValue: String(notation.suffix(notation.characters.count - 1)))!
}
}
card = Card("♥1")
//
// SynchronizeScrollMediatorTest.swift
// CollectionViewInTableViewTests
//
// Created by tanaka.kenji on 2018/02/16.
// Copyright © 2018年 tanaka.kenji. All rights reserved.
//
import XCTest
@testable import Hoge
@cm-TanakaKenji
cm-TanakaKenji / SynchronizeScrollMediator.swift
Created February 19, 2018 08:16
同期される側のScrollView = synchronizee。同期する側のScrollView = synchronizer。
import UIKit
class SynchronizeScrollMediator: NSObject {
// MARK: - Base
private(set) weak var synchronizer: UIScrollView!
private(set) weak var synchronizee: UIScrollView!
private let synchronizeKeyPath = "contentOffset"
init(synchronizer: UIScrollView, synchronizee: UIScrollView) {
@cm-TanakaKenji
cm-TanakaKenji / redify_jp_slide_to_upload_slideshare.sh
Created October 28, 2017 06:05
https://qiita.com/yasulab/items/49511c27179be454d568 ←を参考にした。 SlideshareにKeynoteから生成したpdfをあげると日本語が表示されない問題がある。それを防ぐスクリプト。使い方は `sh redify_jp_slide_to_upload_slideshare.sh <pdfのファイルパス>`
#!/bin/bash
set -eu
while getopts p: OPT
do
case $OPT in
"p" )
FILE_PATH=$OPTARG;;
esac
@cm-TanakaKenji
cm-TanakaKenji / gist:0bbc20ccf73be9396d2bc167b1f6f505
Created October 28, 2017 06:03
SlideshareにKeynoteから生成したpdfをあげると日本語が表示されない問題がある。それを防ぐスクリプト。
#!/bin/bash
set -eu
while getopts p: OPT
do
case $OPT in
"p" )
FILE_PATH=$OPTARG;;
esac
@cm-TanakaKenji
cm-TanakaKenji / get_value_from_response_json.sh
Last active October 6, 2017 09:16
jqというCLIツールを使ってJSONの値を取得する。前提として、HTTP_RESPONSEで返される結果はjson形式になっていること。
#!/bin/sh
set -xe
HTTP_RESPONSE=$(curl -X POST --silent <url>)
# { "hoge": "fuga" }
VALUE=$(echo $HTTP_RESPONSE | jq '.hoge')
# "fuga" が出力される
URL="http://stackoverflow.com/"
# store the whole response with the status at the and
HTTP_RESPONSE=$(curl --silent --write-out "HTTPSTATUS:%{http_code}" -X POST $URL)
# extract the body
HTTP_BODY=$(echo $HTTP_RESPONSE | sed -e 's/HTTPSTATUS\:.*//g')
# extract the status
HTTP_STATUS=$(echo $HTTP_RESPONSE | tr -d '\n' | sed -e 's/.*HTTPSTATUS://')
@cm-TanakaKenji
cm-TanakaKenji / CalculateImageHeight.swift
Created June 2, 2017 07:45
セルの高さ計算などに。
private func calculateImageHeight(fromImageSize imageSize: CGSize, imageViewWidth: CGFloat) -> CGFloat {
let aspectRatio = imageSize.width / imageViewWidth
let imageHeight = imageSize.height / aspectRatio
return imageHeight
}
@cm-TanakaKenji
cm-TanakaKenji / CompareEnumOnTest.swift
Last active April 20, 2017 10:33
Enumで定義したエラーの比較と、それをXCTAssertで評価するサンプル
enum SomeError: Error, Equatable {
case a
case b
// Equatableプロトコル準拠。caseを判別するためにhashValueを比較する
static func ==(lhs: MockError, rhs: MockError) -> Bool {
return lhs.hashValue == rhs.hashValue
}
}
let documentPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as String
// ファイル内に書き込む情報
let fileObject = "\(userInfo)"
// ファイル名
let fileName = "file.txt"
let filePath = documentPath + "/" + fileName
do {
try fileObject.write(toFile: filePath, atomically: true, encoding: String.Encoding.utf8)
} catch {
()