<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>hoya.log</title>
        <link>https://velog.io/</link>
        <description>성장 += 지식</description>
        <lastBuildDate>Mon, 15 Sep 2025 00:05:32 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>hoya.log</title>
            <url>https://velog.velcdn.com/images/jh-shi-n/profile/37c7e562-9da6-4773-ac3b-40eaa5161b4c/social_profile.jpeg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. hoya.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/jh-shi-n" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[파이어베이스 프로젝트 생성]]></title>
            <link>https://velog.io/@jh-shi-n/%ED%8C%8C%EC%9D%B4%EC%96%B4%EB%B2%A0%EC%9D%B4%EC%8A%A4-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%83%9D%EC%84%B1-%EB%B0%8F-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EA%B5%AC%EC%B6%95</link>
            <guid>https://velog.io/@jh-shi-n/%ED%8C%8C%EC%9D%B4%EC%96%B4%EB%B2%A0%EC%9D%B4%EC%8A%A4-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%83%9D%EC%84%B1-%EB%B0%8F-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EA%B5%AC%EC%B6%95</guid>
            <pubDate>Mon, 15 Sep 2025 00:05:32 GMT</pubDate>
            <description><![CDATA[<h1 id="firebase란">Firebase란?</h1>
<p><img src="https://velog.velcdn.com/images/jh-shi-n/post/f65c9b12-66b2-45a8-b9a4-5c25f4d76ba5/image.png" alt=""></p>
<ul>
<li>Database, Auth, 스토리지 및 다양한 기능을 제공하는 Google의 앱 개발 플랫폼</li>
<li>개발자가 서버 백엔드 구축 없이도 모바일, 웹, Flutter 앱을 빠르게 개발하고 확장할 수 있도록 도울 수 있는 기능</li>
</ul>
<p><a href="https://console.firebase.google.com/u/0/?hl=ko">https://console.firebase.google.com/u/0/?hl=ko</a></p>
<hr>
<h1 id="프로젝트-생성">프로젝트 생성</h1>
<p><img src="https://velog.velcdn.com/images/jh-shi-n/post/f7afcf84-f399-4fb1-8eb8-90020d41c370/image.png" alt="">
<img src="https://velog.velcdn.com/images/jh-shi-n/post/e98f5b60-aa51-49f8-99a4-457aea2061e0/image.png" alt="">
-&gt; 계속 클릭 (이후 Gemini 사용 및 사용량 관련 동의 여부 진행)</p>
<p><img src="https://velog.velcdn.com/images/jh-shi-n/post/9cf32744-786b-496e-89fb-cef842f7453d/image.png" alt="">
-&gt; 앱 및 웹 애플리케이션의 사용자 동작 및 이벤트에 대한 데이터를 수집하고 분석하여 앱 또는 웹의 성능을 파악하고 개선하기 위한 <code>google 애널리틱스</code> 를 설정 후 프로젝트 만들기 진행</p>
<p><img src="https://velog.velcdn.com/images/jh-shi-n/post/5b66de19-2a85-448c-a3ad-254fd1018ad8/image.png" alt="">
-&gt; 프로젝트 생성 완료 후, 해당 프로젝트 대시보드 진입 가능</p>
<hr>
<h2 id="프로젝트-대시보드">프로젝트 대시보드</h2>
<p><img src="https://velog.velcdn.com/images/jh-shi-n/post/6f13e6e0-3085-44de-8b8f-b3eb09865ba4/image.png" alt=""></p>
<p>첫 생성이후 접속한 대시보드는 다음과 같음.</p>
<ul>
<li>좌측 사이드바 메뉴를 통해 필요한 기능들을 활용할 수 있음</li>
<li>프로젝트 첫 구축 시 요금제는 Spark (무료 요금제) 로, 일부 제한된 유료 서비스를 제공</li>
<li>필요에 따라 사용량만큼 과금이 이루어지는 Blaze (유료 요금제) 로 전환 가능</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[피그마 개념 및 기본 구성요소]]></title>
            <link>https://velog.io/@jh-shi-n/%ED%94%BC%EA%B7%B8%EB%A7%88-%EA%B0%9C%EB%85%90-%EB%B0%8F-%EA%B8%B0%EB%B3%B8-%EA%B5%AC%EC%84%B1%EC%9A%94%EC%86%8C</link>
            <guid>https://velog.io/@jh-shi-n/%ED%94%BC%EA%B7%B8%EB%A7%88-%EA%B0%9C%EB%85%90-%EB%B0%8F-%EA%B8%B0%EB%B3%B8-%EA%B5%AC%EC%84%B1%EC%9A%94%EC%86%8C</guid>
            <pubDate>Fri, 12 Sep 2025 04:45:24 GMT</pubDate>
            <description><![CDATA[<h2 id="피그마-figma">피그마 (Figma)</h2>
<ul>
<li>시제품 기획을 위한 협업 툴</li>
<li>디자이너, 개발자 외 관계자들이 모두 한 공간에서 작업할 수 있음</li>
<li>재사용 가능한 디자인 요소 활용 가능</li>
</ul>
<h2 id="구성요소">구성요소</h2>
<h3 id="컴포넌트">컴포넌트</h3>
<ul>
<li>재사용 가능한 디자인 요소</li>
<li>Main component (원본) - Instance (복제)<ul>
<li>원본의 변경사항 -&gt; 복제에 영향 O</li>
<li>복제의 변경사항 -&gt; 원본에 영항 X</li>
</ul>
</li>
<li>컴포넌트 별로 이름 규칙 명명 가능<ul>
<li>example) button/navy, button/yellow</li>
<li>Swap Instance 기능을 통해 동일 요소 디자인을 사전 지정한 규칙에 맞게 변경 가능</li>
</ul>
</li>
</ul>
<h3 id="스타일">스타일</h3>
<ul>
<li>재사용 가능한 &quot;색상, 스타일, 효과&quot; 요소</li>
</ul>
<h3 id="그리드">그리드</h3>
<ul>
<li>디자인 요소 배치를 위한 가이드라인</li>
<li>디자인 요소들이 동일 간격을 유지할 수 있도록 설정가능</li>
<li>종류 <ul>
<li>Grid (바둑판)</li>
<li>Columns (세로 마진)</li>
<li>Row (가로 마진)</li>
</ul>
</li>
<li>설정 파라미터 (Column, Row 기준)<ul>
<li>Count : 그리드 갯수</li>
<li>Margin : 그리드 외곽 (좌-우) 간격</li>
<li>Gutter : 그리드 개별간 간격</li>
</ul>
</li>
<li>Constraint<ul>
<li>그리드에 배치된 디자인 요소의 Position 설정</li>
</ul>
</li>
</ul>
<h3 id="오토-레이아웃">오토 레이아웃</h3>
<ul>
<li>디자인 요소들의 자동 정렬, 반응형으로 크기 조절 가능</li>
<li>hug content : 콘텐츠 크기에 따라 프레임/컴포넌트 자동 크기 조절</li>
<li>fixed size : 콘텐츠 크기에 상관없이 프레임/컴포넌트 크기 고정</li>
<li>fill container : 프레임/컴포넌트 크기 조절에 따라 콘텐츠 크기가 자동으로 조절</li>
</ul>
<hr>
<ul>
<li>참고자료<ul>
<li>유튜브 : 스태리빛나 유튜브 (<a href="https://www.youtube.com/watch?v=ASlOHtOps-s">https://www.youtube.com/watch?v=ASlOHtOps-s</a>)</li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[2024년 회고 기록]]></title>
            <link>https://velog.io/@jh-shi-n/2024%EB%85%84-%ED%9A%8C%EA%B3%A0-%EA%B8%B0%EB%A1%9D</link>
            <guid>https://velog.io/@jh-shi-n/2024%EB%85%84-%ED%9A%8C%EA%B3%A0-%EA%B8%B0%EB%A1%9D</guid>
            <pubDate>Mon, 30 Dec 2024 14:55:17 GMT</pubDate>
            <description><![CDATA[<p>벌써 2024년도 마지막 날이 다가오고 있다. 올해는 특히 개인적으로도, 사회적으로도 다사다난한 일들이 많았던 것처럼 느껴진 해였던 것 같다.
AI나 기술적인 면에서는 올해가 가장 스퍼트있게 발전해나간 해이지 않을까 싶었다. 새로 개발된 AI 기술을 구경하다가 다른 곳을 둘러보면 더 발전된 기술이 보이는 그런 느낌이랄까. 특히 생성형 AI를 탑재한 서비스들이 많아진지라 다양한 방향으로 만들어진 서비스들을 한번씩은 이용해본 것 같다.
아래 그림도 생성형 AI에 요청하여 만들어낸 그림인데, 초기 생성형 AI들 보다 좀 더 섬세하게 이미지들을 생성하는 것을 보고 상당히 놀랐던 것 같다.
<img src="https://velog.velcdn.com/images/jh-shi-n/post/ffdf2a7d-56c5-4aa3-a7e1-c858baf09540/image.png" alt=""></p>
<p>뭐 여튼, 마지막 날이 지나가기전 올해는 어떤 일이 있었는지 리와인드해보고자 한다.</p>
<blockquote>
<p>무슨 일이 있었을까?</p>
</blockquote>
<p>작년의 퇴사 이후로, 개인 사정으로 바로 이력서를 넣진 못한 상태였고, 코딩의 느낌(?) 도 약간 멀어져 가는 느낌이 들면서 공백기가 조금씩 길어지기 시작했다. 이에 따라 재활하는 겸, 팀으로 다시 한번 프로젝트를 진행해볼 겸, 인공지능 및 딥러닝 뿐만 아니라 엔지니어 방향으로도의 방향을 염두하여,<code>멋쟁이사자처럼</code>의 <code>AI웹서비스스쿨</code> 부트캠프를 수강하게 되었다. 데이터분석부터, 딥러닝 및 인공지능, 백엔드 및 프론트엔드 부분까지 전 과정을 한번에 짚을 수 있는 기회라 생각하여 선택하였던 것 같다. 
강의 자체는 백엔드, 프론트엔드 파트까지는 양질의 느낌을 받았지만, 인공지능 부분에서는 빠르게 스퍼트를 내서 진행된 것 같아 약간은 아쉬움이 있었다.</p>
<blockquote>
<p>프로젝트는?</p>
</blockquote>
<p>프로젝트는 총 4명의 팀으로 구성하여, 데이터 분석 및 서비스 제작 두개로 진행하였다. 실무나 프로젝트 경험이 있던건 나 포함 두명이고 나머지 두명은 이번 부트캠프로 처음 접한 케이스인 분들이었다.
조금씩 어려운 부분들이 있으실 경우 따라오실 수 있도록 하나하나 알려드렸던 것 같다.</p>
<h3 id="첫-번째로-데이터-분석-프로젝트-1달">첫 번째로 데이터 분석 프로젝트 1달</h3>
<p>데이터 분석의 주제는 1기 신도시 재건축 관련하여 다양한 정보들이 오간 10월에, 앞으로 1기 신도시의 투자 방향은 어떻게 진행하면 좋을까? 라는 생각에서 시작하였다. 그리서 최종적으로 </p>
<ul>
<li>내가 맡았던 부분은 <code>신도시 데이터 중 직주 근접성과 교통 관련 데이터, 상권별 위치정보 수집 및 전처리 후 분석 / 시각화</code>. 특히 직주 근접성의 경우에는 바로 수집할 수 있는 데이터는 아니고, 직선 거리를 기반으로 계산까지 해야됐던지라 조금이라도 실수가 있을까 걱정이 되긴 했다.</li>
<li>상권별 위치정보는 다양한 분야의 수치 데이터들을 수집하여, 전처리하는 과정에서 워낙 애먹긴했다. 국내 통계 데이터를 DB에서 엑셀형태로 다운받아와 전처리하였는데, 해마다 데이터 형태가 균일하지않고, 어느 분야는 합산, 어느 분야에서는 개별작성되어있는 등 뒤죽박죽이었던지라, Python을 활용한 일괄적인 처리가 불가능하였던 점이 까다로웠던 것 같다.</li>
</ul>
<p>그래도 데이터를 팀원분들과 한 파트씩 맡아서 전처리 후, 분석을 수행하였고 결과도 잘 마무리 지을 수 있었던 것 같다.</p>
<h3 id="두-번째로-웹-서비스-제작-프로젝트-1달">두 번째로 웹 서비스 제작 프로젝트 1달</h3>
<p>[이는 이 글을 작성하는 이번 주에 마무리이자 발표인지라, 확실하게 끝난 뒤 한번 더 프로젝트 회고 포스트를 남기고자 한다.]
대부분 생각했던 것들은 이미 있는 서비스들이기에, 좀 더 의미있게 남기고자 한다면 기존 서비스들과 어느정도 차이점을 둬야하지 않을까 해서 다양한 분야로 찾아보았던 것 같다. 그래서 찾아보던 중 보이던 주제는 낚시.</p>
<ul>
<li>낚시의 경우, 확실하게 한 마리라도 낚기 위해서는 다양한 조건들을 필요로 한다. (날씨, 바다상황 , 금어기 등등)</li>
</ul>
<p>이러한 부분들은 초보자들이 쉽게 접근하기 어렵지 않을까 생각이 들었고 이를 기반으로 낚시 초보자들이 정보를 쉽게 얻을 수 있는 웹서비스를 만들어보자! 라는 생각에서 시작했던 것 같다.</p>
<ul>
<li>웹으로 만들어야했던 이 서비스는, 개발 기간이 길면서 짧게 느껴진 한달. 이에 PC 및 모바일 두 가지의 디자인을 아예 다르게 구상하기보다는 <code>무신사</code> 와 같은 사이트처럼 모바일 웹 디자인으로 진행하자는 것을 제안하였다.</li>
<li>제작한 서비스의 메인 기능은 <code>인공지능을 활용한 이미지 분류</code>으로, 직접 낚게된 해양생물들에 대해 정보를 알려주며, 금어기인 경우에 놓아주어야할 수 있도록 경고까지 첨가하였다.</li>
<li>Vue.js, Flask, MySQL, 인공지능 Pytorch 세가지 프레임워크 기반으로 제작. 멋사쪽에서 AWS EC2까지 제공해주었다.</li>
<li>제작한 서비스의 서브 기능은 낚시터 스팟 정보, 낚시에 필요한 당일 물때 정보, 커뮤니티 기능</li>
<li>내가 맡았던 파트는 다음과 같다.<ul>
<li>낚시터 스팟정보 페이지 제작</li>
<li>물때 정보 제공 위젯 제작</li>
<li>분석 페이지 내 생성형 답변을 위한 ChatGPT 연계</li>
<li>인공지능 모델 선정 및 학습</li>
</ul>
</li>
</ul>
<p>자세한건 추후 회고 포스트에 남길것 같고, 시간이 흘러 만들어진 웹 서비스의 일부 스크린샷은 다음과 같다.
<img src="https://velog.velcdn.com/images/jh-shi-n/post/129c4844-2d00-47b6-9969-69c20d21e83d/image.png" alt=""></p>
<blockquote>
<p>그래서 다시 돌아본다면?</p>
</blockquote>
<p>부트캠프 교육 기간동안에 배운 부분에 대해서는 양질의 정보를 제공해주신 것 같아서 참 좋았다. 배웠던 부분에 대해서는 노션에 차곡차곡 정리하고, 추후에도 찾아볼 수 있도록 페이지를 구성해두었다.</p>
<p>프로젝트 기간 중 웹 서비스 기간에는 이게 잘되고 있는건가 생각이 들었다. 맡은 파트 중 <code>낚시터 스팟정보</code>에는 3개의 API 연동 및 DB 연동까지 진행해야했던 터라 조금이라도 꼬이면 빨간색 글씨와 함께 에러가 발생하는 모습을 보고 조금은 답답했었다. 그래도 차근차근 기능들을 추가하고, 에러 발생 요소를 체크하고, 최종 작업물을 올려야하는 AWS EC2에 배포하고 들어가보니 생각보다 깔끔하게 잘 나온 것 같은 느낌이었다.</p>
<blockquote>
<p>그래서 내년엔?</p>
</blockquote>
<p>올해에는 다시 취업의 문을 두드리기 전 신발끈 묶고 다시 준비하는 느낌이었다면, 내년에는 문을 두드리고 확실하게 들어갈 수 있도록 하고자 한다.
방향성은 AI 연구원 / AI 엔지니어 두 가지를 모두 고려하여 진행하고자 하며, 내년 1월 안에 진행했던 부분들에 대해 차곡차곡 준비를 하고, 다시한번 나 자신을 성장시킬 수 있는 장소로 나아갈 수 있도록 나아가고자 한다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[FastAPI] 개요 및 설치 실행]]></title>
            <link>https://velog.io/@jh-shi-n/FastAPI-%EA%B0%9C%EC%9A%94-%EB%B0%8F-%EC%84%A4%EC%B9%98-%EC%8B%A4%ED%96%89</link>
            <guid>https://velog.io/@jh-shi-n/FastAPI-%EA%B0%9C%EC%9A%94-%EB%B0%8F-%EC%84%A4%EC%B9%98-%EC%8B%A4%ED%96%89</guid>
            <pubDate>Mon, 14 Oct 2024 15:25:10 GMT</pubDate>
            <description><![CDATA[<h2 id="fastapi">FastAPI</h2>
<ul>
<li>현대적이고, 빠르며(고성능), 파이썬 표준 타입 힌트에 기초한 Python3.6+의 API로 빌드하기 위한 웹 프레임워크</li>
<li>비동기 방식의 프레임워크<ul>
<li>DB나 API 연동 과정에서 발생하는 시간을 줄임</li>
<li>CPU가 다른 작업을 할 수 있도록 해주는 방식</li>
<li>ASGI (Asynchronous Server Gateway Interface)</li>
<li>async / await구문  </li>
</ul>
</li>
</ul>
<hr>
<ul>
<li>설치<ul>
<li>fastapi : 웹프레임워크</li>
<li>uvicorn : ASGO 서버</li>
<li>배포 시 별도의 준비가 필요없음</li>
</ul>
</li>
</ul>
<pre><code>pip install fastapi
pip install uvicorn
pip install hypercorn</code></pre><hr>
<ul>
<li>설치 확인 및 간단한 코드 작성<pre><code>from fastapi import FastAPI
</code></pre></li>
</ul>
<p>app = FastAPI()</p>
<p>@app.get(&quot;/&quot;)
def root():
    return{&quot;hello&quot; : &quot;world&quot;}</p>
<pre><code>
- 작성한 코드는 Terminal 상에서 다음 구문으로 실행</code></pre><p>uvicorn main:app —reload</p>
<p>```
<img src="https://velog.velcdn.com/images/jh-shi-n/post/ff076cf4-92b4-40b1-84fc-331cc7bb75ad/image.png" alt=""></p>
<hr>
]]></description>
        </item>
        <item>
            <title><![CDATA[[matplotlib] 시각화 코드 실행 시 Kernel dead]]></title>
            <link>https://velog.io/@jh-shi-n/matplotlib-%EC%8B%9C%EA%B0%81%ED%99%94-%EC%BD%94%EB%93%9C-%EC%8B%A4%ED%96%89-%EC%8B%9C-Kernel-dead</link>
            <guid>https://velog.io/@jh-shi-n/matplotlib-%EC%8B%9C%EA%B0%81%ED%99%94-%EC%BD%94%EB%93%9C-%EC%8B%A4%ED%96%89-%EC%8B%9C-Kernel-dead</guid>
            <pubDate>Thu, 10 Oct 2024 06:26:02 GMT</pubDate>
            <description><![CDATA[<ul>
<li><p>문제상황 :</p>
<ul>
<li>matplotlib을 활용한 시각화 코드를 사용 시, 커널이 죽는 현상 발생.</li>
</ul>
</li>
<li><p>해결 방법 :</p>
<ul>
<li>코드 실행 전, 해당 코드 선으로 실행할수 있도록 진행</li>
</ul>
</li>
</ul>
<pre><code>import os
os.environ[&#39;KMP_DUPLICATE_LIB_OK&#39;]=&#39;True&#39;</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[[Git] 가장 최근의 commit 내역 메세지 변경하기]]></title>
            <link>https://velog.io/@jh-shi-n/Git-%EA%B0%80%EC%9E%A5-%EC%B5%9C%EA%B7%BC%EC%9D%98-commit-%EB%82%B4%EC%97%AD-%EB%A9%94%EC%84%B8%EC%A7%80-%EB%B3%80%EA%B2%BD%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@jh-shi-n/Git-%EA%B0%80%EC%9E%A5-%EC%B5%9C%EA%B7%BC%EC%9D%98-commit-%EB%82%B4%EC%97%AD-%EB%A9%94%EC%84%B8%EC%A7%80-%EB%B3%80%EA%B2%BD%ED%95%98%EA%B8%B0</guid>
            <pubDate>Mon, 26 Aug 2024 09:03:14 GMT</pubDate>
            <description><![CDATA[<ul>
<li>문제상황<ul>
<li>Git 커밋 진행 시, commit 메세지에 오타가 발생한 채로 커밋이 진행됨.
<img src="https://velog.velcdn.com/images/jh-shi-n/post/27e5ad26-7651-4d80-8fc9-74b311c4e90b/image.png" alt=""></li>
</ul>
</li>
</ul>
<ul>
<li><p>해결 방법</p>
<ul>
<li><p>콘솔창 내 <code>git commit --amend</code> 활용
[1] <code>git commit --amend -m [수정하고자 하는 메세지]</code>
[2] <code>git commit --amend</code> 입력 후, vi를 통해 수정 진행</p>
<ul>
<li>커밋 메시지만 간단하게 변경을 해야했기 때문에, 첫번째 방식을 통해 진행하였음. <img src="https://velog.velcdn.com/images/jh-shi-n/post/4c8dead9-f991-48d5-96fe-c1fe60f6e2b5/image.png" alt=""></li>
</ul>
</li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[MySQL] M1 Mac 환경, 비밀번호 까먹었을 때 ]]></title>
            <link>https://velog.io/@jh-shi-n/MySQL-M1-Mac-%ED%99%98%EA%B2%BD-%EB%B9%84%EB%B0%80%EB%B2%88%ED%98%B8-%EA%B9%8C%EB%A8%B9%EC%97%88%EC%9D%84-%EB%95%8C</link>
            <guid>https://velog.io/@jh-shi-n/MySQL-M1-Mac-%ED%99%98%EA%B2%BD-%EB%B9%84%EB%B0%80%EB%B2%88%ED%98%B8-%EA%B9%8C%EB%A8%B9%EC%97%88%EC%9D%84-%EB%95%8C</guid>
            <pubDate>Thu, 01 Aug 2024 02:35:40 GMT</pubDate>
            <description><![CDATA[<ul>
<li><p>문제 상황</p>
<ul>
<li>M1 Mac 내 설치된 MySQL Root 권한으로 로그인 시도하였으나, 비밀번호가 맞지 않음</li>
</ul>
<hr>
</li>
<li><p>해결 방법 : MySQL Root를 인증없이 로그인 후 비밀번호 재설정</p>
<ul>
<li>현재 실행중인 MySQL 프로세스 종료<pre><code>#Brew 명령어
brew services stop mysql
</code></pre></li>
</ul>
<h1 id="이외-명령어">이외 명령어</h1>
<p>mysql.server stop</p>
<pre><code></code></pre><p>Shutting down MySQL
. SUCCESS!</p>
<pre><code>
- MySQL를 Root 인증과정 없이 서버 실행 시도</code></pre><p>mysql.server start --skip-grant-tables</p>
<pre><code>
  - 해당 방식은, MySQL 접속 시, 권한체계를 무시하고 모든 사용자에게 루트 권한을 부여하는 옵션.
  - 편리하게 로그인할 수 있지만, 데이터베이스 or 테이블에 대해서도 모든 권한을 부여하기에 보안에 위험이 커짐
  - 일반적으로 해당 옵션은 MySQL 계정 관련해서 수정하거나 복구할 때 이용

- 옵션 적용 후, Root 권한으로 비밀번호없이 로그인</code></pre><p>mysql -u root</p>
<pre><code>![](https://velog.velcdn.com/images/jh-shi-n/post/71ae3f2f-8107-4f5d-b33e-ed3eb1dcac10/image.png)

 - 비밀번호 임시 변경
  - null 형식으로 변경하여 비밀번호가 없는 상태로 변경</code></pre><p>update mysql.user set authentication_string=null where user=&#39;root&#39;;</p>
<pre><code>- 수정 내용 반영</code></pre><p>flush privileges</p>
<pre><code>
- 비밀번호 없는 상태로 로그인, 이후 비밀번호 변경</code></pre><p>mysql -u root</p>
<p>alter user &#39;root&#39;@&#39;localhost&#39; identified with caching_sha2_password by &#39;새비밀번호&#39;;</p>
<pre><code> - 이후 재 로그인 시, 비밀번호와 같이 입력하면 정상적으로 로그인됨.
 ![](https://velog.velcdn.com/images/jh-shi-n/post/d7480506-347c-43e3-808e-7315edb95302/image.png)
</code></pre></li>
</ul>
<hr>
<ul>
<li>늘 비밀번호는 까먹지 않기...!</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Html] Custom Component 관련 오류]]></title>
            <link>https://velog.io/@jh-shi-n/Vue.js-Custom-Component-%EA%B4%80%EB%A0%A8-%EC%98%A4%EB%A5%98</link>
            <guid>https://velog.io/@jh-shi-n/Vue.js-Custom-Component-%EA%B4%80%EB%A0%A8-%EC%98%A4%EB%A5%98</guid>
            <pubDate>Thu, 25 Jul 2024 02:17:06 GMT</pubDate>
            <description><![CDATA[<h3 id="문제상황">문제상황</h3>
<ul>
<li>Html 실습 진행 시, 다음과 같은 오류 발생<ul>
<li><code>If this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.</code></li>
</ul>
</li>
</ul>
<h3 id="solve">Solve</h3>
<ul>
<li>해당 오류는 <code>커스텀 컴포넌트 인식</code>하는 과정에서 오류가 발생한 것<ul>
<li>수정 전 컴포넌트 이름을 pascal case로 등록했었음. 해당 부분에서 오류 발생 </li>
<li>오류 수정을 위해 우선적으로 커스텀 컴포넌트의 이름의 형식을 케밥케이스(kebab-case)로 등록 권장 <code>(by. chatGPT)</code></li>
</ul>
</li>
</ul>
<p><img src="https://velog.velcdn.com/images/jh-shi-n/post/4d57ec56-87e2-40af-b9ab-0544241d1099/image.png" alt=""></p>
<hr>
]]></description>
        </item>
        <item>
            <title><![CDATA[[JavaScript] 문자열 특수문자 처리]]></title>
            <link>https://velog.io/@jh-shi-n/%ED%8A%B9%EC%88%98%EB%AC%B8%EC%9E%90-%EC%B2%98%EB%A6%AC-%EB%B0%A9%EC%8B%9D</link>
            <guid>https://velog.io/@jh-shi-n/%ED%8A%B9%EC%88%98%EB%AC%B8%EC%9E%90-%EC%B2%98%EB%A6%AC-%EB%B0%A9%EC%8B%9D</guid>
            <pubDate>Tue, 16 Jul 2024 00:14:38 GMT</pubDate>
            <description><![CDATA[<ul>
<li>다양한 input을 통해 받아오는 문자열 내 특수문자 제거 방식
<code>.replace(/-/g,&#39;&#39;)</code></li>
</ul>
<hr>
<p>ex) input 값이 date 형식 (yyyy-mm-dd) 일때,
<code>$(&quot;[type=date]&quot;).val().replace(/-/g, &#39;&#39;);</code></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[간단리뷰] YOLOv10: Real-Time End-to-End Object Detection]]></title>
            <link>https://velog.io/@jh-shi-n/yolov10</link>
            <guid>https://velog.io/@jh-shi-n/yolov10</guid>
            <pubDate>Fri, 21 Jun 2024 14:53:18 GMT</pubDate>
            <description><![CDATA[<h3 id="링크">링크</h3>
<ul>
<li>논문 링크 : <a href="https://arxiv.org/abs/2405.14458v1">https://arxiv.org/abs/2405.14458v1</a>
  (논문 내 이미지 캡쳐 사용함)</li>
<li>깃 리포지토리 : <a href="https://github.com/THU-MIG/yolov10">https://github.com/THU-MIG/yolov10</a></li>
</ul>
<hr>
<h3 id="간단정보">간단정보</h3>
<ul>
<li>기존 YOLO 모델의 특징이었던 NMS (Non-Maximum Suppression)를 삭제함
(NMS-free)</li>
<li>대신 Consistent Dual Assignment 개념을 채택하여 성능 향상 및 추론 능력 향상에 기여함.
<img src="https://velog.velcdn.com/images/jh-shi-n/post/831b73df-fefd-46a0-935f-884a98dbdb3f/image.png" alt=""></li>
<li>훈련 과정 진행 시 전반적으로 효율성-정확성을 모두 고려하여 모델을 설계함으로써 모델 성능 강화하였음 (Large-kernel convolution / Partial self-attention)</li>
<li>모델 가중치는 기존 버전과 동일하게 다양한 버전으로 제시
<img src="https://velog.velcdn.com/images/jh-shi-n/post/e3b63159-789f-4473-8e9e-1e94a1c58c2c/image.png" alt=""></li>
<li>논문에서 제시하는 YOLOv10은 정확성 및 효율성을 기반으로 다양한 분야에서 활용될 것을 기대</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[리뷰] xLSTM: Extended Long Short-Term Memory]]></title>
            <link>https://velog.io/@jh-shi-n/%EB%A6%AC%EB%B7%B0-xLSTM-Extended-Long-Short-Term-Memory</link>
            <guid>https://velog.io/@jh-shi-n/%EB%A6%AC%EB%B7%B0-xLSTM-Extended-Long-Short-Term-Memory</guid>
            <pubDate>Sat, 08 Jun 2024 09:31:58 GMT</pubDate>
            <description><![CDATA[<h3 id="target">Target</h3>
<ul>
<li><a href="https://arxiv.org/abs/2405.04517">https://arxiv.org/abs/2405.04517</a></li>
<li>현대 LLM 기법 적용</li>
<li>LSTM의 제약조건을 해결하여 효율적으로 확장한다는 목표</li>
</ul>
<h3 id="키워드">키워드</h3>
<ul>
<li>LSTM</li>
<li>xLSTM</li>
</ul>
<hr>
<h3 id="배경">배경</h3>
<ul>
<li><code>LSTM</code> 은 RNN 계열의 일종으로, Gate 형식으로 정보 제어<ul>
<li>Forget Gate를 통해 이전 Cell의 정보의 망각 조절</li>
<li>Input gate를 통해 신규 정보의 보존 조절</li>
<li>Output gate를 통해 최종 출력</li>
<li>장기 의존성 및 기울기 소실 문제 완화하는데 도움</li>
</ul>
</li>
<li>LSTM은 예측분야에서 큰 성공을 거두었지만, 한계점 존재<ul>
<li>과거 학습정보에 대한 저장 여부 </li>
<li>병렬화 부족</li>
</ul>
</li>
<li>한계점 보완 및 성능 향상을 위해 sLSTM, mLSTM Block 제시</li>
</ul>
<h3 id="모델-아키텍쳐">모델 아키텍쳐</h3>
<p><img src="https://velog.velcdn.com/images/jh-shi-n/post/b6df7eee-63aa-4d98-8ba0-662ff9469c67/image.png" alt=""></p>
<ul>
<li><p>기존 LSTM 대비 변경된 점</p>
<ul>
<li>장기적인 기억 종속성 향상 및 병렬성 향상</li>
<li>LSTM의 정보 조절을 위해 지수 게이트 기법 도입<ul>
<li>Input Gate 및 Forget Gate에서 <code>Exponential activation functions</code> 추가하여 보다 매끄럽게 정보의 흐름이 이루어질 수 있도록 함</li>
<li>해당 과정 간 안정화를 위해 Normalized state 추가</li>
</ul>
</li>
<li>Memory 관련 기법<ul>
<li>새로운 메모리 구조 제시 : sLSTM, mLSTM</li>
<li>sLSTM : Memory Mixing 추가<ul>
<li>Scalar 형태로 데이터 활용</li>
<li>Input된 Dimension을 Head 형태로 대입</li>
</ul>
</li>
<li>mLSTM : 공분산 Update 기능<ul>
<li>Matrix 형태로 데이터 활용</li>
<li>mLSTM의 경우, 병렬화를 통한 연산 효율성을 위해 Memory Mixing을 적용하지 않음</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li><p>Block 아키텍쳐</p>
</li>
</ul>
<p><img src="https://velog.velcdn.com/images/jh-shi-n/post/591137c5-fd92-4a83-a8f8-df81c14c04fa/image.png" alt=""></p>
<ul>
<li><p>sLSTM (왼쪽)</p>
<ul>
<li>Transformer 와 유사한 형태의 <code>Post up-projection</code></li>
<li>Input이 (선택적인 컨볼루젼) sLSTM으로 이어짐</li>
<li>이후 Gated MLP 단계로 이동</li>
</ul>
</li>
<li><p>mLSTM (오른쪽)</p>
<ul>
<li>SSM과 유사한 형태의 <code>Pre up-projection</code> </li>
<li>2개의 MLP 형태로 감싸짐<ul>
<li>학습 가능한 Skip Connection</li>
<li>Convolution</li>
<li>구성요소별로 작동하는 (componentwise) Output Gate</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3 id="결론">결론</h3>
<ul>
<li>이러한 형태로 구성된 xLSTM은 Transformer와 어느정도 유사한 성능을 보이거나, 보다 나은 성능을 종종 보여주곤 함</li>
<li>이는 예측분야, LLM 분야 외 다양한 방면으로 확장될 수 있는 모습을 보여줌.</li>
</ul>
<hr>
<h3 id="추가내용">추가내용</h3>
<ul>
<li>오늘 날짜 기준, 2일 전 Vision 분야에 적용된 xLSTM (ViL)에 관련된 정보 또한 공개됨.</li>
<li><a href="https://arxiv.org/html/2406.04303v1">https://arxiv.org/html/2406.04303v1</a></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[자료구조] DFS & BFS]]></title>
            <link>https://velog.io/@jh-shi-n/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-DFS-BFS</link>
            <guid>https://velog.io/@jh-shi-n/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-DFS-BFS</guid>
            <pubDate>Wed, 01 May 2024 09:12:30 GMT</pubDate>
            <description><![CDATA[<h2 id="기본-개념">기본 개념</h2>
<ul>
<li>너비 우선탐색 (BFS) 와 깊이 우선탐색 (DFS)는 모두 그래프를 탐색하는 방법</li>
<li>정점 (node) 과 정점을 연결하는 간선 (Edge)으로 이루어진 자료구조를 의미함</li>
<li>하나의 정점으로부터 마지막 정점까지 모두 방문한다는 것이 특징</li>
</ul>
<h3 id="이미지-간단순서-정리">이미지 간단순서 정리</h3>
<p><img src="https://velog.velcdn.com/images/jh-shi-n/post/8f4e27bf-c19a-4fd6-9314-ed7c0c4d4862/image.png" alt=""></p>
<ul>
<li>검정 테두리 원은 정점 (node), 검정 연결 선은 간선 (Edge), 숫자 (빨강, 파랑)은 방문 순서 </li>
<li>DFS는 루트 정점 (가장 첫 순서) 기준 왼쪽 분기를 우선적으로 모두 방문, 이후 다른 분기를 방문함.</li>
<li>BFS는 방문한 정점과 인접한 정점부터 방문함.</li>
</ul>
<h3 id="dfs">DFS</h3>
<ul>
<li>이미지 상으로 왼쪽 그래프</li>
<li>루트 정점 기준으로 한 분기를 모두 방문하고, 다른 분기를 방문하여 끝까지 방문함.</li>
<li><strong>모든 정점들을 방문하려하는 경우</strong> 이 방법을 선택</li>
<li>DFS가 BFS보다 좀 더 간단함</li>
<li>진행 속도 자체는 BFS에 비해 느림</li>
</ul>
<h3 id="bfs">BFS</h3>
<ul>
<li>이미지 상으로 오른쪽 그래프</li>
<li>루트 정점 기준으로 가까운 정점들을 우선적으로 방문</li>
<li>정점을 잇는 노드 간 최단 거리를 찾으려는 경우 사용함.</li>
</ul>
<h3 id="구현-방식">구현 방식</h3>
<ul>
<li>DFS : 스택 (Stack) 이나 재귀함수으로 구현 </li>
<li>BFS : 큐 (Queue) 로 구현</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[코테준비] 2Xn타일링]]></title>
            <link>https://velog.io/@jh-shi-n/%EC%BD%94%ED%85%8C%EC%A4%80%EB%B9%84-2Xn%ED%83%80%EC%9D%BC%EB%A7%81</link>
            <guid>https://velog.io/@jh-shi-n/%EC%BD%94%ED%85%8C%EC%A4%80%EB%B9%84-2Xn%ED%83%80%EC%9D%BC%EB%A7%81</guid>
            <pubDate>Sun, 21 Apr 2024 09:47:48 GMT</pubDate>
            <description><![CDATA[<h3 id="backjoon-solvedac-no-11726">Backjoon (Solved.ac) no. 11726</h3>
<ul>
<li>핵심 방식 : 동적 프로그래밍 (DP)</li>
<li>n의 값을 증가시켜가면서 직접 구현해볼 경우 다음과 같음<ul>
<li><code>ㅣ</code>,<code>l</code> = (1,2) 사이즈 타일 1개 둔 경우</li>
<li><code>=</code> = (2,1) 사이즈 타일을 2개 둔 경우
<img src="https://velog.velcdn.com/images/jh-shi-n/post/ae0c99c9-b531-4d9e-80b5-9fe5b8b6eb5d/image.png" alt=""></li>
</ul>
</li>
<li>이렇게 도출 된 값들을 살펴볼 경우, n이 3이상일때는 n-1일때의 값, n-2일때의 값을 합할 경우 동일하게 나온다고 확인할 수 있음.</li>
</ul>
<h3 id="문제풀이">문제풀이</h3>
<p><a href="https://github.com/jh-shi-n/Coding_test/blob/main/coding_test/Baekjoon/Code_2xn%ED%83%80%EC%9D%BC%EB%A7%81.py">https://github.com/jh-shi-n/Coding_test/blob/main/coding_test/Baekjoon/Code_2xn%ED%83%80%EC%9D%BC%EB%A7%81.py</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[코테준비] 가장긴증가하는부분수열]]></title>
            <link>https://velog.io/@jh-shi-n/%EC%BD%94%ED%85%8C%EC%A4%80%EB%B9%84-%EA%B0%80%EC%9E%A5%EA%B8%B4%EC%A6%9D%EA%B0%80%ED%95%98%EB%8A%94%EB%B6%80%EB%B6%84%EC%88%98%EC%97%B4</link>
            <guid>https://velog.io/@jh-shi-n/%EC%BD%94%ED%85%8C%EC%A4%80%EB%B9%84-%EA%B0%80%EC%9E%A5%EA%B8%B4%EC%A6%9D%EA%B0%80%ED%95%98%EB%8A%94%EB%B6%80%EB%B6%84%EC%88%98%EC%97%B4</guid>
            <pubDate>Sun, 21 Apr 2024 08:23:43 GMT</pubDate>
            <description><![CDATA[<h2 id="backjoon-solvedac-no-11053">Backjoon (Solved.ac) no. 11053</h2>
<p>핵심 방식 : 동적 프로그래밍 (DP)</p>
<ul>
<li>입력받는 수열 내 들어있는 요소마다 비교하면서 dp란 리스트에 Rank 결과값 삽입 (값이 이전 값보다 크다면 +1)</li>
<li>모든 순번을 마친 뒤 max() 함수를 통해 가장 긴 부분수열 갯수 Count</li>
</ul>
<h3 id="문제풀이">문제풀이</h3>
<ul>
<li><a href="https://github.com/jh-shi-n/Coding_test/blob/main/coding_test/Baekjoon/Code_%EA%B0%80%EC%9E%A5%EA%B8%B4%EC%A6%9D%EA%B0%80%ED%95%98%EB%8A%94%EB%B6%80%EB%B6%84%EC%88%98%EC%97%B4.py">https://github.com/jh-shi-n/Coding_test/blob/main/coding_test/Baekjoon/Code_%EA%B0%80%EC%9E%A5%EA%B8%B4%EC%A6%9D%EA%B0%80%ED%95%98%EB%8A%94%EB%B6%80%EB%B6%84%EC%88%98%EC%97%B4.py</a></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[자료구조] 그래프]]></title>
            <link>https://velog.io/@jh-shi-n/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-%EA%B7%B8%EB%9E%98%ED%94%84</link>
            <guid>https://velog.io/@jh-shi-n/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-%EA%B7%B8%EB%9E%98%ED%94%84</guid>
            <pubDate>Sun, 21 Apr 2024 07:41:02 GMT</pubDate>
            <description><![CDATA[<h3 id="그래프의-정의">그래프의 정의</h3>
<ul>
<li>그래프<ul>
<li>연결되어있는 객체 간의 관계를 표현하는 비선형 자료구조 
<img src="https://velog.velcdn.com/images/jh-shi-n/post/b2f89f8f-8203-4830-a61a-3ee1a3b939b3/image.png" alt=""></li>
<li><code>G = (V,E)</code><ul>
<li>V : 정점, Vertex의 집합<ul>
<li>여러 특성을 가질 수 있는 객체, 노드 (node)라고도 지칭</li>
</ul>
</li>
<li>E : 간선, Edge의 집합<ul>
<li>정점들 간의 관계를 의미, Link라고도 지칭 </li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[코테준비] 1,2,3더하기]]></title>
            <link>https://velog.io/@jh-shi-n/%EC%BD%94%ED%85%8C%EC%A4%80%EB%B9%84-123%EB%8D%94%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@jh-shi-n/%EC%BD%94%ED%85%8C%EC%A4%80%EB%B9%84-123%EB%8D%94%ED%95%98%EA%B8%B0</guid>
            <pubDate>Thu, 18 Apr 2024 09:11:58 GMT</pubDate>
            <description><![CDATA[<h2 id="backjoon-solvedac-no-9095">Backjoon (Solved.ac) no. 9095</h2>
<ul>
<li>핵심 방식 : 재귀, 점화식 방식<ul>
<li>input되는 값의 갯수를 1차적으로 받음</li>
<li>갯수에 따라 1,2,3을 더해서 값을 나타낼 수를 입력받고, 각 값마다 1,2,3만을 활용하여 더하는 방식이 몇 개로 가능한지 Count</li>
</ul>
</li>
</ul>
<h3 id="문제-풀이">문제 풀이</h3>
<ul>
<li><a href="https://github.com/jh-shi-n/Coding_test/blob/main/coding_test/Baekjoon/Code_123%EB%8D%94%ED%95%98%EA%B8%B0.py">https://github.com/jh-shi-n/Coding_test/blob/main/coding_test/Baekjoon/Code_123%EB%8D%94%ED%95%98%EA%B8%B0.py</a></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[리뷰] Vision Mamba: Efficient Visual Representation Learning with Bidirectional State Space Model]]></title>
            <link>https://velog.io/@jh-shi-n/%EC%A0%95%EB%A6%AC-vision-mamba</link>
            <guid>https://velog.io/@jh-shi-n/%EC%A0%95%EB%A6%AC-vision-mamba</guid>
            <pubDate>Sat, 13 Apr 2024 14:14:50 GMT</pubDate>
            <description><![CDATA[<hr>
<h3 id="target">Target</h3>
<ul>
<li><a href="https://arxiv.org/abs/2401.09417?utm_source=pytorchkr">https://arxiv.org/abs/2401.09417?utm_source=pytorchkr</a></li>
<li>Transformer 를 주축으로 이루어진 딥러닝의 아키텍처의 대안을 찾고자 개발자들은 다양한 시도를 진행하고 있었고, 그 중 Mamba가 하나의 대안으로 떠오르고 있음</li>
<li>해당 논문은 대안으로 떠오르는 Mamba를 비전 분야에 적용시킨 Visual Mamba(ViM)에 대해 나타내며, 해당 모델은 기존 ViT모델과 어느정도 비등한 성능을 나타냄</li>
</ul>
<h3 id="키워드">키워드</h3>
<ul>
<li>Mamba</li>
<li>State-Space Model</li>
<li>Vision</li>
</ul>
<hr>
<h3 id="배경">배경</h3>
<ul>
<li>연구 발전에 따라 상태 공간모델 (SSM)에 대한 관심이 높아지고 있음</li>
<li>또한 Transformer 를 주축으로 이루어진 딥러닝의 아키텍처의 대안을 찾고자 개발자들은 다양한 시도를 진행하고 있음.</li>
<li>그 중 Mamba가 하나의 대안으로 떠오르고 있음</li>
<li>Mamba가 언어 모델링에 큰 대안으로 떠오르고 있는 만큼, 비전 분야에서도 활용하고자 함.</li>
</ul>
<h3 id="기본-개념">기본 개념</h3>
<ul>
<li>Mamba 적용<ul>
<li>Vim 모델은 Mamba를 Encoder에 적용하여 활용</li>
</ul>
</li>
</ul>
<h3 id="모델-아키텍쳐">모델 아키텍쳐</h3>
<p><img src="https://velog.velcdn.com/images/jh-shi-n/post/4f102e7d-195a-4796-8a87-3661689a8b1c/image.png" alt=""></p>
<ul>
<li><p>Overflow</p>
<ul>
<li>Input된 이미지를 패치화, Flatten 및 Linear Projection <em>[한 벡터를 다른 벡터의 공간에 표기하는 것]</em></li>
<li>해당 시퀀스들을 대변하는 Class Token 추가 &amp; Position Embedding 진행</li>
<li>진행된 과정들을 Vim Encoder 블록에 입력</li>
<li>Normalize &amp; MLP를 거쳐 최종 결과 도출</li>
</ul>
</li>
<li><p>Vision Mamba Encoder</p>
<ul>
<li>임베딩된 패치들을 해당 Encoder에 입력됨.</li>
<li>Normalize 한 후 차원을 2개로 확장 <code>(x, z) 라 지칭</code></li>
<li>x는 Backward &amp; Forward 방향 2가지로 진행<ul>
<li>1차원 Convolution -&gt; Linear Projection 순서로 진행</li>
<li>이후 3개의 Δ값을 생성,  Back &amp; Forward 별로 SSM 단계에서 이용</li>
<li>이러한 순서를 거쳐 y_forward &amp; y_backward 값이 계산됨</li>
</ul>
</li>
<li>Z는 Gate 형식으로 이용하며 RNN 방식과 유사하게 y_forward &amp; y_backward를 선택적으로 추출<ul>
<li>해당 값들을 더하면 최종 Output이 도출됨 </li>
</ul>
</li>
</ul>
</li>
</ul>
<hr>
<h3 id="모델의-의의-개인생각">모델의 의의 (개인생각)</h3>
<ul>
<li>Tranformer가 현 시점 가장 많이 이용되는 모델의 백본이자, 성능도 우수함.</li>
<li>다만, Transformer의 경우 메모리 효율성 부분에서는 좋지 않다는 점이 단점으로 작용하고 있었음.</li>
<li>Mamba는 하드웨어 효율성을 어느정도 고려하면서, Transformer와 어느정도 비등한 성능을 나타낸다는 점에서 주목할 수 있다고 보여짐</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[리뷰] Mamba: Linear-Time Sequence Modeling with Selective State Spaces]]></title>
            <link>https://velog.io/@jh-shi-n/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-Mamba-Linear-Time-Sequence-Modeling-with-Selective-State-Spaces</link>
            <guid>https://velog.io/@jh-shi-n/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-Mamba-Linear-Time-Sequence-Modeling-with-Selective-State-Spaces</guid>
            <pubDate>Fri, 05 Apr 2024 14:57:07 GMT</pubDate>
            <description><![CDATA[<h3 id="target">Target</h3>
<ul>
<li><a href="https://arxiv.org/abs/2312.00752">https://arxiv.org/abs/2312.00752</a></li>
<li><code>Transformer</code> 를 주축으로 이루어진 딥러닝의 아키텍처의 대안을 찾고자 개발자들은 다양한 시도를 진행하고 있음.</li>
<li>그 중 하나의 대안으로 제시된 아키텍처로 State Space Model 이며, 그 중 해당 글에서 정리한 <code>Mamba</code> 가 주목받고 있음.</li>
</ul>
<h3 id="키워드">키워드</h3>
<ul>
<li>State Space Model</li>
<li>Selection Mechanism</li>
<li>Hardware-aware Parallel Scan Algorithm</li>
</ul>
<hr>
<h3 id="배경">배경</h3>
<ul>
<li>현재 딥러닝의 아키텍처는 <code>Transformer</code> 를 주축으로 이용하고 있었음.</li>
<li>이에 따라 많은 개발자들이 <code>Transformer</code>의 대안을 찾고자 다양한 시도를 진행하고 있음.</li>
</ul>
<h3 id="기본-개념">기본 개념</h3>
<p><img src="https://velog.velcdn.com/images/jh-shi-n/post/96ccbabd-ce73-435d-881b-fb2cc219dbdd/image.png" alt=""></p>
<ul>
<li>State Space Model<ul>
<li>제어이론에서 주로 이용되는 <strong>상태 공간 모델</strong> 중 하나로, RNN이나 CNN과 같은 고전적인 상태 공간 모델과 관련되어 있음.</li>
<li>딥러닝의 경우 사용되는 변수들이 모두 이산형 변수이기에 이산화를 반드시 수행해야 하며, 해당 논문에서는 <code>ZOH (Zero-order Hold) 방식</code> 을 채택</li>
</ul>
</li>
<li>Selection Mechanism
<img src="https://velog.velcdn.com/images/jh-shi-n/post/ae47a541-69cf-4e40-b72c-e126b88f21c7/image.png" alt=""><ul>
<li>기존 모델들은 과도하게 토큰들을 계산 or Context을 과도하게 압축하고 있다고 주장함.</li>
<li>Mamba에서는 해당 현상을 <code>∆값</code> 으로 제어하고자 함.<ul>
<li>∆값이 큰 경우, 해당 토큰에 집중하도록 함.</li>
<li>∆값이 작은 경우, 해당 토큰을 건너뛰고, 다음 상태에서 해당 토큰을 많이 포함시키지 않도록 함.</li>
<li>Why? <ul>
<li>Large Sequence Modeling의 능력을 평가하기 위해 하단 과정을 진행함.</li>
<li><code>Selective Copying : 암기할 토큰 위치를 선택적으로 복제해서 맞추는 과정, 암기하는 토큰과 관련서이 떨어지는 부분을 걸러내는 콘텐츠 인식 추론과 연관</code></li>
<li><code>Induction Heads : LLM의 맥락 내 학습 능력의 대부분을 설명하기 위해 가설화된 과정, 문맥 인식 추론능력이 필요</code><ul>
<li>Selectivity를 부여함으로써, 각 토큰들을 필요에 맞게 상태로 변환할 수 있도록 함.</li>
<li>Hardware-aware Parellel Scan Algorithm</li>
<li>Mamba는 병렬적으로 Scan 알고리즘을 이용하는 알고리즘을 채택</li>
<li>모델이 작동하는 하드웨어에 맞춰 작동함.</li>
<li>GPU 메모리 계층 간의 I/O 접근을 방지하고, 확장된 상태를 실체화하지 않음.</li>
<li>결과적으로, 이러한 구현은 이론적으로(시퀀스 길이에 따라 선형적으로 스케일링) 및 현대 하드웨어에서(예: A100 GPU에서 최대 3배 빠름) 이전 방법보다 빠름.</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3 id="아키텍쳐">아키텍쳐</h3>
<p><img src="https://velog.velcdn.com/images/jh-shi-n/post/f56447dd-189c-4578-81ae-97028e68f4e7/image.png" alt=""></p>
<ul>
<li><code>SSM 아키텍처</code> 와 Transformer 모델에서 자주 이용되던 <code>Gated-MLP</code> 블록을 이용</li>
<li>기존 대비 보다 단순하고 효율적인 아키텍처를 제공함</li>
<li>σ (활성화 함수)는 Swish (SiLU)를 이용<ul>
<li><del><em>작은 변화에서는 적게 반응, 큰 변화에서는 크게 반응하는 활성화함수</em></del></li>
</ul>
</li>
<li>이러한 아키텍쳐 형태</li>
</ul>
<h3 id="모델의-의의">모델의 의의</h3>
<ul>
<li>논문 내 성능 비교를 보면, Transformer를 이용하는 모델들과 어느정도 비등한 성능을 나타낸 것을 확인할 수 있음.</li>
<li>메모리 소모량이 적고, 효율적으로 이용함.</li>
<li>Transformer를 이용하지 않고 상당한 성능을 냈다는 점에서 큰 이목을 받을 수 있다고 보여짐.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[자료구조] 해시 / 해시테이블]]></title>
            <link>https://velog.io/@jh-shi-n/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-%ED%95%B4%EC%8B%9C-1</link>
            <guid>https://velog.io/@jh-shi-n/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-%ED%95%B4%EC%8B%9C-1</guid>
            <pubDate>Fri, 29 Mar 2024 06:58:59 GMT</pubDate>
            <description><![CDATA[<h3 id="해시테이블-hash-table">해시테이블 (Hash Table)</h3>
<ul>
<li><p>해시 &amp; 해시테이블</p>
<ul>
<li>해시 (Hash) : 인덱스에 해시값을 사용하는 자료구조</li>
<li>해시 함수를 사용하여 키를 해시값으로 매핑</li>
<li>마치 key-value 형태로 이루어진 자료구조</li>
</ul>
</li>
<li><p>해시함수 (Hash Function)</p>
<ul>
<li>원하는 값을 최대한 효율적으로 찾을 수 있도록 함</li>
<li><code>Key를 고정된 길이의 hash로 변경해주는 역할</code>-&gt; hashing</li>
<li>key를 해시 함수의 input으로 넣었을 때 나오는 Output을 Hash라 보면 됨.</li>
<li>결론적으로 Hash는 <strong>저장위치</strong>가 되는 것이라 보면 됨</li>
</ul>
</li>
</ul>
<h3 id="해시테이블-구성">해시테이블 구성</h3>
<ul>
<li><p>key</p>
<ul>
<li>해시 함수의 Input이자, 고유한 값<ul>
<li>key값은 제각각의 길이를 가질 수도 있어 key의 길이만큼 정보를 저장해야되기 때문에, 고정된 길이의 해시로 변경한다.</li>
</ul>
</li>
</ul>
</li>
<li><p>hash function</p>
<ul>
<li>key를 <code>고정된 길이의 hash</code>로 변경해주는 역할</li>
<li>서로 다른 key가 Hash된 이후 같은 hash값이 나오는 경우 -&gt; 해시충돌, 이것이 적을 수록 좋다.</li>
</ul>
</li>
<li><p>value</p>
<ul>
<li>저장소에 최종적으로 저장되는 값</li>
<li>hash와 매칭되어 저장</li>
</ul>
</li>
<li><p>hash table</p>
<ul>
<li>해시함수를 사용하여 Key를 해시값으로 매핑</li>
<li>이 해시값을 주소또는 색인 삼아 데이터(value)를 key와 함께 저장하는 자료구조</li>
<li>데이터가 저장되는 곳을 버킷, 슬롯이라 명명</li>
</ul>
</li>
</ul>
<h3 id="장점--단점">장점 / 단점</h3>
<ul>
<li>장점<ul>
<li>해시테이블은 key- value가 1:1로 매핑되기에, 값 삽입이나 삭제와 같은 과정에서 평균적으로 O(1)의 시간 복잡도로 나타난다.</li>
</ul>
</li>
<li>단점<ul>
<li>해시 충돌  (<code>서로 다른 key가 Hash된 이후 같은 hash값이 나오는 경우</code>)이 발생할 수도 있음</li>
<li>공간 효율성이 좋지 않음.</li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[자료구조] 힙]]></title>
            <link>https://velog.io/@jh-shi-n/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-%ED%9E%99-6xpd8smn</link>
            <guid>https://velog.io/@jh-shi-n/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-%ED%9E%99-6xpd8smn</guid>
            <pubDate>Wed, 20 Mar 2024 14:43:04 GMT</pubDate>
            <description><![CDATA[<h3 id="힙-heap">힙 (Heap)</h3>
<p><img src="https://velog.velcdn.com/images/jh-shi-n/post/fa2e605d-f178-4023-9f32-4f367ca90a7c/image.png" alt=""></p>
<ul>
<li>트리 형태로 쌓인 데이터 <em>[위키백과 내 이미지]</em></li>
<li>최댓값이나 최솟값을 빠르게 찾기위해 만들어진 자료구조</li>
<li>완전이진트리의 형태로, Array로 표현하기 쉬움</li>
<li>리프노드가 아닌 노드는 모두 <strong>2개의 자식</strong>을 가지며, 리프노드의 모든 데이터는 <strong>왼쪽에서 오른쪽으로</strong> 빈틈없이 채워지는 형태를 보임</li>
</ul>
<hr>
<ul>
<li>최댓값 혹은 최솟값을 빠르게 찾기 위해서는..?<ul>
<li>부모 &lt;-&gt; 자식 노드의 키값 사이에는 대소관계가 성립</li>
<li>Max Heap (최댓값이 꼭지점에 위치)은 부모노드의 키값이 반드시 자식노드의 키값보다 큼</li>
<li>이와 반대로 Min Heap (최솟값이 꼭지점에 위치)은 부모노드의 키값이 반드시 자식노드의 키값보다 작음</li>
</ul>
</li>
<li>Heap의 꼭지점에 최댓값, 최솟값이 위치함으로써, 각 값들을 추적하는데 걸리는 시간복잡도는 <code>O(1)</code></li>
<li>Heap에 요소를 추가하거나 제거하는 경우 걸리는 시간복잡도는 <code>O(logN)</code></li>
</ul>
<hr>
<ul>
<li>요소를 추가하는 경우, 이진 트리의 맨 마지막에서부터 부모 요소와 비교하면서 이동하게 됨 [아래에서 위로]</li>
<li>요소를 제거하는 경우, 이진 트리의 꼭지점에 위치한 요소를 제거, 이후 자식 요소들와 비교하면서 이동하게 됨 [위에서 아래로] </li>
</ul>
]]></description>
        </item>
    </channel>
</rss>