블로그

bukak2019

모각코 좋아하는 사람 절대 들어오지마세요 (Feat. 잔디심고갈래?)

🌱 잔디 심고 갈래? 2026년 개발자 플러팅혼자 코딩하지만 함께 몰입하고 있다는 감각을 전달하는 GitHub 기반 온라인 모각코 서비스서비스로 이동!💡 이런 서비스입니다늦은 밤, 혼자 코딩할 때 슬랙에서 동료의 파란 불을 보며 힘을 얻은 적 있으신가요?잔디 심고 갈래? 는 바로 그 느낌을 온라인 공간으로 옮겨왔습니다. 캠·마이크 없이 같은 공간에서 함께 코딩하는 경험을 제공합니다.핵심 가치🌍공동의 성장: 개발자들의 GitHub 활동이 모여 맵을 변화(예: 황무지를 숲으로 변화)시킵니다⏱집중의 시각화: 커밋, PR, 집중 시간이 실시간으로 반영됩니다🐾펫과 함께: 활동으로 얻은 포인트로 펫을 뽑고 성장시킵니다🤝느슨한 연대: 캠/마이크 없이, 같은 공간에서 함께 코딩하는 경험을 제공합니다✨ 주요 기능1⃣ 함께 성장하는 가상 세계모두의 활동이 모여 맵이 변화. 7일 시즌제로 주기적 리셋이 이루어지고, 테마가 변경됨.테마2⃣ 실시간 캐릭터 시스템GitHub 프로필·마스코트 캐릭터로 표현. 닉네임·집중시간·태스크 표시, 실시간 상호작용.3⃣ GitHub 활동 자동 연동 및 리더보드OAuth 간편 로그인, 30초 간격 자동 감지. 활동 시 포인트가 쌓이고, 포인트에 따라 맵 변화 게이지 상승.리더보드4⃣ 개인 성취 시각화잔디·캘린더를 통한 날짜별 집중시간·태스크·활동 내역 확인히팅맵 및 개인잔디포인트 획득에 따라 달라지는 개인 잔디에서 수집한 펫과 활동들을 확인 가능세부 활동해당 날짜에 진행한 깃허브 활동 상세 내역이나 자신의 Task(To-do)를 확인 가능5⃣ 펫 시스템 🐾포인트로 가챠·육성·진화(3단계). 대표 펫이 캐릭터 동행.펫과 캐릭터 이동펫 뽑기펫을 뽑아 새로운 펫들을 수집 가능펫 도감펫 도감을 통해 수집한 펫들을 관리하고, 대표 펫으로 설정하여 함께 이동 가능펫 밥주기펫에게 밥을 주어 다음 단계로 성장시켜, 도감 수집 가능

네이버부스트캠프잔심갈잔디심고갈래?모각코Github개발자플러팅

양성빈(Robert)

K2 컴파일러가 바꿔놓은 Java SAM 변환의 모든 것

들어가며최근 Kotlin 버전을 1.8에서 2.3으로 올리고 코드를 작성하던 중, 흥미로운 현상을 발견했다.package me.sungbin.function fun main() { val filter: StringFilter = { s -> s.startsWith("A") } }StringFilter는 Java에서 정의한 함수형 인터페이스다. 그런데 이 코드가 Kotlin 1.8에서는 컴파일 에러가 나고, Kotlin 2.3에서는 정상 동작한다. 분명 Java SAM 인터페이스에 람다를 직접 대입하는 건 안 되는 걸로 알고 있었는데, 왜 지금은 되는 걸까? 이 글에서는 이 동작 변화의 원인을 파헤쳐 보고, Kotlin의 SAM 변환이 어떻게 발전해 왔는지를 정리해 본다.SAM 변환이란?SAM은 Single Abstract Method의 약자로, 추상 메서드가 하나만 있는 인터페이스를 말한다. Java 8에서는 이런 인터페이스를 함수형 인터페이스(Functional Interface) 라고 부르며, @FunctionalInterface 어노테이션을 붙여 명시한다.@FunctionalInterface public interface StringFilter { boolean filter(String s); }Java에서는 이런 함수형 인터페이스 타입이 기대되는 곳에 람다를 직접 전달할 수 있다. 이걸 SAM 변환(SAM Conversion) 이라고 한다.// Java — 람다를 함수형 인터페이스 타입 변수에 직접 대입 StringFilter filter = s -> s.startsWith("A");Kotlin도 Java와의 상호운용성을 위해 SAM 변환을 지원한다. 하지만 그 지원 범위는 Kotlin 버전에 따라 달랐다.Kotlin에서의 SAM 변환 역사Kotlin 1.0 - Java SAM에 대한 기본 지원Kotlin은 1.0부터 Java의 함수형 인터페이스에 대한 SAM 변환을 지원했다. 다만 지원되는 위치가 제한적이었다. 함수 인자로 전달할 때는 SAM 변환이 적용됐다.// Java 메서드: void applyFilter(StringFilter filter) { ... } // 함수 파라미터로 전달 — SAM 변환 적용 applyFilter { s -> s.startsWith("A") }SAM 생성자(SAM Constructor) 를 명시적으로 사용하는 것도 가능했다.// SAM 생성자 — 항상 가능 val filter = StringFilter { s -> s.startsWith("A") }하지만 변수 타입을 명시하고 람다를 직접 대입하는 것은 불가능했다.// Kotlin 1.x에서 컴파일 에러! val filter: StringFilter = { s -> s.startsWith("A") } // Type mismatch: inferred type is (String) -> Boolean but StringFilter was expectedKotlin 1.4 - Kotlin 인터페이스에 대한 SAM 변환 (fun interface)Kotlin 1.4에서는 fun interface 키워드가 도입되면서, Kotlin에서 정의한 인터페이스에도 SAM 변환을 사용할 수 있게 됐다.// Kotlin 1.4 이전에는 이게 안 됐음 interface MyFilter { fun filter(s: String): Boolean } val f = MyFilter { s -> s.startsWith("A") } // 컴파일 에러 // Kotlin 1.4부터 fun interface로 선언하면 SAM 변환 가능 fun interface MyFilter { fun filter(s: String): Boolean } val f = MyFilter { s -> s.startsWith("A") } // OK이 시점에서 많은 개발자들이 "Kotlin에서 SAM 변환이 안 된다"고 알고 있던 것은, 바로 이 Kotlin 인터페이스에 대한 SAM 변환이 안 됐던 것을 기억하는 경우가 많다. 하지만 fun interface 도입 이후에도, 타입을 명시한 변수에 람다를 직접 대입하는 것(val f: Type = { ... })은 Java SAM, Kotlin fun interface 모두에서 불가능했다. 1.4에서 가능해진 것은 SAM 생성자(val f = MyFilter { ... })와 함수 인자 전달 위치에서의 SAM 변환이었다.Kotlin 2.0 - K2 컴파일러와 SAM 변환의 확장그리고 마침내 Kotlin 2.0에서 K2 컴파일러가 정식 도입되면서, 이 제한이 해제됐다.// Kotlin 2.0+ (K2 컴파일러)에서는 이것도 된다! val filter: StringFilter = { s -> s.startsWith("A") }구 컴파일러는 왜 이걸 허용하지 않았을까?이유를 이해하려면, 구 컴파일러의 타입 추론 방식을 알아야 한다.구 컴파일러의 타입 추론 흐름구 컴파일러가 val filter: StringFilter = { s -> s.startsWith("A") }를 만났을 때, 내부적으로 다음과 같은 순서로 처리했다.우변의 람다 타입 결정: { s -> s.startsWith("A") }는 (String) -> Boolean 함수 타입으로 추론된다.좌변의 기대 타입 확인: StringFilter는 Java 인터페이스 타입이다.타입 호환성 검사: (String) -> Boolean != StringFilter -> Type mismatch!구 컴파일러는 SAM 변환을 특정 위치에서만 적용했다.함수 호출 시 인자로 전달하는 위치SAM 생성자를 명시적으로 사용하는 경우이는 구 컴파일러의 프론트엔드 아키텍처가 BindingContext라는 거대한 해시 테이블 기반 구조에 의존했기 때문이다. 타입 정보를 단계별로 수집하고 저장하는 이 방식에서는, 대입문의 기대 타입 정보를 람다의 타입 추론 단계에 자연스럽게 전달하기가 구조적으로 어려웠다.SAM 생성자로 우회하는 방법그래서 구 컴파일러에서는 SAM 생성자를 사용해 명시적으로 변환을 지시해야 했다.// SAM 생성자 — 컴파일러에게 "이 람다를 StringFilter로 변환해라"고 명시적으로 알려줌 val filter = StringFilter { s -> s.startsWith("A") }SAM 생성자는 컴파일러가 자동으로 생성하는 팩토리 함수처럼 동작하며, 람다를 해당 인터페이스의 구현체로 명시적으로 감싸준다.K2 컴파일러는 무엇이 다른가?완전히 새로 작성된 프론트엔드K2 컴파일러는 Kotlin 컴파일러의 프론트엔드(의미 분석, 호출 해석, 타입 추론 담당) 를 완전히 새로 작성한 것이다. 공식 문서에서는 이를 다음과 같이 설명한다.With the arrival of the K2 compiler, the Kotlin frontend has been completely rewritten and features a new, more efficient architecture. The fundamental change the new compiler brings is the use of one unified data structure that contains more semantic information.- K2 compiler migration guide구 컴파일러 vs K2 컴파일러의 내부 구조 차이구 컴파일러는 PSI(Program Structure Interface) 와 BindingContext에 의존했다.PSI는 소스 파일의 모든 정보를 담고 있어 크고 복잡하다.BindingContext는 바인딩 정보를 거대한 해시 맵 구조로 관리했다.변수 참조 하나를 조회하는 데도 여러 번의 맵 조회가 필요했다.K2 컴파일러는 FIR(Frontend Intermediate Representation) 이라는 새로운 트리 기반 데이터 구조를 사용한다.FIR은 PSI보다 간결하면서도 더 많은 의미 정보를 포함한다.트리 노드에서 직접 값을 접근하므로 해시 맵 조회가 필요 없다.타입 추론 시 기대 타입 정보가 자연스럽게 하위 노드로 전파된다.K2에서의 타입 추론 흐름K2 컴파일러가 동일한 코드를 처리할 때는 이렇게 동작한다.좌변의 기대 타입 확인: StringFilter가 기대된다.기대 타입 정보를 우변으로 전파: 람다에게 "네가 StringFilter가 되어야 한다"는 정보를 전달한다.SAM 변환 가능 여부 확인: StringFilter는 Java 함수형 인터페이스이고, 람다의 시그니처가 filter(String): Boolean과 일치한다.암시적 SAM 변환 적용: 람다를 StringFilter 구현체로 자동 변환한다.핵심 차이는 K2 컴파일러가 기대 타입(Expected Type) 정보를 적극적으로 활용한다는 것이다. 구 컴파일러에서는 대입문의 기대 타입 정보가 SAM 변환 판단에 반영되지 않았지만, K2에서는 기대 타입이 SAM 인터페이스인 모든 위치에서 암시적 SAM 변환이 가능해졌다.실제 코드로 보는 동작 차이다양한 케이스에서 Kotlin 1.x와 2.0+의 동작 차이를 정리해 보자.Case 1: 변수 대입// Java @FunctionalInterface public interface StringFilter { boolean filter(String s); }// Kotlin val filter: StringFilter = { s -> s.startsWith("A") }Kotlin 1.x: Type mismatchKotlin 2.0+: 정상 컴파일Case 2: SAM 생성자 (명시적)val filter = StringFilter { s -> s.startsWith("A") }Kotlin 1.x: 정상 컴파일Kotlin 2.0+: 정상 컴파일Case 3: 함수 인자로 전달fun applyFilter(filter: StringFilter) { /* ... */ } applyFilter { s -> s.startsWith("A") }Kotlin 1.x: 정상 컴파일Kotlin 2.0+: 정상 컴파일Case 4: 함수 반환 타입으로 사용fun createFilter(): StringFilter { return { s -> s.startsWith("A") } }Kotlin 1.x: Type mismatchKotlin 2.0+: 정상 컴파일Case 4에서 볼 수 있듯이, K2 컴파일러는 변수 대입뿐만 아니라 기대 타입이 명확한 모든 위치에서 SAM 변환을 적용한다.흥미로운 점은, Java 함수형 인터페이스뿐만 아니라 Kotlin fun interface에서도 변수 대입(val f: Type = { ... }) 방식은 1.x에서 동작하지 않았다는 것이다. 1.4에서 fun interface가 도입됐을 때 지원된 것은 SAM 생성자(val f = MyFilter { ... })와 함수 인자 전달이었고, 타입을 명시한 변수에 람다를 직접 대입하는 방식은 K2 컴파일러에서야 가능해졌다. 결국 K2의 기대 타입 기반 SAM 변환 확장은 Java SAM과 Kotlin fun interface 모두에 적용된 범용적인 개선인 셈이다.K2 컴파일러가 가져온 그 외의 개선들K2 컴파일러는 SAM 변환 외에도 다양한 타입 추론 개선을 포함하고 있다. 대표적인 것들을 간략히 살펴보자.스마트 캐스트 개선class Cat { fun purr() { println("야옹") } } fun petAnimal(animal: Any) { val isCat = animal is Cat if (isCat) { // Kotlin 2.0+: isCat 변수를 통해 animal이 Cat으로 스마트 캐스트됨 // Kotlin 1.x: 스마트 캐스트 불가 — 변수에 담긴 조건식은 인식하지 못했음 animal.purr() } }논리 OR 연산자와 스마트 캐스트interface Status { fun signal() { println("Signal received") } } interface Postponed : Status interface Declined : Status fun signalCheck(signalStatus: Any) { if (signalStatus is Postponed || signalStatus is Declined) { // Kotlin 2.0+: 공통 상위 타입인 Status로 스마트 캐스트 // Kotlin 1.x: Any로 캐스트되어 signal() 호출 불가 signalStatus.signal() } }인라인 함수 내에서의 스마트 캐스트interface Processor { fun process() { println("Processing...") } } inline fun inlineAction(f: () -> Unit) = f() fun nextProcessor(): Processor? = object : Processor {} fun runProcessor(): Processor? { var processor: Processor? = null inlineAction { if (processor != null) { // Kotlin 2.0+: processor가 non-null로 스마트 캐스트 // Kotlin 1.x: safe call 필요 (processor?.process()) processor.process() } processor = nextProcessor() } return processor }마무리정리하면, Kotlin 1.x에서 Java 함수형 인터페이스 타입 변수에 람다를 직접 대입하지 못했던 것은 구 컴파일러의 타입 추론 한계 때문이었다. Kotlin 2.0에서 도입된 K2 컴파일러는 프론트엔드를 완전히 재작성하면서 기대 타입 기반의 SAM 변환을 더 넓은 범위에서 지원하게 됐고, 그 결과 이전에 불가능했던 코드가 자연스럽게 동작하게 됐다. 이처럼 K2 컴파일러는 단순한 성능 개선뿐만 아니라, 개발자가 "당연히 될 것 같은데 안 됐던" 코드들을 실제로 동작하게 만들어 주는 의미 있는 변화를 가져왔다. Kotlin 2.0 이상을 사용하고 있다면, 한번 실무에 적용해보는 것도 좋은 방법 같다. 혹여나 틀린 지식이 있을 경우 바로 알려주시면 정정하겠습니다. 참고자료- https://kotlinlang.org/docs/k2-compiler-migration-guide.html- https://kotlinlang.org/docs/whatsnew20.html- https://kotlinlang.org/docs/fun-interfaces.html- https://kotlinlang.org/docs/compatibility-guide-20.html

백엔드kotlinjavak2-complier

하늘소녀

Do it! HTML + CSS 웹 표준의 정석 - 겨울 방학 맞이 기초 언어 스터디(6)

#지난주에 이어서...CSS로 화면을 설계하고,자바스크립트로 동작을 붙였다면,6주차는 드디어 웹 문서를 ‘직접 조작하는 단계’로 들어섰다. # 자바스크립트와 객체자바스크립트가 왜 객체 기반 언어인지 이해하는 장이다.객체의 개념자바스크립트의 내장 객체브라우저와 관련된 객체* 이제 코드가 단순한 명령어 모음이 아니라속성과 기능을 묶은 구조(객체)로 보이기 시작했다.웹 브라우저 자체도 하나의 거대한 객체 시스템이라는 점이 인상적이었다.# 문서 객체 모델(DOM) 다루기드디어 DOM 등장.문서 객체 모델 이해하기DOM 요소 접근하기내용 수정하기이벤트 처리하기노드 추가·삭제class 속성 추가·제거* 여기서부터 진짜 “웹을 조작한다”는 느낌이 들었다.HTML은 구조,CSS는 디자인,JavaScript는 동작이라고 배웠지만DOM을 배우고 나니이 세 가지가 완전히 연결되는 지점이 보였다.버튼을 클릭하면특정 요소를 찾아내용을 바꾸고클래스를 추가해 스타일을 변경하는 흐름이제야 비로소“프론트엔드의 기본 구조”가 머릿속에서 연결됐다.# 6주차를 마치며 – 완주!처음엔 단순히“HTML부터 다시 정리해보자”는 마음으로 시작한 스터디였는데,6주를 마치고 보니 웹이 어떻게 만들어지고, 어떻게 동작하는지 한 사이클을 다 돌았다는 느낌이다.6주후 내가 얻은 것웹의 구조 이해 (HTML)화면 설계 능력 (CSS)로직과 상호작용 (JavaScript)문서 조작 능력 (DOM)이제는 단순히 코드를 따라 치는 게 아니라“왜 이렇게 동작하는지”를 설명할 수 있는 단계까지 온 것 같다.정말 긴 여정이었지만, 매주 기록을 남기며 공부한 덕분에 흐름이 훨씬 또렷하게 정리됐다.

웹 퍼블리싱HTMLCSSjavascript웹표준스터디DOIT

uslab.ai

바이브코딩으로 CES 2026 페이지를 이틀 만에 만들었습니다

“CES 2026 혁신상, 한국 기업이 절반 이상을 휩쓸었다.”이런 이야기를 여기저기서 접했습니다.그런데 막상 확인해보려니, 이상하게도 한눈에 볼 수 있는 사이트나 리스트가 없었습니다.어떤 기업이, 어떤 제품으로, 어떤 분야에서 수상했는지정리된 형태로 확인할 수 있는 곳이 없더군요.그래서 그냥,직접 만들기로 했습니다.결론부터 말하면 이틀 만에 초안을 만들었고,그 이후 4일 동안 안정화와 검증 작업을 진행했습니다.👉 CES 2026 정리 페이지https://uslab.ai/ko/ces목록에서 제품을 클릭하면,각 항목마다 딥리서치를 통해 정리한 분석 내용을 확인할 수 있습니다.1. 이번에는 ‘자료 인용’이 아니라, ‘제대로 분석’을 하고 싶었습니다CES 공식 페이지를 보면 각 수상작은 보통 아래 정도의 정보만 제공됩니다.한 장짜리 설명간단한 제품 소개https://www.ces.tech/ces-innovation-awards/하지만 개인적으로는 그게 늘 아쉬웠습니다.이 회사가 한국 기업인지회사 공식 홈페이지는 어디인지이 제품이 왜 나왔고누가 먼저 도입할 가능성이 있는지이런 정보가 있어야 “봤다”가 아니라 “판단했다”고 말할 수 있다고 생각했기 때문입니다.그래서 단순히 일부를 발췌하는 방식이 아니라,전체를 수집한 뒤 딥리서치로 다시 해석하기로 했습니다.2. 설계는 GPT·Gemini, 구현은 Cursor (바이브코딩)이번 프로젝트의 작업 방식은 꽤 단순했습니다.GPT와 Gemini로 전체 컨셉과 구조에 대해 충분히 대화를 나눕니다화면 구성, 필드, 데이터 흐름을 정리합니다설계가 확정되면 그 내용을 MD 파일로 문서화합니다그 문서를 그대로 Cursor에 전달해 구현합니다구현 과정에서 오류가 생기면오류 재현 방식과 로그를 정리한**오류보고서.md**를 다시 만듭니다GPT와 Gemini와 함께 원인을 쪼개고수정 방향을 정리해 다시 Cursor로 돌아갑니다정리하면,문서로 설계 → 문서를 던져서 구현 → 문서로 디버깅이 패턴을 계속 반복했습니다.기술 스택은 Supabase + Vercel 조합으로 구성했습니다.3. 일단 452개를 ‘전부’ 모았습니다처음부터 일부만 선별하는 방식은 쓰지 않았습니다. 그 순간부터 기준이 흐려질 것 같았기 때문입니다. 그래서 CES 2026 혁신상 상세 페이지 기준으로총 452개 제품을 전부 수집했습니다.Cursor에게 사이트 구조를 알려주고 크롤링을 요청했더니,타입스크립트를 자동으로 구성하고데이터를 불러와 검증하고정리된 형태로 가져오더군요.수집된 데이터는 제품별로 하나씩 MD 파일로 정리했습니다.4. 딥리서치: 452개를 한 번에 돌릴 수는 없었습니다여기서 현실적인 제약이 있었습니다.ChatGPT Ultra 요금제를 사용하고 있었는데, 딥리서치 할당량이 월 250으로 제한되어 있었습니다. (횟수라기보다는 내부 리소스 소모 구조에 가까웠습니다) 452개를 개별로 돌리는 건 비효율적이었고, 처음에는 카테고리 단위로 묶어봤지만 한 카테고리에 50개씩 들어가면 분석 품질이 눈에 띄게 떨어졌습니다.테스트 결과,10개 단위가 가장 안정적이었습니다.그래서:452개를10개씩 묶어총 46번의 딥리서치를 진행했습니다.딥리서치 프롬프트는 MD 파일로 따로 정리했고, 분석 구조는 아래 7가지로 통일했습니다.기본 정보 (기업명 / 홈페이지 / 한국 기업 여부 / 제품 한 줄 정의)문제 정의핵심 차별점주요 도입 주체확장 가능성평단의 평가분석가 한 줄 판단프롬프트 자체는 GPT와 Gemini가 거의 다 만들어줬습니다. 대화창이 복잡해지는 걸 피하기 위해CES 2026 전용 프로젝트 공간을 따로 만들어 그 안에서 딥리서치를 돌렸습니다.ChatGPT는 10개 단위로 원하는 방향의 딥리서치를 안정적으로 수행했고, Gemini는 종합 보고서 성향이 강해 이번 프로젝트에서는 ChatGPT 중심으로 사용했습니다.중간에 할당이 막히기도 했고, 하루를 넘겨가며 조금씩 풀리는 걸 기다리기도 했지만, 결과적으로 모든 딥리서치를 완료했습니다.5. 프로토타입은 이틀, 진짜 작업은 그 이후였습니다프로젝트는 1월 14일에 시작했고, 15일 저녁에 프로토타입이 완성됐습니다.하지만 체감상 진짜 작업은 그 이후였습니다.데이터 누락·중복 체크카테고리 정리 및 동기화상세 페이지가 깨지는 케이스 수정검색/필터 UX 튜닝이미지·링크·메타데이터 정리무엇보다 “내가 계속 쓰고 싶은가?”에 대한 반복 테스트그래서 개인적으로는 이렇게 구분하고 있습니다.이틀은 ‘만든 시간’ 그 이후는 ‘망가지지 않게 만드는 시간’숫자에 대해 한 가지 짚고 넘어가면기사에서는 혁신상을 받은 기업이 357곳이라고 나오기도 하지만, 실제로 CES 공식 사이트의 상세 페이지를 기준으로 수집해보니 총 452개 항목이었습니다.이전 수상 이력 + CES 2026 행사 과정에서 추가로 노출되는 구조 때문으로 보였고, 생각보다 정리해야 할 데이터가 더 많다는 점에서 저 스스로도 조금 놀랐습니다.정리하며이번 작업을 통해 다시 느낀 점은 분명했습니다.예전 같으면“이건 팀이 있어야 가능한 작업”이라고 생각했을 겁니다.하지만 지금은설계는 AI와 충분히 대화하며 정리하고구현은 바이브코딩으로 빠르게 만들고분석은 딥리서치를 쪼개서 현실적으로 처리하면개인도 충분히 가능한 영역이 됐다고 느꼈습니다.이렇게 정리된 데이터는 MD 파일로 저장해 NotebookLM에 넣어 활용하고 있습니다.개인 리포트를 만들거나,관심 있는 주제만 다시 파고들기에도 적당합니다.👉 CES 2026 정리 : https://uslab.ai/ko/ces👉 NotebookLMhttps://notebooklm.google.com/notebook/b7e0cea7-a0e2-4aa7-a4f1-58b43de862ca👉 NotebookLM 활용가이드https://uslab.ai/ko/blog/ces-2026-notebooklm-complete-guide AI가 모든 걸 대신해주지는 않습니다.하지만 생각을 실제 결과물로 옮기는 속도는 확실히 다른 단계로 올라왔다는 건 분명해 보입니다.

AI 개발 활용ces혁신상개발바이브코딩ai인공지능ax웹페이지데이터분석

ez0129

[무료 기술 세미나] AI on Edge – From Bits to Real World

온디바이스 AI의 현재와 미래를 조망하는 AI on Edge – From Bits to Real World에 여러분을 초대합니다!에너자이가 주최하는 AI on Edge – From Bits to Real World는 비트 단위 모델 최적화부터 실제 제품 및 서비스 적용 사례까지, 온디바이스 AI의 연구와 상용화를 폭넓게 다루는 자리입니다. 산학의 전문가들이 한자리에 모여 최신 기술 성과를 공유하고, 현장의 경험과 인사이트를 나눕니다.이번 행사는 에너자이의 파트너사인 Advantech과 Synaptics의 후원을 통해 무료로 진행됩니다.행사 개요일시: 2026년 3월 28일(토) 13:00–17:30장소: 서울특별시 강남구 테헤란로 138 성홍타워 3층 (드리움) Forest Hall참석 대상: 엣지 AI 유관 분야 연구자 및 산업 종사자모집 인원: 약 40명신청 링크: https://event-us.kr/enerzai/event/121735세부 일정12:30 - 13:00      행사 등록 및 안내13:00 - 13:20      인사말 및 후원사 소개 (에너자이 | 장한힘 대표님)13:20 - 13:50      1.58-Bit Quantized Whisper (에너자이 | 강창범님)13:50 - 14:00      쉬는 시간14:00 - 14:30      From Bits to Intelligence: On-Device AI and Beyond (삼성리서치 | 전용권 파트장님)14:30 - 14:40      쉬는 시간14:40 - 15:10      튜닝 친화적인 프로그래밍 언어, Nadya (에너자이 | 유은총님)15:10 - 15:20      쉬는 시간15:20 - 15:50      System-Model Co-Design for Efficient AI in the Physical World (전북대학교 | 이제민 교수님)15:50 - 17:30      네트워킹 및 마무리기타 안내주차공간은 별도로 제공되지 않습니다.공간 제한으로 인해 모집이 조기 마감될 수 있습니다.발표자, 발표 순서, 발표 주제, 발표 구성 등이 향후 변경될 수 있습니다.기타 문의는 minwoo.son@enerzai.com 로 부탁드립니다.

딥러닝 · 머신러닝AI딥러닝머신러닝온디바이스AI엣지AI세미나네트워킹

위랩스페이스

[풀스택_인프라] LG CNS AM Inspire Camp 5기 모집

고용노동부 K-Digital Training 과정LG CNS AM Inspire Camp 5기 모집 중 LG CNS 현직자와 함께하는 실전 프로젝트 과정.과정 설계부터 멘토링, 결과물 완성까지 직접 경험합니다.LG CNS AM 5기에서 실력으로 증명하는 엔지니어로 성장하세요. 차별화된 취업 스펙 쌓으러 가기 ▶ [ Click! ]   LG CNS AM만의 특별한 교육 혜택 📌 혜택01 | LG CNS 공식 수료증- 교육 과정을 완주한 수료생에게 LG CNS 공식 수료증을 수여 📌 혜택02 | LG CNS 채용 가산점 부여- LG CNS 및 자회사 지원 시 우수 수료생 한정 취업 가산점 부여 기회 제공 📌 혜택03 | 훈련장려금 지급- 훈련장려금 총 180만원 이상(월 최대 30만 원) 지급 📌 혜택04 | LG CNS 전문가 멘토링- LG CNS 현업 전문가와 함께하는 실무 프로젝트 멘토링 📌 혜택05 | 취업지원 / 맞춤형 프로그램 지원- 성공적인 취업을 위한 전문가의 채용 특강 및 이력서, 고퀄리티 포트폴리오 컨설팅 진행 📌 혜택06 | 교육용 장비 및 서비스 제공- LG 교육용 노트북 대여 및 클라우드 (AWS) + 메타버스 + AI 서비스 이용료 지원 📌 혜택07 | 차별화된 맞춤 교육 진행- 전공/비전공자 개별 지도- 개인별 강점 기반 포트폴리오 지원   LG CNS AM 과정을 수료하면 이렇게 성장해요! ✨프론트엔드 엔지니어“완성도 높은 인터페이스로 서비스의 첫 인상을 완성해요.”사용자 경험을 고려한 화면(UX/UI)을 설계하고, 반응형 웹 기반으로 구현합니다. ✨백엔드 엔지니어“안정적이고 확장 가능한 데이터 흐름을 설계해요.”서비스 로직을 설계하고, 데이터 처리 및 API 서버를 구축합니다. ✨클라우드 엔지니어“확장성과 안정성을 갖춘 클라우드 환경을 구성해요.”인프라 환경에서 서비스를 설계·배포·운영합니다. ✨데브옵스 엔지니어“개발과 운영을 자동화해 안정적인 서비스를 제공합니다.”CI/CD 파이프라인을 구축하고, 효율적인 배포와 운영 환경을 구현합니다.   LG CNS AM 5기, 지금 모집 중이에요! ✅ 기간 및 일정· 모집 마감 : ~ 04.05(일) 23:59※ 우선 선발 기회 제공(선착순)· 교육 기간 : 26.04.10 (금) ~ 26.10.08 (목) ✅ 수업 방식/장소· 온라인 : 메타버스 강의장· 오프라인 : 동국대 서울캠퍼스 ✅ 모집 대상· 국내외 대학(원) 졸업(예정)자· 내일배움카드 발급 가능자 ✅ 접수 방법[랜딩페이지 접속] → [우측 상단 '지금 지원하기' 클릭] → 지원서 작성/제출 ✅ 수강료· 교육비 자부담금 50만원 (*정책 변경으로 인한 자부담금 발생)· 교육 수료 시 축하금 지급 (50만 원) ✅ 교육 문의· 카카오톡 1:1 문의하기 : https://pf.kakao.com/_wbxkln

데이터 엔지니어링KDT국비교육프로젝트부트캠프엔지니어취업lgcns풀스택개발it

Go Hard

[Python] 자율주행 팬텀 브레이크 현상의 알고리즘적 이해와 시뮬레이션

안녕하세요. IT 개발자 관점에서 자동차의 최신 기술을 분석하는 채널을 운영 중입니다.자율주행 시스템에서 빈번하게 발생하는 '팬텀 브레이크(Phantom Braking)' 현상을 센서 퓨전(Sensor Fusion) 데이터의 충돌과 페일 세이프(Fail-Safe) 로직 관점에서 분석해 보았습니다.기존 레거시 자동차 브랜드들은 레이더의 오탐지(False Positive)와 카메라의 정상 데이터가 충돌할 때, 보수적인 제동을 선택하도록 하드코딩된 경우가 많습니다. 이를 파이썬으로 간단히 모델링하면 아래와 같은 논리 구조를 갖습니다.Python# phantom_brake_simulator.py def simulate_sensor_fusion(camera_clear, radar_obstacle_detected): """ 카메라와 레이더 센서 데이터 충돌 시 기존 자동차 브랜드의 Fail-Safe 로직 시뮬레이션 """ print(f"[센서 입력] 카메라: 전방 클리어 ({camera_clear}), 레이더: 장애물 감지 ({radar_obstacle_detected})") # Fail-Safe 로직: 하나의 센서라도 장애물을 감지하면 보수적으로 제동 개입 if radar_obstacle_detected or not camera_clear: print("[시스템 판단] 데이터 충돌. Fail-Safe 발동 -> 긴급 제동(Phantom Brake) 개입") return True return False # 난반사로 인한 레이더의 오탐지 상황 가정 simulate_sensor_fusion(camera_clear=True, radar_obstacle_detected=True) 이러한 구조적 딜레마를 해결하기 위해 테슬라가 레이더를 제거하고 비전 AI 트레이닝(Dojo)으로 전환한 배경 등, 개발자 시각에서의 더 깊이 있는 분석은 아래 유튜브 영상에 담아두었습니다. 상세 분석 영상: https://youtu.be/rH0FZhxZQ_Y전체 소스 코드: https://github.com/gohard-lab/phantom_brake_simulator온라인 실행(Colab): https://colab.research.google.com/github/gohard-lab/phantom_brake_simulator  

웹 개발Python파이썬인공지능AI테슬라비전센서퓨전알고리즘데이터시뮬레이션자율주행코딩

ds3400

[부산물류관리사] 실무형 국제무역물류 과정

물류·무역 실무자 양성과정TOS 기반 라이브 실무 프로젝트 물류·무역 실무, 아직도 이론만 배우고 계신가요?실제 현업에서 쓰는 TOS 기반 실무 교육으로물류·무역·스마트해상물류까지 한 번에 준비하세요! [교육 핵심 포인트]·국비지원 (내일배움카드)·TOS 기반 실무 프로젝트 진행·물류관리사 · 국제무역사 · 스마트해상물류관리사 대비·현업 실무 중심 커리큘럼·초보자도 수강 가능 (비전공자 OK) 이런 분들께 추천해요!물류·무역 분야 취업을 준비하는 분실무 경험이 없어 고민인 취준생이론보다 실제 업무 흐름을 배우고 싶은 분국제무역사 / 물류관리사 자격증을 준비 중인 분스마트해상물류, 항만·물류 IT 분야에 관심 있는 분 [교육 안내]교육기간: [2026.03.16 ~2026.07.24]교육시간: [평일 / 9:10 ~ 18:00]교육방식: 오프라인 / 실습 중심교육비: 0~30만원 (개인별 상이)훈련장려금: 매월40~100만원 지급 [수강 혜택]·교재 및 실습 자료 제공·자격증 대비 지원·취업 컨설팅 및 진로 상담·실무 프로젝트 포트폴리오 [교육기관]동성인재개발교육원✔ 고용노동부 인증 우수훈련기관✔ 쾌적한 실습 환경 & 전문 강사진 [지원 방법]유선신청 : 051-933-3400 홈페이지 지원 : https://www.dshrd.or.kr/course_a.html?eduPart=3 ※ 선착순 마감이니 빠른 지원 추천!

취업 · 이직부산무역학원부산물류학원부산물류관리사부산물류자격증부산국제무역사부산무역자격증동성인재개발교육원

ds3400

[부산일반고교위탁] 고3학년 제과제빵 전문 자격증

고3 학년을 앞둔 학생이라면진로를 직접 경험하고 준비할 수 있는 일반고위탁교육 과정을 소개합니다.부산 중심 서면에 위치한동성인재개발교육원에서2026년 일반고 위탁교육 과정이 개강합니다.실습 중심 교육을 통해 전문 기술 자격증 취득과 진로 준비를 동시에 할 수 있습니다. [모집 대상]2026년 고등학교 3학년 예정 학생일반고 위탁교육 참여 희망 학생실무 중심 직업교육 및 자격증 취득 희망 학생 [교육 일정]개강일: 2026년 3월 17일교육기간: 2026.03.17 ~ 2026.12.31교육시간: 09:10 ~ 16:50 [교육 과정]제과제빵 과정제과·제빵 실습 교육자격증 취득 대비제빵기능사,제과기능사 자격 [교육 혜택]✔국비 무료 교육✔훈련장려금 매월 20만원 지급✔실습 중심 직업교육 과정✔전문 자격증 취득 대비✔부산 중심 서면 위치 (삼정타워 옆)✔월 1회 소속 고등학교 등교 [교육 장소]동성인재개발교육원부산광역시 부산진구 중앙대로 668에이원프라자 6층 (서면 삼정타워 옆)부산 중심지에 위치해부산 및 경남 지역 학생들의 통학이 편리합니다. [문의 및 지원]전화 문의 : 051-933-3400홈페이지 지원https://www.dshrd.or.kr/ 이런 학생에게 추천합니다대학 진학 외 다양한 진로를 고민하는 학생제과제빵 / 영상콘텐츠 분야에 관심 있는 학생자격증 취득과 실무 경험을 동시에 원하는 학생진로를 미리 경험해보고 싶은 학생 [모집 안내]일반고 위탁교육 과정은 모집 인원이 제한되어 있어 조기 마감될 수 있습니다.관심 있는 학생은 상담 및 접수를 서둘러 주세요.

취업 · 이직부산일반고위탁부산제과제빵학원동성인재개발교육원부산고3위탁교육

ds3400

[부산국비IT학원] 일본IT취업연계! 정보처리산업기사 취득 자바 개발과정

일본 IT 취업에 필수인 정보처리산업기사,학력·경력 제한 없이 과정평가형 자격으로취득 가능한 풀스택 개발자 과정 본 과정은 일본 IT 기업 취업을 목표로하는 국비지원과정으로,JAVA 기반 풀스택 개발 역량과 함께정보처리산업기사 자격증을 ‘과정평가형’으로취득할 수 있는 과정입니다. 일반적으로 정보처리산업기사는관련학과 2년제 이상 졸업 요건이 필요하지만,동성인재개발교육원에서 진행하는 본 과정을 이수하면 ✔ 학력·전공·경력 무관✔과정평가형 자격 취득 가능✔ 기존 검정형 대비 높은 자격 취득률이라는 큰 장점이 있습니다. 일본 IT 취업과 정보처리산업기사일본 IT 취업 시 정보처리산업기사 보유자 선호비자 발급 및 채용 과정에서 전문성 증빙 자격JAVA 기반 개발 역량 + 국가기술자격 = 취업 경쟁력 강화본 과정은 자격 + 실무 + 취업 방향성을 함께 준비합니다. <훈련 대상>일본 IT 취업을 목표로 하는 분정보처리산업기사 자격 취득이 필요한 분학력·전공 제한 없이 자격증을 취득하고 싶은 분JAVA 기반 개발자로 커리어를 시작하고 싶은 분※ 국민내일배움카드 발급 대상자 <수료 후 진출 분야>일본 IT 기업 개발자JAVA / 웹 / 풀스택 개발자IT 서비스·솔루션 개발 직무 교육 장소동성인재개발교육원부산광역시 부산진구 중앙대로 668, 에이원프라자 6층서면역 인근 문의 및 접수☎ 051-933-3400https://www.dshrd.or.kr/course_a.html?eduPart=1방문 상담 가능 (사전 문의 권장)

풀스택부산IT학원부산자바학원부산리액트학원동성인재개발교육원부산일본취업학원일본IT취업일본취업비자

ds3400

[부산국비지원 중장년교육!][중장년 특화] ERP정보관리사 취득!

[중장년 특화]ERP생산관리 실무자양성 (ERP정보관리사+챗GPT) 친환경·공정전환 생산관리 실무자 양성과정 개강 합니다.국가기간·전략산업 직종훈련스마트공장,ESG 경영 시대!이젠 “생산관리”가 핵심입니다.현장 실무에 강한 ERP 기반+AI 활용 역량까지한 번에 강화! [지원자격]·40~60세미만 구직자 누구나· 실업자, 취업준비생, 이직 희망자· 전공 무관! 컴퓨터 기초만 있어도 가능· 내일배움카드 발급자 및 발급 가능자 [교육내용]· 친환경 공정전환· 자재관리·AI활용 생산데이터 관리· ERP일반·ERP물류,생산,회계 시스템 [수료 후 기대효과]· 제주/물류/생산관리/회계 분야 취업 유리·대기업/협력사/ ERP 실무 즉시 투입 가능·ESG 기반 친환경 생산 체계 이해 [교육일정]기간: 2026.03.19 ~ 2026.06.11시간: 9:10 ~ 18:00월~목 주4회*3.20 / 5.1 / 5.8 / 5.29 일 수업 있음위치: 부산진구 중앙대로 668, 에이원프라자 6층 [동성인재개발교육원]부산 대표 실무형 IT·산업 교육기관넓고 깨끗한 교육 환경 + 최신 장비 지원!지금이 다시 시작하기 좋은 기회!스마트 공장 시대를 이끌 실무자로 성장하고 싶다면상담부터 받아보시고 고민 해보시는 걸 추천드립니다. [문의&신청]유선: 051-933-3400홈페이지 지원: https://www.dshrd.or.kr/course_a.html?eduPart=6

취업 · 이직부산중장년교육부산중장년학원부산ERP학원ERP정보관리사동성인재개발교육원

Go Hard

[Python] 단 50줄로 구현하는 테슬라 비전과 팬텀 브레이킹의 한계

안녕하세요. 일상의 호기심을 파이썬으로 풀어보는 개발자입니다.  2021년 테슬라가 라이다와 레이더를 버리고 카메라 기반의 'Occupancy Networks'로 전환한 후 발생한 엣지 케이스(팬텀 브레이킹)를, 기초적인 컴퓨터 비전 코드로 시뮬레이션하며 그 한계를 짚어보았습니다.단순한 Haar Cascade 모델을 사용하여 블랙박스 영상 속 차량을 인식하는 기초적인 스크립트입니다. Python# tesla_vision_simulator.py import cv2 def run_vision_simulator(video_path: str, cascade_path: str) -> None: """블랙박스 영상을 통해 기초적인 차량 인식 비전 시뮬레이터를 구동합니다.""" cap = cv2.VideoCapture(video_path) car_cascade = cv2.CascadeClassifier(cascade_path) while cap.isOpened(): ret, frame = cap.read() if not ret: break # CPU 연산 병목 해결을 위한 해상도 축소 resized_frame = cv2.resize(frame, (640, 360)) gray_frame = cv2.cvtColor(resized_frame, cv2.COLOR_BGR2GRAY) # 객체 탐지 및 바운딩 박스 처리 cars = car_cascade.detectMultiScale(gray_frame, scaleFactor=1.1, minNeighbors=3) for (x, y, w, h) in cars: cv2.rectangle(resized_frame, (x, y), (x + w, y + h), (255, 0, 0), 2) cv2.imshow('Tesla Vision Simulator (Basic)', resized_frame) if cv2.waitKey(30) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows() if __name__ == "__main__": run_vision_simulator('dashcam_footage.mp4', 'haarcascade_car.xml')  비록 구형 알고리즘이지만, 이 코드를 돌려보면 명암 변화나 짙은 그림자를 장애물로 오인하는 오탐지(False Positive) 현상을 명확히 관찰할 수 있습니다. 레이더라는 크로스체크 수단이 사라진 순수 비전(Vision Only) 모델이 현실의 가혹한 도로 환경에서 어떻게 무너지는지 확인할 수 있는 대목입니다. 요즘 파이썬 생태계 표준에 맞추어, 구형 requirements.txt 대신 pyproject.toml을 적용하여 프로젝트 의존성을 구성해 두었습니다. 자세한 시뮬레이터 구동 과정과 Tesla Vision 기술에 대한 해설은 아래 유튜브 콘텐츠에 담아두었습니다. 여러분의 블랙박스 영상으로도 직접 테스트해 보시길 권장합니다. [▶ 시뮬레이터 구동 및 기술 해설 영상]: https://youtu.be/xWrnxjh1GnY 

AI 코딩PythonOpenCV자율주행컴퓨터비전데이터분석pyproject

Go Hard

[토이 프로젝트] K카 중고차 동적 크롤링 및 Streamlit 대시보드 배포

🚀 서비스 실행 링크: https://youtu.be/HnL0wOqci7Q 안녕하세요.파이썬과 데이터 분석에 관심이 많은 '잡학다식 개발자'입니다. K카 중고차 데이터를 수집하여 감가율을 시각화하는 대시보드 프로젝트를 진행하며 겪은,교과서적 이론과 실제 배포 환경의 간극에 대해 공유하고자 합니다. 보통 입문 강의에서는 requests와 BeautifulSoup을 이용한 정적 스크래핑을 배우지만,실제 상용 웹사이트는 동적 렌더링과 보안으로 겹겹이 막혀 있습니다. 이를 해결하기 위해 Playwright를 도입했습니다. 또한 구형 requirements.txt 대신요즘 파이썬 생태계 표준인 pyproject.toml을 도입하여 패키지 의존성을 명확하게 관리했습니다. 특히 Streamlit Cloud 배포 시 리눅스 컨테이너의 샌드박스 제약으로 브라우저가 뻗어버리는 현상을아래와 같이 Headless 옵션으로 우회했습니다. Python# kcar_headless_scraper.py import os from playwright.sync_api import sync_playwright def fetch_car_prices(): # Streamlit Cloud 환경에서 Playwright용 브라우저 강제 설치 os.system("playwright install chromium") with sync_playwright() as playwright_instance: # 이론적인 일반 스크래핑과 달리, 실제 클라우드 서버 환경에서는 # 샌드박스 충돌 및 메모리 부족 현상으로 인한 에러가 발생합니다. # 이를 우회하기 위한 현업의 필수 headless 옵션 세팅입니다. browser_instance = playwright_instance.chromium.launch( headless=True, args=[ '--no-sandbox', '--disable-dev-shm-usage' ] ) # 보안이 적용된 동적 페이지 렌더링 대기 및 데이터 추출 page_instance = browser_instance.new_page() page_instance.goto("https://www.kcar.com") # ... (중략: 데이터 크롤링 로직) ... browser_instance.close() return []  파이썬 크롤러 배포를 공부하시는 분들께 도움이 되기를 바랍니다. 

웹 개발파이썬Python웹크롤링PlaywrightStreamlit토이프로젝트데이터분석

Go Hard

[파이썬 토이 프로젝트] 나만의 유튜브 쇼츠(Shorts) 자동화 공장 차리기 🎬

안녕하세요! 파이썬을 활용해 일상의 반복적인 작업을 시스템으로 만드는 개발자입니다. 파이썬 문법을 익히고 나면 크롤링 말고 또 재미있게 해볼 만한 프로젝트가 없을까 고민되시죠? 오늘은 파이썬으로 영상 편집을 자동화해서, 유튜브 '쇼츠 제작 공장'을 직접 만들어보는 흥미로운 토이 프로젝트를 소개해 드립니다. 영상 편집 자동화, 이론과 현실은 다릅니다!보통 블로그 튜토리얼을 보면 코드 몇 줄로 영상 두 개를 뚝딱 합치면 끝난다고 하죠. 하지만 실제 현실에서는 대본을 읽어주는 목소리(TTS)의 길이에 맞춰서 배경 영상의 길이를 정확하게 잘라내어 맞춰주는 세밀한 계산이 필요합니다. 그렇지 않으면 소리만 나오거나 화면만 멈춰있는 엉성한 결과물이 나오게 됩니다.이러한 현실적인 동기화 문제를 해결한 파이썬 코드를 준비했습니다. 한번 따라 해보세요! 파일명: make_shorts.pyPythonfrom moviepy.editor import VideoFileClip, AudioFileClip # 배경 영상과 음성 파일 가져오기 video = VideoFileClip("background.mp4") audio = AudioFileClip("voice.mp3") # 목소리 길이에 딱 맞게 배경 영상 자르기 (매우 중요!) if video.duration > audio.duration: video = video.subclip(0, audio.duration) # 소리와 영상 합치기 final_clip = video.set_audio(audio) # 새로운 영상 파일로 저장하기 final_clip.write_videofile("my_first_shorts.mp4", codec="libx264")  배포와 관리는 세련되게!프로젝트를 깃허브에 올리거나 세팅하실 때, 예전 방식인 requirements.txt 대신 최신 표준인 pyproject.toml을 사용해 보세요. 프로젝트 구조가 훨씬 깔끔해지고 라이브러리 설치 오류도 획기적으로 줄어듭니다.전체적인 코드 작성 흐름과 파이썬이 실제로 쇼츠 영상을 만들어내는 신기한 구동 화면은 아래 제 튜토리얼 영상에 아주 차분하고 자세하게 담아두었습니다. 파이썬의 무궁무진한 활용법을 확인해 보세요! 👉https://www.youtube.com/watch?v=3m4AEVO1swg

개발 · 프로그래밍 기타파이썬자동화파이썬입문토이프로젝트영상편집

Go Hard

파이썬 토이 프로젝트: F1 레이싱 데이터 분석하고 그래프 그리기 🏎️

안녕하세요! 파이썬을 활용해 실생활의 흥미로운 데이터를 분석하는 개발자입니다.파이썬 기본 문법을 공부하신 뒤 "이제 어떤 데이터를 분석해 볼까?" 고민하시는 분들을 위해, 오늘은 전 세계에서 가장 빠른 스포츠인 F1 레이싱 데이터를 파이썬으로 분석하는 프로젝트를 소개해 드립니다. 깔끔한 데이터는 책 속에만 있습니다보통 파이썬 기초 교재에서는 깔끔하게 정리된 엑셀 데이터를 예제로 다룹니다. 하지만 실제 현업이나 실전 프로젝트에서 다루는 데이터는 그렇지 않죠. 이번에 다룬 F1 센서 데이터 역시 통신 문제로 데이터가 끊기거나 비어있는 결측치가 많습니다. 이런 현실적인 노이즈 데이터를 파이썬으로 어떻게 부드럽게 이어주고(보간법) 분석할 수 있는지 실전 팁을 담았습니다. 한번 실행해 보세요! 핵심 코드F1 공식 데이터를 불러와 드라이버의 속도 그래프를 그리는 기본 뼈대 코드입니다.Pythonimport fastf1 from matplotlib import pyplot as plt # 2023년 몬자 예선전 데이터 불러오기 session = fastf1.get_session(2023, 'Monza', 'Q') session.load() # 가장 빠른 랩타임 데이터 찾기 fast_lap = session.laps.pick_fastest() tel = fast_lap.get_telemetry() # 그래프 그리기 plt.plot(tel['Distance'], tel['Speed']) plt.xlabel("Distance (m)") plt.ylabel("Speed (km/h)") plt.show()  환경 세팅 꿀팁프로젝트를 시작하실 때 옛날 방식인 requirements.txt 대신 요즘 파이썬의 표준인 pyproject.toml을 사용해 보세요. 라이브러리 충돌 없이 훨씬 세련되게 프로젝트를 관리하실 수 있습니다.Ini, TOML[project] name = "f1-project" dependencies = ["fastf1", "matplotlib"] 위 코드를 발전시켜 두 드라이버의 코너링 차이를 정밀하게 비교 분석하는 전체 과정은 아래 영상에 아주 차분하고 자세하게 담아두었습니다. 스포츠 데이터 분석에 흥미를 느끼시는 분들께 좋은 영감이 되길 바랍니다! 👉https://youtu.be/7b1eT20fnHs 

웹 개발파이썬데이터분석토이프로젝트시각화파이썬입문

Go Hard

파이썬으로 3초 만에 이미지 누끼 따기 (OpenCV 삽질 피하는 현실적인 방법)

파이썬과 IT 관련 지식을 정리하고 있는 잡학다식 개발자입니다.오늘은 쇼핑몰을 운영하시거나 블로그 썸네일을 만드시는 분들, 혹은 이미지 전처리 자동화가 필요한 분들이 자주 겪는 '누끼 따기(배경 제거)'에 대해 이야기해 보려고 합니다.이론과 현실의 간극: 왜 교과서적인 방법은 실무에서 실패할까?구글에 '파이썬 이미지 배경 제거'를 검색하면 가장 먼저 나오는 교과서적인 방법은 보통 OpenCV를 이용한 색상 임계값(Thresholding)이나 윤곽선(Contour) 검출 방식입니다. 이론적으로는 배경과 피사체의 색상 차이를 이용해 분리해 내는 훌륭한 원리죠.하지만 현실의 실무 데이터는 그렇게 만만하지 않습니다. 조명에 따라 생기는 그림자, 피사체와 비슷한 색상의 배경, 특히 '머리카락'이나 '퍼(Fur)' 같은 복잡한 경계선을 만나면 이 교과서적인 방법은 여지없이 무너집니다. 결국 파라미터 값을 조정하다가 밤을 새우는 이른바 '탁상공론'식 코딩이 되고 맙니다.실제 현업의 해결책: AI 기반 rembg 라이브러리그래서 실제 서비스 환경이나 실무에서는 픽셀의 색상을 계산하는 대신, U-Net 기반의 딥러닝 모델이 적용된 rembg라는 라이브러리를 사용합니다. 복잡한 수학적 연산이나 파라미터 튜닝 없이, AI가 알아서 피사체와 배경을 완벽하게 분리해 줍니다.구형 방식인 requirements.txt 대신, 요즘 파이썬 생태계 표준인 pyproject.toml을 이용해 환경을 세팅하고 코드를 실행하는 방법을 공유합니다.1. 환경 세팅 (pyproject.toml)Ini, TOML[build-system] requires = ["setuptools", "wheel"] build-backend = "setuptools.build_meta" [project] name = "background-removal-demo" version = "0.1.0" description = "rembg를 활용한 이미지 배경 제거 자동화 스크립트" requires-python = ">=3.9" dependencies = [ "rembg>=2.0.50", "Pillow>=10.0.0" ] 2. 실행 코드 (remove_background.py)Python""" 이미지 배경 제거 자동화 스크립트 - rembg 라이브러리를 활용하여 딥러닝 모델 기반으로 피사체와 배경을 분리함 - 복잡한 윤곽선(머리카락, 그림자 등)을 처리하기 위한 실무 최적화 방식 """ from rembg import remove from PIL import Image import os def process_image(input_path: str, output_path: str): # 입력 및 출력 파일의 유효성 검증 if not os.path.exists(input_path): print(f"[Error] 입력 파일을 찾을 수 없습니다: {input_path}") return try: # 이미지를 메모리에 로드 input_image = Image.open(input_path) # rembg 라이브러리를 통한 배경 제거 처리 (추론) output_image = remove(input_image) # 투명도(Alpha 채널)를 보존하기 위해 PNG 포맷으로 저장 output_image.save(output_path, format="PNG") print(f"[System] 배경 제거 완료. 결과물 저장 경로: {output_path}") except Exception as e: print(f"[Error] 배경 제거 처리 중 예외 발생: {e}") if __name__ == "__main__": # 테스트용 파일 경로 지정 (실제 파일 경로로 수정하여 사용) INPUT_FILE = "sample_input.jpg" OUTPUT_FILE = "sample_output.png" process_image(INPUT_FILE, OUTPUT_FILE) 마치며코드를 보시면 아시겠지만, 실제 현업에서 문제를 해결하는 방식은 때로는 교과서적인 기초 원리보다 이미 잘 만들어진 도구를 얼마나 적절하게 가져다 쓰느냐에 달려있기도 합니다.위의 코드를 복사해서 직접 실행해 보시면 퀄리티에 꽤 놀라실 겁니다. 만약 텍스트와 코드만으로 이해가 어렵거나, 터미널 환경 세팅부터 실제 이미지가 깔끔하게 누끼 따지는 시각적인 과정 전체를 눈으로 확인하고 싶으신 분들은 아래에 제가 정리해 둔 영상 링크를 참고해 주셔도 좋습니다.오늘도 오류 없는 평온한 코딩 하시길 바랍니다. 감사합니다.https://youtu.be/HzuSu2b_5N4

AI 개발 활용python자동화rembg배경제거누끼따기pyproject

Go Hard

파이썬 Streamlit으로 내 차 유지비 시뮬레이터 만들기 (M2 vs 클리오 편) 💻

안녕하세요! 파이썬으로 재미있는 실생활 데이터를 분석하는 개발자입니다.파이썬 기초를 떼고 나서 토이 프로젝트를 고민하시는 분들을 위해, 누구나 쉽게 웹 대시보드를 띄울 수 있는 Streamlit 활용법을 코드로 공유해 드립니다.진짜 현실 데이터를 반영한 코드 짜기 보통 교과서적인 튜토리얼에서는 연비 계산만 하지만, 실제 차량 유지비는 그런 탁상공론과는 다릅니다. 2019년식 BMW M2 컴페티션 같은 차량은 고급 소모품 비용이 크고, 2020년식 르노 클리오는 또 다른 정비 주기가 존재하죠.이런 현실적인 변수를 사용자가 웹에서 직접 입력할 수 있게 만든 핵심 코드입니다. 한번 복사해서 실행해 보세요!Pythonimport streamlit as st st.title("나만의 자동차 유지비 계산기") # 두 차량의 현실적인 데이터 입력받기 st.write("2019 BMW M2 Competition 설정") m2_oil = st.number_input("M2 엔진오일 비용", value=300000) st.write("2020 Renault Clio 설정") clio_oil = st.number_input("클리오 엔진오일 비용", value=100000) st.success("이제 이 변수들로 그래프를 그려보면 됩니다!") 배포할 땐 pyproject.toml을 쓰세요 완성된 코드를 서버에 올릴 때 옛날 방식인 requirements.txt를 쓰면 에러가 자주 납니다. 요즘 대세인 pyproject.toml을 설정 파일로 쓰시면 훨씬 세련되고 안전하게 배포하실 수 있습니다.Ini, TOML[project] name = "my-streamlit-app" dependencies = ["streamlit"] 파이썬으로 웹 대시보드를 완성해 나가는 전체 과정과 완성된 시뮬레이터 화면은 아래 영상에 아주 차분하게 담아두었습니다. 코드를 직접 따라 쳐보시면서 파이썬의 재미를 느껴보시길 바랍니다!👉https://youtu.be/VQUF9oDzWf8

웹 개발파이썬스트림릿토이프로젝트파이썬입문데이터분석

거꾸로 보는 AI 세상

AI 기술 개발과 서비스 설계 전에 던져야 할 3가지 질문

인공지능은 빠르게 발전하고 있죠. 새로운 모델과 서비스가 연일 등장하며, 기술은 우리의 일상과 산업 전반을 재편하고 있고요. 하지만 이처럼 가속화되는 진보 속에서, 한 가지 질문은 점점 더 중요해지고 있습니다.“이 기술은 과연 누구를 위해, 어떤 방향으로 작동하고 있는가?”이 질문은 오늘날 공학자와 개발자, 그리고 AI 실무자 모두가 반드시 고민해야 할 핵심 과제입니다. 그렇다면 공학자들은 이 사실을 모를까요?전문성 향상, 소속된 조직에 대한 책임감(특히 영리 추구)은 종종 ‘공동선’과 충돌합니다. 이 공동선을 지키기 위해서는 조직, 더 나아가 사회적 합의가 우선이겠지만, 기술로 인해 발생하는 문제에 대한 책임 소재조차 충분히 논의되지 않은 현실에서 개인은 ‘윤리’를 깊게 고민해야 하는 위치에 있습니다. 윤리적 성찰은 정말 쉽지 않죠. 그렇기에 최근 ‘AI 윤리 교육’에 대한 관심도 점점 높아지고 있는지도 모릅니다. 그 시작으로 기술을 개발하고 활용하는데 있어 아래와 같은 질문을 던져보는 것은 어떨까요?내가 만드는 이 기술/서비스는 누구에게 도움이 될까?사회적 불평등을 심화 시킬까?악용될 가능성은 없을까? 이 글은 AI 시대 공학자의 윤리에 대한 설명과 문제의식, 그리고 공학 윤리 교육의 필요성을 간단히 정리한 내용입니다. 실제 사례와 보다 깊은 철학적·사회적 논의는 원문 콘텐츠에서 더욱 상세하게 다루고 있습니다.기술을 만드는 사람으로서, 우리가 어떤 기준과 태도를 가져야 할지 고민하고 있다면 아래 콘텐츠를 함께 참고해 보세요!👉가속하는 진보 속에서, 공학자는 무엇을 숙고해야 하는가

인공지능 기타AI윤리

채널톡 아이콘