본문 바로가기

130

[디자인패턴] 싱글톤(Singleton) singleton Design Pattern디자인 패턴은 프로그램 개발에서 자주 발생하는 문제를 해결하기 위한 방법 중 하나로, 특정 디자인 규약을 설계 시 간편하게 재사용해서 적용할 수 있도록 패턴화한 솔루션이다.이러한 디자인 패턴의 종류는 아주 다양한데, 전부는 어렵더라도 시간날 때마다 하나씩 천천히 정리해나가보려고 한다.뭐니뭐니해도 디자인 패턴 중 가장 유명한 패턴은 싱글톤 패턴이 아닐까 해서 오늘은 싱글톤 패턴을 정리해볼 것이다. Singleton싱글턴 패턴(Singleton pattern)을 따르는 클래스는, 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴한다.[출처] 위키백과이렇게 보면 뭔가 말이 좀 어려운데.. 2018. 11. 19.
스풀링(spooling) SPOOL SPOOL스풀은 Simultaneous Peripheral Operation On-Line의 약자로, 대기열 관리기법을 말한다. 입출력장치와 CPU 간의 처리속도 차이로 인한 대기시간을 줄이기 위한 기법이다. 입출력장치와 PC를 직접 연결하지 않고 중간 저장 장치를 사용하는데, 디스크의 일부를 아주 큰 버퍼처럼 사용한다. 이때 사용하는 중간 저장 장치 영역 전체를 스풀이라고 한다. SPOOLING이러한 스풀을 적용하는 것 또는 스풀을 채우는 것을 스풀링이라고 한다.입력 장치로부터 읽어들인 출력 데이터들을 출력장치가 처리할 수 있을 때까지 스풀에 일시적으로 저장하고, 입출력 장치의 처리속도에 맞게 컴퓨터가 작업을 할당한다.이렇게 스풀을 사용함으로써 출력을 하면서도 출력 작업을 계속 입력받을 수 .. 2018. 11. 8.
객체지향 설계의 5대 원칙 (SOLID) 객체지향설계원칙 객체지향적인 설계?'객체지향프로그래밍', '객체지향적' 이런 말 많이 들어봤을 것이다. 나도 많이 들어봤고, 객체지향적인 것이 지금도 명확하게 설명할 수 있다고 자부하진 않지만 그게 무엇인지 아예 모를 때에도 '객체지향적으로 설계해야 한다.'고 생각했을 정도로 귀에 박히도록 들어왔다.어떻게 하면 객체지향적으로 설계할 수 있을까? 내가 지금 하고 있는 방법들이 객체지향적인 것일까? 하고 늘 생각해왔는데, 오늘 토비의 스프링3(이일민, 에이콘출판사)을 읽다가 SOLID라는 것을 알게 되었다. 객체지향 설계 원칙(SOLID)아래에 있는 객체지향 설계의 5가지 원칙들의 앞머리를 따서 SOLID라고 칭한다.이 5가지 원칙을 지킨다면 결합도를 낮추고, 응집도를 높여 소프트웨어를 더 깔끔하고 이해하기.. 2018. 11. 5.
[programmers] 더 맵게 더맵게 더 맵게x매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같이 특별한 방법으로 섞어 새로운 음식을 만듭니다.​섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2)Leo는 모든 음식의 스코빌 지수가 K 이상이 될 때까지 반복하여 섞습니다.Leo가 가진 음식의 스코빌 지수를 담은 배열 scoville과 원하는 스코빌 지수 K가 주어질 때, 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 섞어야 하는 최소 횟수를 return 하도록 solution 함수를 작성해주세요.​제한 사항scovil.. 2018. 11. 1.
[programmers] 쇠막대기 쇠막대기 쇠막대기x여러 개의 쇠막대기를 레이저로 절단하려고 합니다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자릅니다. 쇠막대기와 레이저의 배치는 다음 조건을 만족합니다.​- 쇠막대기는 자신보다 긴 쇠막대기 위에만 놓일 수 있습니다.- 쇠막대기를 다른 쇠막대기 위에 놓는 경우 완전히 포함되도록 놓되, 끝점은 겹치지 않도록 놓습니다.- 각 쇠막대기를 자르는 레이저는 적어도 하나 존재합니다.- 레이저는 어떤 쇠막대기의 양 끝점과도 겹치지 않습니다.아래 그림은 위 조건을 만족하는 예를 보여줍니다. 수평으로 그려진 굵은 실선은 쇠막대기이고, 점은 레이저의 위치, 수직으로 그려진 점선 화살표는 레이저의 발사 방향입니다.​(그림)​이러한 레이저와 쇠.. 2018. 10. 29.
[programmers] 완주하지 못한 선수 완주하지 못한 선수 완주하지 못한 선수x수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다.​마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요.​제한사항마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다.completion의 길이는 participant의 길이보다 1 작습니다.참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다.참가자 중에는 동명이인이 있을 수 있습니다. 배열을 정렬해서 순서대로 비교해서 완주자 명단의 같은 인덱스 위치.. 2018. 10. 28.
게시글 SNS로 공유 및 클립보드에 복사하기 게시글 SNS로 공유 및 클립보드에 복사하기 웹 애플리케이션의 게시판에 올린 게시글을 공유해야 하는 경우가 있다. 홍보의 이유건, 공유의 이유건 요즘 SNS로의 공유 기능은 필수적인 것 같다. 다행히도 이런 기능을 SNS마다의 방법으로 제공하고 있는데, 공유 링크에 적절한 URL만 넣어주면 된다. 페이스북으로 공유하기u 파라미터에 공유할 주소를 넣어주면 된다.xxxxxxxxxx// 공유 URLhttp://www.facebook.com/sharer/sharer.php?u=게시글URL그 외에 따로 지정하고싶은 것이 있으면 head 내 meta tag를 아래와 같이 지정해주면 된다.x 트위터로 공유하기말 그대로 text에는 text, url에는 URL을 넣어주면 된다.xhttps://twitter.com/in.. 2018. 9. 16.
[node.js] route에서 반복문(forEach 문)으로 만든 배열 rendering하기 route_foreach 비록 node.js 쪼렙이지만 인터넷에 있던 예제만으로 어떻게 어떻게 응용해서 일을 해내가고 있던 나는 오늘 난관에 부딪혔다.node.js에서 DB 데이터를 여러번 가져오려면 동기식으로 이중, 삼중의 함수를 만들어서 마지막 함수에서 렌더링을 해야하는데, 나는 처음 가져온 데이터의 각 튜플마다 다른 값을 가져와야했다.깊은 지식 없이 그냥 배열에 넣으면 되겠다! 까지는 생각을 해냈다. 그래서 아래와 같은 형식으로 작성했다.xroute.get('/', function(req, res, next) { getData.getList(sql1, function(err, data) { var array = [];​ data.forEach(function (element, index, array.. 2018. 9. 5.
[jQuery/datepicker] 특정일 비활성화(disabled) 하기 datepicker 특정일 비활성화 [jQuery/datepicker] 특정일 비활성화(disabled) 하기 datepickerdatepicker는 jQuery에서 제공하는 UI Widget으로, text type의 input 태그를 클릭했을 때 달력 모양 위젯이 나타나게하거나 div 태그 내에 달력 위젯이 위치하도록 할 수 있다. datepicker를 사용하기 위해서는 jQuery 소스파일을 import 해야하며, 원하는 태그를 선택해 datepicker로 지정해주면 된다.xdoctype html> ​ // datepicker를 사용하기 위해서는 jQuery의 css 및 js 파일들이 필요하다. // 아래와 같이 CDN을 사용해도 좋고, 파일로 저장해 연결해도 된다. ​ $("#datepicker").. 2018. 9. 4.
쿠키와 세션 쿠키와 세션 쿠키와 세션웹 어플리케이션을 만들고 있는 사람이라면 누구나 세션과 쿠키를 접해봤을 것이다. 로그인할 때 세션에 로그인 정보를 저장하고, 자동로그인(로그인 상태 유지) 기능이라던지 팝업창 다시 보지 않기 등등의 기능은 쿠키를 사용하고.. 이 작업들의 차이는 무엇일까? 쿠키나 세션이나 뭔 정보 저장하는건 알겠는데 왜 로그인 할 때는 세션을 쓰고, 자동로그인할 때 쿠키를 쓸까? 반대로 쓰면 안되는 것일까? 궁금하다면 쿠키와 세션이 어떻게 다른지 알아보도록 하자. COOKIE 쿠키란?HTTP 쿠키, 웹 쿠키, 브라우저 쿠키라고도 한다.사용자의 컴퓨터(클라이언트)에 설치되는 작은 데이터 기록 파일클라이언트의 상태 정보를 하드 디스크에 임시 text 파일로 저장했다가 필요할 때 참조 및 재사용한다. 이.. 2018. 7. 20.