본문 바로가기
728x90
반응형

전체 글323

cargo update가 만든 의외의 함정 저는 이전 포스팅에서도 말씀드렸다시피, 최신 버전을 계속해서 업데이트합니다. 그래서 항상 러스트 라이브러리들의 최신 버전을 유지하기 위해, cargo update를 수행합니다. 해당 포스팅에서는 무턱대로 cargo update를 수행하다가 발생한 문제와 이를 해결하는 방법에 대하여 설명드리고자 합니다.뭘 업데이트 했는데?최근에 cargo update를 통해 다음와 같이 새로운 라이브러리와 2개의 다른 라이브러리를 업데이트 하였습니다. 모두 dropbox의 레포에서 업데이트된 라이브러리들입니다.Adding alloc-no-stdlib v3.0.0Updating alloc-stdlib v0.2.2 -> v0.2.3Updating brotli-decompressor v5.0.1 -> v5.0.2이게 무슨 문제.. 2026. 6. 14.
Rust Lint로 숨겨진 Warning 찾기 Rust에는 다양한 warning 로그가 존재합니다. 물론, 모든 warning로그를 지우지 않아도 되지만, 사용하지 않는 코드가 남아있다거나, 불필요한 변수를 선언한 경우 등 다양한 케이스들에도 warning로그가 발생해, 저는 왠만하면 제거하고 있습니다. 그러던 중 [workspace.lints.rust]이라는 것을 알게 되었고, 이를 프로젝트에 적용한 후, cargo build --all-targets --all-features를 실행하게 되면, 숨겨진(?) warning 로그들을 찾아서 알려줍니다. 몇몇 lint들에 대하여 이야기 드리자면버그 발견unused_must_use = "warn"을 사용하게 되면 다음과 같은 케이스를 발견할 수 있습니다.fn process() -> Result { .. 2026. 6. 7.
작은 PR 하나에서 시작된 Rust 오픈소스 기여 3월 17일부터 rust라는 레포에 기여를 진행해 왔습니다. issue에 있는 내용 중, 처리가 가능할거 같다는 내용들만 찾아서 assignee을 받고, pr을 올려 merge까지 진행했었습니다. document 수정부터, issue에 이렇게 수정하면 될거 같다 라던가, 이런 설명은 추가하면 좋겠다 등 다양한 종류들의 issue를 처리해왔습니다. 5/28 오늘 Rust의 신규 버전이 1.96.0 버전이 출시되었습니다. https://blog.rust-lang.org/2026/05/28/Rust-1.96.0/ Rust는 신규 버전이 나올때마다, Rust blog에 해당 내용을 올리고, 새로운 버전이 나오는데 기여해주신 분들을 github 닉네임과 Contributions 횟수를 같이 작성해줍니다. 처음으로.. 2026. 5. 29.
Timing Attack 방지를 위한 Constant-Time 비교 암호학에서 사용하는 constant-time 연산(타이밍 공격 방지용)에 대하여 알려드리고자 작성하였습니다. 특정 key 인식을 통한 인증 시스템을 구현하는 경우, 보통 언어의 equals 기능을 사용하여 적합한 key인지 판별하게 됩니다. 그러나, 해당 방식으로 사용하게 된다면 문제가 될 수 있다.어떻게 구현되어 있는데?언어별 equals에는 문자열 비교는 1byte씩 비교하다가 다른 글자가 나오면 false를 반환합니다.예시 java 내부 코드public boolean equals(Object anObject) { if (this == anObject) { return true; } return (anObject instanceof String aString) .. 2026. 5. 25.
How Netflix Uses Java 2026 Edition 리뷰 2025년에 Java 컨퍼런스에서 Netflix는 Java를 어떻게 사용하였고, 이런게 Netflix에서 어떤 영향을 끼쳤는지에 대하여 이야기해준적이 있습니다. 간단하게 이야기하면 다음과 같은 내용이 인상깊었습니다.Java의 버전을 8에서 17로 올리면서 CPU 사용량이 약 20% 감소했다.Java8의 GC와 Java17의 GC가 차이가 있음으로 인해서 성능이 좋아졌다는 이야기를 했었습니다.G1 GC에서 ZGC로 바꾸면서 STW의 시간이 대폭 줄었고, 이로 인하여 서비스 통신 시간이 감소되어 오류율이 많이 감소되었다.ZGC는 G1 GC에 비하여 많은 메모리를 소모하는 대신 STW의 시간이 대폭 줄어들어 시간적으로는 효과가 있어서 발생한 현상입니다.Spring boot WebFlux를 사용하지 않는다.Ja.. 2026. 5. 15.
AI 개발 시대에 대한 내 생각 최근 AI개발 시대가 도래하면서, AI만능론자들이 많아지는거 같다.그게 왜?이전에 다음과 같은 이야기를 들었었다.A : 이 코드 왜 이렇게 작성했어요?B : 이거 AI가 작성해줘서, 잠시만요 물어볼게요A : ???본인이 commit한 내용에 대해서, 이해하지 못하고 그저 코드가 정상적으로 작동한다는 이유만으로 AI가 작성해준 코드를 프로젝트에 적용하면서 발생한 문제다.최근에는 한명의 개발자가 백엔드, 프론트, 인프라, 엔진, AI 를 모두 개발한다는 사실을 들었다. 해당 이야기는 물론 가능할지도 모른다. 그치만, 해당 직무에 대한 지식이 전혀 없는 개발자가 AI로 개발을 진행하다면, '해줘'와 '어 되네 commit'만 진행할지도 모른다. 그렇게 되면, 코드는 계속해서 복잡해지고, 인간이 코드를 보기에 .. 2026. 5. 9.
죽은 라이브러리 교체부터 보안 이슈 해결까지 개발을 진행하다보면, 라이브러리 없이 개발을 진행하기에는 어려운 작업들이 존재합니다. 라이브러리들 중에 오픈소스로 github에 공개되어 있는 라이브러리들이 있습니다. 이번에 개인 프로젝트로 개발을 진행하면서 이러한 라이브러리들을 사용하게 되었습니다. 그러다 문득, 현재 사용중인 라이브러리들이 여전히 관리가 되고 있는지 궁금하여, 해당 라이브러리들의 github을 방문하다가 현재 관리가 진행되고 있지 않은 라이브러리를 발견하였습니다.무슨 라이브러리?현재 개인 프로젝트에서는 sqlite를 활용하여 db를 사용하고 있었습니다. db관련 라이브러리들 중 r2d2라고 데이터베이스에 연결을 관리하는 라이브러리였습니다. 해당 라이브러리의 마지막 커밋은 2년전이고, 더이상 관리가 되고 있는것으로 보이지 않아 다른 라.. 2026. 5. 5.
Cargo dependency 중복 분석기 SearchRustLib 소개 C++만큼의 빠른 속도와 GC 없이 메모리 관리가 가능한 Rust라는 언어에도 몇가지 단점이 존재합니다. 여러 단점들 중, dependency 부분에 문제가 있습니다. 여러 단점들 중 1개에 대하여 해결하는데 도움이 되는 프로젝트를 소개해보고자 합니다.무슨 문제?Rust의 라이브러리들을 해당 라이브러리들이 쓰고 있는 라이브러리인 하위 라이브러리들이 여럿 존재합니다. 현재 프로젝트에 사용되는 dependency들의 하위 dependency들의 버전이 여러 개인 경우, 하나의 라이브러리에 대해여러 버전들을 함께 빌드하여 target 폴더에 저장됩니다. 그러면서, 빌드 속도도 느려지고, 빌드된 파일의 크기가 커지기도 합니다.이게 그렇게 문제가 돼? 개인 프로젝트가 운영되는 서버에서 용량의 89%가 차지하는 문.. 2026. 5. 2.
PriorityQueue vs Collections.sort: 왜 sort가 더 효율적일까? 이전에 어떤 분이 이야기를 해줬던 내용에 대하여 정리하고자 한다.질문 내용import java.util.*;class Main { // SORT 방식 static List solveArr(Map> map) { List arr = new ArrayList(); for (String key : map.keySet()) { arr.add(new Node(key, map.get(key).size())); } Collections.sort(arr); List result = new ArrayList(); for (Node n : arr) { result.add(n.key); }.. 2026. 4. 27.
728x90
반응형