2019/03 44

[Python] Modbus CRC16 파이썬3 예제 코드

C언어로 구현되어 있는 Modbus CRC16 코드는 아래의 링크를 참고하면 된다. http://www.modbustools.com/modbus_crc16.htm 이 코드를 파이썬으로 포팅해야하는 이유가 생겨서 CRC16을 파이썬3에서 구할 수 있도록 코딩하였다. 상세한 내용은 코드를 참고하길 바란다. # This code is ported from modbus CRC16(https://www.modbustools.com/modbus_crc16.htm) crcTable=[0x0000,0xC0C1,0xC181,0x0140,0xC301,0x03C0,0x0280,0xC241,0xC601,0x06C0,0x0780,0xC741,0x0500,0xC5C1,0xC481,0x0440,0xCC01,0x0CC0,0x0D80..

[맥북] Mac OS 단축키 모음

다시금 맥북을 쓰기 시작하여, 단축키를 외우고자 포스트를 작성한다. 1) 일반적인 단축키 종류 Mac OS 윈도우즈 한영전환 ctrl+space 한영키 창 닫기 cmd + w alt + f4 프로그램 종료 cmd + q alt + f4 모든 창 닫기 cmd + opt + w win키 + D 삭제 cmd + del del 시스템 종료 cmd + opt + esc ctrl + alt + del 새로고침 cmd + r ctrl + r 복사 cmd + c ctrl + c 잘라내기 cmd + x ctrl + x 붙여넣기 cmd + v ctrl + v 실행 취소 cmd + z ctrl + z 모두 선택 cmd + a ctrl + a 2) 유용한 기능 종류 Mac OS 윈도우즈 마지막으로 닫은 탭 열기 shift +..

[JS] Javascript를 이용하여 HTML 주석 지우기 / 숫자 콤마 넣기

1. HTML 주석 지우기 자바 스크립트로 HTML 엘리먼트의 값을 받아 올 때, HTML 주석이 같이 들어있는 경우가 있다. 이때 HTML의 주석을 정규식을 이용하여 효과적으로 제거한다. function rmComment(str){ return Number(str.replace(/(]+)>)/ig, "").replace(/,/ig, "")); } 2. 숫자 comma 넣기 자바 스크립트로 숫자를 입력할 때, 1000단위에서 comma를 넣어주는 경우를 정규식을 이용하여 수행한다. function commify(n) { var reg = /(^[+-]?\d+)(\d{3})/; n += ''; while (reg.test(n)) n = n.replace(reg, '$1' + ',' + '$2'); retu..

[JS] CORS 이슈 Access-Control-Allow-Origin 문제 해결하기

CORS 이슈 Access-Control-Allow-Origin 문제 해결하기 CORS 크로스 도메인 이슈 AJAX를 이용하여, 다른 API의 데이터를 가져오려고 할 때, 갑자기 나타나는 에러이다. 정확한 원인은 알아보지 않아 잘 모르겠지만, 아무튼 같은 URL에서만 호출을 하도록 강제하는 정책이다. 아마도 브라우저 단에서 처리하는 것 같다. 해결 방법 아무튼 그런건 모르겠고, 해결방법은 여러가지가 있다. 1) 브라우저의 옵션으로 처리하기 2) 크롬 플러그인을 설치하기 3) 트릭 사실 1~2번 방법이 의미가 없는게, 웹 서버 사용자에게 ActiveX처럼 설치하라고 강요할 수 없기 때문. 아무튼 해결 방법은 이렇게 하면 된다. !!! JQUERY는 필수, 아직 시간이 없어서 JS만으로 처리하는 방법을 안찾..

[JS] 구글 맵을 이용하여, 주소를 Geolocation(위도, 경도)로 바꾸기

구글 맵을 이용하여, 주소를 Geolocation(위도, 경도)로 바꾸기 웹 개발을 하다보면, 지도에 위치를 찍어야할 때가 있다. 그런데 이 주소라는게 사람마다 쓰는 방식이 제각각이다. 예를 들어 서울특별시가 표준이지만 서울시로 쓴다던지, 어떤 사람들은 아예 상세 주소를 쓰지않는 경우가 있다. 이런 문제를 한방에 해결해주는게 Geolocation인데, 사실 문제는 주소를 어떻게 Geolocation으로 바꾸는지 사실 그것도 문 제다. 그리고 주소를 바꾸는 과정에서 가장 유사한 위치 정보를 autocomplete (자동완성)해주는 기능도 있으면 더 좋지 않을까? 이런 문제를 해결하는데 구글 맵이 최고다. 구글 맵에서는 다양한 기능을 제공하는데 그중 위치(Place) 라이브러리를 이용하면, 손쉽게 해결할 수..

[컴퓨터] LG P22(P220) 노트북 배터리 교체하기 / 분해

두,세 달 전 LG P22 (P220) 노트북의 배터리가 갑자기 부풀어올랐다. 대충 2년 가까이 노트북을 쓰지 않은 상태에서, 부팅을 하는데 (하드디스크라 느림) 플라스틱이 다 부서지는 소리를 내며 배터리가 부풀어 오르는데 너무 깜짝놀랐다. 사실 노트북 사양은 물론이고 디자인이나 디스플래이도 꽤나 준수한 편이라 SSD로만 교체해서 사용할 예정이었다. 그런데 갑자기 부풀어 올라버리니 중고가보다 수리비가 더 많이 나오는 상황이 되어버렸다. 처음에는 굉장히 당황했으나 알고보니 해당 모델은 배터리 스웰링 현상으로 리콜을 시행한 상태였고, 다행이도 배터리를 무상 교체받을 수 있었다. 동일한 상황을 겪는 사람이라면, LG 서비스 센터에 노트북 명을 말하고 부품을 주문한뒤 교체하도록 하자. *리콜 진행 부품이라 부풀..

일상/리뷰 2019.03.28

[서버] 우분투 아파치 가상호스트 및 프록시 설정

프록시를 모른다면? [웹 서버] Proxy 서버와 Forward, Reverse 프록시 오늘 드디어 인터넷이 연결되면서, 고정 아이피를 받았다. 그래서 근 2주간 끊겨있던 웹 서버와 기타 서버들을 가동했다. 물론 컴퓨터는 달랑 2대인데 돌려야할 웹 사이트는 여러개고 추가적으로 몇 도메인을 구매하여 계속해서 늘릴 예정이라서, 반드시 한 컴퓨터에 여러 웹사이트를 운영해야한다. 학부 과정일 때(물론 가르쳐준 사람이 없지만..), 80번 포트 == 웹 서버 포트라고 생각해서 항상 1대에 1 사이트만 운영될 수 있는줄 알았다. 물론 깨달은지는 좀 꽤 지났지만, 추가적으로 사용하기 위해 "별도의 노력"이 필요한 상황이 그닥 달갑지 않아서 1 컴퓨터 1 서버를 고수했다. 아무튼 각설하고, 한 컴퓨터에서 여러 서버를 ..

[라즈베리파이] USB 컨버터(RS485/RS232)를 이용한 시리얼 통신 읽/쓰기 파이썬 예제

라즈베리파이(Raspberry pi / RPi)에 USB TTL 컨버터(RS485/RS232)를 이용하여 시리얼 통신하는 예제 코드를 작성하여 둔다. 우선 컨버터를 이용하기 때문에 결국 프로토콜이 RS232이든 반이중 RS485이든 결국 라즈베리파이에 들어오는 것은 serial임을 기억해야 한다. (USB를 안쓰고 TTL 기반의 컨버터를 써도 결과는 똑같다. 다만 GPIO를 이용하는것 차이이다.) USB를 통하여 통신하는 경우, Java의 RXTX 라이브러리나 파일 자체(리눅스는 모든 장치를 파일로 처리하므로 /dev 안의 파일)를 읽,쓰기 해도 무방하다. 하지만 Python을 이용하는 것이 별도의 라이브러리를 설치하지 않고 딱 좋은 것 같다. 따라서 Python의 PiSerial를 이용한 예제 코드가 ..

[아두이노] 두개의 아두이노 사이의 RS485 통신

아두이노 우노를 이용해서 RS485 통신하는 방법을 설명하고자 한다.RS485의 물리계층(1계층)이 어떻게 동작하는지는 정확한 프로토콜을 찾아보지 않았으나, 반이중통신으로 아두이노에서 Serial을 이용하여 통신을 할 수 있다. RS485는 P, N(A, B)의 두 개의 링크로 기기간 연결되며, 64개의 장치까지 한번에 연결할 수 있다고 알려져있다. 또한 4000피트까지 연결 가능하다고 하니, 원격지의 장치에서 데이터를 뽑아오는데 유용하다. 대충 검색을 해보니, TTL to RS485 모듈을 이용해서 통신을 한다. 나는 천원 내외인 MAX485가 장착된 컨버터를 이용했다. 더 검색을 해봐야겠지만 직접 A, B 링크를 읽거나 쓰는 것이 가능한 것 같아보이는데, 정확한 내용은 직접 확인하기 바람. (RS48..

[리뷰] ip 타임 기가비트 랜카드 구매, 설치기 (WoL : Wake on Lan)

최근 몇일간 네트워크를 구성하면서, 내부망과 외부망을 구분해야겠다는 생각을 했었다. 물론 내,외부망 전체를 기가비트(1Gbps)로 구성하면 너무나도 좋겠지만, 사무실에 설치한 오피스넷은 100Mbps의 광랜이라 사실상 100M 랜카드를 써도 상관이 없었다. 하지만 내부망의 웹, 디비 서버 그리고 AOJ의 채점서버들 나중에 더 추가될 서버간의 통신을 위해서 기가랜카드를 설치하기로 마음먹었다. 사실 요즘 구매한 대부분의 컴퓨터들은 기가비트랜을 이미 메인보드에서 내장하고 나온다. 대략적으로 인텔의 i 패밀리 시리즈 이후부터는 기가비트랜이다. 하지만 채점서버와 보조 웹 서버로 사용하는 ASUS G501JW는 100M 랜카드를 쓰고있다. 채점서버는 E8400 CPU 모델로 굉장히 옛날 컴퓨터이고, 무슨 이유인지는..

일상/리뷰 2019.03.21
페이스북으로 공유카카오톡으로 공유카카오스토리로 공유트위터로 공유URL 복사