전체 글
-
HTTPCP(Hyper Text Coffee Pot Control Protocol)ETC 2024. 5. 16. 21:26
RFC 2324과 RFC 7158에 의하면커피를 만들고 싶어 하는 컴퓨터 엔지니어들을 위한 프로토콜 'HTTPCP'이 정의되어있다HTTPCP는 HTTP 1.1을 기반으로 동작한다.HTTP 1.1 ([RFC2068]) permits the transfer of web objects from origin servers to clients. The web is world-wide. HTCPCP is based on HTTP. This is because HTTP is everywhere. It could not be so pervasive without being good. Therefore, HTTP is good. If you want good coffee, HTCPCP needs to be good. T..
-
@Transactional(readOnly = true) 는 Flush 가 동작안할꺼라 믿었다JPA 2024. 4. 23. 23:26
public class MarineService { WeaponService weaponService; @Transactional public Marine getMarine(){ Factory factory = factoryRepository.findById(1L).get(); Marine marine = factory.createMarine("marine"); Weapon weapon = weaponService.getWeapon(); marine.setWeaponName(weapon.getName()); return marine } } public class WeaponService { @Transactional(readOnly = true) public Weapon getWeapon(){ retur..
-
c 와 java 에서 call by reference는 없다ETC 2024. 4. 4. 18:38
Call by Reference(Pass by Reference) call by reference는 프로그래밍 언어 설계에서 사용되는 용어로, 함수에 인수를 전달할 때 값의 복사본 대신 원래 값의 참조를 전달 받는 것을 의미한다. 함수 내에서 참조를 통해 직접 값을 접근함으로써 원본을 변경할 수 있게 된다. 예를 들어 다음과 같은 Java 코드를 살펴보면 public static void main(String[] args) { List list = new ArrayList(); add(list); System.out.println(list.size()); //output: 1 } public static void add(List collection){ collection.add("1"); } 위 코드는 ..
-
깃허브 잔디 조작해서 아스키 아트 그리기Tools 2023. 12. 7. 16:10
로컬에만 커밋을 해 두고 푸시 안 하고 있다가 며칠이 지난 나중에 푸시하니 로컬에 커밋한 시간에 깃허브 잔디가 심어진것을 보았다. 그걸 본 나는 이상한 생각이 들었다 깃 커밋 구조를 파악하면 깃허브 잔디로 재미좀 보겠는걸? 그러기 위해서는 github 가 어떤 정보를 보고 잔디를 생성해 주는지 알아보아야 한다. 먼저 알아야 할 것은 git이 데이터를 관리하는 위치는. git/objects 디렉터리인데 여기에는 파일 해시, 커밋 해시 등 git 이 특정 상태를 기록하기 위한 모든 것을 해시로 관리하고 있다 먼저 문제의 커밋이다 commit 0f6f8949e6dbc748b098d88377c806dbd341e196 (HEAD -> main, origin/main) Author: birariro Date: Mo..
-
QueryDSL에서 SubQuery 에는 limit 를 사용 할 수 없다.JPA 2023. 11. 15. 16:56
SubQuery 종류 중from 절에 사용하는 인라인뷰는 지원하지 않으니 당연히 limit를 사용할 수 없고select의 Scalar SubQuery 나 where 절 SubQuery에 limit 사용이 안된다는 것을 알게 되었다. Scalar SubQuery에서 limit 분실select( new QModel( orders.orderId, JPAExpressions.selectDistinct(orderHistory.message) .from(orderHistory) .where(orderHistory.orderId.eq(orders.orderId)) .orderBy(orderHistory.createDateTime..
-
Mysql(Maraidb) 실행 계획 살펴보기DB 2023. 11. 12. 14:09
TL;DR 쿼리문 앞에 explain을 붙여 실행하는 것으로 실행 계획을 볼 수 있다. key 항목에 있는 값이 동작한 인덱스이다 type 항목의 있는 값은 const(좋음) -> eq-ref -> ref -> range -> index -> all(안 좋음) 순이다. extra 항목의 값은 동작 방식을 알려주며 인덱스만을 사용했는지, 디스크까지 접근했는지 등을 알려준다. MySQL(Mariadb) 서버는 클라이언트로부터 오는 요청을 처리하기 위해 Parser, Optimizer, Chches 등 수행하는 DB(MySQL, Mariadb) Engines과 실제 데이터를 디스크에 저장하고 조회하는 Storage Engines로 구성되어 있으며 옵티마이저는 요청한 쿼리를 어떤 실행 계획으로 실행했을 때 비..
-
JpaRepository 가 아닌 Repository를 상속 받아 CQRS 로 분리하기Spring-Boot 2023. 11. 6. 17:20
@Repository public interface MemberRepository extends JpaRepository, CustomMemberRepository { } 위같이 흔히 볼 수 있는 JpaRepository + CustomRepository 조합에서 데이터베이스는 하나지만 왠지 모르게 저 인터페이스를 CQRS로 분류하고 싶은 순간이 다들 한 번쯤 올 것이다.(아님 말고) CQRS의 Command를 담당할 Repository의 이름을 MemberCommandRepository로 Query를 담당할 Repository의 이름을 MemberQueryRepository라고 한다면 어떻게 구성할수있을까? @Repository public interface MemberQueryRepository ex..
-
[보이지 않는 동료] 목적을 통일시키고 인정을 기다리며ETC 2023. 10. 27. 20:23
원본이 있는 글이며 좋은 한글 번역 게시글이있습니다. 조금 더 쉽고 편하게 읽을 수 있도록 수정하였으며 원문의 내용을 해치지 않도록 하였습니다. 스티브 마퀴스는 텔레비전도 없고 휴대전화 신호도 없는 워싱턴 주변의 작은 나무집에 은둔하고 있다. 그는 15년 동안 전 세계의 수십 명의 프로그래머와 함께 인간의 개인 정보를 보호하기 위한 큰 프로젝트를 비밀리에 개발하고 있다. 그러나 그들은 서로를 거의 본 적이 없으며 각각 마치 유령처럼 존재한다. 그러던 중 어느 날, 중국 기업이 갑자기 "대량의 기부금"을 보내기 전까지는.. 스티브 마퀴스 스티브 마퀴스는 워싱턴 주변의 작은 나무집에 은둔하고 있다. 서비스 제공업체는 매년 그의 집 앞에 신호 탑을 세울 것을 약속했지만 한 번도 이행한 적이 없고 나무집 주변은..