Moved Posts

This commit is contained in:
Morgan 2024-06-22 23:50:32 +09:00
parent 51c24060cd
commit 39a6112a2e
No known key found for this signature in database
22 changed files with 54 additions and 795 deletions

View File

@ -1,9 +0,0 @@
+++
date = 2000-01-01T00:00:00Z
description = ""
draft = true
slug = "draft"
title = "draft"
+++
## body

View File

@ -1,32 +0,0 @@
---
date: 2021-01-28T06:14:00.000Z
description: ""
draft: false
title: 나는 무엇을 하고 싶은 걸까..
slug: what-i-wanted-to-do
---
나는 개발자가 되고 싶었다. 그래서 나 나름대로 여러가지 언어를 배우기도 했고 컴퓨터 관련된 여러 가지 활동을 하면서 나의 꿈을 키워나간다고 믿었다. 고등학교를 다니면서 외적으로 개인적인 공부도 많이 하고 있고, 이를 바탕으로 진로를 정하려고 했다. 고등학교 3학년이라 앞으로의 진로를 정해야 했고, 이런 저런 고민을 하다 보니 내가 공부했던 것들이, 또 내가 알고 있는 것들이 단순히 빙산의 일각이라는 사실을 깨달았다.
과학고를 다니는 덕에 수학적인 내용을 기본으로 하는 여러가지 컴퓨터 분야에 대해서는 나름 쉽게 공부할 수 있었다. 문턱이 낮았던 덕에 컴퓨터 아키텍쳐나 논리회로, FPGA, 어셈블리 언어에 대해서까지 공부를 하고는 했다. 이외에도 미래지향적인 양자컴퓨터나 양자논리에 대해서는 특히 관심을 가지고 있었고, 반도체에도 큰 관심이 있었다. 지금 돌이켜 보면 그냥 컴퓨터에 관련된 것이면 폭넓게 무엇이든 관심을 가졌었던것 같다. 컴퓨터란 물체를 설명하는 여러 원리나 그것을 활용하는 여러 방법에 대해 깊은 호기심이 있었다.
2학년, 대학을 지원하기 시작하면서 진로를 정할 때 즈음에는 정보보안에 대해 공부하고 있었기에 그 주제를 진로로 잡고 자기소개서를 썼었다. 내가 정보보안에 관심을 두게 된건 [Live Overflow](https://www.youtube.com/channel/UClcE-kVhqyiHCcjYwcpfj9w)란 외국의 유튜버를 알게 되고 나서였는데, "비밀"이라는 알려지지 않은 부분들을 탐구하고 분석해 나간다는게 흥미로웠던 것 같다. 나에게 정보보안이라는 분야 자체가 생소했고, 또 비슷한 수학 분야를 공부했었기에 자연스럽게 그쪽 분야에 흥미를 느낀것도 없지 않아 있을 듯하다.
대학교에 떨어지고 나서 좌절하고 방황하고 있을 때 고맙게도 때마침 포스텍 해킹캠프에 참가했다. 보안쪽을 나름대로 미리 공부해 두었다고 생각했기에 부담없이 참여할 수 있겠구나 생각하고 있었는데, 나중에 최하위 점수를 받았다. 팀 협업이 잘 되지 않았던 점도 있겠지만, 나는 아, 결국에 내가 무얼 하든지 각 분야에서는 이미 나보다 잘하는 사람이 넘쳐나구나, 라는것을 깨달았다. 제한된 환경에서 제한된 교육만을 받고 자라온 나로서는 그때까지 이런 점들을 느끼기 힘들었다. 전국적인 대회에 참여하면서 나는 살면서 한번도 느껴보지 못했던 열등감을 느꼈다. 때마침 개인적으로 공부하던 부분에서도 한계를 느꼈고, 이걸 직면하고 나니 나는 컴퓨터라는 분야에 처음으로 싫증이 났다.
정확히 말하면 싫어졌다기 보다는 지겨워졌다는 의미가 더 맞는 것 같다. 아키텍쳐나 어셈블리 언어에 대한 내용은 컴퓨터에 대한 호기심을 잃지는 않았는지 중간중간 남는 시간이면 찾아보거나 여러 글을 읽으며 공부를 하고 있기는 하지만, 개발이라는 것에 대한 의미를 잃고 말았다. 물론 이 일련의 사건은 다른 사람의 입장에서 봤을때 별것 아닐테지만.. 개인적으로는 좀 충격이었다.
#### **결심?**
나는 앞으로 컴퓨터란 분야가 어떵게 발전될지 개발 양상이나 그러한 기술적, 경제적 이야기 하는것을 좋아한다. 이러한 분야에 관심이 있는 친구에게 나의 이런 저런 생각을 공유하고는 했다. (이러한 점은 우리 아버지의 영향이 가장 컸던것 같다.) 이런 저런 얘기를 하다 보면 결국에는 항상 대학이 중요하다는 결론이 나고는 했다. 대학에 대한 이야기를 하다 보면 나의 진학에 대한 이야기가 안나올 수 없었고, 이런 이야기를 하며 나는 마음 속으로 진로 방향을 결정해야 했다. 나는 원래 컴퓨터 공학과에 진학하고 싶었다. 더 나아가 공부 스탯을 쌓아 결론적으로 정보보안 대학원에 진학하는 것이 내 중간 목표였다. 사실 최종 목표는 컴퓨터 분야에 대한 패러다임을 새롭게 만들고 싶다는 말도 안되는 거창한 것이었는데, 지금 생각해 보면 무척이나 헛된 꿈이었던 것 같다.
나는 암호학, 정보보안, 네트워크, 로우-레벨 코딩, 하드웨어 설계, 반도체, 양자컴퓨터, 소프트웨어 공학, 등등.. 여러 분야에 관심을 가지고 있었다. 위에 있는 단어를 나열하면서 가장 나에게 끌렸던 분야는 다름아닌 반도체와 하드웨어 프로그래밍, 로우레벨 코딩이 가장 끌렸었다. 이런 결정을 내리는 과정에서 고민을 꽤 했는데.. 내가 제일 최종적으로 하고 싶었던 일은 무엇이었을까..? 아마.. 컴퓨터 아키텍처를 분석하고 그런 시스템을 리버싱 하거나 설계하는 것이였던 것 같다. 마냥 소프트웨어 공학이나 개발보다는 그냥 논리회로 같이 컴퓨터 기계적인 분야에 더 관심이 있었고, 양자컴퓨터에 대해서 공부를 하다 보면 또 양자세계에서는 다르게 적용되는 새롭게 정리되고 개발되는 아키텍처에 대해서도 공부하고 싶었다. 이런것들을 생각하고 생각하다 보니 결국 시간이 다가왔고, 컴퓨터 공학과인지 전기전자 공학과 인지 결정해야 할 때가 와버렸다. 컴퓨터 공학과는 뭐랄까.. 너무 공학의 느낌이 안났다. 뭐 딱히 그래서는 아니지만, 난 컴퓨터도 배울 수 있고 또 반도체/하드웨어 분야에 대해서도 연구를 하는 전기전자 공학과를 가고 싶어졌다.
이제 고등학교 3학년이라, 그러한 고민을 하기에 적당한 시기였지 않나 싶다. 전기전자 공학과를 가기로 한 이상 이제 대학교나 그 이상의 구체적인 계획을 세울 때가 되었었다. 같은 전기전자 공학과라도 서울대도 있고 카이스트도 있고 포항공대도 있다. 하지만 이미 진학 실패를 경험한 나로서는 어떤 대학에 들어간다거나 어디를 붙을 수 있는지 내 위치가 정확히 어딘지 잘 모르겠었다. 물론 제일 가고 싶은 것은 서울대학교이겠지만 그것은 이미 오래전에 막혔고. 나의 미비한 성적으로는 잘해봤자 카이스트에 가는 정도였던 것이다. (그것도 이번 내신을 엄청나게 잘 봤을때의 이야기이다.)
나는 포스텍도, 카이스트도 고려대학교도, 연세대학교 별 상관은 없었다. 어디를 가든 대학교에 가면 심화된 교육을 받을 수 있을테고, 또 나의 꿈을 실현시키는 데에는 내 노력이 필요하지 학교는 별 상관이 없을 테다. 근데 대학은 가야하지 않는가.. 그렇다. 나는 지금 공부를 해야 한다. 한국에서 가장 공부를 많이 한다는, 고3이라는 시절에 나는 무엇을 하고 있는걸까. 난 방황하는 척 하며 사실 놀았던 것과 다르지 않았다. 아무리 공부를 했어도 하고싶은 공부만 골라서 했으며 실제로 노력한 시간은 별로 없었다. 물론 지금까지의 생활에서는 충분히 많이 노력하고 있지만, 고등학교 3학년이라는 시기에 비해서는 (내가 상상한 것에 비해서), 또 내가 원하는 학교를 가서 내가 원하는 일을 할 수 있는 정도의 공부를, 노력을 나는 지금 하고 있지 않는것 같다.
얼마나 합리화를 해도 내가 충분히 노력했다고 생각할 수는 없을 것 같다. 하루종일 다른 생각 안하고 공부에만 매진해도 결국에는 체력이 딸려서 몇분동안은 졸게 되어있고, 아무리 열심히 다짐해도 컴퓨터 인터넷 한번에 모든 것이 무너져 내리기도 했다. 참, 이런 생각을 하니까 옛날 부모님이 하신 말씀이 생각이 난다. 너 생각하는 열심은 열심이 아니라고, 더 열심히 해야 한다고 자주 말씀하시곤 했는데, 어렸을 때에는 이러한 말을 잔소리로만 생각했다. 엄마는 내가 얼마나 노력하는지 모르면서 엄마의 기준을 들이대지 말라고 말이다. 진정으로 열심히 하고 있다면, 그것은 자신에게는 '더 열심히 해야 한다'라는 강박과 '더 열심히 하고 싶다'의 욕망의 형태로 다가와야 한다. 아무리 집중하고 노력해도 불안하고 더 해야하는 것 같아서, 더 열심히 해야 한다고 생각해서, 진심으로 자신을 밀어붙이는 상태가 되어야 열심히 했다고, 열심히 하고 있다고 할 수 있다.. 라고 생각이 들기도 한다.
어쨋든 결론적으로 대입이 가까워 지니 여러 가지 생각이 들면서 긴박해 졌고, 전혀 쓰지도 않던 블로그도 쓰고 있다.. 이런 생각들을 정리하면서 글을 쓰다 보니까 여러 가지 주제에 대해서 깊게 생각하게 되는것 같다.
이제 공부하러 가야지..

View File

@ -1,18 +0,0 @@
+++
date = 2021-06-20T09:23:28Z
description = ""
draft = false
slug = "20210620-siheomeul-iljuil-apdugo"
title = "시험을 일주일 앞두고"
+++
지금까지 내 인생에서 가장 중요한 시험. 그 시험이 일부일 앞으로 다가왔다. 하루종일 시험공부 비슷한걸 하면서 심신이 지쳐 더 이상 집중을 할 수 없을 것 같다. 이제 이 고비만 넘기면 인생에서 가장 날아다닌다는 시기, 대학생이 된다. 앞으로 뭘 하고 살아야 할지, 무엇을 하고 싶은지, 내가 아는 게 많아지고 현실을 깨달으면서 철이 드니 생각이 복잡해지고 앞길이 막막하기만 하다.
몇일 전, 작년에 대학 원서 자기소개서를 다시 읽다 보니 내가 아는 게 많아졌음을 새삼 깨달았다. SW나 해킹이나 반도체에 대해 몇달동안 파고 들어 공부하고, 조사하고 생각하다 보니 전에보다 더 자세하게, 깊게 알게 되었고, 예전과는 살짝 다른 생각을 하게 되었다. 예전에는 마냥 컴퓨터공학이나 해킹이 하고 싶었던 반면 지금은 더 자세하게 무엇이 하고 싶은지에 대한 목록을 작성할 수 있게 되었다. 각종 주제에 대해서도 흥미를 갖게 되었고 특히 예전에는 그냥 넘어갔던 책들을 다시 읽어보고 싶어졌다. 앎에 대한 욕구가 끝없이 증가해 버렸다. 지금 교보문고에 있는 읽고싶은 책들만 합해도 100만원이 넘어가니 말이다.
아마 올해 자기소개서를 쓸 때에는 정말 깔끔하고 자세한 자기소개서를 쓸 수 있지 않을까 싶다. 개발자 이력서 쓰는 법이나 회사 취직에 관한 글을 꽤 읽었으니 기술적으로도 단정한 글이 되지 않을까 싶다. 항상 느끼는 것이, 이건 대학 자소서 준비인지 아니면 그냥 개발자의 자기소개서인지 의문이 든다. 그럴 정도로 기술적인 내용을 많이 집어넣는데, 이게 과학고생의 글인지 아니면 디미고 같은 개발중점 학교 학생의 글인지 햇갈린다.
짧은 회고록이 되었지만 2주 후, 자소서를 쓰고 있을 나를 상상하니 빨리 지나갔으면 좋겠다는 생각밖에 들지 않는다.

View File

@ -1,26 +0,0 @@
+++
date = 2021-09-10T07:30:10Z
description = ""
draft = false
slug = "attitude-for-criticism"
title = "Attitude for criticism"
+++
요즘 우리 학교에 학교를 개혁하겠다는 학생회장이 나타나고 나서부터 친구들이 학교에 대한 여러 가지 불만들을 풀어내기 시작했다. 나도 마찬가지로 학교에 대한 여러 가지 불만사항들이 많았다. 나는 매 학기마다 개정된 학교 교칙이나 규정들을 정독하는 이벤트를 가지는데, 그때마다 항상 '아, 학생들이 당연히 너무 불리하다..' 라던가, '이 조항은 너무 아닌데, 너무 구시대적인 생각이 아닌가?'라는 생각이 들기도 한다.
대학을 가야하는 시기라서 여러 학교들의 생활이나 공부방법, 대학 진학 상황들에 대해서 더욱 관심을 가지게 되었다. 특히 전국급 자사고나 타 지역 과학고의 생활과 공부습관? 등에 대해서 많이 조사(나무위키 정독)해보았는데, 한 가지 우리 학교랑 공통으로 비교되는 것이 있었다. 점점 상승세를 보이거나, 기존부터 진학 상황이 좋았던 학교들은 당연히 공부에 대해 많이 엄격하다. 하지만, 엄격한 만큼 그것에 대한 보상이나 회유에 대한 것도 많았다. 기숙사에서의 자유는 보장해준다던지, 상담실을 운영한다던지, 혹은 실제로 보상을 해 주는 경우도 있고, 진짜 자유시간을 주는 경우도 있다.
우리 학교를 살아가면서 몸이 망가지도 마음이 지쳐가는 것을 확실히 느낄 수 있었다. 100명, 혹은 60명 정도의 소수의 인원이 3년 동안 계속 붙어서 살아간다고 한다면, 아무리 성격이 좋아도 인간관계에 대한 스트레스가 한두 번 쌓이는 것이 아닐 것이다. 또한, 이 열악한 환경 속에서 내신이라는 것에 의해 끝까지 몰아붙여져서, 틈도 없이 공부를 해야 한다는 현실이 피부에 와 닿았다. 우리가 이렇게 말한다면 반대쪽에서는 이렇게 반발할 것이다. 친구관계는 선생님과 상담해보고, 또 스트레스는 격주로 집에 갈 때 해소해도 되고.. 근데 실제로 하는 거 보면 쉴 틈이 많이 있는데, 왜 그렇게 호들갑을 떠느냐고.
학생의 생활에 관해서나 우리나라 입시제도에 의한 학생들의 스트레스에 대하여, 학생들의 편의를 위해서 학생들이 단체로 학교에 청원을 하거나 개선을 요구하면, 학교는 그 요구를 결국에는 들어줄 수 밖에 없다. 학교는 결국 학생이 주체이고, 학교를 믿고 학생을 맡긴 학부모가 있기 때문이다. 교직원들도 결국에는 한 가정의 일원이다. 학생들이 요구한 것에 대해 미성년자라서 잘 진행되지 않는다? 그러면 학부모회도 있고, 교육청도 있다. 아니면, 가장 확실한 방법으로 학생 대표가 교장선생님께 직접 찾아는 방법도 있다. 교장은 모든 교직원이 속해있는 학교의 '장'이니까.
하지만 우리가 하는 이야기는 성립되지 않는다. 특히 내가 하는 이야기도 성립하지 않는다. 우리, 또는 내가 학교에 대해 비판을 하고, 그 개선을 요구하기 위해서 대개는 그 조건이 충족되지 못했기 때문이다. 인도의 소금 행진, 홍콩 시위 등 사회적으로 받아들여지지 않는 소수민족이나 식민지가 최종적으로 변화를 만들어 낸 경우는 수도 없이 존재한다. 이와 같이 '교권'이나 '교칙'이라는 틀 속에 갇혀있는, '학생들'도 이와 같이 변화를 만들어 낼 수 있다. 하지만, 우선 이런 변화를 만들어 내기 위해서 위 운동들의 공통점, 비폭력 운동의 규칙에 대해 생각해 보아야 할 것이다. 도덕책에는 이렇게 적혀있었다. '비폭력 시위를 행하고 나서는 그 행위에 대한 처벌을 마다하지 않아야 합니다.'라고. 이 문구가 도대체 우리랑 무슨 관련이 있는가. 학생들이 시위를 하고 나서 그 책임을 지고 퇴학이라도 하라는 이야기인가? 물론 아니다. 나는 이 문구를 이 문구 그대로 생각하지 않았다. 약간 억지일 수도 있겠으나, 나는 반대의 방면으로 바라보았다. 행위에 대한 책임이 아니라, 행위를 위한 의무에 대해서 생각해 보았다.
학생들이, 또는 군중들이 학교, 또는 정부에 무언가를 요구하려면 어떻게 해야 할까? 먼저 기존 체제의 문제점에 대해서 설명하고, 논리적으로 반박해 나갈 것이다. 학교나 정부는 그에 대한 반박을 할 것이고, 그 이유를 설명할 것이다. 학생이나 군중이 이에 대해 다시 반박하고, 전체와 구성원이 서로 타협해 나가면서 결국 변화를 만들게 될 것이다. 나의 생각은 그 행위 제일 처음부터 시작한다. 이들이 제일 처음으로 기존 체제의 문제점에 대해 설명할 때, 만약 이들이 범죄 조직이거나 불량 학생이라면 어떻겠는가. 당연히 정부는 그 말을 무시할 것이다. 학교나 교직원들도 불량 학생의 일탈이라 생각할 것이다. 심지어는 그 외 군중들이나 그 외 학생들도 그 요구에 대해서 쉽사리 찬성하기에도 무리가 있을 것이다.
결론적으로 하고 싶었던 말은 이것이다. 변화를 요구하기 전에, 한번 제대로 따라보고, 그 문제점을 지적하라고. 물론 이 말은 당연한 말이며 누구든지 할 수 있는 말이다. 하지만, 우리학교 친구들이 무언가를 비판하고 요구할 때 이러한 것들이 잘 지켜지지 않는 것 같다. 우리 학교뿐만 아니라 사회적으로도 이러한 '당연한' 전제조건이 잘 지켜지지 않는 것 같았다. 나도 마찬가지였다.
그래서 나는 친구들에게 말하고 싶다. 마냥 불만만 품거나 일탈만 하지 말고, 한번 계속 지켰다가 그 문제점을 정리해서 사람을 모아, 제대로 한번 개혁을 만들어 보라고.

View File

@ -1,40 +0,0 @@
---
title: 나는 무엇을 해야 하는걸까
date: 2021-09-11T01:20:00.000Z
description: ""
draft: false
slug: 나는-무엇을-해야-하는걸까
---
## 대학 탈락 이후
나는 대학을 한번 떨어진 경험이 있다. 과학고등학교 재학생 중 중상위권이었던 나는 조기진학의 기회를 받았고, KAIST만을 넣은 채로 떨어졌다. 그 때는 붙을 줄 알고 있어서 2학년 2학기 시험을 말아먹었고, 지금도 그 영향을 받아 피를 흘리고 있다.
다행히 그 이후 각성을 한건지 철이 든건지 3학년 1학기는 최상위권 성적을 받아 원래대로 유지는 할 수 있었다. 3-4등 정도 했으니까 망정이지 태도를 안고치고 그대로 했더라면 나는 그대로 멘탈이 없어져버렸을 것이다.
오늘까지 자기소개서를 작성했다. 3번 대학별 지원동기를 쓰면서 계속 내가 하고 싶은 것이 무엇인지 내가 지금까지 무엇을 했는지에 대해 고민을 했다.
내가 항상 하던 생각. 무엇을 공부하던지 간에 항상 들었던 생각. 내가 무엇을 하던 나보다 잘하는 사람은 존재하구나. 특별한 존재가 되기에는 나는 너무나 작구나. 자신감이 점점 떨어지는 듯한 느낌이 들었다. 그래서 나는 나를 특별하게 만드는, 내가 돋보일 수 있도록 해주는 것들을 공부하자고 생각했다.
나는 마구잡이로 공부했다. 필요할 때에만 공부했고, 원하는 것만 공부했다. 그래서 그걸 공부라고 해도 될 지 모르겠다. 일단 내 기억에서는 공부가 아니다. 나는 컴퓨터 공부를 취미정도로만 생각했지 공부라고는 생각하지 않았다. 그래서 항상 뭔가 컴퓨터를 공부하면 죄책감이 들고 공부한 것 처럼 느껴지지 않았다. 물론 재미있게 한 덕분에 지식은 방대해 졌지만..
FPGA에 대해 공부할 때에도 마찬가지였다. 공부였지만 내 마음 속에서는 공부가 아니라 딴짓으로 박혀있었다. 그래서 원하는 것을 알 수 있고 재미있게 할 수 있었지만 자세히 알고 집중해서 했다고는 못한다. FPGA를 공부했지만, 알고는 있지만 공부했다고는 할 수 없어서 결국 안한거나 마찬가지인 것이 되어버렸다. 이미 한번 공부한 내용이지만..
그래서 자소서를 쓸 때 고민이 되었다. 주위 친구들은 다들 수과학 내용을 위주로 썼는데, 나는 온통 다 반도체, 컴퓨터 연구 공부했던 내용, 나한테는 딴짓했던 내용이기 때문이다. 나한테는 논 것을 써내려가는 느낌이었다. 물론 쓰고 나서 객관적으로 바라보면 꽤 볼만한 자소서가 되어있었지만, 처음부터 써내려갈때에는 많이 괴롭고 고민되었다.
아직도 컴퓨터 공부는 뭔지 잘 모르겠다. 하지만 그게 정말 재미있고, 내 적성에 100% 맞다는 것만은 알고 있다. 앞으로는 컴퓨터에 대해서 제대로 공부하고 싶다. 그것은 고등학생 신분으로는 내 맘속에서 딴짓이라고 정의되어 버리므로, 일단은 대학을 가야 하구나 싶다.
야망이라는 말이 있다. 나는 항상 내 꿈을 말할 때 표현의 부족함을 느꼈다. 꿈이라고 하기에는 지극히 개인적이고 꿈보다 훨씬 이루고 싶고, 인생을 움직이는 원동력과도 비슷한 거니까. 물론 꿈을 사람마다 다르게 해석할 수 있다. 그게 꿈 아니야? 라고 할 수도 있다. 하지만 나에게는 꿈보다 훨씬 이루고 싶은 것이 있다. 컴퓨터라는 기계의 역사에 내 이름을 크게 남기는 것. 내가 생각했을 때는 꿈보다는 야망에 훨씬 가까운 내용이었다. 나는 컴퓨터의 패러다임을 바꾸고 싶다. 어쩌면 *Linus Torvalds*처럼, 혹은 벨 연구소와 IBM 연구소의 많은 사람들 처럼. 내 이름을 직접적을 남기지 않아도 내 작품이 두고두고 무언가의 기반이 되었으면 좋겠다. 내 작품을 컴퓨터 역사에 깊이 뿌리박히게 하는 것. 그게 내 야망이자 꿈인것 같다.
내 야망을 이루기 위해서는 컴퓨터를 잘 알아야 할테지.. 컴퓨터라는 기계를 역사부터 원리까지 꿰뚫고 있어야 하겠지. 그것을 위한 여정은 매우 길고 또 험난하겠지. 하지만 운이 좋았다. 나는 그 과정이 정말로 재밌다. 놀지 말고 쉬지 말라고 해도 할 수 있다. 그게 내가 그것을 딴짓이라고 생각한 원인이니까.
그게 정말 강한 원동력이었던 것 같다. 컴퓨터 공부를 놀이라고 생각했던 것. 하지만 앞으로는 “공부”를 해야 할 것 같다. 슬금슬금 한계가 다가오고 있기도 했고, 무엇보다 그것만 하면서 살 수는 없으니까. 지금으로써 내가 할 수 있는 것은 이 마음을 잊지 않는 것. 꾸준히 생각하는 것. 기반 지식을 열심히 쌓는 것.
그리고 대학교 진학..

View File

@ -1,30 +0,0 @@
+++
date = 2021-10-08T05:19:00Z
description = ""
draft = false
slug = "beulrogeu-geulsseugineun-neomu-himdeuleo"
title = "블로그 글쓰기는 너무 힘들어.."
+++
야심차게 티스토리 블로그를 만들어 몇몇 글을 쓰고 나서, 한참동안이나 글을 쓰지 않았다. 하지만 나중에 돌아보면 쓰일 곳이 있지 않을까 하여 내 소장을 위해 Ghost + Vultr로 넘어왔고, 돈도 내야 하니까 글을 조금씩이라도 쓰지 않을까 생각했지만.... 결국 글을 쓰지도 않은 채 달마다 돈만 나가고 있다...
블로그 글을 왜 쓰지 않았지..? 고등학교 생활을 하느라 힘들고 바빠서 (노느라) 글을 쓰지 않았을 수도 있고, 마땅하게 글을 쓸만한 소재도 없고, 마땅하게 글을 쓸 기기 또한 없다. 나에게 있는거라고는 집에 있는 아버지 노트북과 내 아이폰 밖에 없으니까..
그래도 일기같은 형식으로 글을 써 내려갔다면 좋을 것 같은데 그 역할을 트위터가 하고 있는 바람에 더욱 쓰지 않게 되었다. 물론 길게길게 회고록을 쓰거나 감상을 쓰거나 후회를 하기 위해서라면 블로그만큼 좋은것도 없기는 한데, 나는 타자가 느리고, 글을 너무 못쓴다. 이과생특
하지만 애초에 내가 코딩을 하지 않은것도 몇달째 되어가고 있고, 내가 아이패드나 노트북을 구매하지 않는 이상 글을 절대 꾸준히 쓸 수 없을 것 같다. 물론 아침에 일어나면 남는 자투리 시간을 이용하여 글을 틈틈히 쓸수도 있지만, 역시 그 역할을 트위터가 하고 있다.
글쓰기가 너무 힘들다. 다른 블로그들을 보면 글도 길고 길지만 쉽게 읽히며 뭘 말하고 싶은지 탁탁 이해가 쉽다. 하지만 내가 글을 쓰자니 길제 쓰기도 힘들고 시간도 걸리고 머리도 아프고 할 이야기도 없다.
글을 쓰고 싶다. 멋지게 글을 쓰고 싶다. 다른 사람에게 도움이 되는 글을 쓰고 싶다. 내 글을 가지고 사람들이 기꺼이 대가를 지불할 만큼의 가치를 가지는 글을 쓰고 싶다. (그 대가란, 그 사람들의 시간..)
열심히 해봐야 겠다. 앞으로 대학 입시까지 2달 적게 남기도 했고, 내 몸이 망가져가는 걸 많이 실감했기에 건강하고 규칙적인 생활습관을 가지려 하고 있고, 그 첫걸음이 일찍 자서 일찍 일어나고, 남는 시간에 글쓰기이다.
화이팅! 할 수 있다..!

View File

@ -1,21 +0,0 @@
+++
date = 2021-10-23T08:15:14Z
description = ""
draft = false
slug = "datacenter"
title = "데이터센터"
+++
구글같은 검색엔진이 늘어나고, 다양한 기업들과 서비스들이 사용자들의 개인정보와 데이터를 마구 수집한다. 이로 인해 생겨나는 기하급수적인 양의 데이터들을 보관할 스토리지와 그것들을 사용할 수 있는 데이터로 가공하기 위해 필요한 수없이 큰 컴퓨팅 파워를, 큰 기업들이 대형으로 지어놓은 데이터 센터가 담당하고 있다. 게다가 이제는 작은 기업이나 서비스들은 AWS나 GCP, Oracle과 같은 서비스를 통해 Cloud로 Computing하기까지 하니, 아마존이나 구글의 데이터 센터는 얼마나 커다랗고, 커다래야 하는지 알 수 있다.
아마존과 구글의 데이터센터뿐 아니라 네이버, MS, 오라클, 및 작은 데이터센터들이 지어질때 중요하게 작용하는 것이 있다. 발열과 전력문제이다. 어디보다도 전력을 사용하여 열이 덥혀질 시설이 겨울만큼 춥다는 것으로 얼마나 냉각시스템이 신경쓰는지 알 수 있다. 심지어 우리집에 있는 노트북만 사용해도 80도 가까이 올라가고, 방이 더워지는데 수백, 수천, 수만대의 컴퓨터가 설치되어있는 데이터센터는 오죽할까. 연료를 태워 그 열기로 전기를 만들고 그 전기를 다시 열로 바꾸고, 그 열을 내보내기 위해 또 다시 전기를 쓰다니.
나도 집에 작은 서버 하나를 운영하고 있다. 매달 받는 전기세가 가히 신비롭다. 그리고 방도 매우 덥다. 한대로 이 정도인데, 데이터센터는 엄청난 전기를 먹고 있다. 게다가 요즘에는 비트코인 열풍이 불어서 채굴이 한창 떠오르고 있다. 어떻게 보면 채굴장도 하나의 데이터 센터라고 볼 수 있지 않은가. Visa나 마스터카드와 같은 카드사들의 데이터센터가 각 나라로 각 개인으로 분산되어 분포하는 것과 비슷하게 볼 수 있으니 말이다. 이러한 와중에 전력이 부족해지고 있다는 뉴스가 자주 떠오른다.
그 많은 데이터센터의 대부분은 아마 인텔 제온 프로세서, 하드 디스크와 엔비디아의 그래픽카드를 구축해 놓았을 것이다. MS의 Bing 데이터 센터는 FPGA를 이용해 조금 더 성능을 높였다는데, ASIC이나 FPGA를 이용한 데이터센터도 많을 것 같다. 다들 전기를 많이 먹는 장비들이다. 그렇다면 전성비를 고려하는 건 어떨까. 가령 전성비 최강인 ARM이나 RISC를 사용한다던가, Bing처럼 FPGA를 이용하던가.
사실 전성비가 좋은만큼 서버 프로세서만큼의 수율이 나오지 않을 것이며 그 정도의 성능을 낼 정도의 대형 프로세서는 나오기 힘들 것 같다. 아직까지 모바일로 사용하는 이유기도 하고. 하지만 괴물급 기업들이 ARM 개발을 위해 한창 노력중이니. 엔비디아도 ARM코어로 데이터센터 개발중이라 하고, 그 애플이 ARM으로 노력중이니 곧 데스크탑급 되는 시스템이 나오고, 좀 있으면 서버급도 나올 수 있지 않을까 기대하고 있다. ARM 는 극강의 전성비를 고려한 설계인 만큼 물량으로 밀어붙여도 x86에 전력으로는 이길지 않을까 싶다. 서버에서는 코어수도 중요하게 작용하니까 다중코어로는 훨씬 유리하지 않을까 싶다.
화이팅! ARM으로 개발하시는 기업들 모두!

View File

@ -1,22 +0,0 @@
+++
date = 2021-10-23T08:31:52Z
description = ""
draft = false
slug = "gaeinjeongbo-privacy"
title = "개인정보.. Privacy.."
+++
나는 구글이 싫었다.
구글에 반대하며 지메일도 거의 쓰지 않고 있고, 다른 구글 플랫폼을 벗어나 다른 플랫폼으로 옮기고 있다. 하지만, 아이폰으로 옮기고 나서 몇주간을 생각해보니 내 분노의 대상은 구글이 아니라 애플이여야 한다는 것을 알게 되었다. 카카오, 구글에 가지고 있던 분노의 이유가 애플이라는 기업 자체를 강타한다. 물론 나도 알고 있었고, 구글 못지 않게 애플을 싫어하고 있었다. 새롭게 휴대폰을바꿀 때에도 OS만 구글이고 제조사는 다양한 (삼성이..겟지만..) 안드로이드 휴대폰과 휴대폰 하드웨어, 악세사리, OS, 결제, 게다가 웹엔진까지 제한하고 독점해버린 애플과는 비교가 된지 않는다고 생각했고, 이번에 플립이 잘 나와서 그것으로 바꾸려 했다. 물론 에어팟 수리를 하러 갔다가 아이폰에 홀리듯이 들어가버렸다. 한동안 애플의 통합 생태계의 편리함에 매료되어 내가 빅테크 기업에 어떤 이미지를 가지고 있으며 어떤 불만과 어떤 사상을 가지고 있는지 잊었었다.
하지만 이 문제는 구글이나 애플만의 문제가 아닐 것이다. 따라서 애플과 구글만을 싫어한다고 해서 해결될 문제가 아니다. 이건 모든 빅데이터 산업과 모든 데이터 기업들이 가지고 있는 문제이고, 현대 사회에서 피할 수 없는 문제인 것 같다. 개인에 맞추기 위해, 광고주와 개인을 동시에 만족시키기 위해선 개인정보의 수집이 불가피하다. 최소한의 개인정보 수집이라 해고 결국 수집해야 하는 개인정보는 한둘이 아니다. 따라서 우리는 우리의 개인정보에 대해 어떤 것을 기업에게 주고 어떤 것을 주지 않을지 선택할 권리가 있어야 하고, 선택에 신경써야 한다. 특정 앱을 잘못 설치했다가 지금 모습이 데이터센터에 축적되고 있을 수도 있으니까. 이러한 점에서 개인의 Privacy 선택권을 최대한으로 존중하는 애플은 본받을 만 하다. 애플이 선구적으로 도입한 Ask app not to track이나 앱별 개인정보 관리, 카메라 사용과 마이크 사용 표시는 안드로이드에서도 도입하려 하고 있으니까 이건 정말 잘했다고 생각한다. 애플은 광고 받는 장사가 아니니까 할 수 있는 거겠지만 말이다.
하지만 구글은 태생이 검색엔진이고 광고 받는게 중요하고 가장 큰 수입원인 기업인 만큼 개인정보 수집에 가장 신경써야 하면서도 가장 필요한 기업이다. 앞으로 어떻게 할지 궁금하다.
난 아이폰을 사용한다. 앱 트래킹은 다 차단했고, 필요한 것 외에는 카메라를 절대 허용하지 않는다. IP별 개인화도 좋아하지 않아 Private Relay도 잘 쓰고 있다. 하지만 매일매일 구글을 사용하고, 어쩔 수 없이 트래킹이 발생할 수 밖에 없다. 따라서 우리는 개인정보를 흘리고 다니지 않고 꽉 매고 다니는게 중요하다. 계정 보안과 로그아웃은 당연히 중요하고, 무분별하게 계정 연동을 하거나 가입하는 것도, 공개된 웹 상에 자신의 전화번호나 주소, 이메일 주소들을 과도하게 공개하지 않는것도 중요하다.
HTTPS 연결 확인도 중요하고, WiFi가 믿을 만 한지, 이 네트워크가 믿을 만 한건지도 중요하다. 신경써야 할 게 많지만 철저히 익명으로, 해킹당하지 않을 예방법을 생각하면 쉽다. 개인정보 보호와 해킹 방지는 방법이 비슷하다. 주의해야 할 것은 믿을 만한 곳에 흘리는 개인정보이다. 구글이나, 네이버. 믿을 만 하지만 가장 필요한 회사이다. 가장 이용해먹는 회사이고. 이 점만 주의한다면 일반적으로 자신의 개인정보를 관리한다고 할 수 있지 않을까..?

View File

@ -1,18 +0,0 @@
+++
date = 2021-10-23T08:51:44Z
description = ""
draft = false
slug = "haggyoeseo-haessdeon-peurojegteudeul"
title = "학교에서 했던 프로젝트들.."
+++
1. 귀가시간 수집 프로그램
2. 기상곡 수집 프로그램
3. 컴퓨터실 사용현황
4. 학교 내부 정보공유망
5. 문서파일 자동저장 및 복구 시스템
6. 학교 저지 사이트 API 정리 및 제출시스템 프록시
7. 선생님들이 부탁하셨던 수많은 프로그램들

View File

@ -1,17 +0,0 @@
---
title: 나는 무엇을 하고 있는걸까
date: 2021-10-23T08:52:15.000Z
description: ""
draft: false
slug: 나는-무엇을-하고-있는걸까
---
프로그래밍에 매력을 느껴 프로그래밍에 입덕하게 된 건 2학년때쯤.. 이후 그 재미를 느끼고 많은 것들을 시도해보곤 했다. HTML과 CSS를 배워 가장 기본적인 웹사이트를 만들고, 이를 더 화려하게 꾸미기 위해 JS를 공부했다. 이를 배포하기 위해 서버 구축에 대해 공부했고, PHP나 MySQL을 이용해 기능성을 부여하면서 DB와 SQL에 대해 공부했다. 이후 고전적인 서버를 넘어 SSR이나 CSR에 대해 알아보려 NodeJS를 공부했다. 학교 입학시 과제였던 C로 하는 PS를 하면서 C나 C++에 관심을 가졌고, 왜 C로 코딩하는데 C++를 써야하는지 의문을 가지고 C++을 공부했다. C++이 완전히 다르다는 것에 충격을 먹었고, 이후 비슷한 객체지향에 대해 알아보며 Python에 입문했다. C에 비해 너무 쉬운 코딩과 너무 간단한 개발에 충격을 먹었고, PS하는데만 쓸 수 있던 C와는 다르게 다양한 분야에 접목하기 너무나도 쉬운 Python은 나를 개발 세계에 빠뜨렸다.
Python의 다양한 모듈을 사용하며 Requests와 같은 웹을 다루는 모듈을 쓰며 대체 웹은 어떤 구조일까 의문이 들어 네트워킹이나 HTTP, HTTPS에 대해 공부했고, 이런 것들을 응용해 나가며 실질적인 코딩에 가깝게 가면서도 주어진 기능 외로 작동하게 만드는 것에 맛을 들려 해킹에 대해 점점 흥미를 가지기 시작했다. Python은 빠르게 무언가 기능하는 하나의 완성품을 만들기 너무 적당했고, 실행했을 때 원하는 대로 작동했을 때의 쾌감에 빠져버렸다. 이후 생각나는 아이디어란 아이디어는 다 파이썬으로 구현했고, 나 자신의 아이디어 뿐 아니라 주변의 아이디어를 신경쓰게 되었고, 그게 학교 서비스 구현 프로젝트로 이어졌다. 파이썬으로 간단하게 했던 것들을 친구들이 노가다로 하는 모습을 보고 아 저거 파이썬으로 할 수 있겠는데라고 생각했고, 그렇게 만들어본게 수십개는 될 것이다. 한편으로는 내 호기심에 딱 알맞게 점점 깊은 곳으로 내려가고 있었다. 원리의 원리를 계속 파고들며 컴퓨터 구조까지 내려갔고, 내려가면서 다른 땅굴을 파는 게 너무 재미있었다. 해킹이.
결국 반도체까지 내려가서 더 이상 이해할 수 없을 때까지 내려갔고, 해킹은 더 이상 내가 알던 해킹이라는 학문이 아니게 다 통합되었다. 해킹을 할 수 있던 원인중 대부분 그 아랫단계에서 기초된 버그였고, 아래로 내려갈수록 하나로 합쳐졌다. 그래서 내가 읽은 책을 살펴보면 다양한 분야가 많이 있지만 다 상하관계로 얽혀있음을 알 수 있다. 네트워크에서 기초해서 TCP/IP로, 거기서 물리계층인 데이터 통신까지, 그리고 신호처리와 신호를 처리하는 소자까지 이어져 있다.
관심사에 따라 공부해서 재미있게 공부했고, 관심사에 따라 공부하니 꼬리물기 공부가 가능했다. 서로 얽혀서 각자의 이해를 도왔고, 서로의 흥미를 돋구었다. 그냥 '컴퓨터'라는 분야 하나가 너무 재미있었고, 나에게는 천직이라고 생각됐다. 전체가 재미있으니 가장 기초인 '반도체'나 '컴퓨터 구조'가 자연스럽게 내 진로이자, 내 주요 관심사가 되었다.

View File

@ -1,20 +0,0 @@
+++
date = 2021-10-23T08:52:59Z
description = ""
draft = false
slug = "insaeng-dubeonjjae-silpae"
title = "인생 두번째 실패. 두번째 대학탈락."
+++
내 첫번째 실패는 조기진학 실패이다. 대학을 떨어졌다.
내 두번째 실패도 대학 탈락이다. 이번엔 아직 9번 더 있지만, 작년에 떨어지고 느꼈던 그 참담함과 그 마음가짐을 다시 한번 느낄 수 있게 한 그 세글자 '불합격'. 역시 이번에도 참담함을 느꼈고, 여전히 안타까움과 공허함을 느낄 수 있었다.
내심 기대했었다. 붙기를 간절히 기도했다. 하지만 세상은 냉정했다.
바라던게 이제는 이룰 수 없다고 생각하니 공허했다. 하지만 그것도 잠깐이었다. 멘탈이 강하고 회복력도 강한게 내 장점이라 공허함으로 쳐져있는 것도 잠깐이었고, 앞으로를 다시 생각하고 마음가짐을 고치는 계기가 되었다.
할 수 있는 모든 것을 해보자. 후회없이.

View File

@ -1,22 +0,0 @@
+++
date = 2021-10-30T07:17:47Z
description = ""
draft = false
slug = "jeonja-jeeoyi-segyein-mirae-geu-boanyi-wihyeob"
title = "전자 제어의 세계인 미래, 그 보안의 위협"
+++
미래 사회에는 전기자동차와 자율주행 자동차가 성하게 유행할 것이다. 사람 운전자의 역할이 거의 축소되고, AI나 전자적으로 제어될 것인데, 지금도 많이 일어나고 있는 논란은 바로 보안이다. 만약 자율주행 자동차가 해킹을 당하게 된다면 어떨까? 해커는 자동차에 타고 있는 사람의 생사여탈권을 가지게 될 정도로 심각한 문제가 있는 것이다. 그러므로, 이러한 생활환경에 직접적인 영향을 주는 전자기기의 보안은 매우 중요한 것으로 판단된다. 미래에 우리의 생활을 가장 많은 부분 담당할 사물인터넷도 마찬가지이다. 우리의 생활과 강하게 연관되어 있고, 그러므로 보안이 가장 주요한 요인이 된다. 전자적으로 제어되는 보일러가 해킹당하면 어떻게 될까? 해커는 보일러를 과하게 제어함으로써 실 사용자에게 영향을 미칠 수 있다. 더 심각하게는 가스밸브나 의료 기기가 누군가의 악의대로 조종된다면 사용자를 죽음의 위기에 처하게까지 할 수 있다. 에어컨이나 히터, 그리고 화장실, 환풍기, 및 여러 가구들이 연결되어 있으며, 우리의 삶에 큰 영향을 미칠 수 있다. 실제로 IoT기기들에 대해 우리의 사생활의 침해도 문제가 된다. 미래 사회에서는 모든 기기가 연결되어 있을 것이며, 자동차나 버스, 그리고 비행기까지도 무선으로 연결되어 있을 것이다. 그러면 여기서 가장 문제가 되는 것이 무선통신의 보안이다. 무선통신은 유선통신과는 다르게 모든 사람들이 시호를 감청할 수 있기에 그 보안이 매우 중요하고 심각하게 느껴진다. 그렇다면 이러한 사항들에 대해 지금은 어떻게 보안이 이루어졌으며, 또한 앞으로는 어떻게 발전되어야 할까?
첫번째로는 AI상의 보안이다. 지금 보안의 상황으로는 공격자들이 시스템에 대해 예측이 어려운 신종 변종 공격을 많이 진행하고 있다. 이것의 바탕이 되는 기술은 바로 자동화이다. 보안이라는 것 자체가 공격 시 대응 및 방지가 주요한 특징이기 때문에 자동화나 변종 공격에 대해서는 취약할 수 밖에 없다. 완벽한 시스템이란 없는 것이다. 이런 공격에 대처하는 방안으로는 인공지능을 사용하는 방법이 있다. 실제 대규모로 전송되는 공격의 경우 인공지능으로 해킹에 대한 지도 및 비지도 학습을 통해 해킹 패턴을 자동적으로 분석해 막아줄 수 있기 때문이다. 또한 악성코드 분석에 인공지능을 접목시키면, 실제 사람이 분석하는 것보다 더욱 빠르게 분석할 수 있다. 하지만, 인공지능 보안에도 문제가 있다. 특히 인공지능은 실제 보안에 의지하는 것이 아니기 때문에 과하게 보안하거나 또는 이미 일어난 데이터들의 경향성 때문에 제대로 된 예측을 못하는 것이다. 인공지능도 선입견이 있는 것이다. 이와 관련지어서 인공지능에 의한 해킹을 고려해 보아야 한다. 인공지능 자체가 해킹을 하는 것이다. 해킹이란 것 자체가 반복성이 중요하고 난수성이 중요하기 때문에 이와같은 작업에 인공지능만큼 딱 맞는 것은 없을 것이다. 이와같은 공격에는 인공지능에 의한 대처밖에 답이 없는 것이다.
인공지능에 의한 해킹과 보안에 대해 알아보았으니 인공지능 시스템에 대한 보안을 어떨까? 이것이 이에서 언급했던 자율주행 자동차에 관한 보안이 될 수 있다. 기본적으로 업다운 인공지능이 아닌 다운업 인공지능인 현재의 인공지능으로서는 주어진 데이터가 가장 기초적인 원리로 작용한다. 데이터를 기반으로 학습하고 행동하기 때문에 데이터의 정확성이나 신뢰성이 중요하게 작용한다. 이때 문제가 될 수 있는 것이 데이터의 오염이다. 데이터를 인위적으로 조작하여 인공지능의 행동을 조작하는 방법이다. 인공지능이 해킹당하기 쉬운 (어떤 방면에서) 이유가 바로 이것이다. 데이터가 악위적인 방향으로 조작된다면 인공지능의 행동의 패턴을 유추할 수 있고, 또한 자율적으로 조작할 수도 있다. 따라서, 인공지능에 대해서는 데이터의 유입의 신빙성을 중요시하게 고려해야 할 것이며, 데이터의 무결성이나정확성에 검증을 위한 인공지능을 도입하여 방어를 한다고 한다.
두번째로는 사물인터넷에 대한 보안이다. 사물인터넷은 실질적으로 우리의 생활과 밀접하게 관련이 있고, 가장 많은 전자기기가 이 기술에 접목될 것이기 때문에 가장 중요한 보안이라고 생각할 수도 있다. IoT, Internet of Things는 기본적으로 인터넷에 대한 기술이기 때문에 가장 보안에 취약해 질 수밖에 없다. 또한 IoT기기는 저전력과 저성능이 가장 중요하고 소형화가 중요하기 때문에 특별한 보안 솔루션을 도입하기가 어렵다. 집에 커다란 보안서버를 하나씩 구비해 놓지 않는 이상. 따라서 IoT의 경우는 해킹에 가장 취약하면서 해킹에 있어서 가장 위험한 존재이다. 그 누가 자신의 집에서의 모습을 전 세계로 생중계되기를 원하겠는가.
따라서 IoT에 대한 보안 솔루션은 굉장히 후발적일 수 밖에 없다. 따라서 소프트 웨어적으로 강력한 솔루션을 집어넣거나 취약점을 분석하게 후에 조치하는 방법밖에 없다. 전 세계적으로 IoT기기에 대한 보안 규제를 강화하거나 보안 기준을 제시하고 있고, 이를 처리하거나 대처하는 인력이나 전략을 제대로 정비하기만 한다면 현재 가능한 보안 솔루션 중 가장 상위의 솔루션이지 않을까 싶다.
이와 같이 우리의 삶과 인터넷, 전자기기가 밀접하게 연결될 수록 그 보안의 영향력은 비약적으로 커진다. 보안 업계나 기업들은 이 점을 유의하여 서비스를 제공해야 할 것이다.

View File

@ -1,28 +0,0 @@
+++
date = 2021-10-30T07:09:53Z
description = ""
draft = false
slug = "yangjadeulyi-teuraenjiseuteo"
title = "양자들의 트랜지스터와 핫 캐리어 효과"
+++
트랜지스터가 점점 소형화가 되어가면서 전자가 예상한대로 움직이지 않는 작은 단위까지 내려갔다. 나노단위까지 생산공정이 작아지면서 양자역학적인 효과가 나타나기 시작했고, 이는 트랜지스터의 스위칭 작용을 방해하는 효과를 불어일으킨다. 이를 해결하기 위해서 양자 세계에서 사용할 수 있는 양자 트랜지스터와 단일 원자 트랜지스터가 개발되었다.
1) 단일원자 트랜지스터
단일원자 트랜지스터는 양자 터널링 효과를 적극적으로 이용하여 스위칭 작용을 한다. 터널링 효과를 제어하기 위해서 직접 제어가 아닌 양자 얽힘 효과를 이용한다. 큐비트를 이용하여, 전자 주개로써의 원자를 제어하기 위해 원자 개개별의 스핀 상태를 이용한다. 이를 통해 큐비트의 역할을 할 수 있는 단일한 원자를 생성해 내고, 이 단일 원자들이 스위칭 작용을 하는 주체가 된다. 단일 원자 트랜지스터는 실온에서 작동하고, 적은 숫자의 원자만을 이용하기 때문에 스위칭에 필요한 전력의 양도 매우 적다.
단일원자 트랜지스터는 실리콘 표면의 인 원자와 반응시키는 방법이 이용된다. 원자가 정해진 위치에 고정되어 있고 각각의 원자가 전자 주개 또는 스위쳐로 작용하여 전자 하나하나의 흐름을 제어하게 된다.
2) 양자 트랜지스터
양자 트랜지스터는 기존의 MOS 트랜지스터와 비슷하게 행동하지만, 중간 p,N형 반도체가 하던 채널 형성과 전자 이동 제어를 나노 양자점이 전담하게 된다.
3) 핫 캐리어 효과
반도체 공정이 작아지면서 트랜지스터 채널이 소형화되었고, 이에 따라 채널의 길이가 줄어들게 되었다. 채널의 길이가 줄어들면서 전자의 튐 현상과 전자 제어가 힘들어진다는 한계점이 있다. 그 중 핫 캐리어 효과는 Drain전압은 일정한데 비해 짧아진 거리에 의해 전기장이 매우 커지는 효과가 일어나고, 평소보다 훨씬 가속된 전자들의 운동에너지에 의해 원래라면 넘어갈 수 없던 Oxide 전계를 넘어서게 되면서 규소 원자와 충돌하여 갇히게 된다. 이를 핫 캐리어 효과, 빠른 전자에 의한 주입 현상이라고 한다. 이에 의해 예측한 것과는 더 적은 전하가 이동하게 되고, 전류가 불안정하고 수율이 떨어지게 된다.
핫 캐리어 효과를 최소한으로 하고 이를 방지하기 위해서는 Oxide 게이트와 접해있는 부분의 실리콘을 특수하게 덜 도핑하는 방법이 있다. 전류 손실의 손해를 보지만 핫 캐리어 효과에 의한 손실보다는 훨씬 적다. 원래는 전자의 운동을 최소한으로 방해하기 위해 저항이 낮도록 도핑하는데, Oxide에 접해있는 부분의 저항을 특별히 더 높게 도핑하여 핫 캐리어의 운동을 방해하는 효과를 준다.

View File

@ -1,42 +0,0 @@
+++
date = 2021-12-01T08:09:52Z
description = ""
draft = false
slug = "daehag-ibsiga-handangye-namassda"
title = "대학 입시가 한단계만 남았다."
+++
대학 입시가 한단계만을 앞두고 있다.
합격자 발표와 등록.
뭐 공부하고 대비해야하는 시험은 다 끝났으니 마음껏 놀고 있지만 마음의 한편에는 아직 불안함이 많이 존재하고 있다. 또 공부와 시험대비라는 정해져 있는 계획만을 12년 동안 따르던 나에게서 갑자기 계획이나 강제성이 사라졌다. 이제부터는 내가 무엇을 할 것인지를 나 혼자서 알아서 결정해야 하고 또한 그 책임도 내가 져야할 것이다. 예를 들어 늦게자도 누군가 깨워주지 않는다는 것에서 그것을 처음으로 느꼈다.
지금 하고싶은 것도 없다. 무언가 해야하는 것도 딱히 없다. 그래서 그게 더 스트레스다. 운동을 해야할 걸 알고 운동을 하고싶지만 무엇부터 시작해야 할지 막막하다. 영어공부를 해야하는 것을 알지만 막상 하려니 하기 싫다. 운전면허는 학원을 다니므로 예외. 남겨놓은 책도 읽어야 하지만 눈에 들어오지 않는다. 모두 핑곗거리 뿐이지만 나에게는 하지 않을 충분한 계기가 된다.
마음가짐을 고쳐잡아야 한다. 미련하고 기계이기만 했던 지난 학생 시절을 벗어나 자율적으로 움직이는 어른, 하나의 사람이 되어야 한다. 이러고만 있을 수는 없다. 그래서 다짐을 했다. 내일부터는 사람이 되어보자.
그 다짐은 물론 다음날 아침에 깨졌다. 늦게 깨어난 것은 물론 일어나자 마자 의욕을 잃었다. 아직 나는 사람이 될 마음가짐이 안되었구나. 옛날만큼이나 아니 오히려 더다짐에 대한 마음가짐과 독기가 풀렸구나..
어쨋든 무거운 얘기는 여기까지만 하고 이제 앞으로의 계획을 정하든가 해야겠다.
일단 첫번째로 운전면허. 이번주 주말부터 시작해 매일 1시에 수업이 있다고 들었다. 1차 필기시험을 통과할 수 있도록 집중해서 듣자.
두번째로 운동. 입시하던 도중에 항상 입시 끝나면 다이어트 하고 헬스를 해서 몸을 건강하게 만들어보자! 마인드였는데 지금은 헬스는 개뿔 먹고 자고 눕기만 하고 있다. 하지만 오늘 뻘짓으로 2시간이나 걸어다녔으니 운동의 초석을 다진것이라 보고 내일부터 or 담주부터 헬스를 끊어야 겠다. PT를 끊던가 하면 식단도 조절되고 그걸 따르는 건 할 수 있으니까 해보자구!
세번째 영어. TOEFL. 토익말고 토플이 나에게는 익숙하다. 토플 주니어를 거의 매년 치다시피 했고 중딩때 IBT를 여러번 쳤으니 토플이 제일 익숙할 것이다. 일단 나는 기본 영어 감은 충분하고 넘치다고 자부하고 있..으니(???) 문법이나 문제푸는 요령같은 것들을 인강을 듣고 문제집을 풀고 해서 꾸준히 영어공부를 해야겠다. 뭐 많이는 못하더라고 꾸준히는 할 수 있잖아? 할 것도 없는데.. 일단 교재부터 알아보고 (뭐 해커스가 되겠지만) 인강도 알아보고 해서 책을 빨리 구입하던가 해야겠다.
네번째. 자산. 돈관리. 원래 내 통장은 어머니가 관리하셨다. 금액이 *만 가까이 되니 내가 건들기 힘든 금액이기도 했고, 세금때문에 마음대로 건들면 안된다고 했다. 하지만 만 17세가 되면서 내가 내 금융을 관리할 수 있게 되었고 그때 카뱅이나 씨티같은 계좌를 몰래 만들어 놨다. (나중에 씨티는 해지하느라 애를 엄청 먹었지만) 뭐 지금은 다 알지만.. 내가 쓰는 계좌는 카뱅, 토뱅 두개이다. 어머니가 만들어 놓으신 계좌는 농협에 여러개인데 나도 잘 모른다. 근데 내가 그 고액 저축통장을 찔끔찔끔 빼서 써서 약간 일이 커지게 될 것 같이 되어버리긴 했다. 그리고 문제는 내 경제관념이다. 어디다 빼먹고 왔다. 고3 주제에 한달 사용액이 50만원 가까이 된다. 이건 진짜 고쳐야 한다고 생각한다. 통장정리 하고 어머니께 잔소리 좀 들으며 자산관리에 대해서알아가야 겠다. 국가장학금도 있고 해서..
다섯째. 뭐 독서려나. 사놓고 안읽은 책이 90%이다.권수로 치면 대강 40권이고 금액으로 치면 대충 100만원 정도이네..? 빨리 읽어야 한다. 대학가기 전에 30권 이상 읽는게 목표이다. 하지만 어림도 없지. 기술서는 빼고 읽으면 그정도는 할 수 있을 것 같다. 독서는 마음의 양식! 나는 독서를 좋아한다.
여섯째 자기계발! 프로그래밍 공부, 컴퓨터 공부!? 파이썬은 많이 했고 C++도 기초는공부했다. 이제 두꺼운 C++책과 TAoCP, EMC++, 하드웨어 보안, 전기전자 등등 이런 책들 가지고 공부해야 겠다! 재밌겠구만!! 이런거 좋아함.. 요즘에는 코테도 많이 보는 듯 하니 알고리즘 공부도 해놓고 내가 좋아하는 보안 공부도 하고..
일곱째 인간관계 청산. 이게 좀 많이 필요할 것 같다. 일단 고등학교 3년을 100명이랑 보내서 안 친할래야 안 친할 수 없다. 그 중 도움이 될것 같은 친구가 있고 아닌 친구도 있지만 나는 현생에 충실하지 않았으면서도 충실했어서 대강 다들하고 이어져 있다. 이 상태 유지만 하면 좋을 것 같다. 내 주요 인간관계는 모 SNS의 분들과 몇몇 친구들이니..
이게 이걸 바탕으로 계획을 짜보자! 애들 공부하는 VLOG도 보면서 '나도 그랬었지' 와 '그랬었으니 지금도 가능'을 동시에 느낄 수 있다.
화이팅! 이제 끝이고, 이제 진정으로 새로운 시작이다!!!!!

View File

@ -1,40 +0,0 @@
+++
date = 2021-12-21T16:23:55Z
description = ""
draft = false
slug = "godeunghaggyo-dolabogi"
title = "고등학교 돌아보기"
+++
2021년을 돌아보며.
2021.12.22
벌써 12월 22일이다. 12월달에는 열심히 살아야지 하던게 어제같은데 벌써 새해가 다가온다. 나는 내년 성인이 되지만, 아직 실감이 안난다. 술담배를 할 수 있는 나이라기 보다는 내 행동에 내가 책임져야 하는 때가 되었다는 게 더 실감이 난다. 대학을 고민하며 내가 앞으로 뭘 하면서 먹고 살아야할지 꽤 오랫동안 고심했는데, 그 결과로 조금 성장한 것 같아 이제와서는 약간 기쁘기도 하고 무섭기도 하면서 슬픈 약간 오묘한 기분이다. 어찌되었든 이제 성인이 되니까 조금 변해야겠다고 다짐하고 있다.
2021년을 돌아보면 2020년을 돌아봐야 하고, 그러면 당연히 2019년이 생각난다. 여튼 고등학교 3년 생활이었기에 항상 쌍으로 돌아다녀야지. 고등학교 생활을 돌아본다.
**2019년, 고등학교 입학.**
나는 초등학교 때부터 영재교육원을 다니면서 내 미래가 결정되다 싶이 했다. 이렇게 계속 하다보면 동네 중학교에 진학하여, 과학고를 준비하고, 과학고에 진학하여 과기원을 가는게 정해져있었던것 같다. 그때는 지금 이렇게 될지는 몰랐겠지만, 그 길을 모범적으로 걸어서 지금의 내가 되었다.
2018년 연말, 나는 과학고 입시를 봤다. 자기소개서를 쓰면서 학원에서 선생님과 친구들과 새벽 3시까지 남아 첨삭을 했던 기억이 있다. 불 꺼진 건물에서 술래잡기를 하면서 즐거웠던 기억이 있는데, 지금 돌아보면 즐거워서는 안되었것 같지만 중학생이니 그럴 수 있다고 생각한다. 그때쯤에는 학원에 12시까지 남아서 서류준비를 하고는 했는데, 이때 항상 데리러 와주셨던 아버지께 정말 감사하다고 이제와서 생각한다. 초등학교 6학년때부터 올림피아드를 준비하면서 매 주말마다 학원에 갔고, 내가 숙제를 안해서 학원에 늦게 남아야 했던 적도 많은데, 그럴때마다 항상 아무말 없이 데려다 주셨다. 영재원도 다녔기에 먼 거리를 항상 운전해 주셨다. 2주마다 창원에서 진주까지 가고, 거기서 4시간을 기다려주시고, 집에 데려다 주셨다. 이제와서 생각하니 정말 너무 감사하다는 말 밖에 안나온다.
서류를 통과하고, 면접을 준비해야 했다. 나는 말을 잘 못했다. 정확히는 너무 긴장을 하는 타입이었다. 평소에는 그렇게 시끄럽고 잘 놀았는데, 면접은 너무 긴장되었다. 그래서인지 준비하는데도 애를 먹었지만, 결과적으로는 잘 되었다. 뭐 통과했으니 말이다.
면접시험은 너무 못봤다고 생각했고, 그래서 면접을 보고 와서 공부를 했을 정도이다. 아무래도 고등학교를 간다는 낮선 감정과 못봤다는 불안감이 교차해서 잠깐 철이 들었나보다. 하지만 뭐 합격을 했고, 합격 페이지를 봤을 때 그 희열은 아직까지도 기억이 난다. 합격을 했어서, 나는 의욕이 붙었었다. 과고 대비반, 과고를 들어가기 전 방학때 잠깐 하는 총정리 수업을 정말 열심히 했었다. 아마 그정도로 열정을 가지고 공부했던 적은 거의 없던것 같다. 고등학교때는 열정이 아니라 강박에 의해서 공부를 했으니… 그때 물리와 수학, 화학을 한번 쭉 배웠는데, 수학은 둘째치고 그때 배웠던 화학 지식은 고등학교 3년동안 우려먹었고, 그때 배웠던 물리 덕분에 상위권?을 유지할 수 있었다. 정말 재미있었고, 원리가 신기했다. 정말 지금 생각해도 그때 새로운걸 배운다는 느낌을 다시 느낄 수 없을 것 같다. 여튼 방학동안 정말 열심히 공부했고, 덕분에 1학년때에는 최상위권을 할 수 있었다.
내가 진학하는, 과학고는 기숙사 학교였다. 이때 처음으로 집을 떠나 멀리서 생활하기 시작했다. 처음에는 정말 정말 무서웠다. 들뜬 감정도 있었지만, 중3 그 어린 나이에 집을 나온다는 건 아무래도 많이 불안했던 것 같다. 과학고는 브릿지라고, 입학 전에 2주간 두번 학교에서 미리 생활하면서 기숙사 생활과 고등학교 일상에 미리 익숙해지고, 미리미리 여러가지 시험을 치면서 각종 반을 결정하는 기간을 가진다. 2월 초 처음으로 브릿지를 가면 기숙사 방을 배정받고 생애 처음으로 룸메이트를 배정받았다. 생판 모르는 친구랑 같은 방에서 자고 생활해야 하는 거였는데, 나는 새 친구를 잘 사귀지 못하는 편이라 약간 두려웠다. 물론 말만 한번 트면 급속도로 친밀감을 좁히는 스타일인데, 그 처음 말을 트는게 힘들었다. 하지만 착한 친구였고, 덕분에 2주동안 여러 친구도 사귀고 잘 지냈다. 기억나는건, 우리 방에 귀신이 나오기로 알려진 괴담이 있는 방이었는데, 무서워서 몇일은 못잤던 기억이 있다. 기숙사 생활은 생각보다 괜찮았다. 첫날 빼고는 바로 익숙해졌다. 아침 6시 20분에 일어나는 것과 점호, 그리고 공동 샤워실에서 씻는것이 정말 낮설었지만 성격상 금방 적응했다. 너무 적응해서 문제지만.. 아침에 일어나서 운동장을 한바퀴 도는 구보를 하고 기숙사로 돌아와 씻는 시간을 가진다. 이후 아침 자습을 하는데, 이때 시험을 쳤다. 진단고사라고, 아마 자신의 위치를 확인해보라고 시행했던 시험이었던 것 같다. 아침에 머리를 굴리는건 낮설었고, 그때에는 그게 지대한 영향을 끼칠 것 같아 최선을 다해서 쳤다. 물론 두번째 브릿지에서는 잔다고 치지도 못했지만..ㅎㅎ
입학을 하고 정식으로 학생이 되었다. 방학때 공부했던 기세로 1학기는 정말 열심히 했던 것 같다. 아마 고등학교 때중에서 최고로 집중했던 시기이다. 덕분에 뭐 점수는 잘 받았고, 원하던 영재학급도 들어갈 수 있었지만 원하던 동아리는 떨어졌다. 시험이 처음보는 개념들 투성이었고, 부산이나 서울에까지 가서 공부했던 친구들과 싸움은 힘들었다. 이때 한계를 첨으로 느꼈다. 1학기 기말고사가 끝나고 고등학교 생활의 전환점이 찾아온다. 한 친구를 알게 된다. 중3때 나는 덕후.. 였다. 1학기때에는 공부하느라 바빠서 다른거에 신경쓸 겨를이 없었지만 처음으로 방학을 맞이하면서 여유가 생겼고, 자유시간이 많이지면서 약간은 문화생활을 즐기게 되었다. 이때 내 내면에 있던 잠재력이 부활을 했고, 그때 같이 덕후인 한 친구를 만나게 된다. 나랑 너무 잘 맞았다. 성격도 잘 맞았고, 관심사도 잘 맞았던 그 친구와 나는 급속도로 친해졌다. 그러다 우리는 연애를 한다. 그것도 중간고사 5일전에 사귀기 시작했다. 당연히 공부는 하지 않았고, 연애에 몰두하느라 2학기는 통으로 날리게 된다. 하루종일 놀고, 문자하고, 편지쓰고 그랬다. 단 둘이 있기 좋은 시골학교라 산책도 자주 갔고, 정말 행복했다. 성적이 많이 떨어졌다. 그래도 중위권은 유지했는데, 부모님은 당연히 당황하셨을 것이다. 갑자기 그렇게 성적이 떨어졌으니.. 그래서 결국 부모님과 틈만 나면 싸웠고, 그 친구와도 정말 자주 싸웠다. 지금와서 내가 왜그랬을까 싶다. 정말 좋은 친구였고 정말 잘 맞았는데, 내가 너무 잘못했던것 같다. 시간이 많이 흘러서 알게 되는건가 싶다. 그 친구와는 몇번에 다툼 이후로 영영 멀어지게 되었다.
한번 공부를 놓으니 그 뒤로 공부하기 어려웠고 낮아진 성적은 높이기 힘들었다. 그렇게 나는 2학년을 맞이했다.
**2020년에는..**
2020년 나는 2학년이 된다. 1학년 친구들이 새롭게 들어오며 2학년이 되었다는 것을 실감했다. 새롭게 마음을 다잡고 공부를 하기로 마음먹었다. 그나마 공부를 해서, 성적을 높이는 데에는 성공했다. 2학년 1학기를 잘 쳐서, 조기진학이 가능한 성적이 되었다. IQ도 140을 넘겨서 조기졸업도 가능했다. 2학년 여름방학때는 고민을 한다. 조기졸업을 할지 조기진학을 할지.
그 전에, 2학년에 올라가는 시기에 코로나를 맞이한다. 전 수업이 온라인 수업이 되었고, 입학식뿐만 아니라 진급식, 그리고 그 사이 수업도 전체 다 온라인으로 진행하게 되었다. 온라인으로 진행하면서 장비를 셋팅하기 시작했다. 내가 아침에 수업을 제대로 들을리 없었기 때문에 캡쳐보드며 다른 여러 장비도 장만했다. 그러면서 오디오 문제가 생겼다. 에어팟은 녹음을 하면서 동시에 재생할 때 통화로 연결이 되어 음질이 정말 너무 구리기 때문에 이를 해결하기 위해 오디오 장치를 따로 썼고, 캡처보드에 오디오를 넣기 위해 가상 오디오 드라이버까지 찾아가며 준비했다. 그러면서 오디오 드라이버에 관심을 가졌고, 그러면서 컴퓨터에 대해서 관심을 가지게 된다.

View File

@ -1,24 +0,0 @@
---
title: 다른 사람의 집에 산다는 것
date: 2022-04-09T04:02:17.000Z
description: ""
draft: false
slug: 다른-사람의-집에-산다는-것
---
우리 집은 창원이다. 어렸을 때 서울에 살다가 초증학교때 창원으로 내려왔고, 중학교 3학년까지 거기서 살아왔다. 고등학교는 기숙사 학교를 가서, 어쨋든 학창시절은 창원에서 지냈다.
대학을 서울로 와서 대학 기숙사에 들어가게 되었다. 고등학교때 기숙사는 들어오자마자 화장실과 샤워실을 리모델링 하기도 했고, 전국에서 아마 가장 넓은 방을 가지고 있었지 않을까 싶다. 각 방마다 냉장고도 있고. 하지만 대학교 기숙사는 참담했다. 2/3로 줄어든 엄청 좁은 방에, 낮은 천장, 허술한 난방, 게다가 못 쓸정도로 더러운 화장실과 때와 곰팡이로 가득한 샤워실까지. 고등학교때와는 차원을 달리할 정도로 극악의 기숙사였다. 그래서 그런지, 공용 공간의 위생을 병적으로 집착하는 나에게는 너무 스트레스였다. 여기저기 남이 쓰던 쓰레기나 껌같은 흔적들이 방 곳곳에 있었고, 애초에 너무 더러웠다. 그래서 결국 기숙사에일주일을 못 버티고도망쳐 나왔다. 그렇게 조부모님 댁에 얹혀 살기 시작했고, 1시간의 통학생활이 시작되었다.
처음에 통학을 했을 때에는 학교를 가기만 하는게 너무 힘들었고, 어떻게 이렇게 힘들게 학교를다니지라는 걱정만 있었지만, 막상 한달째 통학을 하고 나니 일상 운동도 되고 기숙사와는 달리 정신을 빠릿빠릿하게 세우고 생활을 하게되는 장점도 많았다. 특히 강제적으로라도 기상시간이 앞당겨진다는 것은 일상의 더 빠른 시작을 일으켜 가장 강점이 되었다. 강권의 약속과 술약에서 수월히 빠져나올 수 있는 구실이 된다는 것은 덤.
원래의 집에서 생활하는 여타 통학과는 달리 나는 조부모님 댁에서 생활을 하니 삶의 제한이 꽤 자유롭다. 통금 시간도 없고, 부모님의 잔소리도 없어(솔직히 이건 필요하다.) 기숙사의 자유도와 비슷하지 않을까 싶다. 하지만 그만큼의 자유에는 할머니 할아버지의 생활도 최대한 배려하고 눈치를 많이 보면서 살아야 한다는 의무가 따른다.
내가 가장 질색하는 몇가지가 있다. 강박에 가까워 고치기 정말 힘든데다 관련된 사소한 것에도 진짜 엄청난 스트레스를 받는다.
먼저 바닥에 먼지가 있는 것을 극도로 싫어한다. 발은 항상 깨끗해야 한다. 침대에서 거꾸로 누울때도 걱정없이 잘 수 있을 정도로 발은 청결해야 한다. 하지만 조부모님댁(이하 본가)은 연립주택인데다, 도심에 있어 먼지가 많이 쌓인다. 게다가 청소를 잘 안하신다. 발에 계속 뭔가 달라붙고 먼지가 쌓이고 그것으로 스트레스를 엄청 받았는데, 내가 청소를 하는 것으로 해결되었다. 난 청소를 좋아한다.
또, 나는 강박이 있어 밥을 남기지를 못한다. 죽을 것 같아도 밀어 넣는다. 그런 강박이 있다. 그래서 평소에는 음식 냄새를 맡으면 토가 쏠린다. 그런것은 문을 닫으면 해결될 수 있다. 하지만 본가의 세탁기는 부엌을 지나 베란다에 있다. 빨래를 해주시고 말리시는 과정에서 음식에 대해서 많은 일들이 일어난다. 첫번째 항목에와 마찬가지로 음식 먼지, 즉 고춧가루 소금이나 음식에 관련된 사소한 찌꺼기들에 엄청난 스트레스를 받는다. 빨래를 가져오시는 과정에서 음식 먼지가 많이 붙는다. 이건 어떻게 해결해야 할지 감이 안온다. 런드리고라고 빨래 대행까지 생각했는데, 도리가 아닌것 같아서 포기했다. 뭔가를 요구하기에는 얹혀 사는 입장이라 너무 불편하다.
내 방은 아무도 청소하지 않았으면 한다. 사생활 그런 문제는 아니고 그냥 '있던 그대로'라는 강박 때문이다. 물건이 나도 모르는 새에 위피가 바뀌어 있으면 사소한 것에도 스트레스를 받는다. 이건 어쩔 수 없는 성격상의 결점이라 부탁드리는 수밖에 없을 것 같다.
조부모님은 진짜 어려운 관계인 것 같다. 부모님보다는 거리감이 있지만 그 외에서는 가장 가까운 관계이다. 조부모님과 나의 관계는 극단적으로 생각하면 남이지만 사실 소중한 가족이다. 편해진다면 얼마든지 편해질 수 있지만 불편해지면 얼마든지 불편해질 수도 있는것 같다.

View File

@ -1,25 +0,0 @@
+++
date = 2022-04-14T06:55:25Z
description = ""
draft = false
slug = "2022041406"
title = "선택실패"
+++
고등학교 3학년 때까지만 해도 나는 무조건 컴퓨터 공학과나 전기전자 공학과. 학과만 보고 대학교에 진학하리라 마음먹었었다. 진짜 학교 이름은 절대 보지 않을 것이라 생각했다. 하지만 막상 입시에 처하고 선택의 갈림길에 있으니 그 다짐은 물거품이 되었다.
역시나, 아니나 다를까 원서 접수 기간이 되니 진로 담당 선생님은 실적을 위해 상위 대학교의 낮은 학과에 원서를 넣어볼 것을 추천하셨다. 말이 추천이지 반 강제로 넣게 되었다. 아무런 관심도 없었고, 3년동안 생각도 없었는데다 자기소개서도 짜맞춰야 쓸 수 있는 학과에 지원했다. 붙어도 안간다는 생각으로. 하지만 내가 희망했던 대학을 떨어지고, 상위 학교 하위 학과와 하위 학교 자유 학과중에 선택해야 했다. 내가 3년동안 해왔던 것과 내가 무엇을 하고 싶은지를 생각해 본다면 당연히 학과를 보고 진학을 해야 했었는데, 막상 상위 학교의 합격증을 받으니 당연히 마음 한켠에서는 이걸 버린다고?!?라는 마음이 있었고, 그 마음에 휘둘려 등록예치금을 보낸다. 아직 등록 기간이 남았으니 등록 취소를 해도 되겠지만, 사실상 마음을 다잡은 것이나 마찬가지였다. 등록금 환불 신청서까지 적어놓고 책상에 올려두었다. 도장과 보호자 서명까지 받아놓고 고민했다. 후회하지 않을까? 어느 쪽으로 가나 조금 다니고 후회하게 될텐데, 학교를 후회하는게 학과를 후회하는 것보다 더 심하지 않을까 생각해 결국 그대로 원서는 놔둔 채 날이 넘어간다. 날짜가 넘어가는 걸 보고 얼마나 힘이 풀렸는지 모르겠다. 이제는 돌이킬 수 없구나.
그런 선택을 한 후 몇일간은 대학교 이름에 심취해 우리 학과도 선녀처럼 보였다. 전망 좋은 공과 학과로만 보였다. 하지만 시간이 지나면서 심취해 있던 생각이 풀리기 시작했고, 학과의 현실을 마주하기 시작하면서 후회가 밀려왔다. 서양에서는 주로 취급하지도 않는 사양산업의 책임으로만 끌고 온 이름만 대학인 학과. 이게 우리 조선해양 공학과의 현실이었고, 미래였다. 미래도 없는 학과. 이런 학과인줄 알고는 있었다. 하지만 실제 전공 수업을 들으면서 더욱이 실감났다. 왜 이런 학교에 와서 이딴 옛날 정보를 배워야 하는가. 왜 교수님은 열등감에 산업을 과장하고 잘 될거라고 세뇌하고 애원하듯이 수업을 하실까. 그 정도로 사양산업의 학과라는 것을 깨닫게 되었고, 탈출을 결심했다.
결국 탈출을 결심하게 될 줄은 알았다. 반수를 하던, 유학을 결심하던, 군대를 가던 어떻게든 이런 현실을 벗어나고자 하게 될 것이란 것을 알고 있었다. 학교도 내가 생각했던 것처럼 엄청 막 좋은 곳은 마냥 아니었다. 역사가 오래되어 뿌리깊은 명문이지만 보수적 교육과 보수적 관념 그 자체인 학교인 듯 했다. 대학교 수업은 고등학교의 주입식 교육 그 연장선 뿐이었다. 많은 것에 너무 큰 상실감을 느꼈다. 학과에서도, 학교에서도. 그래서 결국 대한민국 교육의 한계인가 싶었다. 대학교도 같은 처지의 교육이구나 했다.
지금 학과에 대한 열등감으로 그렇게 느끼는 것일 수도 있다. 하지만 만약 ‘학과’때문에 학교도 그렇게 느껴진다면 그만큼 그 학과에 문제가 크다는 것이 아닐까?
난 유학을 결심했다.
대한민국의 교육을 벗어나고 싶다. 아직 기초를 공부하는 입장으로서 얼만큼의 주입식인 필요하다는 것은 인정한다. 하지만 이것이 대학원까지 이어지고 심지어 그 이상에도 이어지는 교육 체계와 대학 교수들 아래에서 배우고 싶지 않다. 난 이루고 싶은 꿈과 하고 싶은 일, 애타게 배우고 싶은 것이 있다. 지금까지 내가 노력할 수 있었던 사명감이라 할 수도 있다. 이것이 깨져버린 이상, 그리고 여기서 계속 공부를 이어나가는 이상 내 꿈은 영원히 짓밟힐 것이다. 지금 여기에는 어떤 수를 써도 그것을 이룰 수 있는 길은 없다고 생각한다. 누구는 회피라 할테지만, 난 여기에서는 내가 할 수 있는 능력의 최선을 다했다고 생각한다. 과거를 후회하면서 이뿐인 자리에 있느니, 차라리 이 현실을 회피해 새 길을 열어나가련다.
제일 중요한 것은 이것이 지금 하기 싫은 일에 대한 회피가 목적이 되어 버리면 안된다는 것이다.

View File

@ -1,47 +0,0 @@
+++
date = 2023-05-06T12:55:32Z
description = ""
draft = false
slug = "usb-c-and-dp-alt-mode"
title = "About USB-C and DP Alt Mode."
+++
### Microsoft Surface Laptop 4 & Linux
제가 밖에서도 쓰고 집에서도 사용하는 만능 서피스 랩탑 4를 사용한지 어느새 2년이 넘었습니다. 그 사이에 리퍼도 받고 OS도 여러번 갈아엎기도 하고, 또 제 하드한 작업들을 잘 버텨주기도 한 정말 대단한 랩탑입니다.
특히 3:2의 광활한 세로는 정말 좋아서 다른 비율의 노트북은 이제 사용할 수 없는 몸이 되어버리기도 했습니다. 길이를 측정해보면 13인치 랩탑들과 동일한데, 세로에 5cm정도를 추가한 정도라 타이틀바 하나정도 넓혀주는 셈이라 마음놓고 패널바를 띄어놓고 사용할 수 있습니다.
약간의 불만족이라면 배터리와 IO, 그리고 더 깊게 들어가면 해상도 정도가 되겠네요. Intel 11세대를 탑재한 노트북 치고는, 그리고 이 가격 치고는 썬더볼트 없는 노트북을 찾는게 더 어려울것 같아요. USB-B 하나에 USB-C 하나, 그리고 자기네 proprietary한 Surface Connector라는 요상한 녀석과 다행이라면 다행일 3.5mm 오디오 잭이 하나 있습니다. 지금까지 썬더볼트를 이용할 일은 없어서 큰 불만은 아닌데 없는것보다는..
배터리는 3-4시간 웹서핑정도를 버텨주는데, 뭐 인텔 랩탑에서는 어쩔 수 없는 부분이죠. 약간 애매한 단점으로는 2496x1664 디스플레이가 있는데, 너무 낮은 FHD보다는 좋고, 4K보다는 안좋은 QHD 패널입니다. 4K를 탑재했다면 배터리가 정말 흘러내렸을테니 이래저재 일반적인 환경에서는 딱 맞는 해상도일겁니다.
하지만 리눅스를 쓰는 저에게는 15인치 QHD는 골치아픈 일이 되어버립니다. Fractional Scaling이라는 참으로 거지같은 상황이 생기는데, 보통 13인치 화면에는 FHD가 100%로 보기 좋고, 13-15인치 4K라면 200%를 해서 사용하면 딱 맞습니다. 인터페이스 크기가 노트북를 사용하는 거리에서 딱 좋은 크기인데, QHD는 150%라는 배율을 써야합니다.
윈도우 환경에서는 그냥 사용하는 배율이지만, 리눅스 특히 Wayland에서는 골치아픈 일이 생깁니다. 물리적으로 반-픽셀이 불가능하기에 원래라면 분수 배율은 불가능합니다. 이를 적당히 물려서 샤프하게 보이게 속이거나 인터페이스는 그대로 폰트만 크게 하는 경우도 있고, 아니면 해상도를 바꾸어 다시 계산하는 방법이 있겠는데, 리눅스가 원래 사용하는 X11에서는 큰 문제 없이 이러한 꼼수를 쓸 수 있습니다.
신기술인 Wayland에서도 마찬가지지만, Wayland를 안쓰고 레거시 X11을 사용하는 앱을 Wayland 환경에서 적용하면 반픽셀 문제 때문에 흐리게 보이게 됩니다. 그러면 그냥 X11을 사용하면 안되냐, 제가 Wayland를 사용해야만 하는 이유가 딱 하나 있습니다. X11에서는, 여러 모니터에 각각 다른 Scale을 적용하기가 힘듭니다.
랩탑을 집에서 사용할 때는 27" QHD 모니터 하나와 32" 4K 모니터를 사용합니다. 제가 다른 사람들보다 인터페이스를 크게 사용해서 125% 배율을 적용해야 합니다. 이때 문제가 생기는데, 노트북 화면은 150%, 27인치 모니터는 125%, 또 32인치 모니터는 150%로 사용해야 합니다. 더 작으면 안쓰는것만 못하더라구요..
이렇게 3가지 다른 크기의 화면은 각각 다른 배율로 써야해서, 이를 지원하는 Wayland를 써야 했습니다. 수동으로 손으로 만질수는 있지만 자주 깨지더라구요..
외부 모니터를 좋게 사용할 것이냐 일부 앱들을 흐리게 사용할 것이냐로 나뉘는데, 일단 저는 그냥 흐리게 쓰고 있습니다. Wayland도 나온지 한참이 지났고 (10년은 넘었으려나요), 많은 앱들은 Wayland를 지원합니다. Electron은 제대로 지원을 안하고 있는데.. 뭐 얼마전 완벽하게 적용했다니 시간이 지나면 괜찮아 지겠죠. 시간이 해결할 거라 생각하고 신기술을 택했습니다. 일단 명목상으로 얼리 어답터이기는 하니까요.
### 1. USB-C DP Alt Mode에 대해서..
외부 모니터를 사용할 당시 서피스가 썬더볼트를 지원하지 않는 바람에 호환성을 찾아봐야 했습니다.
USB-C 포트에 대한 정확한 정보가 없어 고민하던 중 USB-C 3.2 Gen 2라는 정보를 얻었습니다. USB3은 세분화를 이상하게 해서 헷갈리게 한다는 말을 많이 듣죠.
USB 3.2 Gen 2가 대체 뭔지 찾아봤더니, USB3중 USB3.2는 과거 USB3.1의 리네이밍입니다. USB3.2 Gen1, USB3.2 Gen2, USB3,2 Gen2x2는 각각 5, 10, 20Gbps의 bandwidth를 가집니다.
Gen1은 5Gbps 1레인으로 달성하고, Gen2는 10Gbps를 10Gbps 1레인으로 달성합니다. Gen2x2는 10Gbps 2레인입니다. USB3.2 1x2라는 것도 있는데, 이는 USB3.2 2x1과 동일하게 10Gbps인데, 5Gbps 레인 두개로 달성합니다.
USB-C는 양면으로 되어있고, Superspeed 4페어로 총 2개의 레인과 추가로 USB2가 있습니다. 이때 USB-C에는 Alt모드가 존재하는데, USB-C의 레인을 USB 데이터 교환목적이 아니라 다른 인터페이스를 얹어서 사용하는 방법입니다. 이중 가장 널리 사용되는 건 DP라는 디스플레이 인터페이스인데, DP에는 총 4페어가 있습니다. 하지만 USB와 달리 TX/RX가 필요하지 않아 4페어가 4레인이 됩니다.
제 서피스는 USB 3.2 Gen 2, 2x1입니다. 이 말은 1Gbps 하나의 레인을 사용합니다. USB-C에서 두개의 페어가 남고, 이 두개의 페어로 DP 시그널을 보냅니다. 따라서 최대 USB3 10Gbps + DP 2 Lane이 가능한거죠.
만약 USB3.2 1x2를 DP와 함께 사용한다면, 5Gbps 두개의 레인중 하나만 USB로 사용할 수 있고 두페어는 DP로 써야합니다.
다행이 제 경우 2x1이기에 DP를 다 쓰면서도 USB는 그대로 사용할 수 있었고, 자세하게는 DP Alt모드에서 DisplayPort 1.4 High Bit Rate 3 (HBR3) mode를 사용하기에 레인당 8.1Gbps, 총 16.2Gbps를 사용할 수 있습니다. 이는 4K60Hz를 두개까지 보낼 수 있는 대역폭으로, 저는 이론상 USB3.2 10Gbps와 4K60 모니터 두개가지 사용할 수 있습니다.

View File

@ -1,31 +0,0 @@
---
title: 미러서버를 운영하면서...
date: 2023-10-23T09:45:50.000Z
slug: operating-mirroring-server
description: operating-mirroring-server
---
학교 둥하교때마다 짬내서 적은거라 비문이 많다..
미러링 서버를 만든게 21년 말에 학교에서 우분투 깔다가 너무 오래걸려서 짜증나서 만든거였는데, 그게 서버 업그레이드도 몇번 거치고 다른것들도 추가하고 하니까 사이즈가 많이 커졌다. 작년까지 에러도 자주나고 그랬는데 이제야 안정적으로 운용할 정도의 수준은 된 것 같다.
미러 Sync하는 스크립트를 옛날 단순하게 적었던걸 그대로 쓰고 있다. Path도 지정 못하고 Configurability도 현저히 떨어져서 새로 짜야겠다고 생각은 했는데, 그래서 최근에 ***[reposync](https://git.morgan.kr/morgan/reposync)*** 라고 아에 다시 만들었다. 근데 이게 미러링 사이즈가 18TiB정도 되니까 이걸 테스트 해보기가 겁나더라.. 게다가 라이브로 뭔가 꼬여버리면 여기저기서 큰일이 나니까 Consistency가 중요한 바람에 테스트도 못하고 그냥 방치하고 있다.
미러링 하는 서버가 NFS로 마운트하는 방식이라 비슷하게 다른 서버에서 Overlay로 설정해서 테스트를 해보기는 했다. 그때는 딱히 큰 문제가 없었지만 나중에 실제 돌릴때 혹여나 예상하지 못한 곳에서 문제가 생기면 많이 골치아파진다. 지금 쓰고 있는 스크립트는 1년 넘게 달 돌아가고 있으니 말이다. 단순히 YAML로 된 Config를 읽어서 Rsync로 동기화 한 뒤에 Index만 업데이트하면 되는 스크립트라 복잡한건 없는데, 여기저기 예상치 못한 곳에 에러가 나는 바람에 에러 핸들링에 꽤 애를 먹었다.
그래도 이거 만지면서 꽤 많은걸 배웠다. 물론 서버 만지면서 리눅스는 뭐.. 그렇고 (애초에 노트북이 리눅스라..) 쉘스크립트랑 템플릿팅이랑 웹 사이트 정적 디자인도 몇몇개 알게 되었고,, 특히 뭐랄까 개발 외적으로 책임감?도 약간은 느끼게 된듯 하다.. 내 서버가 잠깐 문제생기면 여기저기서 문제가 터지고 수습하는것도 꽤 힘드니까 말이다..
아 맞다, 오늘 Kali 리눅스 공식 미러에 추가되었다. 일주일쯤 전에 트친분께서 Kali 미러가 너무 느리다고 하셔서 확인 해봤는데, 한국에 없어서 대만이랑 일본에서 가져오는거 아니던가.. 한국 인터넷이 바다 건너면 속도가 1/4토막이 나는 바람에 심각하게 느리겠다 싶었다. 그래서 Kali 미러링 공식 문서를 읽어 봤는데, 다른 미러는 보통 4시간에 한번 이렇게 시간으로 동기화를 하는데 요거는 SSH Pushing을 쓰는 것이었다. 동기화가 필요할 때 (메인 미러가 업데이트 되고 나서) SSH로 각 서버에 신호를 보내 동기화를 하는 방식이다.
SSH를 Kali 서버로만 열고, Authorized Keys 파일에 Public Key와 "command="를 입력해 두면 그 키로 인증한 클라이언트는 정해진 "command="가 실행된 환경만이 주어진다. 물론 Kali에서 제공한 스크립트도 다 오픈되어 있는 스크립트이고, 나도 한번 확인해본 스크립트지만 여튼 SSH를 타인에게 연다는 게 약간 걱정이 되었다. 아무래도 서버 권한을 남에게 주는거니까 혹여나 그쪽 PrivKey가 유출이 되거나 하면 문제가 되니까 찜찜하기는 했는데, 뭐 별 수 없다 싶었다.
이것도 그쪽에서 도메인이 아니라 IP로 고정해둬야 하는 방식이듯 해 Dynamic IP는 안된다고 했는데, 이거는 VPS에 연결해서 SSH Shim 비슷하게 설정하는걸로 해결했다. VPS IP는 고정이니까 그 서버를 거쳐서 내 로컬 서버로 들어오게 설정해놨다. 이렇게 하는 바람에 이제 VPS가 Dependency로 남아버렸다. 내가 서버를 아마 앞으로 평생 해놓을 것 같으니 저 IP도 평생 달에 5불씩 내면서 유지를 해야한다. 이것 이외에는 값싸게 고정 퍼블릭 IP를 받을 방법이 없다. 데이터센터는 트래픽이 너무 비싸고, 트래픽이 싸더라도 로컬 NFS를 써야하니까 실제 서빙 대역폭의 두배가 필요하다. 계산해 보니 달에 평균적으로 14-15TiB정도 쓰는데, 이거 VPS에서는 한 5-60불이라 부담이 좀 된다.
아웃바운드 트래픽이 14-15TiB나 되니 ISP에 헤비업로더로 등록?된듯 하다. 아무래도 가정용 회선을 써야 하니까 ISP의 제한을 조금 받는데, 가끔 DHCP도 안주고 레이턴시도 늘어지고 해서 짜증이 난다. 근데 어차피 아웃바운드는 한 80%가 국내니까 어차피 ISP 내부 망 안일텐데, 이러면 왜 굳이 제한을 하는건지 잘 모르겠다. 솔직히 국내 ISP는 국내에서라도 QoS를 없애야 하지 않나 싶다. 150GiB는 요즘같은 시대에 너무 적은 용량이다.
초기에는 많은 사람들이 쓰지는 않아서 왜 굳이 아무도 안쓰는 서버를 계속 켜놓을까 생각이 들었는데, 요즘 들어 몸집도 커지고 트래픽도 팍팍 올라가니 할 맛이 난다. 특히 외부에 있는 다른 머신에서 (학교에 설치되어 있는 우분투라던지) 내 서버가 보이면 정말 기쁘다. 처음에는 커뮤니티를 위해서 하는거 보다는, 취미로 하는 부분이 컸는데, 지금은 커뮤니티에 조금이나마 보탠다는 생각이 좀 강해졌다. 물론 아직도 내 유일한 취미는 서버 운용과 오픈소스 기여다. 요새 프로그램을 만드는거에 노하우도 생기고 해서 꽤 완성도 있는 결과물도 많아졌다.
이제 남은 해보고 싶은 거는.. 러스트를 배우는거다.. 뭐랄까 내 머리는 C에 테일러되어 있어서 말이지, 러스트의 엄격함에 원초적인 거부감이 든다. 항상 C의 자유도를 바탕으로 꼼수를 쓰는 방식을 꽤 애용해서 그런지 마음대로 못하는 러스트는 별로다.. 그래도 C의 Proceeder기도 하고, 또 메모리 보호는 필요불가결한 부분이니까 적응해 나가야지 싶다.
카이스트 미러는 있는데 왜 우리 학교는 미러를 안하지.. 동아리방 가보니까 안쓰는 서버 있더만 그걸로 미러서버라도 돌려줘요~

View File

@ -1,9 +1,47 @@
---
title: TIL - Drivers
title: Notes - 5. Drivers
date: 1970-01-01T00:00:00.000Z
slug: today-i-learned-drivers
slug: notes-drivers
---
### 5. Linux Kernel's Driver Management
< Android HAL >
Android. HAL (Hardware Abstraction Layer) Why? Linux kernel already includes a lot of driverset, why additional userspace device driver manager is needed?
Android can be configured by a lot different parts, compared to PC or server. Like lte modem, wifi chip, screen chip, etc. Linux's mainline kernel cant manage all this many chips.
Its like alternative universal driver package. Variety of hardware config, but allow modular and consistent interface. (In Linux world, there are also Abstract Layers like HAL, like ALSA/PA or libinput or even FUSE is Abstract layer if you wanna say so...)
Its bridge between hardware driver and Android Framefork layer, and Android Framework driver provides universal interface. Android Apps can use those peripherals through standardized Android API (like Camera API or sensors, GPS..). Hardware vendors makes API driver? (can we say that's server?) from their hardware to Android Manger class.
### **Linux Userspace Driver**
"Userspace Driver."
- Different from non-mainline kernel drivers, these are done as 3rd party kernel modules or patches, not userspace drivers.
- Userspace driver needs context-switching (unline kernel driver), so more overhead.
How exactly userspace drivers can access and use physical peripherals? Peripherals usually use "cpu port" in x86, and "memory map" in ARM. Unlike kernel that actually can access these without any restrictions, they somehow need to access to raw port or raw memory.
UIO (Userspace I/O)
- Allows userspace apps to directly access hardware devices and handle interrupts.
- Kernel module is paired with userspace component to do kernel jobs like things above. Its like proxy.
MMIO (Memory-Mapped I/O)
- For memory-mapped register, userspace app can access device's memory after mapped with mmap() syscall.
- Q. Accessing arbitary raw memory addresses without MMU protection is restricted, isnt it?
- A. mmap() allows userspace program to map specific portion of memory into its own address space.
or, map hardware register's address into specific userspace virtual address.
### Drivers and CPU Peripherals
CPU has its own preconfigured ports (or pins), e.g. PCI, USB, and I/O buses like SPI or I2C. Signal through this pins are handled by CPU as the part of SoC. If we take a look at CPU's datasheet, we can see how pins are assigned for specific signals. CPU pins are assinged to RAM-related pins, JTAG, GPIO, PCIe, I2C, UART, SPI, and so on. Beside complex I/O like USB, PCIe, SATA that requires high datarate and strict signal timing, less complex I/O like UART or I2C can use GPIO pins for communication. GPIOs are versatile and can be programmed to communicate with various interfaces. This way of using software instead of dedicated hardware is called "bit banging", and we can easily see this on like Arduino.
@ -42,4 +80,14 @@ Interact directly with hardware or implement file systems without requiring kern
- ioctl calls?
Communicating with device drivers?
Allows user-space programs -> device-specific command to drivers? query device status? (anyway which isnt read/write)
Allows user-space programs -> device-specific command to drivers? query device status? (anyway which isnt read/write)
### Linux's driver problem
- Peripherals are growing exponentially, even Embedded controller itself is also many. If Linux kernel supports them all, it will be so big, even with kernel modules. Large scale makes system unstable. With this in mind, I think switching drivers from kernel-space-large-codebase-driver to userspace modular and seperate driver managing is better. Also Linux kernel's driver isnt equally supported in mainline. They hates merging propriety drivers, even though it is important to include it for user experience.
- Linux's Monolithic Kernelspace Driver managing .. Security, Performance, Reusability, it is Modular so not a big deal, Consistency, Reliability, ..
- Drivers for standard buses like USB, PCI, I2C, SPI, ... low-level protocol wrappers. But device drivers are not standardized. Even if they uses same USB protocol, each embedded controllers (specific USB host controller or I2C controller chip) needs independant drivers.
- High-level device drivers that uses standard protocol.Like touchscreen, usb webcam, ... Those devices sends data over protocol. Protocol part of driver is done by generic/protocol driver and device-specific drivers are built on top of generic/protocol drivers. Like, parsing data structure on top of passed data through USB or I2C into x-pos and y-pos.
- Vendor-specific drivers usually do: "device initialize / power managing / parsing raw data to kernel subsystem / device config like volume, sensitivity.."
- high-level behavior and data structures that the device uses over the communication protocol
- DKMS

View File

@ -1,237 +1,11 @@
---
title: TIL
title: Notes - 1. Flash
date: 1970-01-01T00:00:00.000Z
slug: today-i-learned
description: "Daily TILs"
slug: notes-flash
---
## TIL
By. [Me](https://github.com/morgan9e)
### 1. NAND Flash Interface
Interface between cpu and chips. Why? I was wondering about best filesystem for my external SSD, because obviously write-cached external device is bad. I always just unplug my drive without unmounting and ejecting, so I'm always afraid about data corruption. So, i was searching about flash-friendly file systems, and I found JIFFS2 or UBIFS?. JIFFS was familliar, I have seen it from many embedded board projects. It was raw NAND chip friendly. We need FAL? (Flash Abstract Layer) when we use flash chips. But we dont care about these in ssds. Why? Because SSD Controllers embedded in ssd itself manages this abstraction and also controls wearing, also caching in local DRAM. So, we dont need to care about these things when we use SSD. But in embedded board that normally doesnt have seperate controller rather than just attaching NAND chips directly to CPU. Like NOR chip I used several times, NAND is also connected directly. I used QSPI when connecting NOR chip, but SPI was not sufficient for high-speed high data-rate NAND chips. We need parallel communicaion. Even though I have seen a lot of NAND projects, I never saw this part of firmware controlling and parsing NAND signals. I've seen NAND controller firmware that does block-level jobs, but never this interfacing things. So I searched a bit about NAND interface, and I found that there arent many standards in this part. There was ONFI (Open NAND Flash Interface) that defines standard interface for NAND chips, but not many major chips supported, maybe. I saw some documentations like Micron's, and well, that was complex. I dont know yet about hardware timing and things like that, not about that low-level of things. Well but I was interested about that things.
Also I learned about Eth PHY and interfaces like MII, GMII... It defines signal level interface and again I am not familiar with these things.
And, this was all thing I searched about.
### 2. PHY?
What is PHY? Physical Layer from OSI Layers.
Usually indicates the chip/part where parses incoming signal (via RF or cable) and then send it to next layer in standardized way. ADC. Analog singal to digital data.
Raw Analog <--> Amplifing, Filtering, Equalizing <--> Decoding, Encoding, Error checking (CRC), Clock Data Recovery.. <--> Data Link
PHY Designs?
Line Driver / Amplifier for better analog resolution
PLL (Phase-Locked Loops) for CDR and matching clocks from incoming clock/data signal.
DSP (Digital Singal Processor) for processing raw data to known format data.
Eth PHY.
MAC. (Media Access Control) <-> PHY via MII GMII (Media Independant Interface)
PHY just transform Ethernet Cable signal into data packet.
From MAC, actual content of data is interpreted, MAC distinguishes each devices, de/encapsulates.
Line Driver?
Part of transmission line signal. Make sure right signal arrived well. Matching impedence.. etc... (how? and what more?)
DSP Design?
For example in Eth PHY what is processed in DSP? Deserialization? ( Parsing differential signals? => line driver maybe )
### 3. D-Bus?
D-Bus is IPC system for Linux, it provides structualized way for apps to communicate with each other.
Desktop Bus System.
System-bus and session-bus
System services <-> root application / system users.
- Hardware events, system state managing, low-levels
User session <-> user applications and users.
- Desktop Environment, Apps.
=> Event-driven communication / Object-oriented
Messaging. - calls / returns / error / signal
Object - interface -> method -> property -> signal
Method = (call, return, error, signal)
D-Bus router = message broker / router (just like other message forward/proxy protocols)
Method Calls -> request of service? RPC?
Signals. kernel signal in userspace. send signal to application.
Objects .. Message = Serialized bytearray of any signal / method calls. It is like RPC. Multi-multi RPC-bus
D-Bus Message structure.
Byteorder / Message Type / Flags / Protocol Version / Length / UUID / Header / Body.
How and where can I use D-Bus in my application?
Communication with low-level D-Bus daemon(server).
Ex. MediaPlayer - Implement Play/Pause/Stop/Volume for user to control via DE's common interface i.e. play button on taskbar? Extensions? Anyway structulized way of control.
Ex. DE can get information about songs now playing, via D-Bus.
Ex. System monitoring application e.g. runCat.
Ex. Caffeine-ng -> prevents machine from sleeping.
Ex. Solaar -> Controls mouse/keyboard in low-level. Needs D-Bus.
How?
Define D-Bus interface via XML, signals. methods, props. (export to bus?) -> Implement by library -> Connect to D-Bus (sync with daemon?) -> Do something.
Session vs System D-Bus
Session ? e.g. Push notification to DE. we need to send it via d-bus.
System ? e.g. Power Event, kernel-level type of event managing.
### 4. ABI?
For me it wasnt clear enough about definition of ABI.
Application Binary Interface. Defines how data structures from machine code. System library / binary compatability. e.g. Data Type, Size, Layout, Alignment, ..
1. In Linux, `struct dirent{}` and corresponding of other OS differ. It is data structure mismatch, which is part of ABI. Also, typing like int, long may be 32bits, 64bits,,, though it usually doesnt differ in modern system.
2. Alignment of memory.
3. Calling convention ... How argument is passed. Via "eax, ebx, ecx..." or in stack? and also return values.
- System ABI, syscalls? ... syscall "int 0x80" is Linux's own ABI. Where is argument, syscall type indication where?
- Object code, shared libraries. ... Function call conventions, naming convention for shared object, may differ and thus mismatch?
1. Binary object format, ELF, PE, Mach-O is also part of ABI.
2. glibc, musl, ... this libc mismatch is also part of ABI incompatibility. Function signatures, syscall wrappers, symbol versioning, ...
API is just defining high-level approach of data exchange, ABI is more lower level approach of binary applications talk to each other via binary data structures and object conventions.
API read(fd, mode, bytes) can be same but where parameter is passed (in ASM level) may differ.
### 5. Linux Kernel's Driver Management
< Android HAL >
Android. HAL (Hardware Abstraction Layer) Why? Linux kernel already includes a lot of driverset, why additional userspace device driver manager is needed?
Android can be configured by a lot different parts, compared to PC or server. Like lte modem, wifi chip, screen chip, etc. Linux's mainline kernel cant manage all this many chips.
Its like alternative universal driver package. Variety of hardware config, but allow modular and consistent interface. (In Linux world, there are also Abstract Layers like HAL, like ALSA/PA or libinput or even FUSE is Abstract layer if you wanna say so...)
Its bridge between hardware driver and Android Framefork layer, and Android Framework driver provides universal interface. Android Apps can use those peripherals through standardized Android API (like Camera API or sensors, GPS..). Hardware vendors makes API driver? (can we say that's server?) from their hardware to Android Manger class.
### **Linux Userspace Driver**
"Userspace Driver."
- Different from non-mainline kernel drivers, these are done as 3rd party kernel modules or patches, not userspace drivers.
- Userspace driver needs context-switching (unline kernel driver), so more overhead.
How exactly userspace drivers can access and use physical peripherals? Peripherals usually use "cpu port" in x86, and "memory map" in ARM. Unlike kernel that actually can access these without any restrictions, they somehow need to access to raw port or raw memory.
UIO (Userspace I/O)
- Allows userspace apps to directly access hardware devices and handle interrupts.
- Kernel module is paired with userspace component to do kernel jobs like things above. Its like proxy.
MMIO (Memory-Mapped I/O)
- For memory-mapped register, userspace app can access device's memory after mapped with mmap() syscall.
- Q. Accessing arbitary raw memory addresses without MMU protection is restricted, isnt it?
- A. mmap() allows userspace program to map specific portion of memory into its own address space.
or, map hardware register's address into specific userspace virtual address.
### Drivers and CPU Peripherals
CPU has its own preconfigured ports (or pins), e.g. PCI, USB, and I/O buses like SPI or I2C. Signal through this pins are handled by CPU as the part of SoC. If we take a look at CPU's datasheet, we can see how pins are assigned for specific signals. CPU pins are assinged to RAM-related pins, JTAG, GPIO, PCIe, I2C, UART, SPI, and so on. Beside complex I/O like USB, PCIe, SATA that requires high datarate and strict signal timing, less complex I/O like UART or I2C can use GPIO pins for communication. GPIOs are versatile and can be programmed to communicate with various interfaces. This way of using software instead of dedicated hardware is called "bit banging", and we can easily see this on like Arduino.
But there arent many interfaces that doesnt requires strict timing, only UART or basic I2C can be bit-banged. In most time, dedicated controller hardware is required. These hardware blocks can handle the timing and electric signals or even validation of data, thus ensures higher throughput and reliability.
CPU has limited amount of pins, and we need to connect tremendous amount of devices. External hardware controllers and buses are required to expand I/O. These controllers can often interface with many devices on the same bus (like multiple SPI or I2C devices) and serialize the communications.
Serialization is the key of efficient communication. CPU technology is eveolved, and we can use very high speed buses. With these high-speed buses serial communication has advantage over paralell communication, which was primarily used when we only had low-speed buses.
Well, there was northbridge and southbridge long CPU ago, CPU needed additional chipset for all high speed interface, like RAM or PCIe. Then northbridge is directly connected to CPU via "Front side bus". {{ }} .
Currently, just those bridges are integrated into CPU as SoC] or just one chipsets. Those chipsets connects to CPU as PCIe.
During the boot process, the OS will initialize MMU, but in early stage of booting, the CPU may operate in a mode where the MMU in not yey enabled or is configured to provide a direct mapping, so that kernel can to permissive tasks. Once OS is loaded, is first sets up MMU with kernel's own memory mapping setup, and also necessary permissions among address spaces.
In case of MMIO, OS will configure MMU to create direct mapping between requesting process's VA space and device's physical address that its register mapped into. Also disabling CPU caching is done for this address range.
So, How does OS configure MMU?
- Others
- libusb allows userspace USB communications without kernel things, FUSE allows userspace filesystem.
- ioctl calls?
### Linux's driver problem
- Peripherals are growing exponentially, even Embedded controller itself is also many. If Linux kernel supports them all, it will be so big, even with kernel modules. Large scale makes system unstable. With this in mind, I think switching drivers from kernel-space-large-codebase-driver to userspace modular and seperate driver managing is better. Also Linux kernel's driver isnt equally supported in mainline. They hates merging propriety drivers, even though it is important to include it for user experience.
- Linux's Monolithic Kernelspace Driver managing .. Security, Performance, Reusability, it is Modular so not a big deal, Consistency, Reliability, ..
- Drivers for standard buses like USB, PCI, I2C, SPI, ... low-level protocol wrappers. But device drivers are not standardized. Even if they uses same USB protocol, each embedded controllers (specific USB host controller or I2C controller chip) needs independant drivers.
- High-level device drivers that uses standard protocol.Like touchscreen, usb webcam, ... Those devices sends data over protocol. Protocol part of driver is done by generic/protocol driver and device-specific drivers are built on top of generic/protocol drivers. Like, parsing data structure on top of passed data through USB or I2C into x-pos and y-pos.
- Vendor-specific drivers usually do: "device initialize / power managing / parsing raw data to kernel subsystem / device config like volume, sensitivity.."
- high-level behavior and data structures that the device uses over the communication protocol
- DKMS
### 6. Container & Sandboxing
Flatpak → OSTree Commits , combining..
GNOME
app / org.gnome.Sdk ← org.gnome.Platform/master ← org.freedesktop.Platform/23.08 ,, Minimal linux environment.
### bwrap, sandbox environment.
No userspace process isolation so I can see /proc in host, with /proc/{pid}/root which listing it actaully shows me root inside sandbox. via mountinfo I can see it is bindmount from /newroot → /root.
/newroot is on tmpfs, meaning that there arent any actual files mapped in host, so I cant find it.
/newroot is setted up by bwrap, no “base” image.
All flatpak commits, including Platform, is bind mounted to containers folders. e.g. org.gnome.Platforms files/ will be ro-mounted on /usr@container, and flatpak invokes bwrap with
symlink /bin /usr/bin, symlink /lib /usr/lib, mkdir /dev, mkdir /tmp, mkdir /sys, mkdir /app … without need of mounting image on root, but it sets up like minimal linux on embedded firmware (e.g. busybox linux)
App will be ro-binded in /app, platform will be ro-binded on /usr, user-data will be saved at XDGs, $HOME.
- **BootC?**
What is bootc?
It is exactly same as ostree-native-containers, its original of that.
### fakeroot
LD_PRELOAD, geteuid() → return 0. It fools program that uid is 0, but anyways user cant access to real roots permissions. Just fooling programs that “only allows running as root internally”.
### containered environment,
rootless → current user becomes root, any additional users inside container gets virtual uid, in host its just ghost id. real root becomes `nobody` and of course its not accessible by user.
In here we need “rooless” unpacking. Container Image fill have files with root ownership in their tar archive. So we need fakeroot to unpack image to filesystem, so that “root” files in tar to be extracted.
### 7. libc and compat layer
### 8. ggml?
### 9. eBPF?
### 10. Serialization & Reflection
### 11.
And, this was all thing I searched about.

View File

@ -1,51 +0,0 @@
---
title: 2024-05-19
date: 2024-05-19T00:00:00+09:00
slug: 오월십구일
---
### 쩝...
글쎄다.. 뭘까.. 대체 뭘 써야할까..
서버랑 쓸데없는 커널공부에 힘을 너무 많이 쓴건가 싶다.. 게다가 그 뭐시기 프로젝트 때문에 요새 바빴다.. 완성을 했다고 생각을 했는데도 계속 버그가 나오고 계속 개선할 점이 생각나고 계속... 끄억 그래도 이제 잊어버릴 만큼 완성했다..!!!
아 맞다 도메인이 만료된다. 메인으로 쓰는거 말고 서브로 이것저것 올려놓는 도메인이 있는데 그게 만료된다.. 10월에.. 문제는 이메일을 거기를 주로 써서 다 옮기던가 괜히 도메인 평생 연장하던가 해야한다ㅠ
근데 클플 계정이 그 도메인 이메일로 되어있고 이메일 서버도 클플인데 뭐 모종의 오류로 연결이 끊기면.. 어떻게 들어가지?? 문제는 도메인 등록도 클플이라 DNS를 바꾸지도 못하는데??......
점이 ... 이랑 ....이 다르네 ....에서 마지막 점은 다른 캐릭터인가? 앞에 있는건 점세개로 하나로 치나 모르겠다
프리텐다드 좋네 이게 한글 폰트중에 제일 마음에 든다
한글...
로ㄱ 록 플 프ㄹ 폰포ㄴ 뭔가 피읖이나 리을이 들어가면 안예뻐지네.. 네모네모에 폭 일정해서 보기 좋다 손글씨도 이렇게 쓸 수 있으면 얼마나 좋을까
...
계속 저장 누르는거 귀찮다 자동저장이 필요하다
리눅스에서 쓸만한 에디터 뭐가 있을까 한글 잘 되는것 중에
리눅스.. 리눅스라.. 참 애물단지다.. 윈도우 쓰면 그건 그것대로 스트레스 많이 받고 리눅스는 리눅스대로 답답하지만 그래도 리눅스가 훨 낫다 파워쉘은 켜지는데만 너무 오래걸린다..
주저리주저리 거릴만한 곳이 필요하다고는 생각한다. 일기도 일기인데 손글씨는 뭔가.. 귀찮은건 아닌데.. 뭐라하지... 손이 아프다? 근데 키보드도 손목아파
아 그래 노트북이나 키보드 너무 오래 쓰니까.. 하루 일어나있는 시간에 진짜 80%는 키보드에 손 올려놓으니까 손목이 진짜 뭔가.. 아프다기보다는.. 부자연스럽다나
그냥 좀 편해지고 싶다 머리가 너무 복잡하다.. 머리가 복잡한건지 내 머리의 처리량이 현저히 줄어든건지 모르겠다
아마 내 머리가 점점 녹고있는게 맞는것 같다. 하루죙일 유튜브 보다 코딩하다 반복하니까 머리가 굳는 느낌이다. 이럴 때 마다 생각이 드는데.. 코딩? 컴퓨터? 컴퓨터는 알고리즘 말고 그 기술적인 부분이라하나 서버랑 여러 그.. 뭐랄까 인프라? 글쎄다 어쨋든 그런것만 하니까 머리를 쓸 일이 없다. 물론 기억?은 많이 쌓이고 지식도 쌓이기는 하고 하는데 창의력이라해야하나 사고력이라해야하나 그게 점점 줄어들고 있는게 느껴진다...
수학을 해야할까..? 독서를 해야할까..? 머리를 재활하고 싶은데.. 투석기에 돌려버리던가 초기화를 하고 싶다. 그냥 과부화인걸 수도 있다.
뭐 하나를 제대로 생각할 수 없다. 계속 딴 생각이 난다고 해야하나 멀티태스킹은 당연히 안되고.. 그래서 난 노래가 틀어져 있거나 하면 아무것도 하지 못하는것 같다. 분명 몇년 전에는 안이랬는데.....
진짜 문제가 있는걸까..
도움을 받고 싶기는 하다.. 그래도 가이드를 해주면 훨씬 나을 것 같은데.. 뭔가.............................
모르겠다.. 자야지
와 나 진짜 스트레스 받는다.. 요새 사소한거에 스트레스를 너무 많이 받는다. 분노조절장애가 되어나가 싶다. 방금 CORS 때문에 진짜 속 뒤집힐 뻔 했다. 화가 치밀어 올라올 뻔했다. 와.. 물론 다 이유가 있겟지만 조금 더 나은 방법은 없었을지.. CORS 제안한 사람 두고두고... 어제오늘 스트레스는 HDD 망가져서 서버 통째도 먹통됐던거랑 망할 CORS 때문에 내 수명 한 10년은 줄어든것 같다.