ALL Post 202

가상 요소 셀렉터로 신규 등록 게시물 NEW 표시하기

가상요소 셀렉터 가상 요소란? 가상 요소란 HTML에 정의도지ㅣ 않은 요소를 CSS로 새롭게 만들어낸 요소다. 가상 요소 사용법 CSS에서 태그, 클래스, ID 셀렉터 뒤에 ::before , ::after 를 붙여 content 속성과 조합한 후 가상 요소를 만든다. content 속성에는 해당 위치에 넣고 싶은 텍스트나 이미지 등 콘텐츠를 적는다. content 속성으로 표시한 텍스트는 선택 및 복사 붙여넣기를 할 수 없다. 즉, 스크롤이 안 된다. 스크롤을 지원해야 한다면 가상요소 콘텐트 대신 HTML 텍스트를 사용해야 한다. before와 after ::before 는 요소 앞에, ::after는 요소 뒤에 가상 요소를 삽입한다. 가상 요소 셀렉터로 신규 등록 게시물 NEW 표시하기 HTML 가상..

Study/HTML,CSS 2022.12.19

[오브젝트06] 메시지와 인터페이스

클라이언트-서버 모델 협력은 어떤 객체가 다른 객체에게 무언가 요청할 때 시작된다. 메시지는 객체 사이의 협력을 가능하게 하는 매개체다. 객체가 다른 객체에 접근할 수 있는 유일한 방법은 메시지를 전송하는 것뿐. 객체는 희망하는 일을 메시지라는 형태로 전송하고, 수신 객체는 요청을 적절히 처리한 뒤에 응답한다. 이 메시지를 매개로하는 요청과 응답의 조합이 두 객체 사이의 협력을 구성한다. 두 객체 사이의 협력 관계를 설명하기 위해 사용하는 전통적인 메타포는 클라이언트-서버 모델이다. 협력 안에서 메시지를 전송하는 객체를 클라이언트, 메시지를 수신하는 객체를 서버라고 부른다. 협력은 클라이언트가 서버의 서비스를 요청하는 단방향 상호작용이다. 영화 예매 시스템이 있다면 이런 협력 관계를 가질 수 있다. Sc..

Study/오브젝트 2022.11.30

[요약] 한 개의 메소드만 갖는 계층형 컨트롤러/서비스 패키지 스타일 - 기계인간 John Grib

방대한 서비스 클래스를 어떻게 잘 나눌 수 있을까? 고민한 적 많았는데 우연히 이 글을 읽었다. 기회가 되면 실제 프로젝트에 적용해보고 싶다. (기록) 한 개의 메소드만 갖는 계층형 컨트롤러/서비스 패키지 스타일 - 기계인간 John Grib 요약 한 개의 메소드만 갖는 계층형 패키지 스타일 Java/Spring을 사용해 애플리케이션을 만들다보면 Controller-Service-Repository 패키지 안에서 영원히 헤매고 다니게 됨. 프로젝트에 익숙해지기 전에는 뭐가 어디에 있는지 알 수 없음. 그래서 한 가지 실험을 했음 * 집합의 포함관계를 강력히 의식한 계층형 구조로 패키지를 구성 * 한 가지 용도를 암시하는 클래스 이름으로 행위와 책임을 제한(SRP) * 서비스/컨트롤러를 만들 때 publi..

카테고리 없음 2022.11.30

Spring Scheduler 테스트 하기

Spring Scheduler Test Spring Scheduler 사용법은 매우 간단하다. SpringBoot는 스타터에 스케줄러를 내장하고 있기 때문에 별도의 의존성을 추가하지 않고도 사용할 수 있다. 초간단 Spring Scheduler 적용에서 스케줄러를 동작시키는 방법을 정리했는데, cron expression 말고도 fixedDelay 속성을 이용하면 지정한 주기로 스케줄러를 실행시킬 수 있다. @Scheduled(cron = "0 0,30 3 * * *") // 매일 3시, 0시 30분 fun publishReward() { log.info("START === PUBLISH::REWARD::EVENT::DAILY::SCHEDULER ${UUID.randomUUID()}") rewardSer..

Spring 2022.11.28

call by value

우연히 https://www.facebook.com/tobyilee/posts/10222585502760852 이 글을 읽고 지금까지 Call by reference와 Call by reference에 대해 잘못 알고 있었다는 사실을 알았다. 지금까지는 Java에서 call by value는 기본 타입 호출, call by reference는 그 외 모든 레퍼런스 타입을 호출할 때 사용한다고 알고 있었지만, 사실은 Java는 모두 call by value로 동작한다. call by reference에서 말하는 by reference와 Java에서 말하는 reference value는 다르다. Call by value가 뭔가? 함수가 호출되면 메모리에서 함수를 위한 임시 공간을 할당한다. Call by v..

Java 2022.09.14

Springboot 통합 테스트로 불안한 리팩토링에서 벗어나기

통합테스트를 작성한 경험을 기록했습니다. 아래와 같은 순서로 말해보겠습니다. 통합테스트 작성 계기 웹 레이어 테스트와 통합테스트 웹 레이어 테스트 작성 통합 테스트 작성 군말 통합 테스트 작성 계기 제가 참여하는 프로젝트는 구조를 크게 3계층으로 나눌 수 있습니다. 아주 흔한 구조입니다. Web Service Repository 저는 이중에서 서비스 레이어에 대한 단위 테스트만 집중해서 작성했습니다. (모든 레이어를 꼼꼼하게 테스트해야 한다고 생각하지만 내부적인 협의점이 그것이었습니다.) 라이브러리에 의존하는 단위 테스트를 하면서 가장 불편했던 점은 프로덕션 코드를 변경하면 테스트 코드를 함께 변경해야 한다는 것이었습니다. 간단한 예시를 들어보겠습니다. 불필요한 부분은 생략하겠습니다. //제품 코드 fu..

Spring 2022.08.24

Spy와 Mock의 차이. 그리고 Spy 사용

Mock과 Spy는 테스트 더블(대역)이다. Test Double은 테스트를 목적으로 프로덕션 오브젝트를 대체하는 오브젝트를 뜻한다. ‘Test Double’이라는 말 때문에 처음에는 잘 이해가 되지 않았는데 영어권에서는 스턴트 맨을 스턴트 더블이라고 한단다. 그러니까 테스트 더블은 말하자면 테스트를 목적으로 진짜 오브젝트를 대신하는 테스트 계 스턴트맨이라고 볼 수 있다. Mock Mock은 가짜 오브젝트다. ‘가짜 오브젝트’란 뭘까? 간단한 Post 클래스를 작성해서 예시를 들어본다. class Post( val id: Long? = null, val title: String, val content: String, ) { fun create(title: String, content: String) { ..

카테고리 없음 2022.07.31

외부 시스템에 덜 의존하게 만들기

이전 글 예외처리에 대한 잡설에 이어서 지난 몇 달 간 아파트 입주민이 사용하는 방문예약 시스템을 개발했다. 입주민이 방문 차량을 예약하면 우리 시스템은 아파트 차단기를 관리하는 외부 시스템에 요청을 보내서, 예약된 차량이 간편하게 입차할 수 있게 하는 서비스다. 이 시스템의 아이덴티티는 예약하면 차단기가 열린다는 것이다. 그런데 우리는 차단기 회사가 아니고 차단기로 예약을 요청을 대신 보내주는 대리자 역할이다. 따라서 외부 시스템에 크게 의존적일 수밖에 없는 서비스다. 플로우는 복잡하지 않는데 간략하게 설명하면 세 단계로 볼 수 있다. 사용자가 앱에서 방문 차량을 예약한다. 메인 서버에서 방문 예약 서버로 요청을 위임한다. 방문 예약 서버는 외부 시스템인 차단기 관제 서버에 예약 내역을 전송한다. 사용..

ERROR!!!!!!! 2022.07.13

Learning SQL 스터디 7,8,9장 정리

Learning SQL 7,8,9장 요약 문자열 데이터 처리 문자열 데이터를 처리할 때는 다음 자료형 중 하나를 사용함. char 고정 길이 문자열. 지정한 크기보다 문자열이 작으면 나머지 공간을 공백으로 채운다. MySQL char는 최대 255자까지 허용한다. varchar 가변 길이 문자열. 최대 65,535자를 허용한다. text 가변 길이 문자열. 최대 4GB 크기 문서를 저장할 수 있다. MySQL에는 tinytext, textm mediumtext, longtext 등이 있다. 문자열 생성 문자열 길이가 최대 크기를 초과할 때 MySQL6.0 이후부터는 strict 모드로 동작하기 때문에 에러가 발생한다. 6.0 이전 버전은 경고만 발생하고 초과되는 문자열은 잘랐다. 다시 이 모드를 사용하려..

카테고리 없음 2022.06.12