Skip to content

Instantly share code, notes, and snippets.

View dreymonde's full-sized avatar
🇺🇦

Oleg Dreyman dreymonde

🇺🇦
View GitHub Profile
@dreymonde
dreymonde / Killer.MD
Last active March 7, 2016 22:13
Возвращение этики

Убийца у дверей

В одной из своих работ Иммануил Кант рассмотрел следующий случай: представьте, что к вам в дом стучится человек и говорит, что за ним гонится убийца, вы, естественно, пускаете человека к себе в дом, но вскоре к вам в дверь стучит другой человек (вы быстро понимаете, что это и есть тот самый убийца) и спрашивает, не забегал ли к вам в дом тот, кого вы укрыли. Скорее всего, интуитивно вы примете решение соврать потенциальному убийце.

Означает ли это, что моральный принцип «не лги» можно нарушать по вашему усмотрению? В каких случая ложь становится оправданной? Считаете ли вы, что и все другие люди, особенно те, от которых мы ждем честности, могут, исходя из своего пониманию ситуации, свободно определять, нужно ли говорить правду или ложь? Может ли врач из соображений человеколюбия врать пациентам? Может ли свидетель под благим предлогом лгать под присягой? Могут ли политики скрывать неприятную правду?

Действительно, если не ставить принцип «не лги» во главу угла, то его можно нарушать по

Таксисты-мародёры

В июле 2014 года в московском метро произошла крупная авария, в которой погибло 12 человек. Работа метро остановилась, горожане были вынуждены пересесть на общественный транспорт. Этой ситуаций воспользовались таксисты, которые подняли цены в несколько раз: некоторые таксисты просили за пятиминутную поездку тысячу рублей.

Могут ли продавцы товаров и услуг извлекать выгоду из ситуаций, возникших в результате катастроф, когда спрос на привычные товары и услуги многократно превышает предложение? Нужно ли регулировать такие ситуации законодательно? И если государство решает бороться с таким взвинчиванием цен, противоречит ли это принципам свободного рынка?

При всём нашем желании, мы просто не можем рассматривать эту ситуацию как набор простых вопросов. Мы запросто можем сказать, что таксисты в таких условиях не имели права повышать расценки, и что государству стоит ограничивать подобные «манёвры». Но при этом очевидно, что одним запретом или новым законом это не разрешить.

Допустим, го

public protocol Structure {
static var arrayLiteral: ([Self]) -> Self { get }
}
public protocol IntSupportingStructure {
static var fromInt: (Int) -> Self { get }
static var toInt: (Self) -> Int? { get }
@dreymonde
dreymonde / GenericMapper.swift
Last active August 3, 2016 08:53
Next generation of Mapper
protocol MapperProtocol {
associatedtype Key
func map<T>(from key: Key) throws -> T
func map<T>(arrayFrom key: Key) throws -> [T]
}
protocol Mappable {
@dreymonde
dreymonde / mapper-2.swift
Last active March 28, 2019 05:44
Next generation of Mapper, chapter 2
import Foundation
enum IndexPathValue {
case index(Int)
case key(String)
}
protocol IndexPathElement {
var indexPathValue: IndexPathValue { get }
}
import Foundation
public struct Synchronized<Value> {
fileprivate let accessQueue: DispatchQueue
fileprivate var value: Value
public init(_ value: Value, queueLabel: String = "\(Value.self)SynchronizedQueue") {
self.value = value
self.accessQueue = DispatchQueue(label: queueLabel)
@dreymonde
dreymonde / Completion.swift
Created February 27, 2017 23:26 — forked from amlcurran/Completion.swift
Better completion blocks by using higher order functions
func completion<Result>(onResult: @escaping (Result) -> Void, onError: @escaping (Error) -> Void) -> ((Result?, Error?) -> Void) {
return { (maybeResult, maybeError) in
if let result = maybeResult {
onResult(result)
} else if let error = maybeError {
onError(error)
} else {
onError(SplitError.NoResultFound)
}
}
{
"links": [
"https://raw.githubusercontent.com/dreymonde/LiveEndpoint/49f4844f13d96ee70ee9679ac3344d946b0aa381/Points/Nau.json",
"https://raw.githubusercontent.com/dreymonde/LiveEndpoint/49f4844f13d96ee70ee9679ac3344d946b0aa381/Points/Unu.json",
"https://raw.githubusercontent.com/dreymonde/LiveEndpoint/49f4844f13d96ee70ee9679ac3344d946b0aa381/Points/Tri.json",
"https://raw.githubusercontent.com/dreymonde/LiveEndpoint/49f4844f13d96ee70ee9679ac3344d946b0aa381/Points/Kvar.json",
]
}
struct UserConfirmationRequired {
private let performDestructiveAction: () -> ()
init(destructiveAction: @escaping () -> ()) {
self.performDestructiveAction = destructiveAction
}
func performWithUserConfirmation(alertTitle: String,
alertMessage: String,
// Based on Kickstarter-Prelude version
// https://github.com/kickstarter/Kickstarter-Prelude/blob/master/Prelude-UIKit/UIImage.swift
extension UIImage {
/**
- parameter color: A color.
- returns: A 1x1 UIImage of a solid color.
*/
static func pixel(ofColor color: UIColor) -> UIImage {
let lightModeImage = UIImage.generatePixel(ofColor: color, userInterfaceStyle: .light)