Programming(199)
-
javascript에서 sha256 암호화하기
http://www.movable-type.co.uk/scripts/sha256.html 위의 페이지를 참조하도록 하자. sha256을 암호화하는 로직을, javascript로 구현한 코드다.javascript로 암호화하는 코드를 적용한 경우, 클라이언트에서 해당 파일을 열어볼 수 있다. 이것이 어떠한 문제를 야기할 수 있는가 생각해봤는데, 현재로써 큰 문제를 야기하지는 않을 것 같다. 내 경우에는 php에서 쿼리스트링으로 넘어온 값에 sha256을 적용해야 할 필요가 있었는데, 개발자도구를 통해 확인해보면 키값이 고스란히 노출된다. 따라서 sha256을 javascript 적용하는 게 거의 무의미하다고 생각했었는데, 어차피 해당 키 값을 쿼리스트링으로 전달하는 이상, javasciprt건 activex..
2017.04.06 -
nginx(openresty) + digest 크로스컴파일 삽질기록
- 우리 회사에서 사용하는 장비의 웹 환경은, Openresty가 크로스컴파일되어 fcgi로 api를 주고받는 형식이다. - 예전에 칩셋의 제조사가 한번 바꼈었는데, 예전의 칩셋을 사용하는 장비들은 모두 digest방식을 지원했다. 하지만 어째서인지, 최근 칩셋을 사용하는 플랫폼에는 digest방식을 지원하는 기능이 빠져있었다. - 어찌어찌해서 기존의 플랫폼을 참조하여, digest방식을 지원하는 UI를 만들었다. 그런데 문제가 있었다. 쿼리 스트링을 사용해서 api를 호출하려 하니, 계속해서 재인증을 요청한다. - 도무지 원인을 알 수가 없었기에, nginx 문서와 가이드를 한참을 뒤져보고, 또 설정파일을 분석하느라 약 2주일이 걸렸다. 바짓가랑이라도 잡는 심정으로 전임자가 만들어놓고 간 openres..
2016.12.27 -
Unsupported Selector Lookup. Looking up elements via selectors is not supported by jqLite
Unsupported Selector Lookup. Looking up elements via selectors is not supported by jqLite. jQuery를 사용하지 않기 위해서 사용하기 시작한 AngularJS지만, 가끔씩 AngularJS가 필요할 때가 있다. AngularJS 프레임워크 내부에 jqLite를 포함하고 있기 때문에 $를 이용해서 element를 찾더라도 문제가 없는 경우가 태반이지만, 브라우저에 따라 $가 선언되어있지 않다며 에러를 내뱉는 경우도 왕왕 있다. 그럴때는 보통 angular.element를 이용해서 브라우저의 element를 가져오기 마련이다. 하지만 이 기능을 사용하다보면, Unsupported Selector Lookup. Looking up ele..
2016.10.19 -
SPA에서 ActiveX의 메모리할당이 해제되지 않는 경우
보통 ActiveX는 페이지가 닫힐 때 메모리 할당이 해제되며, 소멸자까지 실행된다. 그러나 만약 원 페이지 웹을 사용한다면 어떨까? 메모리 할당이 해제될 수도 있고, 안될수도 있다. 나의 경우에는 AngularJS를 이용하여 구현한 원 페이지 웹에서, 이러한 증상이 발생했다. 놀랍게도 해당 증상이 발생한 PC와 동일하게 설정한 후 테스트했으나, 증상이 재현되지 않았다. 아무래도 브라우저 설정에 따라 달라지는 것 같은데, 캐시 등에 페이지를 전환하면서 ActiveX의 소멸자를 호출하지 않는 듯한 증상을 보였다. 당시의 ActiveX는 영상을 스트리밍해서 화면에 출력하는 형태로, 소멸자가 호출됨과 동시에 스트리밍 세션이 종료되도록 구현되어있었다. 그러나 페이지를 전환하더라도 스트리밍 세션이 최대 세 개까지..
2016.10.18 -
Atom editor의 add-ons
active power-mode :딱히 특별한 기능은 아니고, 아톰을 쓰게 된 계기. 재밌다. 10개의 필수적인 아톰 애드온 :lint는 살짝 불안정한 듯...
2016.09.28 -
웹 폰트를 로컬 스토리지에 적용하는 기법
원문링크: 웹 폰트를 로컬 스토리지에 적용하는 기법 - 웹으로 말해요 숙지해야 할 포인트:- javascript를 head 안에 위치시키면, javascript구문이 실행 완료될 때까지 렌더링이 완료되지 않는다. 로컬스토리지에서 웹폰트를 가져오는 동작은, 캐시에서 가져오는 동작보다 오래 걸린다. 그러나 이러한 동작을 통해서, 2회째 로컬 스토리지에 가져올 때 FOUT가 발생하는 것을 방지한다.- 웹폰트의 경량화.
2016.06.26