프로그래밍
-
리스프에서 멋진 3가지.프로그래밍/설계 2024. 11. 3. 13:32
이 글을 쓰게 된 계기는 Racket 공식 계정의 좋아요 때문.그리고 plwiki에 조금 기여해볼까 생각 중. 리스프라 하면 고전언어라고만 생각할지도 모르겠으나,선진적으로 구현된 부분들도 많다. 이 중 Code as data, data as code 혹은 Homoiconicity처럼 식상한 것을 제외하고, 알아보도록 합시다.Racket - 매크로: 본디 리스프에서 매크로는 유명하다. 그 중에서도 Racket의 매크로는 조금 특별하다.Racket - parameterize: Thread와 함께 사용할 수 있는 동적 바인딩.Common Lisp - CLOS: 매우 동적이고 유연한 객체지향 시스템.이 글을 보게되면 제가 가끔씩 Racket 기습찬양하는 이유를 알게될지도 모르겠네요. 1. Racket - 가장 ..
-
프롬프트, 프로그래밍처럼 생각하기프로그래밍/기타 2024. 2. 10. 00:32
제 블로그는 프로그래밍이 대부분의 주제를 다루고 있고, 이 글을 읽을 독자 또한 대부분 개발자라고 추측된다. 최근 2주간 프롬프트 엔지니어링을 하면서 얻은 인사이트를 공유해보자 한다. 당연히(?) 프롬프트만 만진건 아니긴 했지만.. 내 결론은 프롬프트 엔지니어링은 프로그래밍처럼 접근 가능하다이다. 1. 언어 LLM은 자연어를 기반으로 한다. 따라서 장점과 단점이 공존한다. 직관적이고 풍부한 표현과 어휘를 모두 활용할 수 있지만, 상대적으로 모호한 편. 모호함을 줄이기 위해서는 마치 프로그래밍을 하는 것처럼 구조적으로 작성하고, 동음이의어일 경우 영어나 한문을 병기 표시함으로서 더 정확하게 뜻을 전달할 수 있다. 나중에 로지반 같은 AI 전용 언어가 등장해도 재밌지 않을까 싶긴하다 ㅋㅋ 2. 컴퓨터 구조 ..
-
더 나은 Git 워크플로우를 향해서프로그래밍/기타 2023. 1. 15. 20:43
최근 몇개월간 Git 활용이 일진보한듯 하여 몇글자 적어본다. 0. 레포구조 시작하기 - 버전 관리란? 분산 환경에서의 Git - 분산 환경에서의 워크플로 깃은 분산 버전 관리 시스템(Distributed Version Control Systems)이기 때문에 각 컴퓨터마다 레포지토리를 가질 수 있다. 개발자 각자가 로컬 커밋을 가지고 원하는 때에 서버에 반영할 수 있는 것은 물론, (시간) 레포지토리 연결구조도 원하는대로 가져갈 수 있다. (공간) 위에서 가장 복잡해보이는 계층형은 리눅스처럼 거대한 프로젝트가 운영되는 방법이다. 메인테이너 밑의 관리자가 각자 분야의 기여를 받고, 최종적으로 메인테이너가 관리자 레포를 merge하는 식으로 운용한다. 이렇게 다양한 방식으로 구성할 수 있다는 점은 DVCS..
-
HTML과 CSS 전처리, 템플릿의 표현력프로그래밍/Web 2022. 9. 11. 01:55
별다른건 아니고, 예전에 찾았었던 자료들 정리나 하려고 쓰는 글. 그래도 굳이 쓰게된 동기를 찾는다면 JSX와 CSS In JS의 표현력에 관해 발전할 여지가 있는지이다. PHP를 사용하던 페이스북이 XHP(xhp-php5-extension, XHP: Introduction)를 만들고, 대체할 제품으로 React와 JSX, CSS-In-JS(슬라이드)를 소개하더니, 종국에는 서버 컴포넌트까지 만들어 내면서 PHP를 대체 가능하게 만들어버렸다. ReactJS 둘러보기 - XHP부터 React Native까지 난 이러한 과정에서 과연 표현력의 손실이 있는가가 궁금했다. 우리가 보지 못한 다른 가능성이 있는가도 말이다. 전처리, 템플릿 엔진 전처리기는 입력 데이터를 처리해 다른 프로그램에 대한 입력으로 사용되..
-
Pure CSS + SVG 애니메이션 적용 실패기프로그래밍/Web 2022. 4. 13. 14:58
때는 2022년 2월 21일. 비디오 플레이어 디자인을 고민할 때였다. 기본, 1줄 프로토타입, 2줄 프로토타입 이왕 만드는 것, 재생-일시정지 버튼에 무언가 포인트를 넣고 싶었다. 아이디어 원천은 LG 음악앱. 폰은 구렸지만 음악앱 하나는 기똥차게 좋았던 LG..ㅠ 처음 써봤을때 재생, 리플레이 인터렉션보고 감동받았다. (투박한 유튜브 따위와 비교가 안됨) 대략 이런 느낌 [Dribble: Play -> Pause, Micro Interactions] 먼저 움직이는 SVG를 만들어봤다. 일시정지 사각형 두개가 중앙에서 만나 깔끔하게 옆으로 솟아나는 재생버튼을 만들기란 어지간히 어려운 일이 아니었다. 똥손이라 단순한 크기조정과 이동 정도를 구현하면 몰라도, 자체적으로 그래픽 리소스를 만들 자신은 없었다...
-
객체지향 시스템과 패러다임 그리고 철학프로그래밍/설계 2021. 12. 14. 00:31
자바스크립트는 왜 프로토타입을 선택했을까 라는 글을 읽고 떠오르는 내용들을 덧붙이거나 정리 해보았습니다. 원글과는 접근법이 좀 다르며, 기획이 아닌 급하게 쓴 글이라 의식의 흐름 사이에서 표류합니다 ㅠㅠㅠ 빠른요약 클래스와 프로토타입의 가장 커다란 차이는 객체 생성 방식 [클래스 -> 인스턴스 vs 객체 -> 복사된 객체]. 가장 큰 공통점은 객체지향이며, 프로그램을 객체라는 단위로 나누고 상호작용하게 하는 것. 객체지향의 핵심인 캡슐화를 잘하기 위한 가장 간단한 방법은 추상화를 잘 하는 것. 추상화는 데이터 위주의 성질(고전적 OOP), 형태(타입), 상태(데이터 주도 설계)와 관계 중심인 시간(절차지향), 행동(함수형), 정의(논리형), 상황(도메인 주도 설계, AOP) 등으로 나누어 생각할 수 있음..
-
러스트 찍먹 후 느낀점?프로그래밍/Rust 2021. 6. 13. 00:36
면책사항) 튜토리얼을 끝낸 후 첫인상일 뿐이므로, 정확하지 않을수도 있다. 귀여운 >.< Ferris 좋았던 점. 1. 툴체인!! 누구도 부정할 수 없다. Cargo, rustup, Rustfmt, Clippy, Rust Analyzer등의 공식툴!! 빌드 툴부터 생각해보자. 네이티브 계열에서 생각나는건 Make!! 어느정도 규모가 있는 프로젝트는 크로스 플랫폼 대응이나 각종 설정을 적용하기 위해 Meta Make 시스템을 사용하는게 일반적이다. 대표적인게 GNU Autotools(Autoconf, Automake, Libtools). [Introduction to GNU Autotools, The Basics of Autotools] M4와 Make 두개의 작은 언어를 더 알아야만 한다..ㅋㅋㅋ 나중에..
-
[스압/데이터주의] 웹 최적화 방식 모음 - 5. 빌드프로그래밍/Web 2021. 3. 5. 12:32
[스압/데이터주의] 웹 최적화 방식 모음 - 0. 전반적 원칙과 원리 [스압/데이터주의] 웹 최적화 방식 모음 - 1. 다운로드 [스압/데이터주의] 웹 최적화 방식 모음 - 2. 파싱 및 렌더링 트리 [스압/데이터주의] 웹 최적화 방식 모음 - 3. Layout 및 렌더링 [스압/데이터주의] 웹 최적화 방식 모음 - 3.3 UX 트릭 [스압/데이터주의] 웹 최적화 방식 모음 - 4. 로드 후 [스압/데이터주의] 웹 최적화 방식 모음 - 5. 빌드(현재) 5. 빌드 빌드 성능 최적화를 앞서, 우리가 사용하고 있는 툴들의 종류가 무엇이 있는지 생각해보자. 로컬에서 자바스크립트 코드 자체를 실행하기 위한 Node.js 패키지 설치와 의존성 관리를 위한 NPM 모노레포 관리를 위한 Lerna 자바스크립트를 정적..