본문 바로가기

분류 전체보기1345

[JAVA][Android] UTC 시간을 로컬 시간으로 변경하기 안녕하세요 오늘은 협정 세계시인 UTC 시간을 로컬 시간으로 변환하는 방법을 알아보겠습니다.  각 나라마다 시간이 다르기 때문에 우리는 소프트웨어를 개발할 때 한국 뿐 아니라전세계에서 서비스를 이용하는 유저들의 현지 시간이 다르다는 것을 고려하여야 합니다.  방법은 간단합니다. 세계 어디에서나 동일한 국제 표준시를 사용하여 로컬에서 현지 시간으로 변경해 주는 것입니다. 자바에서는 UTC 시간과 기기 위치 기반 로컬 시간을 반환하는 함수들을 제공합니다. 우리는 이 함수들을 사용하여 쉽게 형변환을 할 수 있습니다.   UTC 란?Universal Time Coordinated 의 약자로 1972년 1월 1일부터 시행된 국제 표준시를 의미합니다.그리니치 평균시(GMT) 에 기반하므로, GMT 로 불리기도 합니.. 2024. 8. 3.
[Nodejs]pug 활용하기 오늘은 pug를 활용하여 간단한 웹페이지를 만들어 보겠습니다. pug는 Node.js 와 브라우저들을 위한 자바스크립트 언어로 구현된 템플릿 엔진 입니다.pug를 활용하면 기존의 HTML 코드를 더욱 간결한 코드로 만들 수 있으며 동적 웹페이지를 만들시 생산성 향상에 도움을 줍니다.  1.프로젝트 생성 및 초기화mkdir 생성할 폴더명cd 방금 생성한 폴더명npm init -y => 원하는 경로에 폴더를 생성하고 해당 폴더로 이동 후 프로젝트 생성 및 초기화 시켜줍니다.  2.express , pug 설치npm install express pug => 해당 경로에서 express 와 pug를 설치합니다.  3.템플릿 파일들이 위치할 폴더, 서버용 js 파일, pug 파일 생성mkdir 템플릿 파일들을 모.. 2024. 8. 2.
[JAVA][Android] Segmented buttons 사용하기 안녕하세요.오늘은 머터리얼 디자인 3 에서 소개하고 있는 Segmented  Buttons를 사용하는 방법에 대해 알아보겠습니다.머터리얼 디자인 3 공식 페이지 링크는 아래와 같습니다.https://m3.material.io/components/segmented-buttons/specs Segmented button – Material Design 3Segmented buttons help people select options, switch views, or sort elements.m3.material.io  해당 세그먼트 버튼을 사용하려면 MaterialButtonToggleGroup으로 각 버튼을 묶어주어야 합니다.그리고 한번에 하나의 버튼만 선택할 수 있도록 하려면 app:singleSelect.. 2024. 8. 1.
[PHP] PDO를 이용한 데이터베이스 트랜잭션 처리 안녕하세요. 오늘은 PDO를 이용해 PHP에서 데이터베이스 트랜잭션 처리를 어떻게 하는지 알아보겠습니다. 트랜잭션은 데이터베이스 작업을 일관되게 처리하도록 하는 도구입니다. 여러 번의 SQL 작업이 필요한 경우, 트랜잭션을 사용하여 여러 작업중 하나라도 실패한다면 전체 작업이 취소되도록 할 수 있습니다. 예를 들어, 쇼핑몰에서 유저가 상품을 구매했다고 가정해봅시다. [A] 구매내역을 데이터베이스에 저장[B] 마일리지를 유저에게 적립 이 경우, A를 수행하는 동안 오류가 발생했는데 B가 정상적으로 작동하여 마일리지를 적립하는 것은 문제가 있습니다. 반대로, A는 정상적으로 작동했지만 B에서 오류가 발생해도 안 됩니다.트랜잭션 처리를 하면 A, B 두 작업 중 하나라도 오류가 발생하면 전체 작업이 취소됩니다.. 2024. 7. 31.
[JAVA][Android]ActivityResultLauncher 앨범 에서 사진 선택 후 이미지뷰에 이미지 넣기 인텐트로 안드로이드 사진앨범을 실행해서 하는 것이 아닌 ActivityResultLauncher 으로 해보겠습니다. import android.os.Bundle;import android.util.Log;import android.widget.Button;import android.widget.ImageView;import androidx.activity.result.ActivityResultLauncher;import androidx.activity.result.PickVisualMediaRequest;import androidx.activity.result.contract.ActivityResultContracts;import androidx.annotation.Nullable;import andro.. 2024. 7. 30.
[JAVA][Android] 어댑터 재활용 하여 중첩 리사이클러뷰 만들기 오늘은 하나의 어댑터를 재활용하여 중첩 리사이클러뷰를 만들어 보겠습니다.  레이아웃 xml 파일 코드(main.xml)   레이아웃 xml 파일 코드(item.xml)   액티비티 자바 코드public class MainActivity extends AppCompatActivity { TextView title; RecyclerView main_RecyclerView; adapter main_adapter; TextView click_item_text; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedIn.. 2024. 7. 29.
[JAVA][Android] 하나의 리사이클러뷰에 여러 타입의 뷰 추가하기 (Multi-View Type) 안녕하세요 오늘은 멀티뷰 타입을 지원하는 리사이클러뷰를 만들어보겠습니다.  리사이클러뷰를 사용하여 목록을 만들 때,다르게 생긴 아이템들을 하나의 리사이클러뷰 내에서 보여주고 싶을 때가 있습니다.  리사이클러뷰에서는 다양한 레이아웃을 지원하는 아이템들을하나의 리스트에서 처리할 수 있도록 하는 기능을 제공합니다. 본 게시글에서는 View Type 을 활용하여 데이터의 타입을 구분하고 각 타입에 맞는 아이템 레이아웃을 적용시켜보도록 하겠습니다.  먼저 메인 액티비티에 대한 레이아웃 입니다. activity_main.xml   아이템을 추가하기 위한 텍스트 입력칸, 데이터 타입을 선택하기 위한 spinner, 리사이클러뷰가 포함되어 있습니다. spinner 에 들어갈 내용은 strin.. 2024. 7. 28.
[JAVA][Android]항목 선택 다이얼로그 만들기 오늘은 배열과 AlertDialog.Builder를 활용해 항목 선택 다이얼로그를 만들어 보겠습니다.  레이아웃 xml 파일 코드(activity_main.xml)    액티비티 자바 코드public class MainActivity extends AppCompatActivity { private TextView itemTextView; //선택한 항목을 표시할 텍스트뷰 private Button showDialogButton; //다이얼로그 띄우기 버튼 private AlertDialog ListDialog; //목록을 보여줄 다이얼로그 String[] strArray={"강아지","고양이","거북이","토끼","뱀","사자","호랑이","표범","치타","하이에나",.. 2024. 7. 27.
[JAVA][Android] CoordinatorLayout과 BottomSheet 사용해서 유투브 화면 따라 만들기(1) 안녕하세요.CoordinatorLayout과 BottomSheet를 사용해서 다음 동영상의 유투브 화면을 따라만들기 예제입니다.먼저 오늘은 동영상 플레이어와 동영상 정보를 보여주는 바텀시트를 먼저 만들어보겠습니다.  1. Media3 ExoPlayer 의존성 추가먼저 앱수준 build.gradle에 동영상 플레이어를 사용하기 위한 Media3 ExoPlayer 의존성을 최신버전으로 추가합니다.implementation "androidx.media3:media3-exoplayer:1.4.0"implementation "androidx.media3:media3-exoplayer-dash:1.4.0"implementation "androidx.media3:media3-ui:1.4.0"  2. 바텀시트 배경 d.. 2024. 7. 26.