키치너 워털루 지역과 관련 있는 IT 전산인 모임 2023년 10월 정모를 아래와 같이 개최하오니 관심있는 분들의 많은 참여 바랍니다.

일시 : 2023년 10월 28일 (토) 오후 2:30

장소 : 워털루 주님의 교회 2층 Hearth Room

모바일 게임 그래픽을 위한 가장 효율적이고 사용자 친화적인 방법은 고려해야 할 몇 가지 요소가 있습니다.

  1. 게임 엔진 : Unity와 Unreal Engine은 모바일 게임 개발에 가장 널리 사용되는 게임 엔진 중 하나입니다. 특히 Unity는 사용하기 쉽고 방대한 온라인 리소스로 호평을 받고 있습니다. 평판이 좋은 게임 엔진을 사용하면 모바일 플랫폼용 그래픽을 최적화하고 배포하는 프로세스를 단순화할 수 있습니다.
  2. 그래픽 스타일 : 2D 스프라이트나 로우 폴리 3D 모델과 같은 단순한 그래픽은 일반적으로 모바일 장치에 맞게 구현하고 최적화하기가 더 쉽습니다. 복잡한 3D 그래픽은 리소스 집약적일 수 있으며 모든 장치에서 제대로 작동하지 않을 수 있습니다.
  3. 최적화 도구 : Simplygon과 같은 도구는 3D 모델의 다각형 수를 줄여 모바일 장치에 더 적합하게 만드는 데 도움이 될 수 있습니다.
  4. 텍스처 아틀라스 사용 : 여러 개의 작은 텍스처를 하나의 큰 텍스처로 압축하면 그리기 호출 수를 줄여 성능을 향상시킬 수 있습니다.
  5. 해상도 및 규모 : 확장성을 염두에 두고 게임 그래픽을 디자인하세요. 모바일 장치는 다양한 화면 크기와 해상도로 제공됩니다. 2D 게임에는 벡터 그래픽을 사용하고 3D 게임에는 확장 가능한 자산을 사용하는 것이 도움이 될 수 있습니다.
  6. 테스트 : 다양한 장치에서 게임을 정기적으로 테스트하여 예상한 대로 보이고 작동하는지 확인합니다.

Docker 컨테이너 내부에서 호스트 시스템을 "localhost" 또는 "127.0.0.1"로는 직접 접근할 수 없습니다. 그러나 컨테이너에서 호스트 시스템을 접근하는 데는 몇 가지 방법이 있습니다:

  1. 호스트의 특별한 IP 주소 사용:
    Docker는 호스트 시스템을 가리키는 특별한 IP 주소를 컨테이너에 제공합니다. 리눅스에서는 이 IP 주소가 일반적으로 172.17.0.1이지만, 이는 네트워크 구성에 따라 다를 수 있습니다. 이 IP 주소를 사용하여 호스트 시스템에 연결할 수 있습니다.
  2. host network mode 사용:
    Docker 컨테이너를 host 네트워크 모드로 실행하면, 컨테이너는 호스트의 네트워크 네임스페이스를 사용합니다. 이렇게 하면 "localhost" 또는 "127.0.0.1"을 사용하여 호스트의 서비스에 접근할 수 있습니다.

    예시:

    docker run --network=host <image_name>

    하지만 이 방법은 컨테이너와 호스트 간의 네트워크 격리가 사라져 보안 문제가 발생할 수 있으므로 주의가 필요합니다.

  3. Docker의 bridge 네트워크 사용:
    Docker의 기본 bridge 네트워크를 사용할 때 호스트는 172.17.0.1의 IP 주소로 표현될 수 있습니다. 하지만 이 IP 주소는 환경마다 다를 수 있으므로 확인 후 사용해야 합니다.
  4. Mac 또는 Windows 사용 시:
    Docker Desktop for Mac 또는 Windows를 사용하는 경우, host.docker.internal 호스트네임을 사용하여 호스트 시스템에 접근할 수 있습니다.

무엇을 하려고 하는지, 어떤 환경에서 작업하고 있는지에 따라 가장 적합한 방법을 선택해야 합니다.

믿음은 우리가 바라는 것들을 보증해 주고 볼 수 없는 것들을 확증해 줍니다. 믿음이 없이는 하느님을 기쁘게 해드릴 수 없습니다. 하느님께로 가까이 가는 사람은 하느님이 계시다는 것과 하느님께서 당신을 찾는 사람들에게 상을 주신다는 것을 믿어야 합니다.

히브리서 11장 1, 6절 (공동번역성서)
하느님께서 당신의 일을 마치고 쉬신 것처럼 하느님의 안식처에 들어간 이도 그의 일손을 멈추고 쉬는 것입니다. 그러니 우리도 그 안식을 누리도록 힘써야겠습니다. 옛사람들처럼 순종하지 않다가 낭패를 보아서야 되겠습니까?

히브리서 4장 10-11절 (공동번역성서)

성경의 65번째/58번째 권이자 신약성경 중 유일하게 저자가 미상인 책. 책 제목에서 가리키듯 흔히 유대계 기독교인으로 생각된다. 풍부한 구약성서 인용과 제의적 관심이 돋보이는 것도 이유. 아람어 아닌 그리스어로 쓰이긴 했지만 당대 유대 지식인 대부분은 그리스어에도 능통한 경우가 대부분이었으므로 언어 유무로 유대인인지 아닌지를 가릴 수는 없다.
 
히브리서 신학의 독자성은 대사제론에서 가장 두드러지게 나타난다. 이 서간에서만 그리스도에게 사용되는 '대사제' 칭호만 독특한 것이 아니다. 이 칭호로써 신학적 구상의 축점軸點이 놓였고, 이를 중심으로 여타 관념들이 대체로 제자리를 찾는다. 유랑하는 하느님 백성 관념이나 성경 해석 또는 대사제 표상 가운데 무엇을 히브서의 중심으로 언명해야 하는가라는 물음에는, 단호히 마지막 것을 택해도 될 것이다.

-요아힘 그닐카Joachim Gnilka, 《신약성경신학》Theologie des Neuen Testaments, 이종한 옮김, 분도출판사, 2014, 499쪽

예수를 하느님의 아들이자 사제로 보는 난해하면서도 나름 독창적인 신학이 특징이다. 히브리인들을 대상으로 한 서간답게 유대인들의 메시아로서의 예수를 다루고 있으며, 많은 수의 구약성경 인용, 그 중에서도 의의 왕 또는 샬라임 왕 곧 평강의 왕 멜기세덱에 대한 많은 언급을 포함한다. 멜키쩨댁은 신약에서는 히브리서에서만 유일하게 언급된다. 이것이 중요한 게, 제사장 마쉬아흐가 기존 아론의 혈통이 아닌 멜키쩨덱의 정통성을 이을거란 관념과 전승은 당대 유대교 중 에쩨네파만 보유하고 있었다. 즉 히브리서 저자는 에쩨네파의 전승을 깊이 받아들여 당대 초기 기독교에 도입한 것이기에, 그가 적어도 기독교로 개종하기 전에는 에쩨네파의 일원이었을 개연성이 매우 높은 건 부정할 수 없다.

문학적으로 보자면, "히브리서는 세련된 통사론과 정선된 어휘를 구사하는, 신약성경에서 가장 품격 있는 문서다. 저자는 당시의 합성어에 대한 헬레니즘적 선호에 상응하여, 10개의 어구를 아예 새로 만들어냈다. 그리고 교육과 훈육(5,12-14; 12,7-11)으로부터 농사(6,7-8; 12,11), 건축(6,1; 11,10), 항해(6,19)를 거쳐 운동 경기(12,1)에 이르기까지 다양한 분야와 관련된 비유를 즐겨 사용한다. 저자의 뻬어난 문체와 수사학적 어법 선호는, 그가 수준 높은 언어 훈련을 받았고 고대문화에 조예가 깊었음을 증언해준다. 저자는 충실한 수사학 교육을 받았음이 거의 확실하다. ....... 수사학적 재능은 바오로를 능가한다."

카프카(Kafka)와 ESP32를 연결하여 사용하려면 여러 방법이 있지만 대개의 경우 ESP32는 IoT 디바이스로써 동작하기 때문에 직접적으로 카프카 클라이언트를 실행하는 것은 적합하지 않습니다. 그 대신 다음과 같은 일반적인 접근법을 사용할 수 있습니다:

  1. 중간 서버를 사용:
    • ESP32는 데이터를 중간 서버(예: MQTT 브로커, HTTP 서버 등)로 전송합니다.
    • 중간 서버는 이 데이터를 받아 카프카로 전송하는 클라이언트를 실행합니다.
    • 예를 들면, ESP32는 MQTT를 사용하여 데이터를 MQTT 브로커로 전송하고, 별도의 서버가 MQTT 브로커로부터 데이터를 구독하여 카프카로 전송할 수 있습니다.
  2. ESP32에 맞는 가벼운 카프카 클라이언트 사용:
    • ESP32와 같은 리소스가 제한된 환경에서 동작할 수 있는 가벼운 카프카 클라이언트가 있으면 사용할 수 있습니다. 하지만, 이런 클라이언트는 일반적으로 기능이 제한적일 수 있습니다.
  3. HTTP 프록시를 사용:
    • 카프카는 HTTP 프록시(예: Confluent's REST Proxy)를 통해 접근할 수 있습니다.
    • ESP32는 HTTP 요청을 사용하여 이 프록시에 데이터를 전송할 수 있습니다.

어느 방법을 선택하든, ESP32의 리소스 한계와 연결 안정성, 전송 속도 등의 요구 사항을 고려해야 합니다. ESP32는 카프카와 직접 통신하기에는 제한된 리소스를 가지므로, 중간에 다른 서비스나 서버를 사용하여 데이터를 중계하는 것이 흔히 사용되는 방법입니다.

Nginx에서 location 블록 안에서는 여러개의 if 지시문을 중첩하여 사용할 수 없습니다. 하지만, 단일 if 지시문은 location 내에서 사용할 수 있습니다.

제시된 문제를 해결하려면, 복합 조건의 각 부분을 계산하여 하나의 변수에 저장하고, 그 변수를 기반으로 if 문을 작성해야 합니다.

다음은 수정된 구성 예제입니다:

location / {
    # ... [other configuration]

    # Initialize variables
    set $cors 1;
    set $preflight 0;

    # Determine if CORS headers should be added
    if ($http_origin = 'http://localhost:8888') {
        set $cors 0;
    }

    # Check for OPTIONS request
        if ($request_method = 'OPTIONS') {
        set $preflight 1;
    }

    # Determine the combined condition
    set $condition "${cors}${preflight}";

    # Apply CORS headers based on the combined condition
    if ($condition = '10') {
        add_header 'Access-Control-Allow-Origin' '*' always;
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE';
        add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
        add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
    }

    # Handle preflight requests separately
    if ($condition = '11') {
        add_header 'Access-Control-Allow-Origin' '*' always;
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE';
        add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
        add_header 'Access-Control-Max-Age' 1728000;
        add_header 'Content-Type' 'text/plain; charset=utf-8';
        add_header 'Content-Length' 0;
    return 204;
    }

    # ... [rest of the configuration]
}

여기에서는 $condition 변수를 사용하여 복합 조건을 계산하고, 그 값을 기반으로 각각의 if 지시문을 작성했습니다.

Vim의 비주얼 모드에서 텍스트를 복사하려면 다음 단계를 따르십시오:

비주얼 모드로 진입:
v (문자 선택), V (라인 선택), 또는 CTRL + v (블록 선택) 중 하나를 사용하여 비주얼 모드로 진입합니다.

텍스트 선택:
화살표 키나 텍스트 이동 명령(h, j, k, l, w, b 등)을 사용하여 원하는 텍스트를 선택합니다.

카피 (Yank):
y 키를 눌러 선택한 텍스트를 카피합니다.

선택한 텍스트는 이제 Vim의 레지스터에 저장되었으며, 원하는 위치에서 p 명령으로 붙여넣을 수 있습니다.

FFmpeg를 사용하여 비디오를 시계방향으로 회전하려면 -vf "transpose=1" 또는 -vf "transpose=2" 옵션을 사용하면 됩니다. -vf 옵션은 비디오 필터를 나타냅니다. 여기서 transpose=1은 시계방향으로 90도 회전을 나타내고, transpose=2는 반시계방향으로 90도 회전을 나타냅니다.

AMD 그래픽 카드를 사용하면서 FFmpeg의 하드웨어 가속을 활용하려면 h264_amf 또는 hevc_amf 코덱을 사용해야 합니다. 그러나 이는 FFmpeg 버전과 시스템 구성에 따라 다를 수 있으므로 지원 여부를 확인하십시오.

예를 들어, 입력 비디오를 시계방향으로 90도 회전하면서 AMD의 h264 코덱을 사용하여 출력하는 경우 다음과 같이 명령을 사용할 수 있습니다.

ffmpeg -i input.mp4 -c:v h264_amf -vf "transpose=1" output.mp4


이 명령을 사용하기 전에 FFmpeg가 h264_amf 또는 hevc_amf 코덱을 지원하는지 확인하십시오. FFmpeg에 포함된 코덱 목록을 보려면 다음 명령을 사용하십시오.

ffmpeg -codecs

 

h264_amf 또는 hevc_amf 코덱이 목록에 나타나면 사용할 수 있습니다.

+ Recent posts