목록분류 전체보기 (32)
다메다메의 기술블로그
인터페이스 분리 원칙 (Interface Segregation Principle) 인터페이스 분리 원칙이란 객체는 자신이 호출하지 않는 메소드에 의존하지 않아야한다는 원칙이다. 구현할 객체에게 무의미한 메소드의 구현을 방지하기 위해 반드시 필요한 메소드만을 상속/구현하도록 권고한다. 만약 상속할 객체의 규모가 너무 크다면, 해당 객체의 메소드를 작은 인터페이스로 나누는 것이 좋다. 코드로 보는 인터페이스 분리 원칙 예시를 통해 인터페이스 분리 원칙을 준수하지 않은 경우와 준수한 경우 어떠한 차이가 있는지 코드를 통해 알아보자. 인터페이스 분리 원칙을 준수하지 않은 코드 예를 들어, 스마트폰이라는 객체가 있다고 가정하자. 이 스마트폰 객체는 비교적 최신에 나온 덕분에 일반적인 스마트폰 기능 외에도 무선 충..
RequireJS?RequireJS는 JavaScript 파일과 모듈 로더이다.RequireJS는 브라우저에 최적화되어 있지만 Rhino나 NodeJS등의 환경에서도 사용할 수 있다. RequireJS같은 모듈 로더를 사용하면 당신의 코드의 성능과 품질이 좋아질 것이다- RequireJS 공식 사이트Java나 Python 같은 잘 정립된 언어에서는 객체의 모듈화를 언어 자체에서 잘 지원하지만 JavaScript는 그렇지 않다. 또한, 프로그램이 커질수록 스크립트가 중복되어 발생하는 경우가 발생할 수 있고 그런 경우에 코드를 common.js, event-binder.js 등의 코드로 나누어 관리하는경우가 많아지는데, 이 경우에도 분리한 코드를 잘 로딩하지 않으면 코드간 의존성이 망가지며 프로그램 자체의 ..
알고 계신 분들도 많을 거라 생각하지만 사용법을 설명 해 보도록 하겠습니다. JQuery.extend() 함수는 복수의 오브젝트를 합쳐서(merge) 되돌려 주는 함수입니다.(플러그인 소스에서 디폴트 설정치를 덮어 쓸때 자주 볼 수 있습니다) 1jQuery.extend(target[, object1][, objectN]) 이런식으로 사용합니다.오브젝트 a와 b를 합치고 싶은 경우 12345678910111213141516171819var a = { id: 1, name: 'TAM'}; var b = { name: 'TAM-new', hobby: 'football' }; $.extend(a, b); console.log(a);// 결과:// {// id: 1,// name: "TAM-new",// hobb..
autocomplete 모음http://autocompletejs.com/http://autocomplete-js.com/http://atmb4u.github.io/AutoJS/http://hakib.github.io/MassAutocomplete/highlight.js신텍스 하일라이터. 코드 3줄이면 페이지 내 코드를 자동으로 인식해서 하일라이팅 해주는 라이브러리. https://highlightjs.org/textures.jsSVG 패턴을 생성해주는 d3.js 확장 라이브러리. 데이터 시각화. http://riccardoscalco.github.io/textures/krakenjsexpress를 위한, 보안 및 확장 가능한 레이어. 페이팔 오픈소스. http://krakenjs.com/intract...
VBox\Main\src-server\MachineImpl.cpp[725] (long __cdecl Machine::registeredInit(void)). 자신은 평범하게 사용했을 뿐인데 위의 메세지라던지 그 외에 메세지를 띄우며 버추얼 박스가 기동되지 않는 경우가 있다. 그럴때는 /home/user/VirtualBox VMs/window8.1 이런 경로에 다음과 같은 파일들이 존재한다. window8.1.vboxwindow8.1.vbox-prev 필자의 경우는 window8.1이라서 8.1이다자신의 버전에 맞춰서 이해해 주길 바란다. 위의 두 파일중에 1. window8.1.vbox-prev -> window8.1.vbox-temp 파일복사 2. window8.1.vbox 는 삭제 3. window8..
error: unpack failed: error Missing commit 5397c99c9ab783bd94fcbd719fb71651de82ede3 위와 같은 에러로 push가 되지 않을 경우가 있다. 그럴때는 아래의 커맨드로 다시 한번 pull을 해보길 바란다. git pull --rebase
실수로 리모트에 브런치를 생성 해 버렸을 경우 아래의 커맨드로 리모트의 브런치를 직접 삭제 할 수 있다. git push origin --delete
리눅스 설치 패키지 목록 확인 1. rpm(CentOS, 레드햇)rpm -qa | grep 패키지명 2. dpkg(우분투/데비안)dpkg --get-selections | grep 패키지명
리눅스 포트 사용하는 프로세스 확인 특정 포트를 어떤 프로세스가 사용하고 있는지 확인하기 위해선 다음과 같은 명령어를 입력하면 된다. netstat -anp | grep LISTEN | grep :포트번호 예)# netstat -anp | grep LISTEN | grep :80tcp6 0 0 :::80 :::* LISTEN 10483/apache2
TextView의 문자를 1줄까지만 표시하기 TextView의 내용을 유저가 결정 할 수 있을 경우, 예상했던 문자 수를 초과 하여 2줄에 걸쳐 표시되는 일이 자주 있습니다. 이럴 경우에 문자열을 1줄까지만 표시되게 제한하는 프로퍼티와 문자열의 처음, 중간, 끝에 [...]으로 생략하여 표시 할 수 있는 옵션이 TextView에 존재합니다. android:maxLines="1" android:ellipsize="start" maxLines는 이름만 봐도 뭐하는 프로퍼티인지 바로 감이 옵니다. 최대 라인수를 1줄로설정하게 됩니다.그리고 ellipsize는 start로 설정하면 문자열의 처음이, middle로 설정하면 문자열의 중간이, end로 설정하면 문자열의 끝 부분이 [...]으로 표시되며 생략됩니다...
ListView안에 Button 배치후 ClickListener 설정하기 ListView안에 Button을 배치 한 후에 각 row의 버튼에 이벤트 리스너를 등록할 때에는 아래와 같이 Adapter의 getView() 메소드에 이벤트리스너를 등록해 주시면 됩니다. public View getView(int position, View view, ViewGroup viewgroup) { Button btn = (Button) view.findViewById(R.id.btn); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // 삭제 처리 ...
ListView안에 ImageButton을 배치하면 ListView의 아이템이 클릭 되지 않을 때 ListView안에 ImageButton을 배치 했습니다.배치 후에 확인을 해 보니 ListView안에 있는 ImageButton은 클릭이 잘 되었습니다만..문제는 ListView의 Item이 클릭이 되지 않는 것이었습니다! 이럴 때의 해결책은 두 가지였습니다. 방법 1. xml의 ImageButton에 다음과 같은 속성을 추가합니다. android:focusableInTouchMode="false"android:focusable="false" 방법 2. ArrayAdapter의 Item 루트 Layout에 다음과 같이 추가합니다. 위의 방법 중에 한 가지만 적용하셔도 ListView의 Item, Image..
웹 크롤러(Web crawler)란? 웹 크롤러는 웹상의 문서나 사진 등을 주기적으로 취득해서 자동적으로 데이터 베이스화 하는 프로그램을 말합니다. 봇(Bot), 웜(Worms), 웹 스파이더(web spider), 웹 로봇(web robot)이라고도 불립니다. 어떤 목적으로 사용되는가? 주로 검색엔진의 데이터베이스, 인덱스 작성등에 이용되고 있는것 외에도 통계조사, 링크체크, HTML 코드 검증 등에도 이용됩니다. 최근에는 "메일주소 수집업자"등이 웹 크롤러를 이용하여 메일주소를 수집 후 스팸발송의 효율성을 높이는 작업등에 이용되고 있습니다.
var A = [1,2,3,4];위와 같은 배열이 있다고 할 때 배열 안의 데이터를 모두 삭제 하는 방법은 다음과 같습니다. 방법 1A = []; 방법 2A.length = 0; 방법 3 A.splice(0, A.length); 방법 4 while(A.length > 0){A.pop(); } 이 중 가장 퍼포먼스가 잘 나오는 방법은 3번입니다. 아래의 링크에서 퍼포먼스 결과를 확인 할 수 있습니다. http://jsperf.com/array-destroy/151
우분투에서 일본어 입력하기 1. ibus 일본어 키보드 라이브러리 설치 $ sudo apt-get install ibus-anthy 2. ibus 데몬 재시작 $ ibus restart 3.사용할 입력 소스 추가 - 일본어 (Anthy)를 추가한다 모든 설정이 끝났다면 Shift + 왼쪽 Alt를 통해 일본어 입력이 가능하다
1. adb shell 실행 $ adb shell (window)$ ./adb shell (linux)(adb 경로 : [Android Sdk Path]/platform-tools/) 2. 연결된 디바이스에 설치 된 패키지 리스트 확인 모든 패키지 검색 $ pm list packages -f 검색결과ex) package:/data/app/com.example.app-2.apk=com.example.app위의 검색 결과중에 빨간색 문자만 쓰인다. 3. adb shell를 종료한다 $ exit 4. adb pull로 추출한다 $ adb pull /data/app/com.example.app-2.apk
윈도우7 연결프로그램 변경법입니다 1. 시작버튼 클릭 -> 제어판 선택 2. 프로그램 선택 3. 항상 특정 프로그램으로 파일 형식 열기 선택 4. 확장자 선택 -> 프로그램 변경 버튼 클릭
1. 환경 변수에 설정 된 현재 자바 버전 확인 #java -version 2. 현재 자바 위치 확인 #which java 3. 자바 링크 경로 확인 #la -l /usr/bin/java(2번에서 확인 한 자바 위치) 4. 기존 링크 끊기 #unlink /usr/bin/java 5. 새로운 링크 지정하기 #ln -s /(새롭게 지정 할 패스)/java /usr/bin/java(2번에서 확인 한 자바 위치) 6.확인 #ls -l /usr/bin/java #java -version
JQuery는 웹브라우저용의 JavaScript 코드를 보다 간결하게 작성할 수 있도록 설계된 JavaScipt 라이브러리이다. 존 레식이 2006년 1월에 개최된 BarCamp NYC에서 릴리즈하였다 다양한 곳에 활용되고 있으며 JavaScript 라이브러리 중에서는 사실상 표준이라고 부르는 사람도 있다 기능 JQuery는 다음과 같은 기능을 가지고 있다 DOM 요소 선택 기능 (멀티 브라우저 오픈 소스 셀렉터 엔진인 시즐(Sizzle)을 이용한 것으로 시즐은 JQuery프로젝트의 파생 프로젝트이다) DOM 탐색 및 수정 CSS 셀럭터에 기반한 DOM 조작. 노드 요소 및 노드 속성을 셀렉터 생성을 위한 기준으로 사용 이벤트 특수효과 및 애니메이션 AJAX JSON 파싱 플러그인을 통한 확장성 유틸리티..