목록전체 글 (51)
모르면 배우면 된다

재귀(recursion) 뜻 : 자기 자신을 호출하는 함수. 왜 알아야 하는가? => 모든 곳에서 사용되니까! 재귀는 무수히 많은 곳에서 사용된다. 데이터 구조트리그래프를 생성할 때 or 순회&검색하고자 할 때 재귀가 포함되는 경우가 많다. 때로는 반복 대신 재귀를 사용하는 것이 깔끔하다. 직접 parse 함수나 getElementById 함수를 작성할 때 중요하게 쓰인다. 오류 없이 재귀 함수를 작성하기 위해 알아둬야 할 것 : 함수 실행 순서 관리법 모든 프로그래밍 언어는 함수가 올바르게 실행되도록 만드는 데이터 구조가 있는데, JS는 CALL STACK이라고 부른다. 함수를 호출하면, CALL STACK의 맨 위에 함수가 쌓인다. 마치 종이 더미에 종이가 쌓이는 느낌. 1) JS가 함수를 인식하면,..

트위터에서 헤이조이스의 개발자 컨퍼런스 글을 보고 바로 신청! 개발자로 지혜롭게 살기 위해.. 선배릠들의 조언을 구하기 위해... 냅다 컨퍼런스를 질러버렸다. 내가 시청한 첫 번째 연사님은 쿠팡의 장주란 Software Development Manager 다. 주란 님의 이야기를 듣고 스타트업이 재밌다고 느낀점 : 고객들의 사용을 분석해서 앱을 더 발전시킬 여지가 있다. SI는 시키는 일만 해야 하고, 더 나은 기능을 제안하면 이걸 왜 해라는 답변이 돌아오는.. 쿠팡의 발전을 개발자 입장에서 들어 보니... 비즈니스와 개발은 정말정말 가까운 게 느껴짐 매출이 상승하면 그만큼 유저가 많아지고, 그에 따라 요구사항도 많아지고, 배포도 많이 하니.. 더 나은 길을 찾아가게 될 수밖에. 언어를 잘 다루는 것도 ..

새로운 사람들과 합을 '또다시' 맞춰야 하는 것이 가장 스트레스로 다가왔다. 이미 기존 설계자/팀장 스타일에 다 맞춰서 일하고 있었는데... 또 새로운 분들의 스타일을 파악해서..적응하고.. 쉽지 않은 작업이다. 특히 나는 신입이고 잘 모르는 만큼 상대방의 말씀을 더더더욱 신경써서 들어야 하기 때문에 커뮤니케이션에 많은 기력이 들어간다. 하지만 뭐... 쉽지 않아도 해야지. 난 귀여우니까 어떻게든 되겠지 ㅇ_
배열 2개를 비교할 때 - Frequency Counter 배열 2개를 비교하는 작업에서 중첩 for문으로 비교하는 방법도 있지만, 성능면으로는 for문을 3번 반복하는 것이 훨씬 나음. O(n^2)보다 O(n)이 성능적으로 훨씬 낫기 때문. 특히 JS의 경우 배열/문자열을 비교할 때 객체로 만들어서 사용하면 매우 편리함. 두 개의 배여를 객체로 세분화해 각 배열을 비교할 수 있음. function same(arr1, arr2) { //배열 길이가 같지 않을 때 return false if (arr1.length !== arr2.length) { return false; } let frequencyCounter1 = {}; let frequencyCounter2 = {}; //arr 객체화. 원소(key..
const object ={ name : 'kelly', age : 10, }; 객체의 탐색시간은.. 짧다! 접근, 입력, 수정, 삭제에 걸리는 시간이 O(1)이다. 매우 빠르다는 뜻. 정렬이 돼있지 않다. 어디에 새로운 객체를 넣든지 상관 없다. 정렬 없이 key로만 접근하기 때문에 속도가 빠르다. ex) console.log(object.name); 단, 객체 내장 메소드 중 일부는 O(n)의 시간을 가진다(선형 시간). 프로퍼티 개수가 많아질수록 각 프로퍼티에 접근해 배열에 각각 추가해줘야 하는 시간이 늘어나기 때문이다. Object.keys(object) : 객체의 key를 배열로 반환하는 함수. [’name’, ‘age’] Object.values(object) : 객체의 value를 배열로 반..
Big O -빅오는 왜 필요할까? 알고리즘은 기본적으로 문제를 해결하기 위해 필요한 것. 코드를 일반화하고, 코드의 상대적 성과를 비교하는 방법이 빅오. 어떤 것이 좋은 코드일까? 빅오는 코드의 수준을 상/중/하 등으로 판단한다. 왜 코드가 최고여야만 하지? 그냥 작동만 하면 안 되나? → 아주 많은 양의 데이터를 다룰 때를 생각해 보자. 그때의 성능 차이는 수많은 차이를 많들어냄. 또한 빅오는 버그 수정하려고 할 때, 문제점뿐만 아니라 처리 속도를 늦추는 원인을 이해하는 데 도움을 준다. 즉, 비효율적인 부분을 찾는 데 도움이 된다. 어떤 함수가 제일 나은지 등 문제가 면접에 나오기도 하니, 빅오 표기법을 배워두자! 예시 1부터 n까지 전부 더하는 코드를 만들어야 할 때 1부터 n까지 반복문을 돌리는 ..
자바스크립트 배열 메소드 reduce parameter 누산값(prev) : initialValues가 있다면 초기값은 initialValues, 없으면 배열의 첫 번째 값. 초기값이 없을 경우 인덱스 1에서 루프를 싲가한다. 현재값(cur) : 루프를 돌면서 만나는 배열의 각 요소. 현재 요소를 칭함, 현재 인덱스 원본 배열 return 누적 계산의 결과값. 배열/숫자 등 다양한 타입 반환 가능. 초기값과 return 값의 타입을 맞춰야 한다. 예를 들어 초기값이 정수였으면 반환값도 정수. arr.reduce((prev, cur)=>{ return ; },[initialValues]) 초기값 주는 것을 권장. 빈 배열 && 초기값 없을 경우 TypeError가 발생한다. 특히 배열의 원소가 객체로 이뤄..
동료가 퇴사하면서 갑작스럽게 팀을 옮겼다. 여기는 앙가주망 ........... 새로운 환경에 내던져진 나는 고군분투하며 적응해야 하는 상황이다. 언어나 개발환경은 동일하지만, 컴포넌트, Redux 사용법이 조금씩 다른 데다 업무와 테이블까지 새로 익혀야 해서 앞으로 바빠질 거 같다. 우선 다음과 같은 프로세스로 업무를 파악하려고 한다. 1. 자주 사용되는 용어 익히기 2. 메인 테이블 컬럼 익히기 3. 할당 화면 기능 익히기 4. 테이블 관계 익히기 5. 할당 화면 프론트 코드 익히기 오늘 1, 2를 진행하다가 갑자기 뜬금없이 EAI 통신 문제를 던져주셔서(....) 해결하느라 진땀을 뺐는데, 내일 화면 기능 돌려보면서 SQL 파악해봐야겠다. 개발의 필수 조건 : 편안한 마음+동료 팀 변경에 나의 의사..
1. useEffect1) 언제 사용하는가특정 값이 변할 때마다 실행하고 싶은 이벤트가 있을 때. 2) 선언법useEffect(()=>{ //state가 업데이트될 때마다 실행하고 싶은 명령어 console.log(state); //return은 option. //컴포넌트가 화면에서 사라질(언마운트될) 때 혹은 업데이트되기 전 실행되는 함수를 return한다. //이를 cleanup 함수라고 한다. return ()=>{ console.log(state); } },[state]) 3) useEffect는 언제 실행되는가? useEffect 를 통해 렌더링 이후에 리액트가 실행해야 하는 함수를 지정할 수 있다. 이 함수를 eff..
1. const, let const와 let은 왜 나왔을까? 바로 이전에 쓰던 var의 한계를 보완하기 위해. 그렇다면 var는 어떤 한계가 있었을까? 1) 아래에서 선언한 것을 위에서 받아들여버림! :hoisting 때문! console.log(a); //undefined var a= 1; console.log(a); //1 코드를 실행하기 전, 선언한 변수/함수를 먼저 실행(인식)하는 것을 hoisting이라고 한다. (hoist : 끌어올리다) 이 hoisting 때문에 위와 같은 현상이 발생한다. 이는 JavaScript의 특징이다. java나 C는 첫 번째 console.log(a); 에서 에러가 났어야 하는데, 호이스팅하면서 변수 선언 및 초기화를 진행해 undefined가 된 것. 2) 전역..