찰스 핸디 ‹삶이 던지는 질문은 언제나 같다›
·
책/책 읽고 쓰기
돈에 관한 책을 읽은 적이 있다. 책의 후반부에서 저자는 이렇게 묻는다. ‘당신이 아무리 많은 돈을 가지고 있어도 얻기 어려운 것과 돈 한푼이 없어도 얻을 수 있는 것은 무엇일까?’ 놀랍게도 내가 찾은 두 질문의 답은 동일했다. 그것은 소위 말해 삶에서 가장 소중하다고 여겨지는 것들이었다. 예컨대, 사랑하는 '마음'이나 지금 이 순간에 주어진 '삶'과 '시간'들이 그러했다. 이는 가치를 돈이라는 숫자를 통해 판단하던 관성적인 생각의 흐름에 균열을 일으킨 경험이었다. 찰스 핸디 ‹삶이 던지는 질문은 언제나 같다›의 마지막 장을 덮고나니 이 책의 제목에 쓰인 ‘삶이 던지는 질문’이라는 표현이 새롭게 다가왔다. 내가 생각하기로는 삶이 개념적이고 추상적인 무엇이 될 때 (그리하여 삶이 우리에게서 종종 멀어질 때..
빅터 프랭클린 ‹죽음의 수용소에서›
·
책/책 읽고 쓰기
정신과 의사였던 빅터 프랭클린은 독일의 아우슈비츠 수용소에 갇혀있던 경험을 바탕으로 ‹죽음의 수용소에서›를 쓴다. 수용소에 갇힌 많은 사람들이 굶주리거나 병에 걸리거나 고문을 당하거나 가스실에서 죽어가는 현장에서 그는 하나의 사실을 발견한다. 바로 그러한 최악의 상황에서도 누군가는 성자처럼 행동하고 또 누군가는 돼지처럼 행동한다는 것이었다. 강제 수용소라는 끔찍한 환경 속에서도 인간의 의지는 꺾이지 않았으며, 그러한 의지의 경향(선택)에 따라 각자는 전혀 다른 사람이 되었다. 의지와 선택 언뜻 생각하면 이토록 비참한 상황에서는 모두가 이성을 잃고 비이성적이고 이기적으로만 행동할 거 같다. 그러한 맥락에서 프로이트는 ‘다양한 사람들이 굶주림에 시달릴 경우, 결국 개인의 차이는 모호해지고 채워지지 않은 굶주..
홍성태 ‹모든 비즈니스는 브랜딩이다›
·
책/책 읽고 쓰기
홍성태 ‹모든 비즈니스는 브랜딩이다›를 읽기 전에는 물이 딱 절반이 남았을 때, '물이 반이 남았네?' 또는 '물이 절반 밖에 안 남았네?'하는 인식을 결정하게 하는 것이 브랜딩의 역할이라고 생각했다. 그런데 책을 읽고 나니 모두가 남아 있는 물의 양에만 집중할 때, '중요한 것은 남아 있는 물의 양이 아니라 깨끗함이다'라고 말하며, 자신의 제품을 차별화하고 시장에서 자신의 자리를 정확하게 찾아내는 것이 브랜딩의 역할이라는 것을 알 수 있었다. 이처럼 하나의 사실(제품과 서비스)에 대해 자신들이 의도한 방식으로 고객 경험과 인식을 이끄는 것이 브랜딩의 힘이 아닐까? 자신들이 공들여 만든 제품과 서비스의 특정한 측면을 고객들이 보다 잘 경험할 수 있게 관점과 가이드라인을 제시해 주는 것이 브랜딩의 중요한 ..
타입스크립트 (2) 기본 사용 방법
·
개발/Typescript
1. 타입 선언 타입스크립트는 변수 뒤에 타입을 명시할 수 있습니다. let foo: string = 'hello'; 타입과 다른 값이 할당되면 컴파일 시점에 에러가 발생합니다. let bar: number = true; //error 함수의 경우에는 다음과 같이 매개변수와 반환값의 타입을 지정할 수 있습니다. // 함수 선언식 function plus(x: number, y: number): number { return x + y; } // 함수 표현식 const plus = (x: number, y:number): number => x + y; 타입스크립트는 자바스크립트의 타입을 모두 사용할 수 있으며 다음과 같은 추가 타입을 제공합니다. 타입 설명 array 배열 tuple 배열에 고정된 아이템 수..
타입스크립트 (1) 타입스크립트란?
·
개발/Typescript
타입스크립트란? 타입스크립트는 마이크로소프트에서 관리하는 오픈 소스 프로그래밍 언어로 자바스크립트의 슈퍼셋(superset)입니다. 슈퍼셋은 상위 집합이라는 의미로 자바스크립트의 모든 기능을 지원하는 동시에 추가 기능을 제공한다는 의미입니다. 타입스크립트가 출시된 이유는 무엇이며 바닐라 자바스크립트에 비해 어떤 장점이 있을까요? 타입스크립트를 사용하는 이유 타입스크립트를 사용하는 가장 큰 이유 중 하나는 타입(type)을 사용하여 런타임 이전에 오류를 발견하기 위해서입니다. 아래 예시를 살펴볼까요? 아래와 같은 자바스크립트 코드의 의도는 숫자를 전달받는 것이겠지만 실제로는 어떤 타입의 인수를 받고 리턴해야 하는지 정확하게 정해져 있지 않습니다. 따라서 문자와 숫자를 더하는 이상한 연산도 오류가 없이 진행..
효과적인 개발 공부 방법 (초보 개발자)
·
개발/Articles
시간은 중요하다. 누구도 시간을 살 수 없다. 돈보다 중요한 것은 시간임을 잊지 말 것. 자신을 잘 알아야 한다. 자신이 어디로 나아가려는지 분명히 안다면 모든 것을 배우느라 시간을 낭비하지 않아도 된다. 초보자인 경우에는 파이썬이나 자바스크립트 중 하나를 선택해 시작하자. 한 언어를 마스터하라. 좋아하는 언어를 제대로 배우자. 모범 사례를 읽고, 커뮤니티에 참여하고, 컨퍼런스에 가자. 데이터구조, 알고리즘과 같은 미리미리 공부해두자. 그러나 너무 빨리 배울 필요는 없다. 배포까지 할 줄 아는 수준이 될 때 배우기 시작하자. SQL을 배워두자. 결국에 필요하다. 코드 에디터 사용 방법(단축키 등)과 커스터마이징 하는 방법을 공부하자. 겸손한 마음으로 꾸준히 계속해서 학습하자.
[WebRTC] 7. 라이브 스트리밍 구현 (3) Sender / 카메라 및 오디오 전환하기
·
개발/Projects
스트림이 진행되는 동안 카메라나 오디오를 전환하려면 어떻게 해야 할까요? 이 때는 1) 상대방의 연결을 확인하고, 2) 사용하는 기기를 확인한다음, 3) sender를 통해 스티리밍 track을 변경해줄 수 있습니다. Sender 찾기 먼저, getSenders()를 사용하면 webRTC 연결에서 sender 정보를 받아올 수 있습니다. 이 정보를 업데이트하면 기기 전환을 구현할 수 있습니다. async function handleCameraName() { await getMedia(cameras.value, undefined); if (myPeerConnection) { console.log(myPeerConnection.getSenders()); } } async function handleAudio..
[WebRTC] 6. 라이브 스트리밍 구현 (2) IceCandidate & Track
·
개발/Projects
Peer A와 Peer B가 offer와 answer를 주고 받았다면 이제 IceCandidate이벤트를 실행하여 스트리밍을 진행할 수 있습니다. IceCandidate는 Internet Connectivity Establishment의 약자로 연결 가능한 네트워크 주소 후보 Candidate를 찾는 역할을 합니다. 각 Peer는 Candidate에 연결하여 서로의 데이터를 스트리밍할 수 있습니다. IceCandidate 이벤트 리스닝 RTCPeerConnection이 생성되면 icecandidate 이벤트 리스너가 발동되도록 합니다. 다음으로 스트림(myStream)에 트랙을 추가해줍니다. 로그를 찍어보면 아래와 같은 icecandidate 들이 출력됩니다. // app.js function makeC..