나를 위한 음악앱 만들기
유튜브 프리미엄에서 독립하기
유튜브 프리미엄에서 독립하기
깃헙 Octokit 수준의 API 클라이언트 타입을 정의하고 생산적으로 사용하는 방법
사무실의 시대가 돌아왔다. 회사에 내 자리가 생기면 가장 갖고 싶었던 게 이름표다. 테크 감성 오지는 디지털 명패 만드는 법을 알아보자.
나만의 문제 해결과 성장, 두 마리 토끼를 잡기 위해 사이드 프로젝트하기
아직도 이불킥을 찬다.
WebRTC를 활용한 실시간 1:1 강의를 지원하는 튜터링 플랫폼
구글 Meet를 가상 교실로 바꿔서 지루한 화상 수업을 재밌고 인터랙티브하게 만드는 프로그램이다.
21-1학기 수강신청 취소 랭킹 https://hufs-drop.surge.sh
반년 동안 스타트업의 FE 개발자로 일하면서 얻은 경험과 지식을 동료 개발자들에게 전달하기 위한 글을 작성했다.
Vue.js로 구현한 온라인 MIPS 시뮬레이터 GUI 앱 링크: https://mips.surge.sh GUI 깃헙: https://github.com/16Yongjin/mips-simulator-in-vue CLI 링크: https://repl.it/@yongjin08...
부대에서 자바스크립트와 크롬으로 만든 게임들 부대에 있을 때 코로나19 때문에 병사들이 휴가도 못 나가고 일도 없어서 지루한 시간을 보내고 있었다. 모두가 힘든 상황에서 뭘 할 수 있을까 고민하다가 자바스크립트로 게임을 만들기 시작했고 게임 공장처럼 평균 2주에 한 개씩 찍어...
해커톤을 준비하기 위해 아키텍처, 시퀀스 다이어그램 구성, 랜딩페이지, 로고 디자인, 풀스택 개발, 코어 기능 구현한 이야기
5학기 째 만들고 있는 수강신청 빈자리 알람이다.
터치 세 번만에 포르투갈어 단어를 찾을 수 있는 앱
청소시간에 청소구역을 추첨하는 시간을 줄이고자 청소구역뽑기 앱을 만들고있다.
Flutter로 포르투갈어 동사변형 안드로이드 앱을 만들고 출시했다.
혼밥하는 사람들을 연결해서 혼밥하기 어려운 맛집에 쉽게 갈 수 있게 만드는 것을 목표로 만든 앱이다.
AI 대회에 참여하면서 할일을 관리하기 위해 만들었다.
윈도우에서도 편하게 포어를 입력하기 위해 웹상에 구현한 포르투갈어 입력기
겨울방학때부터 아르바이트 하고 남는 시간에 만든 학교 주변 식당 앱이다.
단어 서버 성능이 좋아진 기념으로 크롬 익스텐션을 만들었다.
{ 변형: [원형] }으로 구성된 객체를 만들기 위해 작성한 스크립트
1시험 1앱 프로젝트의 일환로 만들었다.
미로 같은 도서관에서 빠르게 책을 찾을 수 있는 솔루션
학교 모바일 학생증 앱이 불편해서 만들었다.
이틀 만에 만든 빈자리 알람
외대 주변 식당 추천앱, 훕스토랑
단 세 번의 터치로 포르투갈어 단어를 찾으세요.
Vue.js + Vue material로 음식추천앱 UI를 만들었다.
처음으로 만든 수강신청 빈자리 알람
터치 3번으로 포르투갈어 단어를 찾는 안드로이드 앱
내가 만든 카카오톡 챗봇 3가지
2017년 6월 1일 IT동아리 학술제 때 발표자와 청중 간 소통을 위한 채팅앱을 만들었다.
PC를 사용해야만 교재의 성우 녹음 파일을 들을 수 있어서 핸드폰으로도 대본보며 녹음파일을 들을 수 있게 어플 제작함.
공부하기 싫어서 공부어플을 만들었다.
HTTP 요청을 처리할 스레드 풀 라이브러리를 구현한다.
함수 포인터로 함수를 인자로 넘기기, 클로저를 반환하는 방법을 다룬다.
뉴타입의 유용성, 타입 별칭, ! 타입, 동적 크기를 가진 타입
연관 타입, 기본 제네릭 타입 파라미터, 완전 정규화 문법, 슈퍼 트레잇, 뉴타입 패턴
컴파일 타임에 강제되는 메모리 안전성을 해제하고 안전하지 않은 코드를 작성할 수 있다.
복잡한 타입 구조 속 값을 비교하기 위한 문법
러스트는 객체 지향 프로그래밍도 가능하다.
자신있는 동시성을 위한 러스트 표준 라이브러리 사용법
Box<T>로 힙 데이터를 참조하고, Rc<T>로 다중 소유권을 갖고, RefCell<T>로 불변 값을 변경하고, Weak<T>로 약한 참조를 가질 수 있다.
Cargo로 더 많은 일을 하기
반복자 패턴은 시퀀스의 항목을 순회하고 순회 종료 시점을 결정하는 로직을 추상화한다.
환경을 캡처할 수 있는 익명 함수
프로그램이 기대하는 기능을 하는지 검증한다.
모든 참조자는 라이프타임을 갖고 있다.
컴파일러에게 특정 타입이 다른 타입과 공유하는 기능 있음을 알려준다.
컨셉의 복제를 위한 도구, 구체 타입의 추상화
복구 가능한 에러를 위한 Result<T, E>와 타입과 복구 불가능한 에러를 위한 panic! 매크로를 사용한 에러처리
러스트의 대표적 컬렉션인 벡터, 스트링, 해쉬맵
mod로 모듈 정의하기, pub으로 모듈 노출, use로 네임스페이스 사용
하나의 타입이 가질 수 있는 값을 열거하는 열거형, 패턴에 따라 실행 흐름을 조절하는 match, 하나의 패턴만 매칭하는 if let
구조체 내에 정의되는 함수
연관된 여러 값을 묶어서 의미있는 데이터 단위 정의한다.
컬렉션의 일부 연속 요소를 참조하는데 사용한다.
소유권을 넘기지 않고 참조자를 통해 함수에 인자를 넘길 수 있다.
러스트는 소유권이라는 개념을 통해 C++처럼 직접 메모리 할당/해제를 하거나 JS처럼 가비지 컬렉터를 사용하지 않아도 메모리를 관리할 수 있다.
내부 상태를 나타내는 객체가 컨텍스트 객체의 행동을 결정한다.
컬랙션의 세부사항을 몰라도 그 안에 들어있는 모든 항목에 접근하는 방법을 제공한다.
전체 알고리즘은 상위 클래스에서 구현하면서 특정 부분은 서브 클래스에서 구현하게 하는 패턴
복잡한 인터페이스들을 쓰기 쉬운 하나의 인터페이스로 단순화한다.
어댑터 패턴은 코드 변경 없이 한 인터페이스를 다른 인터페이스에서 사용할 수 있게 한다.
실행될 기능을 캡슐화함으로써 기능의 실행을 요구하는 호출자(Invoker) 클래스와 실제 기능을 실행하는 수신자(Receiver) 클래스 사이의 의존성을 제거한다.
클래스의 인스턴스를 하나만 만들고, 어디서든 그 인스턴스에 접근할 수 있게 하기 위한 패턴
팩토리 메서드 패턴과 추상 팩토리 패턴
데코레이터 패턴에서는 객체에 추가적인 요건을 동적으로 추가한다. 데코레이터는 서브클래스를 만들어서 기능을 유연하게 확장할 수 있는 방법을 제공한다.
옵저버 패턴은 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들한테 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다 의존성을 정의한다.
객체의 행동을 자유롭게 바꿔 끼울 수 있는 패턴
객체의 생성과 구현을 분리하는 팩토리 패턴
잘 쓰고 있는 맥 유틸리티들
오픈 소스 길찾기 프로그램인 OSRM 설정, 사용법 네이버나 구글 지도 API로 두 장소 간 경로의 거리와 이동시간을 구할 수 있다. 하지만 문제는 비용. 1건 당 5원 정도 비용이 든다. 장소가 많으면 많을수록 두 장소 간 경로 수는 제곱으로 늘어난다. 장소가 1000개면...
웹에 있는 툴만 사용해서 아이콘 만들기
GCP에서 VM 대여 후 우분투에 토렌트를 설치하고 미디어 서버 만드는 법
오토핫키 하나로 일반 키보드를 코딩용 키보드로 만든다.
서버 세팅하기
아이패드로 코딩을 시도해보자.
cmd + , 로 사용자 설정 파일을 열고
맥용 비쥬얼 스튜디오 체험판이 나왔다.
Mac os에서 Windows 용 exe파일을 실행하는 법
타입 안전한 API를 만드는 방법. API 정의와 호출 분리를 통해 얻는 장점 등
자바스크립트로 Little Lisp interpreter 만들어보기
사전 준비
Vue.js 프로젝트에 FCM 추가하기
Reducer와 Store, Action을 사용해보기
effective c++을 읽는데 공부 안한 c++ stl의 벡터와 반복자가 나왔다.
ASP.NET 시작 튜토리얼 정리
운영 체제에서 메모리 관리를 할 때 흔히 사용되는 페이징을 알아본다.
하드웨어 인터럽트 처리 방식과 타이머 인터럽트, 키보드 입력 처리하는 법, hlt 명령어
CPU가 예외 처리 함수 실행에 실패했을 때 발생하는 더블 폴트를 알아본다.
CPU 예외 처리 과정 설명과 커널에 중단점 예외 처리 기능 추가하기
안전한 VGA 텍스트 모드 사용을 위한 라이브러리 만들기
x86 아키텍처에서 돌아가는 작은 크기의 64비트 러스트 커널을 만들어본다.
운영체제를 만들기 위해 운영체제 종속성을 제거하는 작업을 한다.
23년 돌아보기
16:18 비율의 LG 듀얼업 모니터. 27인치 4K 피벗 모니터와 비교해서 얼마나 생산성이 올라갈까?
22년 돌아보기
2021년 돌아보기
n 라인의 문자열을 180도, 360도 회전시키는 문제
최근 읽은 책과 기사 그리고 오늘 들은 취업강의에서 자신의 이야기를 온라인에 남기는 것을 조언받았다. 그래서 오늘 워드프레스를 알게 되어 시작했다. 볼 사람은 없겠지만 이 글을 보고 있는 독자를 생각하면서 글을 써야되기에 문장 구조나 논리적 흐름 맞추느라 글을 쓰는게 ...
텐서플로.js 모델을 일렉트론에서 오프라인으로 사용하는 팁
Node.js Travis CI 설정하기
Jest와 Puppeteer로 자동화 테스트를 하는 방법
Mongoose가 MongoDB로 보내는 쿼리를 가로채는 방식으로 캐시를 적용할 수 있다.
노드 인스턴스를 여러개 띄워 노드 앱의 성능을 향상시킬 수 있다.
리눅스에 Node.js 앱 배포를 자동화하는 스크립트
일반적인 파일 첨부 방식과 편리한 UX를 위한 드래그 & 드롭, 붙여넣기 파일 첨부 방식 구현하기 1. 인풋 태그 사용 파일 선택 시 인풋태그에서 파일을 가져온다. <template> <input multiple type="file" accept="...
크롬 개발자도구의 콘솔탭에서 사용할 수 있는 유틸 함수들
자바스크립트로 Little Lisp interpreter 만들어보기
Web Bos의 Get better at JavaScript with just JavaScript 강연 정리
Longest Common Substring
Longest Common Subsequence
중복 비교를 건너뛰어 문자열 속 단어를 빠르게 찾을 수 있는 KMP 알고리즘
심볼이 다른 위치의 개수
아두이노 레오나르도로 PC나 Mac의 볼륨 컨트롤러를 만들었다.
아두이노 레오나르도로 마우스 시뮬레이션하기
함수형 프로그래밍으로 더 쉽게 딥러닝 모델만들기
파이썬 illegal UTF-16 surrogate 해결법
Python 함수의 신비함
Understanding LSTM Networks
코세라의 11주 머신 러닝 클래스를 끝냈다.
Node.js 앱을 Kubernetes로 배포하는 방법
A successful deployment model 번역
Udacity의 Intoduction to Computer Vision에서 퍼옴.
box-sizing: border-box; margin, padding이 width, height 박스에 다 포함되어 부모.자식이 들어맞게 된다.
1. 비밀번호 설정
스칼라의 타입 클래스 패턴 정리
스프링 부트 공부 - VS Code 설정, MVC, 로깅, MyBatis, 인터셉터, 필터, AOP, 트랜잭션, 애러처리, 파일 업로드와 다운로드, REST API, JPA를 다룬다.
How to undo (almost) anything with Git 번역
매킨토시 클래식II를 미니 PC로 개조하기