무기 43

[다트] enhanced enum - String 값으로 Enum 값 얻기

🎯 Dart 언어에서의 enhanced enum은 기존의 열거형(enum)에 더 많은 기능을 추가하여, 각 열거형 값에 메서드를 추가하거나, 계산된 프로퍼티를 포함시킬 수 있게 해줍니다. 이는 코드의 가독성과 유지 보수성을 크게 향상시킬 수 있는 강력한 기능입니다. Enhanced Enum의 주요 특징 - 메서드 추가: 각 열거형 값에 대해 메서드를 정의할 수 있습니다. - 프로퍼티 추가: 열거형 값에 계산된 프로퍼티를 추가할 수 있습니다. - 타입 안전성: 열거형을 사용함으로써 코드 내에서 타입 안전성을 보장받을 수 있습니다. String 값으로 Enum 값 얻기: Static Method 예시 enhanced enum을 사용하여 String 값을 입력받아 해당하는 열거형 값을 반환하는 static m..

무기/다트 2024.02.17

<다트> Stopwatch - 함수 호출 완료 시간 검토

🧭 함수 호출 시간 개발을 하다보면 함수 호출이 완료되기 까지 시간이 얼마나 걸리는지 확인해야 할 필요가 있거나 확인하고 싶을 때가 있습니다. Stopwatch 이럴 때 사용하는 클래스가 Stopwatch입니다. 바로 사용해 보겠습니다. void yourFunction() { final stopwatch = Stopwatch()..start(); // something to do... stopwatch.stop(); print('Microseconds:${stopwatch.elapsedMicroseconds}'); } 함수 시작시 stopwatch를 start하고, 종료 직전 stop하면 함수 안에서 시간이 얼마나 소요되는지 확인할 수 있습니다. 📌 https://api.flutter.dev/flutte..

무기/다트 2023.04.08

<다트> == true, == false 사용하지 마세요

🧭 == true, == false nullable 타입의 변수의 null 여부에 따라 조건문을 분기하는 경우가 있습니다. 첫번째 방법은 변수?.isEmpty == true 처럼 null 인 경우 false가 되도록 판단하는 것입니다. 두번째 방법은 변수?.isEmpty ?? false 처럼 사용하는 것입니다. 저는 두번째 방법을 추천드립니다. 이유는 2가지 입니다. 우선 변수가 null 이면 false 라고 쉽게 파악할 수 있습니다. 첫번째 방법을 사용한 경우 null은 true가 아니니까 false 구나라고 한단계 더 생각해야 합니다. 다음으로 해당 값이 null일 수 없는 경우를 바로 알 수 있습니다. null이 아닌 경우 dart lint 도구가 필요없는 코드라고 hint를 줄 것입니다.

무기/다트 2022.11.17

<Dart> 객체의 DateTime 값을 기준으로 정렬

🧭 sort list의 sort 메서드를 활용하면 list를 정렬할 수 있습니다. sort 메서드의 인자로는 비교함수를 대입하게 됩니다. 단순 오름차순/내림차순의 경우에는 비교함수를 생략하고 sort() 메서드의 호출만으로 정렬이 됩니다. sort 메서드는 원본 list를 변경하는 파괴적 메서드입니다. compareTo 정렬 기준이 단순 값이 아닌 객체의 특정 프로퍼티 등인 경우에는 compareTo 함수를 통해 비교하게 됩니다. list.sort((a, b) => a.dateTime.compareTo(b.dateTime)); DateTime 타입은 추가 가공없이 compareTo로 비교 가능합니다. 📌 https://api.flutter.dev/flutter/dart-core/List/sort.html..

무기/다트 2022.10.24

<타입스크립트> 너의 의미: 협업

🚀 타입스크립트(이하 'TS')는 필수처럼 되었습니다. 자바스크립트(이하 'JS')를 배우기 전에 TS로 시작해도 되냐는 말도 보입니다. TS에 대한 관심이 뜨거운 것 같습니다. 그렇다면 TS가 어떤 의미인지 가볍게 짚어 보겠습니다. 타입 말그대로 TS는 타입과 관련된 언어입니다. 자유로운 JS에 타입이라는 제약을 가하게 됩니다. 물론 JS에 타입이 없는 것은 아니지만 구렁이 담넘듯 타입이 휙휙 변하는 JS와 달리 TS에서는 타입이 정적으로 유지됩니다. 타입이란 우리가 흔히 사용하는 Number, String, Object부터 any 같은 TS 특유의 타입까지 다양합니다. 타입이라는 굳이 없던 제약을 가하는 것이 당장은 불편하게 느껴지기도 합니다. 에러 발생 TS는 에러가 발생하는 시점을 앞당겨 줍니다...

<타입스크립트> 익스프레스, 타입스크립트로 마이그레이션

🎯 1. (선택) 타입스크립트 설치 $ npm i -g typescript 1. tsc 명령어를 사용하기 위해 typescript 전역으로 설치 2. 프로젝트 내에 설치해도 되며, 뒤에 설명하겠지만 프로젝트 내에 설치하는 것을 추천 2. 타입스크립트를 활용하기 위한 라이브러리 설치 $ npm i -D typescript ts-node @types/node @types/express 1. typescript - npx tsc를 사용하기 위해 devDependencies에 포함 (팀원들과 동일한 ts 버전을 사용하기 위해 필요) 2. ts-node - Node.js를 위한 TypeScript 실행 엔진이자 REPL (TS 파일을 실행하면 JS 파일로 해석해서 실행 => node 명령어 + tsc 명령어처럼 ..

<파이썬> 파이썬 기초 문법 for 코딩테스트

🎯 { 파이썬 기초 문법 정리 } * 은 값을 반환하는 비파괴적인 명령어, 은 원본을 변경하는 파괴적인 명령어 연산자 num // 2 => 나눗셈 후의 몫을 문자열 문자열.upper() => 대문자로 바꾼 문자열을 문자열.lower() => 소문자로 바꾼 문자열을 문자열.strip() => 양옆 공백을 제거한 문자열을 문자열.find(문자) => 문자가 첫 등장하는 인덱스를 문자 in 문자열 => 문자가 있나없나 True/False 문자.split(문자열) => 문자를 기준으로 분해한 문자열을 배열로 문자열.sort() => 불가. sort()는 원본을 변경하는데 원시 값은 원본 변경이 불가능. 애초에 해당 메서드도 없음. sorted(문자열) => 문자열을 문자들로 쪼개고 정렬한 리스트를 리스트 (문자..

무기/파이썬 2022.03.11

<타입스크립트> 타입 별칭 vs 인터페이스

🎯 { 타입 별칭 vs 인터페이스 } 타입스크립트에서 기능이 비슷해 보이는 타입 별칭(type alias)과 인터페이스(interface)를 비교해 보고자 합니다. 1. 구현 문법 타입 별칭 type Pizza = { calories: number salty: boolean tasty: boolean } 인터페이스 interface Pizza { calories: number salty: boolean tasty: boolean } 2. 타입 확장 타입 별칭 type PineapplePizza = Pizza & { pineapple: boolean } 인터페이스 interface PineapplePizza extends Pizza { pineapple: boolean } 3. 중복 선언 타입 별칭은 동일..

<JavaScript> reduce() 메서드

🎯 { reduce() 메서드 } 무엇인가요? 배열의 각 요소에 대해 리듀서(reducer) 함수를 실행하고, 하나의 결과값을 반환하는 배열 고차 함수입니다. 어떻게 사용하나요? const array1 = [1, 2, 3, 4]; const reducer = (previousValue, currentValue) => previousValue + currentValue; // 1 + 2 + 3 + 4 console.log(array1.reduce(reducer)); // 10 // 5 + 1 + 2 + 3 + 4 console.log(array1.reduce(reducer, 5)); // 15 reduce 메서드 구성: reduce(reducer, initialValue); reducer 함수 구성: re..