피토니

피토니

피토니피토니· 2개월

React Native ExecuTorch를 이용해 모바일에서 AI 모델 실행하기

개요 최근 AI 기술이 급격히 발전하면서, 모바일 애플리케이션에서도 머신러닝(ML) 모델을 활용하는 사례가 증가하고 있다. 하지만 기존의 AI 모델을 모바일 환경에서 실행하려면 높은 연산 비용과 클라우드 의존도가 문제로 작용했다. 이런 문제를 해결하기 위해 React Native ExecuTorch가 등장했다. ExecuTorch는 Meta(구 페이스북)의 React Native와 PyTorch의 ExecuTorch를 결합하여 모바일에서 AI 모델을 효율적으로 실행할 수 있도록 돕는 기술이다. 이를 통해 React Native 기반의 모바일 앱에서도 AI 기능을 쉽게 통합할 수 있으며, 클라우드 서버에 의존하지 않고도 디바이스에서 직접 AI 연산을 수행할 수 있다. React Native를 기반으로 실행되기 때문에 한 번의 개발로 iOS와 Android에서 모두 작동하며, 네이티브 개발이 필요 없이 JavaScript 및 TypeScript 코드만으로 AI 모델을 쉽게 실행할 수 있다는 점이 가장 큰 장점이다. 또한, 앱 내에서 AI 기능을 직접 실행하므로 데이터가 외부 서버로 전송되지 않아 보안성이 높고, 네트워크 연결이 필요 없어 빠른 응답 속도를 제공한다. 그럼 React Native ExecuTorch의 개념, 특징, 사용 방법, 그리고 실제 적용 방법을 다뤄보겠다. 1. React Native ExecuTorch란? React Native ExecuTorch는 React Native 환경에서 PyTorch 모델을 실행할 수 있도록 지원하는 경량 머신러닝 실행 엔진이다. 기존에는 AI 모델을 모바일에서 실행하려면 TensorFlow Lite(TFLite)나 ONNX Runtime을 사용해야 했지만, 이제는 ExecuTorch를 활용하여 PyTorch 모델을 직접 실행할 수 있다. React Native에서 실행되기 때문에 갖는 주요 장점 iOS와 Android 동시 지원 – 한 번의 개발로 여러 플랫폼에서 실행할 수 있어 개발 비용 절감. 네이티브 브릿지 불필요 – 추가적인 네이티브 코드 작성 없이 AI 모델을 실행할 수 있어 유지보수 간편. 빠른 개발 속도 – JavaScript/TypeScript만으로 AI 모델을 사용할 수 있어 React Native 개발자들이 쉽게 접근 가능. 온디바이스 머신러닝(ML) 지원 – AI 모델이 스마트폰에서 직접 실행되므로 네트워크 의존성이 낮고 응답 속도가 빠름. 데이터 프라이버시 강화 – AI 연산이 클라이언트 측에서 실행되므로, 사용자의 개인 데이터가 서버로 전송되지 않아 보안성이 뛰어남. 배터리 및 리소스 효율성 – 클라우드 AI 대비 낮은 전력 소비와 빠른 실행 속도를 제공. 기존 AI 모델 실행 방식과 비교 실행 방식 클라우드 필요 여부 응답 속도 데이터 프라이버시 클라우드 기반 AI 필요 느림 (네트워크 의존) 낮음 (데이터가 서버로 전송됨) TensorFlow Lite 불필요 빠름 높음 ExecuTorch (React Native) 불필요 매우 빠름 매우 높음 ExecuTorch는 PyTorch 기반의 모델을 직접 React Native에서 실행할 수 있도록 지원하며, 클라우드 의존도를 최소화하면서도 빠른 속도를 제공한다. 2. React Native ExecuTorch의 구조 React Native에서 ExecuTorch를 활용하려면 다음과 같은 절차를 거쳐야 한다. PyTorch에서 AI 모델 학습 ExecuTorch 포맷으로 모델 변환 React Native 앱에서 ExecuTorch로 모델 로드 모델 실행 및 결과 반환 그럼 이제 단계별로 구현 방법을 살펴보자. 3. React Native ExecuTorch 적용 방법 Step 1: React Native 프로젝트 설정 먼저, React Native 프로젝트를 생성한다. npx react-native init MyExecuTorchApp cd MyExecuTorchApp 그다음, ExecuTorch 라이브러리를 설치한다. npm install react-native-executorch Step 2: PyTorch 모델 변환 PyTorch에서 간단한 머신러닝 모델을 생성하고 ExecuTorch 포맷으로 변환한다. import torch # 간단한 모델 정의 class SimpleModel(torch.nn.Module): def forward(self, x): return x * 2 # 모델 인스턴스 생성 model = SimpleModel() # ExecuTorch 실행을 위해 모델 변환 scripted_model = torch.jit.script(model) scripted_model.save("simple_model.pt") 변환된 simple_model.pt 파일을 React Native 프로젝트 내부에 추가한다. Step 3: React Native에서 ExecuTorch 실행 이제 변환된 AI 모델을 React Native 앱에서 실행해보겠다. import { ExecuTorch } from 'react-native-executorch'; // 모델 로드 const loadModel = async () => { const model = await ExecuTorch.loadModel('simple_model.pt'); // 입력 데이터 생성 const input = [1, 2, 3, 4, 5]; // 모델 실행 const output = await model.run(input); console.log('AI Model Output:', output); }; // 모델 실행 함수 호출 loadModel(); 이제 앱을 실행하면 AI 모델이 React Native 환경에서 실행된다. 4. React Native ExecuTorch의 활용 사례 ExecuTorch를 활용하면 다양한 AI 기능을 React Native 앱에서 직접 구현할 수 있다. ① 이미지 처리 및 객체 감지 const detectObjects = async (imageData) => { const model = await ExecuTorch.loadModel('object_detection.pt'); const results = await model.run(imageData); console.log('Detected Objects:', results); }; ② 실시간 음성 인식 const transcribeAudio = async (audioData) => { const model = await ExecuTorch.loadModel('speech_to_text.pt'); const transcript = await model.run(audioData); console.log('Transcribed Text:', transcript); }; ③ 자연어 처리(NLP) 기반 챗봇 const chatbotResponse = async (userMessage) => { const model = await ExecuTorch.loadModel('chatbot_model.pt'); const response = await model.run(userMessage); console.log('Chatbot Reply:', response); }; 5. 결론 React Native ExecuTorch는 모바일에서 AI 모델을 실행할 수 있도록 돕는 강력한 도구이다. 특히 React Native 기반으로 동작하기 때문에 멀티 플랫폼 지원, 빠른 개발 속도, 데이터 프라이버시 보호 등의 이점을 극대화할 수 있다. React Native 기반 앱에서 이미지 인식, 음성 인식, 자연어 처리, 추천 시스템 등 다양한 AI 기능을 추가하려면 ExecuTorch를 활용하는 것이 좋을 것이다.
336
0
피토니피토니· 2개월

Django와 FastAPI 비교 - 프로젝트 요구에 따른 최고의 선택은?

개발 프레임워크를 선택할 때 가장 중요한 요소는 프로젝트의 요구사항과 개발자의 선호도입니다. Django와 FastAPI는 각기 다른 철학과 접근 방식을 가지고 있지만, 둘 다 강력한 웹 개발 도구입니다. 이 글에서는 두 프레임워크의 주요 특성과 차이점을 깊이 있게 다루며, 프로젝트 요구 사항에 따라 어떤 프레임워크가 적합한지 알아보겠습니다. 1. 배터리 포함 또는 독립적인 구성 Django: 모든 것을 포함한 올인원 솔루션 Django는 "배터리 포함(batteries included)" 철학을 기반으로 설계되었습니다. "배터리 포함"이라는 말은 대부분의 기능이 기본적으로 프레임워크에 포함되어 있어, 추가적인 패키지 설치 없이도 개발을 시작할 수 있다는 뜻입니다. 장점: 내장 기능의 편리함: ORM, 인증, 세션 관리, 캐싱, 커맨드라인 도구 등이 기본 제공됩니다. 일관성과 안정성: 모든 내장 도구가 프레임워크와 긴밀히 통합되어 버전 충돌 위험이 낮습니다. 자동화된 관리자 인터페이스: CRUD 작업이 빈번한 프로젝트에서 매우 유용하며, 데이터 무결성을 유지합니다. 단점: 내장 기능만으로는 최근 트렌드의 요구를 모두 충족하지 못할 수 있습니다. 예를 들어, REST API 기능은 추가 패키지(DRF)를 설치해야 사용할 수 있습니다. 프로젝트가 커질수록 기본 제공 방식에서 벗어난 커스터마이징이 필요할 수 있습니다. 예시 코드 (Django 모델): from django.db import models class Article(models.Model): title = models.CharField(max_length=100) content = models.TextField() FastAPI: 필요한 도구를 선택하는 유연한 접근 Django가 배터리 포함 철학을 갖고 있는 반면에, FastAPI는 최소한의 기능만 제공하며, 개발자가 필요한 도구를 직접 선택하고 구성하도록 설계되었습니다. 데이터 검증에는 Pydantic, ORM으로는 SQLAlchemy를 사용하는 방식이 일반적입니다. 장점: 유연성과 선택의 자유: 프로젝트 요구에 맞는 최적의 도구를 선택할 수 있습니다. 최신 기술 지원: 비동기(asyncio)와 Python 타입 힌트를 적극 활용합니다. 단점: 초기 설정이 복잡할 수 있습니다. 필요한 기능을 하나씩 통합하고 구성해야 합니다. 내장된 플러그인 시스템이 없어, 외부 패키지를 선택하고 평가하는 데 시간이 소요됩니다. 예시 코드 (FastAPI API): from fastapi import FastAPI from pydantic import BaseModel app = FastAPI() class Article(BaseModel): title: str content: str @app.post("/articles/") async def create_article(article: Article): return article 2. 아키텍처와 구조 Django: 명확하고 강제적인 아키텍처 Django는 MVT(Model-View-Template) 구조를 기반으로 프로젝트를 구성하며, 명확한 규칙과 베스트 프랙티스를 제공합니다. 장점: 프로젝트 구조가 정해져 있어, 초보자도 쉽게 따라갈 수 있습니다. 전통적인 웹 애플리케이션(MPA)에 적합합니다. 단점: MVT 구조는 최신 SPA, 마이크로서비스, 서버리스 아키텍처와 잘 맞지 않을 수 있습니다. Django의 규칙을 따르지 않고 별도의 방식을 사용하려 하면 복잡해질 수 있습니다. FastAPI: 자유로운 설계와 구성 FastAPI는 특정 아키텍처를 강요하지 않으며, 개발자가 프로젝트의 구조와 흐름을 자유롭게 설계할 수 있습니다. 장점: 최신 아키텍처(SPA, 마이크로서비스 등)에 적합합니다. 비동기 처리를 기본적으로 지원하여 성능 최적화가 용이합니다. 단점: 초보자에게는 구조 설계와 구성 작업이 부담스러울 수 있습니다. 3. 학습 곡선 Django: 초보자에게 친숙한 환경 Django는 명확한 튜토리얼과 잘 정리된 문서를 제공하며, 초보자도 빠르게 시작할 수 있습니다. 복잡한 내부 동작을 몰라도 쉽게 작동합니다. 하지만, 문제가 발생했을 때 디버깅이 어렵게 느껴질 수 있습니다. FastAPI: 더 높은 학습 요구 FastAPI는 더 많은 Python 지식과 설정 작업을 요구합니다. 타입 기반 코딩을 통해 코드 품질을 높일 수 있습니다. 설정 과정에서 프레임워크의 내부 동작을 자연스럽게 학습하게 됩니다. 4. 성능과 현대적 기능 Django 아직 완전한 비동기를 지원하지 않으며, 타입 안정성(Type Safety)도 부족합니다. 하지만 기존의 동기 기반 웹 애플리케이션에는 여전히 강력합니다. FastAPI Pydantic과 비동기(asyncio)를 적극 활용하여 더 나은 성능과 타입 안정성을 제공합니다. WebSocket 등 최신 기술을 손쉽게 구현할 수 있습니다. 5. ORM의 차이 Django는 간단하고 직관적인 ORM을 제공합니다. 초보자에게 친숙하지만, 복잡한 쿼리를 작성할 때는 SQL에 대한 추가 학습이 필요합니다. FastAPI는 SQLAlchemy와 같은 강력한 ORM 도구를 사용할 수 있습니다. SQL과 유사한 구문으로 강력한 쿼리를 작성할 수 있지만, 학습 곡선이 더 가파릅니다. 6. 결론 Django와 FastAPI는 각기 다른 철학과 강점을 가진 프레임워크입니다. Django는 빠른 개발, 내장 기능, 안정성을 제공합니다. FastAPI는 최신 기술 지원, 자유로운 설계, 성능 최적화를 제공합니다. 즉, 프로젝트의 요구 사항과 장기적인 기술 전략을 고려하여 적합한 프레임워크를 선택하세요. 두 프레임워크 모두 훌륭한 도구이며, 적절히 활용한다면 성공적인 프로젝트를 만들 수 있습니다. 여러분들의 생각은 어떠신가요?
172
0
피토니피토니· 3개월

Django에서 고유한 객체를 검색할 때 "first()" 사용을 피해야 하는 이유

Django ORM을 사용하면서 고유한 객체를 검색할 때, first() 메서드를 사용하는 경우가 있는데 이는 예상치 못한 버그를 유발할 수 있습니다. 이 글에서는 first() 메서드의 문제점과 이를 대체할 수 있는 안전한 방법을 살펴보겠습니다. first() 메서드의 문제점 first() 메서드는 쿼리셋에서 첫 번째 객체를 반환합니다. 하지만 데이터베이스의 정렬 순서가 보장되지 않는 경우, first()가 반환하는 객체는 예측할 수 없습니다. 이는 특히 고유한 객체를 검색할 때 문제가 됩니다. 예를 들어, email 필드가 고유하다고 가정하고, 해당 이메일을 가진 사용자를 찾으려면 다음과 같이 작성할 수 있습니다. user = User.objects.filter(email=email).first() 하지만 이 방법은 해당 이메일을 가진 여러 사용자가 존재할 경우, 첫 번째 사용자만 반환하고 나머지는 무시합니다. 이는 데이터 무결성을 해칠 수 있습니다. 안전한 대안: get() 메서드 고유한 객체를 검색할 때는 get() 메서드를 사용하는 것이 좋습니다. get()은 조건에 맞는 객체가 하나뿐임을 보장하며, 없을 경우 DoesNotExist 예외를, 여러 개일 경우 MultipleObjectsReturned 예외를 발생시킵니다. try: user = User.objects.get(email=email) except User.DoesNotExist: # 해당 이메일을 가진 사용자가 없음 except User.MultipleObjectsReturned: # 해당 이메일을 가진 사용자가 여러 명 존재 이렇게 하면 데이터의 고유성을 보장하고, 예외 처리를 통해 예상치 못한 상황에 대비할 수 있습니다. get_object_or_404()의 활용 Django에서는 get()과 함께 get_object_or_404()를 활용하여 객체를 가져오거나, 객체가 없을 경우 404 오류를 반환하도록 할 수 있습니다. from django.shortcuts import get_object_or_404 user = get_object_or_404(User, email=email) 이 방법은 웹 애플리케이션에서 특정 객체를 가져올 때 유용하며, 객체가 없을 경우 자동으로 404 페이지를 보여줍니다. 결론 Django에서 고유한 객체를 검색할 때 first() 메서드의 사용은 피하는 것이 좋습니다. 대신 get()이나 get_object_or_404()를 사용하여 데이터의 무결성을 유지하고, 예외 처리를 통해 안정적인 코드를 작성하시기 바랍니다. Django: avoid using .first() when retrieving a unique object
242
0
피토니피토니· 5개월

Python 클로저(Closure): 함수 내의 함수 활용법

Python에서 클로저(closure)는 다른 함수 안에 정의된 함수가, 자신이 선언된 환경에서 필요한 변수를 기억하는 개념입니다. 클로저는 고급 함수형 프로그래밍의 기초로, 더 효율적인 코드 작성과 유지보수에 도움을 줄 수 있습니다. 이번 글에서는 Python에서 클로저가 무엇인지, 어떻게 사용하는지, 그리고 실용적인 예제를 통해 이해해보겠습니다. 클로저란 무엇인가요? 클로저는 외부 함수 내에서 정의된 내부 함수로, 외부 함수가 종료된 후에도 내부 함수가 외부 함수의 변수를 '기억'할 수 있는 기능을 의미합니다. 이를 통해, 특정 데이터를 감싸는 컨테이너처럼 작동할 수 있습니다. 클로저가 필요한 이유 클로저는 다음과 같은 상황에서 유용합니다: 상태를 저장하여 이후의 호출에서 참조할 필요가 있을 때 함수형 프로그래밍의 장점을 살리고 싶을 때 변수의 범위를 제한하여 코드의 예측 가능성과 안전성을 높이고 싶을 때 이와 같은 상황에서 클로저를 사용하면 전역 변수 사용을 줄일 수 있고, 코드의 모듈성과 재사용성을 높일 수 있습니다. 클로저의 기본 구조 클로저는 다음과 같은 구조로 이루어집니다. def 외부_함수(외부_변수): def 내부_함수(내부_변수): return 외부_변수 + 내부_변수 return 내부_함수 외부 함수(외부_함수)가 호출되면 내부 함수(내부_함수)를 반환하며, 내부 함수는 외부 함수의 변수를 자유롭게 참조할 수 있습니다. 간단한 클로저 예제 아래 예제에서는 클로저를 활용하여 여러 번 호출되는 함수의 상태를 유지하는 방법을 보여줍니다. def make_multiplier(x): def multiplier(n): return x * n return multiplier times3 = make_multiplier(3) print(times3(10)) # 출력: 30 print(times3(20)) # 출력: 60 여기서 times3는 make_multiplier 함수에서 반환된 클로저입니다. 이 클로저는 x 값을 3으로 고정하여 내부 함수 multiplier에 전달합니다. 따라서 times3는 항상 x * n을 수행하며, x가 3으로 고정된 상태로 남아 있는 것입니다. 클로저의 활용 사례 클로저는 간단한 데코레이터를 만들 때 유용하게 사용됩니다. 예를 들어, 특정 작업의 실행 시간을 측정하는 데코레이터를 클로저를 사용해 만들 수 있습니다. import time def timer_decorator(func): def wrapper(*args, **kwargs): start_time = time.time() result = func(*args, **kwargs) end_time = time.time() print(f"실행 시간: {end_time - start_time} 초") return result return wrapper @timer_decorator def sample_task(): time.sleep(1) print("작업 완료") sample_task() 위 코드에서 timer_decorator 함수는 내부에 wrapper 함수를 정의하고 반환합니다. wrapper는 func의 실행 시간을 측정하고 출력합니다. 클로저의 장점과 주의점 Python에서 클로저는 데이터 은닉을 통한 함수형 프로그래밍의 이점을 제공합니다. 외부 변수의 참조를 유지하므로 함수 호출마다 동일한 환경을 유지할 수 있으며, 이를 통해 전역 변수의 남용을 방지하고 코드의 복잡도를 줄일 수 있습니다. 하지만 클로저는 과도하게 사용하면 코드 가독성을 떨어뜨릴 수 있으므로, 필요한 경우에만 사용하는 것이 좋습니다.
132
1
0
피토니피토니· 2년

개발자가 개발 과정에서 ChatGPT를 활용하는 4가지 방법

안녕하세요. 오늘은 개발자가 직접 개발 작업을 수행하면서 ChatGPT를 어떻게 활용할 수 있는지에 대해 살펴보려고 합니다. ChatGPT는 고객 서비스, 콘텐츠 생성, 교육용 도구 등 여러 분야에서 활용될 수 있습니다. 그런데, 개발자 자신의 일상적인 개발 작업에서 이 AI를 어떻게 활용할 수 있을까요? 이에 대한 몇 가지 예를 살펴보겠습니다. 1. 코드 문제 해결 ChatGPT는 주어진 문제에 대해 적절한 코드 스니펫을 생성하는 능력이 있습니다. 이를 활용하면, 개발자는 코드 작성 중에 생기는 복잡한 문제를 해결하는 데 도움을 받을 수 있습니다. 예를 들어, Python에서 특정 알고리즘을 구현하려고 할 때, ChatGPT에 문제를 설명하면, 해당 문제를 해결하는 방법에 대한 코드 예제를 제공할 수 있습니다. 2. 코드 리뷰와 피드백 ChatGPT를 활용하여 코드 리뷰를 보조할 수 있습니다. 이 AI는 주어진 코드의 스타일, 효율성, 버그 등을 검토하고 피드백을 제공하는 데 도움이 될 수 있습니다. 이런 기능을 활용하면, 개발자는 코드의 품질을 향상시키는 데 더욱 집중할 수 있습니다. 3. 문서 작성 코드는 단지 작성하는 것만이 아니라, 적절하게 문서화하는 것도 중요합니다. ChatGPT는 코드의 기능을 설명하거나, 사용법을 안내하는 문서를 작성하는 데 도움이 될 수 있습니다. 이런 방식으로, 개발자는 코드의 가독성을 향상시키고, 다른 개발자들이 코드를 더욱 쉽게 이해할 수 있도록 도움을 줄 수 있습니다. 4. 자동 코드 완성 특정 프로그래밍 언어에 대한 ChatGPT의 이해도를 활용하면, 코드 작성 과정을 보다 효율적으로 만들 수 있습니다. 개발자는 시작하는 코드 조각을 입력하고, ChatGPT에게 나머지를 완성하도록 요청할 수 있습니다. 이렇게 하면, 코드 작성 시간을 줄이고, 개발 과정을 더욱 간편하게 만들 수 있습니다. 개발 작업에서 AI의 활용은 점점 더 중요해지고 있습니다. ChatGPT와 같은 도구는 개발 과정을 보다 효율적이고 편리하게 만드는 데 큰 도움이 될 수 있습니다. 이러한 활용 사례들을 참고하면서, 여러분의 개발 작업에 AI를 어떻게 통합할 수 있을지 고민해보세요.
670
3
1
피토니피토니· 2년

구글 Colab 간략 정리

최근에 구글은 Colab에 AI 코딩 기능을 도입하겠다고 밝혔습니다. Colab은 머신러닝을 공부하는 사람들에게는 꽤 유용한 도구인데요. Colab을 모르시는 분들을 위해 Colab을 금방 살펴볼 수 있도록 간략하게 정리해보았습니다. Google Colab은? Google Colab은 사용하기 쉬운 웹 기반 Python 개발 환경입니다. 특히, 데이터 분석, 머신러닝 및 AI 연구에 매우 유용합니다. Google Colab 시작하기 Google Colab을 사용하려면, 먼저 Google Colab 웹사이트에 접속합니다. 접속하려면 Google 계정이 필요합니다. 로그인한 후, "새 노트"를 클릭하여 새로운 Python 노트북을 생성할 수 있습니다. 셀 작성 및 실행 Colab 노트북은 "셀"로 구성됩니다. 텍스트 셀과 코드 셀 두 가지 유형이 있습니다. 텍스트 셀은 Markdown을 사용하여 작성하고, 코드 셀은 Python 코드를 작성하고 실행하는데 사용합니다. 예를 들어, 다음 Python 코드를 셀에 입력하고 실행해 보겠습니다. print("Hello, Colab!") 셀을 실행하려면 Shift + Enter를 누르거나 셀 왼쪽에 있는 실행 버튼을 클릭합니다. 코드가 실행되고 결과가 셀 바로 아래에 출력됩니다. Google Drive와 연동하기 Google Colab은 Google Drive와 직접 연동이 가능하므로, Google Drive에 저장된 데이터를 불러오거나 저장할 수 있습니다. from google.colab import drive drive.mount('/content/drive') 위의 코드를 실행하면, 인증 코드를 입력하라는 메시지와 함께 새 창이 열립니다. 메시지에 따라 인증 코드를 복사하고 붙여 넣으면 Google Drive가 마운트됩니다. 이제 Google Drive의 파일들을 마치 로컬 파일처럼 접근할 수 있습니다. 라이브러리 사용하기 Colab에서는 필요한 Python 라이브러리를 쉽게 설치하고 사용할 수 있습니다. 예를 들어, numpy라는 라이브러리를 사용하려면 다음과 같이 입력하면 됩니다. import numpy as np 라이브러리가 이미 설치되어 있지 않다면, !pip install 명령을 사용하여 설치할 수 있습니다. 예를 들어, beautifulsoup4 라이브러리를 설치하려면 다음과 같이 입력하면 됩니다. !pip install beautifulsoup4 이처럼 Google Colab은 클라우드 기반의 개방형 데이터 분석 및 머신러닝 플랫폼으로, Python 코드를 작성하고 실행하는 데 필요한 모든 것을 제공하는 유용한 툴입니다. Colab 소개 영상 위 내용을 보셨으면 한글 자막이 제공되는 아래 3분짜리 구글의 Colab 소개 영상을 보시면 더 잘 이해되실 겁니다. Colab 소개 영상
355
1
0
피토니피토니· 2년

온몸으로 입력하는 키보드 Semphore 파이썬. (근데 웃참주의)

GitHub - everythingishacked/Semaphore: A full-body keyboard using gestures to type through computer vision A full-body keyboard using gestures to type through computer vision - GitHub - everythingishacked/Semaphore: A full-body keyboard using gestures to type through computer vision github.com 온몸 제스처를 인식해서 키보드 입력하는 소스인 것 같습니다. 왠지 웃으면 안될 것 같은데..
498
2
0
피토니피토니· 4년

GitHub 작업때마다 자동으로 트윗 날리게 만들기

How to Send Tweets With a JavaScript GitHub Action Learn how to create a GitHub action which sends a tweet whenever a pull request is merged. hibbard.eu 트윗을 날리는 간단한 자바스크립트 모듈을 만든 다음 GitHub의 workflow 기능을 이용하여 GitHub에서 pull, request 등의 액션을 취할 때마다 자동으로 트윗을 날리도록 만드는 방법이네요.  
1.3K
1
0
피토니피토니· 4년

리액트 단점, 리액트를 사용하면 안 되는 이유

리액트 단점, 리액트를 사용하면 안 되는 이유 ender minyard의 Stop Using React… sumini.dev 앱 개발을 위해 React Native를 쓰는 것은 장점이 많아 동의하지만 웹쪽 프론트 프레임워크로 React나 Vue같은 걸 쓰는 점에 대해서는 솔직히 갸우뚱입니다. 특히 내용 중에 4번에 동의하는 편인데 다들 어떻게 생각 하시는지??
1.4K
4
2
0
GoogleTester
GoogleTester·2023-07-21
testgoogle
·2021-04-20