목록전체 글 (51)
코딩기록
LinearLayout여러 View 위젯들을 가로/세로 방향으로 나열할 때 사용하는 Layoutorientation 속성을 가지고 있어 가로(Horizontal), 세로(Vertical)을 설정할 수 있다.자식들은 중첩되지 않고 지정한 방향으로 쌓이는 형태로 표시된다.weight 속성으로 가중치를 설정할 수 있다. 비율로 나타낼 수 있다.다양한 디바이스 화면에 dp가 아니라 비율에 따른 대응으론 좋다. (그러나 onLayout()를 자주 호출하여 상관관계를 파악하기에 성능상 좋진 않다)RelativeLayout자식 View 위젯들이 서로 간의 상대적 배치 관계에 따라 화면에 표시될 위치가 결정되도록 만들어주는 Layout 클래스상대적인 배치 기준을 정하지 않는다면, 내부에서 중첩되어 표시된다.특정 위젯을..
📒 Facade Pattern이란? 퍼사드 패턴(Facade Pattern)은 구조 패턴(Structural Pattern)의 한 종류로써, 복잡한 서브 클래스들의 공통적인 기능을 정의하는 상위 수준의 인터페이스를 제공하는 패턴이다. 퍼사드 객체(Facade Object)는 서브 클래스의 코드에 의존하는 일을 감소시켜 주고, 복잡한 소프트웨어를 간단히 사용 할 수 있게 간단한 인터페이스를 제공해준다. 퍼사드 패턴을 통해 서브 시스템(SubSystem)들 간의 종속성을 줄여줄 수 있으며, 퍼사드 객체를 사용하는 곳(Client)에서는 여러 서브 클래스들을 호출할 필요 없이 편리하게 사용할 수 있다.

직장인 커뮤니티 팀프로젝트에서. 구글 SMTP를 이용한 메일전송 시스템 구현을 위한 AWS QSQ를 구현하고 있다. 현재 프로젝트에서 spring-cloud-aws의 2.4.4버전 을 사용하고 있는데 이 버전에 맞추어 개발하려고 하였다. @SqsListener가 작동이 안되는 문제가 있었다. 2일 동안 모든 블로그 글들을 확인하며 설정들을 바꾸었지만 결국 작동하지 않았다. @SqsListener(value="MailSQS" , deletionPolicy = SqsMessageDeletionPolicy.NEVER) public void receive(String payload) { System.out.println("payload = " + payload); } 현재 환경에서 작동하지 않는 것이였다. Sp..

현재 직장인들을 위한 커뮤니티 개발 팀에서 계정 백엔드 개발을 담당하고 있다. Converter를 적용하여 db에 비밀번호를 저장할 경우 자동으로 BCryptPasswordEncoder를 이용하여 저장되게 하였다. 그런데 converter를 구현한지 얼마 되지 않아, 팀원분께서 두번째 로그인을 시도할 때부터 로그인이 되지 않는다는 노티를 해 주셨다. 원인을 찾아본 결과, Converter 의 문제였다. Converter를 적용하여 db에 비밀번호를 저장할 경우 자동으로 BCryptPasswordEncoder를 이용하여 저장되게 하였는데, 그 전에 구현한 기능 중 유저가 로그인 시 해당 로그인 유저의 최근방문시점 및 방문횟수를 업데이트 하도록 구현한 것이 있었다. 기존에 최근방문시점 및 방문횟수를 아래처럼..
MediaQuery: 화면의 사이즈를 받아오는 기능 import 'dart:io'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; void main() { // main 스레드는 runApp을 실행시키고 종료됨 runApp(FirstApp()); // 비동기로 실행됨 (이벤트루프에 등록된다.) sleep(Duration(seconds: 3)); print("main 종료"); } // 저장만 하면 화면이 리도드 됨 = 핫 리로드 class FirstApp extends StatelessWidget { const FirstApp({super..
import 'dart:io'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; void main() { // main 스레드는 runApp을 실행시키고 종료됨 runApp(FirstApp()); // 비동기로 실행됨 (이벤트루프에 등록된다.) sleep(Duration(seconds: 3)); print("main 종료"); } // 저장만 하면 화면이 리도드 됨 = 핫 리로드 class FirstApp extends StatelessWidget { const FirstApp({super.key}); @override Widget buil..

스프링 테스트 시 다음 에러가 뜨며 테스트가 진행이 안되었다. org.gradle.api.internal.tasks.testing.TestSuiteExecutionException: Could not execute test class 'com.blanktime.BlankTimeApplicationTests'. at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:54) at java.base@17.0.10/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base@17.0.1..
1. Stack기본 자료형이 저장되는 공간으로, 임시적으로 사용되는 변수나 정보들이 저장되는 영역이다.메소드가 호출될 때 스택 영역에 스택프레임*이 생기고 그 안에 메소드를 호출한다.* 스택프레임: 하나의 메서드에 필요한 메모르 덩어리 / 하나의 메서드 당 하나의 스택프레임이 필요함 / 스택프레임에 쌓이는 데이터는 메서드의 매개변수, 지역변수, 리턴값 등이 있다. / 메서드 호출 범위가 종료되면 스택에서 제거메소드가 호출될 때 메모리에 할당되고, 메소드가 종료되면(= 메서드의 끝을 알리는 닫는 중괄호를 만나면) 메모리에서 사라진다.컴파일 타임 시 할당 된다.스택 메모리가 가득차면 자바에서는 java.lang.StackOverFlowError를 발생 2. Heap침조형(Reference Type) 데이터 ..

1. 도커 작동 원리 2. 도커 컨테이너란? image: 세팅된 컨테이너 도커 컨테이너 : image가 실행된 상태

깃/깃허브를 통해 3~4인 소규모 팀에서 협업하는 시나리오를 정리하여 기록합니다. 다음 인터넷 강의 참고 : https://www.youtube.com/watch?v=2mNxZEr1m-M&list=PL93mKxaRDidFtXtXrRtAAL2hpp9TH6AWF&index=27 실행 전 : 깃허브 리포지토리 Setting -> Notifications에 메일주소 남겨놓는게 좋음 1. : 환경설정 셋팅 깃허브 리포지토리 새로 만들고 클론해서 자신 컴퓨터에서 환경설정 만듬 커밋 후 dev 브런치 만듬 다시 푸시 : git push --all (모든 브런치가 다 푸시됨) 깃허브 리포지토리 설정 settings -> Branchs -> Require a pull request before merging 체크: 보호..