일주일간 나의 흥미를 끈 인사이트는??
MongoDB, DocumentDB 1년 운영 경험 기록
https://lhb0517.tistory.com/entry/MongoDB-DocumentDB-1%EB%85%84-%EC%9A%B4%EC%98%81-%EA%B2%BD%ED%97%98-%EA%B8%B0%EB%A1%9D
해시(Hash)
https://root-devvoo.github.io/algorithm/%ED%95%B4%EC%8B%9C/
NEW! Most Popular Programming Languages 1965 - 2022
https://youtu.be/qQXXI5QFUfw
Java Virtual Threads 훑어보기
https://perfectacle.github.io/2022/12/29/look-over-java-virtual-threads/
스택오버플로우의 개발자 설문조사 2022
https://news.hada.io/topic?id=8145&utm_source=slack&utm_medium=bot&utm_campaign=T03DN2VDVFG
막다른 골목에 다다른 한국의 온라인 보안 실태
https://news.hada.io/topic?id=8176&utm_source=slack&utm_medium=bot&utm_campaign=T03DN2VDVFG
https://lhb0517.tistory.com/entry/MongoDB-DocumentDB-1%EB%85%84-%EC%9A%B4%EC%98%81-%EA%B2%BD%ED%97%98-%EA%B8%B0%EB%A1%9D
지금 나도 알림서비스를 만들고 있는데 아직은 RDB를 하고 있지만 조회하는 것만큼은 나중에 MongoDB로 변환하고 싶은 마음이 있기 때문에 해당 문제 해결 경험에 대한 글이 반가웠다. 예전에 mongoDB에 사용하적은 있었으나 단순히 사용하기만 했음을 다시 한번 확인했다. 해당 글의 원인의 update시도에 따른 lock이 한 document 전체에 이루어지기 때문에 발생한거라 생각되어진다. 아직은 내가 수준이 안되어서
위 글에서 빨간 밑줄친것이 정확히 어떻게 한것인지 와닿지는 않는다ㅠㅠ 원래는 mysql다 읽고 mongoDB를 읽으려고 했는데 mongoDB도 책사서 같이 봐야하는 것이 아닌가 생각되어진다. 책 하나 사서 기본이라도 알게 하기로 결정!
https://seohyun0120.tistory.com/entry/%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC%EC%99%80-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC%EC%9D%98-%EC%B0%A8%EC%9D%B4
1) 라이브러리
-- 내가 작성한 코드내에서 특정 작업을 수행하는데 사용할 수 있는 '미리 작성된 코드의 모음'
-- class 정의의 모음집.
-- 재사용성
-- 우리가 작성한 라이브러리 코드를 호출함.
-- ex) spring-boot-starter-thymeleaf, spring-boot-starter-tomcat
2) 프레임워크
-- 함수 라이브러리와 코드를 구성하고 배포하기 위한 규칙 집합을 포함하여 애플리케이션을 빌드하기 위한 구조를 제공하는 포괄적인 도구 모음
-- 프레임워크 코드가 개발자가 작성한 코드를 호출한다.
-- ex) spring
https://root-devvoo.github.io/algorithm/%ED%95%B4%EC%8B%9C/
이전에 해시와 해시충돌에 대해 정리하고 있어서 해당 글이 다 알고 있었지만, 일부분 내가 놓친 점이 있어서 첨가한다.
hash는 단방향의 암호화 알고리즘이다. hashmap과 hashtable은 hash알고리즘을 이용한 자료구조이다!
open addressing
1) open addressing에서 해시 충돌 시 n칸을 건너뛴 다음 버킷에 저장하는 경우 데이터들이 특정 위치에만 밀집할 수 있다.(clustering)
2) 제곱 탐색 -> 데이터들이 특정 위치에 밀집하는 문제를 어느정도 해결하기 위해 나옴
3) 이중 해시 -> 그럼에도 불구하고 Hash값이 동일하다면 건너뛴 칸의 개수도 똑같기 때문에, 똑같이 N번의 탐색을 할 수 있고 clustering이 여전히 발생해서 나옴.
seperate chaining
1) Hash Function으로 index의 위치를 찾는데 O(1)의 시간 복잡도가 걸린다고 해도, index의 위치에서 값을 가져올 때 해당 값을 찾기 위해 또 리스트를 하나씩 탐색하는 과정을 거쳐야 해서 O(N)의 시간 복잡도가 나온다.
2) linkedList대신 트리자료를 사용함으로써 시간복잡도 단축시켰다.
https://youtu.be/qQXXI5QFUfw
진짜 미친듯이 신기하다. 1960대에는 Fortran이란 언어가 압도적이었고 java는 보이지도 않았다. 그러다 1975년도에 C가 발생하면서 점점 순위가 위로 치고 간다. 이건 진짜 영상을 봐야한다. C가 1위하는 순간이 되었을때 쾌감ㅋㅋ pascal도 많이 사용했나보다. c++도 점점 위로 올라오는데 엄청신기하다. java는 엄청 빠르게 사람들이 많이 사용하기 시작했다. 금방 바로 C를 제치고 인기있는 언어로 1위가되는 것을 알 수 있다. 그리고 java가 진짜 장기적으로 1위를 했다. 자바가 2001년부터 1위였는데 18년도가 되어서야 파이썬이 1위로 급부상을 한것을 알 수 있다. 영상을 보고 쾌감을 느껴라!
https://perfectacle.github.io/2022/12/29/look-over-java-virtual-threads/
Virtual Memory도 잘 모르는데 벌써 Virtual Threads가 생겼다고??? 기존에 ThreadPool이용해서 Thread들을 재활용하는데, Virtual Thread는 왜 또 필요할까? (여담이지만, 내 지식 습득 속도보다 기술 발전이 더 빠른것같다.. 난 읽기만 하면 되는데 만드는 것보다 왜 느릴까....?) 일단 결론은 기존까지는 아무리 ThreadPool을 이용했다고 하지만, JVM 스레드 : OS 스레드 = 1:1를 유지한것이라 JVM 스레드 갯수가 여전히 OS 스레드 갯수에 의해 제한을 받고, 스레드 풀에서 스레드를 하나 가져가면, 그 스레드는 연산을 수행하지 않더라도 다른 곳에 사용되지 못하고 낭비된다는 단점이 있다고 한다. 이를 가상스레드가 해당 공식을 깸으로써 훨씬 가볍고 저렴하면서 구조적 동시성을 이룬다고 한다.
아직 자바 19버전에 테스트버전으로만 도입된것이라 안정 버전이 나올지 기대가 된다.
https://news.hada.io/topic?id=8145&utm_source=slack&utm_medium=bot&utm_campaign=T03DN2VDVFG
우선적으로 놀라운것은 DB의 1위가 PostgreSQL이라는 점이었다. RDB는 순위에 끼지도 못하고 있다.작년엔 Git이 필수 도구였는데, 올해는 Docker가 전문 개발자들에게 비슷한 필수도구가 되었다는 점도 놀라웠다. Docker 잘 배워놓아야 할듯. 아까 위의 유튜브의 인기있는 언어가 파이썬이라고 써있던데 여기는 Rust가 1위라고 한다. 많이 보이긴하던데 혹시 Rust에 대한 글 올라오면 못 알아먹더라도 조금씩은 봐야겠다.
https://news.hada.io/topic?id=8176&utm_source=slack&utm_medium=bot&utm_campaign=T03DN2VDVFG
나도 결제나 뱅킹업무를 해야할때 설치하라고 하는 보안 애플리케이션을 다 설치했는데, 거의 의미가 없다는 것이었다니...설마설마가 진짜였다. 이걸 한국인 스스로가 아는 것이 아니라 외국인이 확인을 해야만 실태가 밝혀진것도 놀랍다. 개발자의 길을 걷는 사람으로써 보안쪽 일은 아니지만 왠지 돌려까기를 당한것같은 불편함을 느꼈다.