제임스딘딘의
Tech & Life

최근 포스팅

more

3세대 IS250 스파이럴케이블(클럭스프링) 교환

3세대 IS250의 스티어링휠(핸들)과 좌석은 위치 메모리 기능이 있다.시동을 끄면 제자리로 돌아가고, 시동을 켜면 내가 설정해뒀던 위치로 올라온다.이 기능으로 핸들은 하루에도 몇번씩 위치가 들어갔다 나왔다, 올라갔다 내려갔다 한다.2024년 어느순간 핸들 오른쪽에 위치한 버튼 중 'Back' key가 눌러도 동작을 하지 않았다.불편했지만 무시하고 탔다. 그래도 가끔은 눌렸고, 수동으로 핸들 위치를 최대한 낮추면 눌렸다.증상으로 보건대, 핸들 안에 있는 스파이럴 케이블의 접촉 불량일 거라 추측했다.그리고 몇달 뒤 어느순간 Back key 뿐만 아니라 Enter key도 눌렀을 때 동작을 하지 않았다.그리고 또 수 주 뒤 어느순간 그 key과 더불어 위아래 좌우 방향키도 동작을 하지 않게되었다.다 무시하고..

[정비기록] 사이드미러 각도조절 고장 : 부품 교환

서론2016년에 중고로 구입하여지금까지 여전히 출퇴근에 사용하고 있는 2014년식 렉서스 IS250.내 생각에 렉서스에서 만든 차 라고 하면 고장없고 내구성 좋다는 이미지다.직전에 탔던 대우에서 만든 04년식 중형차의 다양하고도 잦은 잔고장이 워낙 스트레스였다.그 차를 탈 당시 나는 대학생이었기에, 더더욱 잔고장에 대한 스트레스가 컸다. 2~3개월에 한번 꼴로 지출이 발생하니.. 큰 금액은 아니지만 잔잔바리 10~40만원 짜리 잔고장들은 큰 수입없는 대학생으로서는 짜증나는 일이었다.그래서 '렉서스=내구성' 그 이미지만 보고 샀다.그리고 9년간 타며 느낀건 그 이미지값은 나름 한다는 것.큰 고장 잔 고장 전혀 없이 타왔다.그러나 차령이 11년차에 접어드니전자부품이 하나 둘 이상동작을 하기 시작한다.  고장..

조립 PC 문제 해결 Cheat Sheet

다양한 부품을 조합하여 스스로 조립 데스크탑 PC 조립할 때, 한번에 정상동작하면 좋겠지만. 종종 문제가 발생하기도 한다. 전원을 넣었더니 비프음 삑 소리는 나는데 화면이 나오지 않는다거나, 비프음 조차 나지 않는다거나, 화면이 나왔다가 꺼지면서 바로 재부팅 된다거나... 등등. 그런 상황에서 간단히 확인해볼 내역들이 몇가지 있다. 화면이 나오지 않을 경우 (메인보드 교체 / 새로 조립) - 램 슬롯이 4개 이상인 경우 오른쪽부터 꽂아볼 것. 특히, 램 각각의 이상유무 확인을 위해 1개씩 차례로 장착 및 동작확인 해볼 것. - 전원을 넣어도 메인보드가 비프음도 없고 전혀 반응하지 않을 경우, 잔류 전력이나 정전기 등의 문제일 수 있음. 전원케이블 및 동전배터리를 모두 제거한 상태에서 전원버튼을 5~6회 ..

NULL ptr 2024.03.28 0

TCP : BBRv2 및 CUBIC 의 공존

최근 TCP Congestion Control Algorithm에 대해 살펴볼 기회가 생겨서 틈틈히 공부중이다. 우리말로는 혼잡 제어 알고리즘 이라고도 부르는 것 같고, 줄여서 CC Algorithm 으로 부르기도 하는 것 같다. 나는 편의상 CC 알고리즘 이라고 하겠다. 리눅스 커널 TCP 스택의 기본 CC 알고리즘으로는 CUBIC 이란 것이 사용되고있다. 그런데 BBRv2 라는 또다른 CC 알고리즘을 구글에서 개발하고 있는데, 이것이 최근 조명을 받고 있다. 나는 이 둘에 대해 관심을 가지고있으며, 실제 망에서 이 둘이 혼재되어 동작할 때 어떤 일이 발생 할 지 상당히 궁금하다. 실제 네트워크 망은 각종 라우터들이 존재할텐데, 이들의 버퍼크기, AQM 로직, RTT, Send Rate도 제각각일 것이..

Network Technology 2024.02.16 0

현대HT imazu 월패드 시간, 날짜 맞추는 방법

살고있는 9년차에 접어든 아파트단지 변전실 및 전기관련 점검이 진행되는 날이었다. 2주전부터 사전 공지됐던 대로, 아파트 단지 모든 동이 정전되었다. 공용공간의 엘리베이터부터, 각 세대내의 전기들까지. 약 3시간이 지난 후, 전기는 들어왔다. 그러나 월패드의 시간, 날짜는 1월1일로 초기화. 날씨, 온도 등의 정보도 비정상적으로 표시. 어라? 싶어서 대충 월패드를 만져보니 시간이나 날짜 설정하는 메뉴가 없다! 보통 이런 경우는 관리실/기계실 어디쯤 설치-운용 되는 중앙 서버로부터 날짜/시간/날씨 정보를 받아 표시하는 것으로 추정할 수 있다. 엘리베이터 호출기능도 안되는 걸로 미루어보아, 전기 복구 후 관리실측에서 해당 서버를 다시 기동시키지 않은 것으로 추측된다. 따로 관리실에 연락은 하지 않았다. 다른..

gRPC-java 프레임워크 로그 출력 설정

gRPC java framework를 사용해서 클라이언트와 서버를 구성하고, 서로 통신하도록 만들었다. 이후, 디버깅이 필요하여, gRPC java framework의 소스코드를 살펴보니, java.util.logging 패키지를 사용하여 로그 출력코드가 삽입되어 있는것을 보았다. 이 내용을 콘솔에 출력하는 방법을 찾아보았다. [logging.properties] # Create a file called logging.properties with the following contents. handlers=java.util.logging.ConsoleHandler io.grpc.level=FINE java.util.logging.ConsoleHandler.level=ALL java.util.logging...

Java 2023.12.19 0

베란다에 전기 콘센트 만들기 (feat. 전동 빨래 건조대)

2015년 지어진 평범한 33평 아파트. 안방 앞 베란다에 전동 빨래 건조대는 설치되어 있다. 그런데 콘센트가 없다. 빨래 건조 전용으로 베란다를 사용하고자 제습기를 가져다 놓았는데, 꽂을 전기가 없네? 안방 콘센트에서 멀티탭으로 전기를 끌어와 빨래를 건조시키곤 했지만, 전선때문에 샷시문을 꽉 닫을 수 가 없으니 불편함이 이만저만이 아니었다. 전선두께만큼 열린 샷시문 틈으로 들어오는 제습기의 소음과, 여름에는 빠져나가는 에어컨의 냉기. 그리고 겨울에는 슬금슬금 밀려들어오는 추위. 그래서 베란다 벽에도 콘센트를 만들어 보기로 했다. 전기는 천장의 전동 빨래 건조대의 것을 따내어(분기시켜) 콘센트로 만들면 될 것으로 판단했다. ⚠ 전기 작업전 반드시 차단기 내리기! ⚠ 본인이 피카츄 출신이거나 토르 출신이면..

망해버린 오산 세교 3신도시 (2023년 11월 부활)

국토부 세교 3신도시 후보지 발표 며칠 전인 11월 15일 수요일. 국토교통부에서 신규택지 후보지를 발표했습니다. 전국 5곳에 8만호 규모인데요. 크게 나누면 수도권(6.55만호) / 비수도권(1.45만호) 이고요. 수도권은 구리 토평2(1.85 만호), 오산 세교3 (3.1만호), 용인 이동(1.6만호). 이렇게 3곳 합해서 6.55 만호. 비수도권은 청주분평2(0.9 만호), 제주화북2 (0.55 만호) 2곳 합해서 1.45만호. 이렇게 됩니다. 이번에 지정된 곳들은 기존에 문재인정부의 국토부가 내놓았던 '3기 신도시'와는 다른 신규택지입니다. 중장기 주택공급 기반 확충을 위해 지정/발표 했다고 하며 9.26 공급대책 후속조치 차원이라고 하네요. 지난 2022년 11월 김포한강2(4만6000가구), ..

부동산 2023.11.21 0

렉서스 IS250 3세대 부품(번호) 찾기

외제차도 그렇고 국산차도 법적으로 부품내역 및 부품 가격 정보를 모두 공개하도록 되어 있어서 자신의 차량과 관련된 부품 정보를 미리 알고 있으면 차량정비에 큰 도움이 되곤 한다. 문제는 '부품 정보를 공개 해야한다'라는 법조문만 있지, 그걸 '어디에 공개 해야 한다' 라는 법조문은 없어서... 본인 차에 맞는 부품정보를 '알아서' '잘' 찾아보아야 한다. 최근 내가 타고있는 렉서스 IS250의 부품 정보를 찾아볼 일이 생겼는데, 아래 사이트들이 도움이 됐다. 1. lexus.com 렉서스 닷컴. 렉서스 차량 부품들을 조회홰 볼 수 있다. 단종된 IS나 CT의 부품도 조회가능. https://parts.lexus.com/ 이런식으로 이미지를 통해 부품을 찾을 수 있다. 이렇게 목록을 통해 부품번호(Part..

마우스 위치 강조하기 (feat. PowerToys)

윈도우키 + R 을 눌러 '실행' 창을 띄운 뒤 'PowerShell' 을 넣고 확인을 눌러 PowerShell을 실행한다. PowerShell에서 아래 명령을 넣고 엔터. winget install Microsoft.PowerToys --source winget 아래와 같이 윈도우 패키지 매니저가 PowerToys 를 다운로드 후 설치 한다. 잠시 기다리면 설치 성공 이란 메세지와 함께 설치가 완료되며, PowerToys가 자동으로 실행된다. 마우스 유틸리티 의 설정열기 버튼을 누른다. 1. 마우스 찾기 이와같이 마우스 찾기 사용 기능을 켜고, 활성화 방법은 편한 것을 선택해준다. 나는 왼쪽 컨트롤 키를 두번 누르는 것으로 사용. 왼쪽 Ctrl 키를 두 번 누르거나 마우스를 흔들어 커서 위치를 스포트라..

부자와 가난

부자가 된다고 모든 문제가 해결 되지는 않는다. 부자가 되면 돈과 관련된 문제만 해결 할 수 있을 뿐이다. 부자는 돈을 잘 다루고 돈에 대해서 잘 아는 사람에 불과 하다. 부자라고 해서 선하거나 인격이 높다는 의미는 아니다. 또한 가난하다고 해서 모든 문제가 해결 되지 않는다. 인생의 많은 문제들 중 가난하다고 해서 해결 되는 것은 하나도 없다. 가난하면 돈과 관련된 문제는 무조건 해결 할 수 없다. 돈은 가치 없다고 여기며 혐오하고 무시했던 자들은 돈 때문에 진짜 가치있고 중요한 것인 건강, 가족, 존엄성이 파괴 되는 경우도 발생한다. 가난하다는 것은 돈이 없다는 뜻 이상 이하도 아니다. 가난하다고 해서 선하거나 인격이 높다는 뜻은 아니다. 결국, 부자라고 인격이 나쁜 것도 아니고 가난하다고 해서 인격..

일기장 2023.05.14 0

ChatGPT : 거짓 정보를 그럴듯하게 포장해내는 인공지능

ChatGPT 라는 인공지능 언어모델 서비스가 최근 인기입니다. '언어모델' 이라는 단어에서 알 수 있듯이 사용자가 특정 언어로 질문을 하면 같은 언어로 대답을 해주는 인공지능입니다. 현재는 웹사이트에서 '문자' 로 사용가능한데, '음성-문자 변환' 기술을 잘 이어붙여주기만 하면 음성을 문자로 변환하는 것은 가능한 일이니, 곧 음성으로도 서비스 할 것 같아요. 저도 호기심에 몇번 ChatGPT사용을 해보다가, 사용을 해보니 뭔가 쓸만(?) 한 정보를 주는 것 같아서 종종 회사업무에도 활용합니다. 예를 들면 아래와 같이요. 최근에 회사에서 SMB 프로토콜을 사용하는 네트워크 파일 서버에 연결하는 안드로이드 기반 파일탐색기 앱에서 '이미지 미리보기' 기능을 구현할 수 있는지를 빠르게 검증해보라는 상사의 요구..

USB 규격 마스터링

USB(Universal Serial Bus)는 한국어로 '범용 직렬 포트' 라 번역할 수 있는 장치간 연결을 위한 표준 규격이다. 애플이 오리지널 아이맥(iMac)에 사용하기로 결정을 내린 1998년 이래로 2023년 현재까지 컴퓨터와 거의 모든 IT 장치의 표준 연결 유형으로 자리매김해왔다. USB가 등장하기 전에는 장치간 연결에 어떤 규격을 사용했었을까? ADB에서 FireWire (파이어와이어)와 SCSI (한국에서는 보통 '스카시' 불렀다)에 이르는 다양한 연결 유형이 있었다. 게다가 각각은 고유한 변형까지 있었다. USB 모양 다시 USB 이야기로 돌아와서. 대부분의 기술 표준들들이 그렇듯이 USB는 몇 년마다 새로운 버전이 출시되어왔으며, 속도, 기능부분이 점점 향상되어왔다. ‘범용’임에도 ..

동탄신도시 항공뷰와 호수공원 야경 - 2023년 5월 1일

동탄2신도시 라크몽 에서 호수공원 쪽을 바라본 야경이다. 멀리 동탄1신도시의 메타폴리스 주상복합 아파트도 보이고, 오른쪽 구석에는 동탄호수공원 린스트라우스도 보인다. 아래는 동탄신도시를 지나가는 항공기에서 촬영한 사진들이다. 2023년 5월 초에 촬영했다. 사진 오른쪽 볼록하게 순환하도록 놓여진 도로가 최근 도로를 낸 신주거단지라 불리는 지역이다. 사진의 아래는 동탄호수공원 지역인 산척동, 송동. 사진의 윗 부분은 동탄2신도시 시범단지와 11자상가, 중리IC 등이 보인다. 동탄 2신도시를 왼쪽지역과 오른쪽지역으로 갈라놓은 경부고속도로가 보인다. 곧 지하화 되어 땅속 터널이 될 것이고, 그 위는 공원으로 조성될 것이다. 동탄 1신도시의 상징과도 같은 반원형 도로망이 보인다.

부동산 2023.05.05 0

웹 서비스 구조(feat. SpringBoot와 nginx)

스프링부트 개념 우선 스프링 부트. '스프링 프레임워크'의 사이드 프로젝트로 시작되어 만들어진 웹 애플리케이션 프레임워크다. Java를 기반으로 한다. '스프링 부트'가 등장하기 전 '스프링 프레임워크'가 먼저 등장했는데, '스프링 프레임워크'는 초기 환경 설정시 시간을 많이 할애해야했다. 그것을 문제로 생각한 이들이 사이드 프로젝트로 '스프링 부트' 를 만들었다. 즉, '스프링 부트' 는 '스프링 프레임워크' 를 기반으로 하지만, 엄밀히 말하면 다른 것이니 주의가 필요하다. '스프링 프레임워크'는 위와 같은 구조를 가지고 있다. Python을 이용한 Django, Ruby를 이용한 Ruby on Rails, Javascript를 이용한 Node.js 이 있다면, Java 개발자들은 스프링(=스프링 프레..

Web Technology 2023.04.24 0

2023년. 아파트 분양가가 비싼 이유

2023년 4월입니다. 최근 분양하는 아파트단지들을 보고있자면, 흔히 말하는 '입지좋은' 곳이 아니면 청약미달이라는 쓴 잔을 마시게 됩니다. 당연한 것이긴 합니다만, 지난 상승장 기간이었던 2019년~2022년에는 논밭 한가운데 위치한 나홀로 아파트 입지가 아닌이상, 대부분 청약완료가 되었었지요. 그리고 모두가 똑같이 말씀하십니다. "분양가가 비싸다." 네. 맞습니다. 분양가가 비쌉니다. 그런데 한 번 생각해 봐야 할 것은 물가의 상승입니다. 보통 분양가는 주변 아파트 시세를 기준으로 1차적인 기준이 선정되고, 앞으로의 발전가능성으로 2차적인 기준이 산정됩니다. 그리고 준공시 까지의 물가상승률을 고려한 뒤에, 시공사의 마진을 추가합니다. 여기서 문제가 "물가상승률" 입니다. 이미 원자재 가격과 인건비가 ..

부동산 2023.04.11 0

[스프링부트] 레퍼런스 문서는 필수품

스프링부트 개발을 하다보면 스프링부트 버전별로 조금씩 달라지는 것들이 있다. 내가 겪었던 문제를 예를들면, 스타터 + 자동설정이 되도록 만든 라이브러리(maven프로젝트)를 AutoConfigure 에 등록하는 것. 2.X 버전까지는 META-INF/spring.factories 파일에, org.springframework.boot.autoconfigure.EnableAutoConfigration = [추가할 클래스 전체경로] 이런식으로 해줬었다. 그런데 이게 스프링부트 3 버전 부터는 변경된 걸 모르고 그대로 했더니, key is not supported as of Spring boot 3... 이런 에러가 발생한다. 레퍼런스 문서에서 'auto-configuration' 관련 키워드로 급하게 찾아보니..

Web Technology 2023.04.05 0

[Rust] 윈도우 환경에서 컴파일 실패 : linker link.exe not found

문제 아래는 Rust의 Hello world 출력 코드이다. fn main() { println!("Hello, world!"); } MS윈도우 환경에서, 이것을 cargo run 명령을 통해 실행해보려고 하는데 아래와 같은 에러를 만나게 될 때가 있다. error: linker link.exe not found 원인 Rust컴파일러는 MS윈도우 용 실행파일을 만들어내기 위해 MS Visual C++ Build Tools 를 사용한다. link.exe 는 컴파일된 오브젝트파일을 라이브러리들과 링크 시켜주는 빌드 툴의 하나. 그런데, 어떤 이유에서인지 이게 설치가 안된 상황이라면 이런 에러가 발생한다. Compiling helloworld v0.1.0 (C:\Users\DELL\helloworld) err..

[Rust] main함수에서 test function 호출하는 방법?

Rust에서는 unit test 를 위해 #[cfg(test)] 및 #[test] 와 같은 annotation을 사용한다. 아래와 같이 tests라는 모듈에 #[cfg(test)] 를 붙여주면, 해당 모듈은 test 를 위한 모듈이라고 선언하는 것과 같은 의미. 그런데 이걸 main 함수에서 호출할 수 있을까? main 함수에서 tests 모듈안의 open_door 함수를 호출하는 방법이 있을지 알아보았다. #[derive(Debug)] struct Door { is_open: bool, } impl Door { fn new(is_open: bool) -> Door { Door { is_open } } } trait Openable { fn open(&mut self); } impl Openable fo..

인기 글

[리눅스/Vi] vi editor 문자열 치환(replace) 방법

개요 리눅스 환경에서 코드를 작성하다 보면, 종종 vi editor 혹은 vim editor를 사용해서 코드의 특정 단어를 다른 단어로 교체(replace) 해야 하는 상황이 종종 있다. 즉, 특정 문자열을 치환해야 하는 경우이다. 예를들면, 현재 소스코드 파일에서 'apple_result' 이라는 변수를 모두 'melon_result' 라는 변수로 바꾸어야 하는 상황 같은 것 말이다. 상황에 따라 아래와 같은 몇가지 방법이 있다.우선 ex모드로 진입해야 한다. 1. 현재 문서를 편집중인 '편집모드'라면, 키보드의 ESC 키를 눌러 편집모드에서 명령모드로 나온다.2. 콜론(:)을 눌러 ex모드로 진입한다.3. ex모드에서 아래와 같은 방법들 중, 자신의 상황에 맞는 방법을 선택해 수행하면 된다. 혹시, ..

Linux 2017.06.27 1

[리눅스/Vi]Vim, Vi, GVim 에서 '작업 취소(Undo)' / '다시 하기(Redo)' 방법

Vi (Visual Display Editor) 리눅스나 유닉스를 처음 접하는 사람에게 vi는 매우 골치아픈 존재일지도 모릅니다.윈도우환경에서 문서 편집기를 써 본 사람이라면, vi는 매우 불편한 편집기로 생각 될지도 모르죠.그러나 vi 편집기에 익숙해지면 이보다 좋은 문서 편집기는 없다는것을 느끼게 될 것입니다. 문제는 익숙해지는데 오래걸려서 그렇죠(...먼산...) 만약 당신이 윈도우에 익숙한 사용자라면, 텍스트 에디터에서 무언가 잘못된 입력을 한 경우, Ctrl+Z 로 간단하게 그 잘못된 입력을 되돌릴 수 (Undo) 있다는걸 알고 있을것입니다. 리눅스에서 기본적으로 사용하는 Vi에디터 에서도 동일한 기능을 제공합니다만, 단축키가 다릅니다.방법을 알아봅시다. 이하 존칭은 생략합니다. 작업 취소만약 ..

Linux 2012.04.18 0

현대HT imazu 월패드 시간, 날짜 맞추는 방법

살고있는 9년차에 접어든 아파트단지 변전실 및 전기관련 점검이 진행되는 날이었다. 2주전부터 사전 공지됐던 대로, 아파트 단지 모든 동이 정전되었다. 공용공간의 엘리베이터부터, 각 세대내의 전기들까지. 약 3시간이 지난 후, 전기는 들어왔다. 그러나 월패드의 시간, 날짜는 1월1일로 초기화. 날씨, 온도 등의 정보도 비정상적으로 표시. 어라? 싶어서 대충 월패드를 만져보니 시간이나 날짜 설정하는 메뉴가 없다! 보통 이런 경우는 관리실/기계실 어디쯤 설치-운용 되는 중앙 서버로부터 날짜/시간/날씨 정보를 받아 표시하는 것으로 추정할 수 있다. 엘리베이터 호출기능도 안되는 걸로 미루어보아, 전기 복구 후 관리실측에서 해당 서버를 다시 기동시키지 않은 것으로 추측된다. 따로 관리실에 연락은 하지 않았다. 다른..

베란다에 전기 콘센트 만들기 (feat. 전동 빨래 건조대)

2015년 지어진 평범한 33평 아파트. 안방 앞 베란다에 전동 빨래 건조대는 설치되어 있다. 그런데 콘센트가 없다. 빨래 건조 전용으로 베란다를 사용하고자 제습기를 가져다 놓았는데, 꽂을 전기가 없네? 안방 콘센트에서 멀티탭으로 전기를 끌어와 빨래를 건조시키곤 했지만, 전선때문에 샷시문을 꽉 닫을 수 가 없으니 불편함이 이만저만이 아니었다. 전선두께만큼 열린 샷시문 틈으로 들어오는 제습기의 소음과, 여름에는 빠져나가는 에어컨의 냉기. 그리고 겨울에는 슬금슬금 밀려들어오는 추위. 그래서 베란다 벽에도 콘센트를 만들어 보기로 했다. 전기는 천장의 전동 빨래 건조대의 것을 따내어(분기시켜) 콘센트로 만들면 될 것으로 판단했다. ⚠ 전기 작업전 반드시 차단기 내리기! ⚠ 본인이 피카츄 출신이거나 토르 출신이면..

[네트워크/C] sockaddr, sockaddr_in, sockaddr_un 구조체 - 소켓 주소 정보를 나타낸다

기본 지식'Socket Address Structures' 에 관해서 설명하는 글이다. 리눅스/유닉스 시스템에서는 소켓(socket)의 통신 대상을 지정하기 위해 '주소(address)'를 사용한다. 이 '주소' 라는 것을 저장하거나 표현하는데 사용하는 구조체가 바로, 본 포스팅에서 설명하고자 하는 'struct sockaddr' 이다. bind( ), connect( ) 와 같은 함수들이 2번째 매개변수로써 바로 이 'struct sockaddr' 을 받는다. 이 struct sockaddr은 기본 형태이고, 주소체계(Address family)값에 따라서 구조체를 형변환 해서 사용하면 편리하다. 즉, 일반적으로 개발을 하다보면 struct sockaddr_in, struct sockaddr_un, s..

C 2017.06.14 1

[GPS 이야기] NMEA-0183 형식, NMEA Sentence Format

만약 당신이 GNSS와 직접적으로 관련된 일을 한다면. 혹은 간접적으로 GPS등과 같은 것을 통해 얻은 위치정보등을 다뤄야 할 일이 있다면. 조만간 'NMEA' 라는 것을 마주하게 될 수도 있다. 위치정보라는것은 어떤 목적으로 활용하느냐에 따라 다뤄야 하는 데이터는 달라진다. 현재 위치에 기반하여 날씨정보를 보여주는 어플리케이션처럼 간단히 위도, 경도만 알면 되는 경우가 있는가 하면, 목적지까지 경로를 알려주는 내비게이션 어플리케이션처럼 때로는 위도, 경도 뿐만아니라 속도, 위치정확도 오차값, 방향.. 등을 알아야 하는 경우도 존재 한다. 또한 종종 등산 트래커 어플리케이션처럼 고도를 활용하는 경우도 있다. 사실 고가의 GPS가 아닌 이상, 스마트폰과 같은 저렴한 GPS칩이 주는 고도값은 부정확하다고 알..

GPS 이야기 2017.08.10 6

[네트워크/C] getaddrinfo 함수

개요 getaddrinfo는 domain address를 받아서 네트워크 주소 정보(IP address)를 가져오는 함수이다. 예를들면, http://www.google.co.kr라는 domain address가 있는데, 이 주소는 사람이 알아보기 쉬운 주고이긴 하지만, 컴퓨터는 이 주소를 가지고 해당되는 구글의 서버를 찾아가지 못한다. 그래서 이 domain address와 대응되는 IP주소가 무엇인지를 알아 낸 뒤에 그 IP주소로 연결을 해야한다. 즉, Domain address -> IP address 변환을 하고 싶을 때 사용하는 함수라는 뜻이다.이걸 전문용어로 DNS (Domain Name System/Service) resolving 이라고 한다. getaddrinfo 함수는 총 4개의 매개변..

C 2017.06.16 0

PotPlayer 포터블(무설치) 무광고 버전 (v1.7.21566)

다음 팟 플레이어의 무설치 및 무광고 버전입니다. 귀찮은 광고를 생략할 수 있으며, 설치없이 사용할 수 있습니다. Download Link (PotPlayer_v1.7.21566 포터블, 광고없는 마지막 버전) https://www.mediafire.com/file/5w30led714hx9ng/PotPlayer__v1.7.18958.7z/file PotPlayer _v1.7.18958 www.mediafire.com 관련 링크 Official Page http://tv.kakao.com/guide/potplayer Official Forum Dev 에디션 영역 : http://cafe.daum.net/pot-tool/AZMV Public 에디션 영역 : http://cafe.daum.net/pot-too..

NULL ptr 2022.01.08 0

[GPS 이야기] TTFF와 Almanac, Ephemeris 그리고, GPS의 start 방식, Cold start/Hot start/Warm Start ?

여기서는 GPS에 대해 이야기를 해볼까 합니다.GPS는 Global Positioning System의 약자인 것은 널리 알려진 내용인데요. 오늘은 GPS의 이야기를 시작하기에 앞서, 몇가지 용어를 알아볼까 해요. TTFFTTFF(Time To First Fix)란 GPS 수신기의 전원을 켰을 때 GPS 수신기가 현재 위치를 파악하는 데까지 소요되는 시간을 뜻하며, 상황에 따라 Factory Start, Cold Start, Warm Start, Hot Start로 구분됩니다.TTFF를 이해하기 위해서는 먼저 Almanac 데이터와 Ephemeris 데이터에 대하여 이해할 필요가 있습니다.지상의 여러 부 관제국에서 GPS 위성신호를 항시 관측하여 그 데이터를 주 관제국으로 보내고, 주 관제국에서는 그 데..

GPS 이야기 2017.04.13 2

[Rust] 윈도우 환경에서 컴파일 실패 : linker link.exe not found

문제 아래는 Rust의 Hello world 출력 코드이다. fn main() { println!("Hello, world!"); } MS윈도우 환경에서, 이것을 cargo run 명령을 통해 실행해보려고 하는데 아래와 같은 에러를 만나게 될 때가 있다. error: linker link.exe not found 원인 Rust컴파일러는 MS윈도우 용 실행파일을 만들어내기 위해 MS Visual C++ Build Tools 를 사용한다. link.exe 는 컴파일된 오브젝트파일을 라이브러리들과 링크 시켜주는 빌드 툴의 하나. 그런데, 어떤 이유에서인지 이게 설치가 안된 상황이라면 이런 에러가 발생한다. Compiling helloworld v0.1.0 (C:\Users\DELL\helloworld) err..

TCP Flags: PSH 그리고 URG

개요TCP헤더를 들여다 보면, 1비트 짜리 플래그가 몇개 있다. 1비트로는 0 아니면 1 만을 나타낼 수 있기 때문에, 플래그는 태생적으로 boolean type 이다.이 플래그들은 TCP연결을 통하는 데이터의 흐름을 조절 및 제어 하기 위해 사용된다고 알려져 있다. RFC 3168 에 의해 혼잡 통지(Congestion Notification)을 위해 추가된 CWR 그리고 ECE 플래그를 제외하고나면, 총 6개의 TCP 제어 플래그가 남는다.일단 CWR과 ECE는 논외로 하자. Data Offset 다음을 보면, 6개의 플래그, URG, ACK, PSH, RST, SYN, FIN 이 보인다. 그 중, 아래 4개는 TCP연결의 설정(establish), 유지 관리(management) 및 분리(tear-..

Network Technology 2017.09.29 1

[NMEA-0183] Checksum 계산 예제코드 (How to calculate checksum of NMEA-0183)

본 포스팅에서 다뤄볼 내용은 NMEA-0183 문장의 checksum 계산 방법이다.보통 GPS chip은 해석한 GPS신호를 NMEA라는 특정 형태의 프로토콜로 제공한다.NMEA 가 무엇인지에 대해서 더 자세히 알고싶다면 아래 포스팅을 참고하도록 하자. 2017/08/10 - [하드웨어 Note/GPS 이야기] - [GPS 이야기] NMEA-0183 형식, NMEA Sentence Format 위 포스팅에 나와있듯이, NMEA sentence는 $ 문자로 시작해서 * 문자로 끝난다.checksum의 계산은 $, * 의 사이에 있는 각각의 문자 하나하나를 exclusive-or (XOR) 연산 및 누적하면 된다.어떤 NMEA sentence가 주어졌을 때, "*" 뒤에 있는 16진수 두자리의 checks..

GPS 이야기 2017.08.26 0

[네트워크/C] ifreq 구조체 (struct ifreq)

관련 헤더 #include #include 설명linux에서 네트워크 장치의 설정과 관련된 대부분의 ioctl( ) 호출에 세번째 인자로 사용하는 구조체이다.참고로, linux의 ioctl( ) 호출시 첫번째 인자는 file descriptor인데, family나 type과 관계없이 어떠한 소켓 file descriptor라도 사용할 수 있다.구조체의 멤버변수는 아래와 같다. struct ifreq { char ifr_name[IFNAMSIZ]; /* Interface name */ union { struct sockaddr ifr_addr; struct sockaddr ifr_dstaddr; struct sockaddr ifr_broadaddr; struct sockaddr ifr_netmask; st..

C 2017.06.14 0

[네트워크/프로토콜] BOOTP 에 대해서. BOOTP란? BOOTP 특성?

BOOTP란? (bootstrap protocol) Bootp는 TCP/IP상에서 자동 부팅을 위한 최초의 표준프로토콜이다.디스크 장치가 없는 클라이언트를 구동시키기 위한 목적으로 개발되었다.여기서, 디스크 장치가 없는 클라이언트라고 하면, 과거 Unix머신과 연결해서 사용하던 'X터미널' 과 같은 장비쯤 되시겠다.이 터미널 장비는 디스크 장치가 없으므로, 장치의 설정정보를 저장할 곳이 마땅치 않게된다. 그러니깐, 디스크 장치를 가지고 있는 Main Unix머신이 이 정보를 가지고 있다가, X터미널이 실행되고 Unix머신에게 연결하려고 신호를 보내면, Unix머신은 Bootp 서버를 이용해서 X터미널에게 이런 정보들을 알려주게 된다.그러면 X터미널은 BOOTP클라이언트 쯤이 된다.정확하게 말하면 클라이언..

Embedded Linux 2016.12.30 1

[네트워크/C reference] inet_pton 함수

기능 요약 (Summary)inet_pton( ) 함수는 사람이 알아보기 쉬운 텍스트(human-readable text)형태의 IPv4 와 IPv6 주소를 binary 형태로 변환 하는 기능을 한다. 헤더 (Header files)이 함수를 사용하려면 다음 헤더파일을 포함시킨다. #include API 원형 (API Prototype)3개의 파라미터를 가지는 함수이다. int inet_pton(int af, const char *src, void *dst); af [input] - address family를 지정한다. src의 문자열이 IPv4 주소를 나타내는지, IPv6 주소를 나타내는지를 함수에 알린다.src [input] - 문자열 형태의 IP주소를 넣는다.dst : [output] - src를..

C 2017.11.12 0

웹 서비스 구조(feat. SpringBoot와 nginx)

스프링부트 개념 우선 스프링 부트. '스프링 프레임워크'의 사이드 프로젝트로 시작되어 만들어진 웹 애플리케이션 프레임워크다. Java를 기반으로 한다. '스프링 부트'가 등장하기 전 '스프링 프레임워크'가 먼저 등장했는데, '스프링 프레임워크'는 초기 환경 설정시 시간을 많이 할애해야했다. 그것을 문제로 생각한 이들이 사이드 프로젝트로 '스프링 부트' 를 만들었다. 즉, '스프링 부트' 는 '스프링 프레임워크' 를 기반으로 하지만, 엄밀히 말하면 다른 것이니 주의가 필요하다. '스프링 프레임워크'는 위와 같은 구조를 가지고 있다. Python을 이용한 Django, Ruby를 이용한 Ruby on Rails, Javascript를 이용한 Node.js 이 있다면, Java 개발자들은 스프링(=스프링 프레..

Web Technology 2023.04.24 0

[C#] C#.net에서의 시리얼통신 기초

C#.net에서의 시리얼통신 기초 C#은 시리얼 통신에 대한 모든것을 개발자가 구현할 필요 없이 매우 쉽고 간단하게 사용할 수 있는 객체를 지원한다. 그것은 System.IO.Port namespace에 포함되어있는 System.IO.Ports.SerialPort 인데, Visual Basic 6.0 에서 지원하던 Comm 컨트롤과 매우 유사해 사용은 간단했다. 참고로 이 글은 .net framework 3.5 기준으로 작성됐다. 객체 생성SerialPort 객체를 Form에 끌어넣어주면 된다.SerialPort 객체는 Device Components 에 있다. 아래 그림을 참고하자. 또한, 아래와 같이 namespace 추가가 되었는지 코드를 확인해보고, 안되어있다면 추가하도록 한다. using Sys..

C# 2017.04.18 3

풀업 저항, 풀다운 저항 (Pull-up, Pull-down)

풀업 저항, 풀다운 저항 (Pull-up, Pull-down) - 입력단 회로MCU나 임베디드 시스템을 구성할 때, 입력부분을 설계해야 하는 경우가 있다. 여기서 입력 부분이라 하면, 버튼이나 스위치 같은 물리적인 입력이 발생하는 부분을 말한다. 이때, 풀업 (Pull-up) 저항을 달거나 풀다운(Pull-down) 저항을 달게 된다. 왜 그런지 이유를 알아보자. 이 저항이 무슨 목적을 가지고 있는지를 이해하면 된다. 그리고 더 나아가, 이 저항을 얼마짜리를 달아야 하는지, 저항값 계산 방법을 알아보자. 플로팅 상태풀업 / 풀다운이 왜 필요한지를 이해하려면 먼저 플로팅(Floating) 상태라는 것을 알면 쉽다. 플로팅은 '떠있다, 부유하는, 유동적인' 등의 뜻이다. 디지털회로에서 플로팅 상태 라고하면,..

Basis Circuit 2016.12.16 0

Register Allocation

Register Allocation은 virtual register를 physical register에 대응시키는 과정입니다. 이 과정에는 두가지 과정이 필요한데, 첫째는 interference graph, 둘째는 register coloring입니다. 어떤 두 register가 동시에 live하면 같은 physical register를 할당할 수 없습니다. 그리고 이런 상태를 두 register가 interfere한다고 표현하죠. 이렇게 register를 graph의 vertex로, interfere하는 두 register를 edge로 연결하여 표현하는 graph를 interference graph라고 합니다. 이것은 liveness analysis를 통해서 구해낼 수 있습니다. register col..

Compiler 2011.12.17 0

[우분투 16.04] 32bit library를 64 bit 우분투 16.04에 설치하는 방법

개요우분투라는 운영체제는 32 bit CPU용 버전과 64 bit CPU용 버전이 제공된다.그런데 종종, 32bit 용으로 빌드 된 실행파일을 64 bit 용 우분투에서 실행시켜야 하는 경우가 있다.그리고 우분투 12.04 LTS의 64bit 버전에서는 꼼수로써, ia32-libs 라는 패키지를 제공해서, 32bit용 실행파일을 실행 시킬 수 있도록 했었다. 그러나 우분투 16.04 에서는 ia32-libs 패키지가 deprecated 처리가 되었다.그 이유는 MultiArch를 사용하도록 유도하기 위해서 인 듯 싶다. 하지만 방법이 있다.아래와 같은 순서로 MultiArch를 설치하고, 32 bit 용 실행파일을 우분투 16.04 의 64bit 버전 에서 실행되도록 할 수 있다. i386 아키텍쳐 활성..

Linux 2017.12.13 0