simhs93의 등록된 링크

 simhs93로 등록된 네이버 블로그 포스트 수는 129건입니다.

[인공지능] Fashion MNIST(옷 인식) 1강 - 데이터 읽기 [내부링크]

MNIST 손글씨 인식에 이어서 Fashion MNIST 옷 인식을 해보자! MNIST 손글씨 인식과 마찬가지로 Fashion MNIST 데이터도 준비되어 있다. https://colab.research.google.com/?hl=ko 당장 코랩에 들어가 다음과 같이 입력해보자 테스트 데이터를 읽고, 255로 나눠서 정규화(0~1) 시키는 건 MNIST 때와 똑같다. 다만, 정답값이 MNIST 에서는 0~9 였는데 Fashion MNIST 에서는 옷 종류다. 그래서 class_names 라는 리스트를 따로 만들어서 정해진 정답 숫자값이 무엇을 뜻하는지 알게끔 하자. 잘 입력받았는지 MNIST 때와 똑같은 방식으로 확인해보자 실행해보면 아래와 같이 결과가 잘 나온다. 다음 강의에서는 다층신경망(DNN)을 구성해서 실.......

[인공지능] Fashion MNIST(옷 인식) 2강 - DNN 과 CNN 구현 with Tensorflow(텐서플로우) [내부링크]

https://colab.research.google.com/?hl=ko Fashion MNIST(옷 인식) 문제를 먼저 기존 신경망(DNN) 방식으로 풀어보자. 그 다음에 CNN 방식으로 풀며 정확도를 높힐 것이다. 코랩에 들어가서 다음과 같이 작성하자! 128 노드가 있는 히든레이어 1층짜리 신경망이다. 실행하면 정확도가 다음과 같이 약 87% 나온다. 층을 더 깊게 하고 학습 횟수를 5회에서 20회로 늘려보자! 돌려보면 89% 로 약 2%p 정답률이 증가했다. 이제는 CNN 방식으로 바꿔서 돌려보자! 손글씨 MNIST 인식때와 논리를 똑같이 구성했다. 중간에 삽입된 model.summary() 코드는 현재 만들어진 신경망 모델 정보를 출력한다. 우리가 만든 CNN 은 다음과 같은 구조다. 아무.......

[인공지능] RL(강화학습) 1강 - 이론 [내부링크]

오늘은 RL(Reinforcement Learning), 강화학습을 알아보자! 보통 강화학습을 배우면 복잡한 수식이 난무하며 큰 그림을 이해하기 어렵다. 여기서는 강화학습의 핵심 아이디어만 설명하고 바로 예제로 넘어가도록 하겠다. https://becominghuman.ai/the-very-basics-of-reinforcement-learning-154f28a79071 환경(Environment)을 관찰(Observation) 하고, 보상(Reward)을 최대한 받을 수 있도록 행동(Action) 강화학습 기본논리는 한 장과 한 문장으로 요약 가능하다. 쥐가 미로에 던져졌다. 쥐는 미로에 대해 아무것도 모르지만, 치즈를 찾고자 한다. 쥐는 미로(Environment, 환경)을 유심히 관찰(Observation) 한 후, 행동(Action)한다. 미로가.......

[인공지능] RL(강화학습) 2강 - Frozen Lake with DQN 구현(1) [내부링크]

본격적으로 Frozen Lake 예제를 살펴보며 이론을 더 이해해보자. 우리가 탐험할(?) 호수는 다음과 같이 생겼다. 우리는 0칸인 start에서 시작해서 빙판이 깨진 5, 7, 11, 12 칸을 피하고 15칸인 goal 에 도달해야 한다. 일단 구글 코랩을 통해서 맵을 로딩해보자. 돌리면 다음과 같이 나온다 ( 랜덤이니 내가 돌린 결과와 다르게 나올 수 있다. ) 출력한 결과 그대로 읽으면 된다. 이 경우에는 출발지에서 Right 했다가 Down 해서 구멍에 빠졌다. 이 코드에서 중요한 함수는 다음과 같이 2개다. ㅁ action = env.action_space.sample() 랜덤으로 행동을 받는다. 행동은 동서남북이며 숫자 0~3 값을 돌려주는데 다음과 같이 매핑되어있다. ㅁ.......

[인공지능] RL(강화학습) 3강 - Frozen Lake with DQN 구현(2) [내부링크]

저번 강의 내용을 복습하자. 우리 목표는 해당 신경망에 FrozenLake의 현재 상태를 입력할 때, 최적의 행동을 출력하게 만드는 것이다. 그런데 MNIST 손글씨와 Fashion MNIST 경우와 달리 강화학습에서는 학습시킬 정답 데이터가 존재하지 않는다. 그렇다면 어떻게 강화학습에서 신경망을 학습시킬 수 있을까? 강화학습 1강 이론에서 살핀 식이 다시 나왔다. 이 식을 DQN 에 접목해보자. 우리가 설계한 신경망은 상태 S 를 넣었을 때, 각 액션의 보상값인 Q(S, A)를 리턴하는 것이다. 그렇다면 이 신경망을 어떻게 학습시킬 것인가? 혹시 식에 답이 있다는 것이 느껴지는가? 해당 식은 맨 좌측에 있는 괄호 식을 학습률에 따라 조금씩 반영시켜서.......

[인공지능] RL(강화학습) 4강 - Frozen Lake 8x8 with DQN 구현 [내부링크]

이제는 8x8 짜리 더 큰 맵에서 DQN 을 적용해보자! 푸는 논리는 똑같다. 다만 맵이 더 커졌으니 신경망을 더 깊게 구성하고 일부 변수를 수정했다. 전체 소스코드는 다음과 같다. 이번엔 리플레이 버퍼에 충분한 데이터를 쌓고 학습하도록 500번째 에피소드부터 Training 한다. 그리고 4x4 에서는 rewar에 별도의 값을 넣었는데 이번에는 모두 0으로 놓고 오로지 Goal에 도달할 때의 reward만을 믿고 돌렸다. 또한 언제까지 돌릴지 막연하여 만번까지로 에피소드를 늘렸다. 코드의 전체 논리는 4x4 때와 똑같으니 추가 설명은 생략하도록 하겠다. 돌려보면 다음과 같은 결과가 나온다. 에피소드 900번대까지 돌려도 갈피를 못 잡는 걸 볼 수 있다.......

[인공지능] RL(강화학습) 5강 -Carpole 준비 [내부링크]

오늘은 상태가 유한하지 않은 Cartpole을 강화학습 할 것이다. https://gym.openai.com/envs/CartPole-v1/ 카트폴은 쉽게 말해서 좌, 우 컨트롤만으로 연필을 떨어뜨리지 않게 최대한 버티는 문제다. 카트폴에서 환경요소는 총 4개(카트 위치, 카트 속도, 막대 각도, 막대 각속도) 이다. 앞서 다룬 FrozenLake 4x4 경우엔 상태가 16개로 딱 유한하게 정해졌다. 근데 카트폴 상태 가짓수는 사실상 무한하다고 볼 수 있다. 카트 위치만 해도 FrozenLake 처럼 딱딱 떨어지는 이산적인 값이 아니라 연속적인 값인데 속도와 각도는 더 말해 무엇하겠는가? 이런 상태가 무한한 문제에서는 전 강의에서 잠깐 다뤘던 배열로는 예상 보상값을 저장할 수 없.......

[인공지능] RL(강화학습) 6강 -Carpole 구현 with DQN [내부링크]

이제 본격적으로 Cartpole 을 DQN 으로 구현해보자! 지금까지 FrozenLake 4x4 와 8x8 을 풀면서 강화학습과 DQN 이론을 모두 다뤘으므로 자세한 설명은 생략한다. 전체 소스코드는 다음과 같다. FrozenLake 때와 논리가 완전히 같다. 다만, 다음과 같은 코드가 추가됐는데 이건 실제 학습이 제대로 됐는지 시각적으로 확인하려고 신경망을 파일 형태로 저장한다. 이제 실행해보자. 초반 에피소드에는 100 이상도 못 버틴다. 계속 학습해보자. 후반부에는 200까지 버티는 모습을 볼 수 있다. * Cartpole 자체가 200 이상 버티면 자동으로 종료하게 되어 있어 얼마나 더 버티는지는 확인 불가 모든 학습이 끝나면 코랩에 다음과 같은 파일이 생성된.......

[ Webhacking.kr] 22번 (BLIND SQL INJECTION&패스워드 암호화) [내부링크]

https://webhacking.kr/challenge/bonus-2/ admin으로 로그인하는 문제입니다. 비밀번호를 알아내야겠군요 Join을 통해서 아이디 test, 비번 1로 가입 후 로그인해봅시다. hash 값이 나온 것을 보니 비밀번호를 해시함수에 돌린 후에 저장하는 것 같습니다. 해시함수로 저장된 비밀번호를 알아내려면 레인보우 테이블을 이용하는 수밖에 없습니다. https://crackstation.net/ 인터넷 사이트를 통해 해당 해시값을 한번 돌려봅시다. 해시타입이 md5 이라는 것과 비밀번호 해시 전에 뒤에 apple 이라는 단어를 추가해서 솔트치는 것을 알 수 있습니다. 그러면 이제 BLIND SQL INJECTION을 통해서 admin 비밀번호의 해시값을 알아봅시다. 질의문이 정.......

[ Webhacking.kr] 4번 (레인보우 테이블) [내부링크]

https://webhacking.kr/challenge/web-04/ 해시값이 제시되었고, 이에 맞는 원본 값을 입력하면 풀 수 있는 문제입니다. 근데 SHA1 방식의 해시함수를 무려 500번이나 돌려서 나온 값이 출력되고 있습니다. 일반 웹사이트에서 제공하는 레인보우 테이블를 사용할 수 없게끔 한 것이니... 우리가 직접 레인보우 테이블을 만드는 수밖에 없습니다 ㅡㅡ 파이썬으로 위와 같이 작성한 후, 신나게 돌려봅시다. 그런데... 25% 정도 진행해도 용량이 무지막지하게 커졌습니다. 저는 여기서 파일출력을 멈추고, 새로고침 신공으로 1/4의 확률 때려맞추기로 방향을 바꿨습니다. 때려맞추기를 하다보면 아래와 같이 운이 좋은 상황이 나올 겁니다. 그러면 번.......

제16회 정보보안기사 필기 후기 [내부링크]

이런저런 이유로 보안이나 컴퓨터 네트워크 쪽을 제대로 공부할 기회가 없었다. 그래서 정보보안기사 자격증을 취득하면 좋겠다는 생각이 들어 시험을 응시했다. 원래 9월 중순 정도에 보기로 되어있던 시험이 코로나 때문에 11월까지 연기되어 공부하는 흐름을 유지하는 것이 어려웠다. 책은 시중에 나와있는 유명한 것들로 준비했는데, 필기는 아무 책이나 붙잡고 공부해도 될 것 같다. 근데 예상 외로 수험서에서는 보지 못했던 개념들이 좀 많이 나와서 당황스럽긴 했는데(시스템보안은 문제지만 대략적으로 살펴보고는 생소한 게 많아서 과락하는 줄 알았다), 상식적인 선상에서 생각해서 풀었더니 많이 틀리진 않은 것 같다. 이제 문제는 실.......

『어쌔신 크리드 : 오디세이』 리뷰 [내부링크]

방구석 그리스신화 여행 패키지 ( ) 1. 스토리() 위쳐 3와 같이, 각 퀘스트마다 선택지를 어떻게 선택하는지에 따라 엔딩이 달라질 수 있게 만들었다. 개인적으로 이 방식은 별로인데 왜냐면 위쳐 3에서 가장 최악의 엔딩을 본 후에 내가 선택한 고작 자그마한 것들이 이런 엔딩을 만들었다는 것에 큰 충격(?)을 받았기 때문이다. 특히 오디세이의 메인퀘스트가 이런 시스템을 그대로 차용했는데, 난 이러한 사실을 전혀 모르고 플레이했다. 근데 다행히도 가장 좋은 엔딩을 봐서 기분이 위쳐 3 때와는 사뭇 달랐다. 나중에 찾아보니까 불행한 엔딩들이 많았는데 아마 이 엔딩을 봤더라면 스토리 평점을 한 단계 더 낮췄을지도.......

『포켓몬스터 레츠고! 피카츄』 리뷰 [내부링크]

반복하는 명작의 재미 ( ) 포켓몬스터가 유명하긴 하지만, 애니메이션만 봐서 언젠가 게임을 직접 해봐야겠다고 생각했었다. 마침 닌텐도 스위치를 가지고 있었던터라, 1세대 포켓몬스터 게임인 레드/그린을 바탕으로 리메이크한 레츠고 피카츄를 플레이해봤다. 1. 스토리() 포켓몬스터 시리즈에 큰 스토리는 항상 같은 것 같다. 체육관 열심히 돌아다니며 악의 무리를 응징하고, 여행의 마지막엔 초고수 트레이너와 맞붙어 승리하는 것이다. 플롯 자체는 굉장히 단순하지만, 관동지방이라는 곳을 여기저기 탐험하는 느낌이 강하므로 이런 단점이 어느정도 상쇄되는? 느낌이다. 2. 게임성() 포켓몬스터의 가장 큰 특징은.......

죄와 벌 [내부링크]

초인을 꿈꾼 한 청년이 기독교적 구원을 받는 이야기 도스토옙스키는 『죄와 벌』 『백치』 『악령』 『미성년』 『카라마조프가의 형제들』 5개 장편소설을 집필했다. 나는 『죄와 벌』 을 읽기 전, 『카라마조프가의 형제들』 과 『악령』 을 읽었다. 도스토예프스키 소설에 나오는 대부분 인물은 어느 정도 맛이 가 있어(...) 인물의 행동을 이해하기 쉽지 않다. 때문에 『카라마조프가의 형제들』 은 거의 2개월간 읽었고, 『악령』 은 1개월간 읽었다. 그래서 『죄와 벌』 을 읽기 시작했을 때, 최소 한 달은 걸리겠다 싶었다. 그런데 웬걸, 다 읽는 데 일주일도 안 걸렸다. 내 생각 이상으로 흡입력이 있는 소설인 것이다. 그리고 깨달았다.......

선을 묻는 이에게 [내부링크]

평소 불교에 관심이 많아서 기독교의 성경 같은 불교책을 읽고 싶었다. 그러다가 책을 선물받았는데, 그 중 하나가 『선을 묻는 이에게』 이다. 불교의 심오한 교리를 자세히 알진 못한다. 하지만 교종과 선종은 어렴풋이 알고 있었다. 교종은 경전 중심의 수행방법을 말하고, 선종은 마음과 깨달음 중심의 수행방법을 뜻한다. 『선을 묻는 이에게』 를 거칠게 요약하면, 선종의 수행방법을 따르라는 지침서이다. 글은 결국 사람이 만든 것이니, 마음의 깨달음을 글로 옮기는 순간 왜곡이 발생한다. 그래서 경전에 의존하지 말고, 먼저 마음의 깨달음을 얻어 자신만의 수행기준을 명확히 세워야 한다는 것이다. 내가 좋아하는 드니 발뇌브 감독의.......

[인공지능] MNIST(손글씨 인식) 4강 - CNN 이론 [내부링크]

오늘은 CNN 기법을 알아보자! CNN은 이미지 딥러닝에 좋은 성능을 낸다. 왜 그럴까? 3강에서 살펴본 신경망을 복습해보자. 저번 시간에는 한 칸에 픽셀값(0~255)이 들어있는 2차원 행렬 28 x 28 값을 1차원 행렬 784로 펴서 Input 레이어에 넣었다. 그런데 이렇게 2차원짜리 값을 1차원으로 단순하게 피게 되면 사진 고유의 특징이 뭉게진다는 단점이 있다. CNN의 핵심은 2차원 사진값의 특징을 최대한 뽑아내고 정제한 후에 1차원으로 피는 것이다. 기존 과정(CLASSIFICATION, 3강에서 했던 신경망 학습) 전에 FEATURE LEARNING 으로 사진 특징을 뽑는다. 특징을 뽑는 건 크게 CONVOLUTION 과정과 POOLING 과정이 있으며, 이 두 연산을 계속 반.......

[인공지능] MNIST(손글씨 인식) 5강 - CNN 구현 with Tensorflow(텐서플로우) [내부링크]

https://colab.research.google.com/?hl=ko 구글 코랩에 들어가자! CNN은 기존 3강에서 구현한 신경망에서 사진 특징을 추출하는 층이 추가됐다. 전체 코드에서 층을 추가한 부분만 설명하고, 나머지 설명은 3강을 참고하면 되겠다. 뭔가 조금 복잡해졌다. 3강 코드와 비교해서 변한 부분만 살펴보자. 차원을 하나 더 추가했다. 지금까지 한 픽셀의 값만(0~255) 있다고 알았는데 이건 흑백사진일 때만 그렇다. 원래는 3채널(R, G, B) 라고 해서 한 픽셀은 3개의 값을 가지고 있어야 비로소 컬러 사진을 표현할 수 있다. 근데 우리의 손글씨 데이터는 흑백사진이니까 채널을 1개 확장한 것뿐이다. 사실상 달라지는 건 없다. 사진 특징을 추출.......

[채팅앱 만들기 10편] 데이터베이스 연동 로그인(Mysql) [내부링크]

9편에서 Mysql을 연동해서 데이터베이스를 만들었으니, 이제 실제 로그인이 가능하도록 작성할 수 있습니다. 이제 클라이언트 쪽에서 "로그인" 버튼을 누르면 아래와 같이 입력한 아이디와 비밀번호를 서버로 전송한 후, 실제 회원가입을 했는지 여부파악을 기다리게 됩니다. 서버에서는 LOG 형 메시지를 받게 되는데, 이를 토대로 데이터베이스에 실제 존재하는지 확인합니다. 회원가입이 되어있는 상황이라면 ACK 타입 메시지를 전송합니다. 이 메시지를 받은 클라이언트는 비로소 채팅창으로 입장할 수 있게 됩니다. 이제 실제 동작하는지 확인해봅시다. 데이터베이스에는 아이디 김철수, 비밀번호 1234 로 하나의 회원만 담겨있는.......

[ Webhacking.kr] 1번 ( 쿠키 변조 ) [내부링크]

https://webhacking.kr/challenge/web-01/ 쿠키값이 5 이상, 6이하여야 solve 함수를 호출함을 알 수 있다. 쿠키값을 변조하려면 별도의 플러그 설치가 필요하지만, 그냥 구글 크롬에서 F12 - Application - cookies 통해서 수정해도 통과된다(?!)

[ Webhacking.kr] 7번 ( SQL INJECTION ) [내부링크]

https://webhacking.kr/challenge/web-07/ 쿼리의 결과값인 $data[0]의 값이 2가 나와야 해결된다. 그러면 GET 방식으로 전달되는 $val 의 값이 2가 되면 될텐데, 정규표현식(Preg_match)로 2를 쓰는 게 막혀있다. 그러면 Mysql의 수학 내장함수 중 제곱근 값을 돌려주는 SQRT를 사용해서, 2를 SQRT(4)로 표현하자. query error 라니... 애시당초 테이블에 lv 값이 2인 튜플은 없었던 것이다... 그렇다면 SQL Injection으로 풀이 방향을 잡고, NULL 인 테이블에다 2 값을 가지는 테이블을 UNION 해주자. SQRT(4))UNION(SELECT(SQRT(4)) 앞서 봤듯 lv=2 인 쿼리는 NULL 값을 만들어낸다. 거기에 UNION으로 튜플 값이 2인 걸 합친다. 띄어쓰기.......

[ Webhacking.kr] 11번 ( 정규표현식 ) [내부링크]

https://webhacking.kr/challenge/code-2/ $pat 에 맞는 값을 get 방식으로 val 에 담아 보내면 문제를 풀 수 있는 구조다. 여기서 $SERVER[REMOTE_ADDR]은 IP 주소 값인데, 아래의 링크를 통해 본인의 공개 IP 주소를 알 수 있다. https://ko.infobyip.com/ 여기서는 그냥 1.1.1.1 로 가정하자. 그럼 해당 패턴이 어떤지 확인해야 하는데, 아래의 사이트로 쉽게 분석해볼 수 있다. https://regex101.com/ 윗 칸에는 패턴양식을 넣고, 아래 칸에는 입력한 값이 패턴양식을 충족하는지 알려준다. 여기서는 다음과 같이 작성한 값이 패턴양식을 충족함을 알 수 있다. 1aaaaa_1.1.1.1 p a s s p, a, s, s, 사이에는 모두 tab 이 들어가 있다. 아무튼.......

[ Webhacking.kr] 14번 ( 자바스크립트 ) [내부링크]

https://webhacking.kr/challenge/js-1/ 아무것도 없이 빈칸과 버튼만 존재한다. 페이지를 오른쪽 클릭 후 소스를 확인해보자. 버튼을 클릭하면, Javascript로 짜여진 ck 함수를 실행함을 알 수 있다. ul 에 해당하는 값을 빈칸에 넣어주면, location.href 에 의해 어딘가로 이동함을 알 수 있다. 손으로 계산할 필요도 없이, 바로 F12 를 눌러서 콘솔창을 띄우고 값을 구해보자. 구한 값 18에 30을 곱한 값인 540 을 입력하면 페이지가 이동되면서 문제가 풀린다!

[ Webhacking.kr] 16번 ( 자바스크립트 ) [내부링크]

https://webhacking.kr/challenge/js-3/ 뜬금없이 별이 그려져있다. 페이지를 오른쪽 클릭해서 소스코드를 확인해보자 이것저것 써져 있는데, cd=124 인 경우에 location.href 를 통해서 페이지를 이동함을 알 수 있다. 굳이 코드 보고 해당 if문을 실행시키려 하지 말고 바로 F12 콘솔창에다가 실행해보자! 그대로 실행하면 페이지가 이동하면서 허무하게(?) 문제가 풀린다.

[ Webhacking.kr] 18번 ( SQL INJECTION ) [내부링크]

https://webhacking.kr/challenge/web-32/ 문제 제목부터가 SQL INJECTION 이다. 소스코드를 바로 확인해보자. $result['id'] 의 값이 admin이면 문제를 풀 수 있고, 주석으로부터 no = 2 를 만들어야 함을 알 수 있다. 그렇다면 $_GET[no] 에 2 or no=2 정도로 넣으면 문제가 풀릴 것 같은데... 문제는 정규패턴매칭을 통해서 스페이스를 걸러낸다는 점이다. 따라서 1과 or, or와 no 사이에 있는 공백을 매꿔줘야 한다. SQL INJECTION 시 공백을 매꾸는 방법들은 다양한데, 여기서는 TAB 의 아스키코드인 %09 를 사용하겠다. 즉, 답은 2%09or%09no=2 가 된다!

[ Webhacking.kr] 20번 ( 자바스크립트 ) [내부링크]

https://webhacking.kr/challenge/code-4/ 2초 안에 칸을 채우고 제출하라는 문제인 것 같습니다. 페이지 오른쪽 클릭 후 소스코드를 봅시다. 함수 ck()을 보면, 채워야 할 변수들이 다 나와있습니다. 이를 토대로 다음과 같은 코드를 준비하고, F12로 콘솔을 연 다음 새로고침 후 재빠르게 복붙해서 실행합시다. 그러면 2초 안에 값들을 넣고 제출이 가능해집니다.

[ Webhacking.kr] 21번 ( Blind SQL INJECTION ) [내부링크]

https://webhacking.kr/challenge/bonus-1/ 대놓고 BLIND SQL INJECTION 이라고 적혀있습니다. 참, 거짓만을 이용해서 데이터베이스 정보를 탈취해봅시다. id 에다가 ' OR 1=1# 을 입력하면, Result에 Wrong Password 라고 출력됩니다. 반대로 ' OR 1=2# 을 입력하면, Login Fail 이 뜹니다. 즉, OR 뒷부분의 쿼리가 참이면 Wrong, 거짓이면 Login 이 출력됨을 알 수 있습니다. 목표는 admin 아이디로 로그인 하는 것이므로, 이에 맞는 비밀번호를 찾는 것이 필요합니다. 원래는 비밀번호를 담고 있는 애트리뷰트(속성) 값을 알아야 하는데... pw 라고 적혀 있으니 그대로 입력해서 확인해봅시다. ' OR pw IS NOT NULL#.......

[ Webhacking.kr] 8번 (SQL INJECTION&피들러) [내부링크]

https://webhacking.kr/challenge/web-08/ 코드를 바로 봅시다. $result = mysqli_query($db,"select id from chall8 where agent='".addslashes($_SERVER['HTTP_USER_AGENT'])."'"); 의 쿼리값이 admin을 리턴하도록 하면 됩니다. 근데 밑에 INSERT 쿼리를 보면 id가 무조건 guest 로만 설정되어 있는데... SQL INJECTION을 통해서 INSERT 문을 변경합시다. $agent의 값을 answer','{$ip}','admin')# 으로 넣으면 INSERT 문을 통해 id값이 admin인 튜플을 삽입할 수 있습니다. 그 후에 $agent를 answer 로 날려주면 SELECT 문이 admin을 출력할 겁니다. 피들러(Fid.......

RSA 이론 및 실습 with Java [내부링크]

RSA의 이론과 실습을 진행해보자. RSA는 DES, AES와 다르게 비대칭키 특성을 가지고 있다. DES, AES는 암호화할 때 사용하는 키와 복호화할 때 사용하는 키가 모두 하나로 동일했다. 그러나, 비대칭키의 경우엔 암호화때 사용하는 키와 복호화할 때 사용하는 키가 다르다! 그리고 암호화할 때 사용하는 키를 모든 사람들에게 공개하는데, 이를 공개키라고 부른다. 또, 복호화할 때 사용하는 키는 개인만이 가지고 있는데, 이를 개인키라고 부른다. 예를 들어 A가 B에게 암호문을 보낸다고 가정해보자. 그러면 A는 평문을 B의 공개키로 암호화한다. B의 공개키는 말 그대로 공개되어있기 때문에 누구나 B의 공개키로 암호화하는 것이 가능하다. 하.......

[채팅앱 만들기 1편] 환경설정 [내부링크]

카카오톡이나 네이트온 같은 채팅 프로그램을 만들어보자! 윈도우에서 동작하게 만들 것이고 C#을 토대로 코드를 작성해볼 것이다. 채팅앱의 핵심적인 원리는 모두 동일하니, 다른 언어로도 충분히 작성할 수 있을 것이다. 먼저 개발할 환경을 마련하자. 최신 비주얼 스튜디오 커뮤니티를 (Visual Studio Community 19) 설치해준다. https://visualstudio.microsoft.com/ko/?rr=https%3A%2F%2Fsearch.naver.com%2Fsearch.naver%3Fsm%3Dtop_hty%26fbm%3D1%26ie%3Dutf8%26query%3D%25EB%25B9%2584%25EC%25A3%25BC%25EC%2596%25BC%2B%25EC%258A%25A4%25ED%258A%259C%25EB%2594%2594%25EC%2598%25A4 그리고 ".Net 데스크톱 개발" 을 설.......

[채팅앱 만들기 2편] 서버-클라이언트 [내부링크]

1편에서 만든 GUI 윈도우 폼을 기반으로 여러 명이 참여해서 채팅하는 방을 만들도록 합시다. 이를 구현하기 위해서는 기본적인 TCP 및 쓰레드에 대한 개념을 알고 있어야 합니다. 여기서는 구체적인 이론을 생략하는 대신, 앱 구현에 필요한 개념들만 간략하게 다루고 넘어갈 겁니다. 1편에서 만든 폼은 클라이언트들을 위한 겁니다. 클라이언트들이 쓴 채팅내용들을 받고, 이를 다른 클라이언트들에게 전파해줄 수 있는 서버 프로세스가 별도로 필요합니다. 서버는 특별한 GUI가 사실상 필요없기 때문에 비주얼스튜디오를 통해서 적당한 C# 프로젝트를 하나 만들고 다음과 같이 코드를 작성합니다. 차근차근 Main 함수부터 흐름을 간단하게 봅.......

[채팅앱 만들기 3편] 로그인 화면 [내부링크]

2편으로 클라이언트들끼리 데이터를 주고 받을 수 있게 되었지만, 부족한 점이 많습니다. 이번에는 다른 채팅앱처럼 로그인화면을 통해 서버에 접속해보도록 하겠습니다. 저번에 만든 클라이언트쪽 프로젝트로 들어가 Ctrl + Shift + A 를 누르고, 양식(Window Forms) 를 클릭해서 윈폼을 하나 추가합시다. 그리고 다음과 같이 꾸며줍니다. 통상적으로는 회원가입도 가능하고 가입한 아이디와 비밀번호를 토대로 로그인을 하는 게 정상입니다. 해당 기능은 나중에 구체적으로 구현하기로 하고, 여기서는 단순히 사용자가 원하는 아이디명을 입력한 후 로그인을 하면 채팅창으로 들어올 수 있도록 간단하게 구현했습니다. 로그인 버튼을 클릭하게.......

[채팅앱 만들기 4편] 대화 참여자 표시 [내부링크]

단톡방을 보면 여러 명의 사람들이 한 방에 초대되어 있습니다. 방에 누가 들어와있는지, 대화 참여자들을 표시하는 기능을 추가해보겠습니다. 다음과 같이 폼을 수정해봅시다. 대화 참여자에는 현재 대화방에 있는 사람들의 ID를 표시하게 됩니다. 이를 구현하기 위해서는 소켓 통신방법을 수정할 필요가 있습니다. 왜냐하면, 지금까지 소켓통신은 온전히 대화내용을 전달하는데 사용했기 때문입니다. 다른 클라이언트가 방에 들어오면 서버는 이를 탐지해야 하고, 이 탐지한 내용을 방인원들에게 모두 공지를 해야 합니다. 공지를 받은 클라이언트들은 해당 내용을 대화 참여자 텍스트 안에 표시해야 하죠. 그런데 클라이언트들은 서버로부터 받.......

[채팅앱 만들기 5편] 대기실 구현 [내부링크]

보통 채팅앱은 로그인하면 바로 대화방으로 들어가는 것이 아니고, 대화방들의 목록을 보여주면서 사용자에게 특정 방에 들어갈 수 있도록 제공을 해줍니다. 이렇게 현재 들어갈 수 있는 방들의 목록을 보여주고, 또 방을 만들 수 있는 대기실을 구현해봅시다. 클라이언트단에서 윈폼을 다음과 같이 하나 만들어줍니다. 오늘 포스트는 채팅방 목록에서 하나를 선택한 후, 입장 버튼을 누르면 채팅방으로 입장할 수 있는 기능을 구현합니다. 그러기 위해서 서버단에 채팅방 그 자체를 하나의 클래스로 선언하고 각종 메소드들을 다음과 같이 구현합니다. 하나의 채팅방에는 최대 5명이 들어올 수 있고, 그 5명 각각의 클라이언트들은 ClientHandle.......

[채팅앱 만들기 6편] 채팅방 입퇴장 [내부링크]

지금까지 대기실에서 특정 채팅방으로 입장하는 것을 구현했습니다. 이제 입장한 채팅방에서 나가는 것을 구현하겠습니다. 방에서 나간다면 그 안에 남아있는 다른 클라이언트들에게 해당 사실을 알리고, 채팅방에 있는 클라이언트 목록을 갱신해야 합니다. 먼저 서버쪽 소스코드입니다. 메인소스인 Program.cs는 수정할 것이 없습니다. 그 다음엔 채팅방을 하나의 클래스로 구현한 ChatRoom.cs 입니다. 채팅창에 있는 사람들을 관리하기 쉽게 리스트 타입으로 바꿨습니다. 그리고 Boolean 배열을 도입해서, 클라이언트 핸들러를 할당하는 데 씁니다. 특정 불린 배열의 값이 false 인 경우에는 그 인덱스의 클라이언트 핸들러는 아직 사용하지 않.......

[채팅앱 만들기 7편] 방 만들기 & 소켓 통신 [내부링크]

이제 사용자가 방을 만드는 기능을 구현합니다. 폼을 아래와 같이 하나 만들어주고, 코드를 작성합니다. 방에 대한 기본적인 내용들을 입력 받은 후, 만들기 버튼을 누르면 서버로 CNR 타입 메시지를 보냅니다. 그리고 저번 포스트에서 설명했던 방식대로 visible 변수를 이용해서 본인이 만든 방으로 바로 진입합니다. 이 타입의 메시지를 받은 서버는 현재 채팅 프로그램에 접속한 모든 클라이언트에게 새로운 방이 만들어졌다는 것을 브로드캐스트합니다. 서버 코드는 아래와 같습니다. 새로운 방에 대한 정보를 담아서 CRL 타입으로 모든 클라이언트에게 전파합니다. 해당 메시지를 받은 클라이언트들은 이 데이터를 대기실의 방 리스트에 반.......

[채팅앱 만들기 8편] 새로고침 [내부링크]

이제 새로고침 버튼을 구현합시다. 버튼을 누르면 현재 목록을 모두 초기화시키고 최신 상태의 채팅방 목록을 프린트하기 위해 서버에 RFR 라는 새로운 타입의 메시지를 보냅니다. 서버는 해당 메시지를 받게 되면 다음과 같은 메소드를 호출합니다. 현존하는 모든 채팅창 인스턴스를 FOR 문으로 돌아보면서 관련된 정보들을 클라이언트에게 CRL 타입 메시지를 보냅니다. CRL 타입을 받은 클라이언트는 전에 구현한대로 채팅방 목록을 하나씩 채워나가게됩니다. 바로 테스트해봅시다. 철수와 영희가 메신저에 접속한 후, 새로운 방을 하나 만들어서 둘 다 방에 들어왔습니다. 아직 둘 다 새로고침 버튼을 누르지 않아서 인원수가 최신 데이터인 2.......

[채팅앱 만들기 9편] 데이터베이스 연동 회원가입 (Mysql) [내부링크]

이제 Mysql을 연동해서 회원가입을 받아봅시다. 최신 Mysql을 설치하고, 워크벤치를 통해 다음과 같이 간단한 데이터베이스를 하나 만듭시다. 클라이언트의 아이디와 패스워드 속성을 저장하고 있는 Client 테이블입니다. 이렇게 만든 데이터베이스에서 C# 코드를 통해 데이터에 접근할 수 있습니다. 그러기 위해서는 "프로젝트 -> COM 참조 추가"를 통해 Mysql.Data.dll 을 프로젝트에 추가해야 합니다. 아래와 같이 참조 관리자 창에 들어간 다음, Mysql이 설치된 폴더로 들어가보면 해당 파일을 찾을 수 있습니다. ( 저 같은 경우에는 C:\Program Files (x86)\MySQL\Connector NET 8.0\Assemblies\v4.5.2 에 있었습니다. ) dll 파.......

[GNS3 실습 6편] PAT [내부링크]

하나의 공인 아이피로 여러 개의 사설 아이피를 쓸 수 있게 해주는 PAT을 실습해보자! 오늘날 집에서 쓰는 공유기의 기본적인 원리라고 볼 수 있다. 모두 기본적인 통신은 될 수 있도록 세팅하자. ( 전 포스팅 참고 ) 그리고 R1에 접속하여 아래와 같이 세팅하자 1. access-list 10 permit 192.168.10.0 0.0.0.255 ACL 문법을 준수하여 사설 아이피 대역대를 permit 한다. 정책넘버는 아무거나 한다 ( 필자는 10 ) 2. ip nat pool A 100.100.100.1 100.100.100.1 netmask 255.255.255.0 공인 아이피인 100.100.100.1 을 쓰겠다고 선언한다. 이름은 아무거나 한다 ( 필자는 A ) 3. ip nat inside source list 10 pool A overload 1번과 2번을 하나.......

[GNS3 실습 7편] DHCP [내부링크]

동적으로 IP를 빌리는 DHCP를 실습해보자! 지금까진 각 PC에서 일일이 IP를 설정했지만, 여기선 R1 라우터가 DHCP 서버로써 각 PC에 IP를 자동으로 뿌려줄 것이다. 뿌려줄 대역대는 192.168.10.0/24 대역대이다. 바로 R1 라우터에 접속하여 아래와 같이 한다. 그리고 바로 "show ip dhcp pool"을 통해 확인해보면 PC들이 알아서 IP를 할당받음을 알 수 있다. 이는 기본적으로 PC들이 DHCP를 통해서 IP를 할당받는 걸로 설정되어있기 때문이다. Leased addresses가 3이고, Current index가 .5 이니 게이트웨이 .1을 제외한 .2, .3, .4가 각 PC에 배정되었음을 R1을 통해서라도 확인할 수 있다. 각 PC를 통해서도 확인해보자. 당연하게도.......

[GNS3 실습 8편] 외부 인터넷 [내부링크]

GNS3 상에서 실제 외부 인터넷으로 연결할 수 있도록 해보자. GNS3 상의 클라우드를 하나 끌어다 놓은 후, 이더넷 선에다가 라우터선을 연결하면 된다. 그 후엔 실제 지금 쓰고 있는 PC의 cmd 창으로 가서 ipconfig를 통해 이더넷의 아이피와 라우터를 알아낸다. 이건 개인 환경마다 모두 다르니 각자 확인해보자. 그리고 바로 R1에 접속해서 다음과 같이 한다. 이렇게만 셋팅하면 R1에서 외부 아이피로 핑이 바로 나간다. 대표적인 구글 DNS 서버인 8.8.8.8로 핑을 날려보자. 잘 날라갈 것이다. 하지만 우린 가상 PC 3대가 외부 인터넷과 연결되길 바란다. 이를 위해서는 기본적인 10.10.10.0 대역의 IP 세팅이 필요하다. 정적으로 일일이 해도.......

DES(Data Encryption Standard) 암호 이론 [내부링크]

DES의 이론을 구체적으로 살펴봅시다. 암호화 순서는 다음과 같이 진행됩니다. 1. 평문을 64비트 블록으로 자르고, 이 블록을 각각 암호화합니다. * 예를 들어 128비트짜리 평문은 64비트짜리 2개 블록으로 나뉘게 되고, 암호화는 블록당 한 번씩 하게 됩니다. 2. 64비트짜리 한 블록은 32비트짜리 두 개의 작은 블록으로 나눕니다. ( 각각 L, R로 명명 ) 3. L R를 초기 순열박스에 집어넣고, L0 R0를 얻습니다. 4. L0, R0를 시작으로 16번의 암호화 라운드를 돌립니다. 그 과정은 다음과 같은 수식으로 표현됩니다. 여기서 K는 키값인데 56비트짜리 대표키 하나를 선정한 후, 이를 가공해서 48비트짜리 16개의 서브키(K0, K1, ... K15) 를 만들.......

DES 실습 with Java [내부링크]

자바로 DES를 짜보도록 하자! 처음부터 끝까지 외부 모듈을 쓰지 않고 짤 수 있지만 극심한 스트레스를 겪을 수 있으므로 외부 모듈을 적극 사용하자. https://docs.oracle.com/javase/7/docs/api/javax/crypto/Cipher.html 여기선 내장되어 있는 javax.cryto를 사용해서 DES를 짜볼 것이다. 코드 자체도 길지 않을 뿐더러, 암호화하는 핵심적인 코드는 단 몇줄로 끝나린다. 세부 설명은 아래와 같다. 복호화도 매우 간단하다. Cipher 인스턴스를 하나 더 설정한 후에, 이번에는 복호화 모드로 init 해주면 된다. 실행해보면 다음과 같이 결과가 잘 나온다. 이는 저번 포스트에서 일일이 암호화과정을 따라해가며 했던 값과 정확하게 일치한다. 이.......

AES(Advanced Encryption Standard) 이론 [내부링크]

AES의 이론에 대해 공부해보자! https://www.researchgate.net/publication/317615794_Advanced_Encryption_Standard_AES_Algorithm_to_Encrypt_and_Decrypt_Data https://www.youtube.com/watch?v=gP4PqVGudtg 위의 글과 영상에 상당히 자세하게 AES의 동작원리가 담겨있으므로, 이 글을 기준으로 하나씩 뜯어보자. AES는 키의 크기에 따라 AES-128, AES-196, AES-256 3가지로 분류되는데 각각의 원리는 모두 같을 뿐 세부적인 키 값이나 라운드의 수가 다를 뿐이다. 여기서는 AES-128 을 기준으로 다뤄보도록 하겠다. 일단 AES-128(이하 AES)은 128비트의 Plain Text를 받아 암호화를 진행하며, 키 값도 128비트로 이루어져있다. 그리고 D.......

AES 실습 with Java [내부링크]

AES를 Java로 구현해보자! DES 때처럼 전체를 구현하지 않고, 모듈을 이용할 것이다. DES 때보다 코드가 더 짧아졌고, 암호화 핵심코드는 다음과 같다. 복호화 코드는 더 짧다. 실행하면 다음과 같이 잘 작동한다.

블록암호 운영방식( block cipher modes of operation ) 이론 [내부링크]

DES, AES 같은 블록암호 자체도 필요하지만, 이를 이용해서 다양한 방식으로 평문을 암호화할 수 있는 방법들이 있는데 이를 블록암호 운영방식이라고 한다. https://ko.wikipedia.org/wiki/%EB%B8%94%EB%A1%9D_%EC%95%94%ED%98%B8_%EC%9A%B4%EC%9A%A9_%EB%B0%A9%EC%8B%9D 이는 크게 5가지로 다음과 같이 나눌 수 있다. - 전자 코드북(electronic codebook, ECB) - 암호 블록 체인 (cipher-block chaining, CBC) - 암호 피드백(cipher feedback, CFB) - 출력 피드백(output feedback, OFB) - 카운터(Counter, CTR) 각각의 운영모드에 따른 특징들은 인터넷에 많이 실려있으니, 여기서는 왜 그런지 그 이유를 논리적으로 따져보기로 하자. 그 전에.......

[GNS3 실습 1편] ARP(Address Resolution Protocol) [내부링크]

아주 간단한 ARP 실습을 위한 GNS3 환경구축! 각각 취향에 맞게 주소 설정 후, PC1에서 PC2로 핑을 보내보자! Wireshark를 통해 ARP 패킷이 날라감을 알 수 있으며, ping 종료 후 arp 테이블이 PC1, PC2 각각 갱신되었음을 알 수 있다! 스위치 내에 MAC 테이블도 같이 보면 좋을텐데, 추가적인 구성 없이는 에뮬이 안되서 나중에 해봐야겠다.

[GNS3 실습 2편] RIPv2(Routing Information Protocol version 2) [내부링크]

라우팅 테이블을 유지하는 방법 중 하나인 RIPv2 실습을 해보자! 구성환경은 아래와 같다. PC는 각각 아래와 같이 설정해준다 잘 셋팅되었는지는 "ifconfig"와 "route" 명령어로 확인 그리고 R1, R2에 콘솔로 접속하여 다음과 같이 세팅합니다. 이렇게 되면 PC에서 각 라우터까지 패킷을 전달할 수 있게 됩니다. 문제는 PC1과 PC2가 서로 패킷을 주고 받을 수 있도록 라우팅을 지원하는 겁니다. 나머지 시리얼 포트들에도 IP를 할당한 후, show ip route 실행 시 인접한 라우터의 IP 대역만 등록되어 있음을 알 수 있다. 이제 각 라우터마다 다음과 같이 RIPv2를 세팅하자. network 명령어를 통해 인접한 네트워크 대역대를.......

[GNS3 실습 3편] EIGRP [내부링크]

RIP 의 업그레이드 버전인 EIGRP 를 실습해보자. EIGRP도 RIP와 같이 동적 라우팅 프로토콜이다. 하지만 메트릭 계산 시, 홉수만 고려하지 않고 다양한 인자들을 반영한다. 또한, 같은 네이버(neighbor) 상태인 라우터끼리만 정보를 공유하며 테이블에 변화가 생겼을 때에만 이웃에게 정보를 공유한다. 그 외 여러 가지 특징들이 있지만 생략하고 실습을 진행! 환경에 맞는 기본적인 IP 셋팅을 진행한다. 그리고 각 라우터의 콘솔로 진입해 다음과 같이 입력하자. 와일드마스크는, 실제 마스크의 보수값을 취한다. 위 환경에서는 255.255.255.0의 보수인 0.0.0.255 이다. 위의 설정을 R1에서 해본다면 다음과 같다 3개의 라우터를 셋팅하고 &quot.......

[GNS3 실습 4편] OSPF [내부링크]

동적 라우팅 방법 중 하나인 OSPF 실습! EIGRP와 마찬가지로, 네이버끼리 라우팅 정보를 공유한다. 특이한 점은 Area를 설정하는 것인데, 같은 Area 끼리만 정보를 공유하도록 설정할 수도 있다. RIP와 다르게 모든 라우터의 정보를 수집해서 다익스트라 알고리즘으로 최단거리 계산을 하는데 이를 링크-상태 유지라고 한다. 기본적인 IP 설정을 모두 마친 후, 라우터에 진입하여 다음과 같이 설정한다. 설정이 완료되면 인접한 라우터끼리 뭔 정보를 주고 받았다는 게 나타난다. 각각의 라우터 테이블을 확인해보고 잘 연결되었는지 보자. IA는 외부 에어리어에서 정보를 받았다는 표시이다.

[GNS3 실습 5편] ACL [내부링크]

보안을 위해 특정 조건을 만족하는 패킷들의 이동에 제약을 가하는 ACL을 실습해보자! 환경은 다음과 같다. R2를 외부 인터넷이라 가정하고, R1에 포함된 내부 네트워크를 방어하는 것이 목표다. 그러기 위해선 R1 라우터에 접속하여 여러 가지 ACL 정책들을 적용하면 된다. 그 전에 서로 통신할 수 있도록 기본적인 셋팅을 해주자 R1과 R2는 직접적으로 연결되어 있으므로, RIPv2나 OSPF 처럼 따로 라우팅해줄 필요는 없다. ACL의 기본적인 예시는 다음과 같으며, 모두 라우터 conf t 상황에서 세팅 가능하다. 정책 넘버는 1~100 사이에 본인이 알아서 정하면 된다. 그리고 각 정책 넘버마다 하나의 정책만 있는 것이 아니라, 명령하면 계속 누.......

[수능물리(고전역학)-25강] 2018 9월 모의평가 20번 [내부링크]

안녕하십니까? 대망의 20번입니다. < 2018 9월 모의평가 물리1 20번 > 생긴 것 자체가 대단히 아스트랄(?) 합니다만... 지금까지 연습했던 방법대로 풀면 쉽습니다!! 실과 물체들을 적절히 번역하면 다음과 같이 그릴 수 있습니다. 위에 달린 실들은 지렛대로 바뀌고, 밑으로 달린 실들은 물체로 번역됩니다. 지금까지 연습했던 것과 다를 바가 없습니다. 이제 문제를 봅시다. 먼저 공이 p 지점에 있을 때가 가장 왼쪽에 위치할 수 있다고 합니다. 이 말은, p 지점보다 더 왼쪽으로 공을 이동시킬 경우 지렛대 a를 회전축으로 회전이 반시계로 시작됨을 의미하겠죠?? 따라서 막대A와 p 지점의 공의 무게중심은 지렛대 a 와 같습니다. 그리.......

[수능물리(고전역학)-23강] 2018 9월 모의평가 18번 [내부링크]

안녕하십니까! 오늘은 9월 모평 중 정답률이 낮은 문제(18, 19, 20) 을 풀어보도록 하겠습니다! 해당 문제들마다 설명할 것이 많아 포스트를 나눠 호흡을 짧게 가져가겠습니다. 먼저 18번을 다뤄봅시다. < 2018 9월 모의평가 물리 1 18번 > 생긴 것이 어마무시해보이지만... 제 강의를 따라오셨던 분들이라면 문제를 보는 순간, 이 생각이 먼저 떠올라야 합니다. " V-T 그래프를 그려야겠다 " 이건 본능입니다(?). 각각의 상황을 바로 그려줍시다. 대략적으로 그려놓고, 문제가 원하는 바를 봅시다. 두 물체가 받은 일의 비를 묻고 있군요. 바로 일에너지 정리가 떠오르면서, 두 물체가 각각 받았던 일을 곧 두 물체의 운동에너지와 같은데.......

[수능물리(고전역학)-24강] 2018 9월 모의평가 19번 [내부링크]

안녕하십니까? 19번 문제 바로 풀도록 하겠습니다. < 2018 9월 모의평가 물리1 19번 >정말 간단하게 풀 수 있습니다. (가)에서 물을 부었더니 (나) 가 되었습니다. 추가된 건 분명 물밖에 없죠? 근데 7N 이 늘어났다는군요. 그렇다면 부운 물의 양은 0.7kg 일 것이고 주어진 물의 밀도에 따라 0.7L 부피를 차지할 겁니다. 근데 눈금은 1L 이군요? 물은 0.7L 이니 물체 부피는 0.3L입니다. 이제 물을 조금 더 부었더니 2N이 더 늘었군요. 마찬가지로 추가한 건 물 밖에 없으니 0.2L 물이 더 들어갔습니다. 따라서 총 물의 부피는 0.9L 입니다. 근데 눈금은 1L이니 잠긴 물체의 부피는 0.1L 군요?? 근데 0.1L가 잠겨서 생기는 부력이 전체 물.......

신곡 - 지옥편 [내부링크]

추천 : 단테의 대표 저작인 < 신곡 > 3편 중 첫 번째인 지옥편이다. 단테 본인이 지옥을 투어(?)하면서 여러 사람을 만나고 그들의 죄를 들어본다. 지옥을 투어하는 만큼 기독교적인 색채가 강하게 묻어나는데, 특이한 점은 그리스로마 신화를 지옥에 적절히 버무려놓았다는 점이다. 그렇기 때문에 신화에 나오는 여러 유명한 영웅들도 만나볼 수 있다. 하지만 단테 본인이 살았던 시대 ( 13 ~ 14 세기 ) 이탈리아 피렌체에 유명했던 사람들 또한 대거 출현한다. 그리고 그들간의 대화는 그 시대상을 알고 있지 않으면 이해하기 어려운 부분이 많다. 이런 점이 신곡의 진입장벽을 높이는 데 일조하지 않았나 싶다. 전체적으로 어려운.......

꿈의 해석 [내부링크]

추천 : 프로이트의 대표 저작 중 하나인 < 꿈의 해석 > 이다. 프로이트는 20세기 이전까지 이어졌던 이성 중심적인 사고를 탈피했다. 대신 그 중심에 무의식을 놓고 인간에게 엄청난 영향력을 끼친다고 해석했다. 그는 이런 해석을 꿈과 엮어 자신만의 독특한 연구과정을 < 꿈의 해석 >을 통해 보여주는데 그 과정이 대단히 흥미롭다. 중간에 나오는 수 많은 꿈들의 해석이 너무 자의적이지 않나 싶기도 했다. 하지만 꿈과 무의식간의 관계를 기반으로 한 분석 자체는 대단히 재미있었고 한 편의 문학을 경험하는 느낌이였다. 이 경험만으로도 분명 한 번쯤 정독할 가치가 있는 책은 분명하다. P.S. 책 중 나오는 '오이디푸스.......

1984 [내부링크]

추천 : 디스토피아 소설의 대표작 < 1984 > 이다. 책을 읽어보지 않은 사람도 '빅브라더' 라는 개념을 한 번쯤 들어봤을 만큼 대중적으로 유명한 작품이다. 그 외 '텔레스크린' 이나 '이중사고' 등 사상검열을 위한 기술과 기법이 자주 등장하는데 그 발상이 매우 흥미롭다. 특히 소설 중간에 디스토피아 세계(오세아니아)를 어떻게 운영하는지 분석한 글이 등장하는데, 이 기법은 21세기에도 악용될 수 있다는 점에 있어 글쓴이의 상상력과 통찰력이 돋보인다. 매우 인상깊었던 점은 이야기의 전개가 대단히 현실적이라는 것이다. 기타 다른 소설에선 주인공이 모순된 상황을 극복해 선구자적 역할을 하는 경우가 많다. 이런 상.......

부분과 전체 [내부링크]

추천 : "양자역학" 하면 떠오르는 대표적인 과학자들 중 한 명인 하이젠베르크가 쓴 책 < 부분과 전체 > 이다. 양자역학 과학자로 널리 알려져있다보니 책의 초점이 물리학에 맞춰졌을 것이라 생각했다. 하지만 이는 오산이였다. 저자 스스로도 서문에서 썼듯이, 책이 다루는 주제는 물리학(원자물리학)을 넘어섰다. 특히 그 당시 주류 과학자들간의 철학적, 정치적, 사회적 토론은 신선한 충격으로 다가왔다. 과학자들이 이런 주제로 토론을 하는 건 쉽지 않은 일이기 때문이다. 이런 충격은 책 후반에서 절정을 이루게 되는데, 비트겐슈타인으로 대표되는 실증주의와 양자역학간의 충돌을 저자만의 철학적 관점으로 분석하는.......

셰익스피어 4대 비극 • 5대 희극 [내부링크]

추천 : 셰익스피어의 대표적인 작품들인 4대 비극(햄릿, 맥베스, 오셀로, 맥베스)과 5대 희극( 베니스의 상인, 말괄량이 길들이기, 뜻대로 하세요, 한 여름밤의 꿈, 십이야)를 하나로 묶은 책이다. 총 9개의 작품이 수록되었음에도 불구하고 책이 얇은 편( 약 700p )이며 저렴하다. 하지만 안타까운 점은 원전을 되도록 이해하기 쉽게 번역하는 과정에서 일부분 내용이 손실되었다는 점이다. 그렇다고 전체적인 이야기를 이해하는 데 전혀 문제될 것이 없다. 하지만 매니악하게(?) 한 문장 한 문장 음미하며 읽고 싶은 사람들에겐 아쉬울 것 같다. ( 예를 들어, <멋진 신세계> 에서 인용된 햄릿의 대사들 일부는 이 책에서 찾을 수.......

[인공지능 4강] MNIST - DNN [내부링크]

히든레이어를 늘려서 정확도를 좀 더 높혀보도록 하자. 저번 포스트의 히든레이어를 1개에서 2개로 늘린 코드이다. 히든 레이어가 증가하면 그 만큼 가중치 변화량에 민감해진다. 따라서 전 포스트와는 달리 tf.random_normal 을 써서 무조건 0으로 초기화하지 않도록 한다. 그리고 학습 횟수를 단계별로 반복하도록 해서 정답률의 변화를 실시간으로 볼 수 있도록 수정했다. 실행해보면 93% 언저리로 왔다갔다 함을 볼 수 있다. 그렇다면 히든 레이어를 더 추가해보도록 하자. 히든 레이어가 3층이 되었고, 히든 레이어 사이의 활성함수를 softmax에서 sigmoid로 바꾸었다. 확실히 레이어를 하나 더 얹고, 활성함수도 더 최적화 된 것으로 바꾸.......

멋진 신세계 [내부링크]

추천 : 조지 오웰의 <1984> 와 더불어 디스토피아 SF 소설로 많이 인용되는 책이다. <1984>는 그 당시 유행한 공산주의(스탈린주의)의 폐해를 조명해서 쓴 반면, <멋진 신세계>는 직접적인 이념을 분석했다기 보다는 과학문명의 발달로 인한 폐해에 초점이 맞춰진 듯하다. 이는 영화 <이퀄리브리엄> 이나 애니매이션 <싸이코패스> 의 배경과 유사하다고 할 수 있겠다. ( 소설에 등장하는 '소마'라는 약은 <이퀄리브리엄> 이나 <싸이코패스>에서도 비슷하게나마 등장한다! ) 그리고 1930년대에 썼다고 믿기 힘들만큼 작가의 상상력이 풍부하다. 과학기술 발전으로 인한 미래를 냉철하게 예측.......

[단편소설]시시포스 신화 - 갈증 [내부링크]

알베르 카뮈의 시지프 신화를 읽고, 여러 가지 생각이 떠올라서 이를 짧은 단편으로 표현해보았다. 앞으로도 책을 읽으면 독후감을 쓰는 느낌으로 여려 단편들을 올릴 것 같다.잠에서 깨어나서 시계를 보니 새벽 5시였다. 어제 회사에서부터 – 직원들 앞에서 내색은 하지 않았으나 - 기분은 여러모로 착잡했고, 결국 오늘 같은 중대한 날에 잠을 설치고 만 것이었다. 평소와 마찬가지로 일찍 잠자리에 들며 최대한 의식하지 않으려 했으나 소용이 없었던 모양이다. 나는 침대에서 반쯤 일어나서 유리 너머 도시의 전경을 지켜봤다. 빛으로 반짝이는 수많은 건물이 즐비하게 나열되어 있으며, 비가 와서 그런지 한층 멋있는 분위기를 자아내.......

템페스트 [내부링크]

추천 : 단 번에 읽기 좋은 분량, 깔끔한 전개, 재밌는 내용, 무엇 하나 빠지지 않는다. 『타이커스 엔드로니커스』 과 비교했을 때 결말이 너무나도(?) 평화로와서 참 많이 대비되었던 것 같다. 안 읽어본 사람들을 둘을 비교해서 읽어보면 좋을 듯 하다.

아틀라스 [내부링크]

추천 : 비디오게임 < 바이오쇼크 > 의 해저도시 랩처(Rapture)에게 사상적 토대를 제공한 책이다. 이야기를 이끌어가는 주인공들은 자유지상주의(Libertarianism)의 관점으로 세상을 해석한다. 해당 사상을 옹호하든 비판하든 한 번쯤 읽어볼 가치가 있다. ( 평범한 관점으로 봤을 때 주인공들의 모든 행동이 납득되진 않기 때문이다. ) 부담되는 점은 한 권당 약 700페이지, 3권으로 이루어졌단 점이다. 대하드라마를 보듯 천천히 음미하면서 읽는 것이 좋은 책인 것 같다. P.S 종종 자유지상주의와 신자유주의(Neoliberalism)를 혼동한다. 이 때 이 책을 읽어보면 두 사상간의 간극을 느낄 수 있지 않을까 싶다.

네 사람의 서명 [내부링크]

추천 : 셜록홈즈의 이야기는 항상 재밌다. 끝.

[OS 만들기 32강] Ext2 - 명령어 rm [내부링크]

https://github.com/SIMHANGSUB/HoGoS/tree/master/3232강 소스코드. ./exec.sh 로 실행 가능 오늘은 rm 명령어를 구현합시다. 논리는 거의 31강과 똑같습니다! 다른 점은 이미 있는 폴더를 찾아내서 지운다는 점입니다. 까다로운 점은, 폴더 내 블록에 담긴 리스트가 소위 말하는 링크드 리스트가 아닙니다! 마치 배열에 저장된 숫자 중 하나를 제거하는 것처럼, 제거할 폴더를 찾아낸 다음 그 장소를 매꿔야만 합니다. 그리고 또 적절하게 record length를 수정해야겠죠. 여간 귀찮은 작업이 아닙니다. shell.c 에 rm 명령어를 다음과 같이 추가합시다. 폴더 및 파일을 찾고, 삭제하는 함수 RemoveArrageDir를 호출합니다. 이 함수는 fs.c에 다.......

[OS 만들기 31강] Ext2 - 명령어 mkdir [내부링크]

https://github.com/SIMHANGSUB/HoGoS/tree/master/3131강 소스코드. ./exec.sh 명령어로 실행 가능 오늘은 mkdir 명령어를 추가합시다! shell.c에 sh_mkdir() 함수를 다음과 같이 추가합시다. 폴더를 하나 만드는 데 많은 것을 고려해야합니다. 먼저 해당 폴더에 대한 정보를 현재 디렉토리의 블록 에 써야 합니다. 명령어 ls를 구현했을 때 보셨겠지만 폴더 inode가 가리키는 블록에는 그 폴더가 가지고 있는 여러 개의 폴더 및 파일 목록들이 저장되어있죠. 여기에 우리가 만들 폴더를 추가해야 합니다. 해당 내용의 기억이 안난다면 25강을 다시 참고하세요. 아무튼 추가하는 방법은 간단합니다. 해당 블록에 기록된 폴더 및 파일 목록의 끝.......

주홍색 연구 [내부링크]

추 천 : 200 page 분량, 가볍게 읽기 좋음. 셜록 홈즈를 있게 해준 기념비적인 작품. 19세기 후반에 쓴 책임에도 여전히 재밌다. 영국 BBC 드라마 <셜록홈즈> 시즌 1의 1화인 분홍색 연구와 비교해서 봐도 재밌을 것이다. 끝.

[OS 만들기 30강] Ext2 - Inode alloc & free [내부링크]

https://github.com/SIMHANGSUB/HoGoS/tree/master/30 30강 소스코드. ./exec.sh 로 한 번에 실행 가능 29강의 논리를 그대로 따라서 inode를 할당받아봅시다. fs.c에 다음과 같이 함수를 추가합시다. 29강때와 함수 호출하는 것까지 완전 같습니다. 이는 Inode 비트맵이나 Block 비트맵이나 운영하는 것은 완전 똑같기 때문입니다. 쉘에 다음과 같이 함수를 추가해주고, 바로 컴파일해서 실행해봅시다. alloc을 호출하니 block과 inode 값이 각각 하나씩 줄어듬을 확인할 수 있습니다. 이는 hdd.img을 열어 서도 확인할 수 있습니다. 이제 free를 호출해 할당받았던 12번 inode을 되찾읍시다. 예상대로 38번 블록과 12번 inode를 되찾을 수 있습.......

[OS 만들기 28강] Ext2 - 명령어 cat [내부링크]

https://github.com/SIMHANGSUB/HoGoS/tree/master/2828강 소스코드입니다. ./exec.sh 명령어로 실행하세요!오늘은 Unix 의 cat 명령어와 같이, 텍스트 파일을 읽는 cat 명령어를 추가해보겠습니다. 임의의 폴더(hdd)에 hdd.img 을 마운트하고, test 폴더에 들어있는 text 파일을 cat를 통해 읽은 것이다. 이 cat 명령어를 HoGoS의 Shell에 추가합시다. 먼저 shell.c에 sh_cat()를 다음과 같이 짭니다. 심플합니다. cat 뒤에 오는 파일 이름으로 inode를 얻고, 이를 printFile 함수에 넘깁니다. 이 함수는 fs.c에 다음과 같이 구현했습니다. 같은 fs.c에 구현된 searchDir와 논리가 똑같습니다. 단지 디렉토리 inode의 블록엔 폴더들의 정보가 저.......

[OS 만들기 29강] Ext2 - Block alloc & free [내부링크]

https://github.com/SIMHANGSUB/HoGoS/tree/master/29 29강 소스코드. ./exec.sh 명령어로 실행하자 본격적으로 파일시스템의 쓰기를 구현하자! 이를 위해선 몇 가지 사전 작업이 필요하다. Block을 할당(alloc)하고 해제(Free)하는 것도 그 사전 작업 중 하나이다. fs.c을 다음과 같이 추가하자. 논리가 어려워보인다. 하지만 별 거 아니다. 먼저 Bitmap 테이블을 하나씩 찾아본다 ( for 문을 1024번 돌린다 ) 하나의 테이블마다 1바이트 크기(8비트) 이고 이 중 1비트 ~ 8비트까지 0인지 찾아본다. 0이란 소리는 아직 쓰지 않은 블록이기 때문이다. 0일 경우엔 이를 1로 바꾸고, 이에 해당하는 블록 주소를 result에 저장한다. 그리고 HDDwrite.......

타이터스 앤드로니커스 [내부링크]

추 천 : 200 page 분량이니 가볍게 읽기 좋음. 잔인한 묘사가 많음. 간만에 시간 가는 줄 모르고 재밌게 읽었다. 트로이 전쟁에 대한 묘사가 많이 나오던데 기회가 되면 호메로스의 < 일리아스 > 를 읽어봐야겠다. 끝.

[OS 만들기 25강] Ext2 - Inode & 명령어 ls [내부링크]

https://github.com/SIMHANGSUB/HoGoS/tree/master/2525강 소스코드입니다. 리눅스 환경에서 ./exec.sh 실행으로 컴파일부터 qemu 실행까지 한 번에 가능합니다. 오늘은 대망의 ls 명령어를 구현해보도록 하겠습니다. 그 말은 22강 ~ 24강에 걸쳐 만든 코드를 기반으로 디렉토리를 직접 읽어본다는 말입니다. 미리 만들었던 fs 명령어에 따르면, InodeTable 자체는 8번 블록에 위치함을 알 수 있습니다. 여기엔 실제 Inode 데이터들이 128바이트 단위로 존재합니다. 그리고 특히 Root 디렉토리는 무조건 2번째 Inode에 위치하도록 정해져있습니다. 따라서 우리는 8번 블록을 읽은 후, 2번째 Inode를 메모리에 담아오면 되겠습니다. 먼저 Inode를.......

[OS 만들기 26강] Ext2 - 명령어 cd [내부링크]

https://github.com/SIMHANGSUB/HoGoS/tree/master/2626강 소스코드입니다. ./exec.sh 명령어로 컴파일부터 qemu 실행까지 가능합니다. 오늘은 cd 명령어를 구현하는 날입니다. 근데 앞서 봤듯이 우리의 디렉토리는 이동할 만한 것조차 있지 않습니다. 따라서 디렉토리를 더 풍성하게 만들어봅시다. 그런데 우리 HoGoS는 mkdir 같은 명령어를 구현하지 않아 디렉토리를 만들 수 없습니다. 그렇다면 어떡할까요? 우리의 파일시스템은 엄연히 Ext2 포맷을 따릅니다. 그렇기 때문에 일반 Unix 계열 운영체제에 마운트가 가능합니다! 아래와 같이 임의의 폴더에 hdd.img를 마운트해봅시다. 1. 일단 sudo su 로 관리자 권한을 얻습니다. ( 자신이 정한.......

[OS 만들기 27강] Ext2 - 현재 Directory Path [내부링크]

https://github.com/SIMHANGSUB/HoGoS/tree/master/2727강 소스코드입니다. Unix에선 ./exec.sh 명령어로 컴파일부터 qemu 실행까지 가능합니다. 오늘은 쉘 명령어 내부에 디렉토리를 표시하는 걸 구현해보겠습니다. 운영체제에 없어도 크게 무방한 기능이기 때문에 설명은 간략하게 하겠습니다. 먼저 shell.c 의 shell 함수를 수정합시다. 기존의 path가 지워지고, "HoGoS:%s$ " 로 바뀌었습니다. 중간의 %s에 현재 경로명이 들어갈 겁니다. 경로는 언제 바뀌게 될까요? cd를 통해 폴더간 이동했을 시 바뀌게 됩니다. 아랫단계로 내려가면 경로가 길어질 것이고, 윗 단계로 올라가면 경로가 짧아질 것입니다. 또 더 이상 올라갈 수 없는 루트 디.......

[OS 만들기 22강] Ext2 - Superblock [내부링크]

https://github.com/SIMHANGSUB/HoGoS/tree/master/2222강 소스코드입니다. ( 이제 리눅스 환경에서는 "./exec.sh" 명령어 하나로 컴파일부터 qemu 실행까지 할 수 있습니다. ) 이제 본격적으로 하드디스크에 파일시스템을 만들어봅시다. 아주 기나긴 여정이 될 겁니다. HoGoS 만을 위한 파일시스템을 하나 만들 수도 있지만, 유닉스 계열 운영체제의 파일시스템 공부도 해볼겸 Ext2 파일시스템을 적용해보겠습니다. 지금까지 만들었던 hdd.img 는 아무런 포맷이 적용되지 않았습니다. 다음과 같이 커맨드를 입력해서 Ext2 파일시스템으로 포맷해봅시다. 실습하기 편하게 용량은 1MB(...)로 제한했습니다. 좋습니다. 1KB 블록이 1024개, inode는.......

[수능물리(고전역학)-22강] 2018 6월 모의평가 [내부링크]

안녕하세요! 최근 실시된 2018 6월 모의평가에서 고전역학 문제들을 한 번 풀어봅시다! 풀어볼 문제는 18번, 20번, 이렇게 2문제입니다 < 2018 6월 모의평가 물리1 18번 >...? 어디서 많이 본 그림 아닙니까...? 20강에서 다루었던 2018 수능 물리1 15번과 그림이 거의 똑같습니다!! 20강에서 언급했듯이, 막대를 위로 당기는 힘은 궁극적으로 받침대와 같다. 라고 했습니다. 그럼 이제 추를 없애고 추의 무게만큼 지탱하는 가상의 받침점 C를 막대의 맨 오른쪽에 놓겠습니다. 그렇다면 이제 문제는 A,B,C 받침대가 막대를 지탱하는데, A와 B가 막대를 받치는 힘의 크기의 차가 최소가 되도록 할 때, C 받침대가 얼마만큼의 크기로 받침대.......

[OS 만들기 23강] Ext2 - Groupblock [내부링크]

https://github.com/SIMHANGSUB/HoGoS/tree/master/23 23강 소스코드입니다. ( 이제 리눅스 환경에서는 "./exec.sh" 명령어 하나로 컴파일부터 qemu 실행까지 할 수 있습니다. ) 22강에서는 하드디스크의 SUPER 블록, 즉 파일시스템의 전체적인 개괄이 담긴 블록을 읽었습니다. 오늘은 GROUP 블록을 읽어보도록 합시다. 이 블록엔 블록비트맵, 아이노드 비트맵, 아이노드 테이블이 하드디스크의 어디에 위치하는지(몇 번째 섹터에 저장되는지) 그 정보를 저장합니다. 또 해당 Group의 총 가용 가능한 블록 수와 아이노드 수 그리고 존재 중인 디렉토리까지 그 값을 반환합니다. http://www.nongnu.org/ext2-doc/ext2.html위에 나온 바와 같이 str.......

[OS 만들기 24강] Ext2 - Bitmap [내부링크]

https://github.com/SIMHANGSUB/HoGoS/tree/master/2424강 소스코드입니다. 리눅스 환경에서 ./exec.sh 명령어로 컴파일부터 qemu 실행까지 한 번에 가능합니다. 저번 강의에서는 Group 블록을 읽어서 각 Bitmap들이 어디에 위치했는지 파악했습니다. 이제 이들을 메모리에 올려놓을 차례입니다. 먼저 Block Bitmap을 봅시다. 블록 6번째에 Bitmap이 적재되었다고 하는군요. 이 위치는 어디일까요? 앞선 21강에서 hdd.img 을 1KB 블록으로 포맷했음을 기억합니까? 아래의 사진을 보십시오. 즉 블록 6은 일반적인 512byte 섹터 기준으로 봤을 때, 12번째 섹터에 위치합니다. 이를 Hex 관점으로 보자면, 512byte 한 섹터는 0x200 에 해당하죠. 따라.......

[OS 만들기 21강] printf() 가변인자 구현 [내부링크]

https://github.com/SIMHANGSUB/HoGoS/tree/master/21 21강 소스코드입니다. 파일시스템을 구현하다 말고 뜬금없이 printf의 가변인자를 구현하는가? 파일시스템(하드디스크 안에 저장된 데이터)를 읽었을 때 제대로 읽었는지 상태를 출력해보는 것이 필요하다. 하지만 현재 HoGoS는 C언어의 printf 처럼 %d 등 변수들을 출력하지 못하고 있는 것이 문제. http://norux.me/19가변인자에 대해 자세히 알고 싶다면 다음 링크를 정독하라. 먼저 function.c 에 있던 kprintf 함수를 다음과 같이 수정하자. va_list, va_start_ va_end를 통해 가변인자를 접근하려면 반드시 <stdarg.h>를 include 해야한다! ( 사용법은 위 링크를 보면 자세하게.......

[인공지능 3강] MNIST - Tensorflow [내부링크]

MNIST를 텐서플로우로 구현해보자!https://tensorflowkorea.gitbooks.io/tensorflow-kr/content/g3doc/get_started/basic_usage.html해당 글을 읽으면 텐서플로우의 동작원리 및 사용법이 자세하게 소개되어 있으니 참고하자.그 전에 파이썬과 텐서플로우가 설치되야 하는데, 서로 버전이 안 맞으면 충돌이 일어날 수 있다.필자는 파이썬 3.6 과 텐서플로우 1.0 을 설치하니 잘 실행되었다.다음과 같이 코드를 작성해보자코드는 위 링크에서 나온 것을 정리한 것이다. 저번 포스트와 같이 보면 이해가 어느 정도 될 것이다.실제로 돌려보면 정답률은 92%(0.9118) 근방으로 나옴을 알 수 있다.학습은 잘 되었고, 정답률도 90% 이상.......

[수능물리(고전역학)-4강] 에너지 전환 [내부링크]

안녕하십니까 오늘은 에너지 파트를 마무리짓는 마지막 강의날입니다. 에너지를 전환한다..? 이게 무슨 이...

[수능물리(고전역학)-9강]2~6강 복습(2016, 2017 물리1 기출풀이) [내부링크]

안녕하십니까 오늘은 16,17년도 물리 1 기출로 개념을 다지겠습니다. 개념강의때 다룬 문제 및 쉬운 문제는...

[수능물리(고전역학)-11강] 부력(상) [내부링크]

안녕하십니까 오늘은 부력에 대해 개념을 정리하고 문제를 풀어보는 시간입니다. 부력이란 뭔가요? 부"력" ...

[Python] PdfMerge - 여러 pdf 하나로 합치기 (GUI 5편 - 최종) [내부링크]

이제 "합치기"를 구현해보자. 해당 버튼의 코드는 다음과 같다. 해당 코드를 구현하기 전에 PyPDF2 를 ...

[OS만들기 20강] 하드디스크 드라이버 - 쓰기 [내부링크]

https://github.com/SIMHANGSUB/HoGoS/tree/master/2020강 소스코드입니다. 안녕하세요 오늘...

[수능물리(고전역학)-20강] 돌림힘 - 문풀(Ⅳ) [내부링크]

안녕하십니까? 오늘도 돌림힘 기출문제를 풀어봅시다. < 2017 수능 물리1 18번 >생긴 것을 보십시오....

[수능물리(고전역학)-21강] 돌림힘 - 문풀(Ⅴ) [내부링크]

안녕하십니까? 이제 거의 모든 유형의 돌림힘을 풀어본 것 같습니다. 나머지 남아있는 문제들을 풀어보도록...

[Python] PdfMerge - 여러 pdf 하나로 합치기 (GUI 1편) [내부링크]

작년 개발했던 PDF 합치는 프로그램이 문득 생각났다. 비록 멀쩡히 동작했지만 cmd 기반으로 돌아가기도...

[OS 만들기 1강] 프롤로그 [내부링크]

전산학을 전공한 사람이라면 누구나 한 번쯤 자신만의 운영체제(OS)를 만들고 싶을 것이다. 필자 또한 그...

[OS만들기 16강] - 기초적인 Shell [내부링크]

https://github.com/SIMHANGSUB/HoGoS/tree/master/1616강 소스코드입니다. 오늘은 Shell 을...

[OS만들기 19강] 하드디스크 드라이버 - 읽기 [내부링크]

https://github.com/SIMHANGSUB/HoGoS/tree/master/1919강 소스코드입니다. 안녕하세요 Qemu...

[수능물리(고전역학)-5강] 등가속도 운동 (그래프) 개념편 [내부링크]

안녕하십니까? 오늘은 등가속도 운동 2부작 중 첫 번째인 등가속도 운동 (그래프)의 개념을 정립해보겠습니...

[수능물리(고전역학)-14강] 베르누이(상) [내부링크]

안녕하십니까 오늘은 베르누이의 원리에 대해 개념을 정립해보겠습니다. 베르누이의 정리는 뭡니까? 어떤 ...

[수능물리(고전역학)-18강] 돌림힘 - 문풀(Ⅱ) [내부링크]

안녕하십니까? 오늘도 장엄한(?) 돌림힘 이치를 같이 깨달아봅시다. < 2016 6월 모평 물리1 19번 >아...

[OS만들기 3강] 하드디스크 읽기 [내부링크]

https://github.com/SIMHANGSUB/HoGoS/tree/master/3 3강의 소스코드입니다.앞선 부트로더 51...

[OS만들기 4강] 리얼모드(Real Mode) [내부링크]

3강에서의 의문점을 해소하기 위해서는 리얼모드의 이해가 수반되야합니다. x86 초창기에는 16비트 환경이...

[OS 만들기 8강] Make 명령어 [내부링크]

https://github.com/SIMHANGSUB/HoGoS/tree/master/78강 소스입니다. 7강과 같습니다만, Mak...

[수능물리(고전역학)-1강] 용수철 [내부링크]

안녕하십니까? 오늘은 용수철 관련한 문제들과 함께 이야기를 나눠보겠습니다. 고등학교 수준에서 용수철에...

[수능물리(고전역학)-6강] 등가속도 운동 (그래프) 문제풀이편 [내부링크]

안녕하십니까? 5강에서 배운 개념을 토대로 문제를 풀면서 개념을 다지도록 합시다. 우린 이제부터 2가지 ...

[수능물리(고전역학)-10강]2~6강 복습(2018 물리1 기출풀이) [내부링크]

안녕하십니까 이제 대망의 18년도 기출만 남았군요. 2~6강 범위 내 문제들을 풀어보면서 개념을 다지도록 ...

[수능물리(고전역학)-13강] 부력(하) [내부링크]

안녕하십니까 남은 문제들을 풀어서 부력 파트를 마무리하겠습니다. < 2018 6월 모의평가 물리1 19번 &g...

[수능물리(고전역학)-17강] 돌림힘 - 문풀(Ⅰ) [내부링크]

안녕하십니까? 기출 문제들을 풀면서 돌림힘 개념을 정립합시다. 앞서 이야기했듯이 무게중심 풀이를 위주...

[OS만들기 6강] 함수 만들기(어셈블리) [내부링크]

https://github.com/SIMHANGSUB/HoGoS/tree/master/66강 소스코드입니다 간단하게 어셈블리로...

[OS만들기 15강] - 키보드 드라이버 Ⅱ [내부링크]

https://github.com/SIMHANGSUB/HoGoS/tree/master/1414 ~ 15 강 소스코드입니다. 자 저번 강...

[OS만들기 17강] 하드디스크 드라이버(Hard disk driver ) [내부링크]

오늘은 대망의 파일시스템 그 첫 번째 챕터입니다. 파일시스템을 위해서는 하드디스크를 읽고 쓸 줄 알아야...

[인공지능 2강] MNIST - 신경망 이론 [내부링크]

본격적으로 손글씨 학습을 하기 전에 신경망의 이론을 간단하게 살펴보자. 신경망의 이론은 깊게 팔수록 복...

[수능물리(고전역학)-2강] 에너지 [내부링크]

안녕하십니까 2강에서는 에너지에 대해 개념을 정립해보도록 하겠습니다. 딱 2가지만 기억하시면 됩니다. 1...

[수능물리(고전역학)-3강] 에너지 심화 [내부링크]

안녕하십니까? 오늘은 에너지를 심화해서 개념을 다지도록 하겠습니다. 2강에 배운 개념은 다음의 식으로 ...

[수능물리(고전역학)-8강]2~6강 복습(2015 물리1 기출풀이) [내부링크]

안녕하십니까 오늘은 15년도 기출을 통해 개념을 복습하는 시간을 가지겠습니다. 마찬가지로 2~6강에서 다...

[Python] PdfMerge - 여러 pdf 하나로 합치기 (GUI 4편) [내부링크]

이제 "리스트 제거" 및 "위 이동", "아래 이동" 을 구현해보자. 구현 시 다음과 같이 동작한다. 구현한 코...

[OS만들기 2강] 부트로더 [내부링크]

부트로더의 설명은 구글링을 조금만 해봐도 다 나오니 생략하고 필자가 참고했던 포스트 링크를 첨부해둔다...

[OS만들기 10강] 인터럽트 - PIC 셋팅 [내부링크]

https://github.com/SIMHANGSUB/HoGoS/tree/master/1010~13강 소스코드입니다. 인터럽트를 이...

[인공지능 1강] MNIST - csv파일 그래프 출력 [내부링크]

머신러닝계의 Hello world와 같은 MNIST 글씨 인식을 한 번 해보자! http://makeyourownneuralnetwor...

[수능물리(고전역학)-7강] 2~6강 복습(2014 물리1 기출풀이) [내부링크]

안녕하십니까?? 뜬금없이 개념 설명하다 기출을 푸니 당황스럽나요? 그렇지 않습니다. 물리에 있어서는 문...

[수능물리(고전역학)-12강] 부력(중) [내부링크]

안녕하십니까 부력(중) 편입니다. 부력(상)에서 익힌 개념들을 가지고 계속해서 문제를 풀어나가봅시다. &l...

[OS만들기 5강] 보호모드(Protected Mode) [내부링크]

https://github.com/SIMHANGSUB/HoGoS/tree/master/55강 소스코드입니다. 이제 16비트 리얼모...

[OS만들기 11강] 인터럽트 - IDT 선언 [내부링크]

https://github.com/SIMHANGSUB/HoGoS/tree/master/1010~13강 소스코드입니다. 저번에 설명했...

[OS만들기 14강] - 키보드 드라이버 Ⅰ [내부링크]

https://github.com/SIMHANGSUB/HoGoS/tree/master/1414 ~ 15 강 소스코드입니다. 자! 오늘은...

[OS만들기 18강] 하드디스크 드라이버 - Qemu [내부링크]

안녕하세요 저번 강의에서 예고했듯이 Qemu라는 가상환경을 설치해보겠습니다. https://www.qemu.org/down...

[Python] PdfMerge - 여러 pdf 하나로 합치기 [내부링크]

여러 개의 pdf를 하나로 합칠 일이 생기는데 이를 python을 통해 구현했다. https://github.com/SimSoftw...

[수능물리(고전역학)-19강] 돌림힘 - 문풀(Ⅲ) [내부링크]

안녕하십니까? 오늘도 전체 물체를 합치거나, 쪼개서 받침점에 놓는 단 한가지의 일관된 풀이로 문제를 풀...

[Python] PdfMerge - 여러 pdf 하나로 합치기 (GUI 2편) [내부링크]

저번 포스터는 프로그램의 골격까지 갖춘 걸로 마무리지었다. 먼저 "리스트 추가" 버튼을 구현하자. 구현 ...

[Python] PdfMerge - 여러 pdf 하나로 합치기 (GUI 3편) [내부링크]

이제 합친 PDF를 어디에 저장할 지 설정할 수 있는 기능을 구현하자. ( 사실 "합치기" 버튼 클릭할 때 ...

[수능물리(고전역학)-15강] 베르누이(하) [내부링크]

안녕하십니까? 오늘도 신나게(?) 나머지 베르누이 문제들을 풀어보도록 합시다. < 2017 9월 모의평가 물...

[수능물리(고전역학)-16강] 돌림힘 - 개념 [내부링크]

안녕하십니까? 오늘은 돌림힘의 개념을 정립하는 시간을 가져보겠습니다. 사실상 문제를 푸는 데 있어 돌림...

[OS 만들기 7강] C언어로 개발하기 [내부링크]

https://github.com/SIMHANGSUB/HoGoS/tree/master/77강 소스코드입니다. 이제 본격적으로 C...

[OS만들기 9강] C언어로 함수 만들기 [내부링크]

https://github.com/SIMHANGSUB/HoGoS/tree/master/99강 소스코드입니다. 이제 C언어로 함수...

[OS만들기 12강] 인터럽트 - IDT 구현 [내부링크]

https://github.com/SIMHANGSUB/HoGoS/tree/master/1010 ~ 13강 소스코드입니다. 저번에 설명...

[OS만들기 13강] 인터럽트 - ISR 구현 [내부링크]

https://github.com/SIMHANGSUB/HoGoS/tree/master/1010 ~ 13 강 소스코드입니다. 대망의 마...