안경잡이개발자

728x90
반응형

  파워포인트(PowerPoint)는 기본적으로 발표 녹화(음성 녹음) 기능을 제공합니다. 그래서 사실 별도의 녹화 프로그램이 없어도 발표를 녹화할 수 있습니다. 방법은 매우 간단합니다.

 

  ※ PPT 발표 녹화 방법 ※

 

  일단 녹화 방법은 [슬라이드 쇼] - [슬라이드 쇼 녹화] - [처음부터 녹음 시작]에 들어가셔서 녹음을 진행할 수 있습니다. 참고로 동영상 저장 될 때 녹음을 하지 않은 슬라이드에 대해서도 저장이 되기 때문에, 녹화하시기 전에 PPT 파일 복사하셔서 먼저 자기 부분 아닌 다른 슬라이드는 지워주는 게 간단한 방법입니다.

 

 

  녹화를 진행할 때는 어디까지 녹화를 진행할 지 설정할 수 있습니다. 다음과 같이 두 개 모두 체크해서 녹화를 진행하는 것이 일반적입니다.

 

 

  녹화가 진행될 때는 왼쪽 상단에 녹화가 어떻게 이루어지고 있는지를 확인할 수 있습니다.

 

 

  녹화가 끝나고 나면 녹화가 된 부분에 대해서는 오른쪽 아래에 [스피커] 표시가 되는 것을 확인할 수 있습니다. 정상적으로 녹음이 이루어졌다는 의미로 보시면 되겠습니다.

 

 

※ PPT 발표 영상 저장하기 ※

 

  녹음 끝나고 난 뒤에는 [파일] - [내보내기] - [비디오 만들기] 탭에서 [비디오 만들기]를 눌러서 동영상을 내보내기 할 수 있습니다.

 

  이 때 발표 PPT 해상도에 맞게 저장될 영상의 해상도를 설정할 수 있으며 [기록된 시간 및 설명 사용]으로 설정을 해주세요. 그러면 자기가 녹화를 진행한 부분에 대해서는 그 내용으로 기록됩니다. 만약 녹음을 진행하지 않은 슬라이드가 있다면, 그 슬라이드에 대해서는 그냥 소리가 빈 영상이 들어가게 됩니다.

 

728x90
반응형

728x90
반응형

  초당 비트 수(Bit Per Second, BPS)1초에 전송할 수 있는 비트의 수를 의미합니다. 예를 들어 500 BPS라면, 초당 500개의 비트를 전송할 수 있다는 의미입니다. 보 레이트(Baud Rate)1초에 전송할 수 있는 의미 있는 정보의 수를 의미합니다. 예를 들어 의미 있는 정보의 단위를 32비트라고 규정할 때, 보 레이트가 500이라면 초당 16,000개의 비트를 전송한다는 의미가 될 것입니다. 다른 예시로 정보의 단위를 1비트라고 할 때, 보 레이트는 BPS와 동일할 것입니다.

 

  기본적으로 Serial 통신을 할 때는 보 레이트(Baud Rate)를 맞추어 통신을 진행합니다. 아두이노는 UART를 이용하여 하드웨어 시리얼과 소프트웨어 시리얼을 지원합니다. 하드웨어 시리얼은 하드웨어적으로 지원하는 RX, TX 핀을 이용하는 방식입니다. 혹은 가상 COM 포트 기능을 이용하여 USB 포트로 시리얼 통신이 가능할 수도 있습니다. 일반적으로 시리얼 통신을 할 때는 Serial.print()와 같은 함수를 이용하고, 하드웨어 시리얼은 Serial1, Serial2과 같은 형태의 라이브러리를 사용합니다.

 

  한 번 다음과 같이 가장 기본적인 아두이노 예제 소스코드를 작성해 봅시다. Serial.read() 함수를 이용하여 한 바이트(Byte)씩 입력을 받을 수 있습니다. 간단한 에코(Echo) 프로그램은 다음과 같습니다.

 

※ 아두이노 시리얼 통신 예제 소스코드 ※

 

void setup() {
    Serial.begin(9600);
}

void loop() {
    int incomingByte;
    if (Serial.available() > 0) {
        incomingByte = Serial.read();
        Serial.print("USB received: ");
        Serial.println(incomingByte, DEC);
    }
}

 

  실제로 위 프로그램을 업로드 한 이후에 시리얼 모니터(Serial Monitor)를 실행하면 다음과 같습니다.

 

 

※ 파이썬으로 호스트(Host) 프로그램 만들기 ※

 

  호스트(Host) 쪽에서 데이터를 보낼 때 별도의 프로그램을 이용할 수도 있습니다. 프로그램은 다음과 같이 작성할 수 있습니다. 프로그래밍 언어는 Python 3.7이며 serial 라이브러리를 이용하면 됩니다.

 

import serial

values = [1, 2, 3, 4, 5, 6, 7, 8, 9]

s = serial.Serial("COM4", 9600)
s.write(b'Hello')
s.write(bytearray(values))

while True:
    data = s.readline()
    print(data)

s.close()

 

  실행 결과는 다음과 같습니다.

 

 

  참고로 기본적으로 해당 Serial 포트를 이미 다른 프로세스가 사용 중이라면, 액세스가 거부되었다는 메시지가 출력될 수 있습니다. 오류 메시지는 대략 다음과 같습니다. 아두이노에서 시리얼 모니터가 켜져 있으면 오류가 발생할 수 있습니다.

 

serial.serialutil.SerialException: could not open port 'COM4': PermissionError(13, '액세스가 거부되었습니다.', None, 5)
728x90
반응형

728x90
반응형

  최근에 책을 집필하면서 깃허브에 소스코드를 공개했습니다. 하지만 분명 이 책은 파이썬 책인데, C++ 및 Java 소스코드도 함께 제공하면서 Java의 소스코드가 가장 많은 비중을 차지하게 되었습니다. 이 경우 다음과 같이 저장소의 기본 대표 언어가 Java라고 표시됩니다.

 

 

  대표 언어를 Java가 아닌 Python으로 변경하기 위해서는 어떻게 하면 될까요? 바로 .gitattributes 파일을 만드시면 됩니다. 말 그대로 깃 속성을 관리하는 파일인데요. 이를 추가해서 파일 확장자에 따라서 저장소가 어떻게 인식할 지를 설정할 수 있습니다. 저는 저장소 내에 파이썬, C++, Java 코드만 존재하기 때문에 파이썬만 감지되고 나머지는 무시되도록 하였습니다.

*.py linguist-detectable=true
*.cpp linguist-detectable=false
*.java linguist-detectable=false

 

  다음과 같이 저장소의 루트 경로에 .gitattributes 파일을 생성하여 작성해주면 됩니다.

 

 

  파일을 만든 뒤에는 다음과 같이 정상적으로 대표 언어가 파이썬으로 변경되었습니다.

 

728x90
반응형

728x90
반응형

  윈도우에서 다양한 버전의 파이썬(Python)을 설치하면 다음과 같이 C 드라이브에 설치됩니다. 다만 기본적으로 설치한 뒤에 명령 프롬프트(CMD)에서 python이라고 입력하면 둘 중 하나만 실행됩니다. 그렇다면 윈도우(Windows)에서 두 개의 파이썬 버전을 동시에 이용하기 위해서 어떻게 할 수 있을지 알아보도록 하겠습니다.

 

 

  이때 mklink 명령어를 이용할 수 있습니다. 이는 일종의 바로 가기 링크를 만드는 명령어입니다.

 

※ Python 3 설정 ※

 

  먼저 Python3은 다음과 같이 설정할 수 있습니다.

 

mklink C:\Windows\python3.exe [Python 3이 설치된 경로]
mklink C:\Windows\pip3.exe [Python 3의 PIP가 설치된 경로]

 

  저의 경우 다음과 같이 입력하면 되었습니다.

 

mklink C:\Windows\python3.exe C:\Python37\python.exe
mklink C:\Windows\pip3.exe C:\Python37\Scripts\pip.exe

 

  위와 같이 링크를 만든 뒤에 python3 및 pip3 이라고 명령어를 입력하면 다음과 같이 출력되는 것을 확인할 수 있습니다.

 

 

※ Python 2 설정 ※

 

  Python 2 버전에서도 마찬가지로 진행할 수 있습니다.

 

728x90
반응형

728x90
반응형

  실시간 시계(Real Time Clock, 이하 RTC)란 현재 시간 정보를 항시 가지고 있는 컴퓨터 시계 부품을 의미합니다.

  일반적으로 개인용 컴퓨터(PC)는 RTC를 내부적으로 가지고 있으며, RTC는 내장 건전지를 사용하여 전원이 꺼지더라도 디지털 회로의 카운터에 의존하여 현재 시간 정보를 가지고 있습니다.

 

  사실 성능이 좋지 않은 임베디드 기기의 경우 RTC를 가지고 있지 않은 경우도 많습니다. 이 경우 추가적인 부품을 연결하여 RTC를 이용해야 합니다. Teensy Board에 관해서 말씀을 드리자면, Teensy 3.5와 Teensy 3.6의 경우 내장된 RTC를 가지고 있습니다. 아예 내장된(Built-in) 부품이기 때문에 바로 라이브러리를 호출하여 사용할 수 있어요.

  Teensy의 Time Library 관련 문서는 다음의 경로에서 확인하실 수 있습니다.

 

  ▶ Teensy Time Library: www.pjrc.com/teensy/td_libs_Time.html

 

Time Library, Timekeeping and Time/Date Manipulation on Teensy

Time Library Time, by Michael Margolis, adds timekeeping ability in hours, minutes, seconds, days, months and years. Time Library using Teensy 3.0 RTC Hardware Requirements Time does not require any special hardware. Internally, Time depends upon Arduino's

www.pjrc.com

 

  Teensy 3.5과 3.6 버전은 32.768 kHz의 Built-in 크리스탈을 이용하여 시간 정보를 기록한다고 하네요. 이를 이용하는 간단한 예시는 다음과 같이 작성할 수 있습니다.

 

#include <TimeLib.h>

void setup() {
  // Teensy의 RTC를 이용하여 Time Library를 초기화
  setSyncProvider(getTeensy3Time);
  Serial.begin(115200);
  while (!Serial);
}

void loop() {
  // 매 초마다 현재 시각을 출력
  digitalClockDisplay();  
  delay(1000);
}

// 현재 시각을 출력하는 함수
void digitalClockDisplay() {
  Serial.print("Timestamp (from 1970): ");
  Serial.println(now());
  Serial.print(year());
  Serial.print("/");
  Serial.print(month());
  Serial.print("/");
  Serial.print(day());
  Serial.print(" ");
  Serial.print(hour());
  printDigits(minute());
  printDigits(second());
  Serial.println();
}

time_t getTeensy3Time() {
  return Teensy3Clock.get();
}

// 숫자 정보를 깔끔하게 출력해주는 함수(10보다 작은 수라면 앞에 0을 붙임)
void printDigits(int digits) {
  Serial.print(":");
  if(digits < 10)
    Serial.print('0');
  Serial.print(digits);
}

 

  실행 결과는 다음과 같습니다.

 

728x90
반응형

728x90
반응형

  네이버 메일을 이용하는 경우 [미리보기]를 이용할 수 있습니다. 메일을 직접 읽지는 않고, 메일에 쓰인 내용이 무엇인지 대략적으로 확인하고자 할 때 사용할 수 있습니다. 이를 위해 가장 먼저 [환경 설정] 탭으로 이동합니다.

 

 

  환경 설정 탭에서는 [기본 환경 설정] - [보기 설정] - [본문 미리보기]에 "사용함"을 체크하시면 됩니다.

 

 

  그럼 [받은 메일함]에서 돋보기 버튼을 눌러서 받은 메일의 내용을 미리보기 할 수 있습니다.

 

 

  참고로 미리보기를 이용하는 경우 단순한 텍스트만 출력이 되므로, 상대방 측에서 "수신 확인"과 같은 기능을 사용하더라도 무력화할 수 있습니다.

728x90
반응형

728x90
반응형

  네이버 메일 서비스는 메일을 보낸 뒤에 [수신확인] 탭으로 이동하면, 내가 보냈던 각 메일에 대하여 상대방이 언제 읽었는지에 대한 정보를 확인할 수 있습니다.

 

 

  내가 보낸 메일을 상대방이 읽고 나면, 다음과 같이 읽은 시간이 나오게 됩니다. 

 

 

  하지만 상대방이 사용하고 있는 이메일 서비스의 종류에 따라서 읽은 시간이 부정확할 수 있습니다. 어떤 기업의 이메일을 쓰는 사람들은 항상 [읽지 않음]이라고 나오기도 합니다.

 

  그 이유는 네이버 메일의 수신 확인 기능의 원리를 이해하면 간단히 이해할 수 있습니다. 네이버 메일은 기본적으로 메일 안에 눈에 띄지 않는 작은 크기의 수신 확인용 이미지를 같이 보냅니다. 받는 사람 쪽에서 메일 내용을 확인해 보면, 다음과 같이 눈에 보이지 않는 작은 이미지가 삽입된 것을 확인할 수 있습니다. 웹 브라우저는 이미지를 화면에 출력하기 위해 이러한 이미지 URL을 자동으로 호출하게 되는데 네이버 측에서는 이를 이용해 수신 확인을 감지합니다.

 

 

  그렇기 때문에 모르는 사람이 보낸 메일에서 이미지를 자동으로 띄우지 않는 이메일 서비스의 경우 자동으로 이러한 수신확인 기능을 방어할 수 있게 되는 겁니다. 하지만 네이버 이메일의 경우 메일을 읽었을 때 이미지를 호출하기 때문에 수신확인 기능이 정상적으로 수행됩니다. 그렇다면 이를 방어하려면 어떻게 하면 될까요?

 

 

  바로 메일을 읽을 때 [이동]을 눌러서 [스팸메일함]으로 먼저 보낸 뒤에 읽는 것입니다. 특정 이메일을 스팸메일함으로 보내게 되면 다음과 같이 "이미지를 다운로드하지 않았습니다."라는 메시지가 출력되는 것을 확인할 수 있습니다.

 

 

  이러한 방법을 이용해서 메일을 읽게 되면 메일의 내용은 모두 읽을 수 있지만, 상대방에게 수신확인 알림이 가지 않게 됩니다. 실제로 메일을 보낸 사람 입장에서 메일을 확인해 보면, 다음과 같이 [읽지않음] 이라고 표시되는 것을 확인할 수 있습니다.

 

728x90
반응형