Skip to content

Instantly share code, notes, and snippets.

🎶
WHEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE!!

Thai Pangsakulyanont dtinth

🎶
WHEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE!!
  • Taskworld; spacet.me Labs
  • Krungthepmahanakhonamonrattanakosinmahintharayutthayamahadilokphopnoppharatratchathaniburiromudomratchaniwetmahasathanamonphimanawatansathitsakkathattiyawitsanukamprasit (Bangkok), Thailand
Block or report user

Report or block dtinth

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
View bms_sound_process.rb
file_list = Dir['original/*.wav']
file_list.each_with_index do |original_wav, index|
basename = File.basename(original_wav)
target_wav = "processed/#{basename}"
gain = case basename
when /^piano/; 4
else; 0
end
puts "[#{index + 1}/#{file_list.length}] #{basename} (#{gain})"
system "sox", original_wav, target_wav, "gain", "#{gain}" or raise "Cannot convert"
@dtinth
dtinth / .gitignore
Last active Sep 26, 2019
Live coding 2019-09-25 — brute forcing AunJessada’s upcoming song title
@dtinth
dtinth / README.md
Created Aug 13, 2019
Transcribing Thai YouTube video using Google Cloud
View README.md

How to transcribe Thai speech in videos into text.

Requirements

@dtinth
dtinth / cut.js
Created Jun 28, 2019
Thai word cut in Chrome
View cut.js
// Note: Using non-standard V8 feature
// https://code.google.com/archive/p/v8-i18n/wikis/BreakIterator.wiki
//
// The standard is now Intl.Segmenter but no browser implements it yet.
//
function cut(text) {
const iterator = new Intl.v8BreakIterator(["th"]);
iterator.adoptText(text);
const result = [];
let pos = iterator.first();
View index.ts
import * as functions from 'firebase-functions'
import * as admin from 'firebase-admin'
import 'firebase-functions'
import express from 'express'
import { middleware, Client } from '@line/bot-sdk'
admin.initializeApp()
export const bot = functions.https.onRequest((req, res) => {
const config = {
channelAccessToken: functions.config().line.channel.accesstoken,
channelSecret: functions.config().line.channel.secret
View Hangman.ts
import * as Immutable from 'immutable'
import * as rxjs from 'rxjs'
import { scan, startWith, map } from 'rxjs/operators'
export function reactiveHangman(
secretWord: string,
letters: rxjs.Observable<string>
): rxjs.Observable<Output> {
const initialState = initialize(secretWord)
return letters.pipe(
View A.jsx
/* A */
export function Card (props) {
return (
<CardContainer centered={props.centered}>
<CardTitle>{props.title}</CardTitle>
<CardContent>{props.children}</CardContent>
</CardContainer>
)
}
const CardContainer = styled.article`
View flexlol.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
.layout {
display: flex;
View x.html
<style>
.x{display:inline-block;padding:20px;border-left:1px solid #ddd;font:bold 20px sans-serif}
</style>
<div>
<span class=x style="border:0">[LOGO]</span>
<span class=x>SEE & DO</span>
<span class=x>FESTIVAL & EVENTS</span>
<span class=x>EAT & DRINK</span>
<span class=x>SHOP</span>
<span class=x>STAY</span>
@dtinth
dtinth / app.js
Created Sep 15, 2017
Demonstrates the problem of DelegateModules not updating hash
View app.js
console.log(require('./library'))
You can’t perform that action at this time.