기타 정보: 169개의 글

들어가며 예전에 받았던 면접 질문들을 회고하고 보다 깊이 있게 이해하기 위해 정리합니다. Browser에서 Google.com을 검색하면 무슨 일이 발생하나요? 1. DNS에서 IP주소 가져오기 https://www.google.com을 IP주소로 변환하는 작업이 필요합니다. Browser DNS Cache - Chrome 브라우저는 도메인이 캐시에 들어있는지 확인합니다. chrome://net-internals/#dns OS DNS Cache - Mac 만약 Browser Cache에서 못 찾으면, OS에 저장된 DNS Cache를 찾게 됩니다. 각 OS의 hosts 위치 : Link Mac : /etc/hosts Router DNS Server 만약 OS Cache에서도 못 찾으면, Router DN..
신입 개발자들에게 추천 객체지향적으로 생각하라 (정보문화사) 헤드퍼스트 OOAD (한빛미디어) 익스트림 프로그래밍 (인사이트) 클린코드 (인사이트) 조엘 온 소프트웨어 (에이콘 출판사) 주니어 개발자에게 추천 Java Performance Fundamental 헤드퍼스트 디자인패턴 리팩토링 클린코더 구현패턴 함수형 사고 시니어 개발자에게 추천 DDD 엔터프라이즈 어플리케이션 아키텍쳐 불확실성과 화해하는 프로젝트 추정과 계획 the nature of software development 출처 : OKKY
지금은 Opensource의 시대라고 할 수 있을 정도로 Opensource를 많이 사용하고 있는 추세입니다. 때로는 나도 모르는사이에 Opensource를 사용하고 있기도 하구요. Opensource가 자유롭게 사용할 수는 있으나 무료는 뜻은 아닙니다. 그래서 Opensource를 사용하면서 주의해야 할 점에 대해 핵심만 정리해 보도록 하겠습니다. No 라이선스 BSD MIT Apache MPL EPL LGPL2 GPL2 GPL3 AGPL3 1 수정, 배포의 권한허용 O O O O O O O O O 2 배포 시 라이선스 사본 첨부 O O O O O O O O 3 저작권 고지사항 또는 Attribution 고지사항 유지 O O O O O O O O O 4 ★ 배포시 소스코드 제공의무와 범위 File Mo..
프로그래밍을 할 때 클래스나 변수를 구분하기 위해 다양한 이름을 붙인다. 이 때 암묵적으로 Camel Case나 Pascal Case와 같은 이름 규칙을 적용한다. 1. Camel Case- 각 단어의 첫문자를 대문자로 표기하고 붙여쓰는 표기법- 띄어쓰기 대신 대문자로 단어를 구분하는 표기 방식- 첫 단어를 소문자로 시작 - 메소드, 변수의 이름에 적용- 예시 : backgroundColor, typeName, iPhone 2. Pascal Case- 첫 단어를 대문자로 시작하는 카멜 표기법- 클래스의 이름에 적용 - 예시 : BackgroundColor, TypeName, PowerPoint ※ 상수의 경우 모든 문자를 대문자로 구성한다. (둘 이상의 단어일 경우 _(언더바)를 사용) 출처: https..
CHAR와 VARCHAR (VARCHAR2) 문자의 경우 CHAR와 VARCHAR의 차이는 저장 영역과 문자열의 비교 방법이다.VARCHAR 유형은 가변 길이이므로 필요한 영역은 실제 데이터 크기뿐이다. 그렇기 때문에 길이가 다양한 컬럼과, 정의된 길이와 실제 데이터 길이에 차이가 있는 컬럼에 적합하다. 저장 측면에서도 CHAR 유형보다 작은 영역에 저장할 수 있으므로 장점이 있다. 비교 방법에서도 차이가 있다.CHAR 에서는 문자열을 비교할 때 공백을 채워서 비교하는 방법을 사용한다. CHAR(8) 이고 'AA'가 저장되어 있다면, 'AA' 뒤에 공백 6자리를 붙여 8자리로 비교하는 것이다. 따라서 'AA' = 'AA ' 은 실제로 'AA ' = 'AA ' 가 되어 같다는 결과가 나온다. 반면에 VAR..
추상메서드와 인터페이스 1. 공통점1) 둘 다 모두 추상 메소드라는 것을 가진다. 구현 클래스에서는 반드시 만들어야만하는 강제성을 가진다. 또한 추상 메소드는 컴파일러를 속인다. 추상 클래스는 변수를 인터페이스나 부모 클래스 타입으로 보았을 때 아무런 호출에 문제를 일으키지 않는다. 따라서 컴파일러는 실제로 메소드가 어떻게 동작할지는 모르고, 아무 문제 없이 실행해준다. 즉 컴파일러를 속여서 내가 원하는 동작을 마음대로 조종하게 한다는 것이다. 2) 둘 다 객체 생성은 불가능하고, 타입으로만 사용된다.추상 클래스와 인터페이스 둘 다 객체의 생성이 목적인 클래스가 아니라. 변수나, 파라미터, 리턴 타입, 자료구조를 유연하게 쓰기 위한 도구이다. 2. 차이점1) 인터페이스는 스펙이나 원하는 기능을 정의하고자..
후손 선택자와 자식 선택자 CSS3 Selector Basic Lorem ipsum universal selector type selector id & class selector 이때 div 태그를 기준으로 바로 한 단계 아래에 위치한 태그를 자식(h1, h2, ul)이라고 부르고,div 태그 아래에 위치한 모든 태그를 후손(h1, h2, ul, li)이라고 한다.--> 후손이 자식보다 포괄적이다. 1. 후손 선택자후손 선택자는 특정한 태그 아래에 있는 후손을 선택할 때 사용하는 선택자이다.(1) 선택자 형태선택자A 선택자Bex.) #header h1, h2 { color: red; } #header h1, #header h2 { color: red; } (2) 설명선택자A의 후손에 위치하는 선택자B를 ..
언어환경별 문자열 추출 1. Javasubstring(시작 인덱스 , 종료 인덱스) "hamburger".substring(4, 8);--> "urge" "smiles".substring(1, 5);--> "mile" 2. JavaScript(1) substringsubstring(시작인덱스, 종료인덱스); var string='19860711';var year=string.substring(0,4); --> 1986var month=string.substring(5,7);--> 07var day=string.substring(8,10);--> 11 (2) substrsubstr(시작인덱스, 자르고 싶은 길이) var string='19860711';var year=string.substr(0,4);--..
Dispatcher방식과 Redirect 방식서블릿에서 특정 URL이나 페이지로 이동하게 하는 두 가지 방식이 있는데, 두 방식의 차이점에 대해 알아보자. 1. Dispatcher방식 -->forward()forward()[전달하기]는 클라이언트가 요청하면서 전송한 데이터를 그대로 유지한다. (1) 예제RequestDispatcher dispatcher = request.getRequestDispatcher("dispatcher.jsp"); request.setAttribute("request","requestValue"); dispatcher.forward(request, response); dispatcher.jsprequest 속성 값 : 포워딩이 되더라도 주소가 변경되지 않는다. (같은 reque..
include 지시어와 include 액션원소 1. include 지시어 include 지시어는 다른 파일의 내용을 현재 위치에 삽입한 후 JSP 파일을 자바 파일로 변환하고 컴파일 하는 방식이다. 즉, include 지시어는 포함시키려는 파일의 코드 자체가 현재 페이지에 포함되어서 하나의 서블릿으로 컴파일된다. include 지시어를 사용하면, JSP 파일을 자바 파일로 변환하기 전에 include 디렉티브에서 지정한 파일의 내용을 해당 위치에 삽입하고, 그 결과로 생긴 자바 파일을 컴파일하게 된다. 2. include 액션 원소 include 액션 원소는 다른 JSP로 흐름을 이동시켜 그 결과물을 현재 위치에 포함시키는 방식이다.일반적으로 include 액션 원소는 레이아웃의 한 구성 요소를 모듈화 ..