본문 바로가기

전체 글

(124)
[Kotlin] Null-Safety와 형 변환(Type Cast), 타입 체크(Type Check), 예외(Exception) 처리 개요 오늘은 코틀린의 Null-Safety와 타입 체크(Type Check), 예외 처리(Exception)에 대해서 알아보도록 하겠습니다. null이란? 프로그래밍에서 "null"은 값이 존재하지 않음을 나타내는 특별한 상태를 가리키는 데 사용됩니다. 이는 일반적으로 변수나 참조가 아직 초기화되지 않았거나, 값이 할당되지 않았을 때 발생합니다. null 값은 다음과 같은 상황에서 사용될 수 있습니다. ① 초기화되지 않은 변수 변수가 선언되었지만, 아직 값을 가지고 있지 않을 때, 이 변수는 일반적으로 null로 설정됩니다. ② 객체의 빈 참조 객체를 가리키는 참조가 없을 때 해당 참조는 null로 설정됩니다. ③ 메모리 할당 실패 동적으로 메모리를 할당하려고 시도했지만 실패한 경우, 변수는 null을 ..
[운영체제] 디스크 스케줄링 개요오늘은 디스크 스케줄링에 대해서 알아보도록 하겠습니다.요즘 컴퓨터에서 사용하는 저장장치의 종류는 정말 다양해졌습니다.과거에는 플로피 디스크라고 해서 오늘날의 ‘저장’ 버튼에 해당하는 저장장치부터 시작해서 하드 디스크, 그리고 SSD까지 시간이 지날수록 저장소의 저장 속도는 빨라졌고, 용량은 많아졌습니다. 이러한 눈부신 저장장치의 하드웨어적 발전 속에서,디스크 스케줄링은 다소 생소한 개념이 된 것 같습니다. 디스크 스케줄링은 컴퓨터 디스크에서 정보를 빠르고 효율적으로 입출력하기 위해 고안된 스케줄링 전략입니다. 지금까지 운영체제는 주로 CPU와 같이 비교적 비싼 자원에 대해서 어떻게 관리하고 있는지 소개했는데요. 오늘은 운영체제가 플로피 디스크부터 하드 디스크, SSD까지 외부 저..
[Dart] Dart 기본 문법4 [비동기, async, await, Future, Stream] 개요 오늘은 프로그래밍에서 중요한 동기(synchronous), 비동기(asynchronous) 에 대해서 알아보도록 하겠습니다. 우선, 동기와 비동기가 무엇인지 알아보고 dart에서는 어떻게 비동기 프로그래밍을 할 수 있는지 살펴보겠습니다. 오늘의 포스팅에서 소개할 내용은 아래와 같습니다. 동기, 비동기 Future Async Await Stream BroadCastStream 비동기 함수의 Starem 변환 동기(synchronous) vs 비동기(asynchronous) 기본적으로 대부분의 프로그래밍 언어는 코드를 작성한 '순서'대로 작업을 수행합니다. 지난 포스팅에서 지금까지 dart를 통해 작성한 프로그램도 엄밀히 구분하자면 '동기'적으로 실행되었습니다. 동기, 비동기 프로그램의 동작 흐름을 그..
[Dart] Dart 기본 문법3 [클래스, 생성자, 오버라이딩, static, 추상, 제네릭] 개요 오늘도 이어서 Flutter의 프로그래밍 언어인 Dart의 문법에 대해서 알아보겠습니다. 오늘의 포스팅에서 소개할 문법은 아래와 같습니다. 클래스와 인스턴스 클래스의 생성, 프로퍼티와 메서드 생성자와 생성자, 그리고 오버로딩 상속과 오버라이딩 private와 getter setter 정적 변수 static 추상과 인터페이스 믹스인(Mixin) 제네릭(Generic) 케스케이드 연산자(Casecade Operator) 이중에서 특히 믹스인(Mixin)과 케스케이드 연산자는 dart 문법의 특징 중 하나이므로 잘 알아두시면 좋을 것 같습니다. 1. dart의 클래스와 인스턴스 객체지향 프로그래밍 언어에서 변수와 함수의 집합으로 구성된 데이터의 모음을 클래스 또는 객체 라고 부릅니다. 객체지향 프로그래밍..
[Dart] Dart 기본 문법2 [제어문, 반복문, 함수, 익명 함수, 람다 함수, 예외 처리(try-catch)] 개요 오늘도 이어서 Flutter의 프로그래밍 언어인 Dart의 문법에 대해서 알아보겠습니다. 오늘의 포스팅에서 소개할 문법은 아래와 같습니다. 연산자 제어문과 반복문 함수 익명 함수와 람다 함수 예외 처리(try-catch) 1. 연산자(Operator) 1.1 기본 연산자 dart에서 기본적인 사칙연산 및 나머지 연산은 아래와 같이 사용할 수 있습니다. void main(){ double number = 16; // dart의 사칙연산 + 모듈러 연산 print(number+2); // 18.0 print(number-5); // 11.0 print(number*1); // 16.0 print(number/4); // 4.0 print(number%3); // 1.0 // 단항 연산 number++;..
[Dart] Dart 기본 문법1 (기본 출력과 자료형) 개요 오늘은 Flutter의 프로그래밍 언어 Dart의 문법에 대해서 알아보겠습니다. 프로그래밍 언어의 문법은 경험상 부연 설명 보다는 샘플 코드를 살펴보는 것이 더 효율적으므로 몇 개의 챕터로 나누어 기본 문법에 소개하겠습니다. 오늘의 포스팅에서 소개할 문법은 아래와 같습니다. 출력문 변수의 선언 dynamic final과 const dart의 자료형 dart의 컬렉션(Collections) Enum 1. 출력문 DART의 출력문은 아래와 같습니다. void main(){ print('hello world!'); } 2. 변수의 선언 dart에서 변수의 선언은 var을 사용합니다. var는 타입 캐스팅을 지원하므로, 리터럴 값(1, false, "Hello World" 등)과 같은 실제 데이터가 입력되..
[Flutter] Flutter SDK 설치 및 환경 설정 개요 안녕하세요. 오늘은 Flutter의 설치 및 실행하는 방법에 대해서 알아보도록 하겠습니다. Flutter는 Goolge에서 개발한 오픈 소스 UI 프레임워크이며, Android IOS를 모바일 애플리케이션을 한 번에 개발하기 위해 사용될 수 있습니다. Flutter는 하나의 코드 베이스로 여러 플랫폼을 지원하는 만큼 개발의 효율성이 좋은데요. 이러한 Flutter를 사용하기 위해서는 다음과 같은 환경 설정이 필요합니다. 1. Flutter SDK 설치하기 Flutter는 아래의 사이트에서 SDK를 다운로드할 수 있습니다. https://docs.flutter.dev/get-started/install/windows Choose your first type of app Configure your sy..
[Android] 안드로이드 기기와 USB 외부 장치 개요 (OverView) 안드로이드에서 USB 장치와의 통신 및 상호작용은 AOA (Android Open Accessory)라는 기술에 의해서 지원됩니다. 가장 대표적인 사례로는 마우스, 로봇 컨트롤러, 키오스크, 카드리더기 등이 이에 해당합니다. 일반적인 사용자 환경에서는 보통 안드로이드 기기에 마우스나 키보드 같은 USB 외부 장치를 연결하면 자동으로 HID(Human Interface Descriptor)라는 기술을 통해 통신이 지원되고 따라서 안드로이드 장치 내에서 USB 장치를 사용할 수 있습니다. 서로 다른 두 장치(하드웨어)를 서로 USB(Universal Serial Bus)로 연결하면 일어나는 일 마우스, PC, 스마트폰 등 다양한 하드웨어 장치를 USB로 서로 연결하면 두 장치는 US..