Skip to content

Instantly share code, notes, and snippets.

View momvart's full-sized avatar

Mohammad Omidvar momvart

  • Simon Fraser University
  • BC, Canada
  • LinkedIn in/momvart
View GitHub Profile
@momvart
momvart / EpochConverter.asm
Last active January 29, 2019 06:53
MIPS assembly code that converts epoch to date and time parts
#MIPS equivalent of .NET DateTime.GetDatePart
#https://referencesource.microsoft.com/mscorlib/R/ff06f271f088f1a8.html
.macro push(%value)
addi $sp, $sp, -4
sw %value, 0($sp)
.end_macro
.macro pop(%storeTo)
lw %storeTo, 0($sp)
addi $sp ,$sp, 4
@momvart
momvart / StartLinearSmoothScroller.kt
Last active August 3, 2019 07:02
A simple android LinearSmoothScroller which scrolls to put the target item to the top of the RecyclerView
class StartLinearSmoothScroller(context: Context): LinearSmoothScroller(context) {
override fun getVerticalSnapPreference() = SNAP_TO_START
}
//Example
val smoothScroller = StartLinearSmoothScroller(context)
smoothScroller.targetPosition = 0 //replace with your target position
layoutManager.startSmoothScroll(smoothScroller)
@momvart
momvart / PIPExample.kt
Created August 3, 2019 10:41
A way of showing a PIP window on all apps
val windowManager = this.getSystemService(Context.WINDOW_SERVICE) as WindowManager
val windowLayoutParams = WindowManager.LayoutParams()
windowLayoutParams.width = 300
windowLayoutParams.height = 300
windowLayoutParams.x = 400
windowLayoutParams.y = 400
windowLayoutParams.format = PixelFormat.TRANSLUCENT
windowLayoutParams.gravity = Gravity.TOP or Gravity.LEFT
if (Build.VERSION.SDK_INT >= 26)
windowLayoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY
@momvart
momvart / IDXData.java
Last active August 16, 2019 05:36
A set of utility classes to read MNIST IDX files. http://yann.lecun.com/exdb/mnist/
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
public class IDXData {
protected final ArrayList<Integer> dimensions;
protected final byte[][] rawData;
@momvart
momvart / LayoutGravityBindingAdapter.kt
Created April 3, 2020 15:15
Android binding adapter for `layout_gravity` attribute
@BindingAdapter("android:layout_gravity")
fun setLayoutGravity(view: View, gravity: Int) {
when (view.layoutParams) {
is LinearLayout.LayoutParams ->
(view.layoutParams as LinearLayout.LayoutParams).gravity = gravity
is FrameLayout.LayoutParams ->
(view.layoutParams as FrameLayout.LayoutParams).gravity = gravity
//Add more view groups here
}
}
@momvart
momvart / ScrollLockableGridLayoutManager.kt
Last active May 3, 2020 10:46
A simple extension of GridLayoutManager which makes it possible to lock/disable/set the read-only scroll properties for your recyclerview
import android.content.Context
import androidx.recyclerview.widget.GridLayoutManager
class ScrollLockableGridLayoutManager(context: Context, spansCount: Int) : GridLayoutManager(context, spansCount) {
var canScrollVertically = true
override fun canScrollVertically(): Boolean =
if (!canScrollVertically) false
else super.canScrollVertically()
@momvart
momvart / BWT_First_To_Last.py
Last active May 13, 2020 11:25
A generator for mapping of last to first column in BWT matrix. Input is a BW transform of DNA sequence.
#change this if you want to support other types of sequences
def get_char_index(c):
if c == 'A':
return 1
elif c == 'C':
return 2
elif c == 'G':
return 3
elif c == 'T':
return 4
@momvart
momvart / PlaceholderWithBaseline.kt
Created July 23, 2020 13:56
Add support of baseline to constraintlayout Placeholder. When you want to set baseline constraint on a Placeholder doesn't work because it doesn't support it. With this simple extension you can solve the issue.
import android.content.Context
import android.util.AttributeSet
import androidx.constraintlayout.widget.Placeholder
// You can replace it with Placeholder when you want to set layout_constraintBaseline_toBaselineOf
class PlaceholderWithBaseline @JvmOverloads constructor(
context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : Placeholder(context, attrs, defStyleAttr) {
override fun getBaseline(): Int =
content.baseline
@momvart
momvart / GoogleAuthenticatorUtils.kt
Created August 19, 2020 10:29
A helper class which can generate a URI for google authenticator.
import android.net.Uri
object GoogleAuthenticatorUtils {
enum class KeyType(val uriKey: String) {
TIME_BASED("totp"),
COUNTER_BASED("hotp")
}
//Based on https://github.com/google/google-authenticator/wiki/Key-Uri-Format
@momvart
momvart / MarginItemDecoration.kt
Last active August 19, 2020 10:37
An item decoration for recyclerview which adds margin between items.
import android.content.Context
import android.graphics.Rect
import android.util.LayoutDirection
import android.view.View
import androidx.annotation.DimenRes
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.RecyclerView
class MarginItemDecoration(
private val marginLeft: Int,