반응형

IT 이야기 22

컴파일러 구조와 LLVM

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

Python __함수__ 매직 메서드란?

파이썬을 접하면서 다른 프로그래밍 언어와 달리 __ init__ 와 같이 함수 앞뒤에 언더바가 2개씩 붙이는 표현이 있습니다. 이를 매직 메서드(Magic method) 혹은 던더 메서드(Dunder method)라고 합니다. 이 표현에 대해 알아보고 기록하기 위해 정리합니다. 매직 메서드 Python에서 매직 메서드는 사용자가 직접 호출할 수 없습니다. 연사자를 사용하여 숫자 연산을 하면 내부적으로 __add__() 메서드가 호출됩니다. __add__()를 호출하면 op1 + op2일 때 컴파일러가 해당 class의 __add__() 구현 여부를 확인하여 인라이닝 합니다. class Student def __init__(self, name, age): self.name = name self.age = ..

IT 이야기/Python 2024.03.07

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

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

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

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

[Java] 접근 제어자(Access Modifier)

자바에는 클래스 내에서 멤버의 접근을 제한하는 역할을 하는 접근 제어자가 있다. Access Modifier(접근 지정자, 접근 제어자)는 알다시피 4가지가 있다. public: 모든 접근 허용 protected: 클래스 내부, 동일 패키지, 상속받은 하위 클래스에서만 접근 가능 default: 클래스 내부와 같은 패키지에서만 접근 가능 private: 클래스 내부에서만 접근 가능 접근 허용은 public > protected > default > private 순서대로 허용폭이 넓다. 클래스 동일 패키지 하위 클래스 모든 클래스 public ○ ○ ○ ○ protected ○ ○ ○ X default ○ ○ X X private ○ X X X 접근제어자를 모두 public으로만 해도 코드는 문제없이 동..

IT 이야기/Java 2020.05.18

[Java] 추상 클래스

추상 클래스(abstract class)란 하나 이상의 추상 메소드를 가지는 클래스이다. 추상 메소드란 함수 선언만 있고 정의는 없는 함수이며 선언에 abstract 라는 키워드가 붙는다. 추상 메소드가 포함되면 반드시 추상 클래스가 되기때문에 클래스명 앞에도 abstract 키워드가 붙는다. 추상 메소드는 접근 제어자 (public, private, protected, default) 중 private는 사용할 수 없다. 자식 클래스에서 상속 받아 구현되어야 하기때문에

IT 이야기/Java 2020.05.18

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/ 기존 네이버 개발자 센터에 비해서 한눈에 들어오지 않고 난잡해 보이긴 했지만 차츰 적응해 가겠지..

반응형