10월, 2023의 게시물 표시

키치너 워털루 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++에서 매우 중요하며, 효율적인 프로그래밍을 위해 잘 알아두어야 합니다.

C/C++ 포인터 기본 개념

이미지
  포인터는 C와 C++ 언어의 핵심 개념 중 하나입니다. 이를 이해하는 것은 두 언어를 효과적으로 사용하기 위해 필수적입니다. 포인터란? 포인터는 메모리 주소를 저장하는 변수입니다. 다시 말해, 포인터는 어떤 데이터의 위치(메모리 주소)를 가리키는 변수입니다. 기본 사용법: 선언 : c int *p; // 정수형 포인터 char *ch; // 문자형 포인터 주소 연산자 & : 변수의 메모리 주소를 가져오는 데 사용됩니다. c int x = 10 ; p = &x; // p는 x의 주소를 가리킵니다. 역참조 연산자 (*) : 포인터가 가리키는 주소의 값을 가져옵니다. c int value = *p; // value는 10이 됩니다. p가 x의 주소를 가리키기 때문입니다. 포인터의 이점: 동적 메모리 할당 : malloc() , calloc() , new 등의 함수나 연산자를 사용하여 실행 시간에 메모리를 할당할 수 있습니다. 배열과 문자열 : 포인터를 사용하여 배열의 요소에 접근하거나 문자열을 관리할 수 있습니다. 함수와 구조체로의 참조 전달 : 값 전달 대신 참조 전달을 사용하여 효율적으로 데이터를 전달하거나 변경할 수 있습니다. 데이터 구조 : 링크드 리스트, 트리, 그래프와 같은 고급 데이터 구조를 구현할 때 필수적입니다. 주의사항: 와일드 포인터 (Dangling Pointer) : 초기화되지 않은 포인터는 예측할 수 없는 메모리 주소를 가리키게 됩니다. 이러한 포인터를 역참조하면 프로그램에 오류가 발생할 수 있습니다. 메모리 누수 : 동적으로 할당된 메모리를 적절히 해제하지 않으면 메모리 누수가 발생할 수 있습니다. C에서는 free() , C++에서는 delete 를 사용하여 메모리를 해제해야 합니다. 포인터 연산 : 포인터에 정수를 더하거나 빼면 해당 타입의 크기만큼 주소가 변경됩니다. 이를 활용하여 배열의 요소에 접근할 수 있지만, 주의하지 않으면 포인터가 유효한 메모리 범위를 벗어날 수 있습니다. C++에서의...

KW IT 전산인 모임 정모 공지

이미지
키치너 워털루 지역과 관련 있는 IT 전산인 모임 2023년 10월 정모를 아래와 같이 개최하오니 관심있는 분들의 많은 참여 바랍니다. 일시 : 2023년 10월 28일 (토) 오후 2:30 장소 : 워털루 주님의 교회 2층 Hearth Room

종교가 발생한 이유

종교가 인류 역사를 통해 다양한 이유로 나타났습니다: 세상을 이해하기 위해: 현대 과학이 나오기 전에 종교는 해가 뜨는 이유나 비가 오는 이유와 같은 자연 현상에 대한 설명을 제공했습니다. 도덕적 틀: 종교는 종종 사회와 문화를 형성하는데 도움이 되는 도덕적 지침과 가치를 제공하며, 무엇이 옳고 무엇이 그르냐에 대한 감각을 제공합니다. 목적감: 종교는 개인에게 삶의 목적과 의미를 제공할 수 있습니다. 커뮤니티와 소속감: 종교는 사람들이 모여서 믿음을 공유하고 서로를 지원할 수 있는 커뮤니티를 만듭니다. 대처 메커니즘: 종교는 고통, 손실 또는 불확실성의 시기에 위안을 제공할 수 있습니다. 문화적 및 사회적 응집: 종교는 사회를 함께 붙들어 주는 접착제로 작용하여 공유된 가치와 전통을 증진할 수 있습니다. 통제와 질서: 어떤 경우에는 종교 기관이 사회 질서를 유지하고 사람들에게 통제를 가하기 위해 사용되었습니다.

GNOME 이 자주 다운 됨

GNOME Shell 이 자주 종료되는 문제는 꽤 까다로운 문제일 수 있으며 다양한 원인이 있을 수 있습니다. GNOME Shell이 종료되는 경우, 다음 단계를 따라 문제를 해결하려고 시도할 수 있습니다: 확장 (Extensions) 비활성화: GNOME Shell의 확장 중 하나가 문제를 일으킬 수 있습니다. GNOME 확장을 모두 비활성화하고, 문제가 여전히 발생하는지 확인하세요. 그런 다음 확장을 하나씩 활성화하면서 문제의 원인을 찾아볼 수 있습니다. 그래픽 드라이버 업데이트: 그래픽 드라이버가 최신 버전인지 확인하십시오. 그래픽 드라이버가 오래된 경우, GNOME Shell 문제의 원인이 될 수 있습니다. 그래픽 드라이버를 업데이트하고 문제가 해결되었는지 확인하세요. 시스템 업데이트: 우분투 및 GNOME Shell을 최신 상태로 업데이트하십시오. 미관리된 업데이트로 인해 발생하는 문제를 방지하기 위해 운영 체제와 패키지를 업데이트하는 것이 중요합니다. 로그 확인: /var/log/syslog와 /var/log/Xorg.0.log와 같은 로그 파일을 확인하여 GNOME Shell이 왜 종료되었는지 추가 정보를 얻을 수 있습니다. 이 로그 파일을 통해 원인을 찾아내려고 노력하세요. 확장 복원: 특정 확장이 문제를 일으키지 않는 경우, 사용하던 확장을 다시 활성화하세요. 몇 가지 중요한 확장을 사용하는 경우, 확장을 다시 활성화하고 한 번에 하나씩 테스트하여 문제의 확장을 식별하세요. GNOME Shell 재설치: GNOME Shell을 완전히 제거하고 다시 설치해 보는 것도 한 가지 방법입니다. 아래 명령을 사용하여 시도할 수 있습니다: 시스템 리소스 모니터링: GNOME Shell이 종료되는 동안 시스템 리소스 (CPU, 메모리 등)를 모니터링하여 이상한 동작을 찾을 수 있습니다. 다른 프로그램이 GNOME Shell을 너무 많이 사용하거나 부하를 줄 수 있습니다. 새로운 사용자 프로필 생성: 문제가 사용자 프로필에 제한된 경우, 새로운 사용자 프로필...

Keychron K8 Pro Banana Switch Sound

이미지
 

[영어회화] 무음으로 해놨을 때, 시끄러운 곳에서 통화할 때

 I can’t hear you. 네 목소리가 안 들려. Sorry, I was muted. 미안, 무음이었어. What’s that noise in the background? 그 잡음은 뭐야? They are doing some construction work outside. 밖에서 무슨 공사를 하고 있어. It’s hard to hear you. 잘 안 들린다. OK, I’ll call you later. 그래, 이따가 전화할게.