Development34 인텔리제이, CLion에서 Rust 사용하기 (개발하기) 목차 Rust가 좋다고 하길래 궁금해졌다. 일반적으로 Rust 언어로 개발할 때 vscode를 많이 쓰는 것 같다. 하지만 내 경우 이미 젯브레인 계열의 단축키가 익숙해져 버린 몸이므로, 인텔리제이나 CLion으로 Rust를 사용해보고 싶었다. Rust 설치 https://www.rust-lang.org 에서 Get Started 또는 Install 메뉴에서 Rustup을 다운로드 후 실행한다. rustup은 러스트의 버전 및 환경 관리 도구라고 보면 된다. Case 1. 이미 Visual Studio가 깔려있던 경우 Rust를 사용하려면 MSVC 라는게 필요하다. 이미 Visual Studio 같은게 깔려있었다면 아래처럼 메뉴가 나타날꺼다. '1'을 선택해 안내에 따라 설치를 진행하자. 이 때, 윈도우.. 2023. 7. 28. 인텔리제이, 파이참 여러 PC 환경 동기화 (jetbrains 툴을 여러 PC에서 사용하는 경우 환경 동기화) 목차 별도로 노트북을 사용하지 않는 경우, 집과 회사에서 사용하는 PC가 다를 수 있다. 인텔리제이나 파이참 등 jetbrains의 툴들을 회사에서 사용하는 설정과 집에서 사용하는 설정을 다르게 쓰고 싶은 경우도 있겠지만, 일반적으로는 한 곳에 공들여서 설정해두고 나면 다른 쪽도 동일한 환경으로 사용하고 싶어진다. 예를들어 이번에 copilot 플러그인을 설치했다면, 다른 쪽도 굳이 plugins에서 새로 설치 안해도 알아서 설치되면 좋을꺼다. 뭐 Live Templates(예를들어 sout이라고 치면 System.out.println(); 이 나타나는 숏컷같은거)을 새로 등록한 경우, 이것도 알아서 다른 PC에도 설정되면 좋을꺼다. 또는 윈도우를 밀어서 재설치하는 경우나, 새로운 컴퓨터를 샀거나 등의 .. 2023. 7. 28. 개발자 쓸만한 인텔리제이 플러그인 추천 (IntelliJ Plugin) 목차 개인적으로 쓰고 있는 플러그인들 중에 쓸만한 것들을 한번 적어봤다. File -> Settings -> Plugins 에서 검색해서 설치하면 된다. Atom Material Icons IDE 전체적인 아이콘들을 이쁘게 해준다! 일단 깔아보고 너무 정신없으면 삭제하자. 내 경우엔 별론거 같아서 삭제했다가 어느순간 생각나서 다시 설치해뒀다. CodeGlance3 코드 우측에 미니맵같은걸 추가해준다. CodeMetrics 코드가 얼마나 복잡한지(?) 알려준다. 대충 저게 빨개지면 뭔가가 잘못되고 있다고 생각하면 된다. 물론 어쩔 수 없을때도 있다..(?) 이하 극단적인 경우긴 하지만 11차원 너비 우선 탐색이 필요한 백준 17114번 (하이퍼 토마토) 문제를 푼 코드이다 ㅋㅋ 우측에 CodeGlance3.. 2023. 4. 5. 기본적인 자바 람다(Lambda) 목차 개인적으로 가독성이 좋은지 잘 모르겠어요. 개인적으로 람다가 정말 가독성이 좋은진 잘 모르겠다. 그렇다고 안쓴다는 얘기는 아니고, 쓰긴 쓴다. 다만 쓸 수 있다고 너무 아무대나 다 써버리면 읽기 편하다는 장점이 오히려 사라지는 것 같다. 코드가 짧다고 항상 가독성이 좋은건 아니다. 익명 클래스를 사용한 A보다는 람다를 사용한 B가 더 보기 편한게 맞다. 보기 편하긴 하지만 결국 아래처럼 좀 생소한 클래스에 써있다면 결국 까봐야 한다. 특히 생성자가 많다면 더 헷갈릴 것 같다. (물론 인텔리제이 기준 ctrl 누른상태로 클릭하면 해당 생성자로 바로 이동하긴 한다.) 아무튼 개인적으로 그렇다는거고, 코드가 더 짧아져서 어느 수준 이상의 실력이라면 보기 편한게 사실이다. 그러니 기본은 알아두자. 람다 기.. 2023. 4. 3. Spring Initializr 에서 선택한 자바 버전은 어떤 의미일까? 목차 Spring Initializr는 자바 버전을 선택할 수 있다! 근데 알다시피 스프링 부트 3.0 부터는 자바 17 이상을 써야 하는데, Spring Initializr는 아무튼 버튼은 그대로 표출되어 있다. 이와 관련된 에러는 '스프링부트 3.0.0 프로젝트 생성시 에러 해결법' 에서 볼 수 있다. 그럼 궁금한건 그럼 저 "자바 버전을 선택하는게 어떤 의미가 있나?" 라는 부분이었다. 자바 버전을 변경하면 바뀌는 부분 스프링부트 2.7.X 버전이하일 경우 자바 버전을 바꾸면 변경되는 부분은 build.gradle의 sourceCompatibility 부분이다. 그리고 스프링부트 3.0.x 버전의 경우, 분명 3.0.0 초창기에는 Spring Initializr로 생성 시 17버전이 아니라면 저 부.. 2023. 4. 3. IntelliJ는 왜 jdk(java)를 설치 안해도 동작할까? 어찌보면 당연한내용인데, 인텔리제이를 처음 썼을 땐 엄청 신기했던 것 같다. 인텔리제이의 경우 jdk를 설치하지 않아도 잘 동작한다. 혹시 당연히 자바를 설치해야 한다고 생각해서 따로 설치하고 환경변수까지 등록해서 사용중인 사람들도 있을 것 같은데, 사실 환경변수에 등록 안되있어도 인텔리제이는 혼자서 잘 동작한다. 프로젝트마다 독립적으로 동작하기 위해 jdk를 환경변수로 등록 안하고 사용하는게 더 좋을 것 같다. 그렇지 않으면 프로젝트마다 실행하기 전에 환경변수를 가서 버전 바꿔주거나, 리눅스쪽이라면 sdkman 같은걸로 자바 버전을 변경해주면서 써야 할 것이다. 인텔리제이에서는 File -> Project Structure에서 자바 버전을 선택할 수 있고, 또 원한다면 추가할 수 있다. 이렇게 받아진 .. 2023. 3. 28. 귀찮지만 확실한 랜섬웨어 예방 (윈도우 디펜더만 사용) 목차 서론 평소 별도의 백업 방법을 가지고 있다면 몰라도, 일반적으로 개인이 백업 방법을 마련해두긴 어려울 수 있다. 또 주기적으로 백업을 하더라도, 모든 데이터에대해 백업을 실시간을 계속 하긴 힘들다. 그렇다고 백신을 설치하자니 어떤게 좋은지도 모르겠고, 언제나 창이 방패보다 우세하므로 백신을 깔아도 불안하긴 마찬가지다. 내 경우엔 백신을 추가로 설치하는것도 싫고, 윈도우 디펜더만 쓰고 싶다. 그리고 좀 귀찮더라도 확실한 방법이 더 좋다. 정확힌 걸리는건 못막더라도, 아무튼 데이터를 살리는게 목적이다. 데이터만 무사하다면 랜섬웨어가 걸려도 그냥 한번 밀어버리고 다시 원래대로 되돌려주면 될 것이다. 확실한 방법이란, 그냥 본인이 허용한 프로그램 이외의 프로그램에 대한 파일 수정(UPDATE, CREATE.. 2023. 3. 20. 자바에서 N개짜리 배열 생성은 O(N)이 걸린다. (C++, C 도 마찬가지) 혹시 C를 써봤다면, 자바에서는 배열 생성하면 모든 값이 초기화가 되어있는게 신기한 적이 있을 것이다. 배열을 만들어서 무언가 담고 싶을 때 C계열에서는 메모리 할당만 받고 끝나서 금방 끝나지만, 자바의 경우 배열을 만들고 초기화까지 해주는 아주 친-절한 언어이다. 그럼 단순히 int형 RxC 짜리 배열(int[][] arr = new int[R][C])을 만들 때 시간 복잡도가 어떻게 될까? 당연히 O(1)일 것 같지만, 자바에선 무려 O(RC)가 필요하다. 이하 10만x1만 짜리 배열 하나 만든건데 이것만 1초가 넘게 걸린다. 그럼 이하 코드를 보자. 알고리즘을 풀 때 bfs를 여러번 돌릴 수 있다. 이 때, 사실 하나의 방문체크로 가능하지만(예를들어 하나의 큰 배열에서 빈 칸들의 구역을 나눌 때) .. 2023. 3. 13. 자바에서 문자열 합칠 때 '+' 연산을 쓰지 마세요! (StringBuilder, StringJoiner, String.join, StringBuffer) 목차 최근 String에 대한 '+' 연산을 사용해 timeout이 나고있는걸 봤습니다. 해당 코드를 디버깅해본 개발자는 timeout이라는 exception 자체를 해결하려 했겠지만, 실은 로직이 느린게 문제입니다. 일종의 XY problem 입니다. 개발자로써 대부분의 문제야 구글링해보면 해결할 수 있지만, 위의 경우 이 글의 내용에 대해 모르면 exception은 timeout으로 나오니 구글링으로 알 수 없는 내용입니다. 이하 글에서 시간복잡도 표현을 위해 big-O 표기가 나오는데, O(N)과 같은 표기를 모르거나 시간복잡도에 대해 모른다면 '알고리즘 시간복잡도에 대해' 글을 참고해주세요. 결론부터 말하자면 문자열을 합쳐서 만들 때 StringBuilder를 사용해야 합니다. StringBuil.. 2023. 3. 7. 깃허브, 인텔리제이 마크다운(md)에 다이어그램(mermaid) 넣기 인텔리제이와 깃허브 md 파일에 다이어그램을 넣고 싶었다. 예전에 대학생때 사용하던 plantuml이 코드처럼 작성하면 알아서 UML로 바꿔주던 툴이어서 이게 적용되는지 우선 확인해봤다. 대강 살펴보니 좀 적용하기 지저분한 것 같긴했지만 github과 인텔리제이에서 모두 사용 가능하긴 했다. 하지만 적용이 살짝 지저분해 보였고(md 파일만 가지고 안되는듯), 공식 홈페이지를 들어가보니 상당히 선넘는 광고가 떠있어서 (2023-02-27 기준 글을 아예 덮는 광고가 떠있다.) 수틀려서 다른걸 찾아보기로 했다. mermaid 라는게 내가 원하듯이 코드같이 작성하면 알아서 다이어그램을 만들어주고, 인텔리제이도 인텔리제이에서 만들어둔 플러그인이 있어서 깔끔하게 한방에 적용되고, 깃헙도 Native support.. 2023. 2. 27. 이전 1 2 3 4 다음