전체 글
-
파이썬에서 스레드와 프로세스 소개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 에..