목록분류 전체보기 (54)
코딩기록
1. 개념깃허브 dependency-submission 란 프로젝트에 대한 종속성을 깃허브 서버에 제출하는 것. 이를 통해 소프트웨어가 컴파일되거나 빌드될 때 확인된 종속성 등의 종속성을 GitHub의 종속성 그래프 기능에 추가하여 프로젝트의 모든 종속성을 보다 완벽하게 파악할 수 있다. (Gemini 정리)가. "무엇을" 저장하는가?여러분의 프로젝트가 사용하는 모든 외부 라이브러리(종속성)의 목록과 정확한 버전입니다.예시: "이 프로젝트는 Spring v2.7.0과 log4j v2.17.0을 사용하고 있다."나. "왜" 저장하는가? (보안 목적)지속적인 위험 감시를 위해서입니다.개발자가 매일 수백 개의 라이브러리에서 발생하는 보안 뉴스를 다 따라갈 수는 없습니다.GitHub은 여러분이 제출한 종속성 목..
Google Maps SDK for Android 사용 시, 보안을 위해 API 키의 사용 범위를 특정 앱으로 제한해야 한다. Google Play Store에 이미 배포된 앱의 경우, 로컬에서 생성한 키가 아닌 Google Play Console의 앱 서명 키 인증서를 사용해야 한다.(앱을 빌드할 때 사용하는 jks 파일 안의 SHA-1 키는 업로드 키 인증서이므로, 위 사용 범위 제한에 작동하지 않는다.) 구글 플레이 콘솔에서 앱 서명 키 인증서 SHA-1 키를 찾는데 애를 먹어서 공유한다. 1. 구글플레이 콘솔테스트 및 출시 -> 앱 무결성 -> Play 앱 서명 -> 설정(빨간색 박스 표시)버튼을 누르면, 앱 서명 키 인증서 키를 찾을 수 있다. 2. 구글 클라우드키 제한사항에 Android 앱..
다음 쿼리 recursive 쿼리로, 특정 기간의 모든 날짜를 추출할 수 있다. with recursive a as (select '2024-10-10' as dt union select date_add(a.dt, interval 1 day) from a where date_add(a.dt, interval 1 day) 2024-10-20') select dtfrom a
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를 로딩하고..
