반응형

*.ts 로 작업을 시작할때..

require 를 사용하면 아래와 같은 오류가 발생할 수 있다.


require is not defined in typescript


그럴땐 아래와 같이 npm 패키지를 설치해주자.


npm install @types/node

반응형
반응형

mcrypt_* 이 PHP 7.1 에서 deprecated 이 되었고, PHP7.2 에서 mcrypt_* 이 삭제되어 사용이 불가능 해졌다.

대신 openssl encrypt 를 사용하면 된다. 


private static $key = "key_pass";
private static $cipher = "aes-256-cbc";

public static function encrypt($buffer){
$ivlen = openssl_cipher_iv_length(self::$cipher);
$iv = openssl_random_pseudo_bytes($ivlen);
return openssl_encrypt($buffer, self::$cipher, self::$key, $options=0, $iv, $tag);
}

public static function decrypt($buffer){
$ivlen = openssl_cipher_iv_length(self::$cipher);
$iv = openssl_random_pseudo_bytes($ivlen);
return openssl_decrypt($buffer, self::$cipher, self::$key, $options=0, $iv, $tag);
}


반응형
반응형

VC9 : IIS 용

[Thread Safe 와 Non Thread Safe]

 

우선 윈도우용 PHP는 항상 Thread Safe 버전으로 나왔었습니다.
이유는 윈도우가 멀티쓰레드 방식인데 PHP 는 멀티프로세스 방식으로 개발 되었기 때문이죠.
참고로 리눅스나 유닉스는 원래 멀티프로세스 방식이었기에 문제가 되지 않았습니다.

PHP를 IIS와 연동하기 위해 CGI 또는 ISAPI 방식으로 연동을 합니다.
그런데 PHP와 관련된 모듈들이 대부분 멀티프로세스 방식으로 개발 되었기 때문에
멀티쓰레드 방식으로 개발된 ISAPI 로 연동하였을 경우 서버가 다운되는 현상이 나타났습니다.

그래서 안정적인 방법으로 CGI 방식을 사용하긴 하지만 이 것 역시 퍼포먼스 측면에서 너무 느리다는게 문제가 되었죠.
이 퍼포먼스 문제를 개선한 것이 Non Thread Safe 버전이라고 생각하시면 되겠습니다…^^

그럼 결론적으로 아래와 같은 조합이라 생각할 수 있겠죠? ^^a

 

Windows + IIS(ISAPI) : VC9 Thread Safe 버전
Windows + IIS(CGI or FastCGI) : VC9 Non Thread Safe 버전
Windows + Apache(MPM worker) : VC6 Thread Safe 버전
Windows + Apache(MPM prefork) : VC6 Non Thread Safe 버전

 

출처 : http://auctionpro.co.kr/?p=773

반응형
반응형

최근에 사촌이 최고오급 노트북을 구매를 했는데, 물론 프리도스(OS미포함)로 구매하라고 해서 가져와서 Windows 10 을 설치를 해주었다. 스토리지 구성이 SSD 256 + SATA 1TB 이었는데, Free DOS가 SATA 1TB 디스크에 설치가 되어 왔다.


문제 발생


처음엔 아무런 생각 없이, BIOS로 들어가 부팅 순서를 바꾸고, SSD에 Windows 를 설치 하였다. SATA HDD의 경우 파티션을 삭제하고 포맷을 했다. 설치를 마치고 나서 부팅이 잘 되다가, 일정 확률로 부팅이 안되는 현상이 발생하였다. 


해결 시도1. BIOS 설정 확인


단순히 USB나 외장하드를 연결했다 해제하면서 부팅순서에 영향을 준 것으로 생각했다. 하지만 부팅 순서는 전혀 잘못된 것이 없었고, Boot mode 를 Legacy 에서 UEFI 로 바꿔보기도 했지만 전혀 차도가 없었다.. 


해결 시도2. MBR 영역 복구


부팅 영역이 깨진것이라 판단하고 구글링을 통해 부팅 영역 복구를 시도했다. usb에 윈도우 10 설치 디스크를 굽고, 설치 시작화면에서 Ctrl + F10 으로 커맨드 창을 띄웠다. 그런데 bootrec /fixmbr 는 잘 처리 되었지만 bootrec /fixboot 이 액세스가 거부 되었습니다 가 나오면서 정상적으로 되지 않았다.


경험상으로 누군가 해결 예제를 줄때 100% 동일한 환경에서 100% 같이 처리되지 않으면 예외 상황임을 알게되었다. (... ) 


문제 상황 확인 및 해결


결론은 diskpart 를 통해 해결했다. BIOS에서 부팅을 할때 파티션들중 '활성' 파티션에서 부팅을 시도하는데, FREE DOS가 설치되어 있었던 1TB SATA HDD의 활성 파티션이 비활성을 하지 않아 발생한 문제였던 것이다. 즉, 전원이 들어올때 SSD보다 SATA HDD가 먼저 전원이 들어왔을때 해당 파티션이 활성화 되어있으니 그곳에서 MBR영역을 찾았던 것이고, 그 영역이 없으니 부팅이 될리가 없는 것.


diskpart 를 통해 1TB SATA HDD의 파티션을 비활성화 하고 SSD의 파티션을 활성화 시킨뒤 bootrec /fixboot 을 실행하니 정상적으로 작동됨을 볼 수 있었다. 그리고 부팅하니 제대로 동작했다.. 해결 끝!




참고 : http://prolite.tistory.com/729

반응형
반응형

회사에서 22포트로 외부로 나가는게 불가능해서, 내 서버의 ssh 는 22002로 변경을 해둔 상태인데, b 서버에 접근할일이 생겼다. 근데 곧장 sftp 를 쓰고자 하는데 ...


그럼 패킷을 포워딩 하면 어떨까 해서 방법을 찾아보니 iptables 로 하는방법이 있긴 하지만 매우 복잡, 비권장이라는 것에 정보를 더 찾아보니 socat 이라는게 존재했다.


사용법은 매우 간단하다.


Redirect TCP port 443 in localhost to checkwebcam.com port 80.

socat TCP-LISTEN:443,fork TCP:checkwebcam.com:80

fork parameter is required so that socat fork a new process for every connection attempt. If fork is not specified, socat will exit once a redirected connection closes, times out, or who knows what kind of error occurs.

Redirect UDP port 13443 in localhost to checkwebcam.com port 80.

socat UDP-LISTEN:13443,fork UDP:checkwebcam.com:80


내 서버에 x번 포트로 TCP/UDP 로 들어왔을때 어디로 전달할껀지만 지정하면 된다.

그리고 커맨드를 입력하면 해당 세션에서만 작동하기 때문에, 뒤에 & > /dev/null 을 붙여 background 에서 실행하도록 해주자. 


처음에 , 하고 fork 사이에 빈칸을 두었더니 '주소는 무조건 2개여야 합니다' 라는 오류가 떴다.

그러니 빈칸은 fork 다음에 한칸만 ..... 콤마 뒤에 무조건 스페이스를 넣는 습관이 있는분은 주의하시길, (;;)



참조 : http://palimpsest.minivi.com/socat/portforwarding/index.html

반응형
반응형

다음과 같이 페이지를 벗어나기 전에, ‘수정사항이 있으니 다시 한번 확인해보세요’라는 메시지를 구현하는 방법에 대한 정리입니다.

Javascript의 window.onBeforeUnload Event를 이용한 기능입니다.

실행시점

window.onBeforeUnload Event는 Window개체가 Unload되기 전에 실행됩니다. 정확하게 다음과 같은 시점이 있을 수 있습니다. 다만 IE 7, 8에서는 버그로 인해 다르게 동작하는 경우도 있으므로 참고가 필요합니다.

  1. 창이나 탭을 닫을 때
  2. 새로고침, 앞, 뒤로 이동버튼 클릭 시
  3. location.href 변경
  4. Form Submit 발생 시
  5. A Tag 클릭 시
    • HREF에 URL을 지정한 경우: 발생
    • HREF에 #을 지정한 경우: 발생 안함
    • HREF에 javascript:void(0)을 지정한 경우: 발생 안함
      (IE7, 8에서는 onbefureunload이벤트가 발생하는 오류가 존재합니다.)
  6. Iframe 내부에서 로드된 경우 Iframe의 Src가 변경될 경우

구현방법

01 //onBeforeUnload 이벤트 지정
02 $(window).bind('beforeunload', function()
03 {
04     //페이지 변경이 있었는지 체크..
05     var isChanged = ....;
06  
07     //출력할 내용을 Return 해주면 확인 창이 뜨게 됩니다.
08     if(isChanged)
09         return '변경된 사항이 있습니다. 페이지에서 나가시겠습니까?';<br>
10     //확인 창을 띄우지 않으려면 아무 내용도 Return 하지 마세요!! (Null조차도)
11 };
12  
13 //Form Submit 등 onBeforeUnload Event가 발생하길 원하지 않는 경우, 이벤트 해제
14 $('form').submit(function()
15 {
16     $(window).unbind('beforeunload');
17 });

기타 확인사항

Firefox에서는 다음 그림과 같이, 지정한 안내텍스트가 출력되지 않는 버그가 있습니다. 곧 수정될 것이라고 하지만, 현재 Version 27까지도 수정되지 않은 상태입니다.



출처: http://nsinc.tistory.com/101 [NakedStrength Inc.]

반응형
반응형

VirtualBox 로 가상머신을 실행하고 shell로 당겨서 쓰다보니 가상머신을 백그라운드로 실행시켜 놓으면 편하지 않을까 해서

백그라운드 실행방법을 찾아보았다.


cmd창으로 들어간 후 해당 VirtualBox가 설치된 곳까지 경로를 이동한다.

VirtualBox가 설치된 곳까지 이동했다면 다음과 같이 명령어를 사용한다.

 

VBoxManage.exe startvm (가상머신이름) --type headless


VirtualBox가 작동에 성공하면 다음과 같은 메시지가 뜬다.

 

Waiting for VM (가상머신 이름) to power on...

VM (가상머신 이름) has been successfully started.

 

 


VirtualBox를 종료할 때는 다음 명령어중 하나를 사용한다.

 

VBoxManage.exe controlvm (가상머신이름) savestate 

VBoxManage.exe controlvm (가상머신이름) poweroff

 


 

savestate는 명령어를 입력하기 직전의 작업 상태가 저장된 상태로 가상머신이 종료된다.

종료된 가상머신을 다시 실행시키면 종료하기 직전의 화면이 뜨면서 실행된다.

poweroff는 가상머신을 완전히 종료하는 방법으로 savestate와는 다르게 가상머신을 실행시키면 첫 부팅화면부터 실행된다.



출처: http://blog.swcode.net/entry/VirtualBox-백그라운드-실행 [부족한 뇌의 외부 저장소]

 

반응형
반응형
-webkit-tap-highlight-color: rgba(0,0,0,0);

 

출처: https://css-tricks.com/snippets/css/remove-gray-highlight-when-tapping-links-in-mobile-safari/

반응형

+ Recent posts