Skip to content

Instantly share code, notes, and snippets.

View pgreze's full-sized avatar

Pierrick Greze pgreze

View GitHub Profile
@pgreze
pgreze / gist:5dc2aa87f5b5925637072db5831cfff8
Created August 15, 2019 05:31
Junit5 stacktrace with latest alpha AGP
org.gradle.api.ProjectConfigurationException: A problem occurred configuring project ':app'.
at org.gradle.configuration.project.LifecycleProjectEvaluator.wrapException(LifecycleProjectEvaluator.java:79)
at org.gradle.configuration.project.LifecycleProjectEvaluator.addConfigurationFailure(LifecycleProjectEvaluator.java:72)
at org.gradle.configuration.project.LifecycleProjectEvaluator.access$600(LifecycleProjectEvaluator.java:53)
at org.gradle.configuration.project.LifecycleProjectEvaluator$NotifyAfterEvaluate.run(LifecycleProjectEvaluator.java:198)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
at org.gr
@pgreze
pgreze / MercariAndroidPlugin.kt
Created July 15, 2019 08:19
Project specific library / app plugins
import com.android.build.gradle.AppExtension
import com.android.build.gradle.AppPlugin
import com.android.build.gradle.BaseExtension
import com.android.build.gradle.LibraryPlugin
import org.gradle.api.Plugin
import org.gradle.api.Project
class MercariAndroidPlugin : Plugin<Project> {
override fun apply(project: Project) {
@pgreze
pgreze / git-bisect.md
Created May 11, 2019 05:30
Git Bisect How To
@pgreze
pgreze / CaptorToArgumentMatcher.kt
Last active November 28, 2018 10:05
Replace Mockito Captor by ArgumentMatcher
class CaptorToArgumentMatcher {
@Test
fun captor() {
ArgumentCaptor.forClass(JSONObject::class.java).also { captor ->
verify(tracker).view(eq("screen event"), captor.capture())
assertThat(captor.value.length()).isEqualTo(3)
assertThat(captor.value.get("number")).isEqualTo(12.3)
assertThat(captor.value.get("string")).isEqualTo("value")
@pgreze
pgreze / android-kotlin-library.gradle
Last active June 7, 2018 15:44
Kotlin/Android Maven/Bintray publishing
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3'
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.0' // generate Android friendly POM
}
@pgreze
pgreze / sendbird.md
Last active April 27, 2018 06:17
SendBird strong security strategy

1. Create an application (manual)

After login, go to your app Dashboard to discover:

  • APP_ID is your app authentication. Using the same accross all your Android/iOS clients is allowing to access same content.

  • API_TOKEN or in other words your Master API Token. This token is like your Bitcoin private key. NEVER SEND IT TO YOUR CLIENTS!

@pgreze
pgreze / ProductLayout.kt
Created April 14, 2017 08:51
A custom FrameLayout with height = height sum of 2 childs
package fr.pgreze.app.ui.product
import android.content.Context
import android.util.AttributeSet
import android.view.View
import android.widget.FrameLayout
import kotlinx.android.synthetic.main.item_product.view.*
class ProductLayout(context: Context, attrs: AttributeSet) : FrameLayout(context, attrs) {
package com.example;
public class Iterations {
static int solution_BinaryGap(int N) {
if (N < 2) return 0;
boolean isInGap = false;
int maxGap = 0, currentGap = 0;
for (int i = Integer.SIZE - 1; i >= 0; --i) {
if ((N & (1 << i)) != 0) {
#include "stdio.h"
// Best solution. Complexity: 2N
int solution(int A[], int N) {
if (N == 0) return -1;
if (N == 1) return 0;
int equilibriumIdx = -1;
// Compute sum or array except first element
int rightSum = 0;