반응형

IT 이야기/default 18

컴파일러 구조와 LLVM

컴퓨터 프로그래밍에서 소스 코드를 기계어로 번역하여 컴퓨터에서 실행 가능한 프로그램으로 만드는 작업은 컴파일러의 역할입니다. 전통적인 컴파일러는 코드 변환 과정에서 최적화를 수행하고, 각 CPU 아키텍처에 맞는 기계어를 생성합니다.  하지만 이 과정에서 발생하는 비효율성이나 다양한 프로그래밍 언어 및 아키텍처에 대한 대응이 어렵다는 문제점이 있었습니다. 이를 해결하기 위해 등장한 것이 LLVM이라는 모듈식 컴파일러 인프라스트럭처입니다. 이 글에서는 전통적인 컴파일러와 LLVM의 구조와 차이점을 설명하고, LLVM이 제공하는 장점들을 살펴보겠습니다.전통적인 컴파일러 구조컴파일러는 일반적으로 세 가지 단계로 구성됩니다: 프런트엔드(Frontend), 미들엔드(Middle-end), 그리고 백엔드(Backen..

비디오 처리, 인코더(Encoder)와 디코더(Decoder)

비디오 처리의 핵심 인코더(Encoder)와 디코더(Decoder) 비디오 처리는 디지털 영상을 압축하고 전송, 재생하는 등의 다양한 작업을 포함하며, 이를 가능하게 하는 중요한 요소로 인코더와 디코더가 있습니다. 이 두 요소는 데이터의 압축과 해제, 전송, 저장에 관련된 핵심 기능을 수행합니다. 인코더(Encoder) 인코더는 비디오 데이터를 효과적으로 압축하여 파일 크기를 줄이고, 동시에 원본 비디오의 품질을 유지합니다. 이렇게 압축된 데이터는 효율적으로 저장 및 전송될 수 있어, 용량이 제한된 환경에서도 높은 화질의 비디오를 다룰 수 있게 합니다. 인코더의 알고리즘은 여러 가지 비디오 코딩 표준에 따라 선택되며, 이는 효율적이고 품질 좋은 압축을 가능하게 합니다. 비디오 압축 인코더는 높은 해상도의..

네비게이션 교통정보용어 해설

네비게이션 용어 해설 네비게이션 교통정보 용어들의 이해 네비게이션에서의 "유고 정보"는 주로 운전자에게 도로 상황과 관련된 중요한 정보를 전달하는 기능을 말합니다. 이 정보들은 실시간으로 업데이트되며 운전자들이 안전하게 목적지에 도달할 수 있도록 돕습니다. 아래는 주요 유고 정보와 그 의미에 대한 설명입니다. Traffic Congestion (교통 체증): 도로가 혼잡하거나 차량이 움직이지 않는 상황으로, 대체 경로나 타 시간대를 고려해야 할 수 있습니다. Road Restrictions (도로 통제): 특정 지역에서의 도로 통행이나 주차와 같은 제한 사항을 의미합니다. Accident Area (사고 지역): 도로에서 사고가 발생한 지점으로, 주행 중에 특별한 주의가 필요한 구간을 나타냅니다. Wea..

Open Source License

오픈소스 라이선스 의무조항 저작권, 개발자 및 기여자 정보의 표시 코드를 수정한 경우 수정한 정보의 표시 라이선스 정보의 제공 같은 라이선스로 재배포할 것 소스 코드의 제공 주요 라이선스 조항(의무사항) MIT Apache2.0 3-BSD GPL 2.0 GPL 3.0 LGPL 2.1 Ms-PL LGPL 3.0 2-BSD ISC 복제, 배포, 수정의 권한 허용 ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ 배포 시 라이선스 사본 첨부 ○ ○ ○ ○ ○ ○ 저작권 고지사항 또는 Attribution 고지사항 유지 ○ ○ ○ ○ ○ ○ ○ ○ ○ 배포시 소스 코드 제공의무와 범위 주1 주1 주3 주3 조합저작물(LagerWork)작성 및 타 라이선스 배포 허용 ◎ ◎ ◎ ○ ◎ ○ ◎ 수정 시 수정내용 고지 ○ ○ ○ ..

Kafka에서 topic 자동 생성 방지

server.properties 파일을 열어서 auto.create.topics.enable=false 추가 하니 자동생성이 방지되었다. auto create 관련 옵션이 전혀 없는걸보니 default로 자동생성이 되는것 같다. 분명 편리한 기능이지만 replication factor 값이 1로 생성되어 이전에 성능 테스트 할때 문제가 되었다. replication factor 3으로 생성한 topic을 삭제하고 auto create로 생성한 topic은 메시지 받는 속도가 느려져서 이유를 찾느라 고생했었다. 그리고 지금은 외부 producer에서 kafka broker 서버로 메시지를 계속 보내고 있는데, 수집할 필요가 없는 데이터라서 막고 싶은데 producer를 끄는법을 모른다고 하니 kafka서버..

네이버 Android Map API Key 변경

기존의 네이버 안드로이드 지도 Open API를 잘 사용하고 있었는데 갑자기 문자 한 통이 왔다. 개발자 센터에서 지도 Open API 지원이 종료되고 네이버 클라우드 플랫폼이라는 새로운 사이트에서 Maps API를 이용 신청해서 Client ID를 새로 받아서 변경해줘야 이용 가능하다고 한다. 귀찮아서 그냥 무시하고 쓰다가 4월 16일이 되자마자 앱에서 네이버 지도가 적용되지 않고 하얀색 빈 화면이 떴다. 역시 발에 불이 떨어져야 시작한다고 부랴부랴 네이버 클라우드 플랫폼에 접속하니 계정을 만들고 결제수단까지 등록하고 나니 Open API 사용이 가능하게 바뀌었다. https://www.ncloud.com/ 기존 네이버 개발자 센터에 비해서 한눈에 들어오지 않고 난잡해 보이긴 했지만 차츰 적응해 가겠지..

안드로이드 스튜디오 device unauthorized 에러

com.android.ddmlib.AdbCommandRejectedException: device unauthorized. This adb server's $ADB_VENDOR_KEYS is not set Try 'adb kill-server' if that seems wrong. Otherwise check for a confirmation dialog on your device. Error while Installing APK 이 에러는 device unauthorized, 말 그대로 승인되지 않은 장치라서 발생한다. Android Device를 연결하고 USB Debugging 허용을 하지 않은 상태에서 빌드하면 발생한다. 거의 Android Device라 하면 스마트폰이나 태블릿일 텐데 USB 연..

zookeeper(주키퍼)

Zookeeper란? 분산 클러스터를 관리해주는 코디네이터 역할(Kafka Server 조율) 특징 시스템에서 반드시 홀수로 구성 해야 한다. 서버 5대가 구동 중에 2대가 죽었을 때, 관리자가 죽었던 서버를 다시 살리고 데이터 변경 요청이 들어올 경우, 데이터 일관성을 위해서 과반수 투표를 하게 된다. 올바른 데이터가 무엇인지 판단하기 위해서 3:2로 비교하고 과반수인 3쪽의 서버의 데이터를 업데이트하게 된다. 하지만 짝수일 경우에는 2:2또는 1:1로 과반수 라는 게 없이 똑같아져서 문제가 발생한다. 반대로 3대가 죽었을 경우, 투표를 하게 되면 죽은 서버가 과반수가 되어 올바르지 않은 데이터를 옳다고 판단하게 된다. 그래서 절반 이상이 죽으면 데이터의 불일치성을 막기 위해서 zookeeper가 Ka..

maven 환경변수 에러 해결

Maven 환경변수 에러 GeoServer의 소스를 받아서 maven으로 빌드하고 디버깅 하기 위해maven을 받아서 압축을 풀고 잘 설치되었나 확인하기위해서 명령어 mvn -v를 입력했다.환경 변수에서 JAVA_HOME을 JRE가 아닌 JDK로 하라며 에러가 발생했다. 12345The JAVA_HOME environment variable is not defined correctly This environment variable is needed to run this program NB: JAVA_HOME should point to a JDK not a JREcs 이 에러가 계속 나와서 maven을 사용할수 없었다.물론 고급 시스템 설정 - 환경변수 에 있는 사용자 변수, 시스템 변수는 JAVA_HO..

Geometry 공간 연산

Geometry 공간 연산공간 연산자는 피처의 도형(geometry) 속성에 대한 조건을 설정하는데 사용된다. 위상 연산자(Topological Operators)8개의 위상 연산자들을 이용한 공간 질의 수행Intersects - 2개의 공간 객체가 교차 하는지 검사Disjoint - 2개의 공간 객체에 공통 요소가 없는지 검사Contains - 공간 객체가 다른 객체를 포함 하는지 검사Within - 공간 객체가 다른 객체 내부에 있는지 검사Touches - 2개의 공간 객체가 맞닿아 있는지 검사Crosses - 2개의 공간 객체가 서로 횡단하는지 검사Overlaps - 2개의 공간 객체가 서로 겹치는지 검사Equals - 2개의 공간 객체가 위상적으로 동일한지 검사

반응형