Skip to content

Instantly share code, notes, and snippets.

@InsanusMokrassar
InsanusMokrassar / terminal_launch.sh
Created May 22, 2018 11:09
Shadowsocks launch functions which can be included by `source terminal_launch.sh` or by put this script in auto-start scripts such as `.bashrc`
# Return (echo) last ss-local task
proxy_task() {
echo `ps -u $USER | grep "ss-local"`
}
proxy_status() {
if [ -z "`proxy_task`" ]; then
echo "Disabled"
else
echo "Enabled"
@InsanusMokrassar
InsanusMokrassar / KeyValueStore.kt
Last active December 7, 2017 03:28
KeyValueStore for android on kotlin
import android.content.Context
import android.content.SharedPreferences
import com.github.insanusmokrassar.IObjectK.interfaces.IObject
import com.github.insanusmokrassar.IObjectK.realisations.SimpleIObject
import java.io.Serializable
private val cache = HashMap<String, MutableMap<String, KeyValueStore>>()
fun Context.keyValueStore(
name: String = getString(R.string.defaultKeyValueStore)
@InsanusMokrassar
InsanusMokrassar / AbstractViewHolder.kt
Last active November 22, 2017 05:45
Simple realisation of RecyclerViewAdapter and holder
import android.support.v7.widget.RecyclerView
import android.view.View
abstract class AbstractViewHolder<in T>(viewCreator: () -> View) : RecyclerView.ViewHolder(viewCreator()) {
abstract fun refreshItem(item: T)
}
@InsanusMokrassar
InsanusMokrassar / DatabaseExtensions.kt
Last active November 25, 2017 10:04
Very simple ORM CRUD Android SQL managment
import android.content.ContentValues
import android.database.Cursor
import android.database.sqlite.SQLiteDatabase
import android.util.Log
import kotlin.reflect.KClass
import kotlin.reflect.KProperty
val nativeTypesMap = mapOf(
Pair(
Int::class,
@InsanusMokrassar
InsanusMokrassar / dimens.xml
Last active November 5, 2017 04:47
Standard android dimens
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="textDefaultExtraSmallSize">10sp</dimen>
<dimen name="textDefaultSmallSize">14sp</dimen>
<dimen name="textDefaultMediumSize">18sp</dimen>
<dimen name="textDefaultLargeSize">22sp</dimen>
<dimen name="textDefaultExtraLargeSize">26sp</dimen>
<dimen name="viewDefaultSmallMargin">4dp</dimen>
<dimen name="viewDefaultMediumMargin">8dp</dimen>
@InsanusMokrassar
InsanusMokrassar / LoggerLoaders.kt
Created August 25, 2017 17:48
Kotlin logger template
/**
* Need "LOGGER_CONFIG_PATH" environment variable which set the place where was put .properties file with config of logger
*/
fun loadLoggerConfig() {
FileInputStream(System.getenv("LOGGER_CONFIG_PATH")).use {
LogManager.getLogManager().readConfiguration(it)
}
}
/**
fun calculateMeasure(
widthMeasureSpec: Int,
heightMeasureSpec: Int,
heightRatio: Int,
widthRatio: Int
): Pair<Int, Int> {
val originalWidth = MeasureSpec.getSize(widthMeasureSpec)
val originalHeight = MeasureSpec.getSize(heightMeasureSpec)
@InsanusMokrassar
InsanusMokrassar / ActionCaller
Last active April 12, 2017 17:38
Use this for call action in different threads or after some time or other. Require RXJava library.
public class ActionCaller<T> implements Runnable {
protected final Action1<T> target;
protected final T value;
public ActionCaller(Action1<T> target, T value) {
this.target = target;
this.value = value;
}
@Override
@InsanusMokrassar
InsanusMokrassar / FieldsExtractor
Created April 12, 2017 17:25
Sheet of mamont. I think it will useless, but I will be able to be wrong
public class FieldsExtractor {
protected static final Map<Class, List<Field>> classFieldsCache = new HashMap<>();
public static List<Field> getPublicFields(Class targetClass) {
List<Field> result = new ArrayList<>();
if (!classFieldsCache.containsKey(targetClass)) {
List<Field> fields = new ArrayList<>();
Class currentValuesTypeClass = targetClass;
do {
@InsanusMokrassar
InsanusMokrassar / FilesSaver
Last active April 20, 2017 05:38
It is common and simple files server which must work in all your java projects if you have internet access and know destination url
public class FilesSaver {
protected static String absolutePath;
public static void setAbsolutePath(String absolutePath) {
FilesSaver.absolutePath = absolutePath;
}
public static String constructPath(String relationPath) {
while (relationPath.matches("^/.*$")) {
relationPath = relationPath.replaceFirst("/", "");