Skip to content

Instantly share code, notes, and snippets.

View audinue's full-sized avatar

Audi Nugraha audinue

  • Surabaya, Jawa Timur, Indonesia
View GitHub Profile
@audinue
audinue / JSON.java
Last active April 11, 2025 20:57
Quick, copy-pasteable Java JVM JSON parse/stringify.
@SuppressWarnings("unchecked")
class JSON {
static Object parse(String string) {
return parse(java.util.regex.Pattern.compile(
"\\s+|null|true|false|-?[0-9]+(\\.[0-9]+)?([Ee][-+]?[0-9]+)?|\"(\\\\.|[^\\\"])*\"|,|\\:|\\[|\\]|\\{|\\}"
).matcher(string));
}
private static Object COMMA = new Object();
@audinue
audinue / Runner.java
Last active March 26, 2025 16:39
Runs Java code from string.
import javax.tools.*;
import java.io.ByteArrayOutputStream;
import java.io.OutputStream;
import java.net.URI;
import java.util.Arrays;
import java.util.HashMap;
public class Runner {
public static void main(String[] args) throws Exception {
HashMap<String, ByteArrayOutputStream> outputs = new HashMap<>();
@audinue
audinue / diff-data.mjs
Last active June 18, 2026 06:44
Agnostic keyed diff
export const tests = [
// 0
{
previous: ['A', 'B'],
next: ['A', 'B', 'C'],
expected: [
{ tag: 'skip', index: 0 },
{ tag: 'skip', index: 1 },
{ tag: 'insert', index: 2 },
]
@audinue
audinue / README-PHP.md
Last active February 23, 2025 16:58
Logic-less View Rules for Dummies

PHP Logic-less View Rules for Dummies

TL;DR Just use plain variable placeholder on the views.

1. No embedded expressions

No arithmetic expressions, string concatenations, function calls, etc.

Before

@audinue
audinue / CounterScreen.kt
Created February 14, 2025 22:39
Clean architecture counter
package id.vorme.app.presentation.ui.screens.packages
import androidx.compose.material3.Button
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import cafe.adriel.voyager.core.screen.Screen
fun main() {
println("Now : ${LocalDateTime.now()}")
println("Start of Day : ${LocalDateTime.now().startOfDay()}")
println("End of Day : ${LocalDateTime.now().endOfDay()}")
println("Start of Month: ${LocalDateTime.now().startOfMonth()}")
println("End of Month : ${LocalDateTime.now().endOfMonth()}")
println("Start of Year : ${LocalDateTime.now().startOfYear()}")
println("End of Year : ${LocalDateTime.now().endOfYear()}")
println(
@audinue
audinue / README.md
Last active February 8, 2025 22:40

Tailwind + Alpine.js Playground

127 0 0 1_3000_c__Users_HP_Desktop_play html (2)

<!DOCTYPE html>

<meta name="viewport" content="width=device-width, initial-scale=1">

<script src="https://cdn.tailwindcss.com"></script>
setSingletonImageLoaderFactory { context ->
ImageLoader.Builder(context)
.components {
add(object : Fetcher.Factory<Uri> {
override fun create(data: Uri, options: Options, imageLoader: ImageLoader): Fetcher? {
if (data.scheme?.startsWith("jar") == true && data.path?.endsWith(".svg") == true) {
return object : Fetcher {
override suspend fun fetch(): FetchResult? {
return SourceFetchResult(
source = ImageSource(
<div x-data="{ color: '#000000' }">
<div
class="rounded-sm size-4 relative cursor-pointer"
x-bind:style="'background-color: ' + color"
x-on:click="$refs.input.click()"
>
<input
x-ref="input"
type="color"
x-model="color"
@audinue
audinue / example-progress.css
Created January 27, 2025 15:20
Pure CSS top loading bar generator
@keyframes progress-run {
0% { transform: scaleX(0) }
0.38% { transform: scaleX(0.04) }
5.33% { transform: scaleX(0.07) }
11.19% { transform: scaleX(0.11) }
14.48% { transform: scaleX(0.15) }
16.74% { transform: scaleX(0.19) }
21.50% { transform: scaleX(0.22) }
23.52% { transform: scaleX(0.26) }
26.02% { transform: scaleX(0.30) }