반응형

동고 팔자 상팔자 218

다리잇기 퍼즐 (Hashiwokakero)

Hashiwokakero라고 불리는 다리잇기 퍼즐 문제수는 총 5개이고 랜덤으로 선택됩니다.첫번째 원을 선택하면 다리로 이을수있는 다른 섬이 연빨강으로 표시됩니다.그 상태에서 다른 원을 선택하면 다리가 그려집니다. (한 방향으로 최대 2개까지 건설 가능.)원의 숫자와 다리수가 일치하면 섬의 색이 변합니다. (색이 변한다고 다리를 올바르게 놓은것은 아님!)더 자세한 룰은 게임 아래에 작성해 놓았습니다. 혹시 문제가 더 필요하거나 버그가 있으면 알려주세요~~~~!더 많은 문제를 원하면 오른쪽 클릭 -> 문제 더 풀기 Puzzle No : 초기화 다른퍼즐 퍼즐방법 섬들 사이에 다리를 만들어서 모든 섬들이 하나의 연결된 그룹으로 이어지게 하면된다. 1) 다리들은 서로 다른 섬에서 시작하고 끝나야하며 그 둘 사이..

개발 2016.05.07

자바스크립트 성능 최적화 #2 : 렌더링 + α

자바스크립트 성능 최적화 #1 포스트와 마찬가지로 NHN은 이렇게 한다 자바스크립트 성능 이야기의 내용들이다.브라우저 렌더링 과정 및 기타에서도 속도를 향상 시킬수 있다. 렌더링 및 기타 방법에는 크게 아래 4가지 방법이 있다. reflow, repaint 최소화노출 제어를 통한 reflow 최소화 (display 속성 이용)DOM, 객체 캐싱기타 reflow, repaint 최소화같거나 동일한 작업은 그룹을 묶어 실행한다. (구버전 브라우저에서는 전의 작업의 경우, 여러번의 reflow와 repaint가 발생하나 최신 버전 크롬의 경우 한번만 발생한다고 함)reflow와 repaint에 대한 설명은 아래 글 참고브라우저 렌더링 : reflow & repaint1234567891011// 전var wid..

개발 2016.04.27

자바스크립트 성능 최적화 #1 : 코드 스타일

nhn은 이렇게 한다 자바스크립트 성능 이야기의 내용들을 발췌하였음바로 활용할 수 있는 부분을만 추려서 요약한다.코드 스타일 부분에서는 크게 아래 3가지를 통해 성능을 향상시킬 수 있다. 변수, 객체 생성 및 접근정규표현식반복문 변수, 객체 생성 및 접근1) 배열 생성 : var arr = []; 이 var arr = new Array() 보다 빠름2) 배열 데이터 초기화 및 접근 : arr[i] = i;이 vs arr.push(i); 보다 빠름3) 객체 생성 : var obj = {}; vs var obj = new Object(); 보다 빠름4) 객체 데이터 초기화 및 접근 : obj.a = 1; vs obj["a"] = 1; 보다 빠름5) 문자열 생성 : var str = "test"; vs var..

개발 2016.04.24

브라우저 렌더링 : reflow & repaint

렌더링 과정1) DOM 트리 생성2) 스타일 구조체 생성3) 렌더 트리 생성4) 레이아웃 처리5) Paint6) 페이지 기능에 따라 Reflow, Repaint가 추가로 발생 reflow생성된 DOM 노드의 레이아웃(너비, 높이 등) 변경 시, 영향받은 모든 노드(자식, 부모 등)의 수치를 다시 계산하여 렌더 트리를 재생성하는 작업1234function reflow() { document.getElementById('test').style.width = '100px'; return false;}Colored by Color Scriptercs repaintReflow 과정이 끝난 후 재생성된 렌더 트리를 다시 그리는 작업.수치와 상관없는 background-color, visibillty, outline..

개발 2016.04.23

String에 대한 궁금증 4가지

너무너무 너무나도 많이 사용하는 String 아래 4가지 주제를 통해 String에 대해서 아주 쬐끔(?)만 더 알아보자. String a = "test" or String a = new String("test")? == or equals? String은 immutable한가? String의 최대 길이는? String a = "test" or String a = new String("test")? String은 객체이기 때문에 new를 통해 값을 생성하는게 일반적이다. 하지만 자바에서 String은 특별히 ""을 사용하여 생성할 수 있도록 특별대우를 해주고 있다. (보통 ""은 원시자료형(int, long, double, float, boolean, char 등)의 값을 선언할때 사용한다.) 즉 "", ..

개발 2016.04.21

JVM 구조 가볍게 알아보기

JVM은 자바 바이트코드를 실행할 수 있는 주체이다.자바와 다른 언어의 가장 큰 차이점은 컴파일된 코드가 플랫폼 독립적이라는 점이다. 여기저기서 다 쓸수있다는 것.자바 컴파일러는 자바 언어로 작성된 프로그램을 바이트코드라는 특수한 바이너리 형태로 변환한다. 이 바이트코드를 실행하기 위해서는 특수한 가망 머신이 필요한데, JVM이 이 역할을 한다. 이때 JVM이 바이트코드를 어느 플랫폼에서나 동일한 형태로 실핸시키는 것이다. 왜 JVM이 필요한지 잠깐 잔바의 탄생 배경을 통해 알아보자.처음에 자바는 냉장고, 전자레인지 등의 가전제품 제어에 사용할 목적으로 개발 되었었다. 여러가지 가전제품에서 모두 수행되는 언어를 만드는 것이 목적이었던 것이다. 그러나 가전제품 회사들의 무관심으로 주목을 받지 못하다가 19..

개발 2016.04.21

System.out.println에 관한 고찰

자바 개발 시, 가장 먼저 배우는게 바로 System.out.println이다.아마 System.out.prinln("Hello World!")를 안써본 사람은 없을 것이다.그럼에도 불구하고 자바 개발 시 지양해야하는 것중 하나가 바로 System.out.prinln이다.이유는 리소스를 많이 사용하여 성능 부하를 초래하기 때문이다. 대신 log4j 등의 유틸리티를 사용하라고 한다. 궁금하지 않은가. System.out.println이 어떤놈인지, 그리고 얼마나 느린지.먼저 System.out.println의 정체를 살펴보자. 구글링도 좋지만 java doc을 먼저 뒤덕거려 보자.허접한 영어 실력으로 System, out, println을 차례로 따라가면서 살펴보면 아래와 같다. System은 Object..

개발 2016.04.03

Cloud9 사용하기 (ci9)

구름IDE에 이어 Cloud9을 써보았다. Cloud9도 구름IDE와 같은 클라우드 IDE라고 보면된다. Cloud9 사용법도 구름IDE와 거의 흡사하니 아래 구름IDE 사용법을 미리 훝어보는 것도 좋다. (안봐도 무관함) 구름IDE 사용하기 우선 회원가입을 한다. (방법은 생략) 로그인을 하면 아래와 같은 화면으로 이동된다. Workspaces 아래 'Create a new workspcae'를 클릭한다. 아래와 같은 화면으로 이동된다. 워크스페이스 이름, 설명 입력 및 공개여부를 선택한다. 템플릿은 원하는 것으로 선택해도 된다. 하지만 여기서는 Node.js를 예시로 할것이니 Node.js를 선택한다. 마지막으로 'Create workspace'를 클릭한다. 워크 스페이스를 만들면 아래와 같은 개발화..

개발 2016.04.01

자바 for문을 이용하여 Map, Hash 값 꺼내기

자바 for문을 이용하여 Map, Hash 값 꺼내기자주 사용하지는 않고 알고리즘 문제풀거나 디버깅할때 사용함 Map Map을 꺼내는 방법은 아래 3가지 방법이 가장 보편적이다.개인적으로는 1번 방법이 가장 간단하고 직관적인것 같아서 이것만 쓰고있음1234567891011121314151617181920212223Map map = new HashMap();map.put("a", "aaa");map.put("b", "bbb");map.put("c", "ccc"); // 방법1)for ( String key : map.keySet() ) { System.out.println("방법1) key : " + key +" / value : " + map.get(key));}System.out.println("===..

개발 2016.03.28

Git reset 명령어

reset은 사용자의 저장소와 작업 디렉토리를 특정 시점 상태로 변경한다. 메카니즘을 들여다보면 HEAD 참조를 지정된 commit 시점으로 변경한 후, 인덱스를 변경하여 해당 commit을 반영한다. 옵션에 따라 HEAD, 인덱스 뿐만아니라 작업 디렉토리 내의 모든 파일이 변경될 수 있기때문에 반드시 주의하여 사용하여야 한다. 주요 옵션 --soft git reset --soft [commit id] --soft 옵션은 지정된 commit을 가리키도록 HEAD 참조를 변경한다. 인덱스와 작업 디렉토리의 내용은 그대로 유지된다. 이 옵션은 새 커밋을 가리키도록 심볼릭 참조의 상태만을 변경한다. --mixed git reset --mixed [commit id] --mixed 옵션은 지정된 commit을 ..

개발 2016.03.28

자바 배열 출력

디버그 시 용이한 자바 배열 출력 방법(출처 : https://docs.oracle.com/javase/8/docs/api/java/util/Arrays.html) 단일 배열 Arrays 클래스의 toString 사용.(정확히 말하자만 Object 클래스의 toString이다.) 단일 배열만 가능12345int[] intArray1 = {1,2,3};int[][] intArray2 = {{1,1,1}, {2,2,2}, {3,3}}; System.out.println("1차원 배열 : " + Arrays.toString(intArray1));System.out.println("2차원 배열 : " + Arrays.toString(intArray2));cs 결과121차원 배열 : [1, 2, 3]2차원 배열 ..

개발 2016.03.27

자바 10진수 <-> 2진수, 8진수, 16진수 변환

자바 2진수, 8진수, 16진수 변환 시에는 Integer 클래스 API를 활용하면 편하다.(참고 : https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html) 10진수 -> 2진수, 8진수, 16진수 변환12345678int num = 77;String a2 = Integer.toBinaryString(num); // 10진수 -> 2진수String a8= Integer.toOctalString(num); // 10진수 -> 8진수String a16 = Integer.toHexString(num); // 10진수 -> 16진수 System.out.println("2 진수 : " + a2);System.out.println("8 진수 : " + ..

개발 2016.03.26

구름IDE 사용하기

집에서 공부용으로 쓸 클라우드IDE를 알아보다가 발견한 구름IDE Nitrous를 쓰려고했지만 회원가입 마지막 시점에 무료 계정이라도 맨처음에 신용카드 등록을 해야(?)하는것 같아서 포기 먼저 구름IDE를 사용하려면 회원가입은 당연히 필수 주소는 http://www.goorm.io 나는 구글 계정으로 사용했다. 로그인후에 '나의 구름으로 이동하기'를 누르면 아래와 같은 페이지로 이동한다. '새 컨테이너 생성 버튼'을 눌러서 컨테이너를 생성한다. 난 일단 가볍게 테스트만 해볼꺼니까 node.js 스택을 선택했다. 컨테이너를 생성하고 시작버튼을 누르면 아래와 같이 VM에 연결되면서 웹IDE모드로 들어간다. VM에 연결완료. UI가 이클립스랑 거의 똑같이 생겨서 친근하다. 아래를 보면 터미널까지 제공해준다. ..

개발 2016.03.26
반응형