JAVA) 자바에서는 Call By Reference가 불가능 합니다.

Intro 사실 자바를 처음 배우고나서 최근까지도 함수를 호출 하여 파라미터가 전달 될 때에 primitive 타입인 경우에는 value가, 그 외에는 reference가 전달 된다 라고 알고 있었습니다. 자바에서의 Primitive 데이터 타입들 byte short int long float double boolean char String의 경우에만 String pool을 통해 immutable로 관리되기 때문에 primitive가 아님에도 call by reference가 되지 않지만 Java) String의 Immutable이 의미하는 것 그 외에는 reference가 넘어간다고 알고 있었는데요 그 개념 하에서는 LinkedNode 나 Trie 등을 다루는 메서드를 짤 때 마다 뭔가 생각한 대로 동..

Programming/Java 2022.06.06
AppleScript로 MacOS 자동 작업 스케줄 등록하기

Intro 10년 전 쯤에 컴퓨터를 쓰다가 뭔가 자동화가 필요한 시점에서는 항상 AutoHotkey 라는 스크립트를 주로 사용했었습니다. 이 덕분에 정말 말할 수 없을 만큼 다양한 작업들을 스크립트 작성 후 자동으로 했었는데요. MacOS를 사용하면서 뭔가 스케줄을 등록해두고 자동으로 시행했으면 하는 일들이 생겼는데, 맥에서는 AutoHotkey가 지원이 되지 않아 대체제를 찾아보다가 애플에서 제공하는 AppleScript가 있기에 한번 사용을 해 보았습니다. 생각보다 문법이 직관적이고 어렵지 않았으며 의도한 대로 작동 했기 때문에 사용법을 한번 남겨 보려고 합니다. 특정 시간에 카카오톡으로 메시지 전송 어떤 작업을 자동으로 진행 해 볼까 하다가 카톡 메시지 전송을 한번 테스트 해 보았습니다. scrip..

IT ⁄ Computer/Mac 2022.06.04
Linux) 스왑(swap) 메모리 설정 변경

Intro 메모리 부족 Windows 에서는 WSL 위에 도커 컨테이너 몇개 띄우고, 인텔리제이에 브라우저 탭 몇개만 켜면 메모리가 바닥나버리는 바람에 Linux 사용을 시작한지도 어느덧 1년이 다 되어갑니다. 처음 우분투로 옮겼을때는 평소 윈도우에서는 메모리를 다 잡아먹었을 만큼 어플리케이션을 띄워도 거의 절반의 메모리 만을 사용하기 때문에 굉장히 쾌적했는데 그 사이 도커 컨테이너도 몇개 늘고 프로젝트에서 사용하는 어플리케이션도 몇개 늘어났습니다. 메모리 부하가 조금만 심해졌다 하면 컴퓨터가 그대로 멈춰버리는 바람에 그때마다 Ctrl + Alt + F6 으로 터미널 모드에 들어가 돼지 프로세서들 몇개를 kill 해낸 후 Alt + F1 로 돌아오는 방식으로 해결을 하고는 있지만 여간 번거로운 일이 아닙..

IT ⁄ Computer/Linux 2022.05.31
Git) 서브모듈 추가 및 제거

Intro A 라는 프로젝트 아래에 B 라는 서브 모듈이 필요 하게 되었습니다. 이미 B 프로젝트는 C 프로젝트를 서브 모듈로 가지고 있는 상황이었는데, A 프로젝트에 B 프로젝트를 서브 모듈로 추가하고, 다시 삭제하는 과정을 진행 해 보도록 하겠습니다. 서브모듈 추가 git submodule add 저장소주소 서브모듈경로 로 추가 할 수 있습니다. 아래의 명령어는 메인 git 저장소의 /build 폴더에 url-to-pdf 라는 프로젝트를 url-to-pdf 라는 이름으로 서브모듈로 추가하는 예시 입니다. git submodule add git@github.com:Shane-Park/url-to-pdf.git build/url-to-pdf 이후 확인해보면 .gitmodules에 [submodule "b..

Development/Git 2022.05.31
Nojde.js Web app을 도커 이미지로 만들고 Docker Hub에 올리기

Intro Node.js로 작성한 웹 어플리케이션을 간단하게 도커 이미지로 만든 후에 해당 이미지를 도커 허브에 push 해서 어디서나 받아서 사용하는 방법을 알아 보도록 하겠습니다. 1. Node.js 웹 어플리케이션을 도커 이미지로 Node.js App 생성 일단 준비된 Node.js 웹 어플리케이션이 없다면 테스트를 위해 생성 해 줍니다. 준비된 어플리케이션이 따로 있다면 이 과정은 생략 하실 수 있습니다. Node.js 앱을 생성 할 빈 폴더를 생성 한 뒤 해당 폴더에 package.json 파일을 생성 해 줍니다. { "name": "docker_web_app", "version": "1.0.0", "description": "Node.js on Docker", "author": "First L..

Development/DevOps 2022.05.30