Building pixel perfect apps for 1 billion people. Areas: social network, delivery, finance, logistics.
**TikTok | October, 2023 – Present
| // MARK: - Main | |
| var cipherText = "vyc iafgrr xl o ozpghf qw qtvitzrn zorj. rwx qascg mvtvyi bg orgcem vyc gxtnvaibcp fd dnf yvyzgsujch. mvgicuhfg, jcrnfkkw xl bqk yqhiv dyzbbi kcrabqcmvr dgidtvh, dlr btykee rngvfktk inkgbthgcw hthkjdxxr ceb rhbhzbtgh. vyc bxhjfbh mvck uxez ofqi xthvaibjgcw bbbkdgox hjv yqbzkkw dy wpkpjwstj rd vcogpdfwuv gcyctdyibcp jcrnfkkw pks efkeksjvlhbjg lqtk htrgcbbi rls xrwtyibcp. rlnpoa, tmczfcksathkfl, nhi ularxsf km sxqkgftk mqlp ubfuk ktlgcxc xg hjzq rhitjc. xy mql udky jrpsxf vycc rcw ngae pg r edhr eiwemoprjnlh. ccqd, rcw ngae pg r edhr uvajkwvp qexqkrjxlh.".lowercased() | |
| var frequencyTable = getCharacterFrequency(of: cipherText) | |
| let sortedTable = frequencyTable.sorted(by: {$0.0 < $1.0}) | |
| print(sortedTable) | |
| // MARK: - Actions | |
| func getCharacterFrequency(of text: String) -> [Character: Int] { |
| import Foundation | |
| // MARK: - Main | |
| var cipherText = "vyc iafgrr xl o ozpghf qw qtvitzrn zorj. rwx qascg mvtvyi bg orgcem vyc gxtnvaibcp fd dnf yvyzgsujch. mvgicuhfg, jcrnfkkw xl bqk yqhiv dyzbbi kcrabqcmvr dgidtvh, dlr btykee rngvfktk inkgbthgcw hthkjdxxr ceb rhbhzbtgh. vyc bxhjfbh mvck uxez ofqi xthvaibjgcw bbbkdgox hjv yqbzkkw dy wpkpjwstj rd vcogpdfwuv gcyctdyibcp jcrnfkkw pks efkeksjvlhbjg lqtk htrgcbbi rls xrwtyibcp. rlnpoa, tmczfcksathkfl, nhi ularxsf km sxqkgftk mqlp ubfuk ktlgcxc xg hjzq rhitjc. xy mql udky jrpsxf vycc rcw ngae pg r edhr eiwemoprjnlh. ccqd, rcw ngae pg r edhr uvajkwvp qexqkrjxlh.".lowercased() | |
| var key = "crypto" | |
| let decipheredText = vigenereDecipher(cipher: cipherText, using: key) | |
| print(decipheredText) | |
| // MARK: - Actions |
| func imageFromSampleBuffer( | |
| sampleBuffer: CMSampleBuffer, | |
| videoOrientation: AVCaptureVideoOrientation) -> UIImage? { | |
| if let imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer) { | |
| let context = CIContext() | |
| var ciImage = CIImage(cvPixelBuffer: imageBuffer) | |
| // FIXME: - change to Switch | |
| if videoOrientation == .landscapeLeft { | |
| ciImage = ciImage.applyingOrientation(3) |