![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/Php9w/btqDzD8MrIH/F5SkR9hLayS5knSdLAlynK/img.png)
이 글은 Opentutorials.org의 생활코딩 Javascript 객체 지향 프로그래밍을 수강한 후 정리한 내용입니다. 객체에 접근하기 const member = { developer : 'kim', designer : 'lee', CEO : 'park' }; 점표기법 : member.developer 괄호표기법 : member['developer'] (참고) 객체 삭제하기 : delete member.developer , 실행 결과에 따라 true 또는 false 반환 (참고) var, let, const var 같은 이름으로 재선언 가능 선언과 초기화를 한 번에 함 관리가 어려움 let ES6부터 이용 가능 재선언 불가능, 재할당 가능 선언 이전에 참조 불가(초기화되기 전까지 Temparal D..
[프로그래머스 - 정렬] 가장 큰 수 - 문제보기 시간은 오래 걸렸지만 배울게 많은 문제였다. Comparable / Comparator 문제 풀기 전, 알고리즘 공부를 하면서 Java의 Arrays.sort()에 어떤 알고리즘을 쓰는지 찾아 봤었다. 정렬할 배열에 따라 두가지 경우로 나뉘는데, 기본데이터 타입 배열 정렬 시 - Double Pivot Quick Sort Collection 배열 정렬 시 - Tim Sort(Merge Sort + Insertion Sort) 이때, 두 번째 경우인 Colleciton을 정렬할 때는 원하는 정렬기준을 설정 할 수 있다. Comparable : 객체 내 특정 요소를 기준으로 일반적인 정렬(오름차순, 내림차순)을 할 때 compareTo()를 오버라이딩하여 사..
프로그래머스(Programmers) 예산 - 문제보기 Level3임을 감안하면 쉬운 문제였지만 몇 가지 생각할 점이 있었다. 풀이를 시작하며 low값을 가장 적은 요청금액으로, high값을 가장 높은 요청금액으로 잡고 이분탐색을 실행하였다. 이때, 아래의 1, 2번이 문제가 되었다. 각 지방에서 요청한 예산의 총 합이 정부예산보다 적을 경우 이런 경우 모든 지방이 요청한 만큼 예산을 받을 수 있다. 따라서 예산 상한선은 가장 많은 금액을 요청한 지방의 금액이 된다. 정부예산이 가장 적은 요청금액보다도 적을 경우 처음에 low값을 가장 적은 요청금액으로 잡았기 때문에 위의 경우는 탐색범위에서 벗어난다. low를 1로 변경할까 하였지만 위의 경우를 미리 체크해주고 low값은 그대로 가져가기로 하였다. 각 지..
트랜잭션이란? 트랜잭션(Transaction)이란 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위를 말한다. A가 B에게 만원을 송금한다고 가정한다. 먼저 A의 통장에서 만원을 인출하고, B의 통장에 만원을 입금해야 한다. 이때, 인출과 입금의 두가지 일이 합쳐져 '송금'이라는 하나의 논리적 기능을 이루는 것이다. 트랜잭션의 성질(ACID) 원자성(Atomicity) 트랜잭션은 데이터베이스에 모두 반영되거나 전혀 반영되지 않아야 한다 예) 송금 과정에서 A에게서 만원을 인출했지만 B에게 만원을 입금하지 않는 경우가 발생하면 안된다 일관성(Consistency) 트랜잭션이 성공적으로 완료되면 일관적인 데이터를 유지한다 독립성(Isolation) 둘 이상의 트랜잭션이 동시에 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/wuc4R/btqCqNxQnwU/1qp7w2zkPhkGKMMUxveIEK/img.png)
이분탐색(Binary Search) 입력 : 정렬된 원소리스트, 찾을 값 시간복잡도 : log2 n 이분탐색 과정 정수 배열 int[] array = {2, 5, 8, 10, 15, 16, 19, 20}에서 int key = 8이 몇 번째에 위치해 있는지 찾는다고 가정하자. 가장 먼저 할 일은 탐색 범위를 정하는 것이다. 이 경우에는 주어진 정수 배열 전체를 기준으로 하므로 인덱스 0 ~ 7이 범위가 된다. 탐색 범위가 정해지면 해당 범위의 가운데에 위치한 값을 찾는다. 가운데 값은 탐색 범위의 마지막 인데스에서 첫 인덱스를 뺀 뒤 2로 나눈 수를 인덱스로 가지는 값이다. 이 경우는 (7 - 0) / 2는 3이므로 array[3]의 10이 가운데 값이 된다. key값과 가운데 값(10)을 비교한다. 1)..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/W8eC1/btqMJFORKNB/MkPoZAgLCOAiK2r11alQjK/img.jpg)
fork한 repository 최신으로 동기화 원본 repository를 remote저장소로 추가 git remote add upstream '원본 저장소 주소' git remote -v // 확인 upstream으로부터 최신 업데이트 가져오기 git fetch upstream upstream의 master branch로부터 나의 local master branch로 merge git checkout master // local master branch로 이동 git merge upstream/master push하여 origin remote repository에 적용 git push origin master
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/b5O4y5/btqMDziip4n/NT1KHXBFcQRnAijd4Nkxg1/img.jpg)
1년동안 Git을 사용하며 자주 사용한 명령어를 정리했습니다 :) congif 초기설정 git config --global user.name 'name' // --global로 설정된 값은 처음 한 번만 설정 git config --global user.email 'gthub email' // 매번 다른 이름과 메일주소를 사용할 것이라면 --global 안써도 됨 설정확인 / 삭제 git config --list // 현재 git 설정을 출력 git config --unset user.name // 설정된 user.name 삭제 git config --unset --global user.email // --global로 설정된 user.email 삭제 저장소 생성 저장소 생성 // 먼저 저장소를 만들 위..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/NGaRd/btqBNLHiFZV/jdFmAaXgdEuT54xUbcEPpk/img.png)
개발한 사이트를 외부인 대상으로 테스팅하기 위해 서버를 운영한지 3주째에 접어들었다. 처음 서비스를 시작하고 몇 일은 자고 일어나기만 하면 서버가 다운되어있었다. 아침 일찍 죽은 서버 살리러 학교가서 로그읽고 고치고 셋팅 다시 하고... 지금은 다행히 하루살이 서버는 면한 상태이다. 사용자가 10여 명 뿐이긴 하지만 언제 혼자서 서버를 운영해볼까(그것도 Windows에...ㅋㅋㅋ) 1. 원인 찾기 서버운영 3일째. 어김없이 하루를 넘기지 못하고 서버가 다운되었다. 당시 증상은 아래와 같다. 서버PC는 켜져있음 화면에 띄워놓았던 Tomcat Manager창이 사라짐 정상 종료시와 같은 로그 오류메세지없이 다운된 것은 처음이라 좀 당황스러웠지만, 화면에 띄워놓은 창이 사라진 것으로 보아 PC 다시시작을 의심..