Skip to content

Instantly share code, notes, and snippets.

View lotusirous's full-sized avatar
💭
for { Learn() }

Kha Nguyen lotusirous

💭
for { Learn() }
View GitHub Profile
-- Pull in the wezterm API
local wezterm = require("wezterm")
-- This will hold the configuration.
-- local config = wezterm.config_builder()
local act = wezterm.action
-- hyperlinks rules
local hyperlink_rules = wezterm.default_hyperlink_rules()
table.insert(hyperlink_rules, {
class HomeViewModel: ObservableObject {
@Published var articles: [Article] = []
private let cacheFile = "articles.json"
private var cancellables = Set<AnyCancellable>()
struct ListArticleParams {
let limit: Int
let offset: Int
let useCache: Bool
}
type stack []rune
func (s *stack) push(n rune) {
*s = append(*s, n)
}
func (s *stack) pop() rune {
if s.empty() {
panic("stack is empty")
@lotusirous
lotusirous / dropdown.swift
Created December 1, 2022 07:23
A elegant solution dropdown menu for SwiftUI
//
// ContentView.swift
// WeirdSheet
//
// Created by lotusirous on 28/11/2022.
//
import SwiftUI
protocol Nameable {
@lotusirous
lotusirous / auto_renew_token.swift
Last active October 22, 2022 10:56
An example of auto renew token and fetch the resource
import Combine
import Foundation
enum NetworkError: Error {
case unauthorized
case badServerResponse
case wrongType
case unknown
}
@lotusirous
lotusirous / onetime_token_server.go
Created October 22, 2022 03:37
A mock one time token
package main
import (
"fmt"
"log"
"math/rand"
"net/http"
"time"
)
@lotusirous
lotusirous / record_audio.swift
Created October 20, 2022 04:50
Live record and stream the buffer with combine Passthrough
//
// StreamRecorder.swift
// pesos
//
// Created by Gru-2019015 on 2022/08/26.
//
import AVFoundation
import Combine
import Foundation
def split_by_n(seq, n):
"""Split a sequence by n elements"""
while seq:
yield seq[:n]
seq = seq[n:]
@lotusirous
lotusirous / combine_http.swift
Created March 8, 2022 02:00
A good way to handle HTTP in swift combine
let url = URL(string: "https://postman-echo.com/time/valid?timestamp=2016-10-10")!
struct PostmanResponse: Decodable {
let valid: Bool
}
enum ApiError: Error {
case invalidServerResponse
}
import UIKit
let url = URL(string: "http://127.0.0.1:1234")!
var request = URLRequest(url: url)
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.setValue("you-value-goes-here", forHTTPHeaderField: "X-API-KEY")
let task = URLSession.shared.dataTask(with: request) { data, _, error in
if let data = data {