공부
-
[DB] NoSQL 스토리지 엔진 발전 과정공부/데이터베이스 2024. 6. 23. 22:48
1학기에 Hadoop 수업을 들었는데, 가장 마지막 수업의 제일 마지막 내용에 SSTable이 나왔다. 수업에서는 Hadoop Ecosystem 중 하나인 HBase에서 쓰이는데, SSTable에 대해 더 찾아보니까 NoSQL Storage Engine 발전 과정과 관련이 있었다. 이번 포스팅은 RDB에 사용되는 알고리즘인 B-Tree에 대해 알고 있는 상태로 글을 읽어야 더 도움이 된다. 왜냐하면 B+Tree는 읽기 성능이 좋은 기술이고, LSM Tree는 쓰기 성능이 좋은 기술이라 RDB와 NoSQL의 대표적인 차이점이니 생각해보면서 읽어보면 더 많은 내용을 얻어갈 수 있다. 1. Append Only File (AOF)우선 시작하기 전에 글에 나오는 데이터는 로그 데이터이고, key-value..
-
[Network] WebSocket공부/컴퓨터 네트워크 2024. 6. 14. 16:22
1. 웹소켓에 대한 간단한 정보인터넷에 널리 알려진 내용부터 잠깐 살펴보고 가자. 먼저 웹소켓이 없었을 때부터 이야기할 예정이라 웹소켓만의 특징을 먼저 알고 있는 상태에서 읽는게 도움이 된다. - HTTP와 같은 Application 계층의 프로토콜이다.- 데이터를 양방향으로 주고 받을 수 있다. 그래서 서버가 먼저 데이터를 보낼 수 있다.- HTTP / HTTPS에서 Upgrade, Connection 헤더를 사용해 웹소켓을 사용할 수 있다. 이번 포스팅은 소켓에 대해 알고 있어어한다. 아래 글을 보고 먼저 소켓에 대해 이해를 한 다음 글을 보는게 좋다.https://hello70825.tistory.com/598 [Network, OS] Socket, I/O Multiplexing, Event Lo..
-
[Network, OS] Socket, I/O Multiplexing, Event Loop공부/운영체제(OS) 2024. 6. 7. 16:57
Socket → I/O Multiplexing → Event Loop 순서로 공부한 내용이다.따로따로 내용을 분리하기엔 서로 연결된 내용이 많아서 한 번에 작성했다. 0. UNIX 철학Everything is a file 객체지향에서 "모든 것은 객체로 이루어져 있다"처럼 UNIX 운영체제의 철학은 "모든 것은 파일로 이루어져 있다"이다.소켓이든, 프로그램이든, 파이프라인이든 모든게 파일로 이루어져 있다는 것이다.이 내용을 기억해두면 좋은게 '추상적 개념'이 아닌 '파일'이라는 관점으로 보아야 수월하게 이해하는데 도움이 된다. 1. 소켓이란?[1] 개념소켓은 운영체제가 제공하는 인터페이스로 애플리케이션 계층의 프로그램이 네트워크 서비스를 사용할 수 있게하는 역할을 한다. TCP/IP 4계층으로 이..
-
[Network] HTTPS공부/컴퓨터 네트워크 2024. 5. 21. 15:47
1. HTTP와 HTTPSHTTP와 HTTPS의 큰 차이점은 패킷이 암호화되냐, 암호화되지 않냐의 차이이다.HTTP는 80번 포트번호로 패킷을 주고 받고, HTTPS는 443 포트번호로 모든 통신을 진행하게 된다.아래 와이어샤크를 통해 패킷을 확인해보자 HTTP 패킷HTTPS 패킷 큰 흐름의 HTTP/HTTPS 트랜잭션 HTTP는 80번 포트를 통해 3-way handshake를 통해 연결을 수립하고, 통신을 하다가 서로 주고 받을 패킷이 없으면 4-way handshake를 통해 통신을 종료한다.HTTPS는 살짝 다르게 3-way handshake를 한 이후 SSL handshake를 진행하고, 이후 통신을 끊을 때에는 SSL 닫힘 통지가 먼저 일어나는데, 이때 클라이언트와 서버가 close_noti..
-
[Selenium] AutoCloseable이 없는 이유공부/etc 2023. 2. 19. 23:12
자바의 정석 예외처리 파트를 읽고 있는데, try-with-resources문을 사용하는 것이 좋아보였다. 실제로 이게 좋은 것인가?하고 찾아보니 이펙티브 자바에도 이런 내용이 있어서 개선할 코드가 있으면 직접 수정하는 것도 좋아보였다. 그래서 작년에 했던 산학프로젝트에 ChromeDriver를 try-with-resources로 적용해 PR을 보내려고 했는데, 빨간줄이 나와 내부 코드를 확인해보니 AutoCloseable 인터페이스를 상속하지 않은 상태였다. 기여를 해볼만하다는 생각이 들어서 셀레니움 깃허브에 들어갔는데, 이미 나와 같은 생각을 했던 사람들이 여러명 존재했다. 사실 별 기대조차 안했다. 내가 이걸 발견할 정도면 이미 다른 사람들이 발견했을테니... 이유 1. close() 이름 중복 내..
-
powershell, bash gradlew 한글 깨짐 현상 수정공부/etc 2022. 10. 19. 23:50
IntelliJ에서 터미널을 사용하는중 gradlew와 gradlew.bat을 통해 clean test를 실행하려고 하는데, 평소에 잘 나오던 한글 인식을 못해서 컴파일이 불가능한 현상이 나타났다. 디렉토리 목록을 봐도 한글이 잘나오고, git log를 확인해도 한글이 잘나오는데 gradlew를 실행하니 한글을 못 알아먹는 상태여서 정신이 나갈뻔했다. 이때 나왔던 오류는 unmappable character for encoding MS949, illegal character: '\ufffd' 가 섞여서 나왔고, 출력되어야 할 한글은 반절은 제대로 나오고, 나머지는 물음표로 나왔다. 먼저 구글링을 해보니 powershell 인코딩 자체를 UTF-8로 변경하는 방법을 쓰라는데 적용해봐도 그대로였고, 아래 방..
-
[html2pdf, Java] HTML을 PDF로 변환해주는 오픈소스공부/etc 2022. 10. 13. 18:21
1. Flying Saucer https://github.com/flyingsaucerproject/flyingsaucer GitHub - flyingsaucerproject/flyingsaucer: XML/XHTML and CSS 2.1 renderer in pure Java XML/XHTML and CSS 2.1 renderer in pure Java. Contribute to flyingsaucerproject/flyingsaucer development by creating an account on GitHub. github.com 특징 LGPL-2.1 이상의 라이센스를 사용한다. 2021년 10월부터 업데이트가 끊겼다. HTML → XHTML → PDF 순서로 변환을 해야한다. 장점 LGPL 라..
-
[ChromeDriver] close(), quit() 차이공부/etc 2022. 10. 3. 12:42
산학 알앤디 프로젝트 리팩토링을 하는데, 서버를 실행하면 어느 순간부터 CPU 사용량 99%, 메모리 사용량 99%를 점유하여 컴퓨터가 버벅이는 현상이 발생했다. 그러다가 작업관리자를 실행하여 발견한 것이 이게 CPU, 메모리 99% 사용이 되는 주된 원인은 아니지만 크롬드라이버와 콘솔 창 호스트가 엄청 많이 실행되어서 메모리를 어느정도 잡아먹고 있다는 사실을 발견했다. 왜 많이 실행이 되는 것인지 확인을 해보니 셀레니움을 사용할 때마다 새로운 크롬드라이버가 실행되고 있었고, 셀레니움을 다 사용했으면 관련된 프로그램이 전부 종료가 되어야 하지만, 크롤링할 때 사용된 크롬만 종료되고 크롬드라이버와 콘솔 창 호스트가 닫히지 않은채로 그대로 있었다. 그래서 프로젝트에 분석 시작이라는 버튼을 클릭할 때마다 새로..