iTerm2 설치 (2022/11/11 : iTerm2 3.4.17 (OS 10.14+) 기준) brew install iterm2 밑의 과정을 진행하면서 나갔다 들어오거나 껐다 켜거나 설정값을 저장한다거나 하지 않음. 쭉 따라가면 된다. Profile 설정 메뉴바의 Profiles 클릭 첫번째 줄의 Open Profiles.. 클릭 (단축키 Comman + O) 우측 하단에 있는 회색의 Edit Profiles... 버튼 클릭 (기본으로 생성되어 있는 Default 프로필을 사용하든 새로 만들든 본인의 선택) General 탭의 Basics에서 Name과 Command의 Select box(기본값 Login Shell)을 Command로 변경후 값을 채워넣는다. Name은 arbitrary로 본인이 식..
실제 코딩을 할 때나 코딩 인터뷰에서 사용해도 괜찮을법한 비트 연산자 유즈 케이스를 알아보자. n/2, n*2, 2^n n / 2 n >>> 1 n >>> 1 연산은 Java의 경우 n / 2 사용할 경우 발생할 수 있는 overflow를 원천적으로 봉쇄할 수 있다는 장점이 있다. n >> 1를 사용하는 경우 overflow가 발생할 수 있음에 주의. n * 2 n >로 먼저 n자리만큼 0으로 밀어낸 후 & 연산자를 이용하여 해당값이 1인지 판별하는 방법이며 x & (1
암호학의 간략한 역사 태초에 DES(Data Encryption Standard)가 있었다. DES는 Confusion(혼돈, 원문의 내용을 짐작하기 어렵게 함.)과 Diffusion(확산, 알고리즘의 패턴을 짐작하기 어렵게 함.)을 높이기 위해 여러 번의 round를 반복하는 파이스텔 구조(Substitution과 Permutation을 번갈아 수행하는 구조)로 되어 있었다. 하지만 DES는 대칭키 알고리즘을 이용한 암호화 방식이었으므로 대칭키를 이용하여 암호화하기 위해서는 수신자와 송신자가 서로 같은 키를 가지고 있어야 하지만 이때 key를 안전하게 주고 받을 수 없는 문제점이 있었고 이 문제를 해결하기 위해 DH key exchange (Diffie-Hellman) 방식이 탄생하게 되었다. DH 알..
Base64는 바이너리 데이터 (주로 이미지)를 인코딩하는데 사용되는 알고리즘이다. 8bit로 표현되던 ASCII 코드를 6bit로 끊어 표현하게 되는데 이때 8:6의 비율로 변환되고 이는 4:3 == 1.3333..., 즉 33% (~ 37%까지. 줄바꿈에 의해 4%의 추가 오버헤드 발생)의 오버헤드를 발생시키게 된다. 이러한 오버헤드에도 불과하고 아직까지 Base64를 널리 사용하고 있기에 이를 이해하기 위해서는 역사를 먼저 알아야 할 필요가 있다. Base64 인코딩이 나타나기까지 태초에 0과 1이 있었다. 그때의 컴퓨터는 0과 1 밖에 이해하지 못 하는 계산기에 불과했고 (물론 지금도 그렇다) 인간은 0과 1로 표현할 수 있는 바이너리를 넘어선 무언가를 계산기끼리 주고받게 하기를 원했다. 0과 1..
상황 Gradle로 멀티모듈 프로젝트를 구성하려고 할 때 하위 프로젝트 (e.g. batch, api server)에서 상위 프로젝트 (e.g. core)의 dependency(e.g. lombok, jpa)를 보지 못 하고 컴파일이 되지 않는 문제가 발생함. 기존 코드 project(':batch-server') { bootJar.enabled = true jar.enabled = false dependencies { compile project(':core') } } compile은 Gradle 7부터 완전히 제거되었으므로 compileOnly, api 등과 같은 다른 키워드로 바꿔서 해봐도 컴파일이 되지 않음. 해결한 코드 //Before compile project(:'core') //or com..
자바에서 OOP라는 개념은 어떤 것일까? OOP는 여러 개발방법론 중 하나인 객체 지향 프로그래밍을 의미하며 여러 개발 패러다임 중 하나에 속한다. 패러다임이라는 것은 "우리 이건 앞으로 이렇게 생각하자."를 누군가가 주창하면 그것은 하나의 패러다임이 되며 해당 패러다임이 여러 사람에 의해 충분히 입증되고 과거에 잔재했던 여러 문제를 해결하게 되면 과거의 패러다임은 폐기, 축소되고 새로운 패러다임으로 사고하게 되는 "패러다임 시프트"가 일어나게 된다. 즉, OOP라는 패러다임을 이해하고자 하면 OOP 이전에 존재했던 패러다임을 알아보고 과거의 패러다임이 어떤 문제를 가졌고 OOP가 그 문제를 어떻게 해결했는지를 알아야 한다. 절차적 프로그래밍 기존에 절차적 프로그래밍(Procedural Programmi..
인풋 데이터가 json 포맷으로 주어지는 경우가 있다. json 파싱 라이브러리로는 gson, json-simple, Jackson 등이 존재하는데 여기서는 본인이 생각하기에 직관적이고 편하다고 생각되는 gson 라이브러리를 사용한다. GSON 라이브러리 gson 라이브러리를 import한다. Gradle // https://mvnrepository.com/artifact/com.google.code.gson/gson implementation 'com.google.code.gson:gson:2.9.0' Maven com.google.code.gson gson 2.9.0 Nested 형태일 경우 String json = "{\n" + " \"data\": [\n" + " {\n" + " \"email\"..
환경 설정 모든 로컬 저장소에 적용할 사용자 정보를 설정합니다 자신이 생성한 커밋(commit)에 들어갈 이름을 설정합니다 $ git config --global user.name "[name]" 자신이 생성한 커밋에 들어갈 이메일 주소를 설정합니다 $ git config --global user.email "[email address]" 디폴트 에디터인 vim을 vscode로 변경합니다 --wait를 주면 에디터가 종료되기 전까지 다른 명령어를 수행할 수 없게 합니다 $ git config --global core.editor "code --wait" vscode on WSL seems not working properly. Better to use vim or emacs git config --glo..
2014년 TEDxHGSE에서 Amy Edmondson의 강연인 'Building a psychologically safe workplace'에 대해 번역한 자료입니다. 바쁘게 돌아가는 시내 병원에서 야간 근무를 하던 한 간호사가 한 환자에게 처방된 약물의 용량이 조금 높은 것같다는 것을 알게 되었습니다. 그녀는 잠깐동안 현재 집에 있는 의사에게 전화해서 처방이 올바른지 확인할까 생각했었습니다. 그리고 또 잠깐동안 저번에 그녀가 의사에게 전화했을때 의사가 그녀의 능력에 대해 얼마나 하찮게 생각하며 대답했는지에 대해서도 생각하였습니다. 그 환자에게 실험적인 목적으로 높은 용량의 처방을 했다는 것을 나중에 알게 되었고 해당 프로토콜에 따라 투약이 진행되었습니다. 또 다른 이야기로 군 소속의 한 젊은 파일럿이..
2017년 OKKYCON에서 김창준님이 발표하신 것을 정리한 내용입니다. 프로그래밍을 잘하는 것과 협업을 잘하는 것은 별개이다 같은 연차(7년차)의 두 그룹, 뛰어난 성과를 내는 그룹(high performers)과 그렇지 않은 그룹(moderate performers),에게 신입이 들어왔을때 어떤 조언을 해주고 싶은지에 대해 물어봤을때 뛰어난 그룹의 70%는 사회적 요소에 대한 조언을 했던 반면 반대 그룹에서는 80%가 사회적 요소에 대한 조언을 해주지 않았다. 사회적 요소에 대한 조언이라 함은 예를 들어 '모르면 다른 사람에게 물어봐라.', '옆의 사람을 도와줘라.' 등이 있다. 성과를 잘 내는 프로그래머일수록 다른 사람과 대화하는데 더 많은 시간을 할애한다. Sonnentag (2002) THE R..
- Total
- Today
- Yesterday
- lunarvim
- IDE
- 배포
- Dap
- 레디스
- 아키텍처
- 루나빔
- ModelAttribute
- vim
- 도커
- RequestPart
- RequestParam
- RequestBody
- neovim
- JavaScript
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |