Skip to content

Instantly share code, notes, and snippets.

View nattybear's full-sized avatar

Joonkyu Park nattybear

View GitHub Profile

If a pattern match fails in a lambda, a runtime error eccurs, so be careful!

ghci> map (\a,b) -> a + b) [(1,2),(3,5)]
[3,8]

#LYHG

@nattybear
nattybear / git-log-name.md
Created February 2, 2022 22:48
git log에서 파일 이름 보기

git log에서 파일 이름 보기

git log 사용 시 파일 이름을 같이 보고 싶다면 아래처럼 옵션 --name-only를 적으면 된다.

git log --name-only

출처

@nattybear
nattybear / hkkb.md
Last active January 23, 2022 14:36
해피 해킹을 손에 넣었다!

제품 정보

해피 해킹 키보드 프로페셔널 클래픽 흰색 영어 배열

느낌

  • back quote 키가 예상치 못한 곳에 있다.
  • DIP 조작이 신기하다.
  • 백스페이스가 생각한 것보다 아래쪽에 있다.
  • CtrlCaps Lock은 원래도 Windows에서 레지스트리를 편집해서 사용하고 있었기 때문에 심적 변화는 없다. 오히려 레지스트리 원복이 더 수고
  • 2014년경에 IT에 입문할 때 리눅스 강사님이 처음 해피 해킹을 소개해주셨다. 알게 된지 약 8년만에 갖게 됐다.
  • 당근에서 미개봉 신품을 구매했다.
@nattybear
nattybear / book-strategy.md
Last active January 23, 2022 12:53
책 읽기 전략

책 읽기 전략

목표

  • 시작한 책을 끝까지 읽는다.
  • 빨리 읽지 않고 제대로 꾸준히 많이 읽는다.

수칙

  • 매일 읽는다.
  • 하루에 한 권에 대해서 적절히 작은 한 단위씩만 읽는다. 예를 들어 하루에 한 챕터만 읽거나 하루에 한 섹션만 읽는다.
  • 한 권에 대해서 정해진 단위를 다 읽었다면 다른 책 한 단위를 더 읽을 수 있다.

Java에서 아래와 같은 것들을 값 Value 라고 부릅니다. 그리고 이 값들은 함수에 인자로 전달하거나 리턴할 수 있어서 First-class citizen 입니다.

  • primitive value
  • reference to object

아래와 같은 것들은 함수에 인자로 전달하거나 리턴할 수 없어서 second-class citizen 입니다. 이런 것들은 value가 아닙니다.

  • class
  • method

규칙

  • 왜 그래야 하는지 모르겠지만 라벨은 모종의 정렬 순서를 지켜야 한다. 그래서 의미가 없어 보이지만 reviewer의 이름 앞에 branch라는 단어를 넣어야 한다. 왜 branch라는 단어를 선택했냐고 하면 branch의 첫 글자인 알파벳 b가 아래에서 설명할 라벨 approve의 첫 글자인 알파벳 a 바로 다음 글자이기 때문이다.

  • approve : 왜 그래야 하는지 모르겠지만 제일 첫번째 위치해야 하는 라벨이다. PR이 생성되는 순간 이 라벨이 제일 먼저 생성 되어야 한다. '승인이 필요한 PR' 이라는 뜻이다. 모든 리뷰어의 리뷰가 끝나면 마지막으로 리뷰를 마친 리뷰어가 이 라벨을 지우고 merge 라벨을 붙인다.

  • merge : 모든 리뷰가 끝나고 이제 머지를 기다린다는 뜻이다. 머지가 완료되면 이 라벨을 지운다.

  • branch <reviewer name> : 리뷰어로 지정된 사용자의 이름을 뜻한다. 자신의 이름이 붙어 있는 라벨이 있다면 그 PR의 리뷰를 해야 한다. 자신의 리뷰가 끝나면 그 라벨을 지운다.

원서로 IT 기술 문서 읽기는 어렵지 않다.

누구나 모국어가 아닌 원서로 책을 읽기는 쉽지 않을 것이다. 나도 처음부터 원서로 IT 기술 문서를 읽는 것을 좋아하지는 않았다. 처음에는 "내가 어떻게 원서를 읽어? 한글책도 안 읽는데..." 라고 생각했다.

그런데 실무를 하다가 필요한 기술을 익히기 위해 관련 서적을 찾다보니 아래와 같은 문제가 있었다.

  • 한글로 된 자료가 많지 않다.
  • 번역서는 번역을 아무리 잘한다고 해도 어색한 점이 있다.

그래서 어쩔 수 없이 번역서보다는 원서를 찾아서 보기 시작했다. 처음에는 한문장 한문장을 읽는다는 느낌으로 천천히 읽었다. 모르는 단어는 네이버 영어 사전에서 검색을 했다. 내용이 머리에 안 들어올 때는 문장을 종이에 옮겨 적어보기도 했다.

@nattybear
nattybear / Solution.java
Last active September 6, 2021 03:51
2019 KAKAO BLIND RECRUITMENT 실패율
import java.util.ArrayList;
import java.util.Collections;
class Solution {
public int[] solution(int N, int[] stages) {
int[] answer = new int[N];
ArrayList<Stage> theStages =
new ArrayList<Stage>();
for (int i = 0; i < N; i++) {
@nattybear
nattybear / data.md
Last active August 11, 2021 12:41
하스켈 타입 만들기

타입 만들기

하스켈에서 타입을 만들 때는 키워드 data를 사용합니다.

아래처럼 선언하면 MyType이라는 타입에는 값 MyValue가 있다는 뜻입니다.

data MyType = MyValue
@nattybear
nattybear / ordering-monoid.md
Last active February 12, 2023 17:47
하스켈 Ordering 모노이드

이 글은 Learn You a Haskell for Great Good 중 일부를 정리한 것이다.

Ordering 모노이드

타입 Ordering은 뭔가 비교한 결과를 표현할 때 쓴다. Ordering에는 값이 세 개 있다.

data Ordering =
    LT
 | EQ