This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | [{"name":"MVVM","ring":"Adopt","quadrant":"Techniques / Технологии","isNew":"ЛОЖЬ"},{"name":"Object - Orientired Programming","ring":"Adopt","quadrant":"Techniques / Технологии","isNew":"ЛОЖЬ"},{"name":"Citygile","ring":"Trial","quadrant":"Techniques / Технологии","isNew":"ЛОЖЬ"},{"name":"SPM","ring":"Assess","quadrant":"Techniques / Технологии","isNew":"ЛОЖЬ"},{"name":"Kanban","ring":"Hold","quadrant":"Techniques / Технологии","isNew":"ЛОЖЬ"},{"name":"Reactive Programming","ring":"Adopt","quadrant":"Techniques / Технологии","isNew":"ЛОЖЬ"},{"name":"Dependency Injection","ring":"Adopt","quadrant":"Techniques / Технологии","isNew":"ЛОЖЬ"},{"name":"Auto-generators","ring":"Adopt","quadrant":"Techniques / Технологии","isNew":"ЛОЖЬ"},{"name":"Feature Toggles","ring":"Adopt","quadrant":"Techniques / Технологии","isNew":"ЛОЖЬ"},{"name":"Unit testing","ring":"Adopt","quadrant":"Techniques / Технологии","isNew":"ЛОЖЬ"},{"name":"Cocoapods / Cocoapods-Binary","ring":"Adopt","quadrant":"Techniques / Технологии","isNew": | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | import UIKit | |
| import PlaygroundSupport | |
| /// Создадим класс рыбы с несколькими методами и свойством | |
| class Fish { | |
| var isItDefinitelySharkStored: Bool = false | |
| var isItDefinitelySharkComputed: Bool { | |
| return false | |
| } | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | import Accelerate | |
| import UIKit | |
| extension UIImage { | |
| // MARK: - Types | |
| private struct BlurComponents { | |
| /// Blur Radius. Mutable proeprty, feel free to change it | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | extension UIView { | |
| func asImage(nonAlphaBackgroundColor: UIColor?) -> UIImage { | |
| let savedColor = backgroundColor | |
| let savedCornerRadius = layer.cornerRadius | |
| layer.cornerRadius = 0 | |
| backgroundColor = nonAlphaBackgroundColor | |
| defer { | |
| backgroundColor = savedColor | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | protocol CellViewModel: AnyObject { | |
| associatedtype Cell | |
| var id: Int { get } | |
| func setup(cell: Cell) | |
| } | |
| class AnyCellViewModel<CollectionType: UIView>: CellViewModel { | |
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | final class ServiceLocator { | |
| private lazy var services: Dictionary<String, Any> = [:] | |
| private func typeName(some: Any) -> String { | |
| return (some is Any.Type) ? | |
| "\(some)" : "\(some.dynamicType)" | |
| } | |
| func addService<T>(service: T) { | |
| let key = typeName(T) | |
| services[key] = service | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | let queue1 = DispatchQueue(label: "com.playground.thread1", attributes: .concurrent) | |
| let queue2 = DispatchQueue(label: "com.playground.thread2") | |
| queue1.async { | |
| queue2.async { | |
| print("1") | |
| queue1.sync { | |
| sleep(1) | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | let queue1 = DispatchQueue(label: "com.playground.thread1") | |
| let queue2 = DispatchQueue(label: "com.playground.thread2") | |
| queue1.async { | |
| queue2.async { | |
| print("1") | |
| queue1.sync { | |
| sleep(1) | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | let queue1 = DispatchQueue(label: "com.playground.thread1") | |
| queue1.async { | |
| queue1.async { | |
| print("1") | |
| } | |
| print("2") | |
| var counter = 0 | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | queue1.sync { | |
| emoji1() | |
| } | |
| queue2.async { | |
| emoji2() | |
| } | 
NewerOlder