개발 28

Javascript 소스(source) 난독화(Obfuscated) 및 압축(Minification)

안녕하세요. 공유민입니다. 이번 포스트는 Javascript 소스 난독화와 압축에 대해 정리해보았습니다. 압축(Minification)이란 것은 보통 자바스크립트 코딩을 할 때 가독성을 위해서 들여쓰기등 공백이 많이 들어가게 되어 있는데 이런 것을 없애고 코드의 크기를 줄여주는 것이다. 난독화(Obfuscation)라는 것도 있는데 이것은 변수나 함수명을 이상하게 바꾸어서 코드를 읽기 어렵게 만든다. JSMIN JSON을 창시한 더글라스 크록포드(Douglas Crockford)가 만든 JavaScript Minifier이다. 위 링크에서 실행파일을 다운로드 받고 커맨드로 실행시키면 된다. $ jsmin 생성할 파일명 "주석" $ jsmin myjavascript-min.js 주석 입력시 js파일 최상단..

개발/HTML, JS 2018.01.16

3 Tier Architecture (3계층 구조)

안녕하세요. 공유민입니다. 3계층 구조에 대해 정리하였습니다. 3계층 구조(3 Tier Architecture)란 프레젠테이션 로직(클라이언트, 사용자 인터페이스), 비즈니스 로직, 데이터베이스 로직을 각각 다른 플랫폼 상에서 구현한 것이다. 설명전에 용어에 대해 간단히 구분을 해보자. 계층(Tier) : 컴포넌트들의 물리적인 분리를 뜻한다. 층(Layer) : 컴포넌트들의 논리적인 분리를 뜻한다. 3계층을 바로 알아보기 전에 1, 2, 3계층 구조를 순서대로 알아보자. 1계층 구조(1 Tier) 위 그림은 한 클라이언트 컴퓨터에 3가지 로직을 다 구현한 것을 표현한 그림이다. 한 클라이언트 서버에서 모든걸 지원하므로 새로운 컴퓨터를 사용하고자 할 경우 모두 새로 변경해야 한다는 단점(한가지 로직을 바꾸..

개발/Architecture 2018.01.15

IPC (Inter-Process Communication)

안녕하세요. 공유민입니다. 이번 시간에는 IPC에 대해 포스팅하겠습니다. 참조 사이트 IPC 소개 Process는 완전히 독립된 실행객체이다. 서로 독립되어있다는 것은 다른 프로세스의 영향을 받지 않는다는 장점이 있다. 그러나 독립되어 있으니 만큼 별도의 설비가 없이는 서로간에 통신이 어렵다는 문제가 있다. 이를 위해서 커널영역에서 IPC라는 내부 프로 세스간 통신 (Inter Process Communication)을 제공한다. 프로세스는 커널이 제공하는 IPC설비를 이용해서 프로세스간 통신을 할 수 있다. IPC 구현 방법 PIPE 일반적으로 생각하는 파이프와 비슷하게 동작한다. 파이프는 두개의 프로세스를 연결한다. 하나의 프로세스는 단지 데이터를 쓰기만 하고 다른 하나의 프로세스는 단지 읽기만 할 ..

개발/IPC 2018.01.15

쿠키(cookie) 생성, 삭제, 확인 예제

안녕하세요. 공유민입니다. 쿠키 생성, 삭제 및 확인 예제 소스로 정리해봤습니다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 // 해당 이름의 쿠키를 삭제한다. function delCookie(_name) { var expireDate = new Date(); //어제 날짜를 쿠키 소멸 날짜로 설정한다. expireDate.setDate( expireDate.getDate() - 1 ); document.cookie = _name + "= " + "; expires=" + expireDa..

개발/HTML, JS 2018.01.15

프로토콜, 도메인, 포트, 파일(페이지)명 구하기 예제

안녕하세요. 공유민입니다. 스크립트단에서 현재 접속한 페이지의 프로토콜, 도메인 ,포트, 파일명, 파라미터를 구하는 예제 코드를 준비했습니다. 123456789101112131415161718 alert("protocol : " + location.protocol); // 프로토콜 (http:, file:, ...) alert("domain : " + location.host); // 도메인(포트번호 포함) (www.blog.com:80) alert("port : " + location.port); // 포트번호 (80) alert("path : " + location.pathname.substring(1)); // '/' 이후 주소 (test/sample.html) alert("filename : " ..

개발/HTML, JS 2018.01.15

공백 사용 방지 예제 소스

안녕하세요. 공유민입니다. 1234567891011121314151617181920212223242526272829303132333435363738394041no space // 공백 사용 못 하게 function noSpaceForm(obj) { var str_space = /\s/; // 공백 체크 if(str_space.exec(obj.value)) { // 공백 체크 alert("해당 항목에는 공백을 사용할 수 없습니다.\n\n공백 제거됩니다."); obj.focus(); obj.value = obj.value.replace(' ',''); // 공백제거 return false; } } // 첫 글자 공백만 사용 못 하게 function noSpaceForm2(obj) { if(obj.value ..

개발/HTML, JS 2018.01.15

VC++ 6.0, dll 디버깅 포함시키기(dependencies)

dll 소스를 가지고 있을 때, 같이 디버깅을 걸고 싶을 때가 있다. 온전한 프로젝트라면 Insert Project into Workspace를 해서 볼 수도 있을 것이고 Insert Project into Workspace 했다면 Project - Dependencies... 메뉴에서 프로젝트 종속시킨다. 또는 단편적인 해당 dll의 .cpp 파일만 있어도 디버깅을 걸어볼 순 있다. 우선 dll이 사용되는 시점에 디버깅 포인트를 걸어준다. 그리고 Debug - Modules... 메뉴에 들어가면 현재 실행되는 모듈들을 확인할 수 있다. 해당 dll 사용하는 시점이라면 우리가 보고 싶어하는 dll도 Module 탭에서 찾을 수 있을 것이다. 해당 dll이 보인다면 프로세스가 활성화 된 것이다. 그렇다면 ..

개발/C++, MFC 2017.07.19

C++ 키워드와 예약어

개발팀 회의 중에 키워드와 예약어에 대한 얘기가 나왔는데, 정의, 개념이 헷갈렸습니다. 비슷한 것 같기도 하면서도 달랐던 것 같아서 찾아서 정리해보았습니다. 내용은 C++ 기초 플러스 부록을 참고하여 작성하였습니다. 예약어(키워드를 포함하는 개념) 컴퓨터 프로그래밍 언어에서 이미 문법적인 용도로 사용되고 있기 때문에 식별자로 사용할 수 없는 단어들이다. 예를 들어 C에서 return은 변수명이나 함수명으로 사용할 수 없다. 그런 단어들은 키워드이다. 때로는 아직 구현되지 않은 명령들을 위하여 예약어를 지정하기도 한다. 예를 들어 자바에는 const와 goto와 같은 예약어가 있는데 이것은 아직 사용되지 않지만 예약어이므로 식별자로 사용될 수 없다. 이것은 나중에 구현될 경우에 기존의 원시 코드를 그대로 ..

개발/C++, MFC 2017.06.29

Javascript, Event Loop

Javascript의 Event loop는 call stack(콜스택)과 message queue(메시지 큐)로 이루어져 있다. Event Loop란? 콜 스택과 메시지 큐를 함께 동작하도록 하는 것. The Call Stack (추상적인 개념) 특징 - 단일 스레드 : 스레드는 CPU 사용의 기본 단위입니다. 낮은 레벨의 OS 구조는 스레드 ID, 프로그램 카운터, 레지스터 세트 및 스택으로 구성됩니다. 자바 스크립트 엔진 자체가 동안이 호출 스택은 단일 스레드가 한 번에 실행 코드의 한 조각을 허용하고있어 멀티 스레드. - 동기식 : JavaScript 호출 스택은 작업 전환 대신 작업을 완전히 완료합니다. 이벤트도 마찬가지입니다. ECMAScript 또는 WC3 사양에서는 요구 사항이 아닙니다. 하..

개발/HTML, JS 2017.06.13

C#, 스레드 메소드로부터 리턴 값 받아오기

안녕하세요. 공유민입니다. 이번 포스팅은 스레드 메소드로부터 리턴 값을 받아오는 방법에 대해 포스팅하겠습니다. 스레드에게 일을 시켜 놓고, 그 결과를 리턴 값을 받아야할 때가 있습니다. 저는 작업의 결과로 여러 값을 저장하고 싶어서 구조체를 사용했습니다. 그럼 샘플 코드로 설명하겠습니다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455// 다른 using 생략using System.Threading;using System.Threading.Tasks; namespace Gongyumin{ public partial class frmMain : Form { // 스레드 이용..

개발/C# 2017.02.24