Skip to content

Instantly share code, notes, and snippets.

@huytd
huytd / rose-pine-moon.js
Created Jun 7, 2022
Rose Pine Moon color theme for Blink.sh - Modified from ng-hai/rose-pine-blinksh
View rose-pine-moon.js
const palette = {
base: "#232136",
surface: "#2a273f",
overlay: "#393552",
muted: "#6e6a86",
subtle: "#908caa",
text: "#e0def4",
love: "#eb6f92",
gold: "#f6c177",
rose: "#ea9a97",
@huytd
huytd / money-parser.rs
Created May 8, 2022
A simple recursive descent parser in Rust
View money-parser.rs
use std::fmt::Display;
/*
money = currency_symbol number ;
currency_symbol = '$' | '£' | '€' ;
number = INTEGER ;
*/
#[derive(Debug, PartialEq, Clone, Copy)]
enum TokenType {
@huytd
huytd / recursive-descent-parser.go
Created May 7, 2022
Expression parser using Recursive Descent
View recursive-descent-parser.go
package main
import (
"errors"
"fmt"
)
type AstNodeType int
const (
@huytd
huytd / stack-machine.rs
Created Apr 21, 2022
Stack machine in 150 lines of Rust
View stack-machine.rs
const STACK_SIZE: usize = 1024;
#[derive(PartialEq, Eq, PartialOrd, Ord, Debug)]
pub enum OpCode {
PUSH(i32),
ADD,
CMP, // 1 if equals, 0 if different
JMP_IF1(usize), // jump if top is 1
JMP(usize), // unconditionally jump
PRINT,
@huytd
huytd / monolight.sublime-color-scheme
Created Mar 22, 2022
Monochrome Light Color Scheme for Sublime
View monolight.sublime-color-scheme
{
"name": "Mono Light",
"author": "Huy Tran",
"variables":
{
"textcolor": "#333333",
"stringcolor": "#6d8600",
"numbercolor": "#dc322f",
"commentcolor": "#bbbbbb",
"blue": "#333333",
View CODE_READING.md

minh.nguyen: Thông thường thì em sẽ follow theo (hầu hết) các bước sau:

  • RTFM.
  • Dựng và chạy hệ thống với các settings được recommend trong doc. Ví dụ Redis sẽ có sentinel hoặc Redis cluster hoặc standalone.
  • Explore tất cả các feature của system hoặc tất cả interface của library, nhất là những feature nào có vẻ fancy.
  • Build from source. Chạy lại bằng build object được sinh ra. Ngó thử xem hệ thống có bao nhiêu components, dependencies.
  • Đọc thử design doc nếu có
  • Debug thử xem giữa các component liên hệ với nhau như thế nào. Thông thường các hệ thống đều có doc.
  • Pick một flow đơn giản nhất, Tìm thử entrypoint trong code. Đặt debugger xem thử chạy ra sao.
  • Change thử một feature nho nhỏ xem thê nào
View tridactyl-config
" Use `` key to toggle Ignore mode
bind --mode=normal `` composite get_current_url | blacklistadd
bind --mode=ignore `` composite get_current_url | blacklistremove
" Other config
bind ,, nohlsearch
bind '' tabclose
View video2gif.sh
if [[ $1 == "-h" ]] || [ $# == 0 ]; then
echo "Convert video to GIF"
echo "Usage:"
echo " video2gif <file-name> [width] [fps]"
else
ffmpeg -y -i "${1}" -vf fps=${3:-10},scale=${2:-320}:-1:flags=lanczos,palettegen "${1}.png"
ffmpeg -i "${1}" -i "${1}.png" -filter_complex "fps=${3:-10},scale=${2:-320}:-1:flags=lanczos[x];[x][1:v]paletteuse" "${1}".gif
rm "${1}.png"
fi
@huytd
huytd / wordle.md
Last active Aug 6, 2022
Wordle in less than 50 lines of Bash
View wordle.md

image

How to use:

./wordle.sh

Or try the unlimit mode:

@huytd
huytd / media-control-hammerspoon.lua
Created Dec 13, 2021
Media control with Hammerspoon
View media-control-hammerspoon.lua
-- Alt + ] = Next song
hs.hotkey.bind({"alt"}, "]", function()
hs.eventtap.event.newSystemKeyEvent('NEXT', true):post()
hs.eventtap.event.newSystemKeyEvent('NEXT', false):post()
end)
-- Alt + [ = Prev song
hs.hotkey.bind({"alt"}, "[", function()
hs.eventtap.event.newSystemKeyEvent('PREVIOUS', true):post()
hs.eventtap.event.newSystemKeyEvent('PREVIOUS', false):post()