<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>adhd_lab.log</title>
        <link>https://velog.io/</link>
        <description>마흔 살에 코딩공부</description>
        <lastBuildDate>Fri, 02 Jun 2023 06:25:25 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>adhd_lab.log</title>
            <url>https://velog.velcdn.com/images/adhd_lab/profile/efe4ea7c-1c85-440a-bdd4-e3e0724747b3/social_profile.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. adhd_lab.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/adhd_lab" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[TIL react 회원가입 수정]]></title>
            <link>https://velog.io/@adhd_lab/TIL-react-%ED%9A%8C%EC%9B%90%EA%B0%80%EC%9E%85-%EC%88%98%EC%A0%95</link>
            <guid>https://velog.io/@adhd_lab/TIL-react-%ED%9A%8C%EC%9B%90%EA%B0%80%EC%9E%85-%EC%88%98%EC%A0%95</guid>
            <pubDate>Fri, 02 Jun 2023 06:25:25 GMT</pubDate>
            <description><![CDATA[<h4 id="네이버-회원가입">네이버 회원가입</h4>
<p>커서 가져다놓은 input테두리가 두껍고 초록색
아이디 치는 동안 계속 오류가 뜨는 게 아니라, 쓰고 다른 칸 옮기면 테두리 빨간색, 글자 빨간색+에러 메세지
에러메세지는 조건에 맞춰 썼을 때 없어지는 게 아니라 다른 칸으로 넘어갔을 때 없어짐
다 안채우고 인증요청 버튼 누르면 문제있는 칸은 다 빨간색 테두리, 빨간색 글자, 에러메세지 뜸
<img src="https://velog.velcdn.com/images/adhd_lab/post/aab591a9-1b00-4071-9443-a3be974ecb67/image.png" alt="">
<img src="https://velog.velcdn.com/images/adhd_lab/post/c4c8dabb-bb3b-4aab-bfaa-30023cbb6831/image.png" alt=""></p>
<h4 id="우리-회원가입">우리 회원가입</h4>
<p>🟪서버에 회원가입 성공시 메세지 물어보기
현재는 이메일 한글자 칠 때부터 &#39;유효한 이메일 주소를 입력해주세요&#39;에러메세지가 나옴.@와 . 나오면 에러메시지 사라짐.
🟩이메일 유효성검사(조건+중복체크), 비밀번호(조건,일치),닉네임 중복체크, 약관동의-이 6가지가 충족된 다음에야 회원가입 활성화되면 좋겠다.
🟩암호일치는 재입력 수정 때뿐 아니라 암호 변경할 때도 이루어져야 함-&gt;
암호 일치 여부 검사는 암호 재입력 필드를 수정할 때뿐만 아니라 암호 필드를 수정할 때도 이루어져야 합니다. 따라서 useEffect를 사용하여 암호 필드가 수정될 때마다 일치 여부를 확인하도록 할 수 있습니다. 아래는 수정된 passwordChangeHandler와 useEffect입니다
🟩중복체크한 다음에 바꾸고 회원가입 누르면 안되도록 해야 함.
🟩바라기는 이메일 조건 맞은 다음에 중복체크 버튼이 활성화되면 좋겠다.
✅약관 누를 때 돌아오면 input비워있는 부분 대안 찾기-팝업창?-모달창, overlay blur처리 챗gpt에게 부탁
🟩회원가입 성공 시 로그인 페이지로 가기-긁어왔는데 잘 적용이 되는지 확인 필요.-성공할 경우 조건 붙여줘야 함 (지금은 서버 꺼있음)</p>
<pre><code>setPopup({
            open: true,
            title: &quot;Confirm&quot;,
            message: &quot;회원 가입 성공!&quot;, 
            callback: function(){
                navigate(&quot;/signin&quot;);
            }</code></pre><p>🟩회원가입 실패 시 어떻게 표시</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL react 회원가입,로그인 서버연결]]></title>
            <link>https://velog.io/@adhd_lab/TIL-react-%ED%9A%8C%EC%9B%90%EA%B0%80%EC%9E%85%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EC%84%9C%EB%B2%84%EC%97%B0%EA%B2%B0</link>
            <guid>https://velog.io/@adhd_lab/TIL-react-%ED%9A%8C%EC%9B%90%EA%B0%80%EC%9E%85%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EC%84%9C%EB%B2%84%EC%97%B0%EA%B2%B0</guid>
            <pubDate>Wed, 31 May 2023 02:39:13 GMT</pubDate>
            <description><![CDATA[<p>우리 팀 목표는 최고의 프로젝트상을 받는 것이다! 내게 맡겨진 기능을 일단 잘 해내보자. 이 작은 일을 일단 잘 끝내고 나서 webRTC,SSE등 전혀 모르는 기능들을 익혀서 프로젝트를 잘 완성하고 싶다. </p>
<h3 id="api명세-문의할-것">API명세 문의할 것</h3>
<p>✅회원가입 request에 email,nickname,password,isAgreed만 넘기면 안돼나?-emailAuth,role빼기?isAgreed 추가-&gt;email,nickname,password,emailAuth,role모두 보내기. 두개는 비워도 됨.
🟩회원가입 response에 이메일만 중복검사 안했을 때, 닉네임만 중복검사 안 했을 때, 둘다 했을 때 필요함. 이메일 인증은 빼기
🟩로그인 response 없는 이메일입니다. </p>
<h3 id="회원가입기능-수정할-것">&#39;회원가입&#39;기능 수정할 것</h3>
<p>✅회원가입에서 한번 에러메세지뜨면 썼던 거 지우거나 조건 충족해도 계속 있는 것-패스워드 부분 useEffect로 해결. 다른 방법도 있었던 것 같은데.
✅이메일 중복체크 누르기도 전에 @와 .만 있으면 계속 서버로 이메일 주소를 보내는 것. 한 번만 가야 함.-버튼 누를 때만 가게(어떻게 했더라?
✅서버에서 &#39;중복 확인 성공&#39;이라고 왔는데, &#39;이미 가입된 이메일입니다&#39;라고 오류 메세지가 나옴.코드 수정하고 나서는 이메일 중복 체크에 실패했습니다. 라고 나옴.-띄어쓰기가 문제였음
✅아직 이메일 주소 치고 있는 중인데 이미 가입되었다고 함.-&gt;버튼 눌렀을 때 서버로 가게 함. 
✅약관 동의를 위한checkbox input과 BottomButton이 줄이 바뀌어서 옆으로 붙게 하고 싶음-&gt;감싸는 div에다 스타일을 추가함: </p>
<pre><code>const Wrapper = styled.div`
  display: flex;
  align-items: center;
`;</code></pre><p>🟩이메일 유효성검사(조건+중복체크), 비밀번호(조건,일치),닉네임 중복체크, 약관동의-이 6가지가 충족된 다음에야 회원가입 활성화되면 좋겠다. 
🟩암호일치는 재입력 수정 때뿐 아니라 암호 변경할 때도 이루어져야 함-&gt;
암호 일치 여부 검사는 암호 재입력 필드를 수정할 때뿐만 아니라 암호 필드를 수정할 때도 이루어져야 합니다. 따라서 useEffect를 사용하여 암호 필드가 수정될 때마다 일치 여부를 확인하도록 할 수 있습니다. 아래는 수정된 passwordChangeHandler와 useEffect입니다
🟩중복체크한 다음에 바꾸고 회원가입 누르면 안되도록 해야 함.
🟩바라기는 이메일 조건 맞은 다음에 중복체크 버튼이 활성화되면 좋겠다.
🟩약관 누를 때 돌아오면 input비워있는 부분 대안 찾기-팝업창? 
🟩회원가입 성공 시 로그인 페이지로 가기
🟩회원가입 실패 시 어떻게 표시
✅버튼 누르면 sendData가 초기화된 상태로 비어서 서버로 넘어감-&gt;                    e.preventDefault() //요청전 리로드 방지로 해결
✅중복확인성공 메세지 받았는데 &#39;사용할 수 있는 이메일입니다&#39;가 안 뜸-&gt;&quot; 중복 확인 성공&quot; 여기 띄어쓰기 들어가서 지나갔던 것</p>
<pre><code>코드를 입력하    //이메일 중복검사
    const checkEmailExistence=(email)=&gt;{
        fetch(`http://43.200.75.146:8080/members/signup/checkEmail?email=${email}`)
        .then(response=&gt;response.json())
        .then(data=&gt;{
            if(data.message ===&quot; 중복 확인 성공&quot;){
                alert(&#39;사용 가능한 이메일입니다.&#39;)
                setEmailErrorMessage(&#39;사용할 수 있는 이메일입니다.&#39;);
            }else if(data.message === &quot;중복된 이메일 입니다.&quot;){
                setEmailErrorMessage(&#39;이미 사용 중인 이메일 입니다.&#39;)
            }else{
                setEmailErrorMessage(&#39;이메일 중복 체크에 실패했습니다.);
            }
        })
        .catch(error =&gt; {
            // 오류 처리
            setEmailErrorMessage(&#39;이메일 중복 체크에 실패했습니다.&#39;);
            console.error(&#39;이메일 중복 체크 요청에 실패했습니다:&#39;, error);
        });
    };
세요</code></pre><h3 id="로그인기능-수정할-것">&#39;로그인&#39;기능 수정할 것</h3>
<p>🟩로그인 버튼 눌렀을 때 이메일 오류 나옴.-&gt;이메일 쓰고 비밀번호로 넘어갔을 때 바로 나오면 좋을듯
🟩비밀번호 에러메세지가 수정만 하면 여전히 에러상태인데 에러멘트가 없어지고 로그인 버튼 눌러야 뜸-&gt;에러상태일 때까지는 표시되면 좋을듯</p>
<h3 id="배우려고-하는-데-아직인-것">배우려고 하는 데 아직인 것</h3>
<p>🟩커스텀훅
🟩리덕스툴킷
🟩리액트쿼리,뮤테이션
🟩jwt토큰
🟩쿠키</p>
<h3 id="styled-components">styled-components</h3>
<p>🟩왼쪽에 붙어있는 label,input 가운데로 보내려면 감싸는 Form에다가 스타일.저 두 개의 조합이 어쩌라는 뜻이지?</p>
<pre><code>   dlsplay: flex;
    flex-direction: column;
</code></pre><p>🟩로그인에서 쓴 styled components를 회원가입에서 쓰려면 붙여넣기말고는 방법이 없나?</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[WIL 위치기반 온라인 코딩 사이트 만드는 중 ]]></title>
            <link>https://velog.io/@adhd_lab/WIL-%EC%9C%84%EC%B9%98%EA%B8%B0%EB%B0%98-%EC%98%A8%EB%9D%BC%EC%9D%B8-%EC%BD%94%EB%94%A9-%EC%82%AC%EC%9D%B4%ED%8A%B8-%EB%A7%8C%EB%93%9C%EB%8A%94-%EC%A4%91</link>
            <guid>https://velog.io/@adhd_lab/WIL-%EC%9C%84%EC%B9%98%EA%B8%B0%EB%B0%98-%EC%98%A8%EB%9D%BC%EC%9D%B8-%EC%BD%94%EB%94%A9-%EC%82%AC%EC%9D%B4%ED%8A%B8-%EB%A7%8C%EB%93%9C%EB%8A%94-%EC%A4%91</guid>
            <pubDate>Mon, 29 May 2023 09:01:42 GMT</pubDate>
            <description><![CDATA[<h3 id="이번-협업을-하며-느낀-점">이번 협업을 하며 느낀 점</h3>
<p>좋은 팀원들 만나서 감사하고 미안하다. 나의 느림을 비난하지 않고, 내 몫을 할 수 있도록 언제든 도움을 주고, 작은 성취에 고마워해줘서 고맙다. 항상 미안한 것은 이 어려운 프로젝트에서 겨우 회원가입, 로그인만 가지고 씨름하고 있다는 사실이다. 나도 얼른 이 회원가입, 로그인이 잘 작동하게 완성해놓고, 위치기반이며, 채팅방 생성이며 어려운 과제들을 돕고 싶다.  </p>
<h3 id="지금-씨름-중인-것">지금 씨름 중인 것</h3>
<p>🟩회원가입에서 한번 에러메세지뜨면 계속 있는 것
이메일 중복체크 누르기도 전에 @와 .만 있으면 계속 서버로 이메일 주소를 보내는 것
서버에서 보내주는 메세지를 처리하는 방식</p>
<h3 id="지난-주에-배운-것">지난 주에 배운 것</h3>
<p>✅input에 &#39;required&#39;속성 추가하면 반드시 입력해야 한다는 의미
✅form 태그에서 마지막에 입력하는 버튼에는 type=submit으로 설정하여 폼 제출 이벤트 처리할 수 있게 함.
✅폼 유효성 검사: 
  const [emailError, setEmailError]=useState(&#39;&#39;);에러 메세지 저장하고 화면에 표시하기 위해서.
  if(!email)은 이메일이 비어있으면이란 뜻
  에러메세지</p>
<pre><code> {error &amp;&amp; &lt;ErrorMessage&gt;{error}&lt;/ErrorMessage&gt;}
</code></pre><h3 id="이미-알고-있던-것">이미 알고 있던 것</h3>
<p>✅styled-components사용: yarn add styled-components명령어 입력하여 패키지 설치하고 import styled from &#39;styled-components&#39;;해줌</p>
<h3 id="배우려고-하는-데-아직인-것">배우려고 하는 데 아직인 것</h3>
<p>🟩커스텀훅
🟩리덕스툴킷
🟩리액트쿼리,뮤테이션
🟩jwt토큰
🟩쿠키</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL 애플코딩 React 동적인 UI만드는 법(모달창 만들기)]]></title>
            <link>https://velog.io/@adhd_lab/TIL-%EC%95%A0%ED%94%8C%EC%BD%94%EB%94%A9-React-%EB%8F%99%EC%A0%81%EC%9D%B8-UI%EB%A7%8C%EB%93%9C%EB%8A%94-%EB%B2%95%EB%AA%A8%EB%8B%AC%EC%B0%BD-%EB%A7%8C%EB%93%A4%EA%B8%B0</link>
            <guid>https://velog.io/@adhd_lab/TIL-%EC%95%A0%ED%94%8C%EC%BD%94%EB%94%A9-React-%EB%8F%99%EC%A0%81%EC%9D%B8-UI%EB%A7%8C%EB%93%9C%EB%8A%94-%EB%B2%95%EB%AA%A8%EB%8B%AC%EC%B0%BD-%EB%A7%8C%EB%93%A4%EA%B8%B0</guid>
            <pubDate>Fri, 28 Apr 2023 02:00:46 GMT</pubDate>
            <description><![CDATA[<p>리액트 환경에서 동적인 UI만드는 법(모달창 만들기)</p>
<pre><code>import

function App(){
    let [   ,    ]=useState({&quot;    &quot;, &quot;   &quot;,&quot;    &quot;&quot;})
    let [modal,setModal] =useState(false)  &lt;-(2) UI의 현재 상태를 state로 저장(글자,숫자 다 가능)

    return
      &lt;div&gt;
          &lt;div&gt;
        &lt;/div&gt;
        &lt;div&gt; &lt;-(4)제목 클릭시 모달창을 띄우기-클릭시 state만 조절하면 됨.state변경함수(setModal)사용하기
            &lt;h4 onClick={()=&gt;{setModal(true)}&gt;{글제목[2]}&gt;&lt;/h4&gt;  
        &lt;/div&gt;
        {          
         modal==true ? &lt;Modal/&gt; : null
         }  &lt;-(3)state에 따라 UI가 어떻게 보일지 작성, if절은 안됨.
      &lt;/div&gt;

}

function Modal(){ &lt;-여기다 모달창 함수 써줌. 위에 function아래다 새로 써줌. (1)html css로 미리 디자인 완성
 return(
     &lt;div className=&quot;modal&quot;&gt;
     &lt;h4&gt;제목&lt;/h4&gt;
     &lt;p&gt;날짜&lt;/p&gt;

</code></pre><p>  제목 클릭시 모달창 열리게 하려면</p>
<pre><code>&lt;h4 onClick={()=&gt;{setModal(true)}&gt;{글제목[2]}&gt;&lt;/h4&gt;</code></pre><p>  제목 클릭시 열리고, 다시 클릭하면 닫히게 하려면</p>
<pre><code>&lt;h4 onClick={()=&gt;{setModal(!modal)}&gt;{글제목[2]}&gt;&lt;/h4&gt;</code></pre><p> map함수(유용)
 모든 array 뒤에 붙일 수 있음.
 [1,2,3].map(function(){</p>
<p>})</p>
<ol>
<li>array 자료 갯수만큼 함수안의 코드 실행해줌</li>
<li>함수의 파라미터는 array안에 있던 자료임</li>
<li>return에 뭐 적으면 array로 담아줌</li>
<li>파라미터 두개 가능(i넣으면 0부터 하나씩 커짐)
같은 html반복생성하는 법
보통은 for문쓰면 됨. 
중괄호 안에서는 for문 안됨.
map()으로 같은 html반복생성<pre><code class="language-&lt;-array안에">글제목.map(function(a){
return(
 &lt;div classNami=&quot;list&quot;&gt;
  &lt;h4&gt;{ a }&lt;/h4&gt;
  &lt;p&gt;
 &lt;div&gt;
</code></pre>
</li>
</ol>
<pre><code></code></pre><p>글제목.map(function(a,i){
return(
    <div classNami="list">
     <h4>{ 글제목[i] }</h4>
     <p>
    <div>
```</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL ]]></title>
            <link>https://velog.io/@adhd_lab/TIL</link>
            <guid>https://velog.io/@adhd_lab/TIL</guid>
            <pubDate>Tue, 25 Apr 2023 00:57:34 GMT</pubDate>
            <description><![CDATA[<h4 id="20230424월">2023.04.24.월</h4>
<h4 id="🎈외부-강의-듣기-시작">🎈외부 강의 듣기 시작</h4>
<p>다른 사람들은 리액트 숙련강의도 이해하고 추가강의도 듣는 경우가 많았다. 나는 기본강의부터 이해를 잘 못해서 계속 스트레스를 받고 있다. 자꾸만 잠이 든다. 자바스크립트나 웹종강의 모두 2주차까지 이해하고 3주차부터는 계속 꾸벅꾸먹 졸고, 집중도 못하고 이해도 못하는 상태이다. 어제는 졸더라도 보려고 계속 진도를 나갔는데, 결국 여러강의를 들었는데도 졸면서 봐서 머리에 하나도 안 남아있었다. 진도를 따라가지 못해서 계속 고역이었는데, 그냥 내 속도와 수준에 맞춰야 겠다. 내가 집중이 되는 수준과 스타일의 강의를 들으며 성장하는 방법을 써야 겠다. 
-애플코딩 리액트 강의 : 할인코드 적용받아 7만원대 결재
-노마드코더 리액트 강의 듣기 시작</p>
<h4 id="🎈react-lv2-과제">🎈React Lv.2 과제</h4>
<p>사실 2명씩 짝지어서 React level2과제를 해야 하고 그러려면 리덕스를 사용하고 Ducks패턴으로 구현해야 하고.. 뭐 그런 조건을 갖추어야 하는데, 아직 무슨 말인지도 이해가 안가서...그냥 짝에게 양해를 구하고 일방적으로 배우는 방식으로 가야 할 것 같다. 짝이랑 같이 과제를 해야 한다는 것때문에 지난주부터 엄청 괴로웠다. 강의는 소화를 못하고 과제는 해야하고, 민폐가 될까 너무 미안하고... </p>
<h4 id="❗해결됨">❗해결됨</h4>
<p>✅빈폴더 만들어 둔 게 있어서 
터미널에 yarn create react-app 새폴더명(나중폴더)쳤더니
<img src="https://velog.velcdn.com/images/adhd_lab/post/4bd98617-5947-49e6-9059-67f345a0c68a/image.png" alt="">
나는 한참 다운로드되고 &#39;cd 나중폴더명, yarn start 화면에 나옴&#39;요렇게 될 걸로 생각했는데 에러뜸. 구글링에서 이렇다고 함. 
<img src="https://velog.velcdn.com/images/adhd_lab/post/9fb26be6-b06c-4946-ab92-7b356f2bf66f/image.png" alt="">
알고보니 yarn create..를 yarn creaate라고 씀.ㅎㅎ 잘 쓰니까 다운로드됨</p>
<p>✅왜 계속 에러나나 했는데 요렇게 &#39;set좋아요&#39;를 먼저 썼어야 함.
<img src="https://velog.velcdn.com/images/adhd_lab/post/10c22af9-97a4-400b-8990-e6ad0684d698/image.png" alt="">
<img src="https://velog.velcdn.com/images/adhd_lab/post/c2f35002-0478-40ec-b168-6ca5a721b8fc/image.png" alt=""></p>
<h4 id="❓해결-필요">❓해결 필요</h4>
<p>🟩애플코딩샘이 요렇게 하면 &#39;글수정&#39;버튼 누르면 여자코트로 바뀐댔는데 안됨-&gt; ram에 가서 [&#39;여자코트&#39;,..]로 내용 바꿈.하지만 array를 수정했지 변수에 있던 화살표는 수정안됨. 얘는 신규랑 기존state가 같다고 생각해서 state변경 안해줌. 
<img src="https://velog.velcdn.com/images/adhd_lab/post/c644b6e0-fbab-45da-826c-cde33dcdaeec/image.png" alt=""></p>
<p>🟩(강의 내용 적었는데 아직 이해 안간 부분)state직접 수정하는 게 아니라 카피본 만들어서 인덱스 맞춰서 수정해야 함. 이때 [...]을 써줘야 동작 함. why?복사를 했기 때문에 copy는 기본state랑 다른데도 수정 안됨. 글제목이 변수에 저장되어있던 건 화살표밖에 없음,copy에 let글제목에 있던 화살표가 복사됨. 변수1,변수2화살표가 같으면 변수1==변수2비교해도 true나옴. 여자코트로 바꾼 후에 console.lg(copy==글제목)찍으면 true나옴. 
array.object는 reference data type이라서 그럼.
[...글제목]:...는 괄호 벗겨주세요라는 문법-&gt;[]그 다음에 다시 괄호 씌어주세요-&gt;완전히 독립적인 사본(이러면 화살표도 달라짐), 이제는 새로운 state라고 생각해서 수정 잘 됨.
<img src="https://velog.velcdn.com/images/adhd_lab/post/8e29c023-b041-4033-befc-c2bbbc877ce2/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/adhd_lab/post/0530b64c-722f-4fd9-99a9-4fae6d3e5ee1/image.png" alt="">
*state변경함수 특징
기존state==신규state의 경우 변경 안해줌
*array/object특징
arry/object 담은 변수엔 화살표만 저장됨
let arr =[1,2,3]; [1,2,3]을 arr에 넣어주세요가 아님
[1,2,3]은 RAM의 미지의 공간에 있는 것이고 화살표만
*state가 array/object면 shallow copy(deep copy)를 만들어서 수정해야 함</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[WIL 리액트]]></title>
            <link>https://velog.io/@adhd_lab/WIL-%EB%A6%AC%EC%95%A1%ED%8A%B8</link>
            <guid>https://velog.io/@adhd_lab/WIL-%EB%A6%AC%EC%95%A1%ED%8A%B8</guid>
            <pubDate>Mon, 24 Apr 2023 04:40:21 GMT</pubDate>
            <description><![CDATA[<p>2023.04.23.일</p>
<h4 id="state">State</h4>
<p>State란 컴포넌트 내부에서 바뀔 수 있는 값
UI(엘리먼트)로의 반영을 위해서</p>
<h4 id="props">Props</h4>
<p>컴포넌트 끼리의 정보교환 방식
부모 컴포넌트가 자식 컴포넌트에게 물려준 데이터
컴포넌트 간의 정보 교류 방법
props는 반드시 위에서 아래 방향으로 흐름(단방향)
props는 반드시 읽기 전용으로 취급하며, 변경하지 않음</p>
<h4 id="리렌더링-발생-조건">리렌더링 발생 조건</h4>
<p>페이지가 갱신되는 상황
리렌더링이 많으면 계속 깜빡거려서 불편-SPA 깜빡임 없음</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL 리액트 숙련주차]]></title>
            <link>https://velog.io/@adhd_lab/TIL-%EB%A6%AC%EC%95%A1%ED%8A%B8-%EC%88%99%EB%A0%A8%EC%A3%BC%EC%B0%A8</link>
            <guid>https://velog.io/@adhd_lab/TIL-%EB%A6%AC%EC%95%A1%ED%8A%B8-%EC%88%99%EB%A0%A8%EC%A3%BC%EC%B0%A8</guid>
            <pubDate>Sun, 23 Apr 2023 21:03:10 GMT</pubDate>
            <description><![CDATA[<p>2023.04.21.금</p>
<p>❗모르다가 해결된 것</p>
<h4 id="✅yarnstart하고-나서-yarn-add-styled-components를-입력하고-싶은데-이-화면-나오면-타이핑-안됨-yarn-build쳐야-하나">✅yarnstart하고 나서 yarn add styled-components를 입력하고 싶은데 이 화면 나오면 타이핑 안됨. yarn build쳐야 하나?<img src="https://velog.velcdn.com/images/adhd_lab/post/b1805324-7429-4127-9876-176e444f1cf2/image.png" alt=""></h4>
<p>-&gt;질문방에서 두분이 알려주심
yarn start를 하고나서 추가는 어렵고 컨트롤+c로 리엑트 실행시킨걸 꺼준다음에 yarn add styled-components 설치 후 다시 yarn start-&gt;크롬에 새 창이 열림
터미널 하나 더 띄워서 설치</p>
<p>✅실수로 VS꺼서 다시 켜서 yarn start누르니 에러
<img src="https://velog.velcdn.com/images/adhd_lab/post/578ce1d0-38ab-499a-b2a2-4f3c509f87c9/image.png" alt="">
구글링: create-react-app을 하지 않은 상태에서 yarn start입력했거나 앱을 설치한 위치에서 yarn start해주지 않으면 발생하는 오류
내 육안으로는 내가 작업하던 파일이 잘 켜져 있는 것 같았는데 터미널 포니 상위폴더임
cd 프로젝트명 눌러서 위치바꾼뒤 yarn start누르니 성공</p>
<h4 id="❓궁금한-거">❓궁금한 거</h4>
<p>🟩리액트 하다가 터미널에서 컨트롤+c 누르면 뭐가 꺼지는 거지?
🟩튜터님은 import sty...요만큼만 쳐도 아래에 뭐가 뜨는데 나는 안뜬다. 자동으로 추천되어 styled form &quot;styled-components&quot;가 나옴. 뭔가 설치가 덜 된 느낌
🟩스타일이 된 컴포넌트를 만들 수 있는데 const StBox=sty... css입력해주면 됨(: ;). 전에는 JavaScript 방식(:&quot;&quot;)이라 키밸류 조합. css는 문자열이 들어가야 해서 백틱으로 감싸줌. 이해가 가실껍니다.-&gt;나는 이해가 안 됨.실제 html태그처럼 쓰임</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[TIL Todolist 만들고 배포하기 react test]]></title>
            <link>https://velog.io/@adhd_lab/TIL-Todolist-%EB%A7%8C%EB%93%A4%EA%B3%A0-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0-react-test</link>
            <guid>https://velog.io/@adhd_lab/TIL-Todolist-%EB%A7%8C%EB%93%A4%EA%B3%A0-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0-react-test</guid>
            <pubDate>Thu, 20 Apr 2023 03:14:58 GMT</pubDate>
            <description><![CDATA[<h4 id="20230420목">2023.04.20.목</h4>
<h4 id="🥇항해99-주특기-시험">🥇항해99 주특기 시험</h4>
<p>지난 번 과제는 추가, 삭제, 취소 등 기능이 복잡했는데 이번에는 todo list에 추가만 하는 것이라 내가 도전해볼 만 했다. 수업에서 배웠던 스타일 활용+애플코딩 기초 강의+지난번 과제에 썼던 코드+챗gpt의 도움으로 완성해서 냈다. 지난번 과제 때도 이해가 부족한 채로 다른 분들 코드와 챗gpt도움으로 했던지라, 이번 과제도 내가 100프로 이해한 건 아니긴 한데, 어쨌거나 제출했다는 게 만족스럽다. 깃허브에 올리고 vercel통해 배포한 걸보면 느리지만 쬐끔씩 성장하는 것 같긴 하다. </p>
<h4 id="❗이제-아는-것">❗이제 아는 것</h4>
<p>✅▪App.js의 요소에 className붙여주고 App.css에 스타일 지정해 주는 것</p>
<h4 id="❓❗알긴-아는데-확실히는-모르는-것">❓❗알긴 아는데 확실히는 모르는 것</h4>
<p>🟩리액트 화면을 웹에 띄우는 법
▪처음 띄울 때</p>
<blockquote>
<p>폴더 만들어 열기
터미널에 yarn create react-app 새폴더명(나중폴더)
한참 다운로드됨
cd 나중폴더명, yarn start 화면에 나옴
cd 나중폴더명 엔터
주소(위치?)가 나중 폴더로 바뀜
yarn start 엔터
크롬에 localhosst:3000창이 열림</p>
</blockquote>
<p>▪다음 날 다시 작업할 때(이미 다운로드된 상태)
▪크롬창 실수로 껐을 때: Ctrl+Shift+T<br>🟩깃허브 repository 에 코드 올리는 법
🟩versel통한 배포</p>
<h4 id="❓여전히-모르는-것">❓여전히 모르는 것</h4>
<p>🟩추가하기 기능 구현
🟩state관련해서 어떨 때는 users이고 어떨 때 user가 들어가는지
🟩key활용
🟩map,filter활용
🟩깃허브 커밋
🟩깃허브 Read.me활용
🟩깃허브 모심기
🟩깃허브와 벨로그 연동하여 깃허브에 TIL쓰기</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[(TIL)부트캠프 포기하고 싶던 날]]></title>
            <link>https://velog.io/@adhd_lab/TIL%EB%B6%80%ED%8A%B8%EC%BA%A0%ED%94%84-%ED%8F%AC%EA%B8%B0%ED%95%98%EA%B3%A0-%EC%8B%B6%EB%8D%98-%EB%82%A0</link>
            <guid>https://velog.io/@adhd_lab/TIL%EB%B6%80%ED%8A%B8%EC%BA%A0%ED%94%84-%ED%8F%AC%EA%B8%B0%ED%95%98%EA%B3%A0-%EC%8B%B6%EB%8D%98-%EB%82%A0</guid>
            <pubDate>Wed, 19 Apr 2023 00:01:48 GMT</pubDate>
            <description><![CDATA[<h3 id="20230419수">2023.04.19(수)</h3>
<p>react 주특기 수업을 시작한지 한주가 좀 안 되었고, 첫 개인과제 제출일이었다. 강의는 다 이해를 못했지만, 수업에 나온 예시코드 붙이고 다른 팀원꺼 참고해서 수정하면 어떻게든 할 수 있을 줄 알았다. 그런데 제출시간인 어제 5시까지 정말 뭐하나 된 게 없었다. 수업예시 코드부터가 계속 에러가 떴다. </p>
<p>결국은 챗gpt한테 내가 원하는 화면 자세히 말하고, 다른 팀원분꺼 참고해서 코드를 쓰긴 했는데 이해는 하나도 안갔다. 게다가 github올리고 배포하는 것도 할 줄을 몰라서 인터넷을 봤는데, 이리 저리 따라해도 잘 안되서 결국 팀원분께 도움을 청했다. 팀원분들이 하신 방법으로 해도 계속 오류가 나서 거의 한시간 걸려 성공하도록 도와주셨다. (너무 감사) 이래저래해서 과제제출시간이 1시간30분지나 과제를 제출했다. </p>
<p>그거 제출하고 식사하고는 내내 누워있었다. 처음에는 잠깐 휴식할 생각이었는데, 나중에는 &#39;나는 못하겠다&#39;는 생각에 사로잡혀서 괴로하면서 자다 깨다를 반복했다. </p>
<blockquote>
<p>java script도 그렇고 react 수업도 나한테는 너무 어렵다. 들어도 모르겠다. 나는 너무 수준이 낮고 팀원들은 잘해서 수준차이가 나서 맘껏 묻기가 불편하다. 이렇게 못해도 편하게 물을 수 있는 선생님이나 동료가 있었으면 좋겠다. 나만 못 따라가서 괴롭다</p>
</blockquote>
<p>그렇게 괴로워하다가 새벽에 이르러서 생각이 좀 바뀌었다. </p>
<blockquote>
<p>내가 지난 주부터 많이 바쁘고 힘들었지. (왕복3시간반 아이 병원, 고소당함, 친구결혼축가) 내가 강의를 찬찬히 듣고 이해하고 따라갈 마음의 여유가 없었지. 내가 도저히 이해할 수 없는 수준인 게 아니라 내가 집중하기 어려운 사정이 이었지.</p>
</blockquote>
<blockquote>
<p>다시 힘을 내서 수업들어보고, 모르는 건 용기내서 팀원분들께 물어보고, 아니면 질문방, 아니면 기술매니저님께 도움을 받아보자! TIL도 쓰자. 기본부터 다시 해보자. </p>
</blockquote>
<p>리액트 강의 다시 들어야지.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[자바스크립트 코딩테스트]]></title>
            <link>https://velog.io/@adhd_lab/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8</link>
            <guid>https://velog.io/@adhd_lab/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8</guid>
            <pubDate>Mon, 10 Apr 2023 06:43:45 GMT</pubDate>
            <description><![CDATA[<p>*문제 풀기 위해 알아야 할 것 </p>
<p>문자의 길이</p>
<blockquote>
<p>s.length</p>
</blockquote>
<blockquote>
<p>split 
let reverse = n.toString().split(&#39;&#39;).reverse()
    return reverse.map(str=&gt;parseInt(str))
배열로 바꾸는 메서드-split(&#39;&#39;) </p>
</blockquote>
<p>숫자인지 확인(인자가 숫자가 아니면 true를 반환)</p>
<blockquote>
<p> isNaN(s) == false 또는 !isNaN(s)</p>
</blockquote>
<p>또는</p>
<blockquote>
<p>||</p>
</blockquote>
<p>영문자 소문자, 숫자, &quot;-&quot;, &quot;_&quot; 로만 구성된 길이 2 ~ 10자리 사이 문자열</p>
<blockquote>
<p>/^[a-z0-9_-]{2,10}$/ </p>
</blockquote>
<p>4-4-4-4 체크</p>
<blockquote>
<p>/^[0-9]{4}[-\s.]?[0-9]{4}[-\s.]?[0-9]{4}[-\s.]?[0-9]</p>
</blockquote>
<p>/[a-zA-Z0-9]/ 영문자 대소문자와 숫자로만 구성</p>
<blockquote>
<p>typeof Number(s) === &quot;number&quot;</p>
</blockquote>
<p>문자열을 숫자로 변환할 때 주로 사용됩니다.</p>
<blockquote>
<p>Number()와 parseInt()는 </p>
</blockquote>
<p>해당 문자열이 숫자인지를 판단한다.</p>
<blockquote>
<p> isdigit( ) : </p>
</blockquote>
<p>찾으려는 문자열 indexOf</p>
<blockquote>
<p>function findKim(seoul) {
    return &quot;김서방은 &quot; + seoul.indexOf(&#39;Kim&#39;) + &quot;에 있다&quot;;
}</p>
</blockquote>
<p>변수나 연산 등을 삽입할 수 있게 되었다.</p>
<blockquote>
<p><code>${name}의 구매가는 ${price * num}원 입니다.</code>
console.log(name + &quot;의 구매가는 &quot; + (price * num) + &quot;원 입니다&quot;);
console.log(<code>${name}의 구매가는 ${price * num}원 입니다.</code>)</p>
</blockquote>
<blockquote>
<p>parsInt(str)
n.toString().split(&#39;&#39;).reverse()
    return reverse.map(str=&gt;parseInt(str))</p>
</blockquote>
<p>역순으로</p>
<blockquote>
<p>reverse
let reverse= n.toString()</p>
</blockquote>
<p>배열들을 재배치 </p>
<blockquote>
<p> map
//은   .map(str =&gt; parseInt(str))   문자열을 정수열로-&gt;따옴표날라감.  </p>
</blockquote>
<blockquote>
<p>  .join(&#39;&#39;)
      result.push(alphabet.join(&#39;&#39;))  </p>
</blockquote>
<blockquote>
<p>toUpperCase
toLowerCase()  </p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[항해99 WIL(Weekly I Learned)]]></title>
            <link>https://velog.io/@adhd_lab/%ED%95%AD%ED%95%B499-WILWeekly-I-Learned</link>
            <guid>https://velog.io/@adhd_lab/%ED%95%AD%ED%95%B499-WILWeekly-I-Learned</guid>
            <pubDate>Mon, 10 Apr 2023 06:26:15 GMT</pubDate>
            <description><![CDATA[<h4 id="javascript의-es란">JavaScript의 ES란?</h4>
<p>Ecma International이 ECMA-262 기술 규격에 따라 정의하고 있는 표준화된 스크립트 프로그래밍 언어를 말한다. 자바스크립트를 표준화하기 위해 만들어졌다. 액션스크립트와 J스크립트 등 다른 구현체도 포함하고 있다</p>
<h4 id="es5es6-문법-차이">ES5/ES6 문법 차이</h4>
<p>ECMAScript 6 (ES6)는 JavaScript의 버전 중 하나로, 2015년에 발표되되었다. ES6는 이전 버전인 ES5에서 새로운 문법과 기능을 대규모 도입하여 JavaScript 개발자들이 보다 쉽고 효율적으로 코드를 작성할 수 있도록 개선하였다. let, const도 이 때 나왔다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[스파르타코딩 부트캠프 항해99 예비수업 1일차(웹개발 종합반 1주차 강의)]]></title>
            <link>https://velog.io/@adhd_lab/%EB%B6%80%ED%8A%B8%EC%BA%A0%ED%94%84-%EC%98%88%EB%B9%84%EC%88%98%EC%97%85-1%EC%9D%BC%EC%B0%A8</link>
            <guid>https://velog.io/@adhd_lab/%EB%B6%80%ED%8A%B8%EC%BA%A0%ED%94%84-%EC%98%88%EB%B9%84%EC%88%98%EC%97%85-1%EC%9D%BC%EC%B0%A8</guid>
            <pubDate>Tue, 21 Mar 2023 07:37:31 GMT</pubDate>
            <description><![CDATA[<p>-수업 중 기억하고 싶은 것들
남이 만들어 둔 것을 쓸 때는 잘 찾아다가 조금씩만 고쳐서 쓰는 게 답
태그가 위계가 잘 맞는지 살펴보기
깃허브에 올릴 때는 index.html으로 올려야 배포가 됨.
외울 필요 없이 &#39;이전에 내가 어떻게 썼더라?&#39;하고 복사해서 쓰면 됨.</p>
<p>-단축어
비주얼스튜디오 열 때
Ctrl+S 저장
드래그+Shift+Alt+F 정렬
드래그+Ctrl+/ 주석</p>
<p>-bootstrap이란?
예쁜 CSS를 미리 모아둔 것
가장 유명한 꾸러미: 부트스트랩</p>
<p>-부트스트랩 컴포넌트5.0: 단추, 리스트 등 아주 많은 것들이 있어서 갖다 붙이면 그럴싸한 페이지 만들 수 있다. <a href="https://getbootstrap.com/docs/5.0/">https://getbootstrap.com/docs/5.0/</a></p>
<p>-디스플레이 플렉스:내용물 정렬할 때 편함. 네줄이 함께 다님</p>
<pre><code>    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;</code></pre><p>-배경에 이미지 넣을 때 쓰는 세줄</p>
<pre><code>코드     background-image: url(&#39;&#39;);
        background-position: center;
        background-size: cover;를 입력하세요</code></pre><p>기술 매니저님께 항해99 최고령인 나의 나이에 대한 얘기를 하니 장진환(프론트엔드)이라는 분이 삼십대에 개발을 시작하여 처음에는 500개 중 두곳만 합격하였지만 지금은 대단한 개발자가 되었다는 얘기를 해주셨다. 그런데 이름을 잘 못 적었는지 검색해서 못찾겠다. 그 분에 대해 궁금하다. 
```</p>
]]></description>
        </item>
    </channel>
</rss>