Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

View faruktoptas's full-sized avatar
🐝
I may be slow to respond.

Faruk Toptaş faruktoptas

🐝
I may be slow to respond.
View GitHub Profile
@faruktoptas
faruktoptas / debounce.kt
Created March 5, 2020 06:28
Kotlin coroutine debounce for EditText
fun <T> debounce(
waitMs: Long = 300L,
scope: CoroutineScope,
destinationFunction: (T) -> Unit
): (T) -> Unit {
var debounceJob: Job? = null
return { param: T ->
debounceJob?.cancel()
debounceJob = scope.launch {
delay(waitMs)
@faruktoptas
faruktoptas / gen.py
Created September 22, 2018 20:06
Generate Android/iOS localization files from a JSON file
import sys,json,os, collections
infile = 'res.json'
def __main__():
if (len(sys.argv) < 3):
print "Usage: \npython gen.py [android | ios] outfile"
sys.exit()
type = sys.argv[1]
if (type != "android" and type != "ios" ):
@faruktoptas
faruktoptas / KeyboardSensitiveRelativeLayout.java
Last active November 3, 2023 17:50
A layout that detects Soft Keyboard is visible or not.
public class KeyboardSensitiveRelativeLayout extends RelativeLayout {
private OnKeyboardShowHideListener listener;
public KeyboardSensitiveRelativeLayout(Context context) {
super(context);
}
public KeyboardSensitiveRelativeLayout(Context context, AttributeSet attrs) {
super(context, attrs);
@faruktoptas
faruktoptas / RetrofitTest.kt
Created February 2, 2023 19:03
Test Retrofit with mock web server
// testImplementation "com.squareup.okhttp3:mockwebserver:4.7.2"
class RetrofitTest {
@get:Rule
private val server = MockWebServer().apply { dispatcher = MockDispatcher() }
private lateinit var api: Api
@Before
fun setup() {
object MrzValidator {
private val COEFFICIENTS = listOf(7, 3, 1)
private const val EMPTY = '<'
/**
* Samples:
* - Document number: isValid("D123456785", 0, 9) actual document number is "D12345678" check character is "5"
* - Date: isValid("7903063", 0, 6)) actual date is "790306" check character is "3"
*/
# Add curl
apk add curl
# Response time
curl -o /dev/null -s -w 'Total: %{time_total}s\n' https://www.google.com
@faruktoptas
faruktoptas / PubKeyManager.java
Last active April 27, 2021 07:14
Public Key Pinning
public final class PubKeyManager implements X509TrustManager {
private String publicKey;
public PubKeyManager(String publicKey) {
this.publicKey = publicKey;
}
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
if (chain == null) {
@faruktoptas
faruktoptas / build.gradle
Created October 22, 2015 08:25
Rename output apk file (append versionName)
android {
// ....
applicationVariants.all { variant ->
renameApk(variant, defaultConfig)
}
}
// ---------------------------
def renameApk(variant, defaultConfig) {
@faruktoptas
faruktoptas / build.gradle
Created November 11, 2018 05:27
Useful gradle commands
// Depenency graph
./gradlew -q dependencies app:dependencies
import android.databinding.DataBindingUtil
import android.databinding.ViewDataBinding
import android.support.annotation.IdRes
import android.support.v7.widget.RecyclerView
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
abstract class BaseBindingListAdapter<T, in DB : ViewDataBinding> : RecyclerView.Adapter<BaseBindingListAdapter<T, DB>.BaseViewHolder>() {