목록전체 글 (51)
코딩기록

1. 문제구글 플레이스토어에서 개인 앱을 프로덕션한 후에도, 플레이스토어 앱의 상세화면에서 계속해서 앱 이름이 앱이름 + "(베타)"라고 떠 있었다.베타 테스트 과정이 제대로 마쳐지지 않은 줄 알고 한참 플레이스토어 콘솔을 한참 만져 보았는데, 원인은 단순했다. 2. 원인 및 해결"(베타)"는 베타 테스터로 등록된 사람에게만 표시된다. 해결방법가. 다른 Google 계정으로 로그인하면 "(베타)" 표시가 보이지 않는다.나. 또는 위 상세정보 화면의 "베타 테스터 되기" 영역에서 "나가기"를 클릭하면 로그인한 계정에서 베타테스트가 종료되면서, 마찬가지로 "(베타)" 표시가 보이지 않는다. 앱 출시 과정에 문제가 있는줄 알고 한참 플레이스토어 콘솔만 만져보다가 아래 글을 보고 원인을 알았고, 프로덕션이 잘..

1. 이슈농구장 위치공유 서비스는 최초엔 비회원 서비스를 계획하고 테이블을 구축하였는데, 추후 회원가입 기능을 구현하게 되어서, 농구장 정보를 수정한 유저 정보 컬럼에 회원 정보와 비회원 정보가 동시에 입력되게 되었다. 즉, 비회원 유저가 농구장 정보를 수정하면 lastChangeUser 컬럼에 비회원ID가 저장되고, 회원 유저가 농구장 정보를 수정해도 같은 컬럼에 회원의 닉네임이 저장되는 상태였다. 두 데이터의 성질이 다르므로, 각각 컬럼을 나누어 저장하는 것이 맞다. 이 상태에선 회원 유저가 닉네임을 수정하면 수정된 닉네임이 농구장 정보 테이블에 반영되지 않는다. 2. 해결농구장 정보 테이블에 회원ID가 저장될 user_id 컬럼과 비회원ID가 저장될 anonymous_id 컬럼을 새롭게 만들었다. ..

홈페이지 제작 사이트인 WIX를 사용해보다, 3단계 메뉴를 만드는 방법이 웹상에 잘 안나와 있는 것 같아서 정리하고자 한다. 1. 기본 템플릿에 있는 기본 가로메뉴는 3단계 메뉴가 작동을 안하므로 삭제(이것 때문에 시간을 많이 잡아먹었다..) 2. 요소 추가(왼쪽 위 + 버튼) -> 메뉴 및 앵커 -> 가로메뉴에서 마음에 드는 메뉴를 고른다. 3. 추가한 메뉴 클릭 -> 레이아웃 버튼 클릭 -> 메가 메뉴 탭 클릭 -> 메뉴관리 클릭 4. 메뉴 관리에서 3단계 메뉴 설정을 한다. 5. 메뉴 레이아웃 -> 하위 메뉴 -> 하위메뉴 표시 에서 메뉴가 보이는 형태를 변경할 수 있다.- 플라이아웃: 상위메뉴에 마우스 오버를 하면 그 메뉴의 하위 메뉴만 보이는 형태- 단: 1단계 메뉴에 마우스 오버를 하면, ..

1. 서블릿 서블릿이란?WebProgramming에서 Client의 요청을 처리하고 그 결과를 다시 Client에게 전송하는 자바 웹 프로그래밍 기술 서블릿을 사용하는 이유서블릿을 사용하지 않고 직접 HTTP 통신으로 오고가는 문자열을 파싱하여 서블릿과 같은 기능을 구현해도 무방하지만, 이미 편리하게 사용할 수 있는 서블릿을 놔두고 직접 문자열 파싱을 구현하는 것은 개발자가 온전히 비즈니스 로직에 집중하지 못하게 만들 수 있다. 개발자는 서블릿을 통해 문자열 파싱 등에 열올리지 않고 비즈니스 로직에 더욱 집중할 수 있다. 서블릿 동작 방식 1. 개발자가 서블릿 소스코드(.java)를 작성한다. 2. 소스코드가 빌드 시 컴파일되어 서블릿 클래스(.class)가 된다. 3. 해당 서블릿 클래스가 톰캣과 같은..
문제스프링 프로젝트 시작 시 Parameter 2 of constructor in *** required a bean of type 'org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder' that could not be found. 에러가 발생했다. 해결-> SecurityConfig 클래스에 @EnableWebSecurity 추가하면 된다. @Configuration@EnableWebSecuritypublic class SecurityConfig { @Bean public SecurityFilterChain filterChain(HttpSecurity http) th..

JVM 이란?자바를 실행하기 위한 가상 기계 OS에 종속적이지 않다 .java 파일 컴파일 과정.java -> Java compiler(javac) -> .class(바이트 코드: JVM이 이해할 수 있는 언어) -> JIT Compiler*, 동적 번역* -> 바이너리 코드(기계어, 컴퓨터가 인식할 수 있는 0과 1로 구성된 이진코드)* 인터프리터 방식으로 실행하다가 적절한 시점에 바이트코드 전체를 컴파일하여 기계어로 변경하고, 이후에는 더 이상 인터프리팅하지 않고 기계어로 직접 실행 JVM 구조1. 클래스 로더(Class Loader) JVM 내로 클래스 파일을 로드하고 링크를 통해 배치하는 작업을 수행 2. 실행 엔진(Excution Engine) - 인터프리터 “ 자바 바이트 코드를 명령어 단위로..

JSP란?자바 언어를 기반으로 하는 스크립트 언어로, HTML 내에 자바 코드를 삽입하여 웹 서버에서 동적으로 웹페이지를 생성하여 웹 브라우저에 전달하는 서버측 스크립트 언어JSP의 동작과정① 웹 브라우저가 웹 서버에 JSP를 요청하면, 웹 서버는 요청된 xxx.jsp에서 jsp 확장자를 발견하여 JSP 페이지임을 확인하고 웹 서버에 있는 JSP 컨테이너로 전달② JSP 컨테이너가 JSP 페이지를 서블릿 프로그램인 xxx_jsp.java로 변환③ JSP 컨테이너가 서블릿 프로그램을 컴파일하여 xxx_jsp.class로 만들고 이를 웹 서버에 전달④ 웹 서버는 xxx_jsp.class의 실행 결과를 웹 브라우저에 응답으로 전달JSP의 생명주기①. jspInit() : JSP 컨테이너는 class를 로딩하고..
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값이 들어가면 오류가 발생함