2017 Week 27 개발노트

joey-kyber-132520

1. 새 컴퓨터

연구실에서 데스크탑을 하나 지급 받았다. 노트북으로는 맥프레 1세대 13인치를 쓰고 있었고 집에 데스크탑으로는 i5-2500k를 쓰고 있었는데, 요즘 메인보드가 맛이 갔는지 램 슬롯이 2개 죽어서 16기가였던 스펙이 강제로 8기가로 되어버렸고 설상가상 오버클럭도 잘 되질 않는다. (배수가 37 이상으로 안 올라감) 이런 상황임에도 불구하고, 오버워치 하거나 개발하는 데에는 크게 불편함 없어서 그냥 저냥 쓰던 중에.. 연구실에서 i5-7600 + DDR4 16기가램으로 데스크탑을 지급받았고 생각보다 성능차이가 꽤 있어서 놀랐다.

재미삼아 이런 상황을 가정해보자. 인텔이 새로운 명령어 셋을 하나도 추가 안하고, 캐시도 동일하게 하면서 공정만 개선하여 한 세대마다 10%씩만 발전시켰다는 박한 상상을 하더라도 5세대가 차이나는 시간이 있었던지라 61% 정도의 향상이 이 있었을 것이며, 실제로는 10%보단 더 발전했을 것이고 지원 명령어도 늘어나면서 한 세대당 15%의 향상이 있었다고 생각하면 101% 의 향상을 짐작할 수 있다. 램도 빨라지구, 암튼 좋아. 요즘 다시 JAVA와 Scala 개발을 시작하면서 intelliJ를 꺼내서 쓰고 있는데 집의 그것보다 훨씬 빠르게 열린다는 것.

이정도 속도와 명령어 셋 지원폭이면 ubuntu에서 gentoo로 넘어가는 것도 한 번 고려해봄직..?ㅎㅎ

2. SQL

두 군데의 회사를 잠깐씩 다니면서 SQL을 만져볼 일이 거의 없었다. 있었다면 안드로이드에서의 SQLite 정도 뿐인데, 사실상 경험이 전무한 수준이었으니, 요즘 SQL 튜닝에 관한 책을 읽으면서 놀란 점이 하나 있다. 국내 서적이라서 그러려니 싶긴 하지만, 어떤 종류의 데이터베이스 시스템인지 앞선 설명 없이 당연한 듯이 Oracle 기준으로 설명하더라고.

학과 데이터베이스 수업에서 보지 못했던 문법들을 만나면서 혼란혼란 했지만, 내가 모르는 문법과 단어들은 무조건 오라클만의 독자적인 무언가이다! 라는 가정을 깔고 검색하면서 읽어나가니 막힘없이 읽을 수 있었다는 것에 한 번 더 놀람. 역시 국내에서는 오라클 미만 잡인가..

3. 연구실 프로젝트

연구실에서 인턴들이 대대로 해오던 프로젝트를 받았는데, 구조가 아주 개판이다. 객체지향을 배운 사람들이 짠 코드가 맞나? 우리 학과에서는 객체지향을 가르치지 않았던가? 아주 유사한 기능을 수행하는 클래스를 상속없이 이름만 바꿔서 3개의 클래스로 선언하고, 대부분의 코드가 중복이라는 메세지가 IDE에서 뜨는 상황부터, 각 파일마다 어떤 것은 인코딩이 EUC-KR이고, 다른 놈은 UTF-8을 쓴다는 해괴망측한 경우까지 있다.

후자의 경우는 간단히 iconv 스크립트를 짜서 소스가 euc-kr로 판명된 경우 utf-8로 변환하여 저장하게 하여 손쉽게 해결할 수 있었는데, 진짜혼모노는 전자의 경우다. 이 클래스를 짜면서 뭔가 잘못되었다는 죄책감을 느끼지 못한 것일까. Oracle, MS SQL, MySQL 세 가지 데이터베이스 종류를 다루는 프로젝트인데, A 타입에서 B 타입으로 매핑하는 경우가 3 X 3, 총 9가지가 있고, 그 9가지에 대한 코드가 “상속 없이” 9가지 클래스로 짜여있는 것을 확인했다.

안드로이드에서도 비슷한 상황을 겪었던 적이 있다. 아주 비슷한 UI를 가지면서 파일 타입에 따라 다른 목록을 보여주는 3-4가지 화면을 구현해야했는데, 자바로 쓰여진 디자인 패턴 책을 참고하여 State Pattern으로 문제를 해결했다. 각기 다른 화면을 멤버변수인 상태 객체가 설정에 맞춰 분기문 없이 동작을 제어하는 느낌으로 기억하는데, 이걸 여기에 적용시키려니 생각보다 기한이 짧다. 이 프로젝트에 그다지 많은 애정이 가지도 않는다. 이렇게 생각하면, 내 앞선 사람들도 비슷한 감정을 느꼈겠거니 싶기도 하네.

4. 방학계획 진행상황

  • Programming in Scala: 이 책의 3판이 나왔다는 소식을 약간 뒤늦게 들었다. 뭐가 그렇게 바뀌었을까 싶어서 일단 2판으로 진행 중인데 역시나 뒤로 갈 수록 진행속도가 느려짐을 느낀다. 그래도 이번 주 안에 Chapter 20까지는 무난하게 진행할 수 있을 듯.
  • Functional JavaScript: 알찬 내용이 들어있다고 소개도 받았고 목차에서도 그것을 느꼈는데, 생각보다 정말 보물같은 책이다. ES6, 7 버전을 써오면서 적당히 함수형 스타일로 짜왔다고 자부해왔던 내 자신이 부끄러워질 정도. 내용도 내용이지만 내가 익숙한 언어로 함수형 스타일을 공부할 수 있다는 의외의 장점도 있는 것 같다.
    책에서 찬양하는 underscore 라이브러리는 이미 lodash로 많이 써봤거니와 (Scala의) 생소한 표현으로 인해 함수형 스타일의 본질을 캐치하지 못하는 불상사도 없다. 만약에 JS 중급자 이상의 실력을 가지고 있으면서 함수형 프로그래밍을 하고 싶은 사람이라면 (그 언어가 JS건 아니건) 강력 추천하고 싶다. 다 읽고 리뷰도 블로그에 쓸 거임!
  • Vue.js: 원래 이번 주에 들어갈 녀석이 아니었는데, 적당히 진행 중. 생각보다 Angular.js의 스타일을 많이 따라가서 놀랬음. v-on:click이라든가, {{ sendAomuntKRW | currency }} 와 같은 Template Filter에서 많은 유사점을 느꼈다. 한 가지 아쉬운 점은 React에 비해 Vue.js는 지배적인 boilerplate가 부재한다는 것. (특히 back-end 로 node.js를 사용하는 boilerplate)
  • Spark: 예전에 개인적으로 구매했던 Spark 책은 버전이 너무 낮아 Outdated된 느낌이었다. 연구실에 적당한 책을 2권 빌렸는데, 한 권은 빅데이터를 분석을 위한 스파크 2 프로그래밍, 다른 한권은 빅데이터 관리자를 위한 클러스터 테크닉 스파크 이다.
    전자는 초~중급서, 후자는 중~고급서 느낌이 물씬 풍겨서 앞에 것 부터 읽고 있음. 코드 상으로만 대충 써오던 개념들이 명확하게 잘 정리되는 느낌이다. 후자는 실제로 Hadoop, Spark Clustering 환경을 어떻게 구축하고 유지해야 하는지에 대한 팁이 있는 듯.

Leave a Reply