전체 302

디베이터 - 토론은 어떻게 확산되는가?

#1 개요책의 맺음장으로, 저자는 "토론은 어떻게 확산되는가?"라는 질문에 답한다. #2의 내용은 원래 목차대로면 '테크놀로지'장에 해당하는 내용이지만, 해당 게시글이 길어져 분리했다. #2 핵심 논리#2-1 공적 제도우선, 공적 기구들은 (정책ㆍ사업의) 설계 차원에서 토론의 여지를 더 많이 확보해두어야 한다. 이를 위해서는 입법 절차 등을 점진적으로 개혁하거나 새로운 구조를 만들어야 한다. 시민의회가 새로운 구조의 훌륭한 예다. 무작위로 뽑은 시민 그룹에 구속력이 있거나 느슨한 정책을 제안할 수 있도록 권한을 주는 것이다. 두번째로, 국가는 시민에게 그런 포럼에 참여하는 데 필요한 교육을 제공해야 한다. 민주국가의 시민이라는 기초적 자각에 머무르지 않고, 하버드대학교 메이라 레빈슨 교수가 "참여의 지식..

Swemo - Iteration 2: UI 디자인 방향 탐색(Exploration)

#1 개발 목표 (Iteration Goal)#1-1 이상(Ideal)과 징검다리이상(Ideal)직전 Iteration에서 앱의 아주 기초적인 틀을 잡았다. 이제 남은 것은 여기에 여러 가지 구현을 쌓아 올리는 것이다. 먼저 든 생각은 "도메인 영역을 일단 구현하자"였다. 하지만, 도메인도 결국 내가 UI에서 어떻게 표현하느냐에 따라 좌지우지될 것이라는 생각이 들었다. 왜냐하면 Swemo는 UI로 '승부'를 볼 가능성이 높은 앱이기 때문이다. 만약 Swemo 사람들에게 '좋은 앱'으로 인식된다면, 그 이유는 (기존 메모 앱들에 비해) 좋은 UI일 것이다. 결론은, 무엇을 어떻게 보여주느냐가 가장 근본적인 설계의 핵심이다. Iteration 2에서 구체화한 UI를 통해 '이상(Ideal)'의 윤곽도 보이리..

컴파일 관련 용어 정리

#1 컴파일 이야기#1-1 프로그래밍이란프로그래밍은 인간의 사고와 의도를 기계(CPU)가 이해하고 수행할 수 있는 형태로 번역하는 과정이다. #1-2 소스 코드 (Source Code)인간의 사고와 의도를 기계가 오해 없이 이행할 수 있도록, '컴파일'을 염두에 둔 여러 약속(계약)에 맞춰 쓴 글. #1-3 컴파일 (Compile)먼저 소스 코드가 지켜야 할 약속을 검사한 다음 소스 코드에 담긴 글쓴이의 의도를 보존하면서 (상대적) 고급 언어를, (상대적) 저급 언어로 변환하는 것. 예시예1: example.c → example.s 예2: example.s → example.o 예3: example.c → example.o 예4: example.java → example.class CPU와의 관계컴파일은..

[Gradle] Type-safe Project Accessors 도입 배경 및 사용법

#1 기존의 모듈 호출 방식// in build.gradleplugins { ...}android { ...}dependencies { ... implementation(project(":datastore")) implementation(project(":designsystem"))}이 방식이 비효율적인 이유는 무엇일까?모듈 이름의 스펠링을 하나하나 기억해야 하고, 모듈 이름을 변경이라도 하면 프로젝트 내 모든 implementation() 문을 찾아다니며 수동 변경해 주어야 한다.게다가 사람의 수동 변경은 일부 코드의 누락 가능성까지 있다.잘못된 모듈 이름을 입력했을 때 build.gradle의 DSL(Gradle DSL)단에서 잡아내지 못하기 때문에, Gradle의 빌드가 ..

Swemo - Iteration 1: 메모 앱의 청사진(기초)

#1 개발 목표 (Iteration Goal)#1-1 이상(Ideal)과 징검다리이상(Ideal)'앞선 게시글'에서 말했던 내용의 충실하고 좋은 구현이 내가 바라는 이상이다. 하지만 앱을 만들다 보면 또 다른 형태로, 조금이라도 변할 거라는 직감이 든다. 그래서 현시점에 '이상'을 구체적으로 상상하는 것 자체가 시간 낭비라고 생각한다. 그뿐만 아니라, 오히려 청사진을 그려야 하는 지금 시점에서는 방해가 될 수도 있다는 생각도 든다. 지금은 '완성된 앱의 모습'을 미지수 x처럼 생각하겠다. x값은 분명 좋은 갚을 것이다. 앞으로도 제목이 "Iteration n"과 같은 형식의 블로그 게시글에서는 '이상'을 명시적으로 짚고 갈 것이다. 'Top-down' 적으로도 생각해야 'Bottom-up'을 정확하게 수..

SCSS와 자동화

#1 SCSS#1-1 WhatㆍWhySASS Sass: Syntactically Awesome Style SheetsSass is the most mature, stable, and powerful professional grade CSS extension language in the world.sass-lang.comCSS는 문법이 간결해서 좋지만, 유연함이 부족하기에 코드가 길어질수록 유지보수가 어려워진다. 이 단점(유연함)을 극복하기 위한 전처리기로서 SASS가 개발되었다. SCSSSCSS는 Sassy CSS라는 뜻으로, CSS에서 익숙히 사용했던 중괄호나 각종 문법을 사용한 SASS다. 아래에서 SCSS의 문법을 소개할 것인데, 원래 CSS를 알고 있는 사람이라면 바로 익힐 수 있을 것이다. #1..

의존성 그래프(Dependency graph), 데이터 흐름도(Data-flow diagram)

#1 의존성 그래프 영어로는 Dependency graph다. 각 노드는 클래스, 화살표는 클래스 간의 종속성을 나타낸다. 그래프 읽는 법예를 들어, 위의 그래프상에서 A는 B에 종속된다. 종속의 사전적 의미는 '자주성이 없이 주가 되는 것에 딸려 붙음'이다. 종속은 '알아야 한다'라는 말로도 표현할 수 있다. 따라서 A는 B에 대해 알아야 한다. 반면, B는 A를 몰라도 된다. B를 설계할 땐 A에서 뭘 어떻게 할지 전혀 신경 쓰지 않아도 된다는 것이다 (대신, B는 D에 대해 종속적이므로 D를 참조하며 설계해야 한다). A를 설계할 땐 B를 알아야 한다. '알아야 하는 쪽'에서 '몰라도 되는 쪽'으로 화살표를 이은 것이다. 쉽게 읽는 법화살표에 "depends on"이라고 쓰여 있다고 상상하고 그대로..

'열심히'의 함정

#1 열심(熱心)'열심(熱心)'이란, "어떤 일에 온 정성을 다하여 골똘하게 힘씀. 또는 그런 마음."이다. 아래는 '열심'의 2가지 존재 이유다. 1. 잘하기 위해서 (수단)2. 즐기기 위해서 (목적)우리가 명시적으로 "열심히 하자"고 말할 때는, 대부분 첫째의 의미다. 둘째의 의미는 암시적으로ㆍ무의식적으로 발현되는 경우가 많다. 대표적인 예는 디지털 게임이다. "열심히 하는 것도 좋지만 잘해야 해"라는 말도 있다. 이 말이 약간 불편하기는 해도, 부정할 수도 없다. 나도 어떤 제품이나 서비스를 '잘' 만들었는가로 평가하지, '열심히' 만들었는가로 평가하진 않으니까. 이 말은 본 게시글의 핵심 주제와 연결된다 (후술함). #2 몰입(熱心)'몰입(熱心)'이란, "깊이 파고들거나 빠짐."이다. 과연 열심..

기타 2025.12.08