-
posts
-
TEX Shinobi 개봉기 & 사용 후기
인터넷에서 TEX Shinobi라는 키보드의 리뷰를 보자마자 ThinkPad 덕후인 저는 ‘앗! 저건 사야만 해!’라는 생각을 하게 되었습니다.한성컴퓨터의 GO187 기계식 키보드를 5~6년 정도 쓰기도 했으니 바꿀 때가 된 거 같아 바로 11번가에서 회사 복지 포인트로 구매했습니... -
[Django] 게시판 구현 하기 (2) - 글 조회
이번 시간에는 이전 글에서 만든 게시글 목록을 클릭하면, 글을 조회하는 기능을 추가해보도록 하겠습니다.글을 조회하면 보여지는 Template을 만들어 보겠습니다.아래 내용을 templates 폴더의 detail.html 파일명으로 저장합니다.{% load static %}<!... -
[Django] 게시판 구현 하기 (1) - 글 작성 & 글 목록 출력
Django로 게시판을 만들기 전에, 우선 Django 환경을 설정하겠습니다.가상환경 생성하기Python 가상환경(virtualenv)을 생성한 뒤, Django를 설치할 것입니다.가상환경을 사용하면, Python 프로젝트를 진행할 때 독립적인 환경을 만들어 줄 수 있습니다.예를 ... -
[Python] 클래스
클래스는 함수와 변수를 묶어서 하나의 객체로 만들어 놓은 것입니다.특정한 것들을 하나의 객체로 묶어 표현하면, 코드가 더 직관적일 수 있습니다.Python에서는 아래와 같은 문법으로 클래스를 선언합니다.class 클래스_이름: def 함수명: 실행할_코드이제, S... -
[Python] 함수
함수는 특정 기능을 하는 것에 대해 반복적인 작업을 단순화하기 위해 사용됩니다.프로그램에서는 특정 기능이 반복적으로 작동하는 경우가 자주 있습니다. 그럴 때마다 동일한 코드를 작성하는 것보다 함수로 만들어놓아, 필요할 때마다 함수를 호출해서 사용하는 게 더 효율적입니다.Python... -
[Python] 조건문과 반복문
우선 조건문과 반복문에 대해 배우기 전에, ‘[Python] 개발 환경 설정하기‘를 보고 프로젝트를 생성합니다.오늘은 ‘Python Terminal’이 아닌 Python 코드를 직접 작성하면서 배워볼 것입니다.조건문조건문은 ‘~이면, ~를 한다’ 이렇게 이해하시면 됩니다.Pytho... -
[Python] 변수
Python에는 여러 가지 자료형이 있습니다.기본 자료형에는 ‘Number’, ‘String’, ‘Bool’, ‘List’, ‘Tuple’, ‘Set’, ‘Dictionary’ 자료형이 있습니다. 이 글에서 하나하나 배워봅시다. -
[Python] 개발 환경 설정하기
Python를 시작하기전에 Python 개발 환경을 설정해보도록 하겠습니다. -
[Spring Boot] 게시판 구현 하기 (4) - 파일 업로드 & 다운로드
앞의 글에서 글을 수정하고 삭제하는 기능을 만들었습니다.이번 시간에는 파일을 업로드하고 다운로드하는 기능을 구현해보겠습니다. -
[Spring Boot] 게시판 구현 하기 (3) - 글 수정 및 삭제
앞의 글에서 글을 조회하는 기능을 만들었습니다.이번 시간에는 글을 수정하고 삭제하는 기능을 구현해보겠습니다. -
[Spring Boot] 게시판 구현 하기 (2) - 글 조회
이번 시간에는 이전 글에서 만든 게시글 목록을 클릭하면, 글을 조회하는 기능을 추가해보도록 하겠습니다. -
[Spring Boot] 게시판 구현 하기 (1) - 글 작성 & 글 목록 출력
이번 시간에는 Spring Boot와 MySQL를 연동하고 게시판 기능의 글 작성과 글 목록 출력을 구현해보겠습니다. -
[Spring Boot] RESTful 웹 서비스 구축
RESTful? 오늘은 무엇을 만드나요? -
[Spring Boot] 프로젝트 생성
Spring Initializr에 접속하여 아래와 같이 선택하고, ‘Generate’를 클릭합니다. -
[Spring Boot] 개발 환경 설정
Spring Boot을 공부하기 앞서 개발 환경을 설정할 것입니다.이 글은 ‘Windows 10 x64’ 환경에서 개발 환경을 설정합니다. -
[PiRTOS] 메모리 설계하기
이 글에서는 PiRTOS의 메모리를 설계해보겠습니다.우리가 이전 글에서 만든 ELF는 크게 세 가지로 나누어 사용합니다. text 영역 : 컴파일러가 만든 기계어가 위치하는 영역입니다. 이 영역은 우리가 작성한 코드이므로 절대로 변경돼서는 안됩니다. ... -
[PiRTOS] 기초적인 것부터 따라 하기
이 글에서는 Cross Compiler를 사용하는 것과 GDB를 사용하는 것을 설명하겠습니다.Raspberry Pi Booting FlowARM Core에 전원이 인가되면, Reset Vector(0x00000000)에서 32비트를 읽어 명령을 실행합니다.하지만 Raspberry ... -
[PiRTOS] 개발 환경 구성하기
PiRTOS를 개발하기 전에 개발 환경을 구성해보겠습니다.이 글에서는 GNU ARM Embedded Toolchain을 빌드하고, QEMU를 설치합니다.(Ubuntu 18.04.4 LTS를 기준으로 작성되었습니다.)Cross Compiler 크로스 컴파일러(Cross Compil... -
[Electron] Electron에서 React 사용하기
이번 시간에는 Electron에서 React를 사용해보겠습니다.Environment Settingnpm install -g yarn 명령어로 yarn을 설치합니다. YARN 이란 Facebook에서 만든 새로운 자바스크립트 패키지 매니저입니다. 기존에 존재하는 npm 과 동일한 ... -
[Electron] SQLite3를 사용한 간단한 메모장 만들기
이번 시간에는 SQLite3를 사용한 간단한 메모장을 만들어보겠습니다.다음과 같은 파일들이 필요합니다.├── app.css├── app.js├── database.db├── index.html├── main.js└── package.json우선 package.json 부터 작성해보... -
[Electron] Hello World!
Electron은 JavaScript를 사용하여 데스크탑 프로그램을 만들 수 있습니다. 데스크탑 응용프로그램에 초점을 맞춘 Node.js라고 생각하면 편합니다.Windows에서 Electron 개발 환경 설정Node.js에 접속하여, 설치 파일을 다운로드 받아 설치합니다. 간단하죠... -
[ES6] 객체
객체의 프로퍼티 나열객체의 프로퍼티를 나열하는 방법은 다양합니다. for ... in을 사용하는 방법과 Object.keys를 사용하는 방법이 있습니다.for ... inlet object = { a: 1, b: 2, c: 3};for(let property in object) {... -
[Build Own Linux] Image
이전 글에서 우리는 커널을 빌드 하였습니다. 이번 시간에는 앞에서 만든 Root File System과 Kernel을 합쳐 Raspberry Pi용 Image를 빌드 해보겠습니다.Raspberry Pi Image Build아래는 제가 작성한 이미지를 빌드하는 스크립트입니다. ima... -
[Build Own Linux] Kernel
이전 글에서 우리는 Root File System을 빌드 하였습니다. 이번 시간에는 리눅스 커널을 크로스 컴파일하여 빌드 해보겠습니다.Raspberry Pi Kernel Cross Compile아래는 제가 작성한 커널을 빌드하는 스크립트입니다. kernel.sh로 아래 내용을 저장... -
[Build Own Linux] Root File System
이전 글에서 우리는 Toolchain을 빌드 하였습니다. 이번 시간에는 Root File System을 빌드 해보겠습니다.Root File System Build아래는 제가 작성한 Root File System을 빌드하는 스크립트입니다. root-file-system.sh로 아래 ... -
[Build Own Linux] Toolchain
이 글에서는 라즈베리 파이(Raspberry Pi 3)를 타겟으로한 리눅스 빌드를 위해 소스코드 다운로드와 툴체인(Toolchain)을 빌드 하는 방법을 설명합니다.개발 환경 설정개발 환경은 리눅스(Ubuntu 18.04)에서 진행합니다.sudo apt install gcc g++... -
[Simple x86 Operating System] Bootsector Functions Strings
이 글에서는 어셈블러를 사용하여 기본 항목(루프, 함수)를 코딩하는 방법을 알아보겠습니다.문자열바이트와 같은 문자열을 정의하되 끝을 결정할 수 있도록 Null 바이트로 종료합니다.mystring: db 'Hello, World', 0따옴표로 묶인 텍스트는 어셈블러에서 ASCI... -
[Simple x86 Operating System] Bootsector Stack
이 글에서는 스택(Stack) 사용 방법을 알아볼것입니다. SP (Stack Pointer register) : 스택의 최상단을 가리키는 포인터로 사용됩니다. BP (Stack Base Pointer register) : 스택의 베이스를 가리키는 포인터로 사용됩니다.BP 레지스... -
[Simple x86 Operating System] Bootsector Memory
이 글의 목표는 부트 섹터가 저장된 위치를 배우는 것입니다.위의 그림을 보면, BIOS가 부트 섹터를 0x7C00에 배치하는 것을 알 수 있습니다.화면에 ‘X’를 출력하려고 합니다. 우리는 4가지 방법을 시도하고, 어떤 방법이 효과가 있는지와 그 이유를 알아봅시다.boot_sect... -
[Simple x86 Operating System] Bootsector Print
이전 글에서 만든 무한 루프 부트 섹터를 약간 개선하고 화면에 글자를 출력할 것입니다. 이를 위해 인터럽트(Interrupt)를 발생시킬 것입니다.이 예제에서는 “Hello” 단어의 각 문자를 al 레지스터(ax의 하위 부분), 0x0E를 ah 레지스터(ax의 상위 부분)에 기록하... -
[Simple x86 Operating System] Bootsector Barebone
개발 환경 설정개발 환경은 리눅스(Ubuntu 18.04)에서 진행합니다.sudo apt install qemu-system-x86 nasm 명령어로 qemu-system-x86과 nasm을 설치합니다.이론컴퓨터가 부팅 될 때 BIOS는 OS를 로드하는 방법을 모르므로 해당 작업을... -
[Linux] 리눅스 기본 명령어
이 글에서는 파일, 디렉토리 등을 탐색하는 기본 명령어를 배웁니다.ShellShell은 기본적으로 키보드에서 명령을 가져와 운영체제로 보내 수행하는 프로그램입니다. 리눅스 GUI 환경에서 아마도 “Terminal” 또는 “Console”과 같은 프로그램을 보았을 것입니다. 이 프로... -
[ES6] 배열
우리는 ‘[ES6] 자료형과 변수, 상수‘에서 간단하게 배열(Array)에 대해 접했습니다. 배열에 대해 알아가기 전에 기본적인 것부터 정리해보도록 하겠습니다. 배열은 순서가 있습니다. 인덱스(index)는 0부터 시작합니다. 자바스크립트에서 배열의 요소는 모두 같은 타입일 필... -
[ES6] Scope와 Hoisting
Scope자바스크립트에서 객체와 함수도 변수입니다. Scope(범위)는 코드의 다른 부분에서 변수, 객체 및 함수의 접근성을 결정합니다.자바스크립트에는 두 가지 Scope가 있습니다. Local scope Global scopeLocal Scope자바스크립트에는 함수 범위가 있... -
[ES6] 함수
‘함수’란 일종의 작은 프로그램 단위라고 볼 수 있습니다. 우리가 이전에 parseInt()나 parseFloat() 함수를 사용한 것은 자바스크립트에서 미리 만들어 제공한 함수를 사용한 것입니다. 이처럼 ‘함수’는 특정한 기능을 하는 코드들을 묶어 하나의 명령어처럼 사용이 가능하... -
[ES6] 조건문과 반복문
조건문 (Conditional Statements) 컴퓨터 과학에서 조건문이란 프로그래머가 명시한 불린 자료형 조건이 참인지 거짓인지에 따라 달라지는 계산이나 상황을 수행하는 프로그래밍 언어의 특징이다. 출처 : 위키피디아 - 조건문코드를 작성 할때 매우 다양한 조건에 대해 다른... -
[ES6] 자료형과 변수, 상수
변수 (Variable)변수는 값이 저장되는 공간이라고 할 수 있습니다. 이름이 말하듯 값은 언제든 바뀔 수 있습니다.예를 들어 몸무게 관리에 관한 프로그램을 만든다면 targetWeight라는 변수를 사용할 수 있을 것입니다.아래 코드는 변수 targetWeight를 선언하고 초... -
[C#] 클래스
클래스(Class)를 이해하려면, 먼저 ‘객체 지향 프로그래밍‘을 이해해야 합니다. ‘객체 지향 프로그래밍’이란, 코드 내에 모든 것을 객체(Object)로 표현하는 것을 말합니다. 객체라고 할 만한 것은 속성(Attribute)와 행위(Behavior) 2가지가 있습니다. 예를 ... -
[C#] 메소드(Method)
메소드(Method)는 일련의 코드를 하나로 묶은것이라고 볼 수 있습니다.아래와 같이 메소드를 선언하고 호출 할 수 있습니다.using System;using static System.Console;namespace FirstCSharp{ class Calculator ... -
[C#] 자료형과 변수, 상수
기본 자료형Numerical integer types7 또는 1024와 같은 정숫값을 저장할 수 있습니다. 이 자료형은 다양한 크기로 존재하며, 음수 값을 지원하는지에 따라 부호가 있거나 없습니다. 자료형 크기 범위 ... -
[C#] Hello, World!
Visual Studio Community 2019를 실행하고, ‘새 프로젝트 만들기(N)’을 클릭합니다.‘콘솔 앱(.Net Core)’를 선택하고 ‘다음(N)’을 클릭합니다.프로젝트 이름을 설정합니다. 저는 ‘HelloWorld’로 설정했습니다.‘솔루션 탐색기’에 있는 Progr... -
[C#] 개발 환경 설정
Visual Studio Download 페이지에 접속하여, Visual Studio Community를 다운로드 받습니다.“.NET 데스크톱 개발”을 선택하고, 설치버튼을 누릅니다.설치가 완료되면, 시작에 있는 ‘Visual Studio 2019’를 클릭하여 실행합니다.이제 C#... -
[C++] 연산자
연산자를 사용하여 변수와 상수를 조작할 수 있습니다. -
[C++] 상수
상수는 고정된 값을 가진 표현식입니다. -
[C++] 변수와 자료형
프로그래밍은 화면에 간단한 텍스트를 출력하는 것만 하는 것이 아닙니다. 좀 더 나아가서 데이터를 저장하는 프로그램을 작성할 수 있으려면 ‘변수’ 개념을 도입해야 합니다. -
[C++] Hello, world!
프로그래밍 언어를 배우는 가장 좋은 방법은 프로그램을 작성해보는 것입니다.일반적으로, 초보자가 처음 작성하는 프로그램은 ‘Hello World’라는 프로그램으로 컴퓨터 화면에 “Hello, world!”를 출력하는 프로그램입니다.매우 간단하지만 C++ 프로그래밍의 모든 기본 구성 ... -
[QT 5.13.0] QTableWidget을 사용하여 간단한 주소록을 만들기
프로젝트를 생성하고, 우클릭하여 ‘Add New…‘를 합니다. -
[WPF] Hello, world!
Visual Studio 2019를 켜고, ‘새 프로젝트 만들기’를 클릭합니다. -
[QT 5.13.0] 창의 크기에 비례하여 Widget 크기 조정
이번 글은 ‘[QT 5.13.0] Find Serial Port‘와 이어집니다. -
[QT 5.13.0] Find Serial Port
Serial Port를 찾는 프로그램을 만들어보겠습니다.우선, ‘FindSerialPort’ 프로젝트를 생성합니다. -
[QT 5.13.0] Windows에서 Static Build
Python을 설치합니다. (Build 할 때 필요합니다) -
[QT 5.13.0] Hello, world!
‘Qt Creator’에서 ‘Projects’를 클릭합니다. -
[QT 5.13.0] QT Installation
https://www.qt.io/offline-installers에 접속하여, Qt 5.13.0 for Windows를 다운로드 받습니다. -
ARM Assembly 기초
ARM CPU의 기본 구성 R0~R14 총 15개의 범용 레지스터를 가지고 있습니다. 범용 레지스터 R13는 특수 레지스터 SP로 사용됩니다. SP는 C언어 사용시 스택의 주소를 저장하는 레지스터입니다. ... -
Raspberry Pi Bare Bones
Raspberry Pi의 운영 체제 개발에 대한 글입니다. 이 글은 테스트할 다른 하드웨어가 없기 때문에 Raspberry Pi Model B Rev 2에 맞춰져 작성되었습니다. 하지만 지금까지의 모델들은 Memory-Mapped I/O 위치 이외에는 대부분 동일합니다. 이것은 최... -
GUID Partition Table
GPT(GUID Partition Table)은 저장 장치에 대한 파티션 레이아웃 중 하나입니다. -
Chapter 5: UART를 구현해보자!
Source Code는 https://github.com/LeeKyuHyuk/Simple-ARM-Operating-System/tree/raspberry-pi-zero/Chapter-5/src에 있습니다. -
Chapter 4: GPIO를 제어해보자! (C)
Source Code는 https://github.com/LeeKyuHyuk/Simple-ARM-Operating-System/tree/raspberry-pi-zero/Chapter-4/src에 있습니다. -
Chapter 3: GPIO를 제어해보자! (ARM Assembly)
Source Code는 https://github.com/LeeKyuHyuk/Simple-ARM-Operating-System/tree/raspberry-pi-zero/Chapter-3/src에 있습니다. -
Chapter 2: ARM Assembly 기초
작업에 들어가기 전에 ARM Assembly에 대해 배워보도록 합시다. -
Chapter 1: Cross Compiler를 빌드하고, 빌드환경을 구축해보자!
Build Cross Compiler -
KFC 개인정보 80만 건 노출…‘뻥’뚫린 보안
제가 제보한 것이 KBS 뉴스에 나왔네요 -
결정하기 어려울 땐 결정맨!!
매일 점심 메뉴로 고민하기 싫어서 카카오 API를 사용하여 재밌는 것을 한번 만들어보았습니다. -
NHN 아이들을 위한 소프트웨어 교육 프로젝트 CF
-
COSMOCAMPUS 2013.11
-
KBS News - 한국의 스티브 잡스를 꿈꾼다

KyuHyuk Lee
Software Developer
© 2020