본문 바로가기

프로그래밍177

[Flutter] 카카오톡 공유 카카오톡 공유하기 버튼을 누르면 정해진 메세지를 선택한 친구한테 보낼 수 있는 기능을 구현해보았다! Flutter 카카오톡 공유하기 기능 kakao developers 내 어플리케이션 등록 및 설정 기능을 구현할 어플리케이션을 등록하는 과정은 생략하겠다. 궁금하다면 아래 포스팅에 자세하게 설명되어 있으니 참고 바람! https://cording-cossk3.tistory.com/208 [Flutter] Kakao Map api 사용하기 카카오 developer 사이트 바로가기 카카오계정 accounts.kakao.com [ + 애플리케이션 추가하기] 클릭 앱 이름, 사업자명 입력 후 저장 그럼 다음과 같이 리스트에 애플리케이션이 추가된 것을 확인 가능. cording-cossk3.tistory.com 등.. 2024. 4. 4.
[Flutter] Github를 이용하여 universal link, deep link 구현해보기 QR코드를 인식해서 앱이 설치되어 있으면 앱의 특정 페이지로, 설치되어있지 않으면 설치 페이지로 이동하기 위해 deep link에 대해 알아봤다. 제일 많이 사용하는 Firebase Dynamic link로 구현하려고 했지만, 2025년 8월 25일 부로 서비스가 종료된다고 해서 사용해도 나중가서 마이그레이션을 해야 하는 상황이 오면 또 이것저것 찾아보느라 시간 낭비할 것 같아서 Github를 이용하여 universal link, deep link를 구현해보았다. 다시 까먹지 않기 위해 포스팅을 쓴다. Android deep link project_name/android/app/src/main/AndroidManifest.xml Github로 웹호스팅을 할거니까 host 속성 값으로 user_name.g.. 2024. 3. 7.
Kotlin 배우기 (3) Contents 조건식 If 표현식 java와 달리 Kotlin에서는 변수에 값을 할당할 때 if-else if-else 표현식으로도 저장이 가능하므로 삼항연산자를 사용할 필요가 없다. max = if (a > b) a else b val maxLimit = 1 val maxOrLimit = if (maxLimit > a) maxLimit else if (a > b) a else b if 표현식의 분기는 블록 처리할 수도 있다. 또, 값을 반환하거나 변수에 값을 할당하는 경우에 if 표현식을 사용할 경우 else 분기는 필수로 사용되어야 한다. val max = if (a > b) { print("Choose a") a } else { print("Choose b") b } when 표현식 when 표현.. 2024. 2. 13.
PWM 펄스 폭 변조 (Pulse Width Modulation) PWM PWM이란 무엇인가? 펄스 폭 변조 (PWM)는 약식으로 사용되는 디지털 신호를 생성하기 위해 사용되는 기술입니다. 이 기술은 전압이나 전류를 제어하기 위해 주로 사용되며, 가변적인 폭의 펄스 신호를 생성하여 신호의 평균 전압이 원하는 수준으로 조절됩니다. PWM의 작동 원리 PWM은 주로 디지털 출력 회로를 이용하여 작동합니다. 이 회로는 제어 신호를 사용자가 원하는 대로 설정하고, 그에 따라 출력 펄스를 생성합니다. PWM 신호는 주기적으로 발생하는 펄스로 이루어져 있으며, 펄스 폭은 시간적으로 설정된 일부분 동안 주기 총 길이 중의 비율로 표현됩니다. 폭의 변조에 따라 출력 화면의 밝기, 모터의 회전 속도, 전압 또는 전류 흐름 등을 제어할 수 있습니다. PWM의 장점 효율적인 에너지 사용 .. 2024. 2. 7.
MSB와 LSB Contents 프로토콜 문서를 자주 접하다보면 바이트, 비트가 많이 보일 것이다. 그러다보면 많이 접했지만 정확한 뜻을 모르는 단어들이 많이 보인다. 그 단어들 중 이 포스팅에서는 MSB와 LSB에 대해 알아보려고 한다. MSB와 LSB MSB (Most Significant Byte, 최상위 바이트) 숫자 값의 크기에 가장 크게 영향을 미치는 유효 숫자이다. 즉, 그 숫자의 바이트 중에서 맨 왼쪽에 해당하는 바이트를 뜻한다. 10진수 100의 이진 표현으로 예를 들어보겠다. 0 (2^7) 1 (2^6) 1 (2^5) 0 (2^4) 0 (2^3) 1 (2^2) 0 (2^1) 0 (2^0) unsigned 타입에서의 MSB는 가장 갓이 큰 위치의 최상위 비트라는 점만 알아두면 된다. 하지만 signed .. 2024. 2. 7.
Kotlin 배우기 (2) Contents 2024.02.01 - [프로그래밍/Kotlin] - Kotlin 배우기 (1) 이전 포스팅에서는 기본 구문을 공부해봤다. 이번 포스팅에서는 Kotlin에서 자주 사용되는 관용어 위주로 공부할 예정이다. Kotlin Idioms 우선 공부하기 전에 알아볼 용어들이 있다. DTO, POJO, POCO 라는 용어들이다. 나는 DTO는 알고 있었지만 POJO, POCO는 들어보기만 하고 정확히 뜻은 알지 못해서 이번에 짚고 넘어갈 예정이다. DTO (Data Transfer Object) : 계층 간 (Controller, View, Business Layer) 데이터 교환을 위한 Java Bean을 의미한다. 로직을 가지지 않는 데이터 객체이고, getter와 setter 메소드만 가진 클래.. 2024. 2. 1.
Kotlin 배우기 (1) Contents 슬럼프가 길어져 약 1년 정도를 블로그도 쉬고 개발도 쉬었던 것 같다. 전에 공부했던 내용은 다 잊어버렸기 때문에 다시 리프레쉬하는 마음으로 Kotlin을 처음부터 새로 공부하려고 한다. Kotlin Basic Syntax (1) Kotlin 코틀린은 더 적은 코드와 가독성이 결합된 언어라고 한다. 그래서 보다 다른 개발자의 코드를 이해하기가 쉽다고 한다. google 내부 데이터에 따르면 Kotlin으로 구축된 앱은 충돌 가능성이 20% 적다는 결과가 있다. 또, 다중 플랫폼 개발을 지원한다는 장점도 있는 등 많은 이점이 있는 Kotlin 언어를 배워보려고 한다. Program entry point - 프로그램 진입점 Kotlin에서의 program entry point인 main 함수.. 2024. 2. 1.
[Flutter] Validation Pattern Validation Pattern 앱을 개발하다보면, 회원가입 페이지에서 유효성 검사가 필요할 때가 있다. 아이디, 비밀번호, 이메일, 전화번호 등.. 조건에 맞게 입력이 되었는지, 양식이 맞게 입력이 되었는지 검사가 필요하다. 이럴 때 사용하기 위한 validation pattern 들이 있다. id pattern 아래는 영문(소문자, 대문자), 숫자로 이루어진 n ~ m 자릿수의 아이디 유효성 검사 패턴이다. ※ 여기서 n, m은 숫자를 기입해줘야 한다. ^[a-zA-Z0-9]{n,m}$ email pattern 아래는 이메일 유효성 검사 패턴이다. ^[a-zA-Z0-9.a-zA-Z0-9.!#$%&'*+-/=?^_`{|}~]+@[a-zA-Z0-9-.]+\.[a-zA-Z]+ phone pattern 아.. 2024. 1. 29.
[Flutter] record type record 최소 3.0 버전 이상이 사용할 수 있는 record type에 대해 알아보려고 한다. 나는 회사 프로젝트 때문에 dart 2.19.6 버전을 사용중이라.. 대신 dartpad를 이용해서 사용해보았다. record syntex record는 소괄호로 묶인 named 필드 또는 positional 필드의 쉼표로 구분된 목록이다. var record = ('first', a: 2, b: true, 'last'); record type annotation은 괄호 안에 쉼표로 구분된 type list이다. 이를 사용해서 반환 타입과 매개변수 타입을 정의할 수 있다. (int, int) swap((int, int) record) { var (a, b) = record; return (b, a); } .. 2024. 1. 25.
[Flutter] metadata Contents metadata 메타데이터 주석은 @ 문자로 시작하고 그 뒤에 컴파일 타임 상수(예: deprecated)에 대한 참조 또는 상수 생성자에 대한 호출이 온다. Dart에서의 메타데이터 주석은 @Deprecated, @deprecated, @override, @pragma 4가지가 있다. @Deprecated class Television { /// Use [turnOn] to turn the power on instead. @Deprecated('Use turnOn instead') void activate() { turnOn(); } /// Turns the TV's power on. void turnOn() {...} // ··· } 커스텀 어노테이션 class Todo { final.. 2024. 1. 25.