Skip to content

Instantly share code, notes, and snippets.

View devahmedshendy's full-sized avatar

Ahmed Shendy devahmedshendy

  • Egypt
View GitHub Profile
devahmedshendy / DynamicFunctions.swift
Created February 28, 2024 00:23 — forked from neonichu/DynamicFunctions.swift
Using dlopen / dlsym to call C functions from Swift
import Darwin
let handle = dlopen("/usr/lib/libc.dylib", RTLD_NOW)
let sym = dlsym(handle, "random")
let functionPointer = UnsafeMutablePointer<() -> CLong>(sym)
let result = functionPointer.memory()
devahmedshendy /
Last active January 16, 2024 08:56
Core Data Fundamentals - CheatSheet (Simple)

Core Data Fundamentals - CheatSheet (Simple)

Here, I will save basic coredata information for anyone/me would like a quick refresh for these fundamentals from time to time.

What is Core Data

  • Core Data is not a database, but instead it manages an Object Graph.


  • NSManagedObject and NSManagedObjectContext in Core Data are not thread-safe.
  • Core Data avoids data race issues by operating on NSManagedObject instances and NSManagedObjectContext instances in a serial queue.
    This is why we need to place the operation code within the closures of perform or performAndWait.
devahmedshendy / .gitignore
Created October 11, 2023 09:22
Gitignore for iOS Development
# Created by,swift,macos
# Edit at,swift,macos
### macOS ###
# General
# Icon must end with two \r


Tell your Mac what to do, declaratively

What is SwiftRobot?

It is the declarative Layer for RobotKit. It provides several tasks of type RobotTask that helps client define their required tasks in declarative way.

Robot Tasks

  • MouseRobotTask: A Robot task for mouse capability
final class UnitsViewModel {
// MARK: - Public Members/Methods
let onLoadingMoreUnits = PassthroughSubject<Bool, Never>()
let onInitialResult = PassthroughSubject<[UnitDto], Never>()
let onError = PassthroughSubject<HighLevelError.Reason, Never>()
var moreUnitsToLoad: Bool {
devahmedshendy / DetailFlagImageView.swift
Created September 29, 2021 18:40
Custom ImageView for Country Flags, Each flag should be rounded maintaining its original width & height ratio. So we make subclass of ImageView to update ration constraint for current image, then subclass it to set rounded feature for the current ImageView
final class DetailFlagImageView: RatioConstrainedImageView {
//MARK: - Init Methods
override init(frame: CGRect) {
super.init(frame: frame)
devahmedshendy / AndroidManifest.xml
Last active September 25, 2020 12:51
Hilt, The DI Library For Android – Part1: Getting To Know
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=""
devahmedshendy / MainActivity.kt
Last active August 31, 2020 11:08
USE CASE: Transition Background of Selected Item From Previous Selected Item (Sample: , Demo:
class MainActivity : AppCompatActivity() {
companion object {
private const val TAG = "MainActivity"
private lateinit var mBinding: ActivityMainBinding
private lateinit var mNamesAdapter: NamesAdapter
// MARK: Lifecycle Methods
devahmedshendy /
Last active July 10, 2020 06:48
Secure random values (in Node.js)

Not all random values are created equal - for security-related code, you need a specific kind of random value.

A summary of this article, if you don't want to read the entire thing:

  • Don't use Math.random(). There are extremely few cases where Math.random() is the right answer. Don't use it, unless you've read this entire article, and determined that it's necessary for your case.
  • Don't use crypto.getRandomBytes directly. While it's a CSPRNG, it's easy to bias the result when 'transforming' it, such that the output becomes more predictable.
  • If you want to generate random tokens or API keys: Use uuid, specifically the uuid.v4() method. Avoid node-uuid - it's not the same package, and doesn't produce reliably secure random values.
  • If you want to generate random numbers in a range: Use random-number-csprng.

You should seriously consider reading the entire article, though - it's

devahmedshendy / .gitignore
Last active February 18, 2019 10:51
Common gitignore entries
# Reference:
# Project #