본문 바로가기

전체 글

(426)
Python sandglass 파이썬 모래시계 * 찍기 알고리즘 파이써닉하지 않은 모래시계 생성 코드 def calculate_star_count(input_number, row_index): return abs((input_number//2 - row_index) * 2) + 1 def calculate_space_count(input_number, star_count): return (input_number - star_count) // 2 def draw_space(space_count): for j in range(0, space_count): print(' ', end='') def draw_star(star_count): for j in range(0, star_count): print('*', end='') def new_line(): print() if..
Nginx 를 사용한 Load balancer 역할의 Reverse proxy 적용 시, 늘어나는 뒷단 서버의 개수만큼 생각처럼 수용량이 늘지 않을 경우 (socket: too many open files) 로드밸런서 역할을 할 리버스프록시 서버 nginx 가 들어있는 docker container 를 실행했다. 처음에는 리버스프록시 뒷단에 ec2 두대로 k6 확인을 했었는데 대략 800? VUs 까지 버티는 것으로 보였다. 아니.. 그러면 단순히 ec2 를 세대, 네대, 다섯대 늘리면 과부하(stress) 테스트를 했을 때 버틸 수 있는 VUs 수가 그 만큼 선형으로 증가하는가?? 해서 ec2 를 5대까지 늘려보았다. 근데 계속 1000 VUs 근처에서 too many open files 에러가 나면서 request fail 이 뜬다. 나중에 보니 정확히는 1024 VUs 였는데, ulimit -a ulimit -aH // 하드 ulimit -aS // 소프트 유저 리밋에서 파일 오픈 가능 개수가 1024..
Docker container stop 시에 permission denied 에러 도커 컨테이너 잘 돌리다가 삭제가 안되는 경우가 종종 있다. ``` sudo aa-remove-unknown ``` 위의 것을 입력해주면 관련 apparmor 를 날려주고 삭제가 된다. 이 때, apparmor 가 뭔가 찾아보니 리눅스의 보안 관련 커널이다. 특히 docker 를 snap 으로 설치하면 많은 AppArmor profile 이 쌓이고, 충돌이 날 수 있다고 한다.
JPA 관련 에러 error, Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement " ~ "; expected "identifier"; SQL statement: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement " ~~~ (sql 문) "; expected "identifier"; SQL statement: 위와 같은 에러로 한참 찾다가 보니.. db sql 에서 Order 이라는 키워드를 사용해서 Order 이라는 클래스를 사용 못하는 문제였음 Order뿐 아니라 다른 자바의 키워드도 클래스명으로 매핑하면 사용 불가할 것으로 보임
Anaconda environment copy, 아나콘다 환경 복사 생성 가상환경정보 추출해서 파일 생성 > $ conda env export -n testEnvironment> test.yml 추출한 파일로 다른 pc 에서 동일한 가상환경을 생성 > $ conda env create -f test.yml (test.yml 을 만들 때 사용된 환경의 이름과 동일한 환경으로 생성됨) anaconda 에서 설치된 패키지 중, 파이참에서는 동작하나 vscode 에서는 동작하지 않는 경우가 종종 있다. > $ pip install --force-reinstall matplotlib pip로 다시 설치하면 해결된다.
Cascade Lazy 지연로딩 시 Proxy 프록시 객체의 null 값 문제 Exception 지연로딩 시 프록시객체의 null값 문제 추가 해당 원인을 나중에 알게되어서 추가한다. lazy loading 한 프록시 객체는 결국 jpa context 안에서 유지되는 것이 있어야 사용 시에 로딩해서 사용할텐데, jpa context 생명주기가 트랜젝션에 따른다. 그래서 트랜잭션을 나와서 controller 단에서 반환하면 에러가 나는 것이다. 해결방법은 이전에 썼던 내용으로 처리하면 될 듯 하다. 지연로딩으로 연관관계가 있는 하위 객체가 프록시객체로 만들어진 경우, 해당 객체의 값은 가져올 수 있다. 하지만 프록시객체 자체를 http response로 넘기게 되면, 내부에서 serialize를 거칠 때 아래와 같은 에러를 볼 수 있다. com.fasterxml.jackson.databind.exc...
CascadeType = removed, JPA hibernate. 관계된 엔티티가 있는 경우에 삭제 시 참조무결성 에러발생 (SQL Error: 23503, SQLState: 23503) 우선 Cascade 의 뜻은, 종속 / 폭포 같은 의미가 있다. 다른 엔티티와 연관관계가 있는 경우, 특히 객체지향 관점에서 상위에 있는 객체의 경우, 삭제 등의 행동 시 하위 관련 엔티티 객체들까지 영속성을 부여해주어야 한다. 영속 컨텍스트에 있다가 flush 까지 되어 DB 업데이트가 완료 되어야 그 이후 에러가 없는 것으로 보인다. CascadeType 으로는 아래와 같이 enum으로 있다. package javax.persistence; /** * Defines the set of cascadable operations that are propagated * to the associated entity. * The value cascade=ALL is equivalent to * cascade={..
JPA hibernate: @OneToOne Lazy Loading, 일대일 매칭에서 지연로딩 시, optional = false 를 주어야 하는 이유 원본: https://stackoverflow.com/questions/17987638/hibernate-one-to-one-lazy-loading-optional-false 이해한 바에 의하면, 지연로딩을 하면 사용 전까지 로딩을 안하기 때문에 assosiation 을 optional true 로 해두면 참조 주소가 있는지 없는지 알 길이 없다. 그래서, optional 을 false 로 해두고 lazy loading을 하더라도 항상 관계가 존재하도록 해주어야 한다. docs를 보면 아래와 같다. javax.persistence.OneToOne public abstract boolean optional() (Optional) Whether the association is optional. If set..