본문 바로가기

분류 전체보기490

세이노의 가르침을 읽고서 신기하게도 저는 이 책은 다니던 회사의 대표이사님에게 받았습니다. 물론 개인적으로 받은 건 아니고 어느 날 갑자기 회사에 출근해 보니 전 직원의 책상 위에 책이 놓여있었습니다. 대표이사님이 직접 책을 제본해서 직원들에게 배포한 것입니다. 저는 당시에 이 책에 대해서 크게 관심을 갖지 않았습니다. 아마 대부분의 직원들은 받은 책을 서랍 어딘가에 넣어뒀다가 퇴사할 때쯤 버리고 갔을 거라 감히(?) 예상합니다. 하지만 저는 왜인지 다른 선택을 했습니다. 퇴사를 위해서 짐정리를 하던 와중 해당 책이 마음에 계속 걸려서 챙겨두었습니다. 그리고 지금은 그때의 선택이 옳았다는 걸 기뻐하며 열심히 독후감을 작성하고 있습니다. 대표이사님은 가난했던 시절에 몇 년간 아르바이트로 전전긍긍하면서 살았다고 합니다. 그리고 그 .. 2023. 2. 25.
GUID를 향한 여정 - 트위터가 만든 Twitter Snowflake Announcing Snowflake Announcing Snowflake blog.twitter.com snowflake 소개 Twitter가 OSS로 공개하고 있는 ID 생성기 Time-base한 ID (시간대별로 정렬이 가능하다. 의미를 가지는 Id) 64bit로 ID를 표현 (GUID 같은 경우는 128bit로 구성됨) 복수의 머신을 운용하여 병렬로 유일성을 가진 ID를 생성할 수 있다. 스칼라 언어로 구현 1초당 생성 가능한 개수 : 1000 [millisecond] * (2^12)[sequence number] = 4,096,000 맨 처음 비트는 사인 비트 : 1비트를 할당한다. 타임 스탬프 : 41비트를 할당한다. 기원 시각(epoch) 이후로 몇 밀리초가 경과했는지를 나타내는 값이다. 데.. 2023. 2. 24.
C# 숫자 서식 지정자(Number Format Specifier) 표준 출력 형식의 문법 {n,w:tp} 예시 : {0,10:N2} 키워드 명칭 n 인자 Argument w 출력 범위 Width t 데이타 타입 Data Type p 정확도 Precision decimal val = 1234.5678M; string s = string.Format("{0,10:N2}", val); // 출력: " 1,234.57" Console.WriteLine(s); {0,10:N2} : 첫 번째 인자인 val을 받아서 전체 넓이 10으로 앞의 공백 포함 10자리 표현하고 N(Numberic) 형식으로 표현된다. 소수점 이하는 2자리까지 표시한다. 표준 숫자 서식 문자열 (Standard numeric format strings) static void Main(string[] args.. 2023. 2. 21.
메모리 구조(Memory Structure)에 대해서 메모리 구조 우리가 exe 파일을 실행하면 운영체제는 프로그램에 정의된 명령어(코드)를 바탕으로 메모리에 프로세스를 적재한다. 해당 프로세스를 위한 Code, Data, Heap, Stack 영역이 생성된다. 메모리 구조 코드 영역 데이터 영역 힙 영역 스택 영역 코드 영역 (Code) 소스코드가 기계어 형태로 저장된다 CPU가 저장된 명령어를 프로그램 카운터에 의해 하나씩 가져가 처리하게 된다. 프로그램 시작부터 종료까지 메모리에 있게 된다. 컴파일 타임에 결정되고, 중간에 코드가 변경되지 않도록 Read-Only 형태로 저장된다. 데이터 영역 (Data) 전역변수, static 변수가 저장된다. 프로그램 시작과 동시에 할당되고 프로그램이 종료되어야 메모리가 해제된다. 실행 도중 변수 값이 변경될 수 .. 2023. 2. 17.
C# 커맨드 라인(CommandLine) 파싱 라이브러리 소개 커맨드 라인 라이브러리 소개 보통 툴이나 프로그램을 만들면 유아이가 별도로 없다면 입력인자로 받아서 여러 처리를 진행하게 됩니다. 이때 있으면 유용한 라이브러리가 커맨드라인 파싱 라이브러리입니다. 이번에 제가 알게된 라이브러리는 Mono.Options라는 이름의 라이브러리입니다. 라이브러리 링크로 이동 작고 가볍고 생각보다 기능이 많은거같아서 잠깐 써보았는데 벌써 마음에 들었습니다. 거의 대부분의 .Net 플렛폼에서 호환 가능 Full .NET Framework 4.0+ (Client Profile) .NET Core 1.0 .NET Standard 1.6+ Portable Class Libraries (Profile 259) 설치 방법 비주얼 스튜디오 누겟(Nuget)으로 설치 혹은 PM> Instal.. 2023. 2. 17.
나를 어디까지 몰아붙일 수 있을까? 자본주의와 정면대결을 하기로 결심했다. 내가 살아가고 있는 대한민국의 현재 시스템을 똑바로 바라보기로 결정한 것이다. 이전까지는 애매하게 흐릿한 곁눈질로 세상을 바라보고 있던 게 사실이다. 정면으로 응시하면 괴롭기때문이다. 왜냐면 나는 부자가 아니기 때문이다. 자본주의의 현실을 인지하는 그 순간 당신이 부자가 아니라면 현재의 삶이 너무나도 무기력하게 느껴진다. 내가 가진 구매력으로 할 수 있는 일이 거의 없을뿐더러 평일에는 돈을 쓸 시간조차 없다. 그래서 대부분의 사람들은 눈을 살짝 감고 스스로를 반쯤 속이며 현실로부터 눈을 돌린다. (보통 넷플릭스와 SNS로 도피하게 된다.) 하지만 나는 현실의 괴로움을 받아들이고 무기력한 스스로를 무대 위에 올리기로 결심했다. 나는 왜 스스로 고통을 자처하는가? 이는.. 2023. 2. 15.