목록전체 글 (54)
코딩기록
1. 문제발생농구장 위치 공유 앱 개발 중, 다음과 같이 전역변수의 값을 retrofit을 통해 설정하려고 하였으나 전역변수에 값이 저장되지 않았다.var hoop = intent.getSerializableExtra("hoop") as Hoopval retrofit = Retrofit.Builder().baseUrl(BuildConfig.API_URL) .addConverterFactory(GsonConverterFactory.create()).build()val service = retrofit.create(RetrofitService::class.java)service.getHoop(hoop.id) .enqueue(object : Callback> { override fun ..
1. RDS 퍼블릭 엑세스 해제AWS 프리티어를 사용하고 있는데 다음과 같은 항목으로 비용이 조금씩 발생했다. 원인을 살펴보니, RDS를 퍼블릭 엑세스로 사용하면 외부에서 접속 가능한 v4 IP를 발급하게 되고, 이 IP는 프리티어 대상이 아니라 비용이 청구되는 것이었다. RDS의 퍼블릭 엑세스를 불가능으로 바꾸면 비용이 발생하지 않는다. 2. SSH Tunneling 접속이렇게 RDS의 퍼블릭 엑세스를 사용하지 않는다면, 당연히 기존 TCP 방식으로 RDS에 직접 접속했던 Connection이 작동하지 않는다. 현재 농구장 위치 공유 백엔드 서버가 깔려있는 EC2를 통해 RDS에 접속해야 하는 것이다.(같은 보안그룹 안에 있기 때문에 이곳에서 접속 가능) = "SSH Tunneling" MySQL W..
물음표(?)의 사용null이 들어올 수 있는 경우에 붙여줌var notNull:Int = null //오류var notNull:Int? = null //정상 느낌표 두개(!!)의 사용null값이 절대 들어오면 안되는 경우에 붙여줌var notNull:Int = 0 //기본값은 null허용xvar okNull:Int? = 10 //null이 들어올 수 있음을 의미notNull = okNull!! //ofNull은 null을 허용한 상태이기 때문에 !!로 처리해야 오류없이 실행됨//그러나 위의 코드에서 okNull에 null값이 들어가면 오류가 발생함
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..