K번째수 문제는 주어진 array 배열을 commands 이차원 배열의 값을 통해 각각 min, max, index 값을 추출하여 min부터 max까지 배열 복사를 정렬을 통해 index 값의 위치를 추출하면 된다. import java.util.Arrays; class Solution { public int[] solution(int[] array, int[][] commands) { int cLength = commands.length; int[] answer = new int[cLength]; for (int i=0; i
리액트 16의 두 번째 멋진 기능은 portals이다. 생각보다 유용해 보이지 않을 수 있는 데 사용하다 보면 유용함을 느낄 수 있다. 기본적으로 리액트는 div를 찾아서 마운트를 한다. 가끔은 리액트 root 밖에서 마운트를 해야 될 때가 있다 예를 들어 헤더가 root 밖에 있고 헤더의 타이틀 및 CSS를 변경하고 싶을 때 또는 다른 사이트를 로딩할 때 등이다. 이럴 경우 portals를 사용하면 된다. portals은 리액트 root 밖에서 리액트를 넣을 수 있도록 해준다. span 태그에 id를 지정해서 만들고 컴포넌트에서 엘리먼트를 리턴하는 대신 portals을 리턴하면 된다. import { createPortal } from 'react-dom'; const Message = () => 'J..
2015년 회고 2015년에는 국내 통신사 솔루션과 SK하이닉스 프로젝트를 진행하였다. 통신사 솔루션은 Nexcore BigData라는 명칭으로 4개의 제품군을 개발하여 출시하였다. 그중에 제가 맡은 프로젝트는 BigData Analysis이며 R언어를 통해 데이터 분석과 시각화를 목적을 두고 제품을 만들었다. 프로젝트 기간은 4개월... 이 부분이 가장 아쉬움이 남는다. 프로젝트 기간을 조금 더 늘려 설계와 분석에 더 투자를 했다면 분명 더 좋은 결과가 나왔을 것이다. SI는 늘 그렇듯이 시간에 쫓기며 개발하고 프로젝트 종료와 함께 SK하이닉스로 프로젝트를 하게 되었다. 경기도이지만 멀게만 느껴지는 이유는 무엇일까... SK하이닉스는 통근버스가 있다. 6시 15분에 버스를 타야 했고 8시 이전에 SK하..
리액트 16의 멋진 기능 중 하나는 return type이다. 이전의 리액트에서는 컴포넌트 아니면 null을 리턴해야 했다. 그게 규칙이었다. string 같은 걸 return 할 수가 없었다. 하나가 아닌 두 개 이상의 리턴 하고 싶어도 이전의 리액트에서는 이렇게 작업을 하지 못했다. array로 감싸거나 span태그를 이용하여 다시 하나의 엘리먼트에 감싸줘야 했다. 불필요한 코드가 늘어났고 상당히 불편하였다. 리액트 16에서는 fragments라는 걸 활용할 수 있다. 또한 를 사용하여 대신할 수도 있다. 또한 String을 반환할 수 있다. fragments, string return type 리액트 16의 첫 번째 기능이다.
이번에는 C, C++, C#의 차이점에 대해 이야기해보자. 눈에 띄는 공통점은 "C"를 이름에 포함하고 있다. 그래서인지 각기 다른 차이점이 헷갈릴 수 있다. 우선 C 언어의 경우 1972년에 만들어졌다. 아주 오래된 언어이다. 또한 C언어는 무수히 많은 다른 언어에게 영향을 미쳤다. 그래서 C는 중요한 프로그래밍 언어로 평가받고 있다. C가 만들어진 1970년대에는 컴퓨터가 지금처럼 빠르지 않았다. 그런 이유로 C는 리소스가 많이 없는 기계에서 작동할 때 유용하다. 그리고 하드웨어와 매우 밀접하게 작동한다. 예를 들면 화성탐사선에서 사진을 찍고 NASA로 전송하는 역할을 하는데 250만 줄의 C언어의 코딩으로 작성되었다고 한다. 왜냐하면 화성탐사선에는 프로세싱 파워도 약하고, 가능한 적게 공간을 쓰면서..
Hive에서 테이블은 HDFS 상에 저장된 파일과 디렉터리 구조에 대한 메타 정보라고 할 수 있다. 실제 저장된 파일 구조에 대한 정보와 저장 위치, 입력 포멧, 출력 포멧, 파티션 정보, 프로퍼티에 대한 정보 등 다양한 정보를 가지고 있다. 테이블 타입 MANAGED 테이블 생성 시 옵션을 따로 설정하지 않으면 MANAGED 테이블로 생성된다. 세션이 종료되어도 테이블의 데이터와 파일은 유지된다. 테이블을 DROP 하면 파일도 함께 삭제된다. EXTERNAL EXTERNAL 옵션은 MANAGED 테이블과 파일 삭제 정책을 제외하고 동일하다. EXTERNAL 테이블은 DROP 하면 파일은 그대로 유지되어, 사용자의 실수로 인한 파일 삭제를 방지할 수 있어 EXTERNAL 테이블로 관리하는 것이 좋다. T..
셸 정렬 기본 개념 "Donal L. Shell"이라는 사람이 제안한 방법으로, 삽입 정렬을 보안한 알고리즘이다. 삽입 정렬이 어느 정도 정렬된 배열에 대해서는 빠르다는 것을 착안하였다. 삽입 정렬과 다르게 셸 정렬은 전체의 리스트를 한 번에 정렬하지 않는다. 셸 정렬 구체적인 개념 정렬해야 할 리스트의 각 k번째 요소를 추출해서 부분 리스트를 만든다. 이때 k를 "간격(gap)"이라고 한다. 각 회전마다 간격 k를 절반으로 줄인다. 즉, 각 회전이 반복될 때마다 하나의 부분 리스트에 속한 값들의 개수는 증가한다. 간격의 초기값 : 정렬할 리스트 사이즈 / 2 분할된 리스트의 개수는 gap과 같다. 간격은 홀수로 하는 것이 좋다. 간격을 절반으로 줄일 때 짝수가 나오면 +1을 해서 홀수를 만든다. 간격 ..
초보 개발자들이 자주 하는 실수와 몇 가지 조언을 하고자 한다. 암기하지 말고 개념을 이해하자. 개발을 처음 배우는 사람들이 가장 자주 하는 실수는 모든 걸 다 암기하려고 한다는 것이다. 사실 시니어 개발자들에게 물어보면, 다들 정확히 기억을 못 한다. 큰 그림과 어떻게 해서 된다는 정도로 아는 경우가 대부분이다. 그래서 무슨 시험 준비하는 거처럼 암기할 필요는 없고 개념을 이해하려고 해야 한다. 세부적인 것 까지 기억하지 못해도 개념을 이해했다면 구글링 해서 언제든지 찾을 수 있다. 필요할 때 찾아서 사용하면 된다. 검색을 잘하는 것도 개발자의 중요한 능력이다. 집중하기 개발을 시작하는 초보자들에게 해주고 싶은 조언은 한 가지 분야에 집중을 먼저 하는 걸 추천한다. 어떤 프로그래밍을 하든 친해질 때까지..
일단 블록 그리고 체인으로 나눠서 생각해보자. 물리적인 블록은 네모 모양의 블록 안에 무엇이든 넣을 수 있다. 비트코인의 경우 transation 거래를 넣는다. 이런한 블록을 체인으로 연결할 수 있다. 블록체인의 장점은 블록을 변경할 수 없다는 것이다. 블록체인 안에는 지문(fingerprint) 같은 것이 있어서이다. 블록이 탄생하게 되면 지문이 생기고 이 지문은 항상 자신의 블록 전에 있는 지문을 참고해서 생성된다. 이 말은 즉 블록의 지문은(이전 블록 지문 + 현재 블록 지문)으로 구성된다는 뜻이다. 블록의 내용을 바꾸고 싶다면, 블록의 지문을 변경해야 한다. 하나를 변경하면, 나머지를 다 변경해야 한다. 이런 이유로 블록체인 기술이 안전하다고 한다. 블록체인은 또한 데이터베이스이다. 블록에 정보..
- React
- 프로그래머스
- 리액트
- spring
- 정렬 알고리즘
- 성능분석
- Tomcat
- Linux 명령어
- sort algorithm
- Maven
- 소프트웨어공학
- 리눅스 명령어
- 오라클 내장 함수
- 자바
- 제주도 여행
- Collection
- 오라클
- Eclipse
- effective java
- 회고
- Java
- 자바스크립트
- 제주도 3박4일 일정
- 리액트 16
- 개발환경
- SQL
- 프로그래머
- 경력관리
- 이직
- javascript
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |