본문 바로가기

전체 글162

React Hook 정리 (useState, useEffect) 훅(hook) 이란?리액트 16.8버전부터 새로 도입된 개념이다. hook은 class 를 사용하지 않고도 리액트의 기능을 사용할 수 있게 도와준다.기존 리액트의 컴포넌트는 클래스를 이용해 상태 관리를 했었지만 훅이 도입된 이후 보다 간편하게 상태 관리를 할 수 있게 되었다. 기존 리액트의 상태관리class Counter extends Component { // 상태 초기화 state = { count: 0, }; // 버튼 클릭 시 호출되는 핸들러 메서드 handleClick= () => { this.setState({ count: this.state.count + 1 }); // 상태 업데이트 }; render() { return ( 현재 카운트:.. 2025. 1. 21.
명령형 vs 선언형 프로그래밍의 패러다임 서론최근 리액트를 다시 공부하며 명령형과 선언형 프로그래밍에 대해서 공부했다. 이 두 가지 프로그래밍 패러다임은 코드를 작성하는 방식뿐만 아니라 문제를 해결하는 사고방식에서도 큰 차이를 보인다. 특히 리액트와 같은 라이브러리는 선언형 프로그래밍의 장점을 극대화하여 개발자의 생산성을 높이고, 코드의 가독성을 개선하는 데 초점을 맞춘다.명령형과 선언형 프로그래밍이 구체적으로 무엇을 의미하는지, 그리고 실제로 코드에 어떻게 적용되는지 궁금해졌다. 이번 글에서는 이 두 가지 프로그래밍 패러다임의 개념과 차이점, 그리고 각각의 장단점에 대해 알아보고자 한다.명령형 프로그래밍 vs 선언형 프로그래밍명령형 프로그래밍은 어떤 일을 하는 방법이고 선언형은 무엇을 하는가에 더 가깝다. Tyler McGinnis  위 문장.. 2025. 1. 15.
[Project] EUID 어플리케이션 프로젝트 서론바닐라 JS 를 다시 한 번 공부하며 프로젝트 기간을 가졌다. 처음 프로젝트를 시작하며 충분히 모든 기능을 완성할 수 있을거라 생각했지만 막상 끝내고 보니 아쉬운 점이 너무 많았다. 다음에는 이 경험을 바탕으로 조금 더 진지하게 프로젝트를 진행할 생각이다.  깃허브 바로가기링크 바로가기 좋았던 점물론 좋았던 점도 정말 많았다. 우선 문서화를 하는 방법에 대해 배웠고, 협업에 대한 어느 정도의 틀을 배운 것 같다. 그 동안은 지인들과 프로젝트를 하거나 개인 프로젝트를 하다보니 코딩 컨벤션이라던지, 진행상황을 굳이 알릴 필요 없이 작업을 했었다. 그런데 이번 프젝을 통해 협업에 대한 생각을 다시 한 번 해 볼 수 있는 기회가 되었던 것  같다.  또 팀원간의 호흡도 좋았다. 처음 조장이라는 역할을 가지고.. 2025. 1. 5.
2024 3회차 정보처리기사 실기 합격 후기 정보처리 기사 실기 합격 후기 입니다. 필기는 1회에 봤는데 실기는 미루고 미루다가 3회에 보게 되었네요. 🥲 아무튼 제가 했었던 공부법과 합격 후기에 대해 작성하려 합니다.   공부 방법 및 기간사실 필기때 공부한건 다 잊어버렸고 다시 처음부터 공부하자는 생각으로 시작했습니다. 총 공부했던 기간은 약 3주정도 잡았고 평일은 저녁 8시부터 10시까지 2시간씩, 주말에는 아침부터 저녁까지 8시간 정도 했습니다. 처음에는 필기랑 비슷하게 문제랑 답만 외우자는 마음으로 시작했다가 기출을 보고 바로 흥달쌤 인강 결제 했습니다. (흥달쌤 인강 진~~~짜 추천합니다 ㅎㅎ)  일단 이전 회차에서 나오긴 하지만 생각보다 비율이 크지 않고 애초에 코드 문제 같은 경우는 같은 문제가 나올 수가 없기 때문에 기초를 알고 .. 2024. 11. 16.
ES6 함수의 추가 기능 자바스크립트는 ES6 이전과 이후로 나뉜다. ES6이후 JS의 많은 부분이 바뀌었는데 함수 부분도 마찬가지이다. 먼저 이전의 함수는 생성자함수와 일반 함수의 구분이 없었다. 따라서 모든 함수는 일반함수로서 호출할 수 있으며 생성자 함수로서 new 키워드를 사용해 호출할 수 있었다. 이러한 유동성은 성능면에서도 큰 문제를 갖는다. 바로 콜백함수 또는 객체에 바인딩 된 함수 모두 cunstructor를 갖는다는 점이다. 이는 불필요한 프로토타입 객체를 생성하게 되며, 함수의 명확한 구분없이 사용되는 점은 코드의 가독성에도 큰 영향을 미친다.  따라서 ES6 이후 함수의 사용 목적에 따라 세가지 종류로 나누었다. 구분constructorprototypesuperarguments일반함수OOXO메서드XXOO화살표.. 2024. 11. 15.
[JavaScript] 음악 플레이리스트 프로그래스바 제작 (3) 버그를 해결했다. 원인을 찾아보니 크롬을 실행할 때 음원이 나오지 않아도 AudioContext 객체를 생성할 수 없다. 그래서 즉시 실행되던 함수를 묶어 playMusic 에서 실행하도록 바꾸었더니 해결됐다.  다음으로 프로그래스 바를 만들었다. 내용을 요약하자면 오디오 timeupdate 이벤트 리스너를 이용해 내부 함수가 계속해서 실행될 수 있게 했다. 그 뒤로는 현재길이 / 전체길이 를 백분위로 환산한 뒤 프로그래스 바의 width 길이에 대입했다. 재생 시간에 따른 프로그래스 바 크기 조절실행코드 audio.addEventListener("timeupdate", (e) => { // console.log(e); // 프로그래스 바 진행 리스너 const currentTime =.. 2024. 11. 14.
[JavaScript] 타입별 메서드와 제너레이트 타입별 메서드숫자형(number)e의 사용숫자를 입력할 때 100000000과 같은 큰 수를 입력해야 한다면 0을 치는게 헷갈릴 수 있다. 따라서 e를 쓰고 그 뒤에 0의 개수를 입력하면 된다.const billion = 1000000000;const _billion = 1e9Math 함수삼각함수Math.sin(radian) : 라디안의 사인값을 반환하는 함수이다.Math.cos(radian) : 라디안의 코사인값을 반환하는 함수이다.최대/최소Math.max( num ) : 인수들 중 가장 큰 값을 반환하는 함수이다.Math.min( num ) : 인수들 중 가장 작은값을 반환하는 함수이다.문자형 (string)문자는 Immutable (불변) 이다. 따라서 문자열을 수정하기 위해서는 문자를 슬라이싱해 .. 2024. 11. 13.
[JavaScript] 클로저 (closure)란 무엇일까 모듈화의 핵심은 "응집도를 높히고 결합도를 낮춘다" 이다. 이 내용을 잘 생각하며 카운트를 증가시키는 함수를 만들어 본다면 어떻게 코드를 작성할 수 있을까let cnt = 0;function count(){ return cnt ++}뭐 대충 이런식으로 작성할 수 있을 것이다. 이 때 cnt 변수가 함수 외부에 선언되었다. 이렇게되면 어떤 곳에서도 접근이 가능해 위험하고, count 함수를 다른곳으로 옮겨야 할때 항상 저 cnt 변수를 같이 가지고 가야하는 문제가 생긴다. 또 다른 경우에는 코드 200줄 아래에서 누군가가 cnt라는 변수를 사용한다면 에러가 날 수도 있다.  이 때 cnt라는 변수를 count 함수 내부에 선언할 수만 있다면 위 문제 모두 해결된다. 그렇지만 count 함수를 호출할 때마다.. 2024. 11. 12.
[JavaScript] 음악 플레이리스트 (2) 사운드 스펙트럼, 에러 극복기 분명히 어제까지 잘 되던 사이트가 오늘 아침부터 소리가 안나기 시작했다. 처음에는 단순 렉이겠거니 싶었는데 핸드폰으로 들어가도 안나오고 시간이 지나도 소리가 나지 않자 뭔가 문제가 생긴 것 같아 한참 문제를 찾았다.  그런데 코드도 짧아서 에러 나올 곳도 없고 콘솔창도 깨끗하고 심지어는 가끔씩 될 때도 있었다. 그래서 대체 왜 그런가 찾아봤더니 mp3 파일의 용량 문제였다... 파일을 압축해서 다시 호스팅 하니 잘 되는 것을 볼 수 있었다. 그런데 분명히 이 글 시작할 때까지만 해도 잘 되던게 지금 또 안되기 시작했다.  + 한참 또 찾아보았는데 도저히 왜 안되는지 모르겠다. 이제는 파일 크기도 1.6메가로 작고 콘솔에 내가 출력하는 audio.src를 찍어봤는데 해당 경로로 들어가면 노래가 나온다. 더.. 2024. 11. 11.