'Java_Web' 카테고리의 다른 글
네트워크 프로그램 오류의 이해 (0) | 2015.03.11 |
---|---|
대용량 파일 조회 및 문자열 찾기 (0) | 2015.03.10 |
Chrome에서 ModalDialog로부터 returnValue를 받지 못 하는 문제의 Workaround (1) | 2012.08.08 |
JD Java Decompiler (0) | 2010.04.19 |
Hibernate에서 CLOB 컬럼 사용하기 (0) | 2009.12.16 |
네트워크 프로그램 오류의 이해 (0) | 2015.03.11 |
---|---|
대용량 파일 조회 및 문자열 찾기 (0) | 2015.03.10 |
Chrome에서 ModalDialog로부터 returnValue를 받지 못 하는 문제의 Workaround (1) | 2012.08.08 |
JD Java Decompiler (0) | 2010.04.19 |
Hibernate에서 CLOB 컬럼 사용하기 (0) | 2009.12.16 |
IE나 Firefox에서는 보통 쓰던대로 아래와 같이 넘기고 받으면 끝이었다.
Parent.html
var retVal = window.showModalDialog("popup.html", null,);
if (retVal) {
$("#some_id").val(retVal.some_id);
$("#some_name").val(retVal.some_name);
}
popup.html
function fn_Click(some_id, some_name) {
var obj = new Object();
obj. some_id = some_id ;
obj. some_name = some_name ;
window.returnValue = obj;
self.close();
}
그런데, Chrome에서는 popup에서 받은 retVal이라는 변수가 undefined이다.
이럴 때 아래와 같이 Chrome 브라우저에 대한 추가처리코드를 추가해 주면 해결된다.
Parent.html
var retVal = window.showModalDialog("popup.html", null,);
if (retVal == undefined)
retVal = window.returnValue;
if (retVal) {
$("#some_id").val(retVal.some_id);
$("#some_name").val(retVal.some_name);
}
popup.html
function fn_Click(some_id, some_name) {
var obj = new Object();
obj. some_id = some_id ;
obj. some_name = some_name ;
if (window.opener)
window.opener.returnValue = obj;
window.returnValue = obj;
self.close();
}
대용량 파일 조회 및 문자열 찾기 (0) | 2015.03.10 |
---|---|
HttpClient Connection Pooling (0) | 2015.03.10 |
JD Java Decompiler (0) | 2010.04.19 |
Hibernate에서 CLOB 컬럼 사용하기 (0) | 2009.12.16 |
HQL UNION 제약사항 (0) | 2009.08.21 |
Django에서는 Cache 기능도 제공한다.
memcached, DB, 로컬메모리, 파일(?) 등의 종류를 제공하는데 각각 장단점이 있다.
memcached는 외부 캐쉬프로세스를 띄워 놓고, 거기에
DB 방식의 경우는 여러 인스턴스가 동일한 DB를 바라보니까 모두 같은 데이터를 사용할 수 있겠지만, 속도는 좀 느릴 것이고,
로컬메모리 방식은 각 인스턴스가 자기 메모리에 각각 cache하니까 다른 데이터를 사용할 수 있는 가능성이 있겠지만, 속도는 빠를 것이고,
파일은 DB와 비슷할 것 같다.
나는 설정할 것이 별로 없고 빠른 로컬메모리 방식을 선택했다.
거의 변경가능성이 희박한 데이터를 cache한다면, 로컬메모리 방식이 가장 좋을 듯하다.
일단 settings.py에 cache를 사용하겠다고 설정을 해 줘야 한다.
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
'TIMEOUT': 3600,
}
}
이렇게 하면, Local Memory 방식의 cache를 사용하고, 3600초(1분) 단위로 cache 들어간 데이터가 삭제한다는 뜻이다.
다음은 코드에서 사용하기만 하면 된다.
from django.core.cache import cache
아주 간단하다.
cache를 import 하고, cache.set으로 집어 넣고, cache.get으로 꺼낸다.
이것을 응용해서 구현을 한다면,
get해서 나온 값이 None이면 넣을 데이터를 조회하거나 만들어서 set을 하면 되겠다.
cache에는 어떤 값이나 객체도 넣을 수 있는 것 같다.
이외에도 get_many로 한번에 여러 key를 리스트로 던지면, key와 value로 구성된 dict로 리턴하는 함수도 있고,
cache에서 내용을 지우는 delete, 전체를 지우는 clear 함수도 있다.
다시 매뉴얼을 보니 화면단에서도 cache를 사용할 수 있는데, 필요한 분들은 매뉴얼을 보시길...
decorator 만들기 (0) | 2012.07.25 |
---|---|
hash(digest) 호출 (0) | 2012.07.25 |
request의 값 처리 (0) | 2012.07.25 |
CSRF token 생성 (0) | 2012.07.25 |
Django의 session 처리 (0) | 2012.07.13 |