Skip to content

Instantly share code, notes, and snippets.

View seyhunak's full-sized avatar
🏆
Polyglot Programmer

Seyhun Akyürek seyhunak

🏆
Polyglot Programmer
View GitHub Profile
@seyhunak
seyhunak / firebase_performance_slow_screens.sql
Last active August 31, 2021 19:09 — forked from sbrissenden/firebase_performance_slow_screens.sql
[BigQuery + Firebase Performance Monitoring] Find app screens with frozen frames impacting French users
SELECT
AVG(trace_info.duration_us / 1000000) AS seconds_on_screen,
AVG(trace_info.screen_info.slow_frame_ratio) AS slow_frame_ratio,
AVG(trace_info.screen_info.frozen_frame_ratio) AS frozen_frame_ratio,
event_name as screen,
country
FROM `ibam-d6cd2.firebase_performance.iba_mobilbank_IOS`
WHERE _PARTITIONTIME > TIMESTAMP("2019-05-09")
AND event_type = "SCREEN_TRACE"
AND country = "FR"
const MY_DOMAIN = 'rezaarkan.com';
const SLUG_TO_PAGE = {
'': '882cd6dd6e1e482d823b464f326213e5',
'now': '25b7df64071d420d8f609bf76d9f4114',
'portfolio': '6000547bed0d441793bfba1498c063e2',
'resume': '0934b80d2d1544f99dedadb00be9d146',
'recommendations': '29115129efa44f1a870f390dd2c0a6c0',
'photos': 'e78c0492a5ec486aa51f4cdb2c6f4603',
'blog': '29bb193c1a104ba2b832788b57d58cd6',
@seyhunak
seyhunak / HomeRecap.swift
Last active July 7, 2021 17:47
HomeScreen
//
// HomeRecap.swift
// iosApp
//
import SwiftUI
import shared
struct HomeRecap: View {
@seyhunak
seyhunak / README.md
Last active June 22, 2021 15:12
IOSEngineerCodingChallenge
@seyhunak
seyhunak / EmployeeApiService.swift
Last active November 9, 2023 08:02
Swift 5 - MVVM - ViewController, ViewModel, Model, Datasource, Webservice
import Foundation
class APIService : NSObject {
private let sourcesURL = URL(string: "http://dummy.restapiexample.com/api/v1/employees")!
func apiToGetEmployeeData(completion : @escaping (Employees) -> ()){
URLSession.shared.dataTask(with: sourcesURL) { (data, urlResponse, error) in
if let data = data {
let jsonDecoder = JSONDecoder()
let empData = try! jsonDecoder.decode(Employees.self, from: data)
@seyhunak
seyhunak / AppDelegate.swift
Last active July 6, 2020 08:22
Initializer
import Lokalise
func applicationDidBecomeActive(_ application: UIApplication) {
Lokalise.shared.checkForUpdates { _, _ in }
}
@seyhunak
seyhunak / AnalyticsManager.swift
Last active June 14, 2020 12:17
AnalyticsManager - Multiple Analytics Provider - Google, Firebase, Mixpanel, Facebook
import UIKit
import Firebase
import FirebaseAnalytics
//MARK - Analytics Service
protocol AnalyticsService {
func initialize(application: UIApplication, launchOptions: [UIApplication.LaunchOptionsKey: Any]?)
func track(event: AnalyticsEvent, parameters: [AnalyticsEventParameter : String])
var trackingEvents: [AnalyticsEvent] { get }
@seyhunak
seyhunak / DispatchQueue+Extensions.swift
Created June 2, 2020 05:58
DispatchQueue extension for situations where one needs to run an expensive operation in background and then use its result in the main thread
import Foundation
extension DispatchQueue {
func asyncConsumeInMainQueue<T>(
work: @escaping () throws -> T,
mainSuccess: @escaping (T) -> Void,
mainError: @escaping (Error) -> Void) {
async {
do {
let result = try work()
@seyhunak
seyhunak / AnalyticsManager.swift
Last active June 1, 2020 20:17
AnalyticsManager
import UIKit
public protocol AnalyticsServiceType {
var trackedEvents: [AnalyticsSectionEvent] { get }
func initialize(application: UIApplication, launchOptions: [UIApplication.LaunchOptionsKey: Any]?)
func track(event: AnalyticsEvent)
}
extension AnalyticsServiceType {
func shouldTrack(event: AnalyticsSectionEvent) -> Bool {
@seyhunak
seyhunak / DispatchGroup+Complete.swift
Created December 5, 2019 16:40 — forked from plummer/DispatchGroup+Complete.swift
DispatchGroup convenience wrapper for executing a series of blocks concurrently
import Foundation
extension DispatchGroup {
/// Completes a series of blocks and finally executes a completion handler.
///
/// - Parameters:
/// - label: An optional DispatchQueue label (defaults to bg)
/// - qos: An optional DipatchQos (defaults to background)
/// - blocks: The series of blocks to call.