본문 바로가기

전체 글

(16)
신입은 언제 질문을 해야 하는 걸까요? 2021. 8. 10. 18:44
신입은 언제 질문을 해야 하는 걸까요? 인터넷에서 종종 보는 질문입니다. A: 사수가 질문을 듣고 기분이 안나빠질 때... 는 농담이고... 이 질문을 바꿔 말하면, 얼마나 고민 하고 질문을 해야 하는 건가요? 가 됩니다. 당연하게도, 각자의 선호도는 있을 지언정 명확한 기준은 없습니다. 그러니까 논쟁이 되는 거겠죠. 하지만, 단순히 케바케라는 일반적인 결론을 내기에는 내가 모르는 것에 대해서 얼마나 생각해 봐야 하나... 는 중요한 주제이고, 신입으로 조직 생활을 해 나가기 위해 자신만의 답이 필요합니다. 결론부터 얘기하면, 문제를 해결하기 위해서 계속 고민하고 고민하다가 스스로에게 어떤 질문을 던져야 하는지 모르는 상황에 도달하면, 사수에게 물어볼 것을 추천합니다. 스스로에게 어떤 질문을 던져야 하는..
윈도우 10에서 linux로 docker 돌리기 2020. 2. 29. 16:05
서론 제목에서도 알겠지만, 두가지 스텝으로 나뉜다. 리눅스 설치와 도커 설치. 도커 설치는 Windows10 프로 버젼에서만 가능한 것으로 알고 있으므로, 홈 버젼 쓰시는 분들은 리눅스까지만 설치할 수 있다. 그럼 차례대로 알아보자. 리눅스 설치 WSL 이라는 게 있다. 윈도우에 리눅스를 담는 것이다. 어떤 원리인지는 잘 모르겠다. WSL 은 버젼 2까지 있다. 버젼 1로는 안해봤으나, 여기저기 블로그를 찾아보니 io 속도도 문제고, docker를 돌리는 방법도 까다로운 것 같다. 그러므로 WSL 2 설치를 목표로 하자. WSL 2설치를 하려면, 1. windows 10 18917보다 높은 버젼을 설치한다. 2. 버쳘 머신 플랫폼 컴포넌트 활성화 3. 리눅스 사용 기능을 추가한다. 4. 우분투(혹은 다른..
Spring Boot 이벤트핸들링 과 @TransactionalEventListener, @Transactional 2020. 1. 4. 14:22
혹시나 읽을지도 모를 개발자 분들께 미리 말씀드리자면 코드는 Spring Boot 2에서 작성되었고, 이전 버전에서는 다르게 작업해야 할 수도 있습니다. 문제점과 결론 당면한 문제는 이렇다. Spring Boot Project에서 비동기 이벤트리스너를 통해서 사용자 이력이 정상적으로 저장되면 푸시를 발송하고, 푸시를 발송했다는 사실을 다시 데이터베이스에 저장하는 기능을 구현하는데, 푸시를 발송한 후에 데이터베이스에 값이 저장되지 않고 핸들링이 종료되고 있었다. 해당 문제를 해결하기 위해서는 푸시를 발송하고 DB에 저장하는 함수에 @Transactional(Propagation.REQUIRES_NEW) 를 붙여줘야 한다. 이벤트 핸들링 스프링에서는 다음과 같이 이벤트 핸들링을 구현할 수 있다. @Servi..
spring boot 2, http/2, undertow 2019. 12. 23. 04:13
들어가며 스프링 부트 프로젝트 생성할 때마다 스프링 버전은 계속 올렸는데, (올릴수록 편해지니까...) jdk (와 jvm)는 8에서 머물러 있었다. 얼마 전에 http2의 위력을 보고 http/2를 해보고 싶어서 스프링 부트에는 어떻게 적용하나 알아봤는데... 부트 2 위에서 http/2를 적용하는 방식은 일맥상통하지만, 컨테이너 별로 지원하는 버전이 달라서, jdk 1.8을 쓰던 사람은 컨테이너 별로 설정을 달리 해줘야 한다. JDK 8과 undertow 스프링 부트 공식 문서 에 자세히 나와있는데, (참고로 공식 문서 how-to section이 상당히 좋다. 부트 설정 부분을 개괄적으로 다 가르쳐준다.) JDK 8에서 다른 건 추가 설정이 있어야 하지만... undertow는 (부트 embedde..
Jquery Ajax cache 문제 2016. 7. 23. 15:45
AngularJS를 사용하기 시작한 후부터 jquery는 거의 보지 않았는데... jquery로 클라이언트에서 ajax 요청을 날렸는데 microsoft edge로 보니까 처음에만 서버에서 받은 결과값이 원하던 결과값이고 그 이후부터는 서버의 결과값이랑 달랐다. 이건 뭐지...? 했는데, 크롬으로 띄우니 잘 나오더라. ajax 요청을 $.getJson 으로 날리고 있었기 때문에, 해당 method에 대한 jquery 문서를 확인해보니 ajax 요청을 날릴 때 cache property가 있고 이게 default 값이 true다. 특정 브라우저에서는 이 cache property를 활용해서 ajax 요청이 브라우저 cache에 있을 경우... 서버에 요청을 날리지 않고, 브라우저에서 기존 결과값을 사용한다..
윈도우에서 tensorflow 개발 환경 세팅 2016. 7. 22. 21:35
갑자기 머신러닝이 공부하고 싶어졌습니다. [모두를 위한 머신러닝](hunkim.github.io/ml) 사이트를 통해서 공부하기로 했습니다. 예제 구현을 tensorflow를 통해서 하셨더라고요. 텐서플로우에 마침 관심이 있기도 해서 저 또한 예제를 텐서플로우로 따라가기로 마음먹었습니다. 그래서 시작한 개발 환경 구축... 이 포스팅을 통해 윈도우10 머신에서 별도의 리눅스 설치 없이 텐서 플로우 개발 환경을 구축하는 방법을 공유할까 합니다. **중요!!!! 윈도우 10 프로페셔널 및 엔터프라이즈에서만 동작합니다!!!! 차후 Docker for Windows가 윈도우 10 홈 버젼도 지원할 거라고 하네요.** 제가 개발 환경 구축할 때 중요시하는 것이 딱 두가지 입니다. 자동완성이 가능한 에디터 원클릭으..
정수론 문제 하나... 2015. 5. 18. 12:32
정수론은 학창 시절 가장 재미있게 들었던 수업 중 하나이다. erdos 가 공저가로서 쓴 책이었는데... 책 제목이 기억이 안나네... 문제가 많이 어려웠던 기억이 나서 교수님이 숙제로 내줬던 문제 중 절반도 못풀었던 것 같은데... 내가 자주가는 커뮤니티에 누군가 아래와 같은 문제를 질문 형태로 올렸다. 1/x^2 + 1/y^2 = 1/z^2 , (x,y,z)=1인 방정식이 양의 정수를 가질때 x=2st(s^2 +t^2)y=s^4 -t^4z=2st(s^2 -t^2) 형태 라는 걸 증명하라는데 한 2시간 고민해 봐도 모르겠네요.....혹시 아시는분이 계시려나... 분명 erdos 책에서 봤던 문제이다. 학창 시절에 못 풀었던 것 같다. 오랜만에 도전해볼까....? 하고 문제를 풀기 시작했는데, 한 시간 ..
coursera 스칼라 2주차 2015. 5. 18. 12:10
스칼라 2주차1. Higher-Order FunctionsHigher order function이란? function을 파라미터로 받는 function anonymous function syntax def cube(x: Int): Int = x * x * x (x: Int) => x * x * x 2. Currying def sum(f: Int => Int): (Int, Int)=> Int = { def Sumf(a: Int, b: Int):Int = { if (a>b) 0 else f(a) + Sumf(a+1, b) } Sumf } //> sum: (f: Int => Int)(Int, Int) => Int def sum2(f: Int => Int) (a: Int, b: Int):Int = { def l..