전체 글(82)
-
DTO DAO 정리 with 라라벨
DTO와 DAO는 데이터베이스와 상호 작용하는데 사용되는 패턴입니다. DTO(Data Transfer Object) - DTO는 데이터베이스와 통신하는 데 사용되는 객체 - 속성과 그 속서에 접근하기 위한 getter / setter 메소드를 이용 - 데이터 저장 및 타입변환 기능 class UserDTO { private $id; private $name; private $email; private $age; public function __construct($id, $name, $email, $age) { $this->id = $id; $this->name = $name; $this->email = $email; $this->age = $age; } public function getId() { re..
2023.04.21 -
아키텍쳐 패턴과 디자인 패턴
[아키텍쳐 패턴] - Application의 전반적인 구조를 설계하는 패턴 - 대표적으로 MVC, MVP, MVVM, SOA(서비스 지향 아키텍쳐), EDA(비동기 방식으로 메세지 전달: Kafka, RabbitMQ).. [디자인 패턴] - Application의 전반적인 구조를 개선하기 위해 사용하는 패턴 - 객체 지향 프로그래밍에서 클래스 및 객체 간의 상효 작용 방법, 책임 분담, 관계 등을 고려하여 문제를 해결 - 대표적으로 Singleton, Factory Method, Observer.. [요약] - 아키텍쳐 패턴은 개발을 시작하기 전 구조를 생각할 때 도입 - 디자인 패턴은 개발 후 효율적인 코딩을 할 때 도입
2023.04.21 -
upsert query에서 발생한 문제점
[환경] Mysql5.7(InnoDB), Python [상황] upsert 쿼리에서 id(auto_increment)컬럼이 순차적이 아닌 건너 뛰면서 저장되고 있는 현상이였습니다. [원인] InnoDB에서 auto_increment 열은 각각의 트랜잭션에서 순차적으로 증가되며, 각 트랜잭션에서 할당된 auto_increment 값은 InnoDB의 메모리 버퍼에 저장되어, 나중에 디스크에 쓰여질 때까지 버퍼링 된다는 개념이 있습니다. 제 나름대로 정리를 하면 쿼리를 실행하기전 이미 auto_increment값이 각 각의 트랜잭션마다 할당 되어져 있다고 보입니다. 그렇기 때문에 만약 id가 1로 insert로 할려다가 이미 해당 row가 있다고 가정하면 update를 실행 후 그 다음 row를 실행하면 id..
2023.04.19 -
where , having 특징
where - 집계 함수(group)가 적용되기 이전에 해당하는 레코드들을 선택합니다. having - 그룹화된 결과에 대한 필터링을 수행합니다. group by와 무조건 같이 써야합니다. 즉 그룹화 된 결과에 대해서만 조건문이 적용 가능합니다. [예시] // 올바른 sql SELECT department, AVG(salary) AS avg_salary FROM employees GROUP BY department HAVING AVG(salary) >= 55000 ORDER BY avg_salary DESC; // 잘못된 sql SELECT department, AVG(salary) AS avg_salary FROM employees where AVG(salary) >= 55000 GROUP BY dep..
2023.04.19 -
Mysql now(), curdate() 차이
now() 함수는 현재 시간과 날짜를 "년-월-일 시:분:초" 형식으로 반환합니다. curdate() 함수는 현재 날짜 정보만 "년-월-일" 형식으로 반환합니다.
2023.04.19 -
Chrome, Firefox 차이 in selenium
[환경] mac m1칩에서 docker container로 ubuntu18.04 환경을 구축 [목적] container로 구축한 ubuntu18.04로 selenium을 실행 [참고] 이미 window10 환경에서는 ubuntu container에서 chrome, chromedriver를 설치 후 정상으로 selenium을 실행한 것을 확인했습니다. [에러] 이상하게 같은 소스에 같은 container였지만 mac m1에서만 Selenium: WebDriverException:Chrome failed to start: crashed as google-chrome is no longer running so ChromeDriver is assuming that Chrome has crashed과 같은 에러가..
2023.04.19