Devlopment/정리 글

    AWS re:Invent 2019 12월 2일 키노트 요약

    정식 출시 서비스 EC2 인스턴스 Inf1 출시 기계 학습 시 빠른 추론 가속화를 위해 AWS Inferentia 칩으로 구동 되는 4가지 크기로 Inf1 인스턴스를 출시 64 teraOPS 및 8 비트 정수 데이터의 128 teraOPS 성능이 있는 전용 칩에는 고속 상호 연결 및 많은 메모리가 포함 2 페타 OPS 이상의 추론 성능을 활용할 수 있음 G4 인스턴스와 비교할 때 Inf1 인스턴스는 최대 3 배의 추론 처리량을 제공하고 최대 40 %의 추론 당 비용을 절감 Amazon EKS on AWS Fargate 정식 출시 Amazon Elastic Kubernetes Service AWS Fargate에서 Kubernetes 포드를 실행할 수 있음 쿠버네티스 컨테이너 인프라를 프로비저닝하고 관리 ..

    Java9 특징

    Java 9 REPL (JShell)오라클은 쉘과 REPL(Read Evaluate Print Loop)을 위한 새로운 툴인 "JShell"을 소개한다.이것은 자바 클래스, 인터페이스, 객체 등의 생성을 매우 쉽게 실행하고 테스트하기 위해 사용된다. 프로그래밍 언어를 구현하는 방법 중에서 인터프리터(해석기) 방식이 있다. 사용자가 입력한 프로그램을 읽고 값을 계산한 다음 출력하는 일을 반복한다. 이렇게 읽고(read), 계산하고(evaluate), 출력하는(print) 반복 구조를 REPL(read-eval-print loop)이라고 한다 다운 가능한 곳 : https://jdk9.java.net/download/ G:\>jshell | Welcome to JShell -- Version 9-ea | F..

    DDD와 JPA에 대해서 알아야 하는 이유

    웹 기술에 JPA 표준기술과 그 구현체인 하어버네이트가 있다.그리고 DDD(Domain driven design) 도메인 주도 설계가 있다. DDD나 JPA에 대해서 모른다고 해도 개발하고 구현을 하는데는 아무런 문제가 없다.내 대부분의 경력 또한 두가지를 모르고 개발을 해왔고, DDD와 JPA에 대해서 잘 알고 있는 사람도 많지 않다. 그리고 이런 부분에 대해서 좋게 평가를 해주는 관리자도 많지 않으며, 어떤 관리자는 왜 팀원들이 모르는 JPA기술을 혼자만 사용했냐고 할지도 모른다.어떤 관리자는 왜 기존의 설계와 다른 DDD라는 방식을 썼냐고 반문할지도 모른다. 가끔 나 스스로도 생각을 한다.왜 JPA를 사용하려 하는걸까? iBatis와 myBatis로도 충분히 개발이 되는데?왜 DDD를 사용하려 하는..

    함수형 프로그래밍이 주목받는 이유

    .함수형 프로그래밍이 주목받는 배경과 장점에 대해서 Refreence [1][2]를 참조해서 요약을 해보았습니다. 배경무어의 법칙이 깨지고 멀티코어 CPU의 등장* 컴퓨터에서 사용하는 반도체 회로 성능은 대략 18개월마다 2배로 빨라진다는 법칙* 2000년대 중반부터 법칙이 깨짐* 물리적인 한계에 부딪힌 CPU 회사들은 여러 개의 칩이 병렬적으로 동작을 하도록 만드는 수평적 전략을 채택 프로그래밍 환경의 변화* 단일코어 환경 : “멀티쓰레딩” 코드는 여러 개의 쓰레드가 하나의 CPU를 가장 효율적인 방식으로 공유하도록 만드는데 초점을 기울임* 멀티코어 환경 : “멀티쓰레드” 코드는 이제 어플리케이션이 동작하는 동안 놀고 있는 CPU가 없도록 만드는데 초점을 기울임 동시성 코드 작성의 어려움* 브라이언 괴..

    적정 스레드 수

    적정 스레드 수치라는 것을 잡는다는게 어렵다.다음은 [1]에서 본 것으로 윈도우즈 네트워크 프로그래밍이란 책에서 추천하는 스레드의 수라고 한다. 스레드 개수 = ( 프로세스 개수 X 2 ) + 1 스레드 개수 = ( 프로세스 개수 X 2 ) + 2 성능 및 안정성에서 위에 수치가 적정하다고 본다.하지만 최상의 성능을 끌어내기 위한 수치는 아니라고 본다. 적정 스레드 수치가 아닌 최상의 스레드 수치를 끌어내려면하드웨어 성능과 소프트웨어의 시스템 설계를 고려해서 정해야만 한다. JBoss 경우에는 512개, Netty의 경우에는 코어의 수만큼이 되어 있다.Netty가 가지고 있는 스레드 이 기본값(코어의 수)은 스레드가 CPU를 100% 사용한다고 할 때의 수치이다.만약 각 스레드가 CPU를 10%사용한다면..

    Qt(Qt Development Frameworks)란 무엇인가?

    작년에 회사에서 한 부장님이 Qt가 정말 좋다라면서 극찬을 했는데 요즘 보니 Qt를 많이 쓰는 것 같다.늘 관심이 가고 있었는데 오늘 잠시 조사를 해보았다. Qt는 Qt Development Frameworks에서 나왔다. 이 회사는 과거 Trolltech로서 2008년에 노키아에 인수되면서 노키아 내 그룹으로서 있다. Qt의 장점은 여러가지가 있지만, Qt의 홈페이지에는 다음과 같이 나와 있다. "Qt는 크로스 플랫폼 어플리케이션 및 UI 개발을 위한 프레임워크입니다. Qt를 사용하여 애플리케이션을 작성한 후에 소스 코드를 다시 작성하지 않고 다수의 데스크톱과 임베디드 운영 체제에 배포할 수 있습니다." Qt를 이용하여 C++코드를 작성하면 플랫폼에 구애받지 않고 돌릴 수 있는 것이다. 놀라워라.Emb..

    정규식 예제

    정규식은 참 좋은 것 같다. 그러나 그떄 그때 정규식 짜는 것도 참 일이다.그래서 주로 쓰는 정규식 예제를 모아보았다. // IPv4 ^([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\.([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3}$" // IPv6 ^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1..

    Java에서 JNI를 써서 핑 프로그램을 구현하는 이유

    자바로 된 핑 프로그램에 대해 분석하다가 이상한 점을 발견했다. JNI를 이용해서 핑 프로그램을 구현한 것이다. 웹에서 찾다보면 자바로 구현한 소스도 있는데, 왜 굳이 JNI를 썼을까 알 수가 없었는데 책을 찾아보다가 그 이유를 알게 되었다. 핑 프로그램은 ICMP(Internet Control Message Protocol)을 사용하는데, ICMP 패킷은 SOCK_RAW형식의 소켓만을 지원한다. 이런 이유로 자바에서는 제대로 된 핑 프로그램을 구현할 수 없다. 결국 대부분의 자바 네트워크 책에서 소개되는 핑 프로그램은 핑 프로그램을 흉내를 내는것 뿐이다. SOCK_RAW의 경우는 좀 더 높은 수준의 제어를 하고 싶은 사용자를 위한 것으로, 패킷(Packet)을 전달할 때 패킷이 지나갈 경로까지도 지정할..

    버전 관리 & 이슈 관리 시스템

    SVN은 너무나 당연하게 쓰고 있었지만 이슈 관리 시스템에 대해서는 조금 무지했던 것 같다. 나중에 내가 선장이 될 경우에 이런 정도는 선원들에게 제공해줘야겠지. 버전 관리 시스템 [ Revision Control System ] - 프로그램 수정 파일을 관리하는 시스템 - 소스 코드 모듈을 유지하거나 문서 파일의 수정에 사용 - 대형 프로젝트 수행 시 반드시 필요한 도구 - 소스 히스토리를 관리 - 동시에 소스를 수정하는 것을 방지 - 개발 결과를 합치거나 변경 내용을 추적할 수 있음 SVN [ SubVersion] - CVS이후에 나옴 - 바이너리 까지 버전관리 할수 있음 - Open Source 이슈 관리 시스템 - 버그 관리 시스템이라고도 함 - 각종 개선점과 버그와 같은 프로젝트의 이슈 트래킹 ..

    C와 Java의 컴파일 과정

    C와 Java의 컴파일 과정

    C와 Java의 컴파일 과정에 대해서 찾아보는 중에 좋은 책을 찾았다. 국내 웹에는 C의 컴파일 과정에 대한 내용밖에 없었다. Reverse Engineering Software[1]라는 책인데 2장에 컴파일 과정에 대한 내용이 나와 있었다. 1. C Compile 아래는 C의 컴파일 과정이다. Figure 1. 컴파일 과정(출처 : [1]) 1.1 Preprocessor C는 다른 언어의 컴파일러와 다르게 전처리 과정이 들어간다. 전처리([3] 참조)는 컴파일에 앞서 필요한 처리를 해주는 것이다. 전처리문에는 다음과 같은 것들이 있다. Table 1. 전처리문의 종류 전처리문 기능 #include 디스크상의 파일을 편입 #define 매크로를 정의 #undef 정의되어 있는 매크로를 취소 #if~#dn..