목록전체 글 (52)
ren+gin+eer

java io 가 두려웠던 이유 * 어떤 클래스를 사용해야 할지 모르겠다. * 읽을 파일의 상대 위치 지정이 어려웠다. * 생성자에 어떤 클래스를 선언해야 할지 모르겠다. * 인스턴스 생성을 중첩으로 해서 복잡했다. * 자주 사용할 일이 없다고 생각했으나 네트웍 또한 IO 이다. BufferedReader br = new BufferedReader(new FileReader(new File("file.txt"))); java io 를 알아보니 * 생성자와 상속관계를 이해해야 한다. * byte 타입(Input/OutputStream) 과 character 타입(Reader/Writer)으로 나뉜다. * 기능의 확장/다양성을 위해 Decorator Pattern 을 사용했다. * 어느 클래스가 Decora..

Serializable의 패키지는 java.io.serializable 이다. Serializable 은 io 에 관한 기술이다. 객체 직렬화는 java 에서 빠지지 않고 나오는 개념임에도 그동안 byte 타입의 데이터로 변환하여 어디에 활용하는지, serialVersionUID 는 왜 만들어야 하는지 모르고 내부 개발 정책에 따라 serialVersionUID 를 생성해왔다. Serializable 는 자바 시스템 간의 프로토콜일 뿐 JSON의 역할과 동일함을 아래 Feature를 보고 깨닳았다. JSON 을 사용하기 위해 jackson 이나 json 라이브러리를 import해야 하는 것에 비해 Serializable은 사기에 가까울 정도로 간단하지만 제약이 큰편이다. java serailazable ..

Thread Dump 는 매번 난공불락의 개념이였고 - 웹문서의 Thread Dump 파일 로그를 보고 도대체 저 로그를 보고 어떻게 장애를 해결하는 것인지 이해할 수 가 없었다. 매번 알기를 미뤄뒀다. - 라이브 장애가 발생 했을 때 thread dump 를 알아보고 추출하는 것보다 catalina.out을 보고 원인파악을 해서 해결 해왔다. 안좋은 기억도 있다. 후임이 담당하는 웹서버중 한 대가 죽지도 살지도 않는 상태여서 후임이 확인 중에 있었다. 예전에 동일한 경험이 있어 좀비프로세스가 있는지 확인 하고 이를 강제 종료 후 다시 웹서버를 시작하도록 조언했고 장애는 빠르게 해결 했으나 원인은 알 수 없는 상태 였다. 이에 대해 다른 팀원이 오더니 후임에게 어떻게 해결 했는지 물어보고 왜 Thread..
객체지향을 올바르게 설계할 수 있도록 도와주는 원칙이다. 나는 객체지향 어떻게(HOW)를 도와주는 가이드라고 해석했다. SOLID가 무엇인지 검색을 통해 지식을 모아봤는데 SOLID에 대해 비슷하지만 조금씩 다른 해석들이 나왔고 습득이 되지 않았다. 역시 여러 글을 접하고 ERD를 보고서야 조금씩 이해가 됐다. SOLID를 이해하기 위해선 설명보단 ERD를 위주로 습득하고 SOLID 기반의 설계와 코딩을 해야 시야와 좋은 설계가 나올 것 같다.
다시 java 시작 하면서 객체지향이란 무엇인지 부터 시작 했다. 검색과 유투브를 통해 지식을 모아봤는데 내게 와닿는 내용을 찾지 못했고 (그 지식들이 틀리다는 얘기가 아니다. 내가 흡수하지 못했단 뜻이다) 그 중 "추상화"란 단어는 반복적으로 나왔다. 추상화를 생각하니 현대미술을 보는 느낌이 떠올라 객체지향은 정의 할 수 없는 것이란 생각에 반감이 들었고 정확히 무슨 뜻일까 궁금해서 "추상"이란 단어를 검색하고 위키백과와 대산님의글, 한자어를 보고 정확한 의미를 알았다. 한자 : 抽象 (뽑아내다 추, 코끼리 상) 위키백과 : 사물을 정확하게 이해하기 위해서는 사물이 지니고 있는 여러 가지 측면 가운데서 특정한 측면만을 가려내어 포착하는 것이다. 어떤 일면만을 추상하는 것은 다른 측면을 버린다는 것과 같..
보호되어 있는 글입니다.
나는 this가 javascript의 encapsulation로 가는 시작점이라고 생각한다. javascript에서 this가 어려운 이유는 javascript는 prototype 타입 언어이며 까다로운 scope 정책 때문이라고 생각한다. 자바 같은 경우는 private 접근지정자로 명확한 scope와 encapsulation을 지원하기 때문에 this 때문에 혼란스러울 일이 없다. public class Clazz { private String foo; private int bar; public String getFoo() { return this.foo; } public int getBar() { retrun this.bar; } } // scope가 너무 명확해 this가 헷갈릴 여지가 없다. t..