Skip to content

Instantly share code, notes, and snippets.

View hanrw's full-sized avatar
🎯
Focusing

itshan hanrw

🎯
Focusing
View GitHub Profile
@hanrw
hanrw / fast_speech_text_speech.py
Created February 15, 2024 16:20 — forked from thomwolf/fast_speech_text_speech.py
speech to text to speech
""" To use: install LLM studio (or Ollama), clone OpenVoice, run this script in the OpenVoice directory
git clone https://github.com/myshell-ai/OpenVoice
cd OpenVoice
git clone https://huggingface.co/myshell-ai/OpenVoice
cp -r OpenVoice/* .
pip install whisper pynput pyaudio
"""
from openai import OpenAI
import time
@hanrw
hanrw / VirtualKeyboard.swift
Created January 31, 2024 12:37 — forked from ethanhuang13/VirtualKeyboard.swift
MacBook Air M1 Zhuyin Keyboard written with SwiftUI ~=300 LOC, < 4hrs
//
// VirtualKeyboard.swift
// MacBook Air M1 Zhuyin Keyboard
// Written with SwiftUI ~=300 LOC, < 4hrs
// Created by Ethan Huang on 2021/1/13.
// Twitter: @ethanhuang13
import SwiftUI
struct VirtualKeyboard: View {
import SwiftUI
struct RefreshControl: View {
var coordinateSpace: CoordinateSpace
var onRefresh: ()->Void
@State var refresh: Bool = false
var body: some View {
GeometryReader { geo in
if (geo.frame(in: coordinateSpace).midY > 50) {
Spacer()
@hanrw
hanrw / WeatherView.swift
Created November 7, 2023 14:09 — forked from unixzii/WeatherView.swift
A demo of implementing iOS Weather card in SwiftUI.
import SwiftUI
struct HeaderView: View {
var body: some View {
HStack {
Image(systemName: "info.circle.fill")
.resizable()
.frame(width: 12, height: 12)
Text("Section Header")
.font(.system(size: 13))
import Foundation
import SwiftUI
// MARK: - Custom Button Style
struct MobileMeButtonStyle: ButtonStyle {
// MARK: Metrics
@ScaledMetric private var cornerRadius = 12
@ScaledMetric private var horizontalLabelPadding = 12
@ScaledMetric private var verticalLabelPadding = 8
@hanrw
hanrw / synoinfo.conf
Last active June 30, 2023 14:47
Synology DS918+ Enable extra lan ports
This only verified for reinstall -
- Jun's Loader 1.04b
- DSM_DS918+_24922.pat 6.2.2
===== check current maxlanport =====
user@DiskStation:/etc.defaults$ cat synoinfo.conf|grep maxlan
maxlanport="2"
=====modify synoinfo.conf =====
user@DiskStation:/etc.defaults$ sudo vi synoinfo.conf
@hanrw
hanrw / semantic-commit-messages.md
Created November 25, 2022 07:32 — forked from joshbuchea/semantic-commit-messages.md
Semantic Commit Messages

Semantic Commit Messages

See how a minor change to your commit message style can make you a better programmer.

Format: <type>(<scope>): <subject>

<scope> is optional

Example

@hanrw
hanrw / README.md
Created July 28, 2022 03:41 — forked from noamtamim/README.md
Markdown with PlantUML

How to use PlantUML with Markdown

PlantUML is a really awesome way to create diagrams by writing code instead of drawing and dragging visual elements. Markdown is a really nice documentation tool.

Here's how I combine the two, to create docs with embedded diagrams.

Step 0: Setup

Get the command-line PlantUML from the download page or your relevant package manager.

@hanrw
hanrw / EntityConfiguration.kt
Created May 21, 2022 05:14
Spring create domain entity
import org.apache.commons.logging.LogFactory
import org.springframework.beans.BeansException
import org.springframework.context.ApplicationContext
import org.springframework.context.ApplicationContextAware
import org.springframework.context.annotation.ImportResource
import org.springframework.context.support.GenericXmlApplicationContext
import org.springframework.core.io.Resource
import org.springframework.stereotype.Component
import javax.annotation.PostConstruct
@hanrw
hanrw / ECDSA-secp256k1-example.java
Created May 1, 2022 13:27 — forked from nakov/ECDSA-secp256k1-example.java
ECDSA with secp256k1 in Java: generate ECC keys, sign, verify
import org.bouncycastle.util.encoders.Hex;
import org.web3j.crypto.*;
import java.math.BigInteger;
public class ECCExample {
public static String compressPubKey(BigInteger pubKey) {
String pubKeyYPrefix = pubKey.testBit(0) ? "03" : "02";
String pubKeyHex = pubKey.toString(16);
String pubKeyX = pubKeyHex.substring(0, 64);