Skip to content

Instantly share code, notes, and snippets.

View neworld's full-sized avatar
🇱🇹
Programming

Andrius Semionovas neworld

🇱🇹
Programming
  • Vinted
  • Vilnius, Lithuania
View GitHub Profile
@neworld
neworld / BreakDisposeChainObservable.kt
Created March 9, 2021 09:17
RxJava operator written in kotlin which breaks dispose chain
package com.vinted.feature.base.ui.rx
import io.reactivex.Observable
import io.reactivex.Observer
import io.reactivex.disposables.Disposable
/**
*
* Breaks dispose chain. Upstream will be not be disposed.
* This class should be used in cases where you need guarantee upstream will be executed at any price.
@Test(timeout = 10000)
fun secondSubscription_returnsImmediate() {
val subject = PublishSubject.create<Int>()
val cachedSubject = subject.successOnlyCache()
cachedSubject.test() //first subscription
cachedSubject.test() //second subscription
//this method will never finishes if subscription is blocked.
}
package com.vinted.drawables
import android.content.res.ColorStateList
import android.graphics.*
import android.graphics.drawable.Drawable
import android.text.DynamicLayout
import android.text.Editable
import android.text.Layout
import android.text.TextPaint
package com.neworldwar
import com.neworldwar.utils.Random
import org.junit.jupiter.api.BeforeAll
import org.junit.jupiter.api.RepeatedTest
import org.junit.jupiter.api.TestInstance
const val REQUESTS = 100
const val TOTAL_DEPENDENCIES = 1000
const val DEPENDENCIES_PER_REQUEST = 100
val checkLock = Object()
val disposeLock = Object()
val completable = Completable.create { emitter ->
synchronized(checkLock) {
checkLock.notify()
}
if (!emitter.isDisposed) {
synchronized(disposeLock) {
try {
@neworld
neworld / duff.c
Created September 27, 2017 14:42
send(to, from, count)
register short *to, *from;
register count;
{
register n = (count + 7) / 8;
switch (count % 8) {
case 0: do { *to = *from++;
case 7: *to = *from++;
case 6: *to = *from++;
case 5: *to = *from++;
data Tree a = Empty | Tree a (Tree a) (Tree a) deriving (Show)
singleton :: a -> Tree a
singleton x = Tree x Empty Empty
addToTree :: (Ord a) => a -> Tree a -> Tree a
addToTree new Empty = singleton new
addToTree new (Tree value left right)
| new < value = Tree value (addToTree new left) right
| otherwise = Tree value left (addToTree new right)
@neworld
neworld / TimedDynamicText.java
Created January 17, 2017 12:47
TimedDynamicText
public class TimedDynamicText extends SpannableStringBuilder {
private final ArrayDeque<Pair<Integer, CharSequence>> list;
private Handler handler = new Handler();
private CharSequence nextText = "";
public TimedDynamicText(CharSequence initialText, Collection<Pair<Integer, CharSequence>> list) {
this.list = new ArrayDeque<>(list);
nextText = initialText;
next();
// ==UserScript==
// @name Markdown img to html converter
// @namespace neworld
// @version 0.2.0
// @description Converts markdown img tag to html
// @author Neworld
// @match https://*.github.com/*
// @grant none
// @run-at context-menu
// ==/UserScript==
# bash/zsh completion support for core Git.
#
# Copyright (C) 2006,2007 Shawn O. Pearce <spearce@spearce.org>
# Conceptually based on gitcompletion (http://gitweb.hawaga.org.uk/).
# Distributed under the GNU General Public License, version 2.0.
#
# The contained completion routines provide support for completing:
#
# *) local and remote branch names
# *) local and remote tag names