이쿠의 슬기로운 개발생활

함께 성장하기 위한 보안 개발자 EverNote 내용 공유

반응형

전체 글 389

[프로그래머스][JAVA] 키패드 누루기

https://school.programmers.co.kr/learn/courses/30/lessons/67256 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 질문 친구가 해당 문제를 JAVA로 풀이하는 과정 중에 풀긴했는데, == 랑 equals랑 했을 때 값이 다르게 나오는데 왜 다르게 나오는지에 대해 질문함. 친구가 문제를 풀이 할 때 String 문자열 비교 시 "=="을 사용하면 반은 맞고 반은 틀리는데 "equals" function을 사용하면 모두 맞는다고 함. 그래서 일단 String 비교는 equals로 비교해야한다 라고만 외워놓았다고 ..

코딩테스트 2022.10.03

"\n" 과 "endl" 의 차이점

"\n" 과 "endl" 의 차이점 \n과 endl 모두 출력할 때 개행(줄 띄움)을 위해 사용한다. 둘의 차이는 endl은 출력 버퍼를 비워주는 과정(flush)이 들어가 있어서 \n보다 느리다. 버퍼는 입출력을 프로그램에 바로 전달하지 않고 임시 메모리 공간에 저장한 후 한번에 전송하는 역할을 한다. 버퍼를 즉시 비우고 싶다면 endl을 그렇지 않다면 \n을 사용한다. 하지만 구현체(ex printf, println, cout 등등의 출력 함수)에 따라서 "\n"도 버퍼를 비우도록 처리하는 경우도 있다고 한다.

코딩/C and C++ 2022.10.03

malloc calloc realloc의 차이점

malloc calloc realloc의 차이점 malloc 리턴 타입이 void* 즉 보이드 포인터다. 동적할당의 경우 어떤값을 리턴할지 명시해놓을 수 없기 때문에 void 로 리턴함. 할당된 메모리를 초기화하지 않기 때문에 쓰레기값이 그대로 들어가있다. calloc 리턴 타입이 void* 즉 보이드 포인터다. malloc 과는 다르게 할당된 메모리를 0으로 초기화 한다. realloc malloc 이나 calloc 을 통해 할당된 메모리의 공간을 더 늘리거나 줄이기 위해 사용된다. 무조건 필요한 만큼 메모리 공간이 있다는 가정하에 해야한다. 만약에 기존의 공간이 충분하지 않은경우를 예로 설명을 하자면 malloc 으로 10의 공간을 할당한 후에 realloc 으로 5만큼의 공간을 늘리려는데 mallo..

코딩/C and C++ 2022.10.03

리틀 엔디안(Little-endian), 빅 엔디안(Big-endian)

Little-endian (리틀 엔디안) 상위 바이트 값을 큰 번지수에 저장 0x123456 을 리틀 엔디안에 저장 시 : 0x78 0x56 0x 0x34 0x12 와 같은 형태로 저장 메모리에 저장된 값의 하위 바이트들만 사용할 때 별도의 계산이 필요없음. 우리가 주로 사용하는 Intel 계열은 리틀엔디안 방식으로 데이터를 저장함 Big-endian (빅 엔디안) 상위 바이트 값을 작은 번지수에 저장 0x123456 을 리틀 엔디안에 저장 시 : 0x12. 0x34, 0x 56, 0x78 형태로 저장 디버깅이 간편함 네트워크상에서 데이터를 전송할때는 데이터 배열을 빅 엔디안으로 변경해서 송수신 해야함 수신하는 입장에서도 네트워크에서 전달되는 데이터가 빅 엔디안임을 인지하고있어야함

Network 2022.10.03

tar 압축 시 padding with zeros 메세지 해결법

tar 압축 시 padding with zeros 메세지 해결법 tar 압축 시 다음과 같이 padding with zeros 메세지가 나오는데 원인과 해결책에 대해 알아보도록 함. 원인 해당 메세지는 오류가 아니라 warnning임. 1. 응용 프로그램이 실행 중이고 백업 중에 파일이 변경되었습니다. 2. 파일이 압축되었습니다 3. 파일이 암호화되었습니다 4. 다른 파일이 이 파일을 대체했으며 동일한 이름을 사용하고 있습니다. 5. 파일 시스템에 손상/불량 블록이 있을 수 있습니다. 해결법 1. 백업 기간 동안 애플리케이션을 중지합니다. 2. 백업 창을 응용 프로그램이 중지된 시간으로 변경합니다. 3. 데이터베이스 유형 파일/폴더는 파일 시스템 백업에서 제외해야 합니다. 그런 다음 데이터베이스 정책 유..

OS/Linux 2022.10.03

현재 사용 중인 shell 확인

가장 정확한 확인 방법은 아래와 같음 [명령어] echo $0 해당 shell의 위치를 확인하는 방법 [명령어] which sh 이러한 환경에서 shell script를 사용 시 sh /test.sh 와 같이 사용해야 정상 동작함 아니면 shell script 파일에서 script를 다음과 같이 지정해야 ./test.sh로 실행 가능 [결과] #!/test/sh 로 입력하면 ./test.sh로 실행가능 만약 shell script 적성 시 일반적인 경로인 #!/bin/bash 로 잡혀있다면 안됨 환경 변수를 통해 확인하는 방법 하지만 실제 사용하는 shell과는 다를 수 있음. 위의 방법으로 확인하는게 더 정확함. [명령어] echo $SHELL 해당 환경은 chroot와 busybox를 통해 sh sh..

OS/Linux 2022.10.03

105. kubectl cp 명령 특징

kubectl cp 명령 특징 목표 kubectl cp 명령의 특징에 대해 알아봄 kubectl cp 특징 (tar) kubectl cp 명령은 kubernetes cluster에 배포되어있는 pod간에 file, directory 복사를 해주는 명령어. pod -> host host > pod 전송이 가능함. https://github.com/kubernetes/kubectl/blob/master/pkg/cmd/cp/cp.go kubectl 코드의 cp 부분을 확인해 보면 cp 명령은 tar를 통해 진행된다는 것을 알 수 있음. # !!!Important Note!!! Requires that the 'tar' binary is present in your container # image. If 'ta..

104. 실행 중인 container에 mount하는 방법

실행 중인 container에 mount하는 방법 목표 kubernetes cluster에서 container mount 는 pod 생성 시에 volume 설정을 통해 mount하는 방법이 있음. 하지만 이미 running 상태로 동작 중인 pod의 container에 mount해야하는 경우도 있음. 이에 따라 실행 중인 container에 mount하는 방법을 알아봄. test 환경 kubernetes cluster 중 control node에서 test를 진행함 kubernetes cluster에서 container runtime으로 containerd를 사용하고 있음. cluster 정보는 다음과 같음 [Containerd : 1.4.12] kubernetes cluster에 배포되어있는 conta..

18. Docker image layer 정보 확인

docker image layer 정보 확인 목표 docker 명령을 통해 pull 받은 image layer는 어디에 저장되고 실행되고 있는 container의 directory는 host에서 어떻게 관리하는지 알아봄. Test 환경 [Docker : 20.10.12] Docker image layer 정보 확인 결론부터 말하자면 docker로 pull 받은 image layer 정보는 /var/lib/docker/overlay2/ 에 저장됨 image 하나를 예로 설명. docker image 목록 중 python:3.8 image를 구성하는 layer 정보로 설명 [image 확인] [해당 python image layer 정보 확인] 명령어 docker inspect python:3.8 [결과] ..

클라우드/Docker 2022.07.05

103. gVisor와 runtimeclass

gVisor 목표 kubernetes gVisor는 무엇이며, 어떤 경우에 사용해야하고 어떻게 사용해야하는지 알아봄 Container 취약점 container runtime tool을 통해 생성된 일반적인 Container는 아래와 같이 Host의 kernel을 공유하고 있음. 실제로 확인해보면 다음과 같이 container에서 실행한 system call 명령이 container에서 실행한 결과와 host의 결과가 동일한 것을 확인할 수 있음. 이러한 container의 특징은 보안적으로 문제가 될 수 있음. 다음과 같이 특정 container를 통해서 공격자가 kernel에 접근해서 다른 container를 공격할수도 있고 host kernel자체를 공격할 수 있음. 예를 들면 Dirty Cow 취약..

반응형