<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>정진영의 포트폴리오</title><link>https://wjdwlsdud.github.io/</link><atom:link href="https://wjdwlsdud.github.io/index.xml" rel="self" type="application/rss+xml"/><description>정진영의 포트폴리오</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>ko</language><lastBuildDate>Mon, 24 Oct 2022 00:00:00 +0000</lastBuildDate><image><url>https://wjdwlsdud.github.io/media/sharing.jpg</url><title>정진영의 포트폴리오</title><link>https://wjdwlsdud.github.io/</link></image><item><title>네이버, 감정형 AI 비서 ‘NAVER Mate’ 공개 임박…국내 검색 생태계 지각 변동 예고</title><link>https://wjdwlsdud.github.io/news/news1/</link><pubDate>Mon, 20 Oct 2025 00:00:00 +0000</pubDate><guid>https://wjdwlsdud.github.io/news/news1/</guid><description>&lt;p&gt;국내 최대 포털 네이버가 연내 새롭게 선보일 것으로 알려진 &lt;strong&gt;감정형 AI 비서 NAVER Mate&lt;/strong&gt;가 업계의 주목을 받고 있다. 단순 답변형 챗봇을 넘어 사용자의 &lt;em&gt;기분·맥락·패턴&lt;/em&gt;을 분석해 능동적으로 제안까지 수행하는 &lt;strong&gt;퍼스널 AI 에이전트&lt;/strong&gt;로, IT 업계에서는 “국내 검색 시장 패러다임을 바꿀 서비스가 될 것”이라는 평가가 나오고 있다.&lt;/p&gt;
&lt;h2 id="1-naver-mate-어떤-서비스인가"&gt;1. NAVER Mate, 어떤 서비스인가&lt;/h2&gt;
&lt;p&gt;NAVER Mate는 사용자의 생활 전반에 걸쳐 AI가 능동적으로 정보를 수집·분석하고 행동을 제안하는 &lt;strong&gt;하이브리드형 AI 어시스턴트&lt;/strong&gt;다.&lt;br&gt;
네이버의 캘린더, 메일, 뉴스, 지도, 쇼핑 등과 API 수준에서 연동되며, 사용자는 음성·텍스트 기반 대화만으로 다양한 업무를 처리할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;주요 기능&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;일정 자동 정리 및 리마인드&lt;/li&gt;
&lt;li&gt;뉴스/자료 요약 및 &lt;em&gt;근거 출처&lt;/em&gt; 제공&lt;/li&gt;
&lt;li&gt;사용자 감정 상태 분석 및 대화 톤 조절&lt;/li&gt;
&lt;li&gt;관심사 기반 콘텐츠 추천&lt;/li&gt;
&lt;li&gt;실시간 자연어 기반 검색·요약&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="2-기존-ai-비서와의-차별점"&gt;2. 기존 AI 비서와의 차별점&lt;/h2&gt;
&lt;p&gt;업계가 주목한 지점은 단순 요약형 AI가 아닌 &lt;strong&gt;검증 가능한 AI&lt;/strong&gt;라는 점이다.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;비교 항목&lt;/th&gt;
&lt;th&gt;기존 챗봇&lt;/th&gt;
&lt;th&gt;NAVER Mate&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;데이터 출처&lt;/td&gt;
&lt;td&gt;불분명한 경우 다수&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;출처 링크 명시&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;역할&lt;/td&gt;
&lt;td&gt;질의응답 중심&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;요약 + 팩트 검증 + 제안&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;UX&lt;/td&gt;
&lt;td&gt;단순 대화형&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;탭 전환 없는 하이브리드 UI&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;AI가 내용을 요약하면, 바로 옆에 &lt;em&gt;근거 출처 링크&lt;/em&gt;가 함께 제시되는 방식으로, 사용자가 팩트를 검증하며 신뢰도 높은 정보를 소비할 수 있도록 설계되었다.&lt;/p&gt;
&lt;h2 id="3-전문가-코멘트"&gt;3. 전문가 코멘트&lt;/h2&gt;
&lt;p&gt;AI 업계 관계자는 다음과 같이 전망했다.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;“이제 사용자는 &lt;strong&gt;링크를 수집&lt;/strong&gt;하는 것이 아니라 &lt;strong&gt;정보를 검증&lt;/strong&gt;하는 단계로 넘어가고 있다.&lt;br&gt;
NAVER Mate는 ‘검색-요약-팩트체크’라는 3단계를 한 화면에서 해결하는 첫 시도라는 점에서 상징성이 크다.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;하지만 우려도 존재한다. AI가 감정·루틴까지 학습하는 만큼 &lt;strong&gt;프라이버시, 데이터 관리, 감정 의존성&lt;/strong&gt; 문제가 뒤따를 수 있다는 지적이다.&lt;/p&gt;
&lt;h2 id="4-향후-전망"&gt;4. 향후 전망&lt;/h2&gt;
&lt;p&gt;네이버는 조만간 비공개 베타를 진행하고, 사용자 피드백을 바탕으로 정식 버전을 연내 출시할 것으로 예상된다.&lt;br&gt;
업계에서는 이 서비스가 본격적으로 공개될 경우 &lt;strong&gt;카카오, 구글, 퍼플렉시티 등과의 차세대 검색 경쟁&lt;/strong&gt;이 본격화될 것으로 보고 있다.&lt;/p&gt;
&lt;h2 id="5-결론"&gt;5. 결론&lt;/h2&gt;
&lt;p&gt;NAVER Mate는 “&lt;strong&gt;대화로 이해하고, 링크로 검증하는&lt;/strong&gt;” AI 시대를 선언하는 상징적 서비스가 될 전망이다.&lt;br&gt;
AI가 단순히 빠른 답을 주는 존재에서, &lt;strong&gt;책임 있는 정보 파트너&lt;/strong&gt;로 진화할 수 있을지 관심이 집중된다.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;※ 본 기사는 허구의 시나리오를 기반으로 작성된 콘텐츠로, 실제 기업 계획과 무관합니다.&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Machine Learning</title><link>https://wjdwlsdud.github.io/studying/mr/</link><pubDate>Mon, 13 Oct 2025 00:00:00 +0000</pubDate><guid>https://wjdwlsdud.github.io/studying/mr/</guid><description>&lt;h2 id="머신러닝-학습-일지-데이터로-컴퓨터를-가르치다"&gt;머신러닝 학습 일지: 데이터로 컴퓨터를 가르치다&lt;/h2&gt;
&lt;p&gt;3학년 2학기가 되면서 &lt;strong&gt;기계학습&lt;/strong&gt;이라는 교과목을 접하게 되었습니다. 매주 월, 수 16시에 공과대학 7호관 523호실에서 송현제 교수님의 수업을 듣고 있습니다. 위의 첨부되어 있는 링크에서 송현제 교수님 사이트에서 정보를 확인 하실 수 있습니다!&lt;/p&gt;
&lt;p&gt;&amp;lsquo;머신러닝&amp;rsquo;이라는 단어, 처음에는 왠지 어렵고 복잡하게만 느껴졌습니다. 하지만 막상 배워보니, 생각보다 우리 삶과 가까운, 흥미로운 기술이라는 것을 알게 되었습니다. 제가 배운 머신러닝의 기초적인 개념들을 쉬운 말로 한번 정리해 보았습니다.&lt;/p&gt;
&lt;p&gt;🧐 &lt;strong&gt;머신러닝, 그게 뭔데?&lt;/strong&gt;
제가 이해한 머신러닝은 아주 간단한 아이디어에서 시작합니다. 컴퓨터에게 &amp;lsquo;이건 사과야&amp;rsquo;, &amp;lsquo;이건 오렌지야&amp;rsquo;라고 하나하나 모든 규칙을 알려주는 대신, 수많은 데이터를 보여주고 컴퓨터가 스스로 패턴이나 규칙을 배우게 하는 기술입니다.&lt;/p&gt;
&lt;p&gt;마치 어린아이가 강아지 사진 수백 장을 보고 &amp;lsquo;아, 귀가 쫑긋하고 털이 북슬한 동물이 강아지구나!&amp;rsquo; 하고 스스로 깨닫는 것과 비슷하죠.&lt;/p&gt;
&lt;p&gt;📚 내가 배운 학습 방법 두 가지
머신러닝에는 여러 종류가 있지만, 저는 가장 대표적인 두 가지 방법에 대해 배웠습니다.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;정답을 알려주며 가르치기: 지도 학습 (Supervised Learning)
지도 학습은 말 그대로 &amp;lsquo;정답(Label)&amp;lsquo;이 있는 데이터로 컴퓨터를 학습시키는 방법입니다. &amp;lsquo;문제&amp;rsquo;와 &amp;lsquo;정답&amp;rsquo;을 한 세트로 묶어서 계속 보여주는 거죠.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;스팸 메일 필터가 대표적인 예입니다. &amp;lsquo;이건 스팸 메일이야(정답)&amp;rsquo;, &amp;lsquo;이건 중요한 메일이야(정답)&amp;lsquo;라고 표시된 수많은 이메일(문제)을 학습시키면, 나중에는 새로운 메일이 왔을 때 스스로 스팸인지 아닌지 구분하게 됩니다.&lt;/p&gt;
&lt;p&gt;주택 가격 예측도 마찬가지입니다. &amp;lsquo;A 지역의 30평 아파트는 5억이야(정답)&amp;rsquo; 같은 수많은 집값 데이터(문제)를 학습하면, 새로운 아파트 정보를 주었을 때 가격을 예측할 수 있게 됩니다.&lt;/p&gt;
&lt;ol start="2"&gt;
&lt;li&gt;정답 없이 스스로 배우게 하기: 비지도 학습 (Unsupervised Learning)
비지도 학습은 정답이 없는, 날것의 데이터를 던져주고 &amp;ldquo;이 안에서 뭔가 의미 있는 그룹이나 구조를 찾아봐!&amp;rdquo; 하고 시키는 것과 같습니다. 컴퓨터는 데이터의 특징을 분석해서 비슷한 것들끼리 스스로 묶어줍니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;고객 관리에 유용하게 쓰일 수 있습니다. 고객들의 구매 패턴 데이터를 주고 그룹으로 묶어보게 하면, &amp;lsquo;알뜰 구매 그룹&amp;rsquo;, &amp;lsquo;신제품 선호 그룹&amp;rsquo;처럼 숨겨진 고객 그룹을 찾아낼 수 있습니다.&lt;/p&gt;
&lt;p&gt;뉴스 기사 클러스터링도 좋은 예입니다. 수많은 뉴스 기사를 던져주면, 인공지능이 스스로 &amp;lsquo;정치&amp;rsquo;, &amp;lsquo;경제&amp;rsquo;, &amp;lsquo;스포츠&amp;rsquo; 등 비슷한 주제의 기사들끼리 묶어줍니다.&lt;/p&gt;
&lt;p&gt;✨ 마치며
직접 개념을 배우고 나니, 머신러닝이 막연한 기술이 아니라 문제를 해결하기 위한 아주 논리적인 도구라는 생각이 들었습니다. 물론 아직은 정말 기초적인 부분만 알고 있지만, 데이터 속에서 의미를 찾아내는 과정이 정말 매력적이라고 느꼈습니다. 앞으로 더 깊이 공부해 보고, 간단한 프로젝트도 직접 해보고 싶다는 목표가 생겼습니다.&lt;/p&gt;</description></item><item><title>JAVA</title><link>https://wjdwlsdud.github.io/studying/java/</link><pubDate>Sun, 12 Oct 2025 00:00:00 +0000</pubDate><guid>https://wjdwlsdud.github.io/studying/java/</guid><description>&lt;p&gt;자바의 문법과 기능을 단순히 알기만 하는 것이 아니라, 그 기능이 왜 필요하고 어떻게 실무에 적용할 수 있는지에 대해 깊이 있게 탐구하기 위해 공부를 시작하였다.&lt;/p&gt;
&lt;p&gt;지금까지 공부한 내용은 다음과 같다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Object 클래스&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Object 클래스는 모든 클래스의 최상위 부모이다.
Object 클래스가 필요한 이유와 Object 클래스가 제공하는 기능과 equals()를 통해 자바의 동일성과 동등성 개념도 함께 공부하였다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;불변 객체&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;한번 생성하면 그 이후로 변하지 않는 객체를 불변 객체라 합니다.
String, 래퍼, 날짜와 시간을 포함해서 자바가 제공하는 많은 객체들은 불변 객체로 제공된다. 불변 객체가 왜 필요한지, 그리고 어떻게 불변 객체를 만드는지 공부하였다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;String 클래스&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;String 클래스는 자바에서 문자열을 다룰 때 사용되는 클래스이다.
String 객체의 기본 기능 뿐만 아니라, StringBuilder와 String의 기능과 성능 차이, 또한 자바가 String 클래스를 어떻게 최적화하는지 공부하였다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;래퍼, Class 클래스&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;자바 기본형의 한계를 알아보고 그 한계를 극복하기 위한 래퍼 클래스를 공부하였다.
추가로 클래스의 정보를 나타내는 Class 클래스, 시스템의 정보를 제공하는 System 클래스, 자주 사용하는 Math, Random 같은 클래스도 함께 공부하였다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;열거형 - ENUM&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;열거형은 높은 타입 안전성을 제공하는 훌륭한 기능이다.
단순히 열거형의 문법을 배우는 것이 아니라 본질적으로 열거형이 왜 필요한지 공부하였다. 그리고 열거형이 없던 시절 직접 구현했던 타입 안전 열거형 패턴도 구현해보았다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;중첩 클래스, 내부 클래스&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;클래스 내부에 클래스를 두는 것을 중첩 클래스 또는 내부 클래스라 한다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;예외 처리&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;자바에서 예외 처리 문법은 단순하지만 예외 처리가 왜 필요한지 공부하였다.&lt;/p&gt;</description></item><item><title>Spring MVC</title><link>https://wjdwlsdud.github.io/studying/spring/</link><pubDate>Sun, 12 Oct 2025 00:00:00 +0000</pubDate><guid>https://wjdwlsdud.github.io/studying/spring/</guid><description>&lt;h2 id="서블릿에서-스프링-mvc까지-java-웹-개발의-흐름을-배우다"&gt;서블릿에서 스프링 MVC까지: Java 웹 개발의 흐름을 배우다&lt;/h2&gt;
&lt;p&gt;이번에는 Java 백엔드 개발의 핵심 기술이라 할 수 있는 웹 애플리케이션의 발전 과정을 되짚어보는 시간을 가졌습니다.&lt;/p&gt;
&lt;p&gt;왜 웹 애플리케이션인가?
현대의 애플리케이션은 대부분 웹 환경에서 동작합니다. 우리가 매일 사용하는 수많은 서비스가 바로 웹 애플리케이션이죠. Java 백엔드 개발자는 이러한 웹 애플리케이션의 서버 측 로직을 개발하는 중요한 역할을 담당하며, 이때 가장 강력한 도구로 사용되는 것이 바로 스프링 프레임워크, 특히 스프링 MVC입니다.&lt;/p&gt;
&lt;p&gt;이번 학습을 통해 복잡한 웹 애플리케이션을 쉽고 빠르게 개발할 수 있도록 도와주는 스프링 MVC를 깊이 이해하기 위해, 그 뿌리가 되는 기술부터 차근차근 공부했습니다.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Java 웹 기술의 시작, 서블릿(Servlet)
모든 것은 서블릿에서 시작되었습니다. 서블릿은 클라이언트의 요청을 받고, 비즈니스 로직을 처리한 후, 동적인 HTML 응답을 생성하는 순수 Java 코드입니다. 하지만 서블릿 코드 안에 HTML 코드를 문자열(out.println(&amp;quot;&lt;html&gt;&amp;hellip;&amp;quot;)) 형태로 작성해야 했기 때문에, 화면을 수정하기가 매우 번거롭고 가독성이 떨어지는 단점이 있었습니다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;화면을 분리하다, JSP(JavaServer Pages)
이러한 서블릿의 단점을 보완하기 위해 등장한 것이 JSP입니다. JSP는 HTML 문서 안에 Java 코드를 삽입하는 방식으로, 디자이너와 개발자의 협업을 더 쉽게 만들었습니다. 덕분에 화면(View)을 표현하는 작업이 훨씬 수월해졌습니다.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;하지만 JSP만으로는 부족했습니다. 비즈니스 로직과 화면을 보여주는 코드가 하나의 파일에 뒤섞여, 프로젝트 규모가 커질수록 유지보수가 어려워지는 &amp;lsquo;스파게티 코드&amp;rsquo; 문제가 발생하기 시작했습니다.&lt;/p&gt;
&lt;ol start="3"&gt;
&lt;li&gt;역할 분담의 시작, MVC 패턴
이 문제를 해결하기 위해 MVC(Model-View-Controller) 패턴이라는 설계 사상이 등장했습니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Model: 데이터와 비즈니스 로직을 담당합니다.&lt;/p&gt;
&lt;p&gt;View: 사용자에게 보여지는 화면(UI)을 담당합니다. (JSP)&lt;/p&gt;
&lt;p&gt;Controller: 사용자의 요청을 받아 Model과 View를 연결해주는 중간 다리 역할을 합니다. (Servlet)&lt;/p&gt;
&lt;p&gt;이렇게 각자의 역할을 명확히 분리함으로써, 코드는 훨씬 더 체계적이고 재사용하기 쉬워졌습니다.&lt;/p&gt;
&lt;ol start="4"&gt;
&lt;li&gt;스프링 MVC의 탄생과 실무 활용
MVC 패턴을 직접 구현하는 것은 여전히 반복적이고 번거로운 작업이 많았습니다. 개발자들은 이러한 MVC 패턴을 더 쉽고 편리하게 사용할 수 있도록 도와주는 MVC 프레임워크를 만들기 시작했고, 그중 가장 성공적이고 압도적인 인기를 얻게 된 것이 바로 스프링 MVC입니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;스프링 MVC는 MVC 패턴 구현에 필요한 복잡한 처리 과정을 대신해주어, 개발자가 오직 비즈니스 로직에만 집중할 수 있는 환경을 제공합니다. 이번 학습을 통해 스프링 MVC의 탄생 배경부터 실무에서 주로 사용하는 최신 기술까지 익히며, 왜 수많은 기업이 스프링을 선택하는지 몸소 깨달을 수 있었습니다.&lt;/p&gt;
&lt;p&gt;앞으로 이 기술들을 활용하여 직접 프로젝트를 진행하며 겪는 경험들도 꾸준히 공유해 나가겠습니다. 감사합니다!&lt;/p&gt;
&lt;p&gt;위의 첨부된 링크에서 제가 지금까지 공부한 코드들을 확인 해볼 수 있습니다!&lt;/p&gt;</description></item><item><title>애플, ‘iOS AI’ 전격 발표… “앱 중심에서 에이전트 중심으로” 패러다임 대전환</title><link>https://wjdwlsdud.github.io/news/news2/</link><pubDate>Fri, 10 Oct 2025 00:00:00 +0000</pubDate><guid>https://wjdwlsdud.github.io/news/news2/</guid><description>&lt;p&gt;애플이 차세대 운영체제 &lt;strong&gt;iOS AI&lt;/strong&gt;를 공개하며, 스마트폰의 &lt;strong&gt;UX 패러다임을 앱(App)에서 에이전트(Agent) 중심으로 전환&lt;/strong&gt;하겠다고 선언했다. 애플은 “사용자가 앱을 실행하지 않아도 AI가 자동으로 실행하고 정리하는 시대를 열 것”이라고 발표했으며, 이에 따라 글로벌 IT 업계에 거대한 변화가 예상된다.&lt;/p&gt;
&lt;h2 id="1-ios-ai-무엇이-달라지나"&gt;1. iOS AI, 무엇이 달라지나&lt;/h2&gt;
&lt;p&gt;이번 업데이트의 핵심은 &lt;strong&gt;에이전트형 OS&lt;/strong&gt;다. 사용자가 명령하거나 앱을 직접 열지 않아도, AI가 선제적으로 업무를 처리하는 방식이다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;주요 기능&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;자연어 하나로 멀티 작업 자동 실행&lt;/li&gt;
&lt;li&gt;앱 사용 패턴 기반 ‘선(先)추천형’ UI&lt;/li&gt;
&lt;li&gt;AI가 메시지·이메일을 자동 요약 및 분류&lt;/li&gt;
&lt;li&gt;상황 기반 액션 실행(시간·위치·사용자 상태 반영)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;애플은 이를 ‘&lt;strong&gt;No-App Surface Era(앱 없는 표면의 시대)&lt;/strong&gt;’라고 정의했다.&lt;/p&gt;
&lt;h2 id="2-ux-변화-실행에서-위임으로"&gt;2. UX 변화: ‘실행’에서 ‘위임’으로&lt;/h2&gt;
&lt;p&gt;기존 스마트폰 UX는 &lt;em&gt;“앱 실행 → 작업 수행”&lt;/em&gt; 구조였다.&lt;br&gt;
애플은 이를 아래와 같이 바꾼다.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;기존 UX&lt;/th&gt;
&lt;th&gt;iOS AI UX&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;내가 앱을 켬&lt;/td&gt;
&lt;td&gt;AI가 필요한 앱을 먼저 염&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;내가 정보를 찾음&lt;/td&gt;
&lt;td&gt;AI가 정보를 요약·정리해 제시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;내가 할 일을 계획&lt;/td&gt;
&lt;td&gt;AI가 먼저 제안 &amp;amp; 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;애플은 “&lt;strong&gt;사용자는 의지를 표현만 하면 되고, 실행은 OS가 책임지는 환경을 만들겠다&lt;/strong&gt;”고 강조했다.&lt;/p&gt;
&lt;h2 id="3-우려와-논쟁"&gt;3. 우려와 논쟁&lt;/h2&gt;
&lt;p&gt;전문가들은 기회와 위험을 동시에 지적한다.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;“시스템 레벨의 AI 자동화는 생산성을 폭발적으로 올리지만,&lt;br&gt;
개인정보와 알고리즘 편향에 대한 &lt;em&gt;전례 없는 감시와 규제&lt;/em&gt;가 필요하다.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;특히 AI가 OS 핵심에 들어가면, 사용자가 ‘왜 이런 추천을 봤는지’ 알 권리가 더 중요해질 것으로 보인다.&lt;/p&gt;
&lt;h2 id="4-향후-전망"&gt;4. 향후 전망&lt;/h2&gt;
&lt;p&gt;iOS AI는 내년 3월 베타, 6월 정식 배포가 예상된다.&lt;br&gt;
업계에서는 이번 발표가 사실상 &lt;strong&gt;구글·삼성과의 ‘AI OS 전면전’의 시작&lt;/strong&gt;이라고 해석하고 있다.&lt;/p&gt;
&lt;h2 id="5-결론"&gt;5. 결론&lt;/h2&gt;
&lt;p&gt;애플은 &lt;strong&gt;스마트폰의 다음 시대는 앱이 아니라 에이전트가 주도한다&lt;/strong&gt;는 메시지를 던졌다.&lt;br&gt;
이제 경쟁의 무대는 앱 스토어가 아니라 &lt;strong&gt;생성형 OS의 주도권&lt;/strong&gt;이 될 전망이다.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;※ 본 기사는 창작된 가상의 시나리오이며 실제 기업 발표와 무관합니다.&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>삼성, ‘Galaxy Glass’ 내년 출시설… 스마트폰 이후 차세대 플랫폼 노리나</title><link>https://wjdwlsdud.github.io/news/news3/</link><pubDate>Wed, 01 Oct 2025 00:00:00 +0000</pubDate><guid>https://wjdwlsdud.github.io/news/news3/</guid><description>&lt;p&gt;삼성이 내년 상반기, AR 기반 웨어러블 기기 **Galaxy Glass(가칭)**를 공개할 것이라는 소식이 전해지며, 글로벌 IT 업계의 관심이 집중되고 있다. 애플의 Vision Pro와 메타의 Quest 라인업이 경쟁 중인 가운데, 스마트폰 제조 강자 삼성까지 &lt;strong&gt;AR 풀스택 시장&lt;/strong&gt;에 본격 뛰어든다면 판도가 크게 바뀔 수 있다는 전망이 나온다.&lt;/p&gt;
&lt;h2 id="1-스마트폰-다음-플랫폼으로-안경형-ar"&gt;1. 스마트폰 다음 플랫폼으로 ‘안경형 AR’&lt;/h2&gt;
&lt;p&gt;업계 관계자들에 따르면 Galaxy Glass는 안경 형태의 &lt;strong&gt;초경량 AR 디바이스&lt;/strong&gt;로, 스마트폰 없이도 핵심 기능을 단독 수행할 수 있도록 설계된 것이 특징이다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;예상 기능&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AR 기반 내비게이션 &amp;amp; 실시간 번역&lt;/li&gt;
&lt;li&gt;AI 비서(삼성 Gauss) 연동&lt;/li&gt;
&lt;li&gt;눈동자/제스처 기반 UI&lt;/li&gt;
&lt;li&gt;클라우드 스트리밍 기반 앱 실행&lt;/li&gt;
&lt;li&gt;스마트폰+웨어러블 연동 생태계 확장&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;삼성은 이를 &lt;strong&gt;스마트폰 이후의 주력 인터페이스&lt;/strong&gt;로 설정하고, 플랫폼 전환을 노린다는 평가다.&lt;/p&gt;
&lt;h2 id="2-시장-경쟁-구도"&gt;2. 시장 경쟁 구도&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;기업&lt;/th&gt;
&lt;th&gt;전략 방향&lt;/th&gt;
&lt;th&gt;약점&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;애플&lt;/td&gt;
&lt;td&gt;고성능+프리미엄 생태계&lt;/td&gt;
&lt;td&gt;진입장벽·고가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;메타&lt;/td&gt;
&lt;td&gt;대중형 MR 시장 확대&lt;/td&gt;
&lt;td&gt;수익성 문제&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;삼성(예상)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;경량·실사용성 중심 AR&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;콘텐츠 확보 과제&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;애플이 기술 완성도, 메타가 접근성을 앞세운다면, 삼성은 &lt;strong&gt;실사용성과 경량화를 무기로 다른 길을 갈 것&lt;/strong&gt;이라는 분석이 많다.&lt;/p&gt;
&lt;h2 id="3-전문가-의견"&gt;3. 전문가 의견&lt;/h2&gt;
&lt;p&gt;한 AR 연구자는 다음과 같이 말했다.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;“삼성은 &lt;strong&gt;디스플레이·칩·디바이스 라인업&lt;/strong&gt;을 모두 가진 몇 안 되는 회사다.&lt;br&gt;
만약 진짜 출시한다면, AR 시장의 균형을 바꿀 변수가 될 수 있다.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;다만 &lt;strong&gt;콘텐츠, 앱 생태계, 규제, 개인정보 보호&lt;/strong&gt;는 여전히 해결해야 할 숙제로 꼽힌다.&lt;/p&gt;
&lt;h2 id="4-전망"&gt;4. 전망&lt;/h2&gt;
&lt;p&gt;Galaxy Glass가 실제로 출시된다면, 스마트폰 이후 차세대 플랫폼 경쟁이 &lt;strong&gt;본격적인 3강 구도&lt;/strong&gt;로 재편될 가능성이 높다.&lt;br&gt;
2026년은 AR 대중화의 원년이 될지 주목된다.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;※ 본 기사는 허구의 시나리오로 작성된 가상 콘텐츠이며, 실제 기업 계획과 무관합니다.&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>팩맨</title><link>https://wjdwlsdud.github.io/projects/pacman/</link><pubDate>Sat, 01 Mar 2025 00:00:00 +0000</pubDate><guid>https://wjdwlsdud.github.io/projects/pacman/</guid><description>&lt;p&gt;이 프로젝트는 인공지능 수업의 일환으로 진행한 UC Berkeley Pacman AI 프로젝트입니다. 이 과제의 핵심 목표는 **그래프 탐색(Graph Search)**의 기본이 되는 여러 알고리즘을 직접 구현하고, 이를 팩맨 게임 환경에 적용하여 실제 문제를 해결하는 것이었습니다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;search.py&lt;/strong&gt; 파일에 범용 탐색 알고리즘들을 구현하고, &lt;strong&gt;searchAgents.py&lt;/strong&gt; 파일에 팩맨의 특정 문제(Problem)들을 정의하고 해결하는 방식으로 진행했습니다.&lt;/p&gt;
&lt;h2 id="1-핵심-탐색-알고리즘-구현-searchpy"&gt;1. 핵심 탐색 알고리즘 구현 (search.py)&lt;/h2&gt;
&lt;p&gt;먼저, 어떤 문제에도 적용할 수 있는 4가지 핵심 탐색 알고리즘을 구현했습니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;DFS (깊이 우선 탐색): &lt;strong&gt;Stack(스택)&lt;/strong&gt; 자료구조를 사용하여 가능한 한 깊은 노드를 먼저 탐색하는 알고리즘입니다.
방문한 노드를 기록(explored)하여 무한 루프를 방지하는 그래프 탐색 방식으로 구현했습니다.&lt;/li&gt;
&lt;li&gt;BFS (너비 우선 탐색): &lt;strong&gt;Queue(큐)&lt;/strong&gt; 자료구조를 사용하여 현재 노드에서 가장 가까운(얕은) 노드들을 먼저 탐색합니다.
이 방식은 경로의 비용이 모두 같을 때 최단 경로를 보장합니다.&lt;/li&gt;
&lt;li&gt;UCS (균일 비용 탐색): &lt;strong&gt;PriorityQueue(우선순위 큐)&lt;/strong&gt;를 사용합니다. 각 경로의 &amp;lsquo;누적 비용(cost)&amp;lsquo;을 우선순위로 하여, 항상 비용이 가장 적게 든 경로를 먼저 탐색합니다. 이를 통해 최단 비용의 경로를 보장합니다.&lt;/li&gt;
&lt;li&gt;A* (A-star) 탐색: UCS와 마찬가지로 &lt;strong&gt;PriorityQueue&lt;/strong&gt;를 사용하지만, 우선순위를 &amp;lsquo;현재까지의 누적 비용($g(n)$)&amp;lsquo;과 &amp;lsquo;목표까지의 추정 비용(휴리스틱, $h(n)$)&amp;lsquo;의 합 ($f(n) = g(n) + h(n)$)으로 설정합니다. 정보에 기반한(informed) 탐색으로, UCS보다 훨씬 효율적으로 최적의 해를 찾아냅니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="2-팩맨-문제-정의-및-해결-searchagentspy"&gt;2. 팩맨 문제 정의 및 해결 (searchAgents.py)&lt;/h2&gt;
&lt;p&gt;단순히 알고리즘을 구현하는 것을 넘어, 팩맨이 직면한 복잡한 문제들을 &amp;lsquo;탐색 문제&amp;rsquo;로 모델링하고 해결했습니다.&lt;/p&gt;
&lt;p&gt;📍 4개의 코너 방문 문제 (CornersProblem)팩맨이 맵의 네 귀퉁이에 있는 모든 점을 방문하는 경로를 찾는 문제입니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;상태(State) 정의: 이 문제를 풀기 위해 상태 공간을 단순한 (x, y) 좌표가 아닌, (현재 위치, (방문한 코너 튜플))로 정의했습니다. 예를 들어, ((5, 5), (True, False, False, True))와 같이 현재 위치와 4개 코너의 방문 여부를 함께 기록했습니다.&lt;/li&gt;
&lt;li&gt;목표(Goal) 정의: state[1]에 해당하는 튜플의 모든 값이 True가 되는 순간을 목표 상태로 설정했습니다.
후계자(Successor) 함수: 팩맨이 이동할 때마다, 새로 도착한 위치가 4개의 코너 중 하나인지 확인하고, 만약 코너라면 튜플의 해당 값을 &lt;strong&gt;True&lt;/strong&gt;로 갱신한 새로운 상태를 생성하도록 구현했습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;💡 코너 문제 휴리스틱 (cornersHeuristic)&lt;/p&gt;
&lt;p&gt;위의 코너 문제를 A* 탐색으로 풀기 위한 휴리스틱 함수를 직접 설계했습니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;설계: 휴리스틱은 항상 실제 비용보다 낮거나 같아야 합니다(Admissible).&lt;/li&gt;
&lt;li&gt;로직: &amp;lsquo;현재 위치&amp;rsquo;에서 &amp;lsquo;아직 방문하지 않은 모든 코너&amp;rsquo;까지의 맨해튼 거리(Manhattan Distance)를 각각 계산한 뒤, 그중 가장 큰(max) 값을 반환하도록 했습니다.&lt;/li&gt;
&lt;li&gt;이유: 팩맨은 적어도 남아있는 코너 중 가장 먼 곳까지는 가야 모든 코너를 방문할 수 있으므로, 이 값은 항상 실제 남은 비용의 하한선이 되어 A*의 허용 가능한(admissible) 휴리스틱 조건을 만족합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;🍔 모든 음식 찾기 휴리스틱 (foodHeuristic)&lt;/p&gt;
&lt;p&gt;맵에 흩어져 있는 모든 음식을 먹는 경로를 찾는 &lt;strong&gt;FoodSearchProblem&lt;/strong&gt;을 위한 휴리스틱입니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;로직: 코너 휴리스틱과 유사하게, &amp;lsquo;현재 위치&amp;rsquo;에서 &amp;lsquo;아직 먹지 않은 모든 음식&amp;rsquo;까지의 실제 미로 거리(&lt;strong&gt;mazeDistance&lt;/strong&gt;)를 계산하고, 그중 가장 큰(max) 값을 반환했습니다.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;mazeDistance&lt;/strong&gt; 활용: 맨해튼 거리와 달리, &lt;strong&gt;mazeDistance&lt;/strong&gt;는 BFS를 기반으로 벽을 모두 고려한 실제 최단 거리를 반환해 주어 더 정확한 추정치를 제공합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;🎯 가장 가까운 음식 찾기 (ClosestDotSearchAgent)&lt;/p&gt;
&lt;p&gt;모든 음식을 한 번에 찾는 것은 매우 복잡(NP-hard)하므로, &amp;lsquo;가장 가까운 음식을 찾아 먹는&amp;rsquo; 과정을 반복하는 탐욕(Greedy) 알고리즘을 구현했습니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;findPathToClosestDot&lt;/strong&gt; 구현: &lt;strong&gt;AnyFoodSearchProblem&lt;/strong&gt;(어떤 음식이든 하나만 먹으면 성공)이라는 하위 문제를 정의했습니다.&lt;/li&gt;
&lt;li&gt;UCS 활용: 이 문제에 &lt;strong&gt;UCS&lt;/strong&gt;를 적용하여, 현재 위치에서 가장 비용(거리)이 적게 드는 음식의 위치와 경로를 찾아 반환하도록 했습니다. (비용이 1로 동일하므로 &lt;strong&gt;BFS&lt;/strong&gt;도 동일한 결과를 보장합니다.)&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>전화번호부 애플리케이션</title><link>https://wjdwlsdud.github.io/projects/mobile/</link><pubDate>Fri, 20 Dec 2024 00:00:00 +0000</pubDate><guid>https://wjdwlsdud.github.io/projects/mobile/</guid><description>&lt;p&gt;2024년 2학기 모바일프로그래밍 수업에서 만든 간단한 모바일 앱입니다.&lt;/p&gt;
&lt;p&gt;이 프로젝트는 안드로이드의 기본 기능과 데이터베이스를 활용한 전화번호부 관리 앱입니다.&lt;/p&gt;
&lt;p&gt;먼저, phoneDB라는 이름의 데이터베이스와 phoneTBL 테이블을 설계했습니다. 이 테이블은 **이름(문자형 20)**과 **전화번호(문자형 20)**를 저장하며, 이름은 중복될 수 없도록 UNIQUE 제약 조건을 설정했습니다. &amp;lsquo;홍길동&amp;rsquo;과 제 연락처를 초기 데이터 2개로 포함시켰습니다.&lt;/p&gt;
&lt;p&gt;제가 구현한 주요 기능은 다음과 같습니다.&lt;/p&gt;
&lt;p&gt;메인 화면 (데이터 조회): 앱 실행 시, 데이터베이스에 저장된 모든 사용자의 이름을 리스트(ListView)로 불러와 보여줍니다. 하단에는 &amp;lsquo;추가&amp;rsquo; 버튼과 옵션 메뉴를 배치했습니다.&lt;/p&gt;
&lt;p&gt;연락처 추가 (Create): &amp;lsquo;추가&amp;rsquo; 버튼을 누르면, 별도의 Activity가 열려 이름과 전화번호를 입력받습니다. 입력 완료 후, 이 정보를 메인 Activity로 전달하여 데이터베이스에 저장하고 리스트를 즉시 갱신하도록 구현했습니다.&lt;/p&gt;
&lt;p&gt;데이터베이스 초기화 (Delete All): 옵션 메뉴에서 &amp;lsquo;초기화&amp;rsquo;를 선택하면, 대화상자를 띄워 사용자에게 정말 초기화할 것인지 확인을 받습니다. &amp;lsquo;확인&amp;rsquo;을 누르면 데이터베이스의 모든 내용을 삭제하고 리스트도 새로고침합니다.&lt;/p&gt;
&lt;p&gt;데이터 백업 (Export): 옵션 메뉴의 &amp;lsquo;백업&amp;rsquo; 기능을 통해, 데이터베이스에 저장된 모든 이름과 전화번호를 SD카드(_sdcard) 경로에 제학번.txt 파일로 저장하는 기능을 구현했습니다.&lt;/p&gt;
&lt;p&gt;전화 앱 연동 (Intent): 리스트의 특정 항목을 클릭하면, 해당 항목의 전화번호를 가져와 안드로이드의 기본 전화 앱으로 즉시 연결(Intent)되도록 했습니다.&lt;/p&gt;
&lt;p&gt;수정 및 삭제 (Update/Delete): 리스트 항목을 길게 누르면(Long Click), 선택한 항목을 수정하거나 삭제할 수 있는 별도의 Activity로 이동합니다. 각 작업 시 대화상자를 통해 사용자 확인을 받도록 했으며, 완료 시 메인 Activity의 데이터베이스와 리스트에 변경 사항이 실시간으로 반영되도록 구현했습니다.&lt;/p&gt;</description></item><item><title>리눅스 TCP 채팅 프로그램</title><link>https://wjdwlsdud.github.io/projects/linux/</link><pubDate>Wed, 26 Jun 2024 00:00:00 +0000</pubDate><guid>https://wjdwlsdud.github.io/projects/linux/</guid><description>&lt;p&gt;리눅스 시스템 프로그래밍 수업에서 배운 내용을 바탕으로 간단한 멀티-클라이언트 TCP 채팅 프로그램을 프로젝트로 구현해 보았습니다.&lt;/p&gt;
&lt;p&gt;C언어의 소켓(Socket) 통신과 멀티스레드(pthread) 개념을 직접 적용해 볼 수 있었던 의미 있는 경험이라, 프로젝트의 구조와 핵심 동작 원리, 그리고 배운 점들을 정리해 보려고 합니다.&lt;/p&gt;
&lt;h2 id="1-프로젝트-개요"&gt;1. 프로젝트 개요&lt;/h2&gt;
&lt;p&gt;이 프로그램은 1개의 서버와 다수의 클라이언트가 TCP/IP 프로토콜을 기반으로 실시간 채팅을 주고받을 수 있는 간단한 콘솔(터미널) 기반 채팅방입니다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;주요 기술&lt;/strong&gt;: C언어, TCP/IP 소켓 프로그래밍, pthread (멀티스레딩)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;핵심 기능&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;서버: 다수의 클라이언트 접속을 동시에 관리합니다.&lt;/li&gt;
&lt;li&gt;브로드캐스팅: 한 클라이언트가 보낸 메시지를, 보낸 사람을 제외한 모든 접속자에게 전송합니다.&lt;/li&gt;
&lt;li&gt;멀티 채팅: 여러 사용자가 동시에 메시지를 보내고 받을 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="2-핵심-아키텍처-어떻게-동시에"&gt;2. 핵심 아키텍처: 어떻게 동시에?&lt;/h2&gt;
&lt;p&gt;채팅 프로그램의 핵심은 &amp;lsquo;어떻게 여러 명의 요청을 동시에 처리하는가&amp;rsquo;입니다. accept(), recv(), fgets() 같은 함수들은 기본적으로 &amp;lsquo;블로킹(Blocking)&amp;rsquo; 방식으로 동작합니다. 즉, 자기 차례가 올 때까지 프로그램 전체를 멈추고 기다립니다.&lt;/p&gt;
&lt;p&gt;이 문제를 해결하기 위해 멀티스레딩을 사용했습니다.&lt;/p&gt;
&lt;p&gt;⚙️ &lt;strong&gt;서버: 클라이언트마다 전담 스레드 (Thread-per-Client)&lt;/strong&gt;
서버는 동시에 여러 클라이언트의 접속 요청과 메시지 수신을 처리해야 합니다.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;메인 스레드는 accept() 함수로 클라이언트의 새로운 접속을 기다립니다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;새로운 클라이언트가 접속하면, pthread_create()를 호출해 그 클라이언트만을 전담하는 스레드(client_chat)를 하나 생성합니다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;이 전담 스레드는 recv() 함수를 통해 해당 클라이언트로부터 메시지가 올 때까지 대기합니다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;메인 스레드는 다시 accept()로 돌아가 다음 접속자를 기다립니다.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;즉, &amp;lsquo;접속 처리&amp;rsquo; 스레드와 &amp;lsquo;클라이언트별 메시지 수신&amp;rsquo; 스레드들이 각자 독립적으로 동시에 실행됩니다.&lt;/p&gt;
&lt;p&gt;메시지를 받으면 send_msg 함수가 모든 클라이언트 리스트(clientList)를 순회하며 메시지를 전파(브로드캐스팅)합니다.&lt;/p&gt;
&lt;p&gt;💻 &lt;strong&gt;클라이언트: &amp;lsquo;보내는 스레드&amp;rsquo;와 &amp;lsquo;받는 스레드&amp;rsquo;의 분리&lt;/strong&gt;
클라이언트 역시 큰 숙제가 있습니다. 바로 내가 메시지를 입력하는 중에도 다른 사람의 메시지를 실시간으로 받아야 한다는 것입니다.&lt;/p&gt;
&lt;p&gt;만약 스레드가 하나라면, fgets()로 내 입력을 기다리는 동안 recv()가 실행될 수 없어 다른 사람의 메시지를 받지 못합니다.&lt;/p&gt;
&lt;p&gt;이 문제를 해결하기 위해 클라이언트 프로그램을 2개의 스레드로 분리했습니다.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;메인 스레드 (main 함수): 사용자의 키보드 입력(fgets)을 받아 서버로 전송(send)하는 &amp;lsquo;보내는&amp;rsquo; 역할만 전담합니다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;수신 스레드 (receive 함수): pthread_create()로 생성되며, 오직 서버로부터 메시지를 받는(recv) &amp;lsquo;받는&amp;rsquo; 역할만 전담합니다.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;이렇게 두 스레드가 각자의 역할을 나눠 갖기 때문에, 내가 메시지를 한창 입력하고 있는 중에도 receive 스레드는 서버가 보낸 다른 사람의 메시지를 화면에 실시간으로 출력해줄 수 있습니다.&lt;/p&gt;
&lt;p&gt;위에 첨부된 링크로 코드를 확인하실 수 있습니다!&lt;/p&gt;</description></item><item><title>소속</title><link>https://wjdwlsdud.github.io/experience/</link><pubDate>Tue, 24 Oct 2023 00:00:00 +0000</pubDate><guid>https://wjdwlsdud.github.io/experience/</guid><description/></item></channel></rss>