반응형 전체 글407 Android Studio 에서 기억해야 하는 핵심 단축키 안드로이드 스튜디오를 사용할 때 코드사용에 큰 도움을 주는 단축키들이 많이 있습니다.이런 것들은 자주 사용하면서 기억해 두면 생산성이 높아지는데 큰 도움을 주는데요.이 글에서 정리해 보도록 하겠습니다. 1. 찾기1-1. 전체 파일에서 코드 찾기아래 단축키로 특정코드를 전체 파일에서 찾아볼 수 있습니다.Command + Shift + F1-2. 클래스 파일 이름으로 찾기아래 단축키를 사용하면 클래스 파일만 이름으로 찾을 수 있습니다. Cmd + O 1-3. 파일이름으로 찾기기준을 클래스 파일이 아니라,모든 파일이름으로 할 경우는,다음 단축키를 사용해 줍니다.Cmd + Shift + O1-4. 모든 것을 기준으로 찾기파일이름, 클래스이름, 심볼이름, 텍스트 이름 등,모든 것을 기준으로 찾을 때는 아래 단축.. 2025. 2. 13. node-cron 이용한 작업 예약 방법 정리 오늘은 NodeJS의 node-cron 모듈을 이용한 작업 예약 방법에 대해 정리하겠습니다. 1. 모듈 인스톨과 require 해 주기가장 먼저해야할 것은 모듈을 인스톨 하는 것 이지요.아래 명령어로 node-cron 모듈을 설치해 줍니다. npm install --save node-cron 설치한 node-cron을,코드에서 사용하기 위해,아래와 같이 require()명령어로 불러와 줍니다. const cron = require('node-cron'); 3. Cron 표현식본격적으로 node-cron으로 job을 설정하기 전에 알아둘 것이 있는데요.예약할 작업의 실행시간을 설정하는,크론표현식입니다.6자리로 나와있지만,가장 앞의 초단위는 선택사항으로,거의 사용하지 않으니, 5자리라고 생각하시면 됩니다... 2025. 2. 6. SQLite의 Coalesce 함수 총정리하기 오늘은 SQLite의 Coalesce 함수에 대해 정리해 보겠습니다. 1. Coalescecoalesce의 원래 뜻은 "합쳐지다" 또는 "병합하다"인데요.데이터베이스 나 SQL에서는,NULL 값을 다른 의미 있는 값으로 대체하는 데 주로 사용됩니다. SQL문에서는 여러개의 표현식 중,NULL이 아닌 첫 번째 값을 찾아서 반환합니다. COALESCE(expression1, expression2, ..., expressionN) 예를 들어,아래에서 쿼리는 첫번째 NULL이 아닌,'Hello'를 반환합니다. SELECT COALESCE(NULL, NULL, 'Hello', 'World'); 2. 예제예제를 보면서 COALESCE를 좀 더 이해해 볼까요.먼저 직원 테이블을 아래와 같이 만듭니다. CREATE .. 2025. 1. 24. Kotlin Smart Cast(스마트캐스트) 총정리 오늘은 Kotlin의 Smart Cast에 대해 정리하겠습니다. 1. Smart Cast(스마트 캐스트)Smart Cast(스마트캐스트)는 이름 자체에서 알 수 있듯이,컴파일러가 타입을 자동으로 추론해서,명시적으로 타입을 변환하지 않아도,사용하도록 해주는 기능입니다. 타입을 검사하고, 변환하는 것까지,자동으로 Smart하게 해주는 것 이지요. 이를 이용하면,코드가 짧아져 가독성이 좋아지고,유지보수성도 좋아집니다. 2. is를 사용한 Smart Cast2-1. is smart cast가장 기본적인 스마트 캐스트의 사용법은,is 키워드를 사용해,변수의 타입을 검사한 후,해당 타입으로 자동 캐스트하는 것 입니다. 아래는 'is'키워드를 사용해,any의 타입검사를 하고,String에 해당하면 String으로 변.. 2025. 1. 22. StateFlow 정리 # Android Kotlin Coroutine getStateFlow StateIn 오늘은 Kotlin의 StateFlow 에 대해서 정리해 보도록 하겠습니다. StateFlow도 Flow API의 하나인데요.Flow에 대한 내용은 아래 글을 참조해 주세요.>> Kotlin Coroutine Flow 총정리 part3 # launchIn 이 글은 아래의 순서대로 정리되어 있습니다.StateFlowStateFlow 구현(학생 및 admin 등록과 조회)MutableStateFlow에 값을 변경하는 방법StateFlow의 값에 접근하는 방법Sealed Class와 함께 사용하기StateInsavedStateHandle과 같이 사용하기 1. StateFlowStateFlow는 업데이트가 가능한 데이터 값을 가지는 State라는 것을 가지고,collector에게 emit(전파)하는 인터페이스인.. 2025. 1. 22. Gravity와 Layout_Gravity 의 구분법 정리 XML로 UI를 그리면서,헷갈리는 속성2가지가 있는데요.바로 gravity와 layout_gravity입니다. 이 둘은 같은 텍스트가 포함되어 있어,뭐가 다른건지 차이를 알기 어려운데요.오늘은 이 두 속성의 차이를 구분해 보겠습니다. 1. GravityGravity는 뷰 내부 콘텐츠의 위치를 지정합니다.해당하는 뷰의 자식뷰들을 어디에 배치할지를 결정합니다. 아래는 TextView인데요.TextView내부의 Text들의 배치를 center로 결정하였습니다. 아래에서 사용된 gravity="center_vertical|start"는,버튼 내부에서,아이콘과 텍스트를,세로방향에서는 중앙(center_vertical)에 위치시키고가로로는 시작 부분(start, 왼쪽)에 배치합니다 2. Layout_.. 2025. 1. 21. NodeJS Handlebars helper 함수 사용 방법 총정리 오늘은 NodeJS에서는 뷰템플릿 엔진인 Handlebars에서,사용하는 helper 함수 사용방법에 대해서 정리해 보겠습니다. handlebars에 대해서는 아래 글을 참조해 주세요.>> Handlebars 사용방법의 모든 것: Nodejs 뷰 템플릿 엔진 Handlebars 사용방법의 모든 것: Nodejs 뷰 템플릿 엔진NodeJS와 함께 널리 사용하는 뷰템플릿 엔진인 Handlebars에 대해 정리하겠습니다. 1. Handlebars Handlebars는 JavaScript 템플릿 엔진입니다. 웹 애플리케이션에서 동적으로 HTML을 생성하는 데 사용되는데요.developer88.tistory.com 1. Helper함수헬퍼는 템플릿에서 호출할 수 있는 함수인데요.데이터와 템플릿 사이에서,내장함수만.. 2025. 1. 18. Git 커밋 메시지 간결하게 작성하는 방법 정리 커밋 메시지는 프로젝트의 히스토리를 명확하게 하고,팀 협업을 원활하게 해 주는데요. 저는 소규모 개인프로젝트를 하기에,큰 단위로 작업하고 커밋을 정리해 올리기보다는,작은 작업단위로 자주 올리는 것을 선호합니다.그래서 커밋 메시지도 많이 고민해서 쓰는 방법보다는,간결하게 작성하는 법을 익혀,자주 커밋하는 방식을 취하는데요. 오늘은 간결하게 Git 커밋 메시지 작성하는 방법에 대해 알아보겠습니다. 1. 커밋 메시지 형식커밋 메시지를 작성하는 형식은 여러 가지가 있지만,아래의 형식이 주로 많이 사용됩니다. (): 위에서 사용된 요소들은 다음과 같은 의미를 가집니다.타입: 커밋의 종류 (예: feat, fix, docs 등)범위: 변경한 파일이나 변경사항의 범위(선택사항)제목: 변경사항을 간단히 요약위의 형식.. 2025. 1. 17. SQLite NodeJS 모듈 이용해서 CRUD 구현하기 # DBBrowser SQLite3 오늘은 SQLite 데이터베이스에 대해 알아보고,NodeJS에서 SQLite3 모듈을 활용해,CRUD (생성, 읽기, 업데이트, 삭제) 작업을 구현해 보겠습니다.1. SQLite1-1. SQLiteSQLite는 C언어로 개발된 라이브러리입니다.크기가 작고 속도가 빠르며 상대적으로 안정적인 특성을 가진 SQL 데이터베이스 엔진인데요.이러한 장점 덕분에 전 세계에서 가장 널리 사용되는 데이터베이스 엔진 중 하나로 자리잡았습니다. SQLite의 핵심 특징 중 하나는 모든 데이터베이스 정보를 단 하나의 파일에 저장한다는 점입니다. 이로 인해 여러 테이블, 인덱스, 스키마 등을 포함한 모든 데이터를 한 파일 안에 담을 수 있으며, 데이터베이스 서버를 별도로 구동할 필요 없이 파일 하나로 쉽게 데이터베이스를 전송.. 2025. 1. 16. 리눅스에서 자주 사용하는 스크립트 사용법 총정리 오늘은 리눅스에서 자주 사용하는 스크립트 문법에 대해서,총정리해 보겠습니다. 1. Bash shell 사용선언스크립트의 가장 첫 줄에는 아래와 같은 코드로,어떤 shell을 사용할지 선언해주는데요.이를 shebang이라고 부릅니다. 보통, 아래와 같이 bash쉘로 선언해 줍니다. #!/bin/bash 2. 변수 선언 방법변수를 선언할 때는 공백 없이 = 기호를 사용합니다. 대신 변수를 사용할 때는 $기호를 앞에 아래와 같이 붙입니다. #!/bin/bashname="홍길동"echo "안녕하세요, $name 님!" 위와 같이, echo 명령어를 이용하면 원하는 문구를 화면에 출력할 수 있습니다. 3. read 명령어로 사용자 입력받기3-1. 입력받아 변수에 저장하기사용자로부터 입력을 받아서 변수에 저장할.. 2025. 1. 14. Coroutine Async와 await 사용시 Exception Handling 방법 정리#Kotlin Coroutine에서 비동기 코드에서의 반환 값이 필요할 때,코루틴 빌더인 async와 await()함수를 사용합니다. 하지만 이 API들은 Exception을 핸들링 할 때 주의가 필요한데요.오늘은 async와 await() 사용시,Exception을 핸들링 하는 방법에 대해 알아보겠습니다. 1. async 예외 전파 이해하기코루틴 빌더인 async와 await함수를 사용시,Exception핸들링을 하려면,코루틴의 예외 전파방식에 대해 이해해야 하는데요. 먼저 보아야 할 것이,코루틴 빌더인 async의 리턴타입입니다.아래와 같이 Deferred타입인데요.이 타입은 아래 보이는 것처럼, Job을 상속받고 있습니다. 코루틴 빌더인 async는,Job을 통해 부모-자식 관계가 형성되구요.Exception.. 2025. 1. 13. 도메인의 모든 것: 이해부터 실제 등록까지 웹사이트 개설에는 도메인이 필수적입니다.도메인은 인터넷상의 주소로,등록을 통해 사용자들이 웹사이트에 접속할 수 있게 해 주는데요.오늘은 도메인과 관련된 용어들을 이해하고,실제 가비아에서 등록하는 과정까지를 알아보겠습니다. 1. 도메인1-1. 도메인인터넷은 수많은 컴퓨터들이 서로 연결되어 있는 거대한 네트워크인데,각 컴퓨터는 인터넷에 연결되 있는 동안,유일한 IP 주소를 가지도록 되어 있습니다. 이때 IP주소들은 모두 숫자로 구성되어 있는데요.예를 들면, '192.0.2.1'과 같습니다. 실제로 궁금하다면,주소창에, "ifconfig.me"를 입력해 보세요.여러분 컴퓨터의 ip주소가 나오는 것을 볼 수 있습니다. 그런데, 이런 숫자로 된 주소는 기억하기 매우 어렵습니다.그래서, 네트워크의 컴퓨터들의 구분.. 2025. 1. 10. 코루틴 Flow vs StateFlow vs SharedFlow vs LiveData 총정리 하기 Android와 Kotlin의 코루틴이 계속 발전하면서,리액티브(반응형) 프로그래밍을 구현한 다양한 API들이 많이 나왔습니다.특히 데이터 스트림을 다루는Flow, StateFlow, SharedFlow, LiveData는비슷해 보이지만 각각 다른 특징을 가지고 있는데요.오늘은 이 4가지 API를 철저히 비교해서 총정리해 보겠습니다. 1. Flow, StateFlow, SharedFlow, LiveData 표로 비교하기Flow, StateFlow, SharedFlow, LiveData의 특징들을 살펴보고,아래에서 표로 자세히 비교해 보겠습니다.Flow: 코루틴 기반의 거대한 API로 콜드(Cold) 스트림이며, Collect()될 때마다 새로운 스트림을 생성합니다.Backpressure도 지원하는 대표적.. 2024. 12. 30. Android Intent 결합시 사용하는 OR 비트 연산자 안드로이드에서 Intent를 결합해 사용하는 경우가 종종 있습니다.이럴 때 OR 비트연산자를 사용하면, 코드가 간결해지는데요.오늘은 이렇게 Intent 결합 시에 사용하는 OR 비트 연산자에 대해 알아보겠습니다. 1. Intent에서 사용하는 OR 비트 연산자Intent를 결합할 때 사용한다고 하는 비트 연산자를,실제 코드를 보겠습니다.아래에서는 FLAG_ACTIVITY_CLEAR_TOP과 FLAG_ACTIVITY_NEW_TASK를 OR 비트 연산자로,같이 add해 주었습니다.아래의 'or'은 OR 비트 연산자를 의미합니다.여기서는 2개의 flag를 다 사용하겠다는 의미가 됩니다. Intent(this@SplashActivity, destinationActivity) .addFlag.. 2024. 12. 21. Android API key 값 안전하게 Local.properties 에 보관하기 API 키 값을 github에 직접 보관하는 일은 위험합니다.그래서 안드로이드앱을 개발하는 경우,Local.properties를 활용해서 안전하게 보관해야 하는데요.오늘은 이 방법에 대해서 정리하겠습니다. 1. local.propertieslocal.properties파일은 다음의 목적으로 존재합니다.안드로이드 SDK위치 저장: 개발자마다 다를 수 있기 때문에, local.properties에 저장해서 사용민감한 정보 보호: API키, 비밀번호등을 안전하게 저장개발자별로 다른 설정local.properties는 대부분 '.gitignore'파일에 포함되어 있지만,중요한 값을 넣기전에, 한번 더 확인해 보아야 합니다. Gradle빌드시에 이 파일의 정보를 사용할 수 있게 해주므로,안전하게 값을 사용할 수 .. 2024. 12. 18. BuildConfig 와 ProductFlavors 정리 # BuildConfigField vs ResValue 오늘은 BuildConfig와 ProductFlavor에 대해 정리하겠습니다. BuildConfig는,빌드별로 다른 상수값을 사용하기 위한 클래스인데요.아래의 2가지 함수를 제공해 줍니다.BuildConfigFieldResValue ProductFlavors는,기본 기능은 같지만,약간 다른 타입의 앱번들(cbt, real 버전등)을 생성해 주는데요.그래서 릴리즈 할 때 유용하게 사용됩니다. 둘 다, 빌드설정과 관련하여 많이 사용하는 기능들인데요.먼저 BuildConfig부터 알아보겠습니다. 1. BuildConfig1-1. BuildConfigField와 resValueBuildConfig클래스의, BuildConfigField와 resValue는, 빌드별로 다른 값을 가지도록 할 때 사용합니다. 안드로.. 2024. 12. 18. 안드로이드 Cache 디렉토리 이용해 xml 화면 공유하기 오늘은 안드로이드 Cache 디렉토리를 이용해,xml로 구성된 화면을,이미지 파일로 생성해 공유하는 방법을 보겠습니다. 구체적인 구현방법을 알아보기 전에,이미지 공유를 위해서,안드로이드 저장공간 중,왜 Cache 디렉토리를 이용해야 하는지부터,알아보겠습니다. 1. 안드로이드 Cache를 사용하는 이유저장소에 대한 권한은 계속 바뀌어 왔습니다.프라이버시를 강화한 것이라고 하지만,안드로이드 버전별 코드 파편화가 심해지는 현상 때문에,구현하는 개발자 입장에서 테스트해야할 기기도 많아졌고,동적권한 관련해서 코드도 복잡해 졌습니다. 그래서 저는 항상 권한으로부터 자유로운 공간들을 사용할 수 없는지부터 판단합니다.이러한 공간에서 해결할 수 없는 저장공간에 대해서만,복잡하게 파편화된 코드를 사용하는 것 이지요. 이렇.. 2024. 12. 10. 안드로이드 Webp이용해 이미지 용량 줄이는 방법 앱의 용량을 줄이고 로딩속도를 늘이는데,코딩도 중요하지만 이미지 용량을 줄이는 것도 중요합니다.안드로이드 스튜디오를 이용하면,이미지 파일을 Webp로 전환하하여 용량을 크게 줄일 수 있는데요.오늘은 이 방법을 알아보겠습니다. 1. Webp 이미지 파일Webp는 Google에서 만든 이미지 파일형식입니다.안드로이드와 안드로이드 스튜디오에서도 사용이 가능한데요.사실 저희에게는 거창한 알고리즘 보다,png나 jpg보다 얼마나 사이즈를 줄일 수 있느냐가 중요한데요.약 70%까지도 줄일 수 있다고 합니다. 2. 손실 압축 방식과 무손실 압축 방식webp는 JPEG와 같은 손실압축방식과 PNG와 같은 무손실 압축방식을 모두 다 지원하는데요.API레벨 18이상에서는 PNG와 같은 무손실 압축과 투명배경 지원도 가능합.. 2024. 11. 15. 이전 1 2 3 4 5 ··· 23 다음