HTTP로 서버에 요청하고 응답 값을 다시 dictionary로 변환하려는데 아래와 같이 제대로 변환이 안되는 문제가 발생하였다. raise JSONDecodeError("Expecting value", s, err.value) from None json.decoder.JSONDecodeError: Expecting value: line 1 column 11 (char 10) 리턴된 문자열은 다음과 같았다. "{\"status\":False}" Json.loads 함수로 Dictionary로 변환하려는데 형 변환이 제대로 안되어서 발생하는 문제로 해당 값에서 false로만 변경되면 문제가 해결된다. 이것을 해결하기 위해 아래와 같이 코드를 구성하였다. def convertBoolToLowerString(s): result = '' strings = s.split(',') for item in strings: items = item.split(':') if len(items) == 2: val = items[1].strip() if val == 'False' or val == 'True': val = val.lower() items[1] = val item = items[0] + ':' +items[1] # print(item) result = result + item + ',' if len(result) > 1: return resu...
파이썬(Python) PyQt가 테스트 및 검증 프로그램 짜기 참 좋은 것 같다. 최근 PyQt라는 것 공부하면서 실제 개발 중인 제품의 테스트 및 검증용으로 작업하고 있다. 이러면서 파... blog.naver.com 17년도에 PyQT5를 이용해 테스트 프로그램을 제작한 적이 있다. 당시에도 몇 가지 아쉬운 점을 제외하곤 상당히 만족스러웠던 기억이 있다 하지만 이 이후로 PyQT보단 쭈욱 C#을 이용한 것 같다. 뭐 특별한 이유가 있었던 것은 아니고 그냥 윈도우 어플은 C#이 가장 안정적이라는 생각 때문이었던 것 같다. PySide6는 일부 클래스명이 좀 다른 것 외에는 전반적으로 PyQT5와 사용상 큰 차이점은 느끼지 못했다. 아마도 쓰는 게 고만고만해서 그런 것이 아닐까 싶기도 하고 요 며칠 사용해 보니 오히려 작업성은 C#보다도 나은 것 같다는 생각이 든다. 고만고만한 것만 쓰고 C#도 고만고만한 윈폼만을 고집하고 있어서 그런 것이 아닐까 싶기도 하다.... 고만고만... 그리고 17년도만 해도 PyInstaller의 라이브러리 종속 문제들로 EXE 파일 만들어 배포할 때 엄청 고생했던 기억이 있는데 지금은 이것마저도 좋아져 상당한 매력을 느끼게 된 것 같다! 쓰고이!!! Electron으로 생산용 테스트 프로그램을 만들고 난 소감. 우선 Electron 프로젝트는 약 4년 전 오프라인 스터디를 잠깐 참여 한 적이 있는데 그...
위와 같이 커스텀 팝업 윈도우를 만들고 해당 윈도우를 실행 후 '저장' 혹은 '저장 안 함' 버튼을 눌러 종료할 되었을 때 부모 윈도우가 확인하는 방법이다. 우선 아래의 코드는 위에 보이는 커스텀 팝업 윈도우 코드이다. 클래스명은 Popup from PySide6.QtCore import Qt, QCoreApplication from PySide6.QtWidgets import QDialog from ui.popup import Ui_popup class Popup(QDialog, Ui_popup): def __init__(self, *args, obj=None, **kwargs): super(Popup, self).__init__(*args, **kwargs) self.setWindowFlags(Qt.FramelessWindowHint) self.ui = Ui_popup() self.ui.setupUi(self) ''' 이건 나중에 다시 얘기하기로 하고 패스! if obj is not None and isinstance(obj, PopupArgs): self.ui.lbl_title.setText(obj.title) self.ui.lbl_msg.setText(obj.msg) self.ui.btn_yes.setText(obj.yes) self.ui.btn_no.setText(obj.no) ''' self.result = False # ...
다음은 PySide6에서 윈도우 타이틀 바(Title Bar)를 없애는 코드이다. from PySide6.QtCore import Qt # <- setWindowFlag에 사용할 상수용 클래스 임포트 from PySide6.QtWidgets import QMainWindow from ui.systeminfowindow import Ui_SystemInfoWindow class SystemInfoWindow(QMainWindow, Ui_SystemInfoWindow): def __init__(self, *args, obj=None, **kwargs): super(SystemInfoWindow, self).__init__(*args, **kwargs) self.setWindowFlag(Qt.FramelessWindowHint) # <- 이 녀석이 타이틀 삭제하는 코드 self.ui = Ui_SystemInfoWindow() self.ui.setupUi(self) self.ui.btn_close.clicked.connect(self.btnClose) def btnClose(self): self.close() setWindowFlag에 FramelessWindowHint 속성을 주면 된다. 굿!
우분투에서 zip 파일을 압축 해제하려는데 아래와 같은 에러가 발생하였다. 조금 검색해 보니 몇 가지 원인이 보이는데 현재 내 상황에선 다른 OS에서 압축한 것이 압축 해제하면서 문자열 처리 등에 문제가 발생한 것으로 보였다. 해결 방법은 linux 용으로 재 압축해 압축 해제하는 방법이다. # 오류 수정 $ zip -FF 210211.zip --out 210211-2.zip -fz # 압축 해제 $ unzip 210211-2.zip 이렇게 해도 안되면 아래와 같이 파이썬 라이브러리를 이용하는 것도 좋을 것 같다. import sys from zipfile import PyZipFile for zip_file in sys.argv[1:]: pzf = PyZipFile(zip_file) pzf.extractall() 위 코드를 unz.py로 저장한다고 가정하고 아래와 같이 실행하면 된다. $ python unz.py 210211.zip https://askubuntu.com/questions/86849/how-to-unzip-a-zip-file-from-the-terminal How to unzip a zip file from the Terminal? Just downloaded a .zip file from the internet. I want to use the terminal to unzip the file. What is the...
맥북 에어 M1(MacBook Air) 구입 시 꼭 애플케어 가입할 것! 안 하면 후회할 수 있음! 지난번 직원이 사용할 목적으로 맥북 에어 M1 CTO 골드 버전을 구입하였었다. 그런데 얼마 전 아래의 ... blog.naver.com 얼마 전 애플 케어 가입 권유(?) 글을 올린 적이 있었다. 그 이유를 글에도 남겼지만 애플 케어를 가입하지 않았다가 정말 큰 후회를 하게 되었다. 설마 쉽게 망가지겠어 하고 애플 케어를 가입하지 않았는데... 그러니까.... 그게... 나에게도 쉽게 일어나 버린 것이다. 결국 나는 아니겠지라는 안일한 생각이 화를 부른 것이다. 아무튼 실제 애플 케어 없이 LCD를 교체 수리하려면 약 50만 원까지 들 수 있다고 한다. 좀 쎄다 싶었지만 어쩔 수 없이 맡기려 하다 지인이 직접 수리해서 블로그에 올리면 좋지 않을까라는 아이디어를 주셨다. 그러고 보니 이왕 이렇게 된 거 블로그 콘텐츠로도 쓸 겸 직접 수리를 하는 방향으로 결론을 내렸고 바로 알리에서 맥북 에어 M1 LCD를 구입하게 되었다. 이것이 바로 위기는 기회 아닐까! 우선 알리에서 맥북 에어 M1 용 LCD를 구입했다. 134004.0₩ |2020 년 후반 새로운 A2337 LCD 디스플레이 어셈블리, Macbook Air Retina 13.3 Smarter Shopping, Better Living! Aliexpress.com ko.aliexp...
애플 맥북에어(MacBook Air) M1 CTO 골드 개봉기 회사에서 개발용으로 사용할 목적으로 맥북 에어 M1 CTO 골드를 구입하였다. 음... 내가 사용할 것은 ... blog.naver.com 지난번 직원이 사용할 목적으로 맥북 에어 M1 CTO 골드 버전을 구입하였었다. 그런데 얼마 전 아래의 사진처럼 디스플레이 부분이 깨져있는 것이었다. 직원 얘기론 특별한 충격이 없었는데 이렇게 되었다는 것이었다. 인터넷 보면 비슷하게 손상되는 글들을 종종 볼 수 있다. 글 중간에 관련 기사 링크도 하나 추가하였다. 그건 그렇고... 갑자기 애플 케어를 가입하지 않은 것이 후회스러웠다... 애플 케어를 가입했으면 1년간 약 2회까지 사용자 과실이더라도 12만 원에 수리를 해주기 때문이다. 아.. 애플 케어만 가입했어도... 설마 이게 쉽게 망가지겠어!?라고 생각했었는데... 진짜 쉽게 망가질 줄이야... 위에서도 언급했듯이 인터넷을 좀 찾아보면 신형 맥북과 맥북에어에서 이렇게 쉽게 LCD가 손상되었다는 글들을 볼 수 있을 것이다. "M1칩 탑재 신형 맥북, 이유없이 화면 손상" M1 칩을 탑재한 최신 맥북에어와 맥북프로 LCD 화면이 쉽게 깨지거나 손상된다는 지적이 제기됐다고 애플인사이더가 30일(현지시간) 보도했다.보도에 따르면 애플 관련 커뮤니... zdnet.co.kr 일단 뭐 사용은 해야 하니 애플 케어 없이 그냥 수리를 맡기기로...
회사에서 개발용으로 사용할 목적으로 맥북 에어 M1 CTO 골드를 구입하였다. 음... 내가 사용할 것은 아니고 이달부터 함께하고 있는 분이 사용할 것이다. Enter T~~~~ MI 원래 그분은 이미 맥북 에어 M1을 사용하고 있는 상태였고 처음 에어 M1을 구입할 때 맥북 프로 M1과 고민하다가 스펙상으론 큰 차이가 없어서 그냥 팬이 없는(그래서 조용한) 에어 M1으로 선택하게 되었다고 한다. 프로 M1과 코어도 같고 맥북 에어를 CTO 버전(램 16GB, SSD 512GB)으로 구입한 것이라 프로 M1의 최고급 사양 정도면 모르겠지만 그 이하라면 성능상 큰 차이를 느끼진 않을 것으로 보인다. 물론 성능 외에 외부 포트들이나 그래픽 카드 차이 정도는 있을 수 있지만 앱 개발 목적에서 봤을 땐 나쁘지 않은 선택으로 보인다. Exit T~~~~ MI 아무튼 업무용으로 맥북 에어를 쓰기로 하였고 먼저 공식 홈에서 구입하려고 보니 배송 기간에 문제가 있어 쿠팡에서 구입하게 되었다. 쿠팡에서 결제한 후 다음 날 오후에 배송이 되었다. 이것이! 맥북 에어 M1이 들어가 있는 외장 포장 박스이다. 아.. 물론 배송 시에 한 겹 더 포장되어 왔었다. 이것이 실제 제품 박스이다. 뭔지 모르겠지만... 박스에 사과 모양 하나 박혀있는 게 왜 이렇게 고급스러워 보이는지 모르겠다... 자... 그럼 개봉기를 시작해보자. 먼저 제품을 외부 오염으로부터 ...
이번에 출시한 갤럭시 워치 4(Galaxy Watch 4)를 구입하게 되었다. Enter T~~~~ MI 올해 초 갤럭시 S21 울트라를 구입하면서 처음으로 스마트워치를 사용하게 되었었다. 갤럭시 워치 액티브 2 - 50프로 할인받아 구입하다.(갤럭시 S21 울트라 사은품) 갤럭시 S21 울트라(Galaxy S21 Ultra) 사전 예약으로 구입하면서 사은품으로 갤럭시 워치 액티브 2(Ga... blog.naver.com 이전까진 몸의 무언가를 착용하는 것에 대해 상당한 거부감이 있어 시계를 구입해도 어쩌다 한번 착용하는 게 전부였다. 그러나 스마트 워치를 구입하곤 지금까지도 열심히 차고 다니는 것 같다. 열심히 차고 다니는 이유는 여러 가지가 있지만 그중 가장 큰 이유는 다음과 같다. 1. 전화를 오면 진동으로 알려준다. - 보통 전화기를 진동으로 해놓고 지내다 보니 중요한 전화를 못 받는 경우가 종종 있는데 워치를 착용하면서부터는 진동으로 바로 알려줘 이러한 문제가 해결되었다. 2. 중간중간 움직이라고 알려준다. - 일에 집중하다 보면 시간 개념이 없어져 순식간에 몇 시간이 흘러있곤 한다. 그런데 이 녀석을 차고 있으면 수시로 몸을 움직이라고 알려주니 중간중간 몸에 휴식을 줄 수 있게 되는 것 같다. Exit T~~~~ MI 아무튼 이러한 이유로 열심히 차고 다니다 보니 새로 나온 워치 4에 관심이 생겨 바로 구입하게 되었다. 두...
갤럭시 워치 액티브 2 - 50프로 할인받아 구입하다.(갤럭시 S21 울트라 사은품) 갤럭시 S21 울트라(Galaxy S21 Ultra) 사전 예약으로 구입하면서 사은품으로 갤럭시 워치 액티브 2(Ga... blog.naver.com 최근 나름 잘 쓰고 있는 기기 중 하나인 갤럭시 워치 액티브 2. 특히 한 시간 이상 앉아 있거나 전화 올 때 알림 기능과 혈압측정기는 내 맘에 쏙든다. 요즘 액티브 2 후속 모델이 곧 출시 임박인 건지 루머들이 많이 보이길래 찾아보게 되었다 여기서는 일단 하드웨어 스펙 관련해선 배제했다. 왜냐하면 삼성이 내놓는 플래그십 제품군의 하드웨어 스펙만큼은 늘 그 시기의 최상으로 출시했기 때문이다. 물론 소프트웨어는... 액티브 3가 아닌 액티브 4?? 우선 갤럭시 워치 4 출시 시 갤럭시 워치 액티브 4도 같이 출시할 것으로 보인다. 근데 좀 의아스러운 건 현재 액티브 2까지 출시되었는데 3를 건너뛰고 4로 출시한다는 것이 거의 굳혀진 듯하다. 모델 명이야 뭐 기다려보면 알듯 하고 개인적으로 3이든 4이든 명칭은 중요한 포인트는 아닌 듯 보인다. 크기 42mm, 40mm?? 크기는 기존 44mm, 40mm에서 42mm, 40mm로 최대 크기가 2mm 줄어들고 두 가지 모델 크기가 2mm밖에 차이가 안 나는 것도 특이하다. 타이젠 대신 Wear OS?? 또 타이젠 OS 대신 웨어 OS 적용이 된다는 설이 있는...
갤럭시 S21 울트라(Galaxy S21 Ultra) 사전 예약으로 구입하면서 사은품으로 갤럭시 워치 액티브 2(Galaxy Watch Active2)를 반 가격(50%)에 구입할 수 있는 쿠폰을 받았다. 그리고 굳이 없어도 되는 워치를 미래에 앱을 개발하겠다는 자기 합리화를 거쳐 지르고 말았다. 그나저나 50프로라곤 하지만 삼성 몰에서 구입하다 보니 실제 쇼핑몰 기준으로 봤을 땐 그 정도는 가격 매력이 있진 않았던 것 같다. 두둥!!! 이것이 갤럭시 워치 액티브 2이다. 구성품으론 갤럭시 워치 액티브 2 본체, 무선 충전 패드, 간편 설명서가 들어 있다. 뭐 특별히 바라는 건 아니지만 스트랩이라도 하나 더 끼어주면 좋았을 텐데 아쉽다. ㅋㅋ 크~~ 제품을 개봉하고 전원 스위치를 딱 켜보니 구입하길 잘했다...라는 생각을 받았다. ㅋㅋㅋ 사실 한 5~6년 전 LG 스마트 워치를 회사 개발용으로 구입해 잠깐 써보곤 이번이 두 번째로 스마트 워치를 써보게 된 것이다. 워치 액티브 2는 40mm, 44mm 두 종류가 있는데 그중에서 44mm를 선택하였고 색상은 "아쿠아 블랙"과 "클라우드 실버" 두 종류만 선택이 가능해 "아쿠아 블랙"으로 택했다. 쿠폰으로 구입하니 선택 폭이 좁다. 참고로 액티브 2는 "LTE 버전"과 "블루투스 와이파이 버전"이 있고 "가벼운 알루미늄(Aluminum, 30g) 모델"과 "고급스러운 스테인리스(Stain...
오랫만에 3D프린터 관련 글을 쓰는 것 같다. JLCPCB라는 회사에서 3D프린팅 서비스를 시작한 지는 좀 되었다. 하지만 우리 회사에도 놀고 있는 프린터가 5대....라 큰 관심이 없었다. 그런데 얼마 전 갑자기 일하다 말고 딴짓이 너무 하고 싶은 나머지 바람님의 STM32G4-FDCAN 보드의 케이스를 설계하였다. https://smartstore.naver.com/higenis/products/8811092758 STM32G4-FDCAN CANFD 485 CAN 통신 개발 보드 : 하이제니스 [하이제니스] 하이제니스 상점입니다. smartstore.naver.com 아무튼 어느순간 이렇게 설계를 하고나서 사무실에 놀고 있는 3D 프린터의 거미줄들을 치우고 출력을 해 봤다. 오잉! 오! 오! 생각보다 깔끔하니 나쁘지 않게 잘 나온 것이 아닌가! 갑자기 이참에 스토어에 올려 FDCAN 모듈과 같이 팔아볼까 생각도 해 봤.......지만.... 음... 음... 음... 하도 프린터들을 놀려서 그런지 이거 하나 출력하는데도 너무 고생을 하였다. 역시 뭐든 자주 써야... 암튼 그래서 포기할까 하다가 갑자기 "JLCPCB의 3D 프린팅 서비스"가 생각난 것이다. 바로 사이트에 접속해 출력물을 로려봤지만 처음으로 시도해 보는거라 몇 번의 퇴짜를 맞고서야 진행을 할 수 있게 되었다. 출력물이 워낙 작다보니 제약이 많이 발생하였다. 두둥!!...
현재 살고 있는 집 거실 화장실 세면대 배수구에 녹이 쓸어 교체를 하려고 하니 세면대 공간이 너무 협소해 몽키스페너와 같은 도구를 쓸 수 없는 상황이었다. 그래서 인터넷을 검색해 보니 아래와 같은 물건을 발견하게 되었다. 오호! 이거라면!!! 그런데... 이게 배수구 용으로는 사이즈가 작아 사용할 수 없었고 여기서 아이디어를 얻어 직접 3D 프린터로 제작해 보기로 했다. 음.. 나는 메이커!!! 대충... 요런 느낌으로다가... 자 출력!!! ... ... ... ... ... ... ... 19시간 후.... 두둥! 내부 채움을 100프로로 해 출력하였더니 시간이 너무 오래 걸린다. 하지만 정말 딴딴해 보인다.!!!! 그런데.. 역시나 쉽게 가는 법이 없다. 출력 시간이 길어서인지 수축이 생각보다 심해 공차를 꽤 줬음에도 배수구 너트와 채결이 되질 않아 사포로 한참을 갈아재꼈다... 에휴... 자! 아 어찌 되었건! 이제 진짜 완성이다!!!! 크 고놈 잘 생겼다!!!! 자 이제 집으로 고고!!! ... ... ... 덜그덕 덜그덕 푹 삐이익~ ... 끄응~~ ... ... 빠직! ... 윽!... ... 빠지직!!! ... ... 하..... 하하하... 처참하게 발렸다..... 내부 채움을 100으로 해도 출력된 층들이 버티지 못하고 그만 아작이 나버렸다. 음... 좀 두껍게 해서 다시 출력을 해볼까...??? 하다가... 일단....
엔더(Ender) 시리즈가 히트 치기 전까진 Anet 시리즈만 한 것이 없었던 것 같다.... 몇 년 전부터 쭉 엔더3를 주 프린터로 사용하다 우연히 눈에 들어온 프린터가 있었다. 그것이 Anet ET5X이다. 출력(300x300x400mm) 사이즈가 크고 오토레벨링과 필라멘트 인식기까지 포함되어 있으면서도 가격이 저렴한 것이 장점인 듯하다. 주문은 알리익스프레스에서 했고 주문한지 1주일 조금 넘어 도착한 것 같다. 요즘 알리 너무 빠름.. 이것이 Anet ET5X 패킹 박스이다. 박스를 열어보면 제품 포장이 상당히 꼼꼼하게 된 것을 볼 수 있었다. 굿굿 그리고 요즘 프린터들은 이렇게 반제품 형태로 나오는 것들이 많아 조립 부담도 줄일 수있어 좋은 것 같다. 이런건 진짜 한두 번 조림해 보면 10분도 안 돼 조립할 수 있을 것 같다. 그리고 이건 프린터 외 구성품들인데 자가 들어있는게 특이했다ㅋ 그나저나 포장을 뜯다 보니 Z 축 배드 높이 조절 나사가 하나 빠져있었는데 이건 그냥 애교로 넘어가 줄 수 있는 수준인듯 하다. 두둥! 오오 본체!!! 본체의 Z 축 배드 아래를 보면 이동 중 파손을 막기 위해 레일에 고무 빠킹(?)을 달아둔 것을 볼 수 있다. 우선 이것을 제거해야 Z 축이 움직이니 꼭 제거해야 한다. 그리고 이건 노즐 세트인데 ET5X는 오토 레벨링을 지원하고 있어 노즐 옆에 센서가 부착된 것을 볼 수 있을 것이다. 이제 ...
이번 Anet ET5X를 구입해 많은 테스트를 하고 있는데 갑자기 ET5와 ET5X 그리고 ET5 Pro에 대한 차이가 궁금해졌다. 그래서 공식 사이트에 접속 각각의 사양들을 확인해 봤다. ET5 https://shop.anet3d.com/products/anet-et5-large-3d-printer ET5X https://shop.anet3d.com/products/anet-et5x-large-3d-printer ET5 Pro https://shop.anet3d.com/products/official-anet-et5-pro-3d-printer 그리고 정리한 테이블은 다음과 같다. ET5 ET5X ET5 Pro 프린트 방식 FDM FDM FDM 색상 검정 + 빨강 검정 + 파랑 검정 구조물 알루미늄 프레임 알루미늄 프레임 알루미늄 프레임 익스트루더 개수 1 1 1 출력 사이즈 300 x 300 x 400 mm 300 x 300 x 400 mm 300 x 300 x 400 mm 출력 해상도 0.1 mm 0.1 mm 0.1 mm 레이어 두께 0.1 - 0.3 mm 0.1 - 0.3 mm 0.1 - 0.3 mm 출력 연결 장치 USB, SD 카드 USB, SD 카드 USB, SD 카드 LCD 3.5인치 터치 칼라 스크린 3.5인치 터치 칼라 스크린 3.5인치 터치 칼라 스크린 이동 속도 150mm/s 이하(권장 30-60mm/s) 150m...
PLA와 ABS를 각각 측정해 봤다. 뭐가 됐든 환기는 잘 시키는 게 좋을 것 같고 ABS는 같은 공간에서 출력 안 하는 게 안전해 보인다.
라즈베리파이 4에 안드로이드 10.0을 올릴 수 있나 보다. GloDroid라는 프로젝트(?)에서 올 위너(Allwinner) AP 계열 보드에 안드로이드 10.0 포팅을 진행하고 ... m.blog.naver.com 퇴근하기 전에 지난번 찾았던 라즈베리파이용 안드로이드 OS 10.0 이미지를 빌드하려고 소스 코드를 내려받는데 너무 오래 걸려 그냥 퇴근했다가 문득 생각이나 모바일로 원격 접속해보니 다 다운로드 된 것을 보고 빌드도 걸어봤다. 오호... 참 세상 좋아진 것 같다. 이제 모니터만 가지고 다니면서 삼성 덱스(Samsung Dex)로 코딩해도 될 듯 싶다ㅋ 어찌 됐든 제발 한방에 빌드가 되어라~~~
라즈베리파이에서 WM8960 코덱을 사용하는 대표적인 프로젝트는 다음과 같다. waveshare의 WM8960-Audio-HAT waveshare/WM8960-Audio-HAT The drivers of [WM8960 Audio HAT] for Raspberry Pi - waveshare/WM8960-Audio-HAT github.com respeaker의 seeed-voicecard 2mic hat respeaker/seeed-voicecard 2 Mic Hat, 4 Mic Array, 6-Mic Circular Array Kit, and 4-Mic Linear Array Kit for Raspberry Pi - respeaker/seeed-voicecard github.com 그리고 Asul의 음성 보드로 개발된 Asul Rpi 보드는 waveshre 프로젝트를 사용하고 있다. 라즈베리파이(RaspberryPi) Asul RPI 보드 Voice 환경 설정 Asul Jr 보드에 사용할 음성인식용 보드이다.이 보드는 WM8960 오디오와 소형 고감도 반도체 ... blog.naver.com 최근 프로젝트를 진행하면서 음원이 1개만 재생이 되는 문제를 발견하게 되었다. ALSA lib confmisc.c:1281:(snd_func_refer) Unable to find definition 'cards.bcm2835_hdmi.pcm.fr...
세번의 리비젼 끝에 드디어 생산!! 곧 업체에 납품할 녀석들이다. 이번에 좀 고생 했는데 부디 꾸준히 생산되길 바래본다.ㅋㅋ 아차!! 기능은 다음과 같다. 1. 라즈베리파이 확장 보드 - 높이 16mm Pin header 사용 2. STM32F072C8 MCU 적용 - RAM 64KB, FLASH 128KB 3. 스테레오 마이크 및 5w 스테레오 출력 - WM8960, PAM8610(최대 10W) - 앰프 추가하면서 노이즈 때문에 고생함ㅜㅜ 4. 스테레오 오디오 잭x2 - 오토 디텍트 기능 5. 다이나믹셀 제어 - XL320(7.4v), XL430(12v) 동시 제어 가능 6. ws2812b LED 3채널 - 채널당 최대 10개 7. usb qc 3.0 고속충전 - 12입력 기준 9v 충전, IP6505T 8. 소형 LCD 2채널 인터페이스 - SPI 통신 포트 9. Power On/Off 스위치 - 라즈베리파이 연동 10. DC FAN - 12V
옴니 휠과 메카넘 휠이 같은 것인지 알았는데 아래와 같이 모양새가 다르다는 것을 최근에서야 알게 되었다. https://www.superdroidrobots.com/shop/custom.aspx/vectoring-robots/44/ 위의 내용을 알기전에 작성된 해당 글에서 "옴니 휠(Omni Wheel)"이라는 이름으로 사용했지만 실제는 "메카넘 휠(Mecanum Wheel)"이 정확한 명칭이다. - 2020-07-27 추가됨. 아..... 옛날 옛날 먼 옛날...부터(약 2~3년 전) 옴니 휠을 가지고 싶다는 생각을 하고 있었지만 가격이 너무 비싸 엄두를 못 내고 있었다. 개당 몇 만 원씩 했었고 딱 용도가 있으면 구입했겠지만 그냥 가지고 싶은 충동만이라.... ㅋ 그렇게 눈팅만으로 만족을 하며 지내다가 어느 순간부터인가 나름 저렴한 휠들이 나타나기 시작했다. 아무래도 교육용으로 만들면서 가성비에 집중해 만든 것이 아닐까 싶다. 그래서 마음먹고 질렀다. ㅎㅎ 짜잔! 옴니 휠만 구입한 것이 아니고 RC 키트로 구입했다. 우선 구성품을 봐보자. 60mm(2.3inch) 옴니 휠 네 개, TT 모터 네 개(개당 약 1불짜리), 메탈 바디 프레임, 모터 및 휠 조립용 나사와 가이드 이런 구성을 20불 초반에 구입할 수 있는 것이다. 심지어 옴니 휠은 기대 이상이다. 이래서 "알리 알리 하는구나" 싶었다. 일단 맛보기로 옴니 휠과 모터를 가...
LVGL이 저사양 리눅스에서도 꽤 유용할 것 같아 자료를 수집 중이다. 테스트 환경 Windows: 10 Pro git: 2.33.0 Visual Studio: 2019 LVGL을 윈도우에서 데모를 돌려보자. 데모를 돌리기 위해선 먼저 테스트 환경과 같이 Git,과 Visual Studio가 설치되어 있어야 한다. 먼저 아래의 명령을 명령어 창을 띄어 데모 프로젝트 소스 코드 한 번에 내려받자. > git clone --recurse-submodules https://github.com/lvgl/lv_sim_visual_studio.git 이제 다운로드한 위치로 이동해 LVGL_Simulator.sin를 실행한다. 그러면 Visual Studio가 실행이 될 텐데 아래와 같이 플랫폼을 자신의 CPU에 맞게 변경해 준다. 요즘은 보통 64비트이니 x64로 변경하면 된다. 이제 빌드 해 실행하면 된다. (키보드 F5) 오호! 예전에 ESP32-S3 4.3인치(800x480)에 기본 설치되어 있던 화면과 동일한 화면이다. ESP32-S3 800x480 자료 특징 ESP32-S3 (Dual Core 최대 240Mhz) PSRAM: 8MB Flash: 16MB BLE 5.0/Wifi 지원 ... blog.naver.com
OpenCV를 Visual Studio 2019(비주얼 스튜디오 2019)에서 사용하는 방법을 알아보자. 여기선 Visual Studio 2019가 이미 설치되었다고 가정하고 진행할 것이다. Visual Studio 2019설치 방법은 아래의 링크에서 참고하길 바란다. 비주얼 스튜디오 2019 설치하기 윈도우 프로그램은 역시 C#(C Sharp)! 이라지만 이것 외에도 비주얼 스튜디오는 설치해두면 다양하게 쓰... blog.naver.com 1. OpenCV 설치 아래의 링크에서 OpenCV 라이브러리를 먼저 다운로드한다. https://opencv.org/ Home - OpenCV OpenCV provides a real-time optimized Computer Vision library, tools, and hardware. It also supports model execution for Machine Learning (ML) and Artificial Intelligence (AI). opencv.org OpenCV 사이트에서 Library를 마우스를 가져다 대고 팝업이 나타나면 Releases를 선택한다. 그냥 Library를 클릭해도 Releases 페이지로 가긴 한다. Releases 페이지가 나타나면 Windows를 선택한다. 버전 앞에 별표가 표시된 것은 최신 버전을 나타내는 것 같다. 아마도;;; 다운로드를 하려고...
Unix Time Stamp - Epoch Converter Epoch and unix timestamp converter for developers. Date and time function syntax reference for various programming languages. www.unixtimestamp.com 아래의 코드는 1970년 1월 1일 0시 0분 0초부터 지금까지 초 단위로 카운트하는 유닉스 시간을 우리가 알아볼 수 있는 년/월/일 날짜 형태로 변경하는 C 소스 코드이다. #include <iostream> #include <stdint.h> // 타임 스탬프 변수형 typedef uint32_t timestamp_t; //seconds // 데이트타임 구조체 typedef struct { uint16_t year; uint8_t month; uint8_t day; uint8_t hour; uint8_t minute; uint8_t second; uint8_t week; uint8_t weekday; } datetime_t; // 1일을 초로 #define ONE_DAY (1*60*60*24) // UTC 시작 시간 #define UTC_TIME_WEEKDAY_OFFSET (4) /* 1970,1,1은 목요일이기때문에 */ //날짜 x, 1월, 2월 ..... 11월, 12월 uint8_t month_days[...
플러터(Flutter)에서 C언어 혹은 C++로 작성된 코드를 사용하는 방법에 대해서 다뤄보자. Binding to native code using dart:ffi To use C code in your Flutter program, use the dart:ffi library (currently in beta). flutter.dev 이번 글은 위 링크 설명을 그대로 따라 해본 것이다. 플러터에서 C 코드를 사용할 때 플랫폼의 영향을 받게 된다. 여기서는 안드로이드는 동적 라이브러리를 ios는 정적 라이브러리를 사용하는 구조를 다루게 된다. 1. 프로젝트 생성 > flutter create --platforms=android,ios --template=plugin native_add > cd native_add 이렇게 프로젝트를 메인 프로젝트에 바로 추가하지 말고 플러그인(plugin) 형태로 분리해 만드는 것이 효율적이라고 한다. 2. C/C++ 코드 추가 ios와 안드로이드(android)에서 같은 C 코드를 사용하기 위해서는 ios 폴더 안에 소스코드를 작성해야 한다. 그 이유는 ios의 경우 podsepc 파일 보다 상위에 위치한 소스 파일을 포함할 수 없고 안드로이드는 위치만 지정해 주면 사용할 수 있기 때문이라고 한다. 그럼 아래와 같이 ios/Classes 폴더 위치에 native_add.cpp 파일을 생성해보자. 파일...
요즘 의도치 않게 네 대의 PC를 쓰게 되었다. 1. 맥미니 2. 윈도우 OS 데스크탑 3. 리눅스 OS 데스크탑 4. 노트북(이 녀석은 가끔...) 상황이 이렇다 보니 키보드 마우스 모니터 사용에 불편함이 많아 KVM 스위치를 쓰기로 맘먹고 하나 구입하게 되었다. KVM(Keyboard, Video, Mouse) 스위치 음... 포장박스는 일반 제품들과 다르게 좀 구리긴 하다. 뭐 제품만 좋으면 됐지... 구성품은 다음과 같다. 1. KVM 본체 × 1 2. 전환용 컨트롤러 × 1 3. USB A 케이블 × 4 4. Micro USB 케이블 × 1(스위치용) 5. USB 전원 케이블 × 1 이것이 KVM 본체 전면부이다. 여기 보이는 USB 커넥터에 함께 쓸 키보드 마우스 등을 연결하면 되고 옆에 보이는 스위치들로 화면 전환을 하면 된다. 이건 뒷면이다. 각 채널에 USB와 HDMI를 하나씩 꽂아두면 된다. 측면엔 출력용 HDMI와 USB 포트가 있다. HDMI는 모니터에 연결하면 된다. 마지막으로 이것이 전환용 컨트롤러이다. 총 4개의 버튼과 LED가 있어 현재 화면이 몇 번 인지 알 수 있어 편하다. 또 실리콘 재질이라 누르는 촉감이 나쁘지 않다. 이렇게 따로 컨트롤러가 있어서 본체를 어딘가 숨기도 써도 좋을 것 같다. 사실 이전에도 3채널 KVM 스위치를 쓰고 있었고 윈도우 데스크탑을 구입하면서 채널이 모자라 바꾸게 된 것인데...
최근 플러터 SDK를 업그레이드하고 나서 기존에 사용하던 nRF52 DFU 패키지에 문제가 발생하였다. 확인해보려고 해당 패키지 사이트로 접속해보니 더 이상 지원을 안 하고 있는 것으로 보였고 이걸 내가 고쳐 써야 하나 어쩌나 하고 있던 참에 어느 용자(?) 님께서 그 패키지를 찍어(Fork) 서 따로 관리를 해주는 것이 아닌가!!! 그렇게 다른 패키지로 갈아탔고 다행히도 소스코드 수정 없이 그대로 적용이 가능했다. 다만!! 빌드 하는데 아래와 같은 에러를 뿜는 것이 아닌가... 아... 쉽게 가는 게 없네 없어... e: C:\Programs\flutter\.pub-cache\hosted\pub.dartlang.org\nordic_dfu-3.1.0\android\src\main\kotlin\dev\steenbakker\nordicdfu\ResourceUtils.kt: (88, 15): Class 'kotlin.Unit' was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.5.1, expected version is 1.1.15. The class is loaded from C:/Users/chand/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdli...
구글 IO를 둘러보다 보니 코틀린(Kotlin Jetpack Compose)라는 녀석을 보게 되었다. Jetpack Compose | Android Developers Jetpack Compose로 더 빠르게 더 나은 Android 앱 빌드 Jetpack Compose는 네이티브 UI를 빌드하기 위한 Android의 최신 도구 키트입니다. Jetpack Compose는 Android에서 UI 개발을 간소화하고 가속화합니다. 적은 수의 코드, 강력한 도구 및 직관적인 Kotlin API를 사용하여 앱을 빠르고 생동감 있게 구현하세요. 코드 감소 적은 수의 코드로 더 많은 작업을 하고 전체 버그 클래스를 방지할 수 있으므로 코드가 간단하며 유지 관리하기 쉽습니다. 직관적 UI만 설명하면 나머지는 Co... developer.android.com Jetpack Compose basics | Android 개발자 | Android Developers In this codelab, you’ll learn the basics of Compose. developer.android.com https://developer.android.com/jetpack/compose?hl=ko 플러터의 장점인 빠른 업데이트와 코드화된 UI 구성이 그대로 적용되는 것 같다. 아직 베타 버전이지만 이제 코틀린에서도 플러터와 같은 UI 형태를 가질 수 있을 것으로 봐...
구글 안드로이드 공식 예제 코드 중 LocationUpdatesForegroundService 예제 코드를 코틀린(Kotlin)을 변경한 예제 코드이다. chandong83/android_locationupdatesforegroundservice_kotlin Contribute to chandong83/android_locationupdatesforegroundservice_kotlin development by creating an account on GitHub. github.com 해당 코드는 포그라운드 서비스(Foreground Service)를 이용해 위치 업데이트(Location Updates)를 주기적으로 시도하는 예제이다. 예제 코드를 돌려보면 위와 같이 약 5초에 한 번씩 업데이트가 이뤄지는 것을 볼 수 있을 것이다. 이전에 소개한 "Geofence"라는 앱을 앱 종료 이후에도 알림을 받고 싶다면 구글 맵을 켜놔야 하는데 이때 포그라운드 서비스에서 위치 업데이트를 하게 되면 동일한 효과를 줄 수 있다고 한다. 코틀린(Kotlin) - 지오펜스(Geofence) 안드로이드 공식 샘플 코드 코틀린 버전으로 변환한 소스코드 아래의 링크는 안드로이드 location 샘플 예제 중 자바로 작업된 "Geofence" 프로젝트를 코틀... blog.naver.com 자바로 제작된 "Location Updates Foreground...
지오펜싱 만들기 및 모니터링 | Android 개발자 | Android Developers Google은 흑인 공동체를 위한 인종 간 평등을 진전시키기 위해 노력하고 있습니다. Google에서 어떤 노력을 하고 있는지 확인하세요 . Android 개발자 문서 가이드 지오펜싱 만들기 및 모니터링 목차 지오펜싱 모니터링 설정 지오펜싱 만들기 및 추가 지오펜싱 객체 만들기 지오펜싱 및 초기 트리거 지정 지오펜싱 전환을 위한 broadcast receiver 정의 지오펜싱은 현재 위치에 관한 사용자의 인식과 관심 위치에 관한 사용자의 근접성 인식을 결합합니다. 관심 위치를 표시하려면 위도와 경도를 지정합니다. 위치 근접성을 조정... developer.android.com 아래의 링크는 안드로이드 location 샘플 예제 중 자바로 작업된 "Geofence" 프로젝트를 코틀린으로 변경한 것이다. chandong83/location-samples-geofencing-for-kotlin location-samples-geofencing-for-kotlin. Contribute to chandong83/location-samples-geofencing-for-kotlin development by creating an account on GitHub. github.com 원본 소스코드 위치 android/location-samples Multi...
지오펜스(Geofence, Geo fecing 등)라고 하는 기능은 임의의 지역을 지정하면 모바일폰이 지역에 들어왔는지 나갔는지 또는 머물고 있는지를 감지하는 것을 말한다. 특정 지역에 울타리(Fence)를 치고 감시하는 기능이라고 해야 하나? 아무튼 해당 기능을 적용하려고 찾아보니 아래의 링크를 찾을 수 있었다. 해당 링크는 코틀린(Kotlin)으로 제작된 지오펜스의 코드를 설명하는 문서이다. 보통 자바(Java) 코드는 여기저기 상당히 많이 공개가 되어있는데 코틀린(Kotlin) 코드는 적당한 게 별로 보이지 않았다. https://codelabs.developers.google.com/codelabs/advanced-android-kotlin-training-geofencing/#0 Advanced Android in Kotlin 04.2: Adding geofencing to your map 1. Welcome This codelab is part of the Advanced Android in Kotlin course. You'll get the most value out of this course if you work through the codelabs in sequence, but it is not mandatory. All the course codelabs are listed on the Advanced Andro...
최초 작성일: 2023-08-30 수정일: 2023-08-30 필명: 누들마스터 1.69인치 TFT IPS LCD 모듈 240x280 ST7789 4 SPI 인터페이스 : 하이제니스 [하이제니스] 하이제니스 상점입니다. smartstore.naver.com 안녕하세요~ 오늘은 1.69인치 TFT ST7789로 비트맵 이미지를 띄워보는 것을 해볼 예정입니다. 우선 가장 먼저 1.69인치 LCD를 동작시켜 볼 텐데요, 핀 연결은 아래의 링크를 바탕으로 연결하였습니다. 실습 보드는 ESP32 V4 DEVKIT입니다. 참고 링크 아두이노 ESP32 - 1.69 IPS LCD 모듈을 돌려 보다. 아두이노 ESP32에 1.69 IPS LCD 모듈을 돌려보자. 요로케 생긴 녀석이다. 자 그러면 이제 ESP3... m.blog.naver.com 실습에 앞서 먼저 아래와 같은 작업을 먼저 해주어야 합니다. 0. 시작하기 전 준비 0. 1. 아두이노 IDE에 TFT_eSPI 라이브러리 설치 0. 2. ezBMP 설치(URL : http://ezcircuits.net/zbxe/24758 ) 0. 3. st7789_bitmap 프로젝트 zip 파일로 다운로드 GitHub - maditnerd/st7789_bitmap: ST7789 image test ST7789 image test. Contribute to maditnerd/st7789_bitmap de...
ESP32 C3 Core IoT 아두이노 개발키트 : 하이제니스 [하이제니스] 하이제니스 상점입니다. smartstore.naver.com 1. 그래픽 라이브러리 설치 아두이노 상단 메뉴에서 [Sketch] - [Include Library] - [Manage Libraries]를 차례로 클릭한다. LIBRARY MANAGER가 나타나면 검색창에 st7735로 검색을 하면 [Adafruit ST7735 and ST7789 Library by Adafruit]라는 라이브러리가 나타날 것이다. 이것을 설치한다. [INSTALL] 만일 위와 같이 관련된 라이브러리를 함께 설치할 것이냐 묻는다면 [INSTALL ALL]을 눌러 모두 설치한다. 2. 소스 코드 소스코드는 Adafruit에서 제공하는 기본 예제를 조금 수정한 것이다. 먼저 예제 코드를 불러와보자. [File] - [Examples] - [Adaruit ST7735 and ST7789 Library] - [graphictest_feather_esp32s2_tft]를 차례로 클릭해 예제 코드를 가져온다. 기본 예제는 ST7785로 되어 있어 ST7735에 하드웨어 SPI로 변경할 것이다. #include <Adafruit_GFX.h> // 그래픽 코어 라이브러리 헤더 #include <Adafruit_ST7735.h> // ST7735 관련 라이브러리 헤더 #include <SPI...
ESP32 C3 Core IoT 아두이노 개발키트 : 하이제니스 [하이제니스] 하이제니스 상점입니다. smartstore.naver.com 아래의 코드는 ESP32-C3 코어 보드에서 LCD 확장 보드(위 사진)의 버튼 테스트하는 코드이다. 1. 소스 코드 const int leftKeyPin = 5; const int downKeyPin = 13; const int centerKeyPin = 4; const int rightKeyPin = 9; const int upKeyPin = 8; void setup() { pinMode(leftKeyPin, INPUT_PULLUP); pinMode(upKeyPin, INPUT_PULLUP); pinMode(centerKeyPin, INPUT_PULLUP); pinMode(downKeyPin, INPUT_PULLUP); pinMode(rightKeyPin, INPUT_PULLUP); Serial.begin(115200); } void loop() { int leftKey = digitalRead(leftKeyPin); int upKey = digitalRead(upKeyPin); int centerKey = digitalRead(centerKeyPin); int downKey = digitalRead(downKeyPin); int rightKey = digitalRead(rightKeyPin)...
1. 소스코드 내려받기 GitHub - cloidnerux/hoverboard-firmware-hack: New Hoverboard Firmware Hack. Now written from scratch and generally much better. New Hoverboard Firmware Hack. Now written from scratch and generally much better. - GitHub - cloidnerux/hoverboard-firmware-hack: New Hoverboard Firmware Hack. Now written from scratch and generall... github.com 위의 링크에서 접속해 소스코드를 내려받자. 내려받은 파일을 적당한 곳에 위치시켜 압축을 푼다. 2. 1차 빌드 압축 해제한 위치로 이동 후 마우스 오른쪽 버튼을 클릭해 [터미널에서 열기]를 클릭하자. 이제 아래와 같이 make을 실행해 보자. > make AT32 이전 글을 보고 환경설정이 잘 되었다면 우선 여기까지는 뜨게 될 것이다. 그리고 아래와 같은 오류를 내면서 종료될 것이다. 3. 오류 수정 우선 현재 에러는 다음과 같다. e:/bin/gcc-arm-none-eabi-10.3-2021.10-win32/gcc-arm-none-eabi-10.3-2021.10/bin/../lib/gcc/arm-none-eabi...
저자 소개 - 누들마스터 면 종류를 사랑하며 2023년도에 졸업한 새내기 개발자 성격은 차분하며 점심 식사 후 늘 "아이스 바닐라 라떼" 한 잔을 마시는 루틴이 있음 프롤로그 저자 "누들마스터"은 입사 전만 해도 Lv. 0의 에그(?) 개발자였지만 입사와 동시에 어마어마한 열정을 가진 "찹쌀땅콩"을 사수로 만나 고강도 스파르타식(?) 수련을 받게 되었다. 그로부터 한 달 뒤... (어 몬스~ 레이뤄~) 드디어 그는 알에서 깨어나 병아리 개발자(Lv. 1)가 되었는데... 이제 병아리 개발자가 된 이상 더 이상 찹쌀땅콩의 포근한 교육은 없다!! 지금부터는 직접 먹이를 잡는 법도 배워야 한다!!!! (아니 아니... 아직은 좀 이른가...??) 아무튼! 병아리 개발자에게 주어진 첫 번째 임무! "STM32 보드에 생명을 불어넣어 눈을 뜨게 하라!" (어때!? 이러면 좀 더 팔리겠띠? - 하이제니스 스토어 싸장님) 고수님들 아래의 글 보시고 많은 지도 편달 부탁드립니다. 시작! 최초 작성일: 2023-03-23 수정일: 2023-03-23 필명: 누들마스터 [Peripheral] - [GPIO] 1.2. 3개의 LED 제어해 보기 안녕하세요😀 저번 시간에는 LED1(PE13)을 500ms 간격으로 Toggle 하는 것을 실습해 보았는데요, 그때 HAL_GPIO를 치고 ctrl + space를 누르면 여러 개의 함수가 나타났는데 기억나시죠...
맥북 에어 M1(MacBook Air) 구입 시 꼭 애플케어 가입할 것! 안 하면 후회할 수 있음! 지난번 직원이 사용할 목적으로 맥북 에어 M1 CTO 골드 버전을 구입하였었다. 그런데 얼마 전 아래의 ... blog.naver.com 얼마 전 애플 케어 가입 권유(?) 글을 올린 적이 있었다. 그 이유를 글에도 남겼지만 애플 케어를 가입하지 않았다가 정말 큰 후회를 하게 되었다. 설마 쉽게 망가지겠어 하고 애플 케어를 가입하지 않았는데... 그러니까.... 그게... 나에게도 쉽게 일어나 버린 것이다. 결국 나는 아니겠지라는 안일한 생각이 화를 부른 것이다. 아무튼 실제 애플 케어 없이 LCD를 교체 수리하려면 약 50만 원까지 들 수 있다고 한다. 좀 쎄다 싶었지만 어쩔 수 없이 맡기려 하다 지인이 직접 수리해서 블로그에 올리면 좋지 않을까라는 아이디어를 주셨다. 그러고 보니 이왕 이렇게 된 거 블로그 콘텐츠로도 쓸 겸 직접 수리를 하는 방향으로 결론을 내렸고 바로 알리에서 맥북 에어 M1 LCD를 구입하게 되었다. 이것이 바로 위기는 기회 아닐까! 우선 알리에서 맥북 에어 M1 용 LCD를 구입했다. 134004.0₩ |2020 년 후반 새로운 A2337 LCD 디스플레이 어셈블리, Macbook Air Retina 13.3 Smarter Shopping, Better Living! Aliexpress.com ko.aliexp...
애플 맥북에어(MacBook Air) M1 CTO 골드 개봉기 회사에서 개발용으로 사용할 목적으로 맥북 에어 M1 CTO 골드를 구입하였다. 음... 내가 사용할 것은 ... blog.naver.com 지난번 직원이 사용할 목적으로 맥북 에어 M1 CTO 골드 버전을 구입하였었다. 그런데 얼마 전 아래의 사진처럼 디스플레이 부분이 깨져있는 것이었다. 직원 얘기론 특별한 충격이 없었는데 이렇게 되었다는 것이었다. 인터넷 보면 비슷하게 손상되는 글들을 종종 볼 수 있다. 글 중간에 관련 기사 링크도 하나 추가하였다. 그건 그렇고... 갑자기 애플 케어를 가입하지 않은 것이 후회스러웠다... 애플 케어를 가입했으면 1년간 약 2회까지 사용자 과실이더라도 12만 원에 수리를 해주기 때문이다. 아.. 애플 케어만 가입했어도... 설마 이게 쉽게 망가지겠어!?라고 생각했었는데... 진짜 쉽게 망가질 줄이야... 위에서도 언급했듯이 인터넷을 좀 찾아보면 신형 맥북과 맥북에어에서 이렇게 쉽게 LCD가 손상되었다는 글들을 볼 수 있을 것이다. "M1칩 탑재 신형 맥북, 이유없이 화면 손상" M1 칩을 탑재한 최신 맥북에어와 맥북프로 LCD 화면이 쉽게 깨지거나 손상된다는 지적이 제기됐다고 애플인사이더가 30일(현지시간) 보도했다.보도에 따르면 애플 관련 커뮤니... zdnet.co.kr 일단 뭐 사용은 해야 하니 애플 케어 없이 그냥 수리를 맡기기로...
맥미니 (mac mini) - 드디어 도착하다. 두둥...!! 드디어 맥미니 (Mac Mini)가 도착하였다. 현재 판매하는 맥미니는 2018년도에 발표한 버전이고... blog.naver.com 요즘 맥미니로 작업을 하면서 키보드에 대한 불편함을 많이 느끼고 있다. (물론 맥 OS만 쓰고 있었다면 당연히 불편하지 않았을 것이다.) 그중 가장 큰 불편함은 control(ctrl) 버튼이 아닐까 싶다. 윈도우나 리눅스(우분투)에서 ctrl로 사용하던 단축키들이 맥에선 command 로 구성되어 있다. 예를 들어 윈도우와 리눅스(우분투) PC의 경우 복사하기, 붙여넣기가 ctrl + c, ctrl+ v인 반면 맥 OS의 경우 command + c, command + v로 구성되어 있다. 이런 문제로 맥과 윈도우를 같이 사용하면서 자꾸 손가락 오류가 발생한다;;;;; 아무튼 이러한 문제로 일단 주 사용 환경인 윈도우/우분투 PC에 맞게 맥의 키보드를 맞춰보려 한다. 화면 왼쪽 상단에 있는 사과 아이콘을 클릭하고 시스템 환경설정... 을 클릭하자. 시스템 환경설정 화면이 나타나면 키보드 항목을 클릭한다. 키보드 화면이 나타나면 보조 키...를 선택한다. 보조 키 화면(왼쪽)이 나타나면 상단 키보드 선택에서 무선(2.4G Receiver)인지 유선(USB 키보드)인지를 먼저 선택하고 오른쪽 화면과 같이 Control과 Command 키 항목에...
회사에서 개발용으로 사용할 목적으로 맥북 에어 M1 CTO 골드를 구입하였다. 음... 내가 사용할 것은 아니고 이달부터 함께하고 있는 분이 사용할 것이다. Enter T~~~~ MI 원래 그분은 이미 맥북 에어 M1을 사용하고 있는 상태였고 처음 에어 M1을 구입할 때 맥북 프로 M1과 고민하다가 스펙상으론 큰 차이가 없어서 그냥 팬이 없는(그래서 조용한) 에어 M1으로 선택하게 되었다고 한다. 프로 M1과 코어도 같고 맥북 에어를 CTO 버전(램 16GB, SSD 512GB)으로 구입한 것이라 프로 M1의 최고급 사양 정도면 모르겠지만 그 이하라면 성능상 큰 차이를 느끼진 않을 것으로 보인다. 물론 성능 외에 외부 포트들이나 그래픽 카드 차이 정도는 있을 수 있지만 앱 개발 목적에서 봤을 땐 나쁘지 않은 선택으로 보인다. Exit T~~~~ MI 아무튼 업무용으로 맥북 에어를 쓰기로 하였고 먼저 공식 홈에서 구입하려고 보니 배송 기간에 문제가 있어 쿠팡에서 구입하게 되었다. 쿠팡에서 결제한 후 다음 날 오후에 배송이 되었다. 이것이! 맥북 에어 M1이 들어가 있는 외장 포장 박스이다. 아.. 물론 배송 시에 한 겹 더 포장되어 왔었다. 이것이 실제 제품 박스이다. 뭔지 모르겠지만... 박스에 사과 모양 하나 박혀있는 게 왜 이렇게 고급스러워 보이는지 모르겠다... 자... 그럼 개봉기를 시작해보자. 먼저 제품을 외부 오염으로부터 ...
mqtt_client | Dart Package A server and browser based MQTT client for Dart supporting normal, secure sockets and websockets. pub.dev 아래의 예제 코드는 mqtt_client 패키지를 이용한 AWS IoT Core 예제이다. class Config { static const String awsRootCA = "-----BEGIN CERTIFICATE-----\nMIIDQTCCAxxxxxxxxxxxxITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsF\nADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6\nb24gUm9vdCBDQSAxMB4XDTE1MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTEL\nMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv\nb3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJ4gHHKeNXj\nca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgHFzZM\n9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVK...
구글 플레이 스토어 콘솔에서 앱을 업로드 시 아래와 같은 오류가 발생하였다면... androidManifest.xml에서 android.permission.ACCESS_COARSE_LOCATION 퍼미션 추가 때 최대 SDK 버전 제한(maxSdkVersion)을 걸어주면 된다. 단순히 maxSdkVersion으로 제한을 걸면 상위버전 폰에서 퍼미션 체크를 아예 못하는 문제가 발생한다. androidManifext.xml에서 uses-permission-sdk-23을 추가해 API 23이상에 대해서 추가 퍼미션을 지정해주면 된다. android.permission.ACCESS_COARSE_LOCATION뿐만이 아니라 ACCESS_FINE_LOCATION를 쓰고 있다면 이 녀석도 발생할 테니 같이 추가해 주면 된다. #플러터 미워.... 아니지 #안드로이드 미운 거지 https://github.com/dariuszseweryn/RxAndroidBle#permissions https://developer.android.com/guide/topics/connectivity/bluetooth/permissions https://github.com/dariuszseweryn/RxAndroidBle/issues/215 https://stackoverflow.com/questions/44299197/google-play-apk-upload-err...
좀 지난 플러터 앱을 최신 빌드(Gradle 버전 7.0.0 이상) 시스템에서 빌드 하려는데 아래와 같은 에러가 발생하였다. Build file '/Users/dong/work/flutter_prj/........../android/app/build.gradle' line: 77 A problem occurred evaluating project ':app'. > Could not find method useProguard() for arguments [true] on BuildType$AgpDecorated_Decorated{name=release, debuggable=false, Build file '/Users/dong/work/flutter_prj/......./android/app/build.gradle' line: 77 A problem occurred evaluating project ':app'. > Could not find method useProguard() for arguments [true] on BuildType$AgpDecorated_Decorated{name=release, debuggable=false, 좀 찾아보니 더 이상 난독화를 위해 build.gradle 파일에 useProguard 설정을 할 필요가 없다는 것이었다. 해당 설정이 포함되면 문제가 되는 것이다. 아래와 같이 useProguard 항...
이 App Bundle 아티팩트 유형은 네이티브 코드를 포함하며 아직 디버그 기호가 업로드되지 않았습니다. 비정상 종료 및 ANR을 더 쉽게 분석하고 디버그할 수 있도록 기호 파일을 업로드하는 것이 좋습니다. 탐색기로 아래의 위치로 이동한다. [플러터 프로젝터]\build\app\intermediates\merged_native_libs\release\out\lib 그리고 거기에 보이는 폴더들을 한꺼번에 압축하자. 이름은 크게 중요하지 않다. 이제 이것을 구글 콘솔에 업로드해 주면 된다. 구글 콘솔에서 해당 프로젝트로 이동 후 왼쪽 메뉴 중 App Bindle 탐색기를 실행한다. 릴리스할 버전 오른쪽 끝에 있는 화살표를 클릭하자. 그다음 다운로드 탭을 클릭 후 네이티브 디버그 기호 오른쪽에 있는 [업로드 화살표]를 클릭하자. 위와 같이 팝업이 나타나면 아까 압축한 파일을 여기에 넣어주면 된다.
플러터(Flutter) 개발에 주로 쓰는 macOS를 업그레이드하면서 그동안 윈도우 OS에서 빌드를 해보려는데 뭔가 잘 안되었다. 먼전 flutter doctor -v 로 상태를 확인해 보니 아래와 같은 에러가 발생하였다. X Due to an error, the doctor check did not complete. If the error message below is not helpful, please let us know about this issue at https://github.com/flutter/flutter/issues. X Exception: Unable to run "adb", check your Android SDK installation and ANDROID_SDK_ROOT environment variable: d:/Android/Sdk\platform-tools\adb.exe #1 AndroidDevices.pollingGetDevices (package:flutter_tools/src/android/android_device_discovery.dart:75:7) <asynchronous suspension> <asynchronous suspension> #3 Future.wait.<anonymous closure> (dart:async/future.dart:521:21) <asynchronous suspe...
올해 초 갤럭시 S21 울트라로 바꾸면서 갤럭시 워치 액티브 2를 추가로 구입하였었다. S21 울트라 개봉기: https://blog.naver.com/chandong83/222228147069 워치 액티브 2 개봉기: https://blog.naver.com/chandong83/222239294148 그 후로 지금까지도 본 투 비 삼숭 폰 사용자인 본인은 워치 액티브 2를 잘 쓰고 있다. 그리고 본 투 비 사과 폰 사용자이신 와이프님께서 애플워치를 구입하기로 결정하시고 많은 자료 조사를 거쳐 애플워치SE(Apple Watch SE) 40mm GPS 전용을 구입하게 되었다. 나와 다르게 와이프님께선 뭘 하나 사더라도 엄청난 조사를 하고 난 후 구입하신다. 그래서인지 보통 구입하고 실망하는 경우가 드물다. 내 경우 일단 사고 싶으면 조사 같은 것 없이 그냥 지르다 보니 막상 구입하고 나서 실망하는 경우가 종종 있다.(보통 옵션 선택에 실패하는 것 같다.) 아무튼 그렇게 애플 워치 SE (40mm, GPS)가 우리에게 오게 되었다. 참고로 애플 워치 SE GPS + 셀룰러 도 고려했었으나 애플의 정책 때문인지 별도로 추가 요금제(약 11,000원)를 가입해야만 제대로 쓸 수 있다고 하여 GPS 전용으로 구입하게 되었다. 이것이 애플 워치 SE 포장 박스 모습이다. 와.. 별것 없는데 좀 이뻐 보인다... 내가 아무리 삼숭 매니아이지만 이...
갤럭시 스마트태그 플러스를 구입하다.(위치 추적기) - 태그와 태그 플러스 차이 및 기본 동작법 최근 궁금한 녀석이 생겨 한번 구입해봤다. 바로 삼성 갤럭시 스마트태그 플러스라는 녀석이다. 이것이 하... blog.naver.com 지난번 사용기를 작성했던 갤럭시 스마트태그 플러스를 분해해봤다. 갤럭시 스마트태그 플러스에서는 UWB라는 근거리 초광대역 무선 통신 기술을 이용해 고정밀 위치 추적 기능을 사용할 수 있다. 그래서 바로 이 UWB IC가 어떻게 생겨먹었는지가 궁금해 분해를 해보게 되었다. 참고로 해당 제품은 방수 제품이라 분해를 하고 나면 방수가 안될 수도 있으니 참고하길 바란다. 우선 배터리 교체할 때처럼 뒷면 커버를 분리한다. 그다음 화살표 표시한 나사를 푼다. 위 고무 빠킹(?)은 굳이 안 뜯어도 된다. 처음이라 뭔지 모르니 일단 뜯었는데 단순히 배터리 쪽으로 물이 안 들어가게 하는 용도이다. 커버 사이로 일자 드라이버를 쑤셔 넣어서 살살살 재끼면 커버가 벌어진다. 참고로 커버 사이에는 양면테이프들이 붙어있어 물이 안으로 들어오는 것을 방지하고 있는데 이렇게 분리하고 나면 방수가 안될 수 있으니 참고하길 바란다. 오호!!! 이것이 분리된 모습이다. NXP 사의 칩셋이 두 개가 보이고 나머진 크게 중요한 소자들은 아닌 것 같다. 주요 칩셋에는 QN9090, R040B0A라고 적혀있는데 찾아보니 QN9090은 BLE MC...
최근 궁금한 녀석이 생겨 한번 구입해봤다. 손 모델: 와이프님 바로 삼성 갤럭시 스마트태그 플러스라는 녀석이다. 이것이 하는 역할은 물건을 찾을 수 있게 도와주는 것뿐이다.(현재까지 알아본 바론..) 구성은 상당히 간단하다. 아주 간단 사용 설명서, 본체. 끝! 그런데 3만 원이 넘는다........ 3만 원이...!! 아무튼.... 뭐 그건 그렇고.. 일단 갤럭시 스마트 태그에 대해서 몇 가지 알아보자. 갤럭시 스마트태그 플러스(EI-T7300)와 스마트태그(EI-T5300) 차이 대부분 동일하며 플러스에는 UWB(Ultra-Widband)가 적용되어 AR Finding이라는 카메라로 물건 찾기 기능이 추가된 것이 특징이다. AR Finding 사용하는 것은 이 글 마지막쯤에 다루고 있다. 단, 아래서 한 번 더 언급하겠지만 스마트폰이 UWB를 지원해야만 한다. 이것 외에는 현재 거의 동일해 보인다. 아.. 크기와 무게도 조금 상승한듯 보인다. EI-T5300 - 39.1x39.1x10.4mm,13g EI-T7300 - 40.9x40.9x9.9mm,14g 사용 시간 코인 전지(CR2032)로 연속 사용 시 최대 165일정도 사용이 가능하다. (EI-T5300은 최대 300일이다.) 대충 1년에 약 3-4회 정도 배터리 교체를 해줘야 할 것 같다. 연속 사용의 기준이 명확하지 않아 좀 애매한 부분인듯하다. 예를 들어 매일 찾기 5회,...
mqtt_client | Dart Package A server and browser based MQTT client for Dart supporting normal, secure sockets and websockets. pub.dev 아래의 예제 코드는 mqtt_client 패키지를 이용한 AWS IoT Core 예제이다. class Config { static const String awsRootCA = "-----BEGIN CERTIFICATE-----\nMIIDQTCCAxxxxxxxxxxxxITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsF\nADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6\nb24gUm9vdCBDQSAxMB4XDTE1MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTEL\nMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv\nb3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJ4gHHKeNXj\nca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgHFzZM\n9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVK...
구글 플레이 스토어 콘솔에서 앱을 업로드 시 아래와 같은 오류가 발생하였다면... androidManifest.xml에서 android.permission.ACCESS_COARSE_LOCATION 퍼미션 추가 때 최대 SDK 버전 제한(maxSdkVersion)을 걸어주면 된다. 단순히 maxSdkVersion으로 제한을 걸면 상위버전 폰에서 퍼미션 체크를 아예 못하는 문제가 발생한다. androidManifext.xml에서 uses-permission-sdk-23을 추가해 API 23이상에 대해서 추가 퍼미션을 지정해주면 된다. android.permission.ACCESS_COARSE_LOCATION뿐만이 아니라 ACCESS_FINE_LOCATION를 쓰고 있다면 이 녀석도 발생할 테니 같이 추가해 주면 된다. #플러터 미워.... 아니지 #안드로이드 미운 거지 https://github.com/dariuszseweryn/RxAndroidBle#permissions https://developer.android.com/guide/topics/connectivity/bluetooth/permissions https://github.com/dariuszseweryn/RxAndroidBle/issues/215 https://stackoverflow.com/questions/44299197/google-play-apk-upload-err...
좀 지난 플러터 앱을 최신 빌드(Gradle 버전 7.0.0 이상) 시스템에서 빌드 하려는데 아래와 같은 에러가 발생하였다. Build file '/Users/dong/work/flutter_prj/........../android/app/build.gradle' line: 77 A problem occurred evaluating project ':app'. > Could not find method useProguard() for arguments [true] on BuildType$AgpDecorated_Decorated{name=release, debuggable=false, Build file '/Users/dong/work/flutter_prj/......./android/app/build.gradle' line: 77 A problem occurred evaluating project ':app'. > Could not find method useProguard() for arguments [true] on BuildType$AgpDecorated_Decorated{name=release, debuggable=false, 좀 찾아보니 더 이상 난독화를 위해 build.gradle 파일에 useProguard 설정을 할 필요가 없다는 것이었다. 해당 설정이 포함되면 문제가 되는 것이다. 아래와 같이 useProguard 항...
이 App Bundle 아티팩트 유형은 네이티브 코드를 포함하며 아직 디버그 기호가 업로드되지 않았습니다. 비정상 종료 및 ANR을 더 쉽게 분석하고 디버그할 수 있도록 기호 파일을 업로드하는 것이 좋습니다. 탐색기로 아래의 위치로 이동한다. [플러터 프로젝터]\build\app\intermediates\merged_native_libs\release\out\lib 그리고 거기에 보이는 폴더들을 한꺼번에 압축하자. 이름은 크게 중요하지 않다. 이제 이것을 구글 콘솔에 업로드해 주면 된다. 구글 콘솔에서 해당 프로젝트로 이동 후 왼쪽 메뉴 중 App Bindle 탐색기를 실행한다. 릴리스할 버전 오른쪽 끝에 있는 화살표를 클릭하자. 그다음 다운로드 탭을 클릭 후 네이티브 디버그 기호 오른쪽에 있는 [업로드 화살표]를 클릭하자. 위와 같이 팝업이 나타나면 아까 압축한 파일을 여기에 넣어주면 된다.
플러터(Flutter) 개발에 주로 쓰는 macOS를 업그레이드하면서 그동안 윈도우 OS에서 빌드를 해보려는데 뭔가 잘 안되었다. 먼전 flutter doctor -v 로 상태를 확인해 보니 아래와 같은 에러가 발생하였다. X Due to an error, the doctor check did not complete. If the error message below is not helpful, please let us know about this issue at https://github.com/flutter/flutter/issues. X Exception: Unable to run "adb", check your Android SDK installation and ANDROID_SDK_ROOT environment variable: d:/Android/Sdk\platform-tools\adb.exe #1 AndroidDevices.pollingGetDevices (package:flutter_tools/src/android/android_device_discovery.dart:75:7) <asynchronous suspension> <asynchronous suspension> #3 Future.wait.<anonymous closure> (dart:async/future.dart:521:21) <asynchronous suspe...
라즈베리파이(RaspberryPi) 제단에서 만든 MCU인 RP2040으로 제작된 RP2040-Zero라는 보드에 마이크로 파이썬으로 개발하는 방법을 다뤄볼 것이다. 관련 내용은 아래의 링크를 기반으로 작성되 었고 라즈베리파이 피고(RaspberryPi Pico)도 동일하게 동작한다. https://www.raspberrypi.com/documentation/microcontrollers/ - 목차 - 1. RP2040-Zero 마이크로 파이썬용 펌웨어 올리기 2. 마이크로 파이썬 펌웨어 확인 3. Thonny IDE 다운로드 4. Thonny 설치하기 5. Thonny 실행 확인 6. hello pi 출력하기 7. WS2812B LED 동작 예제 코드 8. 마이크로 파이썬 코드 RP2040-Zero 저장해 자동 시작하기 9. 라즈베리 파이 피코 RP2040-Zero 구입하기 1. RP2040-Zero 마이크로 파이썬용 펌웨어 올리기 먼저 RP2040에서 마이크로 파이썬을 사용하려면 마이크로 파이썬을 사용하기 위한 펌웨어가 보드에 올라가야 한다. 해당 펌웨어는 아래의 링크에서 최신 버전을 내려받을 수 있다. https://micropython.org/download/rp2-pico/rp2-pico-latest.uf2 만일 링크 접속이 안될 때는 일단 아래의 파일을 내려받자. 첨부파일 rp2-pico-20221110-unstable-v...
라즈베리파이 4에 안드로이드 10.0을 올릴 수 있나 보다. GloDroid라는 프로젝트(?)에서 올 위너(Allwinner) AP 계열 보드에 안드로이드 10.0 포팅을 진행하고 ... blog.naver.com GloDroid/glodroid_manifest Android manifest for GloDroid (AOSP for the world's most accessible development platforms) - GloDroid/glodroid_manifest github.com 지난번에 라즈베리파이 4에 안드로이드 10.0을 포팅 하는 프로젝트가 있어서 그대로 빌드 하여 라즈베리파이 4에 올려봤다. 우분투 20.04LTS 에서 빌드 하였고 특별히 큰 문제 없이 빌드를 할 수 있었다. (사소한 패키지들 설치 에러는 뭐 일반적이니 패스) 아! 라즈베리파이에 이미지를 넣을 때 특이한 점이 하나 있었다. 빌드를 완료하면 생성되는 파일들 중 deploy-sd.img를 라즈베리파이에 사용할 sd카드에 복사한 후 라즈베리 파이에 삽입한 다음 HDMI 모니터까지 연결 후 라즈베리파이 전원 쪽 USB를 PC에 연결해야 했다. HDMI 모니터가 연결되어 있지 않으면 fastboot로 업로드 중 더 이상 진행이 안되는 문제가 발생하였다. 아무튼 업로드 스크립트도 잘 짜놔서 명령어 하나로 어렵지 않게 안드로이드 이미지를 넣을 수 있었다. 전...
라즈베리파이에서 WM8960 코덱을 사용하는 대표적인 프로젝트는 다음과 같다. waveshare의 WM8960-Audio-HAT waveshare/WM8960-Audio-HAT The drivers of [WM8960 Audio HAT] for Raspberry Pi - waveshare/WM8960-Audio-HAT github.com respeaker의 seeed-voicecard 2mic hat respeaker/seeed-voicecard 2 Mic Hat, 4 Mic Array, 6-Mic Circular Array Kit, and 4-Mic Linear Array Kit for Raspberry Pi - respeaker/seeed-voicecard github.com 그리고 Asul의 음성 보드로 개발된 Asul Rpi 보드는 waveshre 프로젝트를 사용하고 있다. 라즈베리파이(RaspberryPi) Asul RPI 보드 Voice 환경 설정 Asul Jr 보드에 사용할 음성인식용 보드이다.이 보드는 WM8960 오디오와 소형 고감도 반도체 ... blog.naver.com 최근 프로젝트를 진행하면서 음원이 1개만 재생이 되는 문제를 발견하게 되었다. ALSA lib confmisc.c:1281:(snd_func_refer) Unable to find definition 'cards.bcm2835_hdmi.pcm.fr...
GloDroid라는 프로젝트(?)에서 올 위너(Allwinner) AP 계열 보드에 안드로이드 10.0 포팅을 진행하고 있는 것 같다. GloDroid/glodroid_manifest Android manifest for GloDroid (AOSP for the world's most accessible development platforms) - GloDroid/glodroid_manifest github.com 그런데 특이하게도 브로드컴(Broadcom) AP가 적용돼 라즈베리 파이 4도 지원하는 것 같다. 조만간 이 녀석을 빌드 해봐야겠다.ㅋㅋ
해당 글은 resample 함수 오류를 해결하기 위해 플러그인 설치(Add-ons) 방법까지 다루고 있다. 음..... 매트랩(Matlab)에서 오디오 샘플링 레이트를 변경하려는데 문제가 발생하였다. 오류의 내용은 다음과 같다. 함수 'resample'을(를) 호출할 때 올바르지 않은 인수 데이터형이나 누락된 인수가 있는지 확인하십시오. 오류 발생: record_voice (34번 라인) y = resample(x,1,3); resample 인자가 잘 못 되었단다.... 예제를 그냥 돌린 건데 왜 안되지???? 버전이 다른가??? 뭐지 뭐지..... 구글링해도 뭐 안 나온다.. 일단 한국어로 구글링은 한계가 있다 판단! 매트랩 언어를 영어로 변경부터 진행한다. 언어 변경은 아래서 링크에서 확인! MATLAB(매트랩) 언어 변경하기 한국어 > 영어 최근에 대학원(공학)에 진학해서 좋은 점을 하나 발견하였다. 몇 가지 프로그램들을 학교 차원에서 라이선... blog.naver.com 짜~자안! 영어 버전으로 돌리고 다시 시도해보자! 음... 뭔가 구글링하면 잘 나올 법한 글씨체이군... Check for incorrect argument data type or missing argument in call to function 'resample' Error in record_voice (line 34) y = resample(x, 1, 3...
최근에 대학원(공학)에 진학해서 좋은 점을 하나 발견하였다. 몇 가지 프로그램들을 학교 차원에서 라이선스를 맺었기에 학생(으로 있는 동안)은 이것들을 비용 지불 없이 자유롭게 사용이 가능하다. 그중 하나가 매트랩(MATLAB)이다. 음... 딱히 업무에서 쓸 일은 없지만 과제 제출을 위해 설치하였는데 한국어로 설치하니 이놈의 오류를 구글링에서 찾을 수가 없는 것이다. 그래서 이미 설치된 매트랩 프로그램 내에서 언어를 변경하는 방법을 알아보려 한다. 매트랩을 실행한 후 왼쪽 상단 메뉴에서 홈을 선택하고 오른쪽 끝에 보면 기본 설정이라는 버튼이 있다. 선택하자. 기본 설정 창이 나타나면 왼쪽 메뉴 중 일반을 선택하고 오른쪽 화면에서 가장 아래 데스트탑 언어 설정을 한국어에서 영어로 변경한다. 영어로 변경 후 확인 버튼을 눌러 설정을 저장하고 빠져나온 다음 프로그램을 종료했다가 다시 실행하면 언어가 변경된 것을 볼 수 있을 것이다. 핵교 댕기는 동안 친해져보자 이눔아!!!
구글에서 모터 가감속 프로파일을 검색하다가 "PinkWink"님께서 작성하신 매트랩(Matlab) 코드를 알게 되었고 파이썬(Python) 코드로 한번 변환해봤다. 관련 설명은 아래의 링크에서 확인하길 바란다. 모터 제어할 때, 부드러운 위치 프로파일을 위해 사다리꼴 속도 프로파일 생성하기 아주 예전에 당시 한 연구원과 함께 DC 모터를 제어하기 위한 다양한 여러 방법들을 확인하고 실험하면서 여러가지 가능성을 확인했던 적이 있는데요. 그 중에 위치 프로파일링에 대해 이야기를 했던 적이 있습니.. pinkwink.kr 1. Pinkwink 님의 매트랩(Matlab) 코드 https://pinkwink.kr/698 2. 파이썬(Python) 변환 코드 from math import sqrt import numpy as np import matplotlib.pyplot as plt ts = 0.001 t = np.arange(0, 5, ts) targetPos = 12 acc = 4 maxVel = 4 posRef = np.zeros(len(t)) velRef = np.zeros(len(t)) #tmp = np.zeros(len(t)) for i in range(2, len(t)): if targetPos > posRef[i-1]: velRef[i] = min([(velRef[i-1] + acc*ts), maxVel, sqrt(2*acc*...
요즘 스타텁들 보면 회사 소개페이지를 간단하게 노션(notion)으로 만드는 것 같다. 그래서 나도 간단하게 만들어 보게 되었다. 노션 회사 소개 페이지 하이제니스 A new tool for teams & individuals that blends everyday work apps into one. cake-velvet-740.notion.site 기존 회사 소개페이지 Elements - Hi!Genis 하이제니스 Hi!Genis Embedded System Solution 둘러보기 회사 연혁 지금까지 회사의 기록입니다. 더 보기 서비스 OS 플랫폼 안드로이드, 윈도우 CE/Compact 7, RTOS, 리눅스, Rockchip, Allwinner, Amlogic, NXP 임베디드 생활 가전, 생체 인식, LCD 제어, IoT(Bluetooth, BLE, WiFi), 미용기기, USB장치 응용 소프트웨어 서버(AWS), 모바일 앱(Flutter, Kotlin, Swift) PC 프로그램, USB 통신, 영상 처리 프로그램, 생산용 ... www.higenis.com
예전에 화면 녹화를 하기 위해서 ADB(Android Device Bridge)를 이용해 화면 녹화를 했었는데 어느 순간부터 화면 녹화 기능이 기본 탑재되어 있는 것이었다. 확인해보니 갤럭시 S9 혹은 갤럭시 노트 9 이상 모델부터 지원된다고 한다. 사용 방법은 상당히 간단하다. 우선 상단 상태 표시줄에 손가락으로 누른 상태서 아래로 긁어내리면 버튼과 알림 창 이 나타난다 여기서 버튼들이 있는 곳에서 다시 손가락을 누른 상태에서 아로래 긁어내리면 무수히 많은 버튼이 나타날 것이다. 이때 오른쪽에서 왼쪽으로 손가락을 눌러서 긁어주면(스와이프, 드래그) 아래와 같이 다음 페이지의 버튼들이 보일 것이다. 화면 녹화 버튼을 눌러보자 아참 여기서 화면 녹화 버튼은 사용자 설정에 따라 위치는 달라질 수 있다. 녹화 시작 전 소리도 폰에서 나는 소리도 녹음할 것인지 거기에 마이크 소리까지 녹음을 할 것인지 선택을 하고 "녹화 시작" 버튼을 누른다. 이제 한국인이 좋아한다는 3을 세고 녹화가 시작된다. 녹화가 시작되면 상단에 단축 버튼들이 보일 것이다. 이것으로 손글씨를 쓸 수도 있고 카메라를 동시에 녹화도 가능하다. 점점 하드웨어 성능이 좋아지니 폰으로 할 수 있는 것이 너무 많아진 것 같다. 포스팅에 사용된 갤럭시S21 울트라 구입기 갤럭시S21 울트라, 드디어 도착하다. 갤럭시S21 울트라(Galaxy S21 Ultra)가 도착하다.한 2년 ...
갤럭시 스마트태그 플러스를 구입하다.(위치 추적기) - 태그와 태그 플러스 차이 및 기본 동작법 최근 궁금한 녀석이 생겨 한번 구입해봤다. 바로 삼성 갤럭시 스마트태그 플러스라는 녀석이다. 이것이 하... blog.naver.com 지난번 사용기를 작성했던 갤럭시 스마트태그 플러스를 분해해봤다. 갤럭시 스마트태그 플러스에서는 UWB라는 근거리 초광대역 무선 통신 기술을 이용해 고정밀 위치 추적 기능을 사용할 수 있다. 그래서 바로 이 UWB IC가 어떻게 생겨먹었는지가 궁금해 분해를 해보게 되었다. 참고로 해당 제품은 방수 제품이라 분해를 하고 나면 방수가 안될 수도 있으니 참고하길 바란다. 우선 배터리 교체할 때처럼 뒷면 커버를 분리한다. 그다음 화살표 표시한 나사를 푼다. 위 고무 빠킹(?)은 굳이 안 뜯어도 된다. 처음이라 뭔지 모르니 일단 뜯었는데 단순히 배터리 쪽으로 물이 안 들어가게 하는 용도이다. 커버 사이로 일자 드라이버를 쑤셔 넣어서 살살살 재끼면 커버가 벌어진다. 참고로 커버 사이에는 양면테이프들이 붙어있어 물이 안으로 들어오는 것을 방지하고 있는데 이렇게 분리하고 나면 방수가 안될 수 있으니 참고하길 바란다. 오호!!! 이것이 분리된 모습이다. NXP 사의 칩셋이 두 개가 보이고 나머진 크게 중요한 소자들은 아닌 것 같다. 주요 칩셋에는 QN9090, R040B0A라고 적혀있는데 찾아보니 QN9090은 BLE MC...
최근 궁금한 녀석이 생겨 한번 구입해봤다. 손 모델: 와이프님 바로 삼성 갤럭시 스마트태그 플러스라는 녀석이다. 이것이 하는 역할은 물건을 찾을 수 있게 도와주는 것뿐이다.(현재까지 알아본 바론..) 구성은 상당히 간단하다. 아주 간단 사용 설명서, 본체. 끝! 그런데 3만 원이 넘는다........ 3만 원이...!! 아무튼.... 뭐 그건 그렇고.. 일단 갤럭시 스마트 태그에 대해서 몇 가지 알아보자. 갤럭시 스마트태그 플러스(EI-T7300)와 스마트태그(EI-T5300) 차이 대부분 동일하며 플러스에는 UWB(Ultra-Widband)가 적용되어 AR Finding이라는 카메라로 물건 찾기 기능이 추가된 것이 특징이다. AR Finding 사용하는 것은 이 글 마지막쯤에 다루고 있다. 단, 아래서 한 번 더 언급하겠지만 스마트폰이 UWB를 지원해야만 한다. 이것 외에는 현재 거의 동일해 보인다. 아.. 크기와 무게도 조금 상승한듯 보인다. EI-T5300 - 39.1x39.1x10.4mm,13g EI-T7300 - 40.9x40.9x9.9mm,14g 사용 시간 코인 전지(CR2032)로 연속 사용 시 최대 165일정도 사용이 가능하다. (EI-T5300은 최대 300일이다.) 대충 1년에 약 3-4회 정도 배터리 교체를 해줘야 할 것 같다. 연속 사용의 기준이 명확하지 않아 좀 애매한 부분인듯하다. 예를 들어 매일 찾기 5회,...
C#에서 DataGridView를 추가하면 왼쪽 그림과 같이 행(Row) 쪽 헤더(Header) 셀 이 자동으로 나타나는데 이것을 오른쪽 그림처럼 아예 없애려면 아래와 같이 DataGridView 속성 중 RowHeadersVisible를 False로 주면 된다.
왼쪽 아래와 같이 기본 콤보 박스는 텍스트 편집이 가능하게 되어있다. 이것을 오른쪽 이미지와 같이 텍스트 편집 기능을 제거함으로써 오동작을 막기 위함이다. 위와 같이 변경하는 것은 상당히 간단하다. 먼저 디자인 창에서 변경할 콤보 박스를 선택하고 ... 위와 같이 모양 > DropDownStyle을 DropDownList로 변경해 주면 된다. 참고로 기본은 DropDown이다.
예를 들어 아래와 같은 형태로 StripStatusLabel을 사용한다고 가정해 보자. void run_() { toolStripStatusLabel1.Text = "시작"; for (int i = 0; i < 99999999; i++) { /* ... ... */ } toolStripStatusLabel1.Text = "종료"; } 해당 코드를 실행하면 상태 바에 "시작"은 표시되지 않고 다 완료되면 "종료"만 나타날 것이다. 이렇게 루프가 돌아가는 함수 안에서 상태 바의 값을 실시간으로 변경하고 싶을 땐 다음과 같이 Refresh 함수를 추가해 주면 된다. void run_() { toolStripStatusLabel1.Text = "시작"; // stripStatusLabel 만 갱신 toolStripStatusLabel1.GetCurrentParent().Refresh(); // this.Refresh(); // 전체 화면(컨트롤러) 갱신 for (int i = 0; i < 99999999; i++) { /* ... ... */ } toolStripStatusLabel1.Text = "종료"; } 이제 "시작"이라는 상태를 볼 수 있을 것이다. 다만, 위에서도 보듯이 GetcurrentParent 함수를 통해 Refresh를 사용하게 되는데 toolStripStatusLabel에는 Control 기능이 없어 부모 객체를 통해서...
아래의 코드는 파일을 일부만 잘라 복사하는 소스코드이다. using System; using System.IO; static int Main(string[] args) { // 인자 갯수 int argsCount = args.Length; // 인자 갯수가 4보다 작으면 에러 if (argsCount < 4) { Console.WriteLine("Usage: bln_crop.exe {inputFilename} {outputFilename} {offset, hex} {size, hex}"); Console.WriteLine(" ex) bln_crop.ex src.bin dest.bin 0 8000"); return -1; } // 첫번째 인자는 입력 파일 string inputFile = args[0]; // 두번째 인자는 출력 파일 string outputFile = args[1]; // 입력 파일에서 복사할 시작 바이트 위치 (16진수) string fileCropOffset = args[2]; // 복사할 바이트 크기 (16진수) string fileCropLen = args[3]; int valueOffset = 0; int valueLen = 0; try { // 문자열을 숫자(16진수)로 변경 valueOffset = Convert.ToInt32(fileCropOffset, 16); valueLen = Convert.ToIn...
윈도우 프로그램은 역시 C#(C Sharp)! 이라지만 이것 외에도 비주얼 스튜디오는 설치해두면 다양하게 쓰일 때가 많다. 아... 그나저나 이제는 Win32와 MFC가 거의 기억이 나질 않는다... 1. 설치 파일 다운로드하기 Install C and C++ support in Visual Studio Learn how to install Visual Studio with support for Microsoft C/C++ and related workloads. docs.microsoft.com 비주얼 스튜디오 2019 설치 파일을 다운로드하기 위해 위 링크에 접속해보자. 사이트에 접속 후 Step 2에 있는 Download Visual Studio를 클릭한다. 그러면 위와 같이 다운로드 페이지가 나타날 것이다. 여기서 커뮤니티 아래 보이는 무료 다운로드버튼을 클릭해 설치 파일을 다운로드한다. 2. 설치하기 이제 다운로드한 설치 파일을 실행해보자. 계속! 준비 중.... 음... 잠시 대기... 잠시 기다리면 위와 같이 설치할 패키지(구성)화면이 나타날 것이다. 기본적으로 위와 같이 .NET 데스크톱 개발, C++을 사용한 데스크톱 개발, 유니버설 Windows 플랫폼 개발정도만 먼저 선택한다. 그다음 상단에 보이는 언어 팩탭으로 이동하여 영어도 선택해주자. 이제 오른쪽 아래에 있는 Install 버튼을 눌러 설치를 시작한다. 설치...