목록분류 전체보기 (283)
코딩일상
현실의 나를 돌아보다 항해99를 마치고 3주뒤에 운이좋게 나를 좋게 봐주신곳에서 최종합격을 하였다. 그때는 나는 자신감을 넘어 약간 오만하기도 하였다. 즉, 나의 실력에 대한 객관적인 평가를 못하였다고 볼수있었다. 아 그래 1032시간동안 죽어라 고생한 보람이 그래도 나오구나, 그렇게 실력이 없는 사람이 아니구나라는 생각을 하였었다. 그리고 당연하게 더 좋은곳에 갈 수있으리라 생각을 하고 연락을주었던 회상에 연락을 드려 죄송하지만 못갈것같다고 이야기를 하였다. 하지만 이 후 끝도없는 탈락 차라리 면접에서 떨어졌다면 피드백이라도 받을수 있을테지만, 약 90여개의 서류탈락을하였다. 그래도 다행히 2번의 면접을 보았다. 그래서 면접이 너무나도 고마웠고 항상 면접이 끝나면 면접관분들께 "실례가 되지않으면 저가 ..
정렬알고리즘의 종류 정렬알고리즘의 종류로써는 아래와같은것들이 있다. 버블 정렬(Bubble Sort) 선택정렬(Selection Sort) 삽입정렬(Inser Sort) 등등..... 위 정렬 알고리즘이 가장 빠른 정렬 알고리즘은 아니다 설명하기 쉬운 알고림즘 종류들이며 그 이유는 사람들이 정렬을하는 방법과 유사하기 때문이다. 1)버블정렬(Bubble Sort) 배열의 처음부터 두개의 값을 비교를 한 후 첫 번째값이 더큰 경우 자리를 바꾼다(swap)을 한다. 예) 위 사진의 경우 2,5를 비교한후 첫번째가 더 작기에 가만히 있고, 그 다음 5,3을 비교한후 5가 더 크기에 자리를 바꾼다. 이런 방식을 처음 부터 끝까지 진행한다. 이렇게 한 싸이클을 진행할 경우 가장큰수가 맨 뒤에 가긴하지만 그외의 숫자..
들어가기전 알고리즘이란?? 우리가 작업을 수행하기 필요하기위한 절차와 스텝을 말한다. 알고리즘 또한 자료구조처럼 시간복잡도(Time Complexity)가 낮은 것이 좋다. 이진 탐색을 공부하기 앞서 먼저 선형 탐색에 대해 공부해보겠다. 선형 탐색(Linear Search) 알고리즘?? 검색(search)알고리즘 중 하나이다. 그림과 같이 찾는값이 7일 경우 처음부터 하나씩 데이터를 비교해서 원하는 값을 찾는 방식이다. 단점 데이터의 길이가 길어길수록 비례하여 검색속도가 느려진다. 이렇게 데이터가 늘어남에 따라 수행시간이 오래걸리는것을 선형시간 복잡도(Linear Time Complexity)라고 한다. 빅오 표기법 으로나타내자면 O(n)이라고 볼수 있다. 선형검색 알고리즘의 단점을 해결하기 위해 나온 ..
1)자료구조를 들어가기 앞서 시간복잡도에 대해 간단히 짚고 넘어가고자 한다. 시간복잡도(TimeComplexity) 처음 이용어를 접했을때는 뭐 멍멍이 소리이지라고 생각을 하였다. 시간복잡도는 데이터구조의 오퍼레이션 혹은 알고리즘이 얼마나 빠르고, 느린지를 측정하는 방법이다. 이것은 실제 시간을 측정하는것은 아니다. 얼마나 많은 단계(step)이 있는지에 따라 구분한다 좀 더 자세한것은 따로 포스팅을 하겠다. 2)메모리 관점에서의 배열?? 메모리의 종류는 2가지로 볼 수있다. -휘발성(volatile) 메모리 ex)내 컴퓨터의 램(RAM: Random Access Memmory) -비휘발성(non-volatile) 메모리 ex)내컴퓨터의 하드드라이브 여기서 잠깐?? 왜 램은 Random Access Me..
왜 우린 데이터 구조와 알고리즘을 배워야할까?? 개인적으로 이유를 모르는채 무언가를 그냥 배우는것 만큼 비효율적인것은 없다고 생각한다. 그냥 망망대해에서 노를 젓는것만큼 지치기도 쉽고, 어느쪽으로 저어야 하는지도 모른다고 생각하기 때문이다. 그렇기에 왜?? 다들 데이터 구조와 알고리즘을 중요하게 생각하는지에 대해 우선 알아보고자 하였다. 정말 간단히 결론만 요약하자면, 서비스를 만들어냈고, 배포또한 하여 구동하는데 문제는 없지만 🌠속도가 느린경우? 이를 해결하기위해서 필요한것들이 바로 동작원리를 이해하고 어떤식으로 컴퓨터 연산을 시킬것인지에대해 이해하고 적용하여 해결을 하려면 서비스에 맞는 알고리즘과 데이터구조를 적용해주어야한다는것이다. 결론 즉, 결국은 성능을 올려 응답속도를 빠르게 하여 고객에게 더 ..
리액트를 공부하는이유 내가 백엔드 포지션을 선택하면서 java와 node를 고민중에 node를 선택한 이유중 하나가 프론트를 좀더 쉽게 접근을 할 수있었기 때문이다. 이제 항해라는 프로그램도 끝난만큼 그 이유를 실천해보고자 리액트를 개인적으로 공부를 진행하고있다. 처음에는 역시 이것들이 뭐지 html과 css도 오랜만에 다시 보니 어색한 친구같았지만 그래도 한번 봤던 친구들이라고 그렇게 까지 어색하지는 않았다. 얼마 안 한 공부지만 느낀 점 프론트와 협업을 하면서 항상 useState, useEffect등의 용어를 많이들었는데, 이제서야 아 이런 말들이구나 이해를 하며 적용을 하고있다. 근데 아직까진 역시 어쩔수 없듯이 머리속으로 이해하는듯 했으나 실제로 써먹으려고하니 머리가 잘굴러가지 않았다. (아직 ..
JSX사용법 Babel을 맨날 말로만 들어보다가 하는역할의 일부를 알게되었다. React가 JSX방식을 이해할수있도록 React.creatElement로 바꿔주는 역할을 하고있었다. 확실히 createElemnet보다는 JSX방식이 간단했는데 이를 변환해주는 것도 있다니.. 여긴 뭐 천재들의 세상인거 같다. React의 역할은 state가 바뀌면 다시 리렌더링을 해준다는것 React. memo 한번 렌더링이되었는데 바뀌지도 않은것에대해 다시 렌더링하지않도록 React에게 알려주는기능 React Top-Level API – React A JavaScript library for building user interfaces reactjs.org Props Components와 Props – React A J..
코테를 하다가가 진법 변환이 있어서 JS에서는 어떻게 하면되는지 찾아보고 이를 정리한 글이다. 생각보다 간단하다. 45를 3진법으로 바꾸면 1200 125를 3진법으로 바꾸면 11122이다. //10진법 45를 3진법으로 변환 let num = 45 let change = num.toString(3) console.log(change);//1200 //3진법으로 1200을 10진법으로 변환 let num2 = 1200 let change2 = parseInt(num2, 3); console.log(change2);//45 Object.prototype.toString() - JavaScript | MDN The toString() 은 문자열을 반환하는 object의 대표적인 방법이다 developer.m..
오늘 내가 백엔드로써 node.js를 선택한 이유중 하나가 프론트또한 해보고 싶었기 때문이다. 프론트에서 React는 현업 대부분에서 사용하는 만큼 React가 뭐가 좋길래 다들 사용하나 싶어서 한번 공부를 해보았다. 다수가 사용하는데는 그만한 이유들이 있다고 생각하기 때문이다. 일단 가장 특이했던점은 내가아는 html과 js의 관계는 html의 요소와 내용을 우선 만들어 뼈대를 잡아 두고 그 뼈대를 유동적으로 움직일수있게 만들어주는게 JS의 역할로써 배웠는데 React는 이를 반대로 해주게 만들어주는 엔진인것이다. 즉 JS만으로 HTML을 다루겠다는것이다. 과연이게 얼마나 도움이 될지 모르겠지만 일단 조금은 흥미롭다. 여튼 조금씩조금씩 React도 하면서 나만의 전체 웹서비스를 만들어 내가 생각하는 문..
객체지향 프로그래밍을 공부를 하고 있는데 코드의 재활용성을 위해 상속을쓰게 되었는데 상속 만을 사용하다보면 수직적인 관계에서생기는 문제인 부모요소가 바뀌게 되면 자식요소들이 전부 바뀐다는 점이 문제이며 부모별로 가지고 있는 요소들을 가져다 쓰려고 하면 하나의 부모에게서만 상속을 받을수 있어 뭔가 게륵 같은 느낌이다 분명 나쁜것을 아니지만 지속 적으로 사용하다보면 나중에 유지 보수에서 머리가 아플것 같은 느낌.. 다 갈아 엎어야 할수도.. 그래서 이러한 문제를 해결해 줄수 있는 방법중 하나가 Composition을 이용하다는것이다. 내가 이해 한부분에 대해 설명을 하자면 그냥 각각의 클래스를 블럭처럼 가져와서 그 블럭으로 또다른 블럭을 만드는것이다. 근데 여기서 또 문제는 이렇게 만들어진 블럭은 결속력이 ..