키치너 워털루 IT 전산인 모임 8주년

이미지
DALL-E3 가 그려준 KW IT 전산인 모임 8주년 이미지

C++ 의 vector

이미지
  std::vector 는 C++ 표준 템플릿 라이브러리(STL)의 일부로서, 동적 배열과 유사한 구조를 가진 컨테이너입니다. std::vector 의 주요 특징: 동적 크기 : 백터는 크기가 동적으로 변경될 수 있습니다. 즉, 런타임에 항목을 추가하거나 제거할 수 있습니다. 연속 메모리 : 백터는 내부적으로 연속된 메모리 공간에 데이터를 저장합니다. 따라서 배열처럼 인덱스를 사용하여 빠르게 접근할 수 있습니다. 자동 메모리 관리 : 백터는 내부적으로 메모리를 자동으로 할당하고 해제합니다. std::vector 의 사용 예: #include <iostream> #include <vector> int main() { std::vector<int> numbers; // 값을 추가합니다. numbers.push_back(1); numbers.push_back(2); numbers.push_back(3); // 인덱스를 사용하여 값에 접근합니다. std::cout << numbers[1] << std::endl; // 출력: 2 // 크기와 용량을 조회합니다. std::cout << "Size: " << numbers.size() << std::endl; // 출력: 3 std::cout << "Capacity: " << numbers.capacity() << std::endl; // 반복자를 사용하여 백터의 요소를 반복합니다. for(int num : numbers) { std::cout << num << " "; } // 출력: 1 2 3 return 0; } 이 외에도  std::vector 는 여러 메서드와 기능을 제공합니다. 예를 들면  i...

Cimetech Bluetooth Numeric Keypad, 22-Keys Wireless Number Pad K304 Manual

이미지
Cimetech Bluetooth Numeric Keypad, 22-Keys Wireless Number Pad K304 Manual PDF https://drive.google.com/file/d/1bTF3H9KNUHBFiseui2qHGQ92Vx_uVYGG/view?usp=drive_link Amazon Link https://www.amazon.ca/cimetech-Multi-Function-Accounting-Extensions-Compatible/dp/B0BG8BPN9C?ref_=ast_sto_dp&th=1

애플 실리콘을 능가하는 퀄컴의 새 프로세서

이미지
  Qualcomm은 새로운 Snapdragon Elite X 칩을 발표하여 노트북 시장에서 Intel, AMD 및 Apple과의 경쟁력을 강화하려 한다. 이 칩은 2024년부터 노트북에서 사용 가능하며 인공 지능 작업을 더 잘 처리할 수 있도록 재설계되었다. Qualcomm은 X Elite가 일부 작업에서 Apple의 M2 Max 칩보다 빠르며 Apple 및 Intel PC 칩보다 에너지 효율이 뛰어나다고 주장했다. 이 새로운 칩은 4nm 프로세스 기술을 기반으로 하며, 3.8GHz의 12개의 고성능 코어와 최대 4.3GHz까지의 듀얼 코어 부스트를 제공한다. 또한 Qualcomm은 CPU 메모리 성능을 향상시켰다고 밝혔다. Qualcomm의 이러한 발표는 PC 칩 경쟁에서 Qualcomm, Apple, Intel 간의 레이스를 가열시키고 있으며, Qualcomm은 Snapdragon X Elite를 "PC용으로 만든 가장 강력한 컴퓨팅 프로세서"로 부르며, 최고 수준의 CPU 성능, 선도적인 기기 내 AI 추론 및 매우 효율적인 전문 처리 기능을 제공한다고 주장했다. 이러한 발표와 새로운 칩 기술은 Qualcomm이 노트북 시장에서 Intel, AMD 및 Apple과의 경쟁에서 어떻게 위치할지에 대한 통찰력을 제공하며, 노트북 사용자에게 더 나은 성능과 효율성을 제공할 가능성을 보여준다. 특히 소프트웨어 개발자 입장에서 애플 실리콘 칩을 내장한 맥이 최신 인텔 칩을 내장한 윈도 PC 보다 컴파일이나 트랜스파일링 속도가 빠르지도 않았으며 가격이 비싸 가성비가 떨어지는 선택이었다. 장점은 어떠한 작업을 해도 하루 종일 버티는 베터리, 빠른 비디오 처리와 압축정도 였는데 이것은 개발자 입장에선 꼭 필요한 장점은 아니다.

하기 싫은 일, 미루는 일을 하는 간단한 방법

이미지
  미루는 사람들의 특징 주의력이 부족하다. 학업 과제를 수행하는데 드는 시간에 대해 과소평가한다. 과제에 대한 불쾌감을 과대평가한다. 자신의 학습 행동의 효율성에 대해 비현실적으로 낙관적이다. 시간관리를 잘하지 못한다. 충동을 억제하기 힘들다. 해결책 저 일을 완료하지 못하면 하고 싶은 것을 못한다는 규칙을 만든다. 예를 들면 이런거지. 저 일을 마치지 못하면 식사, 게임이나 섹스등은 못한다. 는 규칙을 만들고 주위 사람들이나 지인들에게 오픈하고 꼭 지키는 것이다. 그리고 일을 마치면 완료한 것에 대한 포상으로 못하던 것을 한번 하는 것이다. 쉽지 않은가? 꼭 해보시라. (반박하시면 당신이 옳습니다)

1분마다 죽었는지 확인하고 죽었으면 다시 시작시키는 cron job 설정하는 법

이미지
1분마다 특정 서비스의 상태를 확인하고, 해당 서비스가 중지되었을 경우 다시 시작시키는 작업을 cron 을 사용하여 자동화하려면 다음과 같은 절차를 따르면 됩니다: 스크립트 작성 먼저, 서비스 상태를 확인하고 필요한 경우 시작시키는 스크립트를 작성합니다. 아래 예시는 gnome-remote-desktop.service 를 대상으로 합니다. #!/bin/bash status=$(systemctl is-active gnome-remote-desktop.service) if [ "$status" != "active" ]; then sudo systemctl start gnome-remote-desktop.service fi 스크립트 실행 권한 부여 스크립트에 실행 권한을 부여합니다: chmod +x /path/to/check_service.sh sudoers 파일 수정 sudo 명령어를 비밀번호 없이 실행할 수 있도록 설정해야 합니다. 이를 위해 sudoers 파일을 수정합니다: sudo visudo 아래의 내용을 파일의 마지막에 추가합니다 (여기서 username 은 실제 사용자 이름으로 바꿔주세요): username ALL=(ALL) NOPASSWD: /bin/systemctl start gnome-remote-desktop.service cron job 설정 crontab 을 사용하여 새로운 cron job을 추가합니다: crontab -e 다음 내용을 에디터의 마지막에 추가합니다: * * * * * /path/to/check_service.sh 이제 check_service.sh 스크립트는 1분마다 실행됩니다. 주의: cron 을 사용할 때는 경로와 환경 변수가 제한적이므로 절대 경로를 사용하는 것이 좋습니다. 필...

C++ 의 참조 개념

이미지
C++에서의 참조는 변수나 객체의 별칭을 제공하는 방법입니다. 참조를 사용하면 변수나 객체에 대한 간접적인 접근을 할 수 있습니다. 여기서 주요 포인트와 예제를 통해 C++의 참조 개념을 설명하겠습니다. 참조의 선언 : 참조는 & 기호를 사용하여 선언됩니다. 예를 들어, int 타입의 변수에 대한 참조는 다음과 같이 선언할 수 있습니다. int num = 10; int &ref = num; 참조의 특징 : 참조는 선언과 동시에 초기화되어야 합니다. 한번 초기화된 참조는 다른 변수나 객체를 참조하도록 변경할 수 없습니다. 참조는 NULL 값을 가질 수 없습니다. 참조와 포인터의 차이 : 포인터는 메모리 주소를 저장하는 반면, 참조는 별칭으로 작동하며 메모리 주소를 직접 저장하지 않습니다. 포인터는 * 와 & 연산자를 사용하여 역참조하고 주소를 얻는 반면, 참조는 추가적인 연산자 없이도 원래의 변수나 객체에 접근할 수 있습니다. 참조의 활용 : 함수의 인자로 사용될 때, 값을 복사하는 것이 아닌 원래의 변수나 객체에 대한 접근을 제공하므로 효율적입니다. 함수에서 여러 값을 반환할 필요가 있을 때 사용됩니다. 예제 : void swap(int &x, int &y) { int temp = x; x = y; y = temp; } int main() { int a = 5, b = 10; swap(a, b); cout << "a: " << a << ", b: " << b; // a: 10, b: 5 return 0; } 위의 예제에서 swap 함수는 참조를 인자로 받아 원래의 변수의 값을 직접 변경합니다. 이러한 참조의 개념은 C++에서 매우 중요하며, 효율적인 프로그래밍을 위해 잘 알아두어야 합니다.