본문 바로가기
728x90
반응형

분류 전체보기132

JavaScript | FP && ES6+ | 맵 객체(Map Object) 굳이 객체, 맵 객체에 대해서 정리하는 글을 써야 되나... 싶었지만 매번 사용하면서 '메소드가 뭐였지?' 하면서 검색하는 것도 현타 오고, 무엇보다도 하나를 알더라도 확실하게 알기로 다짐했기 때문에 간단한거라도 디테일하게 짚고 넘어가자구!! Map Object 맵 객체(Map object)는 키-값(key-value)의 쌍을 보유하고 키의 원래 삽입 순서를 기억한다. 객체 내의 모든 값은 키 또는 값으로 사용할 수 있다. 또한 맵은 이터러블이기 때문에 for ... of 문을 이용하며 [key, value]의 값을 반환한다. 이때 객체처럼 for ... in을 사용하면 undefined가 출력된다. const map1 = new Map(); map1.set('a', 1); map1.set('b', 2).. 2022. 2. 15.
JavaScript | FP && ES6+ | go, pipe, curry 함수형 프로그래밍은 함수를 값으로 다룰 수 있어서 코드를 가독성 좋게 작성할 수 있다. 어떻게? 중복되어 사용하는 함수들을 추상화하면서 함축하여 표현력을 더 좋게 하면 된다. 그래서 뭘로? 강의에서 알려준 go, pipe, curry를 사용해서! console.log( reduce( add, map(p => p.price, filter(p => p.price { if (!iter) { iter = acc[Symbol.iterator](); acc = iter.next().v.. 2022. 1. 27.
JavaScript | FP && ES6+ | map, filter, reduce map 함수형 프로그래밍은 인자와 인자 값으로 소통한다. map은 결과를 리턴해서 리턴된 값을 개발자가 이후에 변화를 일으키는 데 사용하는 함수이며, 고차 함수(함수를 값으로 다루는 함수)이다. 아래와 같은 객체가 있다고 치자. const products = [ {name: '반팔티', price: 15000}, {name: '긴팔티', price: 20000}, {name: '핸드폰케이스', price: 15000}, {name: '후드티', price: 30000}, {name: '바지', price: 25000} ]; 위의 객체에서 name의 값들을 반환하고 싶다면 어떻게 해야 할까? let names = []; for (let a of products) { names.push(a.name); } .. 2022. 1. 25.
JavaScript | FP && ES6+ | 제너레이터와 이터레이터 제너레이터는 이터레이터이자 이터러블이고, 이터러블을 생성하는 함수이다. 이터레이터를 리턴하고, 함수 앞에 *을 붙인다. function* gen() { yield 1; yield 2; yield 3; return 100; // 리턴값은 마지막 done이 true가 될 때 리턴 } let iter = gen(); console.log(iter.next()); console.log(iter.next()); console.log(iter.next()); console.log(iter.next()); console.log(iter.next()); /* expected output { value: 1, done: false } { value: 2, done: false } { value: 3, done: fals.. 2022. 1. 21.
JavaScript | FP && ES6+ | ES6에서의 순회와 이터러블:이터레이터 프로토콜 자바스크립트는 ES6부터 리스트 순회 방법에 많은 발전이 있다고 한다. const list = [1, 2, 3]; const str = 'abc'; // ES5에서 순회 방식 for (var i=0; list.length; i++) { console.log(i); } for (var i=0; str.length; i++) { console.log(i); } // ES6에서 순회 방식 for (const a of list) { console.log(a); } for (const a of str) { console.log(a); } ㅇㅅㅇ... 나도 지금까지 ES5 때 for문을 자주 사용하고 있었다.. 물론 forEach, map 등의 함수들도 사용하긴 하지만... ES6 이후의 저 순회 방식을 사용한 기.. 2022. 1. 20.
JavaScript | FP && ES6+ | 함수형 자바스크립트 기본기 흠. 어쩌다 JS 언어를 계속 파게 되었을까. 일단 정글 나만의무기 프로젝트를 할 때 node.js를 선택한 것이 시작이었다. 그럼 왜 node.js를 선택했을까? 프로젝트를 진행하는 기간이 5주(실제 개발은 3주도 안 됨..)도 되지 않는 짧은 시간이다 보니 언어를 학습하는 것 까지 포함해서 빠른 개발과 테스트, 사용자 피드백 주기를 고려했을 때 그나마 익숙하고 커뮤니티가 큰 언어 JS기반인 node.js가 적합하다고 생각했다. (nodeJS가 쉽다는 것이 아니라 팀원 모두 자바스크립트를 사용한 경험이 있고, socket.io 등의 실용적인 라이브러리를 빨리 배우고 사용할 수 있기 때문) 여하튼! 프로젝트 때 express 프레임워크로 서버를 구축하고 여러 api를 만들어 보면서 어느 정도는 자바스크립.. 2022. 1. 19.
나만의무기Rewind | NGINX | SSL 설정을 위해서 nginx를 사용했다고? 그게 다야? 슈퍼슬랩은 웹을 기반으로 한 게임 사이트다. 즉 HTTP 프로토콜을 기반으로 작동하는 웹사이트다. 우리가 개발하던 슈퍼슬랩 프로젝트는 지인들과 같은 공간에 있을 때 진행하는 게임이기 때문에 로그인 기능의 필요성이 낮았고, 그렇기 때문에 중요하다고 할만한 데이터가 없었다. 이런 이유로 사실 http, https 구별은 우리 프로젝트에 비중이 크지 않은 이슈였다. 하지만 웹 개발을 하는데, SSL 설정을 안 한다? 못 참지 이건! 무엇보다 간.지.가 안 나잖아 http는.. 헛소리고! 현재 프로젝트에서 당장은 SSL의 필요성이 낮다는 결론을 내리게 되었지만, 결론을 도출하는 과정에서 http와 https의 차이가 뭔지, SSL은 무엇인지 공부하게 되었다. SSL? 더보기 SSL(Secure Sockets L.. 2022. 1. 7.
나만의무기Rewind | Intro | 개발자 홀로서기 취업 도전은 광탈, 차근차근 다시 리와인드 하자구 정글 수료 이후 협력사 취업 결과: 광.탈. 사실 큰 기대는 안 했기 때문에 떨어지더라도 의연하게 받아들일 준비를 했다. 하지만 예상했다고 하더라도 막상 그 결과를 직접 마주치니 생각보다 아프다. 담담할 줄 알았는데 감정의 파장이 꽤 크게 출렁인다. 하지만 무너질 만큼은 아니다. 충분히 버틸만 하고, 오히려 좋은 자극제가 되는 것 같다. 쉬우면 재미없지.. 아닌가 꿀잼인가? 여하튼! 일단 내가 왜 취업에 실패했는지 분석해보려고 한다. '나'를 객관적으로 파악하지 못 했다 취업을 위한 준비(코테, 면접 등)가 미숙했다 실력 자체가 부족하다 흠. 일단 크게 세 가지 이유가 나오는 것 같다. 하나씩 더 깊게 생각해보자. 1. '나를 객관적으로 파악하지 못 했다 5개월 동안 정글에서 공부하면서 정말 많은 지식들.. 2022. 1. 5.
정글에서 살아남기 | WEEK19 | 정글 안녕!!! 그동안 감사했습니다! 개발자 홀로서야 할 때 5개월이라는 길지도 짧지도 않은 대전에서의 정글 생활이 끝났다. 소감을 먼저 간략하게 얘기하자면, 후련하기보다는 걱정이 조금 더 앞선다. 스스로도 부족한 부분과 채워야 할 점들이 많다고 느끼고 있기 때문이다. 그래도 소프트웨어 엔지니어가 되기로 굳게 다짐한 이상 취업까지 쉽지 않을지라도 끝까지 할 수 있는 모든 것들을 해볼 것이고, 할 것이다. 만약 내 주변에 나처럼 비전공자이고 코딩을 1도 모르는 사람이 있다면 고민하지도 않고 '정글'을 추천할 것이다. 어떻게 보면 5개월이 개발자로 성장하기에 길지 않은 기간일지라도, 적어도 개발자가 되기 위한 마인드와 학습 태도는 확실하게 배울 수 있다는 점이 차별화된다고 생각하기 때문이다. 또한 대전 카이스트 문지캠퍼스에서 합숙하고, 자는 시간을 쪼개가면서 코딩에만.. 2021. 12. 25.
728x90
반응형