ETag 헤더: If-None-Match 헤더와 함께 쓰이며 If-None-Match헤더는 Etag값과 매칭하지 않는지 판단하는 헤더이다. 아파치에서는 이미지/CSS/JS와 같은 정적파일은 자동으로 ETag 헤더를 붙여준다.동적파일들에 ETag 헤더를 사용하고 싶을 때는 리소스의 갱신일시,사이즈등을 계산하는 식으로 쓸 수 있다. Last-Modified 헤더 : 브라우저가 서버로 요청한 파일의 최종 수정 시간을 알려주는 헤더, Last-Modified 헤더를 쓸 경우 브라우저가 다음에 다시 접속할 때 서버에게 파일이 또 수정되었는지 여부를 물어보게되는데 이때 서버가 수정여부를 내려주는 헤더가 If-Modified-Since 헤더임, 이 헤더를 사용해 캐싱을 해 성능을 향상시킬 수 있는데 이미지/CSS/J..
1.서버에 SSL 설치 시 HTTPS 프로토콜을 이용해 통신을 하게 된다.2.넷스케이프에 의해서 SSL이 발명되었고, 이후 표준화 기구인 IETF의 관리로 TLS라는 이름으로 바뀌었다. 2.https의 기본 포트는 443이다.3.OpenSSL 라이브러리를 통해 사설인증서를 생성할 수 있다.4.암호화된 인증서를 apache에 등록해 https통신을 하게 된다.5.클라이언트가 서버에 접속한 직후에 서버는 클라이언트에게 인증서 정보를 전달한다. 클라이언트는 이 인증서 정보가 신뢰할 수 있는 것인지를 검증한 후에 다음 과정을 수행한다.6. SSL의 핵심 암호화 방법은 대칭키와 공개키로 구현한다. 대칭키는 암호화&복호화 시 비밀키에 의해 동작이 이루어진다. 따라서 비밀키값이 유출되는 경우에 조심해야 한다. 그래서..
1. 자바스크립트 역사1)처음 -> DHTML(Dynamic HTML의 줄임말로 특정 기술이 아니라 HTML, CSS, 자바스크립트를 결합한 말)2) 넷스케이프 네비게이터 vs 인터넷 익스플로러 : 두 회사의 브라우저에서 처음엔 자바스크립트 형식이 달랐다 그래서 초기에 개발자들은 DOM을 다루기 위해 코드를 나눠야 했다. 그래서 실패했다. ex) 넷스케이프 : document.layers['myelement'], 익스플로러 : document.all['myelement']3)그래서 W3C에서 DOM 표준을 만들어 모든 브라우저 회사들의 DOM 형식을 통합했다. ex)document.getElementByID('myelement')4)W3C가 정의한 DOM : 문서의 외양과 구조, 내용을 스크립트와 프로그..
php1.addslashes() : DB 작업을 하기 위해서 쿼리를 작성하게 되는데, 이때 DB 시스템은 작은따옴표 ' 와 큰따옴표 " 그리고 백슬래시 / 그리고, NULL byte 를 문자열을 구분하는 등의 기준으로 이용하게 됩니다. 그런데, 하나의 문자열 안에 따옴표가 들어가 있게되면, 예상치 못하게 오류가 발생하게 됩니다. 그래서, 문자열을 데이터베이스에 저장할 수 있는 포맷으로 변화시켜줄 필요가 있습니다.예를 들면, I'm a boy 를 문자열로 지정해서 'I'm a boy' 이렇게 쿼리로 전송되게 되면, I 뒤의 작은 따옴표 때문에 오류가 발생하게 됩니다. 그래서, 내부에 위치하게 될 따옴표들을 기준을 가지고 다르게 표현을 해 줘야합니다. 흔히들 이스케이프(escape) 시킨다...라고 표현하는..
웹페이지를 구현할 때 서버에서 변경된 데이터를 실시간으로 프론트엔드에 반영되는 것은 매우 중요합니다. 이것을 가능하게 해주는 것이 data binding이라는 개념입니다. 데이터 바인딩은 MVC 구조를 가집니다. Controller를 통해 Model(데이터)의 변화를 바로바로 View에 반영하는 구조인데 Ember.js, AngularJS 등과 같은 프레임 워크에서 이 기능을 제공합니다. (Dirty Checking) 그러나 HTML5부터 Object.observe()라는 메소드를 이용해 더욱 효과적인 데이터 바인딩을 구현할 수 있다고 합니다.(Dirty Checking보다 성능적 향상이 있는 듯...) 하지만 Object.observer()는 브라우저의 제한이 있는데 현재는 크롬36이상에서만 가능하다고..
자바스크립트1.button submit2.ajax aync 옵션3.url scheme : html의 href 옵션을 사용할떄는 scheme을 붙여줘야 함 , 4. anchor 태그의 href=# 을 넣는 이유는 ?? -> 이미지나 텍스트에 링크표시를 해주기위해 a태그를 사용한다. 근데 #의 경우 해당 id가 없는 경우 페이지가 최상단으로 reload 되기 때문에 안좋을 수도 있다. 그리고 a태그안에 input태그 를 5.var today = new Date(); 하면 pc의 로컬 타임이 찍힘 (pc에 시간설정에서 나라를 바꾸면 다른 시간이 찍힘)6.eval은 jquery가 나오기 전 자바스크립트에서 XMLHttpRequest 객체로 ajax통신을 할 때 쓰는 함수로 옛날에는 text로 데이터가 리턴되었기..
개발을 하다 보니 참가자들의 랭킹을 매겨야하는 작업이 있다.이런 경우 어떤식으로 짜는게 가장 효율적이며 정확할까 고민을 하다보니 3가지 방법이 생각났다.(더 좋은 방법이 있으면 공유해주세요!) 1.db 트랜잭션 걸기첫 번째 방법은 먼저 db테이블에 들어간 데이터 수를 select count 해와서 그숫자에 +1을 한 값을 db의 순위 필드에 insert하는 방법이다. 단 주의할점은 select 후 insert하기 때문에 그 중간에 다른 데이터가 들어오거나 변경되는 경우 정확하지 않을 수도 있어서 트랜잭션을 걸어줘야 한다. (하지만 트랜잭션은 db에 lock을 걸기 때문에 함부로 사용해서는 안된다. 그리고 select -> insert라는 2 step을 거치기 때문에 비효율적일 수 있다.) (참고 : ht..
웹 초보 개발자로써 개발을 할 때 항상 유효성 검사에 신경을 쓰게 된다 ... 어디까지 막아야할까? 귀찮음과 필요함 사이에서 갈등하게 되는 것 같다. 내가 아는 방법들만 소개한다 ㅎ (더 많은 방법들도 아시면 알려주세요)1. 클라이언트 - 서버 이중 유효성 검사 : 가능 한 모든 유효성 검사는 클라이언트와 서버측 두군데 다 하는게 맞음2. 유해 파일 업로드 필터링 추가 : 사용자가 파일을 업로드하는 곳이 있다면 파일의 확장자 등을 필터링해서 악성 프로그램 업로드를 차단하는 방법3. js파일 떨굴 때 주의 : 중요한 데이터의 경우 js파일로 떨구게 되는 경우 사용자가 볼 수 있기 때문에 꼭 db에서 select해서 값 가져오기4. 아파치 document root를 설정 : 사용자에게 공개되는 경로를 설정해..