우리가 보통 쓰는 Apache-Tomcat 은 응답 기능을 하는 Web Server 인 Apache 와 Servlet container 인 Tomcat 으로 이루어져 있다. ... 서블릿만 하는건 아닐텐데.
JavaScript 는 Thread가 없다. 그래서 Sleep 같은 메소드도 없다. 그래서 클라이언트는 SetInterval 같은 함수를 이용해서 주기적으로 서버에 요청을 보냈다. 그래서 응답을 쪼개기 위해서 100번대의 응답코드가 존재한다.
Native App 은 실행속도, 반응속도가 빠르고 인터넷 연결이 필요 없다. Web App은 개발 비용이 낮고 높은 호환성을 가진다. 인터넷 연결이 필요하며 Hold Down 같은 UI 측면이 약하다. Hybrid App 은 네이티브 위에 Rendering Engine을 사용하는 Webkit (web view) 위에서 HTML5, CSS, JS와 같은 언어가 돌아가는 환경이다.
PhoneGap은 하이브리드 앱을 만드는 프레임워크다. 단순하게 이야기해서 크로쓰 플랫폼을 가능하게 하는 녀석이다. 웹언어를 이용해 iOS, Android 환경을 지원한다. (그 외에 플랫폼도 지원하는 것으로 보인다.) 하지만 퍼포먼스가 많이 떨어진다. 비슷한 녀석으로 자마린이 있다.
어떤 프로그램이건 MVC 패턴이 중요하다. Model-View-Controller 다.
강사님이 그려준 것과 조금 다르긴 한데 비슷해서 퍼왔다. Model이란 자료구조를 의미하고 Controller는 안드로이드의 Adapter와 비슷한 개념이다. View는 사용자에게 보여지는 모든 것들을 의미한다. 이 때 Model과 Controller의 중간에 Service를 넣어주지 않으면 n * m의 의존관계가 발생해서 다루기가 어렵다.
MVC를 구현한 framework로 Struts MVC, Spring MVC가 있다. Model 에서 사용되는 pojo class도 참고하자. (강사님은 java class를 그냥 그럴싸하게 말하는 것 뿐이라는데.. 잘 모르겠다)
GPL, LGPL 라이센스는 2차 저작물의 소스를 공개 해야한다. MIT, BSD, Apache는 소스 공개를 하지 않아도 된다.
UML을 도와주는 툴로 StarUML, EA, RSA, Together가 있다. 가격대비성능비는 EA가 가장 좋다고 한다. 하지만 그것도 부담되는 측면이 있어서 대부분 StarUML을 쓴단다. 그 외에 것들은 비싸기 때문에 패쓰.
Controller와 Model 사이의 패턴에 대해서 더 말해보자. 지금부터 말하는 대부분의 것들은 JSP를 기반으로 한다. Controller는 IService를 참조한다. IService는 Interface다. 그리고 Service가 그것을 구현하고 Model을 참조한다.
여기에는 객치 지향 개념이 들어간다. Java를 잘 한다고 해서 정확한 객체 지향 개념을 아는 사람은 드물다. 객체 지향의 가장 중요한 점은 다형성과 상속이다. 즉, 다형성을 적용하기 위해서는 상속관계의 전제가 필요하다. 소스 코드에서 if문은 상속과 다형성으로 대체가 가능하다.
강사님은 잠깐 자료구조에 대해서도 말해주었는데 기억하기가 아주 쉬웠다.
배열은 개수제한이 있고 삽입, 삭제시에 부담이 크다. 그래서 연결리스트가 나왔다. 리스트는 검색은 떨어지나 삽입, 삭제에 능하다. 역방향 검색이 안된다. 그래서 이중연결리스트가 나왔다. 연결리스트는 정렬이 되어있지 않다. 그래서 스택과 큐가 나왔다. 스택은 연산이나 메서드 호출에 이용된다. 큐는 기억이 잘 나지 않네. 여튼 스택과 큐는 특수목적으로 사용된다고 한다.
근데 배열이나 리스트는 검색시에 풀스캔을 할 수 밖에 없다. 그래서 트리가 나왔다. 트리에 B*나 Red Black Tree가 자주 쓰인다. 마지막으로 그래프가 있다. 그래프는 정점과 정점 사이에 가중치가 존재하는데 비용산정이나 최단경로 따위를 구하는데 쓴다. 여기까지 배웠으면 알고리즘으로 넘어가란다.
UML 다이어그램도 이야기 해줬다.
위의 그림은 강사님이 써준게 아니지만 비슷해서 퍼왔다. 차례대로 설명을 해보자면.. 첫 번째부터 Dependency, Aggregation, Generalization, Composition, Association, Realization
브라우저 구조
HTML -> HTML Parser -> Dom Tree ->
Attachment -> Render Tree -> Rendering -> Display
CSS -> CSS Parser -> Style Rule ->
흠. 그리기 귀찮아서 글로 적었는데 잘 보이려나 모르겠다. 중요한건 ajax가 Dom Tree 부분을 건드린다는 점이다. 그것만 알면 되는 듯.
' or '1' = '1 (이것에 대한 설명은 생략한다..)
암호화에는 크게 2가지가 있다. Key가 있느냐 없느냐. Key가 없는 것은 비밀번호 따위이고 Key가 있는 것은 복호화가 필요한 평문화 해야하는 것들을 의미한다. 왜냐하면 비밀번호는 되돌릴 이유가 없기 때문이다. 복호화 해서 뭘하겠는가.
OWASP TOP 10
1. 인젝션
2. 인증 및 세션 관리 취약점 -> 알툴바로 세션 변경이 가능
3. 크로스 사이트 스크립팅
게시판 바디에
<script>
for (i=0; i<10000; i+=){
alert("asdfasdf");
}
</script>
4. 취약한 직접 객체 참조 -> 내부 객체 이름이 노출되는 경우. 스캇계정으로 뚫리는 경우
5. 보안 설정 오류
6. 민감 데이터 노출
7. 기능 수준의 접근통제 누락
8. 크로스 사이트 요청 변조 (CSRF)
9. 알려진 취약점이 있는 컴포넌트 사용
10. 검증되지 않은 redirect, forward
egovframe.go.kr 에 가면 plug-in이 가득담긴 Eclipse가 있다. ㄷ ㄷ ㄷ ㄷ
JDBC사용할 때 Statement 쓰면 안됨. 인젝션에 당한다. 차라리 PreparedStatement를 사용하는 것이 낫다. Callable Statement
MyBatis 라고 (CRUD : Create, Read, Update, Delet)를 가능하게 해주는 녀석이 있다.
JSP 공부할 때는 반드시 jstl을 공부해야한다. 안그러면 공부 안한것과 마찬가지다.
forward와 redirect의 차이는 주소값이 변하는지 보면 된다. forward는 URL의 변경 없이 내부 페이지가 변한다. redirect은 아에 다른 페이지로 넘겨지기 때문에 URL 값도 변경된다.
(http://www.mkyong.com/jsf2/jsf-page-forward-vs-page-redirect/)
댓글 없음:
댓글 쓰기