Last major update: 25.08.2020
- Что такое авторизация/аутентификация
- Где хранить токены
- Как ставить куки ?
- Процесс логина
- Процесс рефреш токенов
- Кража токенов/Механизм контроля токенов
/// Playground - noun: a place where people can play | |
/// I am the very model of a modern Judgement General | |
//: # Algorithm W | |
//: In this playground we develop a complete implementation of the classic | |
//: algorithm W for Hindley-Milner polymorphic type inference in Swift. | |
//: ## Introduction |
import UIKit | |
class ChatCollectionViewFlowLayout: UICollectionViewFlowLayout { | |
private var topMostVisibleItem = Int.max | |
private var bottomMostVisibleItem = -Int.max | |
private var offset: CGFloat = 0.0 | |
private var visibleAttributes: [UICollectionViewLayoutAttributes]? |
// Yeah, global variables suck, but it's kind of a necessary evil here | |
AudioUnit *audioUnit = NULL; | |
float *convertedSampleBuffer = NULL; | |
int initAudioSession() { | |
audioUnit = (AudioUnit*)malloc(sizeof(AudioUnit)); | |
if(AudioSessionInitialize(NULL, NULL, NULL, NULL) != noErr) { | |
return 1; | |
} |