본문 바로가기

프로그래밍

(13)
신입은 언제 질문을 해야 하는 걸까요? 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 홈 버젼도 지원할 거라고 하네요.** 제가 개발 환경 구축할 때 중요시하는 것이 딱 두가지 입니다. 자동완성이 가능한 에디터 원클릭으..
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..
coursera 스칼라 1주차 2015. 5. 18. 12:06
스칼라 스터디 1주차1.1 프로그래밍 패러다임 절차지향 (IMPERATIVE) 할당과 제어문을 통해 status update 함수형 (FUNCTIONAL)논리형 (LOGIC) ex) prolog 순수 절차지향 추상화된 데이터 구조에 대한 작업을 어렵게 만든다. -> 해결책 : THEORY Theory란? 원소와 연산의 정의 ex) group theory, category theory, field theory NO MUTATION!!!Theory-like programming 연산의 정의mutation 최소화연산을 합성함수로… Functional Programming 엄밀한 함수형 프로그래밍 : 변수, 할당, 제어문 없는 프로그래밍 완화된 함수형 프로그래밍 : 함수에 집중하는 프로그래밍(?) Scala는 ..