전체 글
-
파이썬에서 스레드와 프로세스 소개PYTHON 2017. 9. 21. 22:39
원문: https://medium.com/@bfortuner/python-multithreading-vs-multiprocessing-73072ce5600b 병렬 프로그래밍 초보자 가이드 Kaggle의 Understanding the Amazon from Space경쟁에서 경쟁하면서 필자는 속도를 향상시킬 수 있는지 확인하기 위해 코드의 여러 부분을 타이밍 내기 시작했습니다. 속도는 Kaggle에서 매우 중요합니다. 자주 순위를 매기려면 수백 가지의 아키텍처 및 하이퍼 파라미터 조합을 시도해야합니다. 1 분간 지속되는 신기원에서 10 초 면도하는 것이 큰 승리입니다. 놀랍게도 데이터 증가가 가장 큰 병목이었습니다. 회전, 뒤집기, 줌 및 작물과 같은 방법은 Numpy에 의존하여 CPU에서 실행되었습니다...
-
자바EE의 역사 및 스프링과의 관계NEWS SUMMARY 2017. 9. 21. 19:44
* 이러한 오픈소스와의 협력을 통해 자바EE를 개선하려는 노력은 다른 분야에서도 이어졌는데, 대표적으로 국내에선 자바EE의 인기가 떨어지면서 함께 외면 받았지만 해외에선 자바 웹 개발의 표준 기술로 쓰이던 JSF(Java Server Faces)의 사례를 들 수 있습니다 * 특히 웹 개발을 위해 자바EE 표준에 포함된 서블릿(Servlet)과 JSP는 당시 막 유행하던 PHP나 ASP와 함께 CGI를 몰아내며 자바 언어가 인기를 얻는데 한 몫을 담당했습니다 * 즉, 스프링이 자바EE를 개선하기 위해 어노테이션을 통한 의존성 주입이라는 개념을 고안하면서 @Autowired라는 기능을 추가했는데, 이후 자바EE가 이를 받아들여 표준으로 @Inject라는 개념을 만들고, 다시 스프링이 자바EE 표준을 지원하는..
-
컴퓨터과학 대가 도밍고스 교수 “코딩보다 수학 ...월드와이드브레인 시대 온다”NEWS SUMMARY 2017. 9. 21. 19:38
* 컴퓨터과학 대가 도밍고스 교수 “코딩보다 수학 ...월드와이드브레인 시대 온다” * 그러나 월드와이드브레인이 구현되면 답이 없는 웹 페이지에서도 답을 유추할 수 있게 된다는 게 도밍고스 교수의 설명이다 * 도밍고스 교수는 “수학적 소양은 컴퓨터와 인공지능(AI)으로 대변되는 4차산업혁명 시대에 필수적인 소양이 되고 있다”며 “수학적 소양 토대 위에 코딩과 프로그래밍 등을 어렸을 때부터 가르치면 효과가 훨씬 클 것”이라고 강조했다원문보기: http://biz.chosun.com/site/data/html_dir/2017/09/19/2017091900399.html?outlink=facebook#csidx13743b8bca347979b164f76e9264d20
-
람다 표현식을 사용한 잠금(lock) 관리JAVA 2017. 3. 17. 18:52
잠금(lock)은 병렬로 실행되는 자바 애플리케이션에서 중요한 역할 을 한다. synchronized 는 상호 배재(mutual exclusion)를 제공하기 위해 사용되어온 오래된 키워드이지만, 두가지 단점을 가지고 있다. 메서드가 호출되는 시간을 제어하기 어렵다. - 이것은 데드록(deadlock) 과 라이브록(livelock) 이 발생할 가능성을 증가시킨다.synchronized 를 실제 적용하는 것이 어렵다. - 코드가 thread safety에 있는지를 체크하기 위한 unit test를 어렵게 만든다. synchronized 의 문제를 해결하기 위해 자바5 에서 Lock 인터페이스와 ReentrantLock 등의 구현이 추가 되었다. Lock 인터페이스는 lock, unlock, check 등에..
-
Java 8의 parallelStream 을 사용할때 Log4j 의 MDC 문제 해결하기JAVA 2017. 3. 13. 14:52
log4j 의 MDC 에 대한 설명을 보면, 위의 그림처럼 thread safe 한 것으로 되어 있다. 하지만, java 의 forkJoin 을 사용하게 될 경우, thread safe 가 보장되지 않는다. java 8 의 parallelStream 을 사용할 경우, 내부적으로 forkJoin 을 통한 처리를 하고 있어, 동일한 현상이 발생한다. 이 현상을 방지 하기 위해서는 아래와 같이 MDC 의 현재 contextMap 을 복사하고, 그 값을 사용하도록 셋팅하는 클래스 하나가 필요 하다. 123456789101112131415161718192021import org.slf4j.MDC; import java.util.Map; public class MdcSnapshot { private final Ma..
-
오라클 DB 에서 트리거로, UPDATE CASCADE 흉내내기DATABASE 2016. 9. 18. 00:13
현재 서비스 중인 앱의 기능을 강화하기 위해 다른 회사와 제휴를 맺어 데이터를 정기적으로 받고 있는 것이 있습니다. 제휴사에서 제공한 DB 정의서에 따라 PK, FK 를 설정해서 개발중이었는데, 테스트를 하던중 중대한 문제가 발생하였습니다. PK 로 잡혀 있는 키 값이 제휴사 사정에 의해 변경된다는 것입니다. 이 값이 변경되면, FK 로 연결되어 있는 모든 테이블의 데이터가 변경되어야 하는데, 오라클은 UPDATE CASCADE 기능을 제공하지 않고 있어, 데이터 수정이 불가능 합니다. 이번만 그렇다면, 잠시 FK 제거하고 데이터 변경후 다시 FK 설정을 하면 되는데, 제휴사에서 종종(혹은 자주) 서비스 개선을 위한 작업의 일환(?)으로 변경될 수 있다고 합니다. 더군다나, 운영계 시스템에서는 DDL 에..
-
인턴 멘토링을 마치면서...ANYTHING 2016. 8. 20. 10:03
오랫만에 인턴 멘토링을 하게되었습니다. 8주간의 인턴 기간이지만, 7주차에 과제 수행에 대한 발표가 있습니다.즉, 멘토링 가능한 기간은 7주...길다면 길고, 짧다면 짧은 기간입니다. 인턴에게 현재 운영중인 서비스에 대한 OJT 를 진행하고, 파악하고 있는 시스템의 개선 사항도 설명하고, 인턴이 하고 싶은 일은 어떤것인지 논의도 해 가면서, 과제를 선정했습니다. OJT 및 과제 선정에 1주가 지나가고... 선정된 과제를 수행해야 하는데, 과제 수행을 위해 만들어야 할 시스템은 2개...발표 준비를 위한 1주를 빼면, 5주만에 1개의 Backend 시스템과 1개의 Frontend 시스템을 만들어야 하는 상황. 더군다나, 인턴은 안드로이드에 대한 경험은 많았지만, 서버사이드 기술은 지식이 전무한 상태. 사용..