<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>sojng.log</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Fri, 21 Jun 2024 10:12:14 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>sojng.log</title>
            <url>https://images.velog.io/images/i-soj-ng/profile/9dfd7135-6e06-4322-af12-15696768ca2d/KakaoTalk_Photo_2021-12-30-00-20-25.jpeg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. sojng.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/i-soj-ng" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[2024 국토교통기술대전 후기]]></title>
            <link>https://velog.io/@i-soj-ng/2024-%EA%B5%AD%ED%86%A0%EA%B5%90%ED%86%B5%EA%B8%B0%EC%88%A0%EB%8C%80%EC%A0%84-%ED%9B%84%EA%B8%B0</link>
            <guid>https://velog.io/@i-soj-ng/2024-%EA%B5%AD%ED%86%A0%EA%B5%90%ED%86%B5%EA%B8%B0%EC%88%A0%EB%8C%80%EC%A0%84-%ED%9B%84%EA%B8%B0</guid>
            <pubDate>Fri, 21 Jun 2024 10:12:14 GMT</pubDate>
            <description><![CDATA[<h3 id="2024-국토교통기술대전-방문-후기">2024 국토교통기술대전 방문 후기</h3>
<p>2024년 5월 15일부터 17일까지 코엑스에서 열린 2024 국토교통기술대전에 방문하였습니다.
다양한 국토교통기술 및 자율주행 기술들을 만나볼 수 있었습니다.
<img src="https://velog.velcdn.com/images/i-soj-ng/post/a13b5ec2-03fc-4c42-ab58-0eaf243c941b/image.png" alt="">
<img src="https://velog.velcdn.com/images/i-soj-ng/post/7d91fc63-7d28-40cf-bfea-5d4e3a870ceb/image.png" alt="">
자율주행기술개발혁신사업단 부스에서는 현재 시범운행 중인 자율주행자동차를 실제로 볼 수 있었습니다. 평소 자율주행자동차를 실제로 볼 기회가 많지 않은데, 이번 기회를 통해 일반 차량과 자율주행차량이 어떠한 차이가 있는지에 대해 확인해 볼 수 있었습니다. 또한, 자율주행자동차를 시행함에 있어 불안감을 가지는 사람들이 많은데, 이러한 기술적 문제들을 극복하기 위한 많은 노력을 볼 수 있었습니다.</p>
<p><img src="https://velog.velcdn.com/images/i-soj-ng/post/68df6140-234f-4860-94bc-eb731ba39030/image.png" alt="">
한국교통대학교에서는 다양한 교통 환경에서 자율주행차량이 겪는 단독인지 한계를 극복할 수 있도록 도와주는 정보 공유 시스템이 개발되고 있었습니다. 실제 도로에 여러 센서들을 설치하여 이 센서들이 인식한 정보를 자율주행차량으로 전달해주는 시스템입니다. 자율주행차량이 인식하지 못하는 곳의 정보를 제공하여 자율주행차량의 안정성을 높여줄 수 있을 것이라 생각되었습니다.</p>
<p><img src="https://velog.velcdn.com/images/i-soj-ng/post/247a91f2-a8ee-446d-8158-55646de65824/image.png" alt="">
과학 실험 컨텐츠로 유명한 유튜브 채널 &#39;긱블&#39; 또한 만나볼 수 있었습니다. &quot;소소한 도전을 계속하는 이유&quot;라는 뜻깊은 주제로 강연을 진행하고 계셨습니다. 시간상 강연을 듣지는 못하였으나, 스쳐지나가며 보았음에도 인상적인 내용 전달력을 가진 것 같아 대단하다고 생각되었습니다.</p>
<p>이외에도 센서를 통해 사물을 판단하는 인공지능 모델들과 드론 기술 등을 볼 수 있었습니다. 항상 웹 기술에 대해서만 공부하다가, 물리적인 기술이 융합된 서비스들을 보니 시야가 넓어지고, 더 많은 분야에 흥미를 가지게 된 것 같습니다. 내가 이런 분야에도 기여를 할 수 있으면 좋겠다는 생각이 들었고, 앞으로의 제 진로에 대해서도 고민하는 계기가 되었습니다. 국토교통기술대전은 정말 유익한 전시회였고, 앞으로 더욱 다양한 분야의 기술들을 탐구해야겠다는 다짐을 하게 되었습니다.</p>
<p>또한, 빠른 모빌리티 기술 발전을 통해 자율주행차량의 보안과 안전 문제를 해결하여 완전한 단계의 자율주행자동차가 상용되는 등의 혁신이 일어나기를 바라게 되었습니다. 저 또한 한국의 기술 발전을 위해 노력할 것입니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[AI EXPO KOREA 2024 후기]]></title>
            <link>https://velog.io/@i-soj-ng/AI-EXPO-KOREA-2024-%ED%9B%84%EA%B8%B0</link>
            <guid>https://velog.io/@i-soj-ng/AI-EXPO-KOREA-2024-%ED%9B%84%EA%B8%B0</guid>
            <pubDate>Fri, 21 Jun 2024 09:42:51 GMT</pubDate>
            <description><![CDATA[<h3 id="ai-expo-korea-2024-방문">AI EXPO KOREA 2024 방문</h3>
<p><img src="https://velog.velcdn.com/images/i-soj-ng/post/da2e7734-e737-47c4-8a59-4ed935791b37/image.png" alt=""></p>
<p>코엑스에서 열린 <strong>AI EXPO KOREA</strong> 전시회에 다녀왔습니다. 저는 AI 분야를 심도있게 공부한 경험이 없었기에 전시 내용을 잘 이해할 수 있을지에 대한 걱정을 안고 방문하였습니다. 그러나 제 걱정이 무색하게도, 컴퓨터공학 관련 지식이 아예 없는 사람들 또한 흥미를 보일만한 내용들이 많았습니다.
<img src="https://velog.velcdn.com/images/i-soj-ng/post/2e5938e7-7ebf-4b4d-9ffa-26e55f235af6/image.png" alt="">
  <img src="https://velog.velcdn.com/images/i-soj-ng/post/a2df0c21-f596-496d-8017-21f2571450bf/image.png"></p>
<img src="https://velog.velcdn.com/images/i-soj-ng/post/f112f0a1-a945-4cb9-a165-880ceb8e9ed3/image.png">


<p>정말 많은 서비스들이 있었으나 이중에서 가장 흥미로웠던 서비스는 <strong>페르소나 AI</strong>의 서비스였습니다. 사람이 스케치한 것을 기반으로 멋진 그림을 생성해주는 서비스입니다. 텍스트로 구성된 프롬프트가 아닌, 스케치를 기반으로 이미지를 생성해내는 점이 신선하였습니다. 또, 한창 전공 수업으로 그래픽스를 공부하고 있던 터라, 생성된 이미지의 빛과 질감 표현 또한 흥미로운 관찰 포인트였습니다. </p>
<p>이외에도 다양한 AI 서비스들이 있었고, 이에 대한 강연들 또한 이루어지고 있었습니다. 이번 AI EXPO KOREA를 통해 이전에 비해 인공지능 기술이 정말 많이 발전했음을 상기하게 되었고, 이 인공지능 기술이 현대 사회에 매우 깊고 광범위하게 영향을 미치고 있다는 점을 깨닫게 되었습니다. 또한, 앞으로 기술이 더욱 발전함에 따라 인공지능이 어떠한 일까지 대체할 수 있을지에 대해 생각하고 기대하게 되었습니다. 저 또한 빨리 앞으로의 IT 기술 발전에 보탬이 되고 싶다는 바램이 들었습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[3/21 현대차 피플앤컬처팀 우윤정 책임님 강의]]></title>
            <link>https://velog.io/@i-soj-ng/321-%ED%98%84%EB%8C%80%EC%B0%A8-%ED%94%BC%ED%94%8C%EC%95%A4%EC%BB%AC%EC%B2%98%ED%8C%80-%EC%9A%B0%EC%9C%A4%EC%A0%95-%EC%B1%85%EC%9E%84%EB%8B%98-%EA%B0%95%EC%9D%98</link>
            <guid>https://velog.io/@i-soj-ng/321-%ED%98%84%EB%8C%80%EC%B0%A8-%ED%94%BC%ED%94%8C%EC%95%A4%EC%BB%AC%EC%B2%98%ED%8C%80-%EC%9A%B0%EC%9C%A4%EC%A0%95-%EC%B1%85%EC%9E%84%EB%8B%98-%EA%B0%95%EC%9D%98</guid>
            <pubDate>Fri, 21 Jun 2024 04:01:18 GMT</pubDate>
            <description><![CDATA[<p>국민대학교 산업체특강 강의에서 현대차 피플앤컬처팀에서 근무하고 계시는 우윤정 책임님의 강의를 들었다. 우윤정 책임님께서는 현대자동차 ICT본부에 대한 소개와, 이 조직의 개발 문화에 대해서 소개해 주셨다.</p>
<p>현재 현대자동차 ICT본부에는 개발 및 데이터, 인프라, 보안, 머신러닝, PM 등 폭넓은 분야의 직무가 있다고 하셨다. 개발팀, 인프라팀, 보안팀 등 분야별로 따로 조직이 구성된 경우를 많이 보았어서 신기하였고, 한 조직에 다양한 분야들이 함께 있으면 서로 배울 점도 많고 협업하기도 수월할 것이라 생각이 들었다.</p>
<p>ICT본부의 개발 프로세스는 워터폴 방식과 애자일 방식을 혼합하여 사업계획 -&gt; 기획 -&gt; 설계 -&gt; 구현 -&gt; 테스트 -&gt; 운영의 과정으로 프로젝트를 진행하고 있다고 하였다. 요즘 스타트업에서는 대부분 애자일 방식을 사용하는 곳이 많은데, 이 두 가지의 방식을 혼합해서 사용한다는 점도 흥미로웠다.
<img src="https://velog.velcdn.com/images/i-soj-ng/post/ff77f3a2-742b-426b-ab02-7d384616688a/image.png" alt="">
<img src="https://velog.velcdn.com/images/i-soj-ng/post/9cf75762-a744-4e62-88a5-50dda45c4464/image.png" alt=""></p>
<p>또한, 팀원들간의 회고도 활발하게 이루어진다고 하였다. 회의를 시작할 때 &quot;오늘 당신의 감정 온도가 몇 도인가요?&quot;와 같은 질문을 통해 상대방의 감정 온도를 체크한다고 하셨다. 이런 회고 과정을 통해 자신의 상황을 파악하고 고마운 점이나 아쉬운 점, 개선 점을 공유하고 있다고 하셨다.</p>
<p>강의를 통해 대기업에서 사용하고 있는 개발 문화와 기술 스택, 협업 툴 등에 대해서 알게 되었고, 스타트업과는 어떤 차이가 있는지 생각해보게 되었다. 대기업인만큼 역시 개발 문화나 프로세스가 잘 짜여져 있다는 생각이 들었다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[npm install peer dependency 오류 해결]]></title>
            <link>https://velog.io/@i-soj-ng/npm-install-peer-dependency-%EC%98%A4%EB%A5%98-%ED%95%B4%EA%B2%B0</link>
            <guid>https://velog.io/@i-soj-ng/npm-install-peer-dependency-%EC%98%A4%EB%A5%98-%ED%95%B4%EA%B2%B0</guid>
            <pubDate>Mon, 01 Aug 2022 11:09:11 GMT</pubDate>
            <description><![CDATA[<p>npm install 명령어를 통해 모듈을 설치할 때, 간혹 아래와 같이 peer dependency 오류가 발생하는 경우가 있다.</p>
<pre><code>npm ERR! code ERESOLVE
npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR! 
npm ERR! While resolving: chart-samples@0.1.0
npm ERR! Found: react@18.2.0
npm ERR! node_modules/react
npm ERR!   react@&quot;^18.2.0&quot; from the root project
npm ERR! 
npm ERR! Could not resolve dependency:
npm ERR! peer react@&quot;&gt;= 16.14.0 &lt; 18.0.0&quot; from @nivo/core@0.79.0
npm ERR! node_modules/@nivo/core
npm ERR!   @nivo/core@&quot;^0.79.0&quot; from the root project
npm ERR!   peer @nivo/core@&quot;0.79.0&quot; from @nivo/calendar@0.79.1
npm ERR!   node_modules/@nivo/calendar
npm ERR!     @nivo/calendar@&quot;^0.79.1&quot; from the root project
npm ERR!   1 more (@nivo/tooltip)
</code></pre><p>이는 npm 7 버전에서 발생하는 오류인데, 모듈에서 요구하는 react의 버전과 현재 내 프로젝트의 react 버전이 맞지 않아서 발생한다.</p>
<p>처음에는 그냥 npm install &#39;모듈명&#39; 명령어 뒤에 --force 를 붙여서 충돌을 우회하거나, --legacy-peer-deps를 붙여서 peer dependencies를 무시하고 설치하도록 했다. 그러나 모듈이 제대로 실행이 되지 않는 경우가 있었고, 결국 아래의 방법을 통해서 react의 버전을 맞춰주었다.</p>
<h2 id="1-라이브러리-모듈-삭제">1. 라이브러리 모듈 삭제</h2>
<ul>
<li>package-lock.json 파일 삭제</li>
<li>node_modules 폴더 삭제</li>
</ul>
<h2 id="2-packagejson-파일-수정">2. package.json 파일 수정</h2>
<p>나는 리액트 18.2.0 버전을 17.0.2 버전으로 다운그레이드했다.
여기서, react와 react-dom의 버전이 일치해야 한다.
또한, React 18 미만의 버전은 test library의 버전도 다운그레이드해야 한다.
React 17 버전은 testing-library 13 버전이 호환되지 않기 때문에 @testing-library/react와 @testing-library/user-event의 버전을 12.0.0 으로 맞춰주었다.</p>
<pre><code>&quot;dependencies&quot;: {
    &quot;@testing-library/jest-dom&quot;: &quot;^5.16.4&quot;,
    &quot;@testing-library/react&quot;: &quot;^12.0.0&quot;,
    &quot;@testing-library/user-event&quot;: &quot;^12.0.0&quot;,
    &quot;react&quot;: &quot;^17.0.2&quot;,
    &quot;react-dom&quot;: &quot;^17.0.2&quot;,
    &quot;react-scripts&quot;: &quot;5.0.1&quot;,</code></pre><h2 id="3-모듈-재설치">3. 모듈 재설치</h2>
<pre><code>npm install</code></pre><p>에러 발생없이 모듈이 모두 정상적으로 설치된다!</p>
<h2 id="-버전-변경다운그레이드-후-발생하는-오류-해결법">++ 버전 변경(다운그레이드) 후 발생하는 오류 해결법</h2>
<h3 id="1-react-domclient-에러">1. react-dom/client 에러</h3>
<p>버전 변경 후 실행시, 아래와 같은 에러가 발생했다.</p>
<pre><code>Compiled with problems:X

ERROR in ./src/index.js 5:0-40

Module not found: Error: Can&#39;t resolve &#39;react-dom/client&#39; in &#39;소스파일경로&#39;</code></pre><p>리액트 버전이 달라져서 생긴 에러로, index.js 파일에서 ReactDOM을 import하는 경로를 &#39;react-dom/client&#39;가 아닌 &#39;react-dom&#39;으로 변경해주면 된다.
<img src="https://velog.velcdn.com/images/i-soj-ng/post/d5caf1f2-2f95-47b8-8f7e-4e4a1229e583/image.png" alt=""></p>
<h3 id="2-createroot-is-not-a-function-에러">2. createRoot is not a function 에러</h3>
<p>이번에는 실행은 되었으나, 화면이 나오지 않았다.
콘솔을 확인해보니 아래와 같은 에러메세지가 떴다.
<img src="https://velog.velcdn.com/images/i-soj-ng/post/5ad7a75e-5ead-464b-a583-d28240d06a5b/image.png" alt=""></p>
<p>이 또한 리액트 버전을 다운그레이드시켜서 발생하는 에러로, 이전 버전의 코드로 변경해주면 해결이 된다.
<img src="https://velog.velcdn.com/images/i-soj-ng/post/89deae64-f02e-413c-9fd6-26dcc945597c/image.png" alt="">
위 index.js의 코드를 아래 코드로 변경해주면 된다.</p>
<pre><code>ReactDOM.render(
    &lt;React.StrictMode&gt;
        &lt;App /&gt;
    &lt;/React.StrictMode&gt;,
    document.getElementById(&#39;root&#39;)
);</code></pre><p>.
.
.
.
.
끝!!!</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Flutter/플러터] 기본 클래스 정리]]></title>
            <link>https://velog.io/@i-soj-ng/Flutter%ED%94%8C%EB%9F%AC%ED%84%B0-%EA%B8%B0%EB%B3%B8-%ED%81%B4%EB%9E%98%EC%8A%A4-%EC%A0%95%EB%A6%AC</link>
            <guid>https://velog.io/@i-soj-ng/Flutter%ED%94%8C%EB%9F%AC%ED%84%B0-%EA%B8%B0%EB%B3%B8-%ED%81%B4%EB%9E%98%EC%8A%A4-%EC%A0%95%EB%A6%AC</guid>
            <pubDate>Sat, 22 Jan 2022 14:07:26 GMT</pubDate>
            <description><![CDATA[<h1 id="플러터-앱-구조--클래스">플러터 앱 구조  &lt;클래스&gt;</h1>
<h2 id="statelesswidget-클래스">StatelessWidget 클래스</h2>
<p>상태(State)를 가지지 않는 위젯을 구성하는 기본 클래스. 상태를 가지지 않는다는 것은 한 번 그려진 후 다시 그리지 않는 경우이다.
StatelessWidget 클래스는 build() 메서드를 가지고 있다. build() 메서드는 위젯을 생성할 때 호출되는데, 실제로 화면에 그릴 위젯을 작성해 반환한다.</p>
<h2 id="materialapp-클래스">MaterialApp 클래스</h2>
<pre><code>return MaterialApp(
    title: &#39;Flutter Demo&#39;,
    theme: ThemeData(
        primarySwatch: Colors.blue,
    ),
    home: MyHomePage(title: &#39;Flutter Demo Home Page&#39;),
);</code></pre><p>title, theme, home 프로퍼티를 설정하여 위젯의 속성을 표현한다.</p>
<blockquote>
<p>title: 제목
theme: 테마
home: 실제로 앱이 표시하는 위젯</p>
</blockquote>
<h2 id="statefulwidget-클래스">StatefulWidget 클래스</h2>
<p>상태(State)가 있는 위젯을 정의할 때 사용하는 클래스.</p>
<pre><code>class MyHomePage extends Statefulwidget {
    MyHomePage({Key key, this.title}) : super(key: key); //(1)

    final String title;

    @override
    _MyHomePageState createState() =&gt; _MyHomePageState(); //(2)
}

class _MyHomePageState extends State&lt;MyHomePage&gt; {
    int _counter = 0; //변경 가능한 상태 (3)

    ...

    @override
    Widget build(BuildContext context) { //(4)
        return Scaffold(...)
    }
}</code></pre><blockquote>
<p>(1): MyHomePage 클래스의 생성자는 key와 title 프로퍼티를 옵션으로 받아서 super 키워드로 부모 클래스의 생성자에 key를 전달한다.
(2): 상속받은 createState() 메서드를 재정의하여 _MyHomePageState 클래스의 인스턴스를 반환한다. StatefulWidget이 생성될 때 한 번만 실행된다.
(3): State 클래스를 상속받은 클래스를 상태 클래스라고 한다. 상태 클래스는 변경 가능한 상태를 프로퍼티 변수로 표현한다.
(4): _MyHomePageState 클래스의 상태에 따라 화면에 그려질 코드를 작성한다.</p>
</blockquote>
<h2 id="scaffold-클래스">Scaffold 클래스</h2>
<p>머티리얼 디자인 앱을 만들 때 뼈대가 되는 위젯.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Python/파이썬] sys.stdin.readline()]]></title>
            <link>https://velog.io/@i-soj-ng/Python%ED%8C%8C%EC%9D%B4%EC%8D%AC-sys.stdin.readline</link>
            <guid>https://velog.io/@i-soj-ng/Python%ED%8C%8C%EC%9D%B4%EC%8D%AC-sys.stdin.readline</guid>
            <pubDate>Wed, 29 Dec 2021 16:41:02 GMT</pubDate>
            <description><![CDATA[<h1 id="sysstdinreadline">sys.stdin.readline</h1>
<p>알고리즘 문제를 풀 때, <code>input()</code>을 사용해 입력을 받으면 시간 초과가 날 때가 있다. 이때, <code>input()</code> 대신에 <code>sys.stdin.readline()</code>을 사용하면 더욱 빠른 속도로 입력을 받을 수 있다.</p>
<h3 id="사용방법">사용방법</h3>
<h4 id="1-문자열-입력">1. 문자열 입력</h4>
<pre><code>import sys

msg = sys.stdin.readline()
print(message)</code></pre><p><code>sys.stdin.readline()</code>은 기본 return값이 문자열이다.
또한, 아래의 출력 결과를 확인해보면 개행문자(\n)를 포함하고 있다는 것을 알 수 있다.
<img src="https://images.velog.io/images/i-soj-ng/post/14776b27-5834-4847-a094-ff883b00901c/image.png" alt=""></p>
<h4 id="2-정수-입력">2. 정수 입력</h4>
<pre><code>import sys

num = int(sys.stdin.readline())</code></pre><p><code>sys.stdin.readline()</code>은 기본 return값이 문자열이기 때문에 int로 형변환을 시켜주어야 한다.</p>
<h2 id="input과-sysstdinreadline의-차이점">input과 sys.stdin.readline의 차이점</h2>
<p><code>input()</code>이 <code>sys.stdin.readline()</code>보다 느린 이유</p>
<blockquote>
<ol>
<li>input은 <code>input(&quot;문자를 입력하세요: &quot;)</code>처럼 prompt message를 인자로 받을 수 있기 때문에, 이 prompt message를 출력한 후에 입력을 받는다.</li>
<li>받은 입력값에서 개행 문자(\n)를 제거한 후에 리턴한다.</li>
</ol>
</blockquote>
<p>이와 달리 <code>sys.stdin.readline()</code>은 prompt message를 인자로 받지 않고, 개행 문자 또한 포함해서 리턴하기 때문에 <code>input()</code>보다 속도가 빠르다.</p>
]]></description>
        </item>
    </channel>
</rss>