전체 글 277

[코틀린] 코틀린 기초 - 변수, 자료형

Kotlin Basic - Variables, Baisc Types개요 어떤 언어든, 변수와 기본 자료형은 중요하다. 프로그램은 결국 데이터를 받아서 처리하고 결과를 내는 과정이므로, 사용자와 상호작용하는 가장 기본 단위인 변수와 자료형이 중요한 것이다. 변수(Variable)는 데이터를 저장하기 위한 ‘공간’이며, 자료형(Type)은 그 공간에 어떤 종류의 데이터를 담을 수 있는지를 결정한다. 예를 들어 정수, 실수, 문자, 논리형 등 다양한 자료형이 존재하며, 각각의 자료형은 메모리 사용량과 연산 방식이 다르다. 따라서 변수와 자료형을 올바르게 이해하고 사용하는 것은 효율적인 메모리 관리와 정확한 연산 수행의 기초가 된다.  또한, 변수와 자료형 개념은 상위 수준의 개념인 클래스, 객체, 컬렉션, 함..

Language/Kotlin 2025.10.13

[코틀린] 코틀린 기초 - Hello World!

Kotlin Basic - Hello World!개요  코틀린(Kotlin)은 JVM(Java Virtual Machine) 기반으로 동작하는 프로그래밍 언어로, Java와 유사하지만 더 간결한 문법과 다양한 기능을 제공한다. 구글이 2017년부터 안드로이드 공식 언어로 지정하면서 현재는 안드로이드 앱 개발에서 사실상 표준으로 자리 잡았다. 즉, 안드로이드 애플리케이션을 만들고자 한다면 반드시 학습해야 할 언어 중 하나라 할 수 있다(물론 Java로도 개발이 가능하다). 이번 글에서는 기본적인 개발 환경을 구축하고, Hello World 문자열을 출력하는 시간을 가져보겠다. JVM: 소스 파일을 바이트코드로 변환해 운영체제와 CPU에 맞게 실행해 주는 가상 머신본문개발 환경  개발 환경은 Intelij ..

Language/Kotlin 2025.09.21

[임베디드] 신호와 주파수

임베디드 레시피" 책을 기반으로 작성하였습니다>Signal and Frequency개요  임베디드 시스템은 다양한 신호를 처리하며, 센서로부터 입력된 데이터를 분석하고 필터링하여 제어 명령을 생성하기도 한다. 단적으로 오실로스코프로 측정하는 그래프도 신호의 일종이고, 수학 시간에 그렸던 함수들의 그래프도 신호의 일종이다. 이러한 신호에 대한 이해를 하는 것은 공학적인 측면에서 중요하다고 할 수 있다.  이때 주파수는 새로운 시선을 제공한다. 시간 영역에서 복잡하게 보이는 신호도 주파수 영역으로 변환하면 단순한 주파수 성분들의 조합으로 분석할 수 있다. 이를 통해 신호의 성분을 쉽게 이해하고, 불필요한 노이즈를 제거하거나 원하는 주파수 대역을 강조할 수도 있다. 이번 시간에는 이러한 기초 개념을 중점적으로..

CS/임베디드 2024.10.08

[임베디드] 엔디안 방식의 이해(2) with CAN Message

본문Big-endian  빅 엔디안 방식은 큰 값을 먼저 저장하는 방식이다. 예를 들어, 1234라는 숫자에서 1이 가장 중요한 숫자(MSB)가 되는 방식이다. 빅 엔디안에서는 이 작은 값이 메모리의 앞쪽에 저장되고, 작은 값(LSB)이 나중에 저장된다.  이 방식은 사람이 숫자를 읽는 방식과 동일하게 데이터를 저장하기 때문에, 디버깅이나 사람이 데이터를 직관적으로 이해하기에 매우 용이하다. 예를 들어, 32비트 정수 0x12345678을 빅 엔디안 방식으로 저장하면 메모리 상에 12 34 56 78 순서로 저장되며, 이는 우리가 숫자를 읽는 순서와 일치한다.  빅 엔디안 방식은 네트워크 프로토콜에서 표준적으로 사용되는데, 이를 "네트워크 바이트 오더"라고 부른다. 이 덕분에 네트워크 통신에서 일관성을 ..

CS/임베디드 2024.09.30

[파이썬] 에러 로깅 클래스

Error Logging개요   파이썬으로 프로그램을 개발하여 exe 파일로 빌드한 후 테스트할 때, 종종 콘솔창을 제외한 형태로 실행 파일을 만들곤 한다. 하지만 이 경우 오류가 발생하더라도 콘솔창이 없어 문제를 파악하기가 어렵다. 이러한 실행 파일의 런타임 환경 등에서 발생하는 오류를 기록하기 위해 사용하는 모듈이 바로 logging이다. 이번 시간에는 이 logging 모듈을 활용해, 프로그램 실행 중 에러가 발생하면 같은 디렉터리에 에러 내용을 담은 텍스트 파일을 자동으로 생성하는 클래스를 구현해 보겠다. 본문 로깅 모듈을 통해 에러를 검출하고 처리하기 위한 최소한의 구성 요소는 다음과 같다.  1. 로그 레벨: 로깅 모듈에서는 로그를 다음과 같은 레벨로 나눈다. 로그를 남길 메시지의 특성에 따라..

Language/Python 2024.09.28

[파이썬] GUI(tkinter) 멀티스레딩 with CAN Message

GUI Multithreading개요  지난 파이썬 tkinter를 다루는 게시글엔 화면의 배율에 따라 위젯들의 크기가 동적으로 변하는 것에 대해 학습하였다. 이번 시간에는 특정 이벤트가 발생할 때마다 해당 내역을 업데이트 방법에 대한 내용을 다뤄보도록 하겠다. 본문개념  본격적인 내용에 들어가기에 앞서, 동기/비동기, 동시성/병렬성, 그리고 멀티쓰레딩/멀티프로세싱의 개념을 알고 있으면 이해가 훨씬 수월하다. 필자는 이 개념들을 해당 블로그를 통해 참고했으며, 만약 아직 해당 개념에 대한 이해가 부족하다면, 블로그 등을 통해 먼저 확인하는 것을 추천한다. 다만, 이 개념들이 다소 복잡하고 어려울 수 있지만, 실무에서 이를 구현하는 데 있어 반드시 완벽한 이해가 필요하지는 않다.   오늘의 목표는 'CAN..

Language/Python 2024.09.27

[임베디드] 엔디안 방식의 이해(1) with CAN Message

Endianness개요   엔디안(Endianness)은 컴퓨터 시스템에서 데이터를 메모리나 전송 매체에 저장할 때, 그 배열 순서를 결정하는 개념이다. 즉, 엔디안은 숫자나 다중 바이트 데이터(예: 16비트, 32비트, 64비트 등)를 저장하거나 전송할 때, 어떤 순서로 배열할 것인지를 나타낸다. 이 순서는 시스템의 하드웨어 구조에 따라 달라지며, 특히 메모리, 파일 포맷, 네트워크 통신 등에서 중요한 역할을 한다. 엔디안은 크게 빅 엔디안(Big-endian)과 리틀 엔디안(Little-endian)으로 나뉜다.  엔디안이 중요한 이유는 시스템 간 데이터 전송 시 엔디안의 차이는 호환성 문제를 일으킬 수 있기 때문이다. 따라서 데이터 전송 표준(예: 네트워크에서는 주로 빅 엔디안을 사용)이나 프로토콜..

CS/임베디드 2024.09.26

[파이썬] 반응형 GUI

화면 해상도(DPI) 인식개요  GUI 프로그램을 개발할 때는 다양한 디스플레이 환경을 고려해야 한다. 예를 들어, 동일한 1920 x 1080 해상도에서도 디스플레이 배율에 따라 프로그램의 크기와 배치가 달라질 수 있다. 따라서 디스플레이 해상도와 배율을 적절히 반영하는 것이 중요하다. 이전에 C# WinForm에서는 이를 다뤘지만, 이번에는 파이썬을 사용해 디스플레이 환경을 고려하는 방법을 살펴보도록 하겠다. 본문ctypes  ctypes는 파이썬에서는 외부 C 라이브러리에 쉽게 접근할 수 있게 해주는 모듈이다. C와 파이썬은 서로 다른 데이터 타입을 사용하지만, ctypes는 파이썬 타입을 C 데이터 타입에 매핑하는 기능을 제공한다. 일반적으로 플랫폼 의존적인 기능에 대한 직접적인 접근과 정확성을 ..

Language/Python 2024.09.23

[C#] 타입(1) 값 형식의 변수

값 타입개요  타입(Type)은 변수의 형식이며 길이나 값을 해석하는 방식을 결정한다. 즉, 데이터의 특성을 정의하고, 해당 데이터를 어떻게 저장하고 조작할지 결정하는 중요한 요인이다. C#에서는 위의 표와 같이 타입을 크게 값 타입과 참조 타입으로 나눌 수 있다. 값과 참조에 대해 깊게 고찰해봐야 하지만, 이는 추후에 다루기로 하고, 값 타입의 변수들에 대해 먼저 알아보자.본문값 타입 값 타입(Value Type)이란 스택에 할당되며 변수가 직접 값을 가지는 형식을 의미한다. 일반적으로 크기가 작고 길이가 일정한 값을 저장하며, 선언하는 즉시 기억 장소에 할당되어 바로 사용할 수 있다. 또한 값 타입은 클래스의 멤버나 메서드의 지역 변수로 선언될 수 있으며, 다른 언어들과 마찬가지로 자료형과 이름으로 ..

Language/C# 2024.08.06

[C#] C# 개요 및 입출력

개요C# 개요개요   C#은 Microsoft가 개발한 현대적이고 강력한 객체지향 프로그래밍 언어로, 다양한 응용 프로그램을 개발하는 데 사용된다. C#은 .NET Framework와 .NET Core(현재는 .NET 5+로 통합됨)에서 주로 사용되며, 가비지 컬렉션 기능을 내장하여 메모리 관리를 자동으로 수행한다. 다음은 C#의 주요 특징이다. 완전한 객체지향 언어C#은 클래스와 객체를 중심으로 설계된 완전한 객체지향 언어상속, 다형성, 캡슐화 등의 객체지향 프로그래밍의 핵심 개념을 지원 가비지 컬렉션C#은 가비지 컬렉션을 통해 불필요한 메모리를 자동으로 해제개발자가 직접 메모리를 관리할 필요가 없어 메모리 누수를 줄일 수 있음 안전한 코드포인터를 기본적으로 제공하지 않으며, 안전하지 않은 코드 영역(..

Language/C# 2024.08.05