Skip to content

Instantly share code, notes, and snippets.

View mahdiPourkazemi's full-sized avatar

Mahdi Pourkazemi mahdiPourkazemi

View GitHub Profile
### Keybase proof
I hereby claim:
* I am mahdipourkazemi on github.
* I am mahdipoori (https://keybase.io/mahdipoori) on keybase.
* I have a public key ASBiXDkQwDrOO7xTQ3cQQyQUMy-3NJcY1ItyO4J2O3zBZQo
To claim this, I am signing this object:
@mahdiPourkazemi
mahdiPourkazemi / gist:5b30e934e1bb48d0636a4f9d5aa6b222
Created May 23, 2022 18:22
remove bracket hell for using flow
//PourkazemiMahdi
fun <T> StateFlow<T>.collectIt(lifecycleOwner: LifecycleOwner, function: (T) -> Unit) {
lifecycleOwner.lifecycleScope.launch {
viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED){
collect {
function.invoke(it)
}
}
}
}
class FragmentViewBindingDelegate<T : ViewBinding>(
val fragment: Fragment,
val viewBindingFactory: (View) -> T
) : ReadOnlyProperty<Fragment, T> {
private var binding: T? = null
init {
fragment.lifecycle.addObserver(object : DefaultLifecycleObserver {
val viewLifecycleOwnerLiveDataObserver =
@AndroidEntryPoint
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
private val activityViewModel: ShearedViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@mahdiPourkazemi
mahdiPourkazemi / timer.py
Last active April 16, 2024 14:08
python decorator usage example
import time
import functools
def timer(func):
"""print the runtime of the decorated function"""
functools.wraps(func)
def timer_wraper(*args,**kargs):
#get time before call func
start_time = time.perf_counter()
#call func
value = func(*args,**kargs)
@mahdiPourkazemi
mahdiPourkazemi / debugger.py
Last active April 16, 2024 15:04
debugger tools to debug python code by decoration (monitoring input and output)
import functools
def debugger(func):
"""Print the functon singnature and return value"""
functools.wraps(func)
def debugger_wraper(*args,**kwargs):
#list of input args
args_repr = [repr(a) for a in args]
#list of input kwargs
kwargs_repr = [f'{k} = {v!r}' for k, v in kwargs.items()]
#sum of the input values
@mahdiPourkazemi
mahdiPourkazemi / slow_down.py
Last active April 16, 2024 15:06
slow down your code with python decoration (used for network and etc)
import time
import functools
def slow_down(func):
"""Sleep 1 second before calling the function"""
@functools.wraps(func)
def wrapper_slow_down(*args, **kwargs):
#stop code to play one secend
time.sleep(1)
#return called functon
@mahdiPourkazemi
mahdiPourkazemi / plug_in.py
Created April 16, 2024 15:22
Register a function as plug-in, using decoration
import random
PLUGINS = dict()
def register(func):
"""Register a function as plug-in"""
#add function name and function to dictionary
PLUGINS[func.__name__] = func
return func
#example to put in dictionary
@register
import os
import sys
import traceback
from functools import wraps
from multiprocessing import Process, Queue
def processify(func):
'''Decorator to run a function as a process.
Be sure that every argument and the return value
@mahdiPourkazemi
mahdiPourkazemi / gist:dc03bd55375a7da36b49af8d4c83edc7
Created November 5, 2024 15:53
This Kotlin snippet showcases various ways to evaluate whether an integer is divisible by another integer using higher-order functions, member extension functions, and lambda references. It’s designed to illustrate Kotlin’s functional programming capabilities in a simple, clear manner.
// A higher-order function that executes a lambda function `f` on `arg1` with `arg2` as an argument.
fun exec(
arg1: Int, arg2: Int,
f: Int.(Int) -> Boolean
) = arg1.f(arg2) // Calls the lambda `f` with `arg2`.
// A lambda that checks if an integer is divisible by another integer.
val isDivisibleLambda: Int.(Int) -> Boolean = { this % it == 0 }
// An extension function for Int that checks if it is divisible by a given integer.