IT, 프로그래밍
-
[PL/SQL] PL/SQL 기초IT, 프로그래밍/Database (Oracle) 2019. 1. 15. 23:12
PL/SQL (Oracle's Procedural Language extension to SQL) = 오라클에서 SQL을 확장하여 사용하는 프로그래밍 언어. 이름과 같이 절차적 프로그래밍 언어이다. PL/SQL을 왜 사용할까? 1. 대용량 데이터를 연산해야 할 때, WAS등의 서버로 전송해서 처리하려면 네트워크에 부하가 많이 걸릴 수 있다. 이때 프로시져나 함수를 사용하여 데이터를 연산하고 가공한 후에, 최종 결과만 서버에 전송하면 부담을 많이 줄일 수 있다. 2. 로직을 수정하기 위해 서버를 셧다운 시키지 않아도 된다. 서버에서는 단순히 DB에 프로시저를 호출하여 사용하면 된다. 3. 쿼리문을 직접 노출하지 않는 만큼, SQL injection의 위험성이 줄어든다. 4. 블록 단위로 유연하게 사용할 수..
-
[디자인패턴] 컴포지트 패턴 (Composite Pattern)IT, 프로그래밍/Design Patterns 2019. 1. 9. 21:41
컴포지트 패턴 (Composite Pattern) = 객체들을 트리 구조로 구성하여 부분과 전체를 나타내는 계층 구조로 표현하는 것. 클리이언트에서 개밸 객체와 다른 객체들로 구성된 복합 객체(Composite)를 똑같은 방법으로 다룰 수 있음. Component (Interface) : 복합 객체내에 들어있는 모든 객체들에 대한 인터페이스를 제공합니다. 복합노드, 리프노드에 대한 메소드를 정의함. Leaf : 그 안에 들어있는 원소에 대한 행동을 정의.Composite (=복합객체) : 자식이 있는 구성요소의 행동을 정의하고 자식 구성요소를 저장하는 역할을 맡음. Client : Component 인터페이스를 사용해 복합 객체 내의 객체들을 조작할 수 있음. Composite = Composite + ..
-
[Java] javap를 사용하여 바이트코드를 확인해보자IT, 프로그래밍/Java 2019. 1. 9. 15:11
가끔 코드를 작성하다 보면 실제 동작되는 바이트 코드를 확인하고 싶을 때가 있습니다.이럴 때 JDK에 내장되어 있는 javap 라는 역어셈블러를 사용하면 됩니다. 1. cmd를 켜서 workspace에 있는 프로젝트 파일 안의 bin 폴더로 이동합니다. ( cd C:\user\kim\workspace\yourProejct\bin )2. javap -c 패키지명.클래스파일명 으로 명령을 수행합니다. 기타 옵션 -? 도움말을 출력 -l 클래스 내 모든 라인 번호와 지역변수 테이블을 출력합니다 -public 클래스 내 public 접근 지정자로 선언된 클래스와 멤버를 출력합니다. -protected 클래스 내 protected 접근 지정자로 선언된 클래스와 멤버를 출력합니다. -private 클래스 내 pri..
-
[JAVA] 채팅 만들기 완전 분석 ( 에코 서버 - 클라이언트 )IT, 프로그래밍/Java 2019. 1. 9. 09:40
보통 자바를 배우는 초심자에 있어서 과제의 끝판왕(?)이라고 불리는 채팅 프로그램에 대해서 알아보겠습니다.채팅 프로그램을 만들기 위해서는 아래와 같은 배경지식이 필요합니다. 네트워크 기초 (TCP/IP)JAVA I/O (Stream)Thread (Multi-Chatting 구현시 사용) 채팅의 원리 서버-클라이언트 : 서버와 클라이언트 모두 네트워크에 연결되어 IP를 할당 받고 있는 디바이스 입니다. 서버는 클라이언트가 필요한 자원을 가지고 있습니다. 클라이언트는 서버에 특정 자원에 대한 요청을 하면 서버는 그 자원을 찾아서 응답을 해 줍니다.지금 이 글을 보고 있는 것도 티스토리에 있는 서버에 브라우저를 통해 이 글에 대한 자원을 요청했고, 서버가 그에 응답으로 자원을 주었기 때문에 볼 수 있는것이 가..
-
[디자인패턴] 반복자 패턴 (Iterator Pattern)IT, 프로그래밍/Design Patterns 2019. 1. 8. 09:41
반복자 패턴 (이터레이터 패턴, Iterator Pattern) : 컬렉션 구현 방법을 노출시키지 않으면서도 그 집합체안에 들어있는 모든 항목에 접근할 수 있게 해 주는 방법을 제공해 주는 패턴. 양치기와 염소치기 이야기 옛날에 양치기와 염소치기가 살았습니다. 아침이 되면 그들은 양과 염소가 밤에 도망갔는지 아니면 늑대의 습격을 받아 희생되었는지 확인하기 위해 숫자를 세었습니다.양치기는 훌륭한 목동견의 도움을 받아 양들을 일렬로 쭉 세운다음 한마리 씩 세었습니다.반면에 염소치기는 어릴 때 부터 염소들에게 이름을 지어주고 부르면 오도록 훈련을 시켰기 때문에 한 마리씩 이름을 불러서 숫자를 세었습니다.어느날 양치기가 너무나 배가 아파서 이웃마을의 의사에게 진찰을 받으러 갔습니다.무려 일주일 동안 시간을 비워..
-
[디자인패턴] 퍼사드 패턴 (Facade Pattern)IT, 프로그래밍/Design Patterns 2019. 1. 7. 22:16
퍼사드 패턴 (Facade Pattern) = 어떤 서브시스템의 일련의 인터페이스에 대한 통합된 인터페이스를 제공합니다. 퍼사드에서 고수준 인터페이스를 정의하기 때문에 서브시스템을 더 쉽게 사용할 수 있습니다. * 퍼사드(Facade) 라는 것은 무엇일까요?퍼사드란, 프랑스어 Façade 에서 유래된 단어로 건물의 외관이라는 뜻을 가지고 있습니다. 건물의 외벽에서 보면 안의 구조는 보이지 않습니다. 퍼사드 패턴은 많은 서브시스템(내부 구조)을 거대한 클래스(외벽)로 만들어 감싸서 편리한 인터페이스를 제공해 줍니다. 퍼사드패턴으로 전자레인지 만들기 우리는 전자레인지를 버튼만 클릭하면 동작 시킬 수 있습니다.동작시킬 타이머만 설정하고 실행 버튼만 클릭하면 곧 따뜻한 음식을 먹을 수 있죠.여기서 전자레인지가 ..
-
[디자인패턴] 어뎁터 패턴 (Adapter Pattern)IT, 프로그래밍/Design Patterns 2019. 1. 5. 17:59
어뎁터 패턴 (Adapter Pattern) : 한 클래스의 인터페이스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 변환한다. 이 패턴을 사용하면 다른 인터페이스와의 호환성 문제를 해결할 수 있다. 여기서 말하는 어뎁터(Adapter)를 설명하자면.. 보통 직구를 해서 전자제품을 구매하거나, 해외여행을 갈 때 한국과는 다른 규격의 전기 플러그를 사용할 때가 있습니다. 그럴때 보통 '돼지코'라고 불리는 플러그 변환 어뎁터를 씁니다. 이 어뎁터가 특정 규격의 플러그를 다른 플러그와 호환이 가능하게 하듯이, 객체 지향 프로그래밍에서도 비슷하게 사용할 수 있습니다. A시스템사는 몇년 전 부터 식권 발매 시스템을 개발하여 운영하고 있습니다.이 시스템이 안정적으로 운영되면서 최근 같은 사업을 하던 G그룹이 인..
-
Footer 하단에 고정시키기IT, 프로그래밍/Javascript 2019. 1. 2. 21:04
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748//문자열을 제외하고 소수점 이하까지 가져오는 정규식 (ex) 233.33px -> 233.33)window.REGEX_TRIM_DIM_SIZE_EXTEND = /(?=\D)(?=^\.)/; //Footer Object function Footer(){ let $footer; (function(){ $footer = $("footer"); })(); //Footer의 높이를 반환하는 함수 this.getFooterHeight = function(){ let footerHeight = $footer.css("height").replace(window.R..