<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>JH Blog</title>
    <description>Every failure is leading towards success.</description>
    <link>http://gogoJH.github.io/</link>
    <atom:link href="http://gogoJH.github.io/feed.xml" rel="self" type="application/rss+xml" />
    <pubDate>Thu, 29 Oct 2026 03:34:17 +0000</pubDate>
    <lastBuildDate>Thu, 29 Oct 2026 03:34:17 +0000</lastBuildDate>
    <generator>Jekyll v3.10.0</generator>
    
    
      <item>
        <title>2024.12.20 전체 에러핸들링</title>
        <description>&lt;h2 id=&quot;프로젝트-맥락&quot;&gt;프로젝트 맥락&lt;/h2&gt;

&lt;p&gt;Flutter 기반 SNS 프로젝트에서 유저 모델, 디렉토리 구조와 일정을 협의했습니다. 유저 검색을 구현하면서 전체 에러 핸들러를 중앙에서 관리하도록 적용했습니다.&lt;/p&gt;

&lt;h2 id=&quot;구현-구조-기록&quot;&gt;구현 구조 기록&lt;/h2&gt;

&lt;p&gt;당시 메인 구조, 코어 디렉토리와 사용하는 쪽의 코드를 캡처해 남겼습니다.&lt;/p&gt;

&lt;h3 id=&quot;메인-구조&quot;&gt;메인 구조&lt;/h3&gt;

&lt;p&gt;&lt;img src=&quot;/img/main_code.png&quot; alt=&quot;메인 구조&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;코어-디렉토리&quot;&gt;코어 디렉토리&lt;/h3&gt;

&lt;p&gt;&lt;img src=&quot;/img/core_code.png&quot; alt=&quot;코어 디렉토리 구조&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;사용하는-쪽의-구조&quot;&gt;사용하는 쪽의 구조&lt;/h3&gt;

&lt;p&gt;&lt;img src=&quot;/img/user_code.png&quot; alt=&quot;에러 처리 사용 구조&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;당시-작업-상태&quot;&gt;당시 작업 상태&lt;/h2&gt;

&lt;p&gt;중앙 에러 처리 적용을 진행했으며, 다음 작업으로 새 채팅 추가와 그룹 채팅 구현을 계획했습니다.&lt;/p&gt;
</description>
        <pubDate>Fri, 20 Dec 2024 00:00:00 +0000</pubDate>
        <link>http://gogoJH.github.io/2024/12/20/TIL-flutter-2%EC%B0%A8-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-3%EC%9D%BC%EC%B0%A8/</link>
        <guid isPermaLink="true">http://gogoJH.github.io/2024/12/20/TIL-flutter-2%EC%B0%A8-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-3%EC%9D%BC%EC%B0%A8/</guid>
        
        <category>TIL</category>
        
        <category>개발일기</category>
        
        <category>프로젝트</category>
        
        <category>Dart</category>
        
        
      </item>
    
      <item>
        <title>2024.11.21 ime를 몰라서 고생했다..</title>
        <description>&lt;h2 id=&quot;구현하던-기능&quot;&gt;구현하던 기능&lt;/h2&gt;

&lt;p&gt;Open API를 연동해 학교와 학과를 검색하는 자동완성 기능을 구현했습니다. 텍스트 필드에 한글 두 글자 이상이 입력되면 검색을 실행하려고 했습니다.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/img/school_search.png&quot; alt=&quot;학교 검색 화면&quot; width=&quot;300&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;관찰한-현상&quot;&gt;관찰한 현상&lt;/h2&gt;

&lt;p&gt;의도한 조건은 두 글자였지만, 실제로는 한글을 세 글자 이상 입력한 뒤에야 동작하는 현상이 나타났습니다. 입력 중인 한글의 IME 처리와 검색을 실행하는 시점 사이의 문제를 확인하고 있었습니다.&lt;/p&gt;

&lt;h2 id=&quot;검토한-방향과-남은-상태&quot;&gt;검토한 방향과 남은 상태&lt;/h2&gt;

&lt;p&gt;당시에는 microtask를 사용하는 방향을 검토했습니다. &lt;strong&gt;이 글을 작성한 시점에는 해결하지 못했습니다.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;학교·학과 자동완성 구현과 코드 리팩토링을 진행하면서, 한글 입력 조건을 별도로 확인할 필요가 있음을 남긴 관찰 기록입니다.&lt;/p&gt;
</description>
        <pubDate>Thu, 21 Nov 2024 00:00:00 +0000</pubDate>
        <link>http://gogoJH.github.io/2024/11/21/TIL-flutter-1%EC%B0%A8-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-7%EC%9D%BC%EC%B0%A8/</link>
        <guid isPermaLink="true">http://gogoJH.github.io/2024/11/21/TIL-flutter-1%EC%B0%A8-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-7%EC%9D%BC%EC%B0%A8/</guid>
        
        <category>TIL</category>
        
        <category>개발일기</category>
        
        <category>프로젝트</category>
        
        <category>Dart</category>
        
        
      </item>
    
      <item>
        <title>2024.11.20 매일 12시간씩 공부는 힘들어..</title>
        <description>&lt;h2 id=&quot;문제-상황&quot;&gt;문제 상황&lt;/h2&gt;

&lt;p&gt;작업 브랜치를 develop에 병합했다가 revert한 뒤, 다시 PR을 작성하자 revert 이후의 커밋 내용만 변경 내역으로 인식되는 문제가 있었습니다.&lt;/p&gt;

&lt;p&gt;회원가입 기능을 리팩토링하고 Open API 기반 자동완성을 구현하던 중 발생한 병합 문제였습니다.&lt;/p&gt;

&lt;h2 id=&quot;당시-진행한-처리&quot;&gt;당시 진행한 처리&lt;/h2&gt;

&lt;ol&gt;
  &lt;li&gt;별도의 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;merge_test&lt;/code&gt; 브랜치를 만들었습니다.&lt;/li&gt;
  &lt;li&gt;해당 브랜치에서 develop의 병합 이전 커밋을 기준으로 작업 브랜치를 다시 병합했습니다.&lt;/li&gt;
  &lt;li&gt;나머지 작업도 순서대로 병합한 뒤 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;merge_test&lt;/code&gt;로 PR을 작성했습니다.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;img src=&quot;/img/merge.png&quot; alt=&quot;당시 병합 문제를 정리한 과정&quot; /&gt;&lt;/p&gt;

&lt;p&gt;이 기록은 당시 별도 브랜치에서 구성했던 처리 흐름을 정리한 것입니다.&lt;/p&gt;

&lt;h2 id=&quot;함께-진행한-작업&quot;&gt;함께 진행한 작업&lt;/h2&gt;

&lt;p&gt;회원가입 화면 리팩토링과 Open API 검색·자동완성 기능을 진행했습니다.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/img/first_register.png&quot; alt=&quot;회원가입 첫 화면&quot; width=&quot;300&quot; /&gt;
&lt;img src=&quot;/img/second_register.png&quot; alt=&quot;회원가입 다음 화면&quot; width=&quot;300&quot; /&gt;&lt;/p&gt;
</description>
        <pubDate>Wed, 20 Nov 2024 00:00:00 +0000</pubDate>
        <link>http://gogoJH.github.io/2024/11/20/TIL-flutter-1%EC%B0%A8-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-6%EC%9D%BC%EC%B0%A8/</link>
        <guid isPermaLink="true">http://gogoJH.github.io/2024/11/20/TIL-flutter-1%EC%B0%A8-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-6%EC%9D%BC%EC%B0%A8/</guid>
        
        <category>TIL</category>
        
        <category>개발일기</category>
        
        <category>프로젝트</category>
        
        <category>Dart</category>
        
        
      </item>
    
      <item>
        <title>2024.11.19 너무 많은걸 처음부터 하려고하면 안되겠다.!</title>
        <description>&lt;h2 id=&quot;작업-맥락&quot;&gt;작업 맥락&lt;/h2&gt;

&lt;p&gt;Flutter 이력서 프로젝트에서 로그인·회원가입 기능과 입력값 검증을 구현하고 있었습니다. 테마 변경, 검색과 PDF 내보내기 등 추가 기능도 함께 검토하던 시점입니다.&lt;/p&gt;

&lt;h2 id=&quot;확인한-문제&quot;&gt;확인한 문제&lt;/h2&gt;

&lt;p&gt;로그인 요청을 보내면 인증되지 않았다는 오류가 발생했습니다. Firebase SDK와 함께 추가된 패키지들의 버전이 낮은 상태였습니다.&lt;/p&gt;

&lt;h2 id=&quot;당시-진행한-조치&quot;&gt;당시 진행한 조치&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;관련 패키지를 4.x에서 5.x로 변경했습니다.&lt;/li&gt;
  &lt;li&gt;Android의 minSdk 버전도 높였습니다.&lt;/li&gt;
  &lt;li&gt;변경 후 로그인 요청을 다시 확인했고, 이전에 발생하던 인증 오류가 사라졌습니다.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;정확한 패키지별 버전 조합은 당시 기록에 남기지 않았습니다. 이 글은 해당 프로젝트에서 진행한 점검과 결과를 정리한 기록입니다.&lt;/p&gt;
</description>
        <pubDate>Tue, 19 Nov 2024 00:00:00 +0000</pubDate>
        <link>http://gogoJH.github.io/2024/11/19/TIL-flutter-1%EC%B0%A8-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-5%EC%9D%BC%EC%B0%A8/</link>
        <guid isPermaLink="true">http://gogoJH.github.io/2024/11/19/TIL-flutter-1%EC%B0%A8-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-5%EC%9D%BC%EC%B0%A8/</guid>
        
        <category>TIL</category>
        
        <category>개발일기</category>
        
        <category>프로젝트</category>
        
        <category>Dart</category>
        
        
      </item>
    
      <item>
        <title>2022.05.25 개발문화 개발팀</title>
        <description>&lt;h1 id=&quot;개발-문화-팀으로-개발을-한다는-것&quot;&gt;개발 문화, 팀으로 개발을 한다는 것.&lt;/h1&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h3 id=&quot;팀-단위의-개발-해봤니&quot;&gt;팀 단위의 개발 해봤니?&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;서로 다른 성향의 사람들이 만나 팀이 되었다.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;내가 입사한 회사는 MVP 개발이 끝나고 이제 막 팀 단위의 개발을 시작하는 회사다.
이전까지는 한 사람이 한 프로젝트를 도맡아 운영해왔지만 이제는 개발인력도 많아질 것이고 시스템 고도화를 진행하면서 한 프로젝트에 여럿이 투입되는 일들이 비일비재해질 것이 분명해보였다.(앞으로 팀 참여가 확정된 분들만 여럿 ..)&lt;/p&gt;

&lt;p&gt;이전 회사는 규모가 작긴 했지만, 100% 재택 근무를 하고 있던 터라 이런 팀단위 개발에 사용하는 커뮤니케이션 도구들을 사용해볼 기회가 많았고, 이 경험을 바탕으로 팀 내에서 어떻게 하면 좀 더 편하게 서로의 생산성 저하를 막고 원활한 개발을 할 수 있을까가 첫번째 과제로 다가왔다.&lt;/p&gt;

&lt;p&gt;MVP 개발에 몰두하여 속도를 내다보니 코드리뷰나 명세정리 등 개발문화 도입에 적극적이지 못했던 모양이다.&lt;/p&gt;

&lt;p&gt;이런 상황은 내가 해보고 싶었던 개발 문화 도입을 적극 어필 할 수 있는 기회이고 나에겐 굉장히 감사한 일이다. 이전까지 경험해보지 못했던 많은 경험을 할 수 있는 기회니까 :)
&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;

&lt;h3 id=&quot;가장-먼저-도입해보고-싶은-것들&quot;&gt;가장 먼저 도입해보고 싶은 것들.&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;첫번째는 협업을 하고 코드 리뷰를 시작하여야 하기 때문에 코드 포맷 부터 서로의 의견을 취합하고 합의점을 찾아야 한다.
    &lt;ul&gt;
      &lt;li&gt;
        &lt;h5 id=&quot;이-합의점은-곧-팀의-코드-컨밴션이-될-것이고-앞으로의-불필요한-요소가-없는-코드-생산에-기여할-것이다&quot;&gt;이 합의점은 곧 팀의 코드 컨밴션이 될 것이고 앞으로의 불필요한 요소가 없는 코드 생산에 기여할 것이다.&lt;/h5&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;두번째는 생산된 코드를 빌드하고  배포할 CI/CD 설계.
    &lt;ul&gt;
      &lt;li&gt;
        &lt;h5 id=&quot;자동화된-파이프-라인들은-팀원-각자가-생산해낸-코드들이-서로-충돌하지-않고-자동화된-통합-테스트와-배포과정을-거쳐-서비스를-보다-빠르게-업데이트하고-운영할-수-있게-도움-줄-것이다&quot;&gt;자동화된 파이프 라인들은 팀원 각자가 생산해낸 코드들이 서로 충돌하지 않고 자동화된 통합, 테스트와 배포과정을 거쳐 서비스를 보다 빠르게 업데이트하고 운영할 수 있게 도움 줄 것이다.&lt;/h5&gt;
        &lt;p&gt;&lt;br /&gt;&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;이후에-일들&quot;&gt;이후에 일들..&lt;/h3&gt;
&lt;p&gt;경력이 어마어마하신 CTO님이 합류 예정이시기에 새로운 무언가를 더욱 많이 배울 수 있을 것으로 보인다.
개발 2년차가 알면 얼마나 알겠나 ..
아마 어설프게 만들어놓은 파이프라인들 개선도 보게 될 것이고, 큰 회사에서의 팀프로젝트 관리도 보게될 것이다.
앞으로는 이런 경험들 혹은 자기개발 글들을  계속 남기게될 것으로 보인다.&lt;/p&gt;

&lt;p&gt;이상.&lt;/p&gt;

&lt;!--stackedit_data:
eyJoaXN0b3J5IjpbNjU2MTk5NzU2XX0=
--&gt;
</description>
        <pubDate>Wed, 25 May 2022 00:00:00 +0000</pubDate>
        <link>http://gogoJH.github.io/2022/05/25/%EA%B0%9C%EB%B0%9C%EB%AC%B8%ED%99%94-%EA%B0%9C%EB%B0%9C%ED%8C%80/</link>
        <guid isPermaLink="true">http://gogoJH.github.io/2022/05/25/%EA%B0%9C%EB%B0%9C%EB%AC%B8%ED%99%94-%EA%B0%9C%EB%B0%9C%ED%8C%80/</guid>
        
        <category>개발일기</category>
        
        <category>TIL</category>
        
        
      </item>
    
      <item>
        <title>2022.05.24 케어링 입사</title>
        <description>&lt;h1 id=&quot;프론트엔드-개발자-이직과-케어링-입사-&quot;&gt;프론트엔드 개발자 이직과 케어링 입사! :)&lt;/h1&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h3 id=&quot;이직준비를-했는데-공부를-다시하네&quot;&gt;이직준비를 했는데 공부를 다시하네..&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;프론트 엔드 개발자 이직 준비는 잊고 있던 것들을 기억하게 한다.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;개발자로써 일을 한지가 2년여가 되어 간다.
회사에서 많은 프로젝트를 진행하고 기획된 무언가를 만드는 과정은 항상 재밌었지만, 새로운 무언가를 언제나 습득해야한다는 것은 쉽지 않은 일이였다.&lt;/p&gt;

&lt;p&gt;항상 사용하던 부분들만 사용하는 빈도가 높아지다보니 정말 베이스한 기초 이론들을 저멀리하게 됐구나 느끼는 준비기간이였다.&lt;/p&gt;

&lt;p&gt;막상 면접을 준비하면서 베이스 랭귀지로 JS를 선택 개발 스택으로 es6를 적어놓았다면 아무런 준비 없이 호이스팅, this 사용법 등을 던졌을때 정확하고 간결하게 내용을 정리해 말하지 못한다면 꼭 이직이 아니더라도 한번쯤 다시 기초로 돌아가보길 .. 
&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;

&lt;h3 id=&quot;이번엔-til-잘좀-허자&quot;&gt;이번엔 TIL 잘좀 허자..&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;다시금 다지는 TIL 남기기&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;이번에 이직을 준비하면서 이력서 포트폴리오 때문에 굉장히 고민을 많이했었다.
소스코드를 보여줄 수도 없고 그냥 내가 어떤걸 했다가 전부인 이력서는 아마도 메리트가 전혀 없는 종이한장이 되겠다는 생각을 많이했다.&lt;/p&gt;

&lt;p&gt;막상 어떤 것을 고민했었는데 어떤 어려움이 있었는지 어떤 기술적 정리가 되어있는지 등 사내 문서로 정리한건 많지만 막상 이직을 하려고 대외적으로 내보일게 없다는게 참 한심스럽기까지 했다.&lt;/p&gt;

&lt;p&gt;개발자라면 꼭 자신의 레퍼런스를 챙겨가시길…&lt;/p&gt;

&lt;p&gt;그래서 다시금 또 이번엔 정말로 일주일에 한번씩이라도 혹은 어떤걸 준비하고 있을때 꼭 블로그에 정리해야겠다.&lt;/p&gt;

&lt;p&gt;이상.
&lt;!--stackedit_data:
eyJoaXN0b3J5IjpbMTIzMTA5MDY0MywtMTMxNjAzMDQwN119
--&gt;&lt;/p&gt;
</description>
        <pubDate>Tue, 24 May 2022 00:00:00 +0000</pubDate>
        <link>http://gogoJH.github.io/2022/05/24/TIL-%EC%9D%B4%EC%A7%81-%EC%BC%80%EC%96%B4%EB%A7%81-%EC%9E%85%EC%82%AC-)/</link>
        <guid isPermaLink="true">http://gogoJH.github.io/2022/05/24/TIL-%EC%9D%B4%EC%A7%81-%EC%BC%80%EC%96%B4%EB%A7%81-%EC%9E%85%EC%82%AC-)/</guid>
        
        <category>개발일기</category>
        
        <category>TIL</category>
        
        
      </item>
    
      <item>
        <title>2022.03.23 Dart</title>
        <description>&lt;h1 id=&quot;dart-자료형-연산자&quot;&gt;Dart 자료형, 연산자&lt;/h1&gt;
&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Dart&lt;/em&gt;&lt;/strong&gt; 를 공부하다보면 &lt;strong&gt;&lt;em&gt;JavaScript&lt;/em&gt;&lt;/strong&gt; 를 배울 때와 비슷하다는 느낌을 지울 수가 없는데 알아보니 &lt;strong&gt;&lt;em&gt;Dart&lt;/em&gt;&lt;/strong&gt; 개발자 분들이 웹개발자 출신들이라고 한다.
&lt;strong&gt;&lt;em&gt;JavaScript&lt;/em&gt;&lt;/strong&gt; 를 사용할 때 이렇게 하면 될 것 같은데라는 느낌이 들때가 있는데 Dart를 사용하다보면 딱 생각한데로 구현 될 때가 많은거 같다.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;1-자료형&quot;&gt;1. 자료형&lt;/h2&gt;
&lt;h3 id=&quot;1-1-자료형의-종류&quot;&gt;1-1 자료형의 종류&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;&lt;em&gt;int&lt;/em&gt;&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;정수형&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;&lt;em&gt;double&lt;/em&gt;&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;실수형&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;&lt;em&gt;String&lt;/em&gt;&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;문자열&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;&lt;em&gt;bool&lt;/em&gt;&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;참, 거짓(true, false)&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;&lt;em&gt;num&lt;/em&gt;&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;int와 double을 포함하는 상위 객체 타입.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;1-2-var--타입추론&quot;&gt;1-2 var : 타입추론&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Type&lt;/strong&gt;을 초기화 값에 따라서 자동으로 &lt;strong&gt;Type&lt;/strong&gt;을 정해주는 것 입니다.&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;void main() {
  var a = 11;             //int type
  var b = 22.2;           //double type
  var c = &apos;BlockDMask&apos;;   //String type
  var e = true;           //bool type
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;hr /&gt;

&lt;h3 id=&quot;1-3-final-const--상수&quot;&gt;1-3 final, const : 상수&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;상수&lt;/strong&gt;는 ==변하지 않는 값==을 나타내기 위해서 사용합니다.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;void main() {
  const int cnt = 20;
  //cnt = 30; //에러
  
  final String str = &quot;Dart Language&quot;;
  //str = &quot;C++ Language&quot;; //에러
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;상수는 값을 한번 초기화 해놓으면 다른 값으로 변경이 &lt;strong&gt;불가능&lt;/strong&gt; 합니다.&lt;/p&gt;

&lt;hr /&gt;
&lt;h2 id=&quot;2-연산자&quot;&gt;2. 연산자&lt;/h2&gt;

&lt;h3 id=&quot;2-1-산술-연산자&quot;&gt;2-1 산술 연산자&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;+&lt;/code&gt;&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;문자열 결합 (“a” + “b”)&lt;/li&gt;
      &lt;li&gt;숫자 더하기&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-&lt;/code&gt;&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;빼기&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;*&lt;/code&gt;&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;곱하기&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/&lt;/code&gt;&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;나누기&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;%&lt;/code&gt;&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;나머지&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/&lt;/code&gt;&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;몫&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;2-2-증감-연산자&quot;&gt;2-2 증감 연산자&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;전위 연산&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;++a&lt;/li&gt;
      &lt;li&gt;–a&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;후위 연산&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;a++&lt;/li&gt;
      &lt;li&gt;a–&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;void main() {
  //전위 연산
  int a = 10;
  print(++a); //11
  print(a);   //11
  
  //후위 연산
  int b = 10;
  print(b++); //10
  print(b);   //11
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;hr /&gt;
&lt;h3 id=&quot;2-3-비교-연산자&quot;&gt;2-3 비교 연산자&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;==&lt;/code&gt;&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;같다&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;!=&lt;/code&gt;&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;다르다&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;gt;, &amp;lt;&lt;/code&gt;&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;크다 작다&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;gt;=, &amp;lt;=&lt;/code&gt;&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;크거나 같다 작거나 같다&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;2-4-논리-연산자&quot;&gt;2-4 논리 연산자&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;amp;&amp;amp; &lt;/code&gt;&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;and&lt;/li&gt;
      &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;if(isEmpty &amp;amp;&amp;amp; cnt == 10) {}&lt;/code&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;||&lt;/code&gt;&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;or&lt;/li&gt;
      &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;if(isEmpty || cnt == 0) {}&lt;/code&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;! &lt;/code&gt;&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;부정&lt;/li&gt;
      &lt;li&gt;bool isEmpty = false;&lt;/li&gt;
      &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;if(!isEmpty) ...&lt;/code&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;==, !=&lt;/code&gt;&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;같다 다르다&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;void main() {
  bool isEmpty = false;
  int cnt = 10;

  if (isEmpty || cnt == 10) {
    print(&quot;true&quot;);
  } else {
    print(&quot;false&quot;);
  }

  if (!isEmpty) {
    print(&quot;isEmpty =&amp;gt; false&quot;);
  } else {
    print(&quot;isEmpty =&amp;gt; true&quot;);
  }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;3-주석&quot;&gt;3. 주석&lt;/h2&gt;

&lt;h3 id=&quot;3-1-한줄-주석&quot;&gt;3-1 한줄 주석&lt;/h3&gt;

&lt;p&gt;한줄 주석은 문장 중간을 제외하고 어느곳에서든 사용이 가능합니다.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;void main() {
  //한줄주석은 여기에서도 사용가능하고
  
  print(&quot;주석을 답니다&quot;); //여기에도 사용가능하고,
}
//이런데도 가능합니다.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;hr /&gt;

&lt;h3 id=&quot;3-2-여러줄-주석&quot;&gt;3-2 여러줄 주석&lt;/h3&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;void main() {
  /** 주석.
   *  아래 함수는 &quot;BlockDMask&quot;라는 문장을 출력합니다.
   **/
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;concluding&quot;&gt;Concluding..&lt;/h3&gt;

&lt;p&gt;이렇게 &lt;strong&gt;Dart&lt;/strong&gt; 코딩에 필요한 기본 자료형과 연산자를 정리해보았다.
다음에는 &lt;strong&gt;OOP&lt;/strong&gt;, &lt;strong&gt;비동기처리&lt;/strong&gt; 에 대해서 정리해보려한다.
&lt;!--stackedit_data:
eyJoaXN0b3J5IjpbLTE1MDQ0MDI4MCwtMzE5OTM0NzA0LC0xOT
kwNjY3OTMwLDEwMzgwODgwLC0xMjk5NzY0NjEyLC00NTQ0Mzk5
NTgsLTEyNTAwNTI0ODYsMTQ5MDA0NzIwNl19
--&gt;&lt;/p&gt;
</description>
        <pubDate>Wed, 23 Mar 2022 00:00:00 +0000</pubDate>
        <link>http://gogoJH.github.io/2022/03/23/TIL-Dart-%EC%9E%90%EB%A3%8C%ED%98%95-%EC%97%B0%EC%82%B0%EC%9E%90/</link>
        <guid isPermaLink="true">http://gogoJH.github.io/2022/03/23/TIL-Dart-%EC%9E%90%EB%A3%8C%ED%98%95-%EC%97%B0%EC%82%B0%EC%9E%90/</guid>
        
        <category>개발일기</category>
        
        <category>JS</category>
        
        <category>TIL</category>
        
        
      </item>
    
      <item>
        <title>2022.03.21 Dart and Flutter</title>
        <description>&lt;h1 id=&quot;새언어-dart-공부-시작&quot;&gt;새언어 Dart 공부 시작.&lt;/h1&gt;

&lt;p&gt;그동안은 회사에서의 프로젝트 일정을 쳐낸다고 관심있었던 &lt;strong&gt;Flutter&lt;/strong&gt;를 접해볼 
기회가 없었다.
시간도 생겼고 일을 하지 못하는 동안 엄청나게 발전 및 인기도가 생긴 플러터를 배워보고 작은 스몰 프로젝트도 진행해볼 생각이다.&lt;/p&gt;

&lt;h3 id=&quot;flutter&quot;&gt;Flutter&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://ichi.pro/assets/images/max/724/0*g9h3ryw801Lx6Lzu&quot; alt=&quot;stars 비교&quot; /&gt;
&lt;strong&gt;&lt;em&gt;Flutter&lt;/em&gt;&lt;/strong&gt; 는 그래프에서 봐도 알겠지만 벌써 리액트 네이티브를 넘어선 인기를 보여주고 있다.&lt;/p&gt;

&lt;p&gt;2015년에 나와서 ios와 안드로이드앱을 자바스크립트만 가지고 만들 수 있다는 이점을 가지고 폭발적으로 수요가 발생했던 리액트 네이브트는 아이디어 자체는 굉장히 좋았지만 막상 앱을 만들어서 빌드해보면 항상 두가지 플랫폼에서 정상 작동하는지 &lt;strong&gt;&lt;em&gt;디버깅&lt;/em&gt;&lt;/strong&gt; 해야만 했다.&lt;/p&gt;

&lt;p&gt;버튼을 만든다고 하면 ios와 안드로이드 버튼은 여러면에서 다르기 때문에 안드로이드에서  잘 작동 되는 버튼이 ios에선 안되는 일이 허다했었다. 오픈 라이브러리를 사용할 때도 한쪽만 지원 된다든가 지원 기기 os 버전에 따라서 여러 문제점들을 야기했던 것으로 기억한다.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSmt5COK8kAoQFSW7exx1-LBfSXR0XFyCkZ-w&amp;amp;usqp=CAU&quot; alt=&quot;&quot; /&gt;
&lt;strong&gt;&lt;em&gt;Flutter 2.0&lt;/em&gt;&lt;/strong&gt; 이 출시 되었을 때 너무 좋다는 개발 지인들의 이야기를 듣게 되었는데 리액트네이티브나 Flutter 나 뭐가 다르겠어라고 생각했었다.&lt;/p&gt;

&lt;p&gt;근데 막상 공부를 하다보니 많은 것이 다르고 베이스 언어인 &lt;strong&gt;Dart&lt;/strong&gt;가 OOP 구현 편의성이나 직관성이 너무 좋아서 오 좋은데 하고 계속 빠져들고 있는거 같다.&lt;/p&gt;

&lt;p&gt;그리고 뭐니뭐니 해도 한가지 코드로 웹앱 안드로이드 ios 까지 별도의 디버깅이 필요치 않을 만큼의 호환성은 리액트 네이티브로 앱을 만들때의 스트레스가 1 도 없었다.&lt;/p&gt;

&lt;p&gt;아직 심도 있는 공부를 해보진 않았지만 차츰차츰 공부 하면서 공부한 내용을 정리해보려한다.
&lt;!--stackedit_data:
eyJoaXN0b3J5IjpbLTI3NTQ0NzQ0OSwxMzExNjE3NDE3LC0xNT
c3NTExNjE2LDIwOTk4NjQ0NDIsLTIwNjI4NTU5NTUsMzAyOTg0
MzIsMTAwODA1NzY1Miw2NTQ2MjUwNjRdfQ==
--&gt;&lt;/p&gt;
</description>
        <pubDate>Mon, 21 Mar 2022 00:00:00 +0000</pubDate>
        <link>http://gogoJH.github.io/2022/03/21/TIL-Dart-and-flutter/</link>
        <guid isPermaLink="true">http://gogoJH.github.io/2022/03/21/TIL-Dart-and-flutter/</guid>
        
        <category>개발일기</category>
        
        <category>JS</category>
        
        <category>TIL</category>
        
        
      </item>
    
      <item>
        <title>2022.03.19 오랜 휴식 뒤에 다시 시작</title>
        <description>&lt;h1 id=&quot;어두운-터널에-갇혀있던-느낌이다&quot;&gt;어두운 터널에 갇혀있던 느낌이다.&lt;/h1&gt;

&lt;p&gt;이 개발 일기를 시작한게 2019년이고 굉장히 오랜 시간이 지나 다시 쓰게 된다.&lt;/p&gt;

&lt;p&gt;새로운 첫 걸음이란 글을 쓴지도 2년이 되어간다.&lt;/p&gt;

&lt;p&gt;회사에 취직하고 얼마 지나지 않아 코로나가 굉장히 심각한 단계까지 올라갔었다.&lt;/p&gt;

&lt;p&gt;내 동생은 술집을 운영하고 있었는데 코로나에 직격탄을 맞았고, 그로 인해 정말 많은 일들이 있었다.&lt;/p&gt;

&lt;p&gt;지금은 정리 되었지만 다시는 그 때로 돌아가고 싶지 않을만큼 가족과의 아픈 기억이다.&lt;/p&gt;

&lt;p&gt;정신적으로도 굉장히 힘들었어서 회사가 끝나고나면 이곳저곳에 불려다니기 바빴다.&lt;/p&gt;

&lt;p&gt;이제는 정말 다시 일에만 집중하고 싶어서 다시금 개발일기를 써보려한다.&lt;/p&gt;

&lt;h2 id=&quot;새-회사에서-배우고-느낀-것들&quot;&gt;새 회사에서 배우고 느낀 것들.&lt;/h2&gt;

&lt;p&gt;그동안 새 회사에서 좋은 개발 환경과 좋은 사람들 곁에서 많은 것을 배웠고 팀이 원하는 커뮤니케이션이 무엇인지 새로 알게 되었다.&lt;/p&gt;

&lt;p&gt;난 사람들과 대화하길 좋아하고 그만큼 소통도 잘하는 사람일 것이다라고 생각했는데 회사에서 혹은 팀에서 말하는 좋은 커뮤니케이션은&lt;/p&gt;

&lt;p&gt;좀 더 많은 것을 비즈니스적으로 생각하게 하였고, 개발만 잘하고 사람들과 잘 지내면 되겠지 생각했던 내 생각이 매우 간단한 생각 이였음을 느끼게 되었다.&lt;/p&gt;

&lt;p&gt;이 내용에 대해선 ppt를 만들어 발표도 했었고, 좋은 내용이 있어 공유한다.
&lt;!--stackedit_data:
eyJoaXN0b3J5IjpbLTY3ODM1OTc1LC0xMDg2Nzk5MjMzLDEzMT
A4MTgwMF19
--&gt;&lt;/p&gt;
</description>
        <pubDate>Sat, 19 Mar 2022 00:00:00 +0000</pubDate>
        <link>http://gogoJH.github.io/2022/03/19/TIL-%EC%98%A4%EB%9E%9C-%ED%9C%B4%EC%8B%9D-%EB%92%A4-%EC%8B%9C%EC%9E%91/</link>
        <guid isPermaLink="true">http://gogoJH.github.io/2022/03/19/TIL-%EC%98%A4%EB%9E%9C-%ED%9C%B4%EC%8B%9D-%EB%92%A4-%EC%8B%9C%EC%9E%91/</guid>
        
        <category>개발일기</category>
        
        <category>JS</category>
        
        <category>TIL</category>
        
        
      </item>
    
      <item>
        <title>2020.04.22 Copl 에서 새로운 시작</title>
        <description>&lt;h1 id=&quot;새로운-회사에서-첫걸음-&quot;&gt;새로운 회사에서 첫걸음 !&lt;/h1&gt;
&lt;blockquote&gt;
  &lt;p&gt;모자람을 채우니 발걸음이 가볍다.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;신입인데 다 나한테하라고 하면 어떻게  !!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;첫 회사를 경험 했을 때 되기만 하면 된다는 막무가내 코딩..
엄청난 레거시 코드(리팩토링할 생각 없음 .. ) 
이슈 쉐어 등 아무것도 되지 않았고 리뷰는 당연히 …&lt;/p&gt;

&lt;p&gt;개발자로 처음 취직을 하고 나면 자연스레 사회적 &lt;strong&gt;&lt;em&gt;약자 프레임(?)&lt;/em&gt;&lt;/strong&gt; 이 뇌를 지배하고 능동적인 사고는 정지하기 마련이다. 누군가 도와줬으면 하는 &lt;strong&gt;&lt;em&gt;거지근성&lt;/em&gt;&lt;/strong&gt; 이 스물스물 …. 신입 개발자가 버티기 힘든 이유도 위에 이유가 한 몫 할거라고 생각한다. 
만약 누군가 이 글을 읽게 된다면 .. 위에 두가지는 꼭 버리고 시작하기를 ..
좋은 회사라면 신입 개발자 인큐베이팅에 많은 노력과 배려를 해줄거라 ;;?
생각하니 좋은 회사에 갈 수 있도록 많은 노력을 !&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;개발자로써 커리어를 어떻게 쌓아야하는지에 대해서 많은 생각을 했었다.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;첫 회사는 나에게 금전적으로 정말 많은 것을 해주었고 그만큼 책임져야할 
스코프 자체도 굉장히 광범위했다.&lt;/p&gt;

&lt;p&gt;사람마다 케바케 겠지만 처음에 큰 부분들을 뚝뚝 잘라 던져주시니 내가 결정하고 내가 프로젝트 전반을 관리하게 되니 좋았다. 쓰고 싶은 라이브러리를 맘껏 쓰고 하지만 항상 그렇듯 자유에는 책임이 따른다.&lt;/p&gt;

&lt;p&gt;작은 앱 개발 프로젝트가 할당 되었을때 경험이 없던 나는 라이브러리 이슈들을 신경 쓰지 않고 쓰기 편하고 커스텀이 되도록이면 자유로울 수 있는 라이브러리들을 선별해 개발에 착수 하였고 안드로이드에서는 제법 그럴싸하게 작동되는 것을 확인했었다.
하지만 ios에서 테스트를 시작하자마자 여기저기 아주 &lt;strong&gt;뻥뻥&lt;/strong&gt; 버그들이 나오는걸
보면서 … 할 말을 잃었다는 ..&lt;/p&gt;

&lt;p&gt;경험이 없었다 라는 변명은 현업에서 통하지 않으니 .. 그 후에 경험 없음을 생각해 모자람을 채우려 계속 노력했지만 .. 항상 모자람이 생길 수 밖에 없더라..&lt;/p&gt;

&lt;p&gt;그리고 ! 그 모자람을 매우 채울 수 있는 &lt;strong&gt;Pocl&lt;/strong&gt;이라는 회사에 재취직했다!&lt;/p&gt;

&lt;!--stackedit_data:
eyJoaXN0b3J5IjpbMTc3NTU5NzYxOSwzMDQ1ODU1ODZdfQ==
--&gt;
</description>
        <pubDate>Wed, 22 Apr 2020 00:00:00 +0000</pubDate>
        <link>http://gogoJH.github.io/2020/04/22/TIL-%EC%83%88%EB%A1%9C%EC%9A%B4-%EC%B2%AB%EA%B1%B8%EC%9D%8C/</link>
        <guid isPermaLink="true">http://gogoJH.github.io/2020/04/22/TIL-%EC%83%88%EB%A1%9C%EC%9A%B4-%EC%B2%AB%EA%B1%B8%EC%9D%8C/</guid>
        
        <category>개발일기</category>
        
        <category>JS</category>
        
        <category>TIL</category>
        
        
      </item>
    
  </channel>
</rss>
