프로그래밍/General 64

[SSH] UNPROTECTED PRIVATE KEY FILE 해결방법

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0755 for 'navercloud_lou.pem' are too open. It is required that your private key files are NOT accessible by others. This private key will be ignored. private key 파일의 퍼미션이 과도하게 설정되어 있어서 다른 유저가 건드릴 수 없도록 적절한 권한으로 낮추어주어야한다. 내..

내 소스 코드가 실행되기까지의 과정

# 컴파일 언어 컴파일(Compile)은 어떤 언어를 다른 언어로 바꾸어주는 과정이다. int a = 30과 같이 우리가 적는 코드는 사람이 이해하기 쉬운 고급언어(High-level language)라서 컴퓨터는 이를 이해하지 못한다. 컴퓨터는 고급언어로 작성된 코드를 컴파일러 또는 인터프리터를 통해서 저급언어(Low-level language)로 번역한 후에야 코드를 실행할 수 있다. 저급언어에는 기계어 (Machine language)와 어셈블리어 (Assembly language)가 있다. - 기계어 CPU가 명령을 처리할때 사용하는 언어, 2진수로 이루어져있다. 1000 1011 0100 0101 1111 1000 1000 0011 1100 0100 0000 1100 - 어셈블리어 기계어의 숫자..

파일 시스템 - FAT32 / NTFS / ZFS / HDFS

파일 시스템(Filesystem)은 파일들이 저장공간에 어떻게 이름 지어지고, 저장되고 가져와지는지에 대한 규약이다. 물리적인 공간에 저장된 데이터를 논리적으로 매핑하여 읽고, 데이터를 검색하고 저장하는 등 관리할 수 있게 한다. 대표적인 운영체제에서 사용하고 있는 파일 시스템의 종류는 다음과 같다. Windows FAT*, NTFS Linux Ext* Mac OS HFS, APFS Solaris ZFS 맥에서 diskutil info / 를 치면 현재 볼륨에 대한 파일 시스템 정보를 볼 수 있는데, APFS를 사용중임을 알 수 있다. 파일 메타데이터 파일 시스템을 추상화해보면 메타 영역과 데이터 영역으로 나누어 볼 수 있다. 메타 영역은 파일 관리를 위한 파일의 이름, 크기, 생성일, 위치 등의 정보가..

[운영체제] 프로그램, 프로세스, 스레드 파헤치기

프로그램 디스크에 저장되어있는 실행 코드. 프로세스 프로그램이 실행되어 메모리에 적재된 상태로, 실행중인 프로그램을 프로세스라고 한다. 프로그램과는 다르게 생명주기를 가진다. Windows에서는 tasklist 명령어를 이용하면 실행중인 프로세스의 PID, 이름, 세션 메모리 사용량을 볼 수 있다. 리눅스에서는 ps 명령어를 이용하면 된다. 프로세스는 독립된 메모리 영역을 할당 받는다. 고정된 크기의 CODE, DATA, BSS 영역과, 동적인 크기의 HEAP, STACK으로 구성되어있다. 프로세스는 독립된 메모리 영역을 할당받았기 때문에 프로세스 간의 변수나 데이터 공유는 불가능하다. 프로세스간 통신, IPC(Inter-process communication)을 위해서는 별도의 매커니즘이 필요하게 된다..

Redis의 개념과 활용법

Redis란? Redis는 인 메모리 키 값 데이터 구조 스토어다. 일반 Database는 데이터를 디스크에 저장하지만, 레디스는 데이터를 서버의 주 메모리에 저장한다. 그렇기 때문에 전통적 Database보다 데이터 접근 시간이 약 1ms 정도로 월등히 빠르며, 다양한 형식의 데이터를 저장할 수 있다. 대표적으로는 List, Set, Hash, Bitmap 등이 있다. 메모리에 저장하다보니 데이터가 휘발하지 않을까?라는 생각이 들 수도 있지만, 예기치 못한 셧다운 등 필요한 경우 Snapshot을 떠서 저장할 수 있다. Redis의 활용법 캐시(Caching) 캐시는 데이터의 접근시간을 줄이기 위해 가져온 데이터를 복사해두는 임시 공간이다. Redis는 앞서 설명했듯 메모리에 데이터가 저장되어있어 캐시..

맥에서 ANSI 인코딩 txt 파일 읽는 간단한 해결법

Windows에서 ANSI 인코딩으로 저장된 메모장 txt 파일을 맥에서 읽어들이려하면 다음과 같은 문구가 뜨면서 열리지 않을 것이다. 문서 ~을(를) 열 수 없습니다. 유니코드 (UTF-8) 텍스트 인코딩이 적용되지 않습니다. 파일이 다른 텍스트 인코딩을 사용하여 저장되었거나, 텍스트 파일이 아닐 수 있습니다. 해결방법은...간단하다. 크롬 브라우저를 열어서 해당 txt 파일을 끌어다 놓으면 파일이 열린다. ㅋㅋㅋ 그대로 글자를 긁어서 저장하면 완성! Converter같은걸 찾고 있었는데...너무 어렵게 생각한듯 하다.

Windows10에서 VMWare 실행 오류 해결법

VMware Player and Device/Credential Guard are not compatible. VMware Player can be run after disabling Device/Credential Guard. Please visit http://www.vmware.com/go/turnoff_CG_DG for more details. VMware 설치 후 이제 시작해볼려니깐 이렇게 오류가 뜨는데, 이 오류는 Hyper-V가 Workstation player와 호환되지 않아서라고하는데, Hyper-V와 DeviceGuard를 꺼주면 해결된다. Hyper-V를 끄는 방법 1. 제어판에서 Windows 기능 켜기/끄기를 실행시킨다. 2. Hyper-V를 찾아 체크 해제한다. 제대로 되지 않으..

나중에 읽을 좋은 글 모음

시스템 디자인 https://medium.com/hackernoon/fundamentals-of-system-design-part-1-c87b1d2bfd31 https://gist.github.com/vasanthk/485d1c25737e8e72759f Jetpack Compose 기초 https://medium.com/captech-corner/jetpack-compose-concepts-every-developer-should-know-5bcb47914542 https://developer.android.com/courses/pathways/compose 시스템 디자인 인터뷰 https://www.educative.io/courses/grokking-the-system-design-interview

[JD-GUI] 실행시 오류 해결방법 No suitable Java version found on your system!

No suitable Java version found on your system! This program requires Java 1.8+ Make sure you install the required Java version. BigSur에서 JD-GUI를 실행시켰더니 이런 오류가 뜨며 안될 경우 JD-GUI 아이콘 우클릭 > 패키지 내용 보기 > Contents/MacOS/universalJavaApplicationStub.sh에 다음 라인을 추가한 후 저장한다. 위치는 주석 끝나고 맨 처음으로! export JAVA_HOME=$(/usr/libexec/java_home -v11) 이제 JD-GUI를 켜면 제대로 작동된다.

[Git] 빠르게 알아보는 Rebase VS Merge의 차이

Merge $ git pull // C1 $ git switch feature-2 // C6 $ git merge master // C7 Rebase $ git switch master // C1 $ git pull // C4 $ git switch feature-2 // C6 (09qr2) $ git rebase master feature-2 // C6 (a2b51) Rebase를 사용하는 이유 히스토리를 깔끔하게 유지하기 위해서 Rebase시 주의할점 Rebase는 히스토리를 지운다. 이로인해 Conflict가 날수도 있고, 데이터의 유실이 일어날 수 있다. 다른사람이 그 Branch에서 작업중일 수도 있기 때문에 공개된 (다른사람들이 접근할 수도있는) Branch에서 Rebase하면 안된다.