공부/이모저모 22

C언어 가변인자함수 구현 (...)

C 언어에서 ... 키워드는 가변 인자 목록(variadic arguments)을 의미합니다. 이 키워드는 함수가 고정된 수의 인자 대신 다양한 수의 인자를 받을 수 있게 해 줍니다. 이는 특히 여러 다른 타입의 인자를 다루거나, 호출 시점에 정확한 인자의 수가 결정되지 않는 경우에 유용합니다. 가변 인자 함수의 구현 방법 가변 인자 함수를 구현할 때는 다음과 같은 표준 라이브러리 매크로를 사용합니다: va_list: 인자 목록을 처리하기 위한 변수 타입입니다. va_start: 가변 인자 목록의 초기화를 시작합니다. 첫 번째 매크로 인자는 va_list 타입이고, 두 번째는 가변 인자 바로 앞의 고정된 인자입니다. va_arg: 가변 인자 목록에서 다음 인자를 가져옵니다. 이 매크로는 리스트와 반환할 ..

공부/이모저모 2024.04.12

git submodule 기능 (git submodule init / git submodule update)

git submodule init과 git submodule update 명령어는 Git의 서브모듈과 관련된 명령어입니다. 서브모듈은 다른 저장소를 현재 저장소의 하위 디렉토리로 포함시키고 싶을 때 사용합니다. 이를 통해 외부 라이브러리나 공통으로 사용되는 구성 요소들을 관리할 수 있습니다. git submodule init 이 명령어는 서브모듈을 초기화합니다. 즉, .gitmodules 파일에 기록된 서브모듈의 정보를 로컬 .git/config 파일로 복사합니다. 이 과정에서 서브모듈의 URL과 브랜치 정보가 설정되지만, 실제로 서브모듈의 콘텐츠를 다운로드하진 않습니다. 서브모듈을 처음으로 추가할 때나, .gitmodules 파일이 변경되었을 때 필요합니다. git submodule update 이 명..

공부/이모저모 2024.03.25

Ubuntu에서 sys/syscall.h: No such file or directory 해결

위와 같이 -m32 옵션을 주어 32비트로 바이너리를 컴파일하려고할때 다음과 같이 오류가 발생하는 경우가 있다. fatal error: sys/syscall.h: No such file or directory 1 | #include | ^~~~~~~~~~~~~~~ compilation terminated. make: *** [Makefile:13: shellcode.o] Error 1 sys/syscall.h는 리눅스의 표준 C라이브러리의 일부이기 때문에 윈도우에서 실행했을때는 해당 라이브러리를 못찾을 수 있지만, 우분투에서 찾지못하는건 상당히 당황스럽다. 우분투에서 우분투의 표준 C 라이브러리가 설치되지않은 상황이기때문에, 이를 적절히 설치해주면된다. 64비트의 경우 : 64비트 시스템에서 32비트 어..

공부/이모저모 2024.03.13

위성 서비스를 사용하는 user segment에서 space segment로 데이터를 전송하는 경로

본래 user segment는 위성에서 제공하는 서비스를 수신하는 역할을 주로한다. 예를들어 TV 방송, 인터넷 서비스, GPS 신호 등이 포함된다. 하지만 특별한 경우 user segment에서 위성으로 데이터 요청을 보내는 상황이 있을 수 있다. 예를들어 위성 기반의 지구 관측 서비스에서 사용자가 특정 지역의 이미지 캡처를 요청할 수 있다. 이 경우, 사용자의 요청은 위성에게 특정 작업을 수행하도록 지시하는 트래픽을 생성하며, 이 트래픽은 PDHS에 의해 처리된다. 이때 논문 그림에 나타는 PD Fetcher로 직접 데이터를 전송하는 것이 아니다. 사용자 단말기(user segment)에서 발생한 트래픽을 기지국으로 전달하여 기지국에서 TC 형태로 전달한다. 이 TC는 PLCOM Rx → PLCOM ..

공부/이모저모 2024.03.11

Ubuntu에 ida free 설치하는 방법 (설치후 qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found 문제해결)

아래 주소에서 IDA Free for Linux 설치 idafree84_linux.run 다운 받은 뒤에 chmod +x idafree84_linux.run ./idafree84_linux.run xcb 오류해결 sudo apt-get update sudo apt-get install -y qt5-default libxcb-xinerama0-dev qt5-default가 설치가 안되면 아래로 해결 sudo apt-get install qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools https://csm-kr.tistory.com/114 qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in error 해결하기..

공부/이모저모 2024.03.11

인공위성 펌웨어 해킹을 위한 인공위성관련 용어정리

Satellite Operations Components 관련 용어 ground segment satellite operation의 센터. operators 팀이 GroundStation(GS, 기지국)을 이용해 위성에게 instruction(TC)을 보냄 TC(Telecommand) : GS → 위성 보내는 instruction TM(Telemetry) : 위성 → GS로 보내는 응답 information (about the satellite’s status, errors, and other metrics) TC는 space protocol(우주 프로토콜)을 사용하며 TC와 TM 데이터의 조합을 TC/TM traffic이라함 space segment satellite operation에 필요한 모든 s..

공부/이모저모 2024.03.11

C++ 클래스 안의 멤버함수 const 키워드

함수 뒤의 const C++ 을 이용해 개발하다 보면 클래스의 멤버함수안에 아래와 같은 문구를 마주할 수도있다. unsigned int get_data(int) const; unsigned int -> return type (int) -> 매개변수 인 것은 알겠는데, 함수 뒤에 붙는 const가 뭘까? chat gpt에 물어보니, 아래와 같이 대답했다. const 키워드는 이 함수가 해당 객체의 멤버 함수임을 나타냅니다. 이것은 멤버 함수가 객체의 상태를 변경하지 않음을 보장합니다. 이해가 잘 안된다. 왜냐하면 const의 의미는 주로 변수에 사용될때 const int num = 10; 와 같이 쓰여 num이라는 변수(본인) 자체를 바꿀 수 없다는 키워드로 사용되는데, (그러니까 나는 안바뀔꺼니까 (상수..

공부/이모저모 2024.02.13

v3demo.mediasoup.org Could not join the room: NotAllowedError: Permission denied 해결

mediasoup demo를 위해 v3demo.mediasoup.org 에 접속하려고 시도할때 Could not join the room: NotAllowedError: Permission denied가 뜨며 접속이 안되는 경우가 있다. 특히 webView를 사용하여 접속하면 더욱이나 안되는 경우가 있는데, 이는 "카메라"와 "마이크" 권한이 없기 때문에 그렇다. 그냥 일반 브라우저(chrome.. safari..)로 접속하면 알림이 잘 떠서 권한을 가져오고, 문제없이 실행할 수 있는데 webview와 같이 app내에서 별도로 해당 링크에 접속하게 되면 권한없이 접속하여 그냥 별도의 알림없이 팅겨버리고 만다. 그때 아래와 같이 고쳐주면된다. WebViewClient를 가져올때 WebChromClient를..

공부/이모저모 2024.02.07

JavaScript에서의 null 처리(null과 undefined의 차이 / Object가 비어있는지 확인하는 방법)

JavaScript에서 null과 undefined는 모두 값이 없음을 나타내지만, 그 의미와 사용되는 경우에 약간의 차이가 있습니다. 1. undefined JavaScript에서 undefined는 변수에 값이 할당되지 않은 상태를 나타냅니다. 즉, 변수가 선언되었지만 아직 값이 초기화되지 않은 경우를 가리킵니다. let x; console.log(x); // undefined​ 함수의 매개변수가 전달되지 않은 경우에도 해당 변수는 undefined입니다. function foo(y) { console.log(y); // undefined } foo();​​ 2. null 반면에 null은 개발자가 명시적으로 값이 없음을 나타내기 위해 사용됩니다. 즉, 변수에 값이 없음을 나타내는 데 사용됩니다.보통..

공부/이모저모 2024.01.30

javascript == 와 === 의 차이

JavaScript에서 ==와 ===는 비교 연산자로, 두 값의 동등성을 확인합니다. 하지만 이 둘은 약간의 차이가 있습니다. == (동등 연산자): ==는 두 값이 동등한지 비교합니다. 하지만 엄격한 타입 검사(strict type checking)를 수행하지 않습니다. 이 연산자를 사용할 때 JavaScript는 비교하는 값의 타입을 변환하여 동일한 타입으로 만든 후 비교합니다. 예를 들어, 문자열 "1"과 숫자 1은 다른 타입이지만 ==로 비교하면 JavaScript는 문자열 "1"을 숫자 1로 변환하여 동등성을 확인합니다. === (일치 연산자): ===는 두 값이 정확하게 일치하는지를 비교합니다. 두 값의 타입과 값이 모두 같아야 합니다. 타입 변환 없이 엄격한 비교를 수행하기 때문에 타입이 다..

공부/이모저모 2024.01.30
728x90