Skip to content

Instantly share code, notes, and snippets.

@seoh
seoh / mustread-books-for.md
Created January 3, 2023 05:15
9 Must-Read Books for Software Engineers in 2023: Korean Translated Books

Original and Translated

@seoh
seoh / pl.md
Created March 14, 2022 02:29
프로그래밍 언어론 책 추천
@seoh
seoh / custom.js
Created July 18, 2021 15:12
Custom Clearance Progress
// Variables used by Scriptable.
// These must be at the very top of the file. Do not edit.
// icon-color: gray; icon-glyph: magic;
// depend on `Cache`
// https://github.com/evandcoleman/scriptable/blob/main/src/lib/cache.js
// inline `Req` module
// https://gist.github.com/yoav-lavi/11e6b9e8e5b807ff20ddbb7d9d515229
const Req = {
form: async ({ url, body, headers = {} }) => {
@seoh
seoh / server.js
Created July 18, 2021 14:55
simple server with watching but without tool
const { createServer: server } = require('http')
server((req, res) => {
delete require.cache[require.resolve('./run.js')]
require('./run.js')(req, res)
}).listen(8080)
@seoh
seoh / mime.py
Last active July 18, 2021 14:56
detect image mime type
name = 'image.jpg'
with open(name, 'rb') as f:
content = f.read()
head = content[0:3].hex()
mime = 'jpg'
if head == '89504e': mime = 'png'
elif head == '474946': mime = 'gif'
# else head == 'ffd8ff': mime = 'jpg'
@seoh
seoh / http4s.md
Created July 2, 2021 12:43
http4s 컴파일 에러

튜토리얼에 있는대로 간단하게 Ok(result.asJson)만 썼는데도 뭘 고쳐도 계속 에러가 나는 경우가 있다. 이 에러들 중 대부분은 value Ok in trait Statuses does not take parameters라는 메시지일텐데, http4s 튜토리얼을 따라하다보면 자주 만나는 에러 중 하나다. 상태(status)에 정보(body)만 담아서 클라이언트에게 반환을 하려는 경우에 이런 문제가 왜 생기는지 짚어보자.

이렇게 Ok()처럼 상태를 생성하고 싶을 때는 Status.apply가 호출될 것 같지만, 이런저런 변환을 통해 Entity를 생성하는 로직으로 흐르게 되고 그 과정에서 생성하기 위한 인코더(EntityEncoder) 정보를 필요로 하게 된다. 여기까지가 간단한 이유였고 소스를 살펴보자.

Entity를 생성하는 경우는 3가지가 있다.

@seoh
seoh / advent.day4.res
Created April 11, 2021 10:52
advent of code 2020, day 4 solution using rescript. help me
type passport = {
byr: option<int>,
iyr: option<int>,
eyr: option<int>,
hgt: option<(int, string)>,
hcl: option<string>,
ecl: option<string>,
pid: option<string>,
// cid: option<string>,
@seoh
seoh / inspect.js
Last active April 6, 2021 12:15
find key pathes contains keyword in value
function inspect(obj, keyword, curr) {
if(!obj) return []
const keys = Object.keys(obj)
let ret = []
for(let i=0; i<keys.length; i++) {
const value = obj[keys[i]]
if(typeof value == 'object') {
@seoh
seoh / fp-curriculum.md
Last active August 15, 2023 16:18
A functional programming curriculum

함수형 프로그래밍 커리큘럼

함수형 프로그래밍에 중점을 둔 스칼라 책들은 훌륭한게 많지만 초심자부터 전문가까지 단계별로 가이드할 수 있는 커리큘럼을 추천하려고한다.

  1. 초보자거나 스칼라 입문이라면:
  • 데이브 거넬과 노엘 웰시의 크리에이티브 스칼라(무료). 스칼라를 배우려는 입문자들을 위한 책이고 재미있다.
  • 노엘 웰시와 데이브 거널의 에센셜 스칼라(무료). 견고하고 성능좋고 스칼라다운 코드를 짜도록 도와준다. 다른 언어의 경험이 있는 개발자들을 대상
  1. 더 심도있는 개념을 원하면:
  • 폴 키우사노와 루나르 비아르드나손의 스칼라로 배우는 함수형 프로그래밍($36, 2.8만). 객체지향의 디자인패턴처럼 함수형 프로그래밍에서 자주 쓰이는 패턴인 데이터와 타입클래스들이 어떤 개념인지 직접 구현해보는 책. 스칼라 문법 정도는 익힌 개발자 대상.
@seoh
seoh / Main.scala
Last active July 18, 2021 16:11
example of typelevel programming: merge sort by type
object Main extends App {
// boilerplate
import scala.reflect.runtime.universe._
def show[T](value: T)(implicit tag: TypeTag[T])
= tag.toString.replace("Main.", "")
// type-level programming