<?xml version="1.0" encoding="UTF-8"?>
            <rss xmlns:dc="http://purl.org/dc/elements/1.1/"
                 xmlns:content="http://purl.org/rss/1.0/modules/content/"
                 xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
                <channel>
                    <title><![CDATA[edykim.com 블로그 RSS 피드]]></title>
                    <description><![CDATA[이것저것 작성합니다.]]></description>
                    <link>https://edykim.com/</link>
                    <generator>edykim.com</generator>
                    <lastBuildDate>Sun, 15 Nov 2026 02:01:52 GMT</lastBuildDate>
                    
                    <item>
                        <title><![CDATA[작은 34키 키보드 namul34]]></title>
                        <description><![CDATA[]]></description>
                        <link>https://edykim.com/ko/post/namul34-keyboard/</link>
                        <guid isPermaLink="false">https://edykim.com/ko/post/namul34-keyboard/</guid>
                        <pubDate>Mon, 29 Dec 2025 20:03:14 GMT</pubDate>
                        <content:encoded>&lt;figure class=&quot;wide&quot;&gt;
&lt;p&gt;&lt;img src=&quot;/ko/post/namul34-keyboard/keyboard-1.webp&quot; alt=&quot;keyboard&quot;&gt;&lt;/p&gt;
&lt;/figure&gt;
&lt;p&gt;나는 나갈 일이 있을 때마다 뭐든 바리바리 싸 들고 나가는 보부상이다. 어쨌든 죄다
넣어서 나가긴 하지만 가장 고민하게 되는 부분은 키보드다. 가방에 이미 모든 걸
넣고 있다가도 키보드 하나 때문에 가방을 바꿔야 하는 일이 생기기 때문이다. 그래서
늘 작은 키보드를 갖고 싶었다. 그냥 필통이나 수첩처럼 가방에 고민 없이 넣어둘 수
있는 정도 크기의 키보드는 없을까? 몇 년을 고민하다가 생각보다 간단하게 만들 수
있다는 얘기를 보고 직접 만들게 되었다.&lt;/p&gt;
&lt;p&gt;namul34는 34키로 구성된 작은 블루투스 키보드로 계단식 배열(staggered)을 채택하고
있으며 &lt;a href=&quot;https://zmk.studio/&quot;&gt;ZMK 펌웨어&lt;/a&gt;를 기반으로 하고 있다. 기왕 작게 만드는 것 일반적이지 않은
배열로 만들고 싶어서 3행으로 구성했고 스페이스 등 4행에 있을 법한 키 위치를 다
옆이나 레이어 속에 옮겨 두었다. 개인화가 가능한 펌웨어를 사용하고 있어서 여러
레이어를 오가며 정해진 키보다 더 많은 입력이 가능한 것이 큰 장점이다.&lt;/p&gt;
&lt;p&gt;키보드를 만드는 과정은 유튜브에서 많이 찾을 수 있어서 막히는 부분이 크게 없이도
최종 제품을 만들 수 있었다. 특히 PCB를 디자인하고 주문하는 과정도 매우 간단했고
소량 생산에도 생각보다 저렴한 편이라 놀라웠다. 최대한 작은 크기로 만들고 싶어서
낮은 프로파일의 스위치와 키캡을 쓰고 싶었는데 오래 사용해 와서 익숙한 nuphy의
키캡과 스위치를 활용했다. 다만 크기에 맞춰서 키캡을 끼운 터라 각인이 실제
레이아웃과 정확하게 일치하지 않아도 깔끔하니까 좋다.&lt;/p&gt;
&lt;p&gt;개발에 관한 세부적인 사항은 &lt;a href=&quot;/ko/keyboard/namul34&quot;&gt;개발 노트에서 확인&lt;/a&gt; 할 수
있다.&lt;/p&gt;
&lt;figure&gt;
&lt;p&gt;&lt;img src=&quot;/ko/post/namul34-keyboard/layout.webp&quot; alt=&quot;layout&quot;&gt;&lt;/p&gt;
&lt;figcaption&gt;스페이스/엔터 위치가 기묘하게 보이지만 생각보다 금방 익숙해진다&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;div class=&quot;columns&quot;&gt;
&lt;figure&gt;
&lt;p&gt;&lt;img src=&quot;/ko/post/namul34-keyboard/keyboard-3.webp&quot; alt=&quot;keyboard&quot;&gt;&lt;/p&gt;
&lt;figcaption&gt;첫 프로토타입&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;p&gt;&lt;img src=&quot;/ko/post/namul34-keyboard/keyboard-5.webp&quot; alt=&quot;keyboard&quot;&gt;&lt;/p&gt;
&lt;figcaption&gt;무료로 사용할 수 있는 지역 도서관 메이커스랩에서 출력에 도움을 받았다&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;div class=&quot;columns&quot;&gt;
&lt;figure&gt;
&lt;p&gt;&lt;img src=&quot;/ko/post/namul34-keyboard/keyboard-6.webp&quot; alt=&quot;keyboard&quot;&gt;&lt;/p&gt;
&lt;figcaption&gt;깔—끔&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;p&gt;&lt;img src=&quot;/ko/post/namul34-keyboard/keyboard-2.webp&quot; alt=&quot;keyboard&quot;&gt;&lt;/p&gt;
&lt;figcaption&gt;작은 크기는 여행에서도 빛을 발했다&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;언제든 휴대하기 좋게 만들겠다는 생각과 글쓰기에만 쓰겠다는 제약 덕분에 이런
크기의 키보드를 만들어 낼 수 있었다. 다음에는 조금 더 크게 만들더라도 개발
작업에 무리 없이 쓸 수 있을 레이아웃으로 만들어보고 싶다.&lt;/p&gt;</content:encoded>
                    </item>
                    

                    <item>
                        <title><![CDATA[추상화의 목적]]></title>
                        <description><![CDATA[추상화의 목적은 모호하게 하려는 것이 아니라, 오히려 더 정확하게 말할 수 있는,
새로운 의미적 층위를 만드는 데...]]></description>
                        <link>https://edykim.com/ko/post/purpose-of-abstraction/</link>
                        <guid isPermaLink="false">https://edykim.com/ko/post/purpose-of-abstraction/</guid>
                        <pubDate>Fri, 10 Oct 2025 10:39:57 GMT</pubDate>
                        <content:encoded>&lt;blockquote&gt;
&lt;p&gt;추상화의 목적은 모호하게 하려는 것이 아니라, 오히려 더 정확하게 말할 수 있는,
새로운 의미적 층위를 만드는 데 있다. — 에츠허르 다익스트라&lt;/p&gt;
&lt;p&gt;The purpose of abstraction is not to be vague, but to create a new semantic
level in which one can be absolutely precise. — Edsger Dijkstra&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;바이브코딩이란 말도 벌써 낡은 느낌이다. 얼마나 빠르게 새로운 프로덕트, 서비스,
아이디어가 쏟아지는지 따라가기에도 바쁘다. &quot;가끔 똑똑한&quot; 자동 완성에 그치지 않고
적극적으로 코드에 개입할 수 있는 세상이 되었다. 간단한 요구사항을 코드로
바꿔주는 일은 이제 기본이고 긴 맥락을 이해해야 하는 것들도 한번에 척척 쏟아낼
때마다 기분이 이상하다. 때로는 가장 즐거운 부분, 아이디어를 코드로 구체화 하는
과정을 빼앗기는 기분이다. 내 대신 해줬으면 하는 작업을 오히려 내가 부지런히 해서
떠먹여야 하는 상황에 어떤 표정을 지어야 할지 싶어진다. 깊이 고민하며 치열하게
코드를 짜던 시간보다 리뷰 비중이 높아지면서 점점 내 역할과 앞으로 어떤 방향으로
앞으로의 시간을 준비해야 하나 퇴근할 때마다 고민이 커진다.&lt;/p&gt;
&lt;p&gt;실제로 코드를 작성하는 시간은 줄어가는데 코드 이해에 필요한 수준은 더 높아진다는
점에 있다. 코드도 학습의 대상이라서 읽고, 작성하고, 수정하고, 실행하면서
멘탈모델을 구축하는 과정이 코드를 이해하는데 필수적인 과정이었다. 물론 LLM을
활용해서 코드를 요약을 한다거나 읽기 쉽도록 시각적인 형태로 전환하는 등의 접근은
이해도를 높이는데 도움이 되지만 그 과정이 결코 내가 이해하는 일 자체를
대신해주지 않는다. 근래 가장 큰 고민인건 내가 코드에 대한 세부적인 이해가 없는
상황에서 코드를 에이전트에 맡길 수 있는가 하는 점이다.&lt;/p&gt;
&lt;p&gt;그렇다고 해서 완전히 새로운 상황은 아니다. 코드 단위에서 추상화는 우리에게 이미
익숙한 개념이고 세부적인 구현을 잘 숨기는 것은 오히려 모범 사례다. 코드 뿐만
아니다. 팀과 동료, 구성원에게 일감을 위임하는 것도 추상화에서 달성하려는 목표와
유사하다. 층위가 올라갈 때마다 작업은 아이콘을 오른쪽으로 1픽셀 옮기는 것에서
버튼 스타일 변경, 신규UI 디자인 가이드라인 적용이 되는 것처럼. 이런 수준이
되려면 개인 단계에서의 코드 이해는 필수이며, 팀 차원에서는 언어적/비언어적
상호작용을 통해 지속적으로 이해도를 높여야 한다. 이런 과정을 전부 &lt;code&gt;AGENTS.md&lt;/code&gt;에
녹여내 컨텍스트 윈도우를 채울 수 있는 사람이 좋은 결과를 내고 있는 것 아닐까.
코드의 멘탈모델을 이해하고 있으며 팀의 이해도에 기여하고 있었던 중니어-시니어
사람들에겐 더욱 쉽게 유의미한 결과를 만들 수 있을 것 같다.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;자연어가 코드로 변환되는 과정을 볼 때마다 프롬프트도 코드의 동작을 추상화 한다고
생각하게 된다. 코드를 생성한 프롬프트를 모아놓는 것도 비슷한 맥락으로 느껴진다.
업무를 단계적으로 수행할 수 있도록 테스트도 작성하게 하고 예시도 주고 그러면
놀라울 정도로 잘 해낼 때도 많다. 추상화라고 단언하기엔 아직까지 역설적으로
외연의 부분에서 많은 손이 필요하지만 근미래에는 달성할 것이 분명하다. 이렇게
낙관적으로 보면서도 매일 뒤통수 맞는다. 아는 것처럼 척척 얘기하다가도 틀린 부분
지적하면 뻔뻔하게 틀렸네요, 하며 이해 한 척 하면서 또 틀린 얘기 반복 하는 일을
보면 감정 하나 없는 컴퓨터에 화를 내는 사람이 되고 만다. 방금 전에 잘 했다고 또
잘한다는 보장이 잘 없다. 물론 사람도 그렇지만.&lt;/p&gt;
&lt;p&gt;나는 오늘도 프롬프트를 수정하고 또 결과를 기다린다. 에이전트는 지치지도
퇴근하지도 않는다. 심지어 그 결과물이 부족할 땐 시간이 답이다. 3달, 6달 후
나오는 새로운 모델이 해결할 것이니까.&lt;/p&gt;
&lt;section data-footnotes class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;사실 최근 연구에서는 생산성이 오히려 떨어졌다는 얘기도 있지만.
&lt;a href=&quot;https://arxiv.org/abs/2507.09089&quot;&gt;arXiv:2507.09089&lt;/a&gt; &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded>
                    </item>
                    

                    <item>
                        <title><![CDATA[(피로감 없는) 좋아요 버튼]]></title>
                        <description><![CDATA[알고리즘 세상에서 다음에 무엇을 보여줄지 작은 움직임 하나도 놓치지 않고
차곡차곡 모은다. 이따금 생각만 했던 것들을 마치 이미 다 알고...]]></description>
                        <link>https://edykim.com/ko/post/the-zero-fatigue-like-button/</link>
                        <guid isPermaLink="false">https://edykim.com/ko/post/the-zero-fatigue-like-button/</guid>
                        <pubDate>Thu, 21 Aug 2025 20:10:36 GMT</pubDate>
                        <content:encoded>&lt;p&gt;알고리즘 세상에서 다음에 무엇을 보여줄지 작은 움직임 하나도 놓치지 않고
차곡차곡 모은다. 이따금 생각만 했던 것들을 마치 이미 다 알고 있었다는 것처럼
사이사이에 광고로 보여줄 때마다 놀랍다 못해 징그럽다는 생각마저 든다. 그런
피로감이 들기 시작할 때부터 웹페이지에서 다른 서비스를 사용하는 것을 그만두기
시작했다. 여기서는 적어도 알게 모르게 수집되는 것들이 없기를 바랐다.&lt;/p&gt;
&lt;p&gt;대신에 그저 숫자에 불과해서 가벼운 마음으로 누를 수 있는 무언가를 만들고
싶어졌고 그 결과로 좋아요 버튼을 몇 달 전에 만들어 붙였다. 이런저런 복잡한
서비스에 의존성을 갖고 싶지도 않아서 작은 리눅스 서버에 아주 작은 웹서비스를
얹었다.&lt;/p&gt;
&lt;p&gt;좋아요 버튼을 누르는데 로그인도 필요 없고 서버에 누가 눌렀는지 기록을 남기는
것도 없다. 누르면 멀리 어느 서버에 숫자 1이 더해지는 것이 전부다. 누군가는
페이지를 보고 이 글을 좋아하는 사람이 이렇게나 있었구나 하는 정도, 나는 누가
와서 이 글을 보고 갔구나 하는 정도. 그런 가벼운 좋아요 버튼은 심지어 좋아하는
만큼 여러 번이고 반복해서 누르는 것도 가능하다. 평등 투표는 누가 투표했는지
기록해야 아는 법이니까. 그래서 이 좋아요 버튼은 좋아하는 사람의 수가 아니라
좋아하는 사람의 마음 수에 가깝다. 누구는 많이, 누구는 조금 좋아할 수도 있다.
때로는 정확하고 명료한 숫자보다 대략적인 마음이 전해지는 것만으로도 충분하다.&lt;/p&gt;
&lt;p&gt;수치화된 상호작용은 외부에서 정량적으로 관찰하고 나라는 존재를 정의하는 것,
나아가 존재 자체를 상품으로 만드는데 더 활용되고 있다. 여기서 멈추지 않고,
정량화된 명성과 금전적 보상이 지속적인 유인 요소가 되어 이제는 현상을 넘어
팔로워 수와 조회 수로 로 대화하는 일이 일상이 되었다. 소통 방식으로의
상호작용은 먼 과거의 이야기가 된 것 같아 아쉽다. 상품화된 사용자로 휘둘리지
않으면서도 건강한 상호작용을 이어가는 흐름이 더 주목되었음 좋겠다.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-1&quot; id=&quot;user-content-fnref-1&quot; data-footnote-ref aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;section data-footnotes class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;Footnotes&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;user-content-fn-1&quot;&gt;
&lt;p&gt;최근에 그런 인상을 받은 서비스가 있는데
&lt;a href=&quot;https://hackers.pub&quot;&gt;해커스펍&lt;/a&gt;이다. &lt;a href=&quot;#user-content-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded>
                    </item>
                    

                    <item>
                        <title><![CDATA[2015 Honda Fit 배터리 교체기]]></title>
                        <description><![CDATA[2019년에 구입한 2015년식 Honda Fit은 차 없이는 도통 힘든 미국 생활에 큰 도움이
되고 있다. 호주에서 지낼 때부터 Hond...]]></description>
                        <link>https://edykim.com/ko/post/2015-honda-fit-battery-replacement/</link>
                        <guid isPermaLink="false">https://edykim.com/ko/post/2015-honda-fit-battery-replacement/</guid>
                        <pubDate>Wed, 02 Jul 2025 21:02:51 GMT</pubDate>
                        <content:encoded>&lt;p&gt;2019년에 구입한 2015년식 Honda Fit은 차 없이는 도통 힘든 미국 생활에 큰 도움이
되고 있다. 호주에서 지낼 때부터 Honda Jazz가 막연히 갖고 싶은 차였는데
이렇게 타고 다니게 될 줄이야 😬 연비든 크기든 뭐든 모든 게 다 만족스러웠다. 다만 2주만
운행하지 않아도 쉽게 배터리가 방전되는 문제가 있었다. 중고로 구입해서
그런가보다 하고 새 배터리로 교체했고 한동안은 또 괜찮다가 또 금방 방전되기
시작했다. 덕분에 휴대용 점프 배터리를 항상 들고 다녀야 했다.&lt;/p&gt;
&lt;p&gt;뒤늦게 인터넷 검색해보니 배터리 규격이 작아서 생기는, 의외로 흔한 문제였다. 추운
동네에서는 더 심하다니 그나마 캘리포니아여서 오히려 나은 사정이었던 건데, 게다가
작은 규격이 흔하지도 않아서 취급하는 곳도 많지 않았고 그 탓에 가격도 더 비쌌다.
더 큰 배터리로 교체하면 된다는데 새 배터리로 교체한지 얼마 되지 않았던 터라 좀만
더 참고 기다리기로 했다. 학교에 종종 몰고 갈 때마다 점프 배터리 챙기는 일이
일상이 되었었다. 번거로워도 시간없다는 핑계로 대충 타고 다녔는데 이제 졸업도
했겠다 탈 일이 더 많을 것 같아 얼른 교체했다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;51R 배터리&lt;/li&gt;
&lt;li&gt;51R 배터리 트레이 (파트번호: 31521-T5A-000)&lt;/li&gt;
&lt;li&gt;배터리 절연 그리스 (dielectric grease)&lt;/li&gt;
&lt;li&gt;10mm 렌치&lt;/li&gt;
&lt;li&gt;장갑&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;원래는 151R 규격 배터리인데 51R 배터리로 교체하면 된단다. 단순하게 큰 배터리로
늘리면 된다니 싶었는데 놀랍게도 미주 차량에만 작은 배터리고 다른 지역엔 다 51R
배터리가 기본으로 탑재되어 있다고. 배터리 트레이는 기존 있는 걸 잘라도 되고 큰
규격에 맞는 트레이를 사도 되는데 기왕 하는 김에 아마존에서 15불 정도에 구입했다.
배터리는 코스트코에서 구입했다. 코스트코에서 구입하려고 하면 차종을 물어보는데
그냥 시빅 얘기하던지 지금51R 설치 되어있다고 하면 된단다. 나는 별 말 없이 구입할
수 있었다.&lt;/p&gt;
&lt;div class=&quot;columns&quot;&gt;
&lt;figure&gt;
&lt;p&gt;&lt;img src=&quot;/ko/post/2015-honda-fit-battery-replacement/battery.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;figcaption&gt;151R과51R 비교. 아예 체급이 달랐다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;p&gt;&lt;img src=&quot;/ko/post/2015-honda-fit-battery-replacement/after.webp&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;figcaption&gt;교체 후 모습&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;https://youtu.be/nW_rz2aVaUc&quot;&gt;교체 영상&lt;/a&gt;이 이미 많아서 쉽게 따라했고 20분 정도면 충분했다.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;마이너스 단자(검정) 분리&lt;/li&gt;
&lt;li&gt;플러스 단자(빨강) 분리&lt;/li&gt;
&lt;li&gt;배터리 고정 브라켓 분리&lt;/li&gt;
&lt;li&gt;배터리, 측면 커버, 트레이 제거&lt;/li&gt;
&lt;li&gt;새 트레이와 배터리 설치&lt;/li&gt;
&lt;li&gt;배터리 측면 커버 부착&lt;/li&gt;
&lt;li&gt;브라켓 조립&lt;/li&gt;
&lt;li&gt;배터리 연결부와 단자에 절연 그리스 도포&lt;/li&gt;
&lt;li&gt;플러스 단자(빨강)을 연결&lt;/li&gt;
&lt;li&gt;마이너스 단자(검정)을 연결&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;차량 악세사리 같은건 교환해본 적이 있지만 배터리를 교체해본 것은 처음이라서
신기했다. 배터리 바꾸고 나서도 쌩쌩 잘 돌아가는 차에 기분이 좋았다. IKEA 가구
직접 조립해서 애정이 더 가는 것이랑 비슷한 기분이다. 별 고장 없이 오래 탈 수
있음 좋겠다.&lt;/p&gt;</content:encoded>
                    </item>
                    

                    <item>
                        <title><![CDATA[JetBrains PHPverse 2025 메모]]></title>
                        <description><![CDATA[JetBrains PHPverse 2025...]]></description>
                        <link>https://edykim.com/ko/post/phpverse-2025/</link>
                        <guid isPermaLink="false">https://edykim.com/ko/post/phpverse-2025/</guid>
                        <pubDate>Mon, 23 Jun 2025 16:25:43 GMT</pubDate>
                        <content:encoded>&lt;p&gt;JetBrains &lt;a href=&quot;https://lp.jetbrains.com/phpverse-2025/&quot;&gt;PHPverse 2025&lt;/a&gt;을 보면서 짧게
적었다. PHP 30주년을 맞아 즐겁고 축하 분위기 속에 진행되었다. 다년간 서로 영향을
주고 받으면서 성장한 라라벨과 심포니, 새로운 방향성을 제시하고 있는 FrankenPHP와
발족 이후 풍성한 활동을 하고 있는 PHP 재단까지 PHP의 현재를 폭넓게 살펴볼 수
있었던 시간이었다.&lt;/p&gt;
&lt;h2 id=&quot;table-of-contents&quot;&gt;Table of Contents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;#frankenphp-reinventing-php-for-the-modern-web---k%C3%A9vin-dunglas&quot;&gt;FrankenPHP: Reinventing PHP for the Modern Web - Kévin Dunglas&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#symfony-current-state-and-future-plans---nicolas-grekas&quot;&gt;Symfony: Current State and Future Plans - Nicolas Grekas&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#building-mcp-servers-with-php---marcel-pociot&quot;&gt;Building MCP Servers With PHP - Marcel Pociot&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#how-ai-is-changing-the-tech-industry---cheuck-ting-ho&quot;&gt;How AI Is Changing the Tech Industry - Cheuck Ting Ho&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#laravel-qa-with-its-creator---taylor-otwell&quot;&gt;Laravel: Q&amp;#x26;A With Its Creator - Taylor Otwell&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#the-future-of-php-education---jeffrey-way-povilas-korop-kevin-bond&quot;&gt;The Future of PHP Education - Jeffrey Way, Povilas Korop, Kevin Bond&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#php-foundation-growing-php-for-the-future---roman-pronskiy-gina-banyard&quot;&gt;PHP Foundation: Growing PHP for the Future - Roman Pronskiy, Gina Banyard&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&quot;frankenphp-reinventing-php-for-the-modern-web---kévin-dunglas&quot;&gt;FrankenPHP: Reinventing PHP for the Modern Web - Kévin Dunglas&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://frankenphp.dev/&quot;&gt;FrankenPHP&lt;/a&gt; 에 대한 간략한 소개와 함께 현재 개발 상황을
공유했다. FrankenPHP는 go로 작성된 현대적 PHP 앱서버로 요즘 뜨거운 프로젝트 중
하나로 최근엔 PHP 재단의 지원도 받기 시작했다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;NGINX+FPM 또는 Apache+mod_php를 대체&lt;/li&gt;
&lt;li&gt;상당한 성능 향상 (~25%)&lt;/li&gt;
&lt;li&gt;쉬운 배포: 도커도 가능하고 바이너리애 임베딩도 가능&lt;/li&gt;
&lt;li&gt;가장 빠른 PHP 엔진&lt;/li&gt;
&lt;li&gt;103 early hints 지원&lt;/li&gt;
&lt;li&gt;실시간 데이터 전송 지원
(&lt;a href=&quot;https://symfony.com/doc/current/mercure.html&quot;&gt;Mercure&lt;/a&gt; 사용, &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events&quot;&gt;Server-sent
events&lt;/a&gt;
참조)&lt;/li&gt;
&lt;li&gt;대부분 프레임워크 문제 없이 지원&lt;/li&gt;
&lt;li&gt;HTTPS 자동화&lt;/li&gt;
&lt;li&gt;HTTP/2, HTTP/3 네이티브 지원&lt;/li&gt;
&lt;li&gt;Brotli, zstandard, gzip 압축 지원&lt;/li&gt;
&lt;li&gt;구조화된 로그 지원&lt;/li&gt;
&lt;li&gt;prometheus/openmetrics, opentelementry 등 메트릭과 트레이싱 지원&lt;/li&gt;
&lt;li&gt;클라우드 네이티브&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Go로 작성된 만큼 go의 가볍고 강력한 동시성, 성능의 혜택을 그대로 누릴 수 있게
됐다. 또한 go의 &lt;code&gt;Caddy&lt;/code&gt; 웹서버를 기반으로 하고 있어서 &lt;code&gt;Caddy&lt;/code&gt;의 모든 기능과
모듈을 사용할 수 있게 되었다. 거인의 어깨에 서서 고성능 달성!&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ docker run -v $PWD:/app \
    -p 80:80 -p 443:443 -p 443:443/udp \
    duglas/frankenphp
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;정적 바이너리로도 사용 가능해서 php 코드와 함께 번들해서 배포도 가능하게 되었다.
homebrew나 리눅스 패키지로도 이미 다 배포되어 있어 손쉽게 사용할 수 있다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ curl https://frankenphp.dev/install.sh | sh
$ mv frankenphp /usr/local/bin/
$ frankenphp php-server -r public/
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ composer install --no-dev -a
$ git clone https://github.com/dunglas/frankenphp &amp;#x26;&amp;#x26; cd frankenphp
$ EMBED=/path/to/my/app ./build-static.sh
$ ./dist/frankenphp-&amp;#x3C;os&gt;-&amp;#x3C;arch&gt; php-server
$ ./dist/frankenphp-&amp;#x3C;os&gt;-&amp;#x3C;arch&gt; php-cli my-command
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;다른 특징은 워커 모드의 지원인데 goroutines과 채널을 활용해서 더 빠르게 요청을
처리할 수 있다고 한다. 근래 대부분의 프레임워크와 라이브러리, 서비스(Symfony,
Laravel Octane, Platform.sh, Laravel Cloud, Clever Cloud 등)에서 이미 잘
지원하고 있다고 한다.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;frankenphp {
  worker {
    file ./public/worker.php
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;103 Early Hints&lt;/code&gt;도 지원한다. 웹서버의 응답이 완전히 처리되기 전에는
브라우저에서 html을 받을 때까지 기다리게 되는데 정보성 응답으로 에셋을 미리 받을
수 있도록 돕는다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-php&quot;&gt;// 바닐라
header(&#39;Link: &amp;#x3C;/styles.css&gt;; rel=preload; as=style&#39;);
header_send(103);
echo &amp;#x3C;&amp;#x3C; &#39;HTML&#39;
&amp;#x3C;!doctype html&gt;
&amp;#x3C;title&gt;Hello FrankenPHP&amp;#x3C;/title&gt;
&amp;#x3C;link rel=&quot;stylesheet&quot; href=&quot;style.css&quot;&gt;
HTML;

// symfony, 또는 laravel
$r = new Response();
$r-&gt;headers-&gt;set(&#39;Link&#39;, &#39;&amp;#x3C;/style.css&gt;; rel=preload; as=style&#39;);
$r-&gt;sendHeaders(103);
// ...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;go로 확장을 작성하고 php에서 쉽게 접근이 가능한 것도 재미있는 부분이었다. 물론
확장을 사용하기 위해서는 정적 컴파일이 필요하다. Zend 엔진 타입을 Go 타입으로
변환하는 등의 헬퍼를 제공해서 사용성을 높였다. 지원하는 타입은 계속 추가하는
과정에 있다고 한다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-go&quot;&gt;//export_php:function background_hello(string $name): void
func BackgroundHello(*C.zend_string foo) {
  go func() {
    time.Sleep(10*time.Second)
    slog.Info(&quot;Hello&quot;, &quot;name&quot;, franken.GoString(unsafe.Pointer(foo))
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;위 함수를 다음처럼 간편하게 확장으로 빌드할 수 있다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;$ go mod init example.com/myextension
$ cd myextension
$ frankenphp extension-init myextension.go
 ...
$ xcaddy build \
    --output frankenphp \
    --with github.com/dunglas/frankenphp/caddy \
    --with example.com/myextension
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&quot;language-php&quot;&gt;&amp;#x3C;?php
background_hello(&quot;Alexandre Daubois&quot;); // 직접 사용 가능
&lt;/code&gt;&lt;/pre&gt;
&lt;h1 id=&quot;symfony-current-state-and-future-plans---nicolas-grekas&quot;&gt;Symfony: Current State and Future Plans - Nicolas Grekas&lt;/h1&gt;
&lt;p&gt;Symfony도 라라벨과 함께 PHP 생태계에 큰 역할을 하는 프로젝트로 강력한 PHP
프레임워크이기도 하면서 작고 강력하면서도 다양한 라이브러리를 만들고 있다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;지속적인 발전과 하위 호환성: 반년 주기로 새 기능 배포, 안정성 5년 보장, 대규모
업그레이드는 레거시 코드 제거에 관한 부분 (deprecation을 미리 정리하는 것으로
대비하기)&lt;/li&gt;
&lt;li&gt;개발자 경험 향상
&lt;ul&gt;
&lt;li&gt;다양한 개발용 CLI 지원 (&lt;code&gt;symfony&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;API 플랫폼 (&lt;code&gt;#[ApiResource]&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://ux.symfony.com&quot;&gt;ux.symfony.com&lt;/a&gt; 별도 빌드 없이 사용 가능한 UI
컴포넌트 (Stimulus랑 Turbo 사용)&lt;/li&gt;
&lt;li&gt;autowiring &amp;#x26; autoconfiguration: yaml 설정 없이도 알잘딱 붙음, 물론
어트리뷰트도 활용 가능
&lt;pre&gt;&lt;code class=&quot;language-php&quot;&gt;&amp;#x3C;?php
class ChannelBroadcaster
{
  public function __construct(
    #[AutowireIterator(ChannelInterface::class)
    private iterable $channels
  ) {
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;다양한 개발도구 지원: &lt;code&gt;dd()&lt;/code&gt;, &lt;code&gt;dump()&lt;/code&gt;, 에러페이지, 디버그 툴바,
&lt;code&gt;bin/console debug:router, debug:autowiring&lt;/code&gt; 등등&lt;/li&gt;
&lt;li&gt;쉽게 설정 가능한 앱: &lt;code&gt;%env(...)%&lt;/code&gt;로 동적 환경변수 설정, 시크릿 관리,
워커모드, 컴파일, SymfonyCloud&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;단독 컴포넌트: 엄청 많음. &lt;a href=&quot;https://symfony.com/packages&quot;&gt;문서 참조&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Messenger&lt;/strong&gt;: 메시지 버스 + 큐 시스템. 비동기 잡, CQRS, 이벤트 관리
&lt;ul&gt;
&lt;li&gt;Doctrine, RabbitMQ, Redis 등과 잘 동작&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HttpClient&lt;/strong&gt;: 비동기, 스트리밍 가능 재시도, 캐시, 프로파일러, SSE 지원
안정성, 실패 안전성, Interoperable (이식성)&lt;/li&gt;
&lt;li&gt;JSONStreamer: &lt;code&gt;json_encode&lt;/code&gt;/&lt;code&gt;json_decode&lt;/code&gt;와 다르게 스트림 가능&lt;/li&gt;
&lt;li&gt;ObjectMapper: DDO 작성 돕는&lt;/li&gt;
&lt;li&gt;Twig 확장: 쉽게 twig 헬퍼 연결 가능&lt;/li&gt;
&lt;li&gt;Console 확장: 어트리뷰트로 쉽게 정의 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이외에도 최신 PHP 기능에도 잘 동작하고 PHP에 기여를 많이 한다, 문서화도 많이
신경 쓴다, 큰 규모의 건강한 커뮤니티가 잘 운영되고 있다는 등 이야기로 정리했다.&lt;/p&gt;
&lt;p&gt;행사 디스코드에서 누가 Symfony 직장 잡기 힘들지 않냐고 푸념했는데 자기네는
Symfony만 엄청 뽑는다며 온갖 유럽 국가 이름이 쏟아졌다.&lt;/p&gt;
&lt;h1 id=&quot;building-mcp-servers-with-php---marcel-pociot&quot;&gt;Building MCP Servers With PHP - Marcel Pociot&lt;/h1&gt;
&lt;p&gt;LLM이 어떻게 MCP 서버를 활용해서 서비스에 접근하는지 설명하고
&lt;a href=&quot;http://github.com/php-mcp/server&quot;&gt;php-mcp/server&lt;/a&gt;를 사용해서 MCP 서버를
작성하는 예제를 선보였다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://tinkerwell.app/&quot;&gt;Tinkerwell&lt;/a&gt;: REPL 도구&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://expose.dev/&quot;&gt;Expose&lt;/a&gt;: 로컬 터널링, ReactPHP 사용&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://herd.laravel.com/&quot;&gt;Laravel Herd&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;MCP (Model - Context - Protocol)
&lt;ul&gt;
&lt;li&gt;LLM이 MCP 서버를 통해 컨텍스트를 이해&lt;/li&gt;
&lt;li&gt;컨텍스트 타입
&lt;ul&gt;
&lt;li&gt;MCP 클라이언트(예를 들면 JetBrains IDE, Claude Desktop)에서 처리할 수 있는
타입들&lt;/li&gt;
&lt;li&gt;tools, resources, prompts, sampling&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;JSON-RPC 프로토콜로 MCP 클라이언트-서버 소통
&lt;ul&gt;
&lt;li&gt;사용 가능한 Transports: 표준 입출력 (stdio), Server-Sent Events (SSE), 웹소켓&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;e.g. claude에 정의해서 사용하기
&lt;a href=&quot;https://github.com/Automattic/mcp-wordpress-remote&quot;&gt;@automattic/mcp-wordpress-remote&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;MCP 직접 만들기: 많은 패키지 있지만 여기서는
&lt;a href=&quot;http://github.com/php-mcp/server&quot;&gt;php-mcp/server&lt;/a&gt; 사용
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;composer require php-mcp/server
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&quot;language-php&quot;&gt;&amp;#x3C;?php
namespace App\MCP;

use PhpMcp\Server\Attributes\McpTool;
use App\Models\DownloadStatistic;

class FetchDownloads
{
  /**
   * Retrieve the number of Herd downloads.
   *
   * @return int The number of downloads.
   */
  #[McpTool(name: &#39;fetch_downloads&#39;)]
  public function count(): int
  {
    return DownloadStatistic::count();
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&quot;language-php&quot;&gt;#!/usr/bin/env php
&amp;#x3C;?php
declare(strict_types=1);
require_once __DIR__ . &#39;/vendor/autoload-php&#39;;

use PhpMcp\Server\Server;
use PhpMcp\Server\Transports\StdioServerTransport;

try {
  $server = Server::make()
    -&gt;withServerInfo(&#39;My MCP Server&#39;, &#39;1.0.0&#39;)
    -&gt;build();
  $server-&gt;discover(
    basePath:__DIR__,
    scanDirs: [&#39;app/MCP&#39;],
  );
  $transport = new StdioServerTransport();
  $server-&gt;listen($transport);
  exit(0);
} catch(\Throwable $e) {
  fwrite(STDERR, &quot;[MCP SERVER CRITICAL ERRPR]\n&quot; . $e . &quot;\n&quot;);
  exit(1);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;// claude_desktop_config.json
{
  &quot;mcpServers&quot;: {
    &quot;php-mcp&quot;: {
      &quot;command&quot;: &quot;php&quot;,
      &quot;args&quot;: [ &quot;/path/to/mcp-server.php&quot; ]
    }
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;McpResource&lt;/code&gt;로 리소스 정의 제공 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&quot;how-ai-is-changing-the-tech-industry---cheuck-ting-ho&quot;&gt;How AI Is Changing the Tech Industry - &lt;a href=&quot;https://cheuk.dev/&quot;&gt;Cheuck Ting Ho&lt;/a&gt;&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;바이브코딩은 죄악이 아니지만 무책임한 코딩은 죄악임&lt;/li&gt;
&lt;li&gt;LLM을 활용하는 워크플로우: 액션 플랜 수립/수행하고 결과를 평가하기&lt;/li&gt;
&lt;li&gt;개인정보와 사용 동의 유의하기, AI의 응답에 비판적으로 접근, 맞는 내용인지
확인하기, 저작권 유의하기, AI 사용하는 것에 대해 정직하기, AI 책임감 있게
사용하기&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&quot;laravel-qa-with-its-creator---taylor-otwell&quot;&gt;Laravel: Q&amp;#x26;A With Its Creator - Taylor Otwell&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;엔터프라이즈 닷넷, COBOL으로 개발 경력 시작, 당시 환경적으로 쉽게 사용할 수
있던 PHP를 사이드로 사용하다가 자연스럽게 프레임워크로 성장했고 그게 라라벨의
시작점이라고.&lt;/li&gt;
&lt;li&gt;php 5.3에서 중요한 현대적 기능이 소개된 덕분에 시너지를 얻어 라라벨이 큰
성장을 할 수 있었다고 (5.3의 네임스페이스, 익명함수, 지연 바인딩 등, 5.4의
traits 등)&lt;/li&gt;
&lt;li&gt;라라벨에서 쉽게 해결할 수 있는 대부분의 문제는 솔루션이 존재. 새로운 무언가를
만들어내는 일에서 어려움을 느끼지만 그래도 때가 되면 자연스럽게 새로운 것이
도출되는 경험을 함.&lt;/li&gt;
&lt;li&gt;서버리스에 대한 생각은 서버를 전혀 고려하지 않고도 개발할 수 있는, 어디
로그인해서 뭘 생성하고 하는 것 조차도 숨길 수 있으면 좋겠다고 생각하는 편.
아직도 Laravel Forge에서는 많은 부분을 알고 있어야 하는 상황이긴 하지만 최대한
쉽고 간단하게 사용할 수 있도록 하기 위해 노력하고 있음 (Laravel Nightwatch는
이 날 발표된 프로젝트)&lt;/li&gt;
&lt;li&gt;1인 기업으로 시작했지만 2024에는 10여명 규모였고 지금은 70여명 규모로 성장.
(개발 외에도 디자인, 마케팅, 운영 등) 다양한 커뮤니티, 중소규모, 대기업
엔터프레이즈까지 지원하기 위해 노력하고 있음.&lt;/li&gt;
&lt;li&gt;FrankenPHP에 긍정적. 라라벨에서도 적극 돕고 있음.&lt;/li&gt;
&lt;li&gt;PHP는 오래 사용되어 왔기 때문에 AI, LLM에서도 라라벨이나 PHP 코드를 잘 작성함.
MCP 등 로컬 환경에서 PHP를 잘 작성할 수 있도록 가장 최신 명세를 제공하고 최근
버전에서 사용하고 있는 코딩 규칙을 사용할 수 있게 하는 실험이 진행중.&lt;/li&gt;
&lt;li&gt;심포니를 프레임워크로 직접 사용한 적은 없지만 컴포넌트를 많이 사용하고 있음.
PHP는 성숙하고 잘 관리되고 있는 두 프레임워크 덕분에 좋은 생태계가 조성됨.&lt;/li&gt;
&lt;li&gt;교육에 관해:
&lt;ul&gt;
&lt;li&gt;PHP 쉽게 시작할 수 있도록 &lt;a href=&quot;https://php.new/&quot;&gt;php.new&lt;/a&gt; 개발에 관여. 어떤
환경에서든 쉽게 설치 가능.&lt;/li&gt;
&lt;li&gt;라라벨 부트캠프를 새로운 도구/프레임워크에 맞게 업데이트 진행중.&lt;/li&gt;
&lt;li&gt;입문자가 쉽게 읽고 사용할 수 있는 문서화에 집중.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;API 구축에 촛점을 둔 Lumen이 있었는데 더이상 지원하지 않고 라라벨 11에서 기본
파일 구조를 대폭 줄였음. 프로젝트 생성에서 &lt;code&gt;--api&lt;/code&gt;를 사용하면 블레이드 등 API
구축에서 불필요한 부분을 간소화. Lumen에서 얻은 교훈은 가벼운 구조에 집중한
프레임워크지만 규모가 커지면 결국 라라벨에 있는 기능이 필요해질 때가 있는데
그걸 지원하는게 오히려 더 복잡한 구현을 야기한다는 점을 배움.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&quot;the-future-of-php-education---jeffrey-way-povilas-korop-kevin-bond&quot;&gt;The Future of PHP Education - Jeffrey Way, Povilas Korop, Kevin Bond&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://laracasts.com/&quot;&gt;Laracasts&lt;/a&gt;의 Jeffery Way,
&lt;a href=&quot;https://laraveldaily.com/&quot;&gt;LaravelDaily&lt;/a&gt;의 Povilas Korop,
&lt;a href=&quot;https://symfonycasts.com/&quot;&gt;SymfonyCasts&lt;/a&gt;의 Kevin Bond가 PHP 교육에 관한 패널
토의를 진행했다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;과거의 학습 방식과 비교하면 근래 교육 환경은 많이 변화되었음. 무엇보다도 AI
도구들이 즉각적인 피드백을 제공한다는 점에서 입문자 수준의 질문은 거의
사라지고 고급 주제의 질문이 늘어남.&lt;/li&gt;
&lt;li&gt;컨텐츠 소비에 있어 긴 코스보다 짧고 핵심적인 영상을 선호. 교육자의 입장에서는
길게 자세히 가르쳐야 할지, 아니면 짧고 빠르게 접근해야 할지 고민이 됨.&lt;/li&gt;
&lt;li&gt;입문 수준의 컨텐츠는 여전히 중요하지만 접근 방식과 매체를 달리해야 함. 짧은
튜토리얼, 실무 워크플로우, 문제 해결 중심.&lt;/li&gt;
&lt;li&gt;PHP 언어 자체에 대한 부정적인 인식은 분홍 코끼리 효과, 즉 분홍 코끼리를
떠올리지 말라는 말에 분홍 코끼리를 먼저 떠올리는 것과 같은 효과가 있음. PHP
자체를 홍보하는 접근보다 Laravel이나 Symfony와 같은 실용적인 도구를 중심으로
관심을 유도하는 것이 오히려 효과적.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&quot;php-foundation-growing-php-for-the-future---roman-pronskiy-gina-banyard&quot;&gt;PHP Foundation: Growing PHP for the Future - Roman Pronskiy, Gina Banyard&lt;/h1&gt;
&lt;p&gt;PHP 재단에 대한 개괄적인 이야기와 현재 무엇이 진행되고 있는지를 설명했다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;재단 출범 이전의 역사적 배경
&lt;ul&gt;
&lt;li&gt;1998 PHP3 리부트: 확장 아키텍처를 완전히 재작성&lt;/li&gt;
&lt;li&gt;2000 PHP4 객체 모델: 불완전한 객체지향 프로그래밍 지원&lt;/li&gt;
&lt;li&gt;2004 PHP5: Zend Engine 2로 제대로 된 객체지향 프로그래밍 지원&lt;/li&gt;
&lt;li&gt;2007-2010 PHP6: 결국 완료되지 못하고 폐기됨&lt;/li&gt;
&lt;li&gt;2014 PHP7 이전 성능 문제: HHVM의 상승세&lt;/li&gt;
&lt;li&gt;2021 지속가능성 문제: 펀딩 없음, 유급 개발자는 한 명 남음, 불투명한 미래,
규모 있는 커뮤니티 부재
&lt;ul&gt;
&lt;li&gt;JetBrains 및 여러 회사와 함께 The PHP Foundation를 시작하게 됨&lt;/li&gt;
&lt;li&gt;언어가 지속될 수 있도록 펀딩 모델과 예산, 잘하는 메인테이너 확보&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;개발인력 10명, 보드 멤버 8명, 커뮤니티 맴버&lt;/li&gt;
&lt;li&gt;2024년 독일 정부에서 펀딩을 받아 중요 프로젝트 수행
&lt;ul&gt;
&lt;li&gt;코드 전체에 대한 보안 감리 수행 및 완료&lt;/li&gt;
&lt;li&gt;FPM 테스팅&lt;/li&gt;
&lt;li&gt;문서화 개선 (+ 보안 리뷰)&lt;/li&gt;
&lt;li&gt;PECL 재작업 (packagist, 보안 향상 및 새 인스톨러 PIE 개발)&lt;/li&gt;
&lt;li&gt;새로운 기능들
&lt;ul&gt;
&lt;li&gt;lazy objects, property hooks, asymmetric visibility, BCMath&lt;/li&gt;
&lt;li&gt;많은 RFC, 재단에서 업데이트 및 지속 지원&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;재단 내에서의 프로젝트 외에도 커뮤니티 기여가 상당히 많아짐&lt;/li&gt;
&lt;li&gt;유럽 연합 집행위원회의 사이버 복원력법(Cyber Resilience Act) 워킹 그룹에
회원으로 참여&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;2025년 목표: 파트너십과 마케팅, 커뮤니티 성장 및 언어 향상
&lt;ul&gt;
&lt;li&gt;FrankenPHP도 재단에서 지원&lt;/li&gt;
&lt;li&gt;현재 재단에서 개발중인 기능들
&lt;ul&gt;
&lt;li&gt;BC Math 최적화&lt;/li&gt;
&lt;li&gt;XSSE 라이브러리 (streaming SIMD Extensions) API (ARM 관련인듯)&lt;/li&gt;
&lt;li&gt;새 &lt;code&gt;URI&lt;/code&gt; API: WhatWG, RFC 3986 명세 지원&lt;/li&gt;
&lt;li&gt;PIE (PHP Installer for Extensions) 확장 설치를 위한 인스톨러
&lt;ul&gt;
&lt;li&gt;발표 당일 첫 안정 버전 출시 v1.0&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;꼬리 호출 관련 구현 (개념 증명)&lt;/li&gt;
&lt;li&gt;패턴 매칭&lt;/li&gt;
&lt;li&gt;SAPI 테스팅 프레임워크&lt;/li&gt;
&lt;li&gt;내장 JSON Schema 지원&lt;/li&gt;
&lt;li&gt;새로운 DateTime API&lt;/li&gt;
&lt;li&gt;Windows용 php 빌더&lt;/li&gt;
&lt;li&gt;PIE 확장 개발을 위한 GitHub Action flow&lt;/li&gt;
&lt;li&gt;리눅스 패킷 필터링&lt;/li&gt;
&lt;li&gt;인터페이스 수준에서의 제한적인 추상 제네릭 타입 (개념 증명)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
                    </item>
                    
                </channel>
            </rss>
            