<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>sol_jenni.log</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Tue, 05 Dec 2023 09:28:30 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <copyright>Copyright (C) 2019. sol_jenni.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/sol_jenni7" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[next(err)]]></title>
            <link>https://velog.io/@sol_jenni7/nexterr</link>
            <guid>https://velog.io/@sol_jenni7/nexterr</guid>
            <pubDate>Tue, 05 Dec 2023 09:28:30 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/sol_jenni7/post/c25a4270-f63f-4945-8b82-a42d61ad0353/image.png" alt=""></p>
<p>즉, next(err)를 호출하면 현재 요청을 처리하던 미들웨어에서 다음 에러 핸들러 미들웨어로 에러가 전달되어 에러 처리가 이루어짐</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[아임포트 결제취소]]></title>
            <link>https://velog.io/@sol_jenni7/%EC%95%84%EC%9E%84%ED%8F%AC%ED%8A%B8-%EA%B2%B0%EC%A0%9C%EC%B7%A8%EC%86%8C</link>
            <guid>https://velog.io/@sol_jenni7/%EC%95%84%EC%9E%84%ED%8F%AC%ED%8A%B8-%EA%B2%B0%EC%A0%9C%EC%B7%A8%EC%86%8C</guid>
            <pubDate>Tue, 05 Dec 2023 03:02:37 GMT</pubDate>
            <description><![CDATA[<p>콜백 함수에서 result 값이 success가 아닐 경우 분기 쳐서 취소 api를 호출해야함.</p>
<p>payment.js에서 </p>
<p>getaccesstoken</p>
<p>getpaymentdata</p>
<p>cancelpayment </p>
<p>3개 함수가 작성되어 있는 상황이다.</p>
<p>axios를 통해 가져온 getpaymentdata 값은 다음과 같다.</p>
<p><img src="https://velog.velcdn.com/images/sol_jenni7/post/24f095c7-9cb2-41e2-a49c-ca68cea4f909/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[docker seminair]]></title>
            <link>https://velog.io/@sol_jenni7/docker-seminair</link>
            <guid>https://velog.io/@sol_jenni7/docker-seminair</guid>
            <pubDate>Mon, 04 Dec 2023 01:57:07 GMT</pubDate>
            <description><![CDATA[<p>1) importance of independent, standardized &quot;application packages&quot; 
-&gt; differecnt development &amp; production environment
-&gt; demand for exactly same environment for running the app
-&gt; docker can enable certain node version to lock into docker container
-&gt; share a common development environment/setup
-&gt; don&#39;t need to uninstall and reinstall local dependencies and runtimes all the time</p>
<p>2) the container could be lightweighted unlike virtual machine</p>
<p>3) 이미지: 설정 명령(environment), 코드가 포함된 공유 가능한 패키지</p>
<p>컨테이너: 이미지의 구체적인 실행 인스턴스</p>
<p>여러 컨테이너는 서로 간섭하지 않고 동일한 이미지를 기반으로 할 수 있다.</p>
<p>-&gt; 이미지를 기반으로 컨테이너 실행</p>
<p>4) dockerfile : 자체 이미지를 빌드할 때 실행하려는 도커에 대한 명령이 포함</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[데이터 교환]]></title>
            <link>https://velog.io/@sol_jenni7/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EA%B5%90%ED%99%98</link>
            <guid>https://velog.io/@sol_jenni7/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EA%B5%90%ED%99%98</guid>
            <pubDate>Mon, 27 Nov 2023 10:42:21 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/sol_jenni7/post/8c63c96a-26fd-4858-89b9-042ae6cf09ab/image.png" alt=""></p>
<p>결론
-&gt; </p>
<p>1) 데이터를 주고 받을때에는 json 형식의 문자열, 그 전에는 자바스크립트 객체 형태로 존재.</p>
<p>2) 자바스크립트 객체를 json 문자열로 변환하는 것을 직렬화serializable 라고 한다.</p>
<p><img src="https://velog.velcdn.com/images/sol_jenni7/post/811b2f10-1056-439b-8d72-111ef4fa751c/image.png" alt=""></p>
<p>JSON은 주로 데이터를 저장하거나 네트워크를 통해 전송할 때 사용되며, JavaScript 객체는 프로그래밍에 있어서 데이터 및 동작을 포함하는 데 사용된다. JSON 형식의 문자열은 자바스크립트의 JSON.parse()를 통해 자바스크립트 객체로 변환될 수 있으며, 반대로 자바스크립트 객체는 JSON.stringify()를 통해 JSON 형식의 문자열로 변환될 수 있습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[private 생성자와 super]]></title>
            <link>https://velog.io/@sol_jenni7/private-%EC%83%9D%EC%84%B1%EC%9E%90%EC%99%80-super</link>
            <guid>https://velog.io/@sol_jenni7/private-%EC%83%9D%EC%84%B1%EC%9E%90%EC%99%80-super</guid>
            <pubDate>Tue, 17 Oct 2023 08:58:38 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/sol_jenni7/post/c206783b-6250-4f12-9010-68a28892d743/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/sol_jenni7/post/eef45115-e291-4503-a07c-0e5804e99b02/image.png" alt=""></p>
<p>1) 클래스 사용자들이 직접 해당 생성자를 호출하는 것을 방지
2) factory 생성자나 다른 메서드들에서만 해당 생성자를 호출하도록</p>
<p><img src="https://velog.velcdn.com/images/sol_jenni7/post/201d203f-bb8d-4c1f-8424-6fdb1474ad89/image.png" alt=""></p>
<p>3) super를 통해 상위 클래스의 생성자를 호출
4) super 괄호 안의 내용은 상위 클래스의 생성자에 전달되는 인자들이며 PlanterController의 생성자는 setting과 controllerType 두 개의 파라미터를 받음</p>
<p>5) setting: setting은 HumidityController의 생성자로 전달받은 setting 값을 상위 클래스의 생성자로 다시 전달</p>
<p>6) controllerType: ControllerType.humidity는 상수 ControllerType.humidity 값을 상위 클래스의 생성자로 전달</p>
<p>7) 하위 클래스 인스턴스를 만들때, 상위 클래스 생성자를 호출하고 동시에 하위 클래스 생성자도 호출</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[hoisting]]></title>
            <link>https://velog.io/@sol_jenni7/hoisting</link>
            <guid>https://velog.io/@sol_jenni7/hoisting</guid>
            <pubDate>Fri, 06 Oct 2023 09:02:46 GMT</pubDate>
            <description><![CDATA[<p>모든 변수 선언문이 코드의 최상단으로 이동되는 것처럼 느껴지는 현상</p>
<p><img src="https://velog.velcdn.com/images/sol_jenni7/post/8d2d2b3a-f03d-4377-85b5-faa1b9125520/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[mvvm과 provider의 결합]]></title>
            <link>https://velog.io/@sol_jenni7/mvvm%EA%B3%BC-provider%EC%9D%98-%EA%B2%B0%ED%95%A9</link>
            <guid>https://velog.io/@sol_jenni7/mvvm%EA%B3%BC-provider%EC%9D%98-%EA%B2%B0%ED%95%A9</guid>
            <pubDate>Mon, 18 Sep 2023 09:43:29 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/sol_jenni7/post/fd0e81ca-e70f-4b32-b2bc-53996eb9e447/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Observing Blocs]]></title>
            <link>https://velog.io/@sol_jenni7/Observing-Blocs</link>
            <guid>https://velog.io/@sol_jenni7/Observing-Blocs</guid>
            <pubDate>Tue, 12 Sep 2023 11:23:28 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/sol_jenni7/post/6f6c46e5-d1e4-457a-9d5d-5095ebdeb7a0/image.png" alt=""></p>
<p>cubit에서 state의 변화는 emit에 의해 촉발됨</p>
<p>이때 실제 state변화가 일어나기전에 cubit에 change 이벤트가 발생하고 onchange 함수 호출</p>
<p>다음은 bloc</p>
<p><img src="https://velog.velcdn.com/images/sol_jenni7/post/84c1afc9-8536-42be-b317-bb1b49e98c78/image.png" alt=""></p>
<p>bloc에서 state의 변화는 event가 add되면 발생. 이때 onevent 함수가 trigger됨.</p>
<p>eventtransformer를 거친 event는 eventhandler에 의해 처리되는데, </p>
<p>emit들을 호출해서 새로운 state를 generate한다. </p>
<p>이때 state가 change되기 전에 ontransition 함수가 호출된다.</p>
<p>결론</p>
<p>bloc의 경우, state 변화를 초래한 원인인 event를 trace할 수 있다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[blocprovider.value]]></title>
            <link>https://velog.io/@sol_jenni7/blocprovider.value</link>
            <guid>https://velog.io/@sol_jenni7/blocprovider.value</guid>
            <pubDate>Mon, 11 Sep 2023 01:52:39 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/sol_jenni7/post/6a77b8cb-bf60-4da1-8924-dc2f1b0f6e33/image.png" alt=""></p>
<p>bloc 인스턴스를 다른 buildcontext 넘겨보낼때 blocprovider.value를 통해 넘겨주어야함</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[context의 활용]]></title>
            <link>https://velog.io/@sol_jenni7/context%EC%9D%98-%ED%99%9C%EC%9A%A9</link>
            <guid>https://velog.io/@sol_jenni7/context%EC%9D%98-%ED%99%9C%EC%9A%A9</guid>
            <pubDate>Mon, 11 Sep 2023 01:33:26 GMT</pubDate>
            <description><![CDATA[<p>에러가 나는 상황
<img src="https://velog.velcdn.com/images/sol_jenni7/post/b246c58c-ee63-486c-b2f5-39c0bec309bf/image.png" alt=""></p>
<p>에러가 나지 않는 상황
<img src="https://velog.velcdn.com/images/sol_jenni7/post/ad2d1337-15d4-4653-9af9-3bfcebb0fdd5/image.png" alt=""></p>
<p>에러가 나는 이유는 아래와 같음</p>
<p><img src="https://velog.velcdn.com/images/sol_jenni7/post/7bb6bfba-644d-442d-a7b2-ff1491d73538/image.png" alt=""></p>
<p>context가 접근가능한 범위와 관련된 문제</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[garbage collection]]></title>
            <link>https://velog.io/@sol_jenni7/garbage-collection</link>
            <guid>https://velog.io/@sol_jenni7/garbage-collection</guid>
            <pubDate>Fri, 08 Sep 2023 06:37:21 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/sol_jenni7/post/a98cefb9-a7a8-466b-a771-bc24ac0e57ff/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/sol_jenni7/post/7caf3716-abfa-4d22-9d84-e186b2e6c611/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[blocprovider와 blocbuilder]]></title>
            <link>https://velog.io/@sol_jenni7/blocprovider%EC%99%80-blocbuilder</link>
            <guid>https://velog.io/@sol_jenni7/blocprovider%EC%99%80-blocbuilder</guid>
            <pubDate>Tue, 05 Sep 2023 08:24:13 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/sol_jenni7/post/ad673dc0-5977-4e57-8cdf-393253d7e6d9/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/sol_jenni7/post/73df48b8-4bd0-408b-9b54-c40d4aa98f0c/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/sol_jenni7/post/7ea1e52f-3377-457f-b332-d8660b0c2454/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/sol_jenni7/post/8faf0ddf-c64c-402f-8eaa-4a35a02d1d84/image.png" alt=""></p>
<p>위를 토대로 provider와 bloc의 차이를 다음과 같이 정리해 볼 수 있다.</p>
<p><img src="https://velog.velcdn.com/images/sol_jenni7/post/c9a74d1d-7dfa-4948-8399-7e4b4587e131/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[객체생성과 의존성주입의 차이]]></title>
            <link>https://velog.io/@sol_jenni7/%EA%B0%9D%EC%B2%B4%EC%83%9D%EC%84%B1%EA%B3%BC-%EC%9D%98%EC%A1%B4%EC%84%B1%EC%A3%BC%EC%9E%85%EC%9D%98-%EC%B0%A8%EC%9D%B4</link>
            <guid>https://velog.io/@sol_jenni7/%EA%B0%9D%EC%B2%B4%EC%83%9D%EC%84%B1%EA%B3%BC-%EC%9D%98%EC%A1%B4%EC%84%B1%EC%A3%BC%EC%9E%85%EC%9D%98-%EC%B0%A8%EC%9D%B4</guid>
            <pubDate>Mon, 04 Sep 2023 06:46:05 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/sol_jenni7/post/17449ca1-e433-4a7e-be1b-1bf60858673d/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/sol_jenni7/post/3f556f03-6b95-46f7-8e0a-cf7790803f58/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/sol_jenni7/post/563afd01-715d-4c65-8507-b7e4118be90a/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Bloc Overview]]></title>
            <link>https://velog.io/@sol_jenni7/Bloc-Overview</link>
            <guid>https://velog.io/@sol_jenni7/Bloc-Overview</guid>
            <pubDate>Thu, 31 Aug 2023 03:13:25 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/sol_jenni7/post/6493d7a0-ae34-4cf8-a7dc-9a0f95b7cc4d/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/sol_jenni7/post/bebc5de3-b950-4963-8341-4ca67a8b7ac4/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/sol_jenni7/post/97404a0a-cabe-4727-ac55-30b10b7cb076/image.png" alt="">

find the cubit/bloc을 하기 위해서는 cubit instance가 형성되어야함 그 후 위젯에서 해당 instace에 접근할 수 있는 기능을 제공해야함</p>
<p>이를 blocprovider 위젯이 제공한다.</p>
<p>blocprovider의 children이 만들어진 instance에 접근할 수 있는 of 라는 static 함수를 제공하는데 이를 의존성 주입이라고 한다.</p>
<p>출처: udemy 조상우</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[didupdatewidget과 setstate]]></title>
            <link>https://velog.io/@sol_jenni7/didupdatewidget%EA%B3%BC-setstate</link>
            <guid>https://velog.io/@sol_jenni7/didupdatewidget%EA%B3%BC-setstate</guid>
            <pubDate>Mon, 28 Aug 2023 02:09:41 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/sol_jenni7/post/655fb248-a6b1-4908-b6c1-45401a8b2bc0/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/sol_jenni7/post/7c96b4d8-c10b-4d93-bcf1-e2198d929d22/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[gorouter에서 push와 go]]></title>
            <link>https://velog.io/@sol_jenni7/gorouter%EC%97%90%EC%84%9C-push%EC%99%80-go</link>
            <guid>https://velog.io/@sol_jenni7/gorouter%EC%97%90%EC%84%9C-push%EC%99%80-go</guid>
            <pubDate>Tue, 22 Aug 2023 09:40:12 GMT</pubDate>
            <description><![CDATA[<p>go_router 패키지에서의 go와 push는 각각 새로운 경로로 이동하면서 현재 경로를 대체하거나 이전 경로를 유지한 채로 스택에 쌓는 동작을 나타낸다. </p>
<p>go는 새로운 경로로 이동하면서 현재 경로를 대체. 이전 화면을 스택에서 제거하고 새로운 경로로 이동.
ex)  로그인 이후에 로그인 화면을 스택에서 제거하고 대시보드 화면으로 이동할 때</p>
<p>push는 새로운 경로로 이동하면서 이전 경로를 유지한 채로 스택에 쌓음. 이전 화면과 새로운 화면을 스택에 함께 보관하며, 뒤로가기 버튼을 눌렀을 때 이전 화면으로 돌아갈 수 있음. ex) 상품 목록에서 상품 상세 정보 화면으로 이동할 때 push 메서드를 사용할 수 있음.</p>
<p><img src="https://velog.velcdn.com/images/sol_jenni7/post/d9112078-a1ef-4fdb-993a-b126d4f7e12c/image.png" alt=""></p>
<p>출처) code with andrea</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[factory 생성자]]></title>
            <link>https://velog.io/@sol_jenni7/factory-%EC%83%9D%EC%84%B1%EC%9E%90</link>
            <guid>https://velog.io/@sol_jenni7/factory-%EC%83%9D%EC%84%B1%EC%9E%90</guid>
            <pubDate>Fri, 18 Aug 2023 04:28:35 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/sol_jenni7/post/3a44e181-f149-4ede-aaef-fee2c0c206cf/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[pagination 클래스]]></title>
            <link>https://velog.io/@sol_jenni7/pagination-%ED%81%B4%EB%9E%98%EC%8A%A4</link>
            <guid>https://velog.io/@sol_jenni7/pagination-%ED%81%B4%EB%9E%98%EC%8A%A4</guid>
            <pubDate>Mon, 14 Aug 2023 05:12:09 GMT</pubDate>
            <description><![CDATA[<p>상태를 먼저 변경하고 나서 데이터를 가져오는 방식은 사용자 인터페이스(UI)에서 로딩 표시를 보여주는 등의 작업을 위해 중요</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[부모 클래스 상속 시 부모 생성자 초기화]]></title>
            <link>https://velog.io/@sol_jenni7/%EB%B6%80%EB%AA%A8-%ED%81%B4%EB%9E%98%EC%8A%A4-%EC%83%81%EC%86%8D-%EC%8B%9C-%EC%83%9D%EC%84%B1%EC%9E%90</link>
            <guid>https://velog.io/@sol_jenni7/%EB%B6%80%EB%AA%A8-%ED%81%B4%EB%9E%98%EC%8A%A4-%EC%83%81%EC%86%8D-%EC%8B%9C-%EC%83%9D%EC%84%B1%EC%9E%90</guid>
            <pubDate>Fri, 11 Aug 2023 09:57:30 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/sol_jenni7/post/96d69bd2-bd55-4c43-8395-2fa50b319f90/image.png" alt=""></p>
<p>부모 클래스 상속시, 자식 클래스에서 부모 클래스의 속성도 초기화해주어야한다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[카카오페이 환경설정]]></title>
            <link>https://velog.io/@sol_jenni7/%EC%B9%B4%EC%B9%B4%EC%98%A4%ED%8E%98%EC%9D%B4-%ED%99%98%EA%B2%BD%EC%84%A4%EC%A0%95</link>
            <guid>https://velog.io/@sol_jenni7/%EC%B9%B4%EC%B9%B4%EC%98%A4%ED%8E%98%EC%9D%B4-%ED%99%98%EA%B2%BD%EC%84%A4%EC%A0%95</guid>
            <pubDate>Mon, 07 Aug 2023 09:44:13 GMT</pubDate>
            <description><![CDATA[<p>현재 앱에서 결제방식이 아임포트의 카드에만 국한되어 결제편의성이 많이 떨어진 상황이다.</p>
<p>이에 소비자들의 결제편의성 제고를 위해 카카오페이를 결제에 도입하도록 결정하였다.</p>
<p>바로 카카오페이 웹뷰를 띄우는 방식을 검토하였으나, 검토하는 와중에</p>
<p>아임포트에서도 카카오페이 결제웹뷰를 지원하는 것을 확인하고 바로 pg사를 카카오페이로</p>
<p>설정한 후 결제 로직을 수정하기 시작했다.</p>
<p>수정하기에 앞서 크게 2가지 문제에 봉착했는데 하나는</p>
<p>orderhistory에서 type 문제와</p>
<p><img src="https://velog.velcdn.com/images/sol_jenni7/post/073f8dd5-89c3-4b8e-a546-8e8a41d8129f/image.png" alt=""></p>
<p>매장앱에서 &#39;환불하기&#39;버튼을 눌렀을때 </p>
<p>setstate, dispose 충돌 문제가 나타난 것이다. </p>
<p><img src="https://velog.velcdn.com/images/sol_jenni7/post/dd7b0854-0648-4df5-a4f0-6d0eda248a38/image.png" alt=""></p>
<p>먼저 위 2문제를 해소하고 결제 로직을 보강하기로 결정하였다.</p>
]]></description>
        </item>
    </channel>
</rss>