Skip to content

Instantly share code, notes, and snippets.

View cesarferreira's full-sized avatar

César Ferreira cesarferreira

View GitHub Profile
class GetFriendsUseCase(
private val friendsRepository: FriendsRepository
) : BaseUseCase<List<User>, GetFriendsUseCase.Params>() {
override suspend fun run(params: Params): Either<Failure, List<User>> {
return try {
val friends = friendsRepository.getFriends(params.maxNumberOfFriends)
Either.Right(friends)
} catch (exp: Exception) {
@cesarferreira
cesarferreira / AsyncTaskActivity.java
Last active February 22, 2021 20:48
Advanced Android AsyncTask Callback example
package com.cesarferreira.asynctaskcallback;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
/// HttpMethod:
/// リクエストのメソッドを定義
/// Enum は Swift っぽくかける Util を使用
class HttpMethod extends Enum<String> {
const HttpMethod(String val): super(val);
static const HttpMethod GET = const HttpMethod('GET');
static const HttpMethod POST = const HttpMethod('POST');
static const HttpMethod PUT = const HttpMethod('PUT');
static const HttpMethod DELETE = const HttpMethod('DELETE');
@cesarferreira
cesarferreira / AndroidWorkerInjection.kt
Created November 7, 2018 14:25 — forked from ferrerojosh/AndroidWorkerInjection.kt
androidx workmanager injector temporary impl
import androidx.work.Worker
object AndroidWorkerInjection {
fun inject(worker: Worker) {
checkNotNull(worker, { "worker" })
val application = worker.applicationContext
if (application !is HasWorkerInjector) {
throw RuntimeException("${application.javaClass.canonicalName} does not implement ${HasWorkerInjector::class.java.canonicalName}")
}
@cesarferreira
cesarferreira / build.gradle
Created May 4, 2015 11:08
Skip lint check
tasks.whenTaskAdded { task ->
if (task.name.equals("lint")) {
task.enabled = false
}
}
@cesarferreira
cesarferreira / insertUser.kt
Created November 6, 2019 21:49
Clean insert user
// function createUser(user) {
// user.password = bcryptPassword(user.password)
// const userSaved = db.insert(user);
// generateConfirmationEmail(user)
// }
//
//
// function generateConfirmationEmail(user) {
// const key = `${md5(user.email)}.${Random.UUID()}`
// db.insertEmailConfirmation(user, key)
@cesarferreira
cesarferreira / tmux-cheatsheet.markdown
Created July 22, 2019 17:00 — forked from MohamedAlaa/tmux-cheatsheet.markdown
tmux shortcuts & cheatsheet

tmux shortcuts & cheatsheet

start new:

tmux

start new with session name:

tmux new -s myname
@cesarferreira
cesarferreira / gist:a6e38f609306f429167060fbb1caf2f5
Created July 18, 2019 13:03 — forked from bessarabov/gist:674ea13c77fc8128f24b5e3f53b7f094
One-liner to generate data shown in post 'At what time of day does famous programmers work?' — https://ivan.bessarabov.com/blog/famous-programmers-work-time
git log --author="Linus Torvalds" --date=iso | perl -nalE 'if (/^Date:\s+[\d-]{10}\s(\d{2})/) { say $1+0 }' | sort | uniq -c|perl -MList::Util=max -nalE '$h{$F[1]} = $F[0]; }{ $m = max values %h; foreach (0..23) { $h{$_} = 0 if not exists $h{$_} } foreach (sort {$a <=> $b } keys %h) { say sprintf "%02d - %4d %s", $_, $h{$_}, "*"x ($h{$_} / $m * 50); }'
@cesarferreira
cesarferreira / semaphores.m
Created December 19, 2014 20:35
Semaphores example
for(NSInteger i = 0; i < 10; i++) {
// enqueue operation in queue
dispatch_async(queue, ^{
// create semaphore
dispatch_semaphore_t sema = dispatch_semaphore_create(0);
// do something async, I do use another dispatch_queue for example
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
// wrap in autoreleasepool to release memory upon completion
// in your case wrap the resultBlock in autoreleasepool