카테고리
-
2024-02-21 1. 방법 application.properties 에 설정해 둔 경로 확인 # Thymeleaf spring.thymeleaf.enabled=true spring.thymeleaf.prefix=classpath:/templates/ spring.thymeleaf.suffix=.html spring.thymeleaf.mode=HTML spring.thymeleaf.encoding=UTF-8 #spring.thymeleaf.cache=false return 경로가 "/home/home" 이런식으로 되어 있으면 경로 못 찾음 spring.thymeleaf.prefix=classpath:/templates/ 에서 이미 / 를 붙여 주었으니 아래와 같이 되어 있는지 확인 @GetMapping..
jar 파일 배포시 Thymeleaf 리소스 못찾는 문제 해결 방법2024-02-21 1. 방법 application.properties 에 설정해 둔 경로 확인 # Thymeleaf spring.thymeleaf.enabled=true spring.thymeleaf.prefix=classpath:/templates/ spring.thymeleaf.suffix=.html spring.thymeleaf.mode=HTML spring.thymeleaf.encoding=UTF-8 #spring.thymeleaf.cache=false return 경로가 "/home/home" 이런식으로 되어 있으면 경로 못 찾음 spring.thymeleaf.prefix=classpath:/templates/ 에서 이미 / 를 붙여 주었으니 아래와 같이 되어 있는지 확인 @GetMapping..
2024.02.21 -
2024-02-19 1. 방법 자신의 프로파일에 맞는 application.properties 파일에 아래와 같이 설정값을 변경해주면 된다. spring.servlet.multipart.maxFileSize=10MB spring.servlet.multipart.maxRequestSize=10MB 메인 이미지 출처 : 사진: Unsplash의Daniel J. Schwarz
Spring Boot 파일 업로드(multipart) 용량제한 설정하기 Resolved [org.springframework.web.multipart.MaxUploadSizeExceededException: Maximum upload size exceeded]2024-02-19 1. 방법 자신의 프로파일에 맞는 application.properties 파일에 아래와 같이 설정값을 변경해주면 된다. spring.servlet.multipart.maxFileSize=10MB spring.servlet.multipart.maxRequestSize=10MB 메인 이미지 출처 : 사진: Unsplash의Daniel J. Schwarz
2024.02.19 -
2024-02-16 1. 문제 발생 IDE에서는 src/main/.../test.properties 이런 식으로 사용해도 문제없이 동작을 했지만 -jar 파일로 생성 후 해당 부분을 그대로 쓰면 java.nio.file.NoSuchFileException 가 발생하게 된다. 2. 원인 배포시에 src/main/resources의 루트 경로가 target/classes 또는 build/classes로 변경되게 된다. 이를 위해 리소스 파일을 읽어 올 때는 동적으로 root를 잡을 수 있게 코드를 수정해야 한다. 3. 해결 방법 getClass.getClassLoader().getResourceAsStream('자신의 정적파일 위치')를 통해 자신이 위치시킬 파일의 정보를 읽어올 수 있다. private I..
-jar resources folder 접근 java.nio.file.NoSuchFileException 해결2024-02-16 1. 문제 발생 IDE에서는 src/main/.../test.properties 이런 식으로 사용해도 문제없이 동작을 했지만 -jar 파일로 생성 후 해당 부분을 그대로 쓰면 java.nio.file.NoSuchFileException 가 발생하게 된다. 2. 원인 배포시에 src/main/resources의 루트 경로가 target/classes 또는 build/classes로 변경되게 된다. 이를 위해 리소스 파일을 읽어 올 때는 동적으로 root를 잡을 수 있게 코드를 수정해야 한다. 3. 해결 방법 getClass.getClassLoader().getResourceAsStream('자신의 정적파일 위치')를 통해 자신이 위치시킬 파일의 정보를 읽어올 수 있다. private I..
2024.02.16 -
2024-02-14 1. 방법 ../your_app/ios/Runner/GoogleService-Info.plist 에서 REVERSED_CLIENT_ID 를 Info.plist 에 추가하면 된다. REVERSED_CLIENT_ID {value}/string> ../your_app/ios/Runner/Info.plist CFBundleURLTypes CFBundleTypeRole Editor CFBundleURLSchemes {value} 메인 이미지 출처 : 사진: Unsplash의Sung Jin Cho
Flutter google Login 시 IOS 강제 종료 현상 해결 방법 firebase2024-02-14 1. 방법 ../your_app/ios/Runner/GoogleService-Info.plist 에서 REVERSED_CLIENT_ID 를 Info.plist 에 추가하면 된다. REVERSED_CLIENT_ID {value}/string> ../your_app/ios/Runner/Info.plist CFBundleURLTypes CFBundleTypeRole Editor CFBundleURLSchemes {value} 메인 이미지 출처 : 사진: Unsplash의Sung Jin Cho
2024.02.14 -
2024-02-12 1. 문제 발생 flutter pub get flutter 라이브러리들을 가져오는 도중 아래와 같은 에러가 발생했다. 이는 ms-setting을 윈도 내에서 시작하지 않아 발생하는 문제이다. 2. 해결방법 start ms-settings:developers 위의 명령어 실행 후 다시 flutter pub get으로 라이브러리들을 불러오면 오류 없이 실행되는 것을 확인 할 수 있다. 메인 이미지 출처 : 사진: Unsplash의Ryan Geller
Building with plugins requires symlink support.Please enable Developer Mode in your system settings. Run start ms-settings:developersto open settings. 해결 방법2024-02-12 1. 문제 발생 flutter pub get flutter 라이브러리들을 가져오는 도중 아래와 같은 에러가 발생했다. 이는 ms-setting을 윈도 내에서 시작하지 않아 발생하는 문제이다. 2. 해결방법 start ms-settings:developers 위의 명령어 실행 후 다시 flutter pub get으로 라이브러리들을 불러오면 오류 없이 실행되는 것을 확인 할 수 있다. 메인 이미지 출처 : 사진: Unsplash의Ryan Geller
2024.02.12 -
2024-02-09 1. 방법 - name: Get current date id: date run: echo "date=$(date +'%Y-%m-%d-%H-%M-%S')" >> "$GITHUB_OUTPUT" - run: echo ${{ steps.date.outputs.date }} 2. 예시 도커 이미지에 날짜 태그로 붙여서 사용 docker push ${{ secrets.DOCKER_USERNAME }}/${{ secrets.MAIN_DOCKER_REPONAME }}:${{ steps.date.outputs.date }} 3. 출처 https://stackoverflow.com/questions/60942067/get-current-date-and-time-in-github-workflows Get..
Github Action 에서 현재 시간 가져오기 $(date) "$GITHUB_OUTPUT"2024-02-09 1. 방법 - name: Get current date id: date run: echo "date=$(date +'%Y-%m-%d-%H-%M-%S')" >> "$GITHUB_OUTPUT" - run: echo ${{ steps.date.outputs.date }} 2. 예시 도커 이미지에 날짜 태그로 붙여서 사용 docker push ${{ secrets.DOCKER_USERNAME }}/${{ secrets.MAIN_DOCKER_REPONAME }}:${{ steps.date.outputs.date }} 3. 출처 https://stackoverflow.com/questions/60942067/get-current-date-and-time-in-github-workflows Get..
2024.02.09 -
2024-02-07 1. pseudo-TTY 우선 pseudo-TTY를 알아야 하는데 이는 유저 또는 애플리케이션이 shell에 대한 권한을 얻기 위해 사용된다. pseudo-TTY는 master와 slave 두 개의 파일이 쌍을 이루어 구성되는데, master 파일은 OMVS 나 rlogin 같은 네트워크 애플리케이션에 사용되며, slave 은 터미널이나 쉘이 데이터를 읽기 위해 사용된다. 자세한 내용은 아래 참고 https://www.ibm.com/docs/en/zos/2.2.0?topic=files-pseudoterminal Pseudoterminal files Pseudoterminals (pseudo-TTYs) are used by users and applications to gain acce..
도커(Docker) 컨테이너 무기한/무한 실행하는 방법2024-02-07 1. pseudo-TTY 우선 pseudo-TTY를 알아야 하는데 이는 유저 또는 애플리케이션이 shell에 대한 권한을 얻기 위해 사용된다. pseudo-TTY는 master와 slave 두 개의 파일이 쌍을 이루어 구성되는데, master 파일은 OMVS 나 rlogin 같은 네트워크 애플리케이션에 사용되며, slave 은 터미널이나 쉘이 데이터를 읽기 위해 사용된다. 자세한 내용은 아래 참고 https://www.ibm.com/docs/en/zos/2.2.0?topic=files-pseudoterminal Pseudoterminal files Pseudoterminals (pseudo-TTYs) are used by users and applications to gain acce..
2024.02.07 -
2024-01-02 1. 방법 깃허브 자신의 프로파일 클릭 settings 클릭 Developer settings 클릭 Personal access tokens -> Tokens -> 자신이 사용 중인 토큰 클릭 workflow 체크박스 선택 후 Update token 으로 저장 메인 이미지 출처 : 사진: Unsplash의NEOM
깃허브 ! refs/heads/main:refs/heads/main [remote rejected] (refusing to allow a Personal Access Token to create or update workflow `.github/workflows/github-action.yml` without `workflow` scope) 해결 방법2024-01-02 1. 방법 깃허브 자신의 프로파일 클릭 settings 클릭 Developer settings 클릭 Personal access tokens -> Tokens -> 자신이 사용 중인 토큰 클릭 workflow 체크박스 선택 후 Update token 으로 저장 메인 이미지 출처 : 사진: Unsplash의NEOM
2024.01.30 -
2024-01-29 1. 문제 깃허브 액션에서 docker 로그인 진행 중 아래와 같이 에러가 발생했다. 해당 경고는 Using STDIN prevents the password from ending up in the shell's history, or log-files. 때문에 발생한 것으로 해당 옵션(STDIN)을 주지 않으면 쉘에 기록이나 로그파일에 기록이 남을 수 있어 이에 대한 경고를 하는 것이다. WARNING! Using --password via the CLI is insecure. Use --password-stdin. 2. 해결방법 첫번째 방법은 echo로 패스워드를 출력하고 해당 정보를 파이프로 로그인 시 전달하는 방법이다. echo ${{ secrets.DOCKER_PASSWORD ..
docker/GithubAction WARNING! Using --password via the CLI is insecure. Use --password-stdin. 해결방법2024-01-29 1. 문제 깃허브 액션에서 docker 로그인 진행 중 아래와 같이 에러가 발생했다. 해당 경고는 Using STDIN prevents the password from ending up in the shell's history, or log-files. 때문에 발생한 것으로 해당 옵션(STDIN)을 주지 않으면 쉘에 기록이나 로그파일에 기록이 남을 수 있어 이에 대한 경고를 하는 것이다. WARNING! Using --password via the CLI is insecure. Use --password-stdin. 2. 해결방법 첫번째 방법은 echo로 패스워드를 출력하고 해당 정보를 파이프로 로그인 시 전달하는 방법이다. echo ${{ secrets.DOCKER_PASSWORD ..
2024.01.29 -
2024-01-26 1. 방법 자신의 job/[name]/step/ 하단 레벨에 # docker login 아래의 코드를 추가한다. # docker build & push to production EXAMPLE 은 이후 빌드 배포에 대한 예시코드로 참고하면 된다. # docker login - name: Docker login uses: docker/login-action@v2 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} # docker build & push to production EXAMPLE - name: Docker build & push to prod if: contains(gith..
[Github Action] WARNING! Your password will be stored unencrypted in /home/runner/.docker/config.json. 해결방법2024-01-26 1. 방법 자신의 job/[name]/step/ 하단 레벨에 # docker login 아래의 코드를 추가한다. # docker build & push to production EXAMPLE 은 이후 빌드 배포에 대한 예시코드로 참고하면 된다. # docker login - name: Docker login uses: docker/login-action@v2 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} # docker build & push to production EXAMPLE - name: Docker build & push to prod if: contains(gith..
2024.01.26 -
2024-01-24 1. 방법 우분투 apt $ apt install procps 아마존 리눅스 yum $ yum install procps 설치후 top 커맨드 실행시 정상 동작한다. 2. 출처 https://superuser.com/questions/1646014/there-is-no-top-command-in-docker-container There is no top command in docker container I try to deploy an app in docker container using mcr.microsoft.com/dotnet/aspnet:5.0 image that need to have top command when I try to run top command the follo..
Docker 리눅스(우분투/아마존리눅스 ) top command not found 해결2024-01-24 1. 방법 우분투 apt $ apt install procps 아마존 리눅스 yum $ yum install procps 설치후 top 커맨드 실행시 정상 동작한다. 2. 출처 https://superuser.com/questions/1646014/there-is-no-top-command-in-docker-container There is no top command in docker container I try to deploy an app in docker container using mcr.microsoft.com/dotnet/aspnet:5.0 image that need to have top command when I try to run top command the follo..
2024.01.24 -
2024-01-22 1. 정의 오토박싱은 Java 컴파일러가 기본 유형(원시타입)과 해당 객체 래퍼 클래스 간에 수행하는 자동 변환이다. 예를 들어 int를 Integer로, double을 Double로 변환하는 등의 작업을 뜻한다. 변환이 반대 방향으로 진행되는 경우 이를 언박싱(Unboxing)이라고 한다. 2. 예제 나머지(%) 및 단항 더하기(+=) 연산자는 Integer 객체에 적용되지 않으나, Java 컴파일러가 오류를 발생시키지 않고 메서드를 컴파일하는 이유는 런타임에 Integer를 int로 변환하기 위해 intValue 메서드를 호출하기 때문에 오류를 생성하지 않는다. 때문에 아래 예제에서는 오류 없이 동일한 값을 리턴한다. import org.junit.jupiter.api.Test; ..
자바 오토박싱(autoBoxing) 알아보기2024-01-22 1. 정의 오토박싱은 Java 컴파일러가 기본 유형(원시타입)과 해당 객체 래퍼 클래스 간에 수행하는 자동 변환이다. 예를 들어 int를 Integer로, double을 Double로 변환하는 등의 작업을 뜻한다. 변환이 반대 방향으로 진행되는 경우 이를 언박싱(Unboxing)이라고 한다. 2. 예제 나머지(%) 및 단항 더하기(+=) 연산자는 Integer 객체에 적용되지 않으나, Java 컴파일러가 오류를 발생시키지 않고 메서드를 컴파일하는 이유는 런타임에 Integer를 int로 변환하기 위해 intValue 메서드를 호출하기 때문에 오류를 생성하지 않는다. 때문에 아래 예제에서는 오류 없이 동일한 값을 리턴한다. import org.junit.jupiter.api.Test; ..
2024.01.22 -
2024-01-19 1. 예제 아래와 같이 싱글톤 패턴이 있다고 할 때 몇 가지 문제점이 발생할 수 있다. class SampleSingleton { private static SampleSingleton instance; public static synchronized SampleSingleton getInstance() { if (instance == null) { instance = new SampleSingleton(); } return instance; } } 2. volatile private static SampleSingleton instance; 위의 변수는 volatile 로 선언되어 있지 않아 멀티스레드의 환경에서의 안정성이 떨어질 수 있다. 멀티 스레드 환경에서는 각 스레드가 자체 ..
자바 싱글톤 패턴과 이중 체크락(Double-Checked Locking) + volatile2024-01-19 1. 예제 아래와 같이 싱글톤 패턴이 있다고 할 때 몇 가지 문제점이 발생할 수 있다. class SampleSingleton { private static SampleSingleton instance; public static synchronized SampleSingleton getInstance() { if (instance == null) { instance = new SampleSingleton(); } return instance; } } 2. volatile private static SampleSingleton instance; 위의 변수는 volatile 로 선언되어 있지 않아 멀티스레드의 환경에서의 안정성이 떨어질 수 있다. 멀티 스레드 환경에서는 각 스레드가 자체 ..
2024.01.19 -
2024-01-17 1. 원인 mac 운영체제 내에서 플랫폼을 빌드하거나 실행할 때 linux/arm64/v8에서 이미지가 실행되게 되는데 이로 인해 현재 이미지의 운영체제 linux/amd64와 같지 않아 발생하는 문제이다. 2. 방법 아래와 같이 빌드 및 실행 시 명확한 운영체제를 지정(--platform linux/amd64)해주면 해당 문제를 해결할 수 있다. # docker build --platform linux/amd64 --build-arg [optional] -t [아이디정보]/[저장소정보] # docker push [아이디정보]/[저장소정보] # docker run --platform linux/amd64 [아이디정보]/[저장소정보] 3. 출처 https://stackoverflow.c..
Docker "WARNING: The requested image's platform (linux/arm64/v8) does not match the detected host platform (linux/amd64) and no specific platform was requested" 해결 방법2024-01-17 1. 원인 mac 운영체제 내에서 플랫폼을 빌드하거나 실행할 때 linux/arm64/v8에서 이미지가 실행되게 되는데 이로 인해 현재 이미지의 운영체제 linux/amd64와 같지 않아 발생하는 문제이다. 2. 방법 아래와 같이 빌드 및 실행 시 명확한 운영체제를 지정(--platform linux/amd64)해주면 해당 문제를 해결할 수 있다. # docker build --platform linux/amd64 --build-arg [optional] -t [아이디정보]/[저장소정보] # docker push [아이디정보]/[저장소정보] # docker run --platform linux/amd64 [아이디정보]/[저장소정보] 3. 출처 https://stackoverflow.c..
2024.01.17 -
2024-01-02 1. 방법 mainAxisAlignment: MainAxisAlignment.start 와 mainAxisAlignment: MainAxisAlignment.end 를 활용해 각 좌측 우측 정렬을 적용해준다. import 'package:flutter/material.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar( title: Text('Left and Right Align'), ), body: Column( childr..
flutter 에서 Column 의 각요소 정렬 위치 다르게 설정하는 방법2024-01-02 1. 방법 mainAxisAlignment: MainAxisAlignment.start 와 mainAxisAlignment: MainAxisAlignment.end 를 활용해 각 좌측 우측 정렬을 적용해준다. import 'package:flutter/material.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar( title: Text('Left and Right Align'), ), body: Column( childr..
2024.01.16 -
2024-01-15 1. css 2. html Fixd AREA long~~~~~~~~ Main AREA 3. JavaScript 메인 이미지 출처 : 사진: Unsplash의Jason Hudson
html 스크롤 시 Fixed 영역 만들기 + resize 이벤트 대응 방법2024-01-15 1. css 2. html Fixd AREA long~~~~~~~~ Main AREA 3. JavaScript 메인 이미지 출처 : 사진: Unsplash의Jason Hudson
2024.01.15 -
2024-01-12 1. 방법 위의 dimensions 와 실제 element 의 최대 넓이가 다른 경우, 기존의 코드의 html 코드는 아래와 같은 형식으로 되어 있을 것이다. 해당 코드에서는 디바이스의 넓이와 페이지 로드시에 초기 줌 레벨에 대한 설정값이 없다. 해당 코드를 추가해 준다. 이 메타 태그는 모바일 브라우저에서 웹 페이지를 올바르게 렌더링한다. width=device-width: 뷰포트의 너비를 디바이스의 실제 너비와 일치시키라는 의미이며, 모바일 기기의 화면 크기에 맞게 웹 페이지가 조절된다. initial-scale=1.0: 페이지가 로드될 때 초기 줌 레벨을 1.0으로 설정한다. 이는 사용자가 페이지를 처음 방문했을 때 기본 확대/축소 레벨을 의미한다. 메인 이미지 출처 : 사진: ..
크롬 개발자 도구의 dimensions 와 html 실제 넓이 차이 해결 meta name="viewport" content="width=device-width, initial-scale=1.0"2024-01-12 1. 방법 위의 dimensions 와 실제 element 의 최대 넓이가 다른 경우, 기존의 코드의 html 코드는 아래와 같은 형식으로 되어 있을 것이다. 해당 코드에서는 디바이스의 넓이와 페이지 로드시에 초기 줌 레벨에 대한 설정값이 없다. 해당 코드를 추가해 준다. 이 메타 태그는 모바일 브라우저에서 웹 페이지를 올바르게 렌더링한다. width=device-width: 뷰포트의 너비를 디바이스의 실제 너비와 일치시키라는 의미이며, 모바일 기기의 화면 크기에 맞게 웹 페이지가 조절된다. initial-scale=1.0: 페이지가 로드될 때 초기 줌 레벨을 1.0으로 설정한다. 이는 사용자가 페이지를 처음 방문했을 때 기본 확대/축소 레벨을 의미한다. 메인 이미지 출처 : 사진: ..
2024.01.12 -
2024-01-11 1. 방법 /* (Chrome, Safari) 에서 제거하기 */ .your_tag_class_name::-webkit-scrollbar { width: 0 !important; } /* Firefox 에서 제거하기 */ .your_tag_class_name { scrollbar-width: none; } 메인 이미지 출처 : 사진: Unsplash의Thomas de LUZE
[CSS] css 에서 overflow: scroll ui 지우는 방법2024-01-11 1. 방법 /* (Chrome, Safari) 에서 제거하기 */ .your_tag_class_name::-webkit-scrollbar { width: 0 !important; } /* Firefox 에서 제거하기 */ .your_tag_class_name { scrollbar-width: none; } 메인 이미지 출처 : 사진: Unsplash의Thomas de LUZE
2024.01.11 -
2024-01-10 1. 방법 기존의 존재하는 container 자체의 포트를 변경하는 방법은 따로 없어 자신의 원본 컨테이너 (아래의 예제에서는 origin)을 복사하여 이미지로 만든다.(아래의 예제에서는 copy) 이후 다시 run을 통해 새로운 컨테이너 명과 포트 포워딩을 명시하고 컨테이너를 생성하여 사용하면 된다. //만약에 변경할 컨테이너가 실행중이라면 우선 멈춘다. docker stop origin docker commit origin copy docker run --name new_origin -p 80:80 -d copy 메인 이미지 출처 : 사진: Unsplash의NEOM
[Docker] 도커 기존 컨테이너 포트 포워딩 추가/변경 방법2024-01-10 1. 방법 기존의 존재하는 container 자체의 포트를 변경하는 방법은 따로 없어 자신의 원본 컨테이너 (아래의 예제에서는 origin)을 복사하여 이미지로 만든다.(아래의 예제에서는 copy) 이후 다시 run을 통해 새로운 컨테이너 명과 포트 포워딩을 명시하고 컨테이너를 생성하여 사용하면 된다. //만약에 변경할 컨테이너가 실행중이라면 우선 멈춘다. docker stop origin docker commit origin copy docker run --name new_origin -p 80:80 -d copy 메인 이미지 출처 : 사진: Unsplash의NEOM
2024.01.10 -
2024-01-09 1. 방법 open user settings를 검색하여 Preferences: Open User Settings(Json) 클릭 아래 두개의 코드 추가 "dart.previewFlutterUiGuides": true, "dart.previewFlutterUiGuidesCustomTracking": true, 아래와 같이 자식 부모 구조에 대한 하얀 점선이 생긴 걸 확인하면 완료된다. 만약에 적용이 되지 않는 다면 vscode 재접속 후 아무 Dart 파일이나 클릭해 보면 적용된 것을 확인할 수 있다. 2. 출처 https://stackoverflow.com/questions/64575310/how-i-enable-guide-lines-in-visual-studio-code-with-f..
[Flutter] 플러터 vscode 부모 자식 관계 표시 하는 방법2024-01-09 1. 방법 open user settings를 검색하여 Preferences: Open User Settings(Json) 클릭 아래 두개의 코드 추가 "dart.previewFlutterUiGuides": true, "dart.previewFlutterUiGuidesCustomTracking": true, 아래와 같이 자식 부모 구조에 대한 하얀 점선이 생긴 걸 확인하면 완료된다. 만약에 적용이 되지 않는 다면 vscode 재접속 후 아무 Dart 파일이나 클릭해 보면 적용된 것을 확인할 수 있다. 2. 출처 https://stackoverflow.com/questions/64575310/how-i-enable-guide-lines-in-visual-studio-code-with-f..
2024.01.09