Don't think! Just do it!

종합 IT 기술 정체성 카오스 블로그! 이... 이곳은 어디지?

전체 글 213

TVS

TVS transient voltage suppressor 의 줄임말.. 굳이 한국말로 바꾸면 과도 전압 억제기인데;;; 정말 이런 영어는 억지로 한자로 안바꿨으면 좋겠어... 그냥 좀 이해하기 쉽게 일시적 전압 억제기라던가 순간 전압 억제기같은 걸로 해도 되는데;;;; 어휴 이런거 볼때마다 개짜증! ㅋㅋ 암튼 그냥 ESD 막는 다이오드야. 정전기 같은 애들 말이야. 그래서 통신 라인같이 외부로 노출되는 라인에 사용돼. 👇👇 원리는 간단해. 제너 다이오드 비슷한데 동작 속도는 훨씬 빠르지. 항복 전압보다 큰 전압이 들어오면 다이오드가 쇼트된 것처럼 전류를 흘려버려! 그래서 전압이 높아지는 걸 막는거지. 뭐 이런 일반적인 내용은 이미 인터넷에 널려 있으니까 각자 잘 찾아보시고! 만약 TVS 같은 보호 장치..

Schematic variable on label!!(동작안함!!!)

동작을 잘 하는 줄 알았는데 동작 안함. Label에는 Varialble을 사용하지 마!!! PCB로 잘 안넘어가!!! 회로 그릴 때 반복되는 도면을 계속 그려야 할 때가 가끔씩 있어. control + c, control + v 해서 컴포넌트들은 붙여 넣을 수는 있지만 포트 번호들은 전부 변경해줘야 하잖아? 난 이게 너무 짜증나더라구.. 예를 들어 아래와 같이 T1부터 T10까지 똑같은 회로가 반복된다고 해보자구 ㅋㅋ 아주 그냥 신나지? ㅋㅋㅋ 아래 처럼 연결되는 똑같은 도면이 10개.... 이 핀 번호들 전부 다 바꾸려면... 아이고~~ 한숨부터 나오네...에휴.. 안그래도 나이를 먹으니 점점 손가락 관절염이 심해지는 것 같은데 ㅠㅠ 모두들 오래오래 먹고 살려면 손가락 관리 잘해라 ㅠㅠ 마우스 키보드..

vApplicationStackOverflowHook()

스택 오버플로우는... 많은 도움을 받고 있는 곳(사이트)이지만 ㅋㅋㅋ 내 프로그램에서 발생한다면 지옥인거지 ㅋㅋ 임베디드에서는 딱히 볼일이 없었는데 요즘은 RTOS 때문에 신경써야 할 부분이 되었어 ㅋㅋ 일부는 RTOS를 사용하더라도 malloc, free는 절대 사용안하고 task의 stack을 과도하게 설정한다던지 하는 방법으로 스택 오버플로우를 피해왔지만 그건 근본적인 해결책이 아니지 ㅋㅋㅋ 어차피 고급 라이브러리들 (lwip, usb stack, mbed tls, file system 같은 고귀한 분들) 은 malloc, free를 사용하고 있어서 Stack overflow를 피할수가 없어 ㅎ 그러니까 괜히 쓸데없는 노력하지 말고 malloc, free 그리고 heap과 stack 구조를 받아들..

STM32 MCU를 또 만지네...

회사를 때려치우면서 이제 다시는 임베디드 쪽 만질 일이 없을 것 같았는데 ㅎㅎ 세상일이 내맘대로 되는 게 하나도 없어 참.. 말도 안되게 전세 대출 연장이 막히면서 어쩔 수 없이 취직해야 할 상황이 되었단 말야.. 취직할 수 밖에 없었던 상황 => 난 카뱅 전세 대출이었는데 LH 신혼부부 전세 임대?(이자 엄청 쌈! 1.9%) 거기 심사에 통과했단 말이지. 그래서 LH 전세 자금 + 기존 카뱅 전세 대출 + 내 돈, 이렇게 해서 새로운 전세집으로 이사를 갔지! 좀 있다가 카뱅 전세 만기가 돌아와서 신청을 했더니 전세 연장 불가... 이럴까봐 이사하기 전에 카뱅하고 LH 양쪽에 미리 확인 전화까지 했는데 괜찮다고 그랬거든 ㅋㅋㅋ 그런데 갑자기 연장 불가 ㅋㅋㅋ "고객님의 심정은 알지만 도와드리지 못해서 정..

[소셜차트] 앱 제작기 #16. 차트!

무슨 데이터 좀 구해서 볼라면 미친듯이 검색해야 하잖아? 하다 못해 서로 다른 두 차트(데이터)의 상관 관계를 보려면 미친 액셀 노가다를 해야 하지. 매우 간단한 것조차 말이야. 게다가 대다수의 사람들은 이런 것조차 못한단 말야. 진짜 요즘처럼 정보격차가 극심한 시대가 있었나 싶어. 정보는 돈이니까 즉! 정보 격차는 빈부 격차라는 소리지. 암튼 이런 문제를 좀 해결하고 싶어서 만드는 앱 이름이 소셜차트야. 차트위에 여러가지 데이터를 보기 쉽게 나타내고 서로 정보를 공유할 수 있도록 돕는 툴이야 ㅋㅋㅋ 차트가 핵심기능이라는 소리지! ㅋㅋㅋ 근데 이놈에 핵심기능 구현하는게 지옥이네 ㅋㅋㅋ 물론 내가 덜떨어져서 그렇겠지만 말이야! 일단 차트를 처음부터 쌩짜로 구현하고자 하는 욕망도 있지만 시간이 매우 부족해서..

[Flutter] Firestore에서 Elastic app search

Full text search 검색 기능이 필요한데 firestore를 DB로 사용하고 있다면 망한거야! firestore는 검색 기능이 없거든!!!! ㅋㅋㅋㅋ 뭐 망할 것 까지는 없고 ㅋㅋ firestore full text search라고 한번만 검색해도 솔루션이 있다는 걸 알거야 ㅎㅎㅎ 따라하는 것만 남았을 뿐! firebase에서 제공하는 Full text search 방법은 3가지야 Elastic search, algolia, typesense. 이 세가지를 모두 테스트해봤는데 개인적으로는 Elastic search가 사용하기에 가장 적합한 것 같아.. algolia는 query request 횟수를 믿을 수가 없고 typesense는 array 형태의 자료에서 검색이 불가능해. 순서를 간단하게..

[소셜차트] 앱 제작기 #15. Full Text search

Full Text Search... 뭐... 그냥 간단하게 검색 기능이야. 소셜차트 DB는 firestore인데 firestore는 검색 기능을 제공하지 않기 때문에 외부의 도움을 받아야 해. Full text search engine이라고 검색하면 많은 것들이 나오는데 firebase에서 제안하는 건 Elastic, Algolia, Typesense 이렇게 3가지야.👇 각각은 모두 firebas extension을 제공해서 비교적(?) 간편하게 full-text search를 구현할 수 있어. 가격 이 서비스들은 모두 자체 클라우드를 지원하고 있는데 이걸 사용하자니 비용이 조금 걱정되더라고. 엘라스틱은 시작이 한화로 월 10만원이 넘고;;; 초기 스타트업이 내기는 조금... 싫다규 ㅠㅠ 알골리아는 비교..

1인 스타트업 SNS 앱 개발

회사 때려치고 나온지 벌써 1년 반이 넘었네;;;; 때려치자마자 미친척하고 했던 제주도 한달살이는 정말 좋았는데 ㅋㅋ 지금은 아주 죽을 맛이야 ㅋㅋㅋㅋㅋㅋ 올해 7월부터 법인 설립하고 10월부터 본격적으로 내가 하고 싶었던 앱을 만들기 시작했는데 ㅎㅎ 이게 생각보다 쉽지 않네... 내가 만드는 앱 규모가 생각보다 크더라고 ㅋㅋ 아무리 스타트업이라도 적어도 4-5명이서 해야 하는 일들을 혼자서 하고 있는 것 같은 느낌이랄까? ㅋㅋㅋ 아주 죽을 맛이야 ㅋㅋㅋㅋ 이미 알고 있었는데도 말이지.. 처음에는 이렇게 생각했거든 ㅋㅋㅋ "4-5명이 필요해? 그럼 내가 4-5명 몫을 하면 되겠네 ㅋ" 응 맞아 미친놈이지 ㅋㅋㅋ 앱 개발은 flutter로 해서 ios, android 동시에 조지고 ㅋㅋ 물론 flutter..

Startup!! 2022.12.13

[Flutter] Getting visible items on scroll view

listView같은 scroll view 에서 화면에 어떤 item(widget)이 보이고 있는지 확인해야 할 때가 있어. 현재 보여지고 있는 아이템을 헤더에 표시해야 한다거나 동영상이 자동으로 재생되어야 한다거나 할때 말야.👇 그렇게 흔하게 요구되는 기능은 아니라 몰라도 되지만 내가 만드는 앱에서는 필수적인 기능이라서 ㅎ 해볼거야. 우선 이 기능은 inview_notifier_list 패키지를 사용하면 대부분 해결될거라 생각해. https://pub.dev/packages/inview_notifier_list inview_notifier_list | Flutter Package A Flutter package that builds a listview and notifies when the widgets..

[소셜차트] 앱 제작기 #14. 프로필 수정 화면

사진이나 소개 같은 프로필 정보를 수정하는 화면을 만들었어. 별건 아닌데 ㅎ 은근 짜증 ㅎ text 업로드하는 건 뭐 크게 난이도 있는 건 아니니까 스킵하고 사진 업로드하는 것만 전체적으로 설명하자면 image picker로 갤러리나 카메라로 사진 선택 후 로컬 변수에 저장. 로컬 변수에 저장된 이미지를 image cropper로 보내서 유저가 size 변경. 최종 파일을 firebase storage로 보내고 다운로드 url 확보 firestore userDB에 업데이트 이런 순서가 되겠지? 여기에 사용한 package는 image_picker와 image_cropper야 👇👇👇 https://pub.dev/packages/image_picker image_picker | Flutter Package ..

[소셜차트] 앱 제작기 #13. 좋아요 기능 (Distributed Counter)

하아... 누가 간단한 KiCad 알바 좀 하자고 해서 했는데;;; 2주를 날렸어... ㅠㅠ 화딱지나... 암튼 앱 개발 속행!! 좋아요! 기능은 매우 보편적이지.. 그런데 이게 은근히 짜증나... 우선 누가 좋아요를 눌렀는지 기록해야하고, 그리고 몇개의 좋아요인지도 알아내야 해. 난 firestore를 사용중이니 그걸 기준으로 하자면 단순하게 좋아요를 누른 사람을 기록하는 건 간단해. 그냥 sub collection 하나 만들고 user id를 포함한 문서를 계속 더하거나 빼면 되니까. 그런데 말이지.... 다른 DB는 모르겠지만 적어도 firestore에서는 좋아요를 카운트하는 일은 간단하지가 않아;; 왜냐하면 firestore에서 허용되는 문서 업데이트 주기가 초당 1회이기 때문이지;; 전세계에서 ..

[Firestore] Distributed Counter

허용되는 Firestore 문서 업데이트 주기가 초당 1회야. 초당 1회를 넘어가면 보장을 못한다는 거겠지? 음.. 그러면 "좋아요, 👍, ❤️" 같은 거 구현하려면 망하겠네? 유명한 인플루언서가 올리면 좋아요? 하트? 가 미칠듯이 찍힐테니까 말이야 ㅋㅋ 이 문제를 해결하기 위해서 firebase 공홈에서 추천하는 방법이 분산 카운터야. https://firebase.google.com/docs/firestore/solutions/counters 분산 카운터 | Firestore | Firebase Firebase Summit에서 발표된 모든 내용을 살펴보고 Firebase로 앱을 빠르게 개발하고 안심하고 앱을 실행하는 방법을 알아보세요. 자세히 알아보기 이 페이지는 Cloud Translation AP..

[Flutter] Firestore pagination(무한스크롤)

무한 스크롤 같은 거 구현할 때 스크롤이 끝부분에 다달았을 때 DB나 API 서버를 통해서 새로운 데이터를 가져와야 하잖아? 이런 걸 Pagination이라고 해. 보통 리스트 형태의 데이터를 뿌려주는 API 들은 page 옵션이 별도로 있어. 그래서 pagination 구현할 때 그 page 옵션을 사용하면 되지. page 옵션이 없더라도 특정 데이터의 날짜를 기준삼아 정렬하고 읽어온 데이터 갯수를 pagination에 활용할 수도 있어. 뭐 API 서버는 이렇다 치고, Firestore에서도 여러가지 pagination을 위한 기능을 제공하고 있어.👇👇 https://firebase.google.com/docs/firestore/query-data/query-cursors 쿼리 커서로 데이터 페이지 ..

[소셜차트] 앱 제작기 #12. 댓글 기능 & 기타 잡다!

사실 이제 소셜차트의 핵심적인 부분을 구현해야 하는데.. 그건 아직 생각이 정리가 안되서 ㅋㅋㅋ 눈에 보이는 것들부터 우선 처리하고 있어. 유저가 포스팅을 하는 건 했으니 이제 댓글을 달아 보자고.. 포스팅이랑은 다르게 댓글은 그냥 keyboard에 붙어 다니는 bottomsheet에 textfield를 붙여서 구현했어. 물론 수정해야할 것들이나 추가해야 할 것들이 매우 많지만 일단 기능 구현에만 중점을 두고 작업했고 댓글 리스트를 위한 위젯은 유저 포스팅 리스트에 사용했던 infinite_scroll_pagination을 또 사용했어. infinite_scroll_pagination 매우 좋아! 이거 하면서 골때렸던게 keyboard를 따라다니는 bottomsheet 였는데 일반적으로는 매우 완벽하게 ..

[Flutter] Bad state: Future already completed

나같은 경우 네트워크에서 로드하는 이미지의 사이즈를 이미 알아내서 위젯을 그릴려고 completer를 사용했는데 가끔씩 이미지 로드에 실패하고 Bad state: Future already completed라는 에러가 뜨더라고;;;; 코드는 아래와 같은데 어떤 이유에서건 imageProfiver listener가 여러번 수행되서 그런 거 같아. ... CachedNetworkImage( imageUrl: imageUrl, width: 50, imageBuilder: (context, imageProvider) { Completer completer = Completer(); imageProvider .resolve(const ImageConfiguration()) .addListener(ImageStre..

[소셜차트] 앱 제작기 #11. 운수 좋은 날..

이제는 대가리가 Flutter에 맞춰지는지 스트레스도 덜 받고 왠지 모르게 이런 저런 것들을 잡다한 것들을 마이 했단 말이지.. infinite scroll 새로 고침, user profile에 더미 데이터 => DB 연결, insight card에 사용자 정보 가져오기, link preview Image provider에 에러 수정.. 뭐 한참 많아.. 크으~ 오늘 운이 좋은 걸? 이런 날일수록 조심해야지! % git add . % git commit -m "블라블라" % git push origin main 크 완벽해! ... 집에서 맥북으로 보니까 ios 폴더에서 저짓을 해놨네?;;;; 으하하하하하미ㅏ넝리ㅏㅓㅁ닝러ㅣㅁ나렁 사무실 컴터에 남아있을건데 왜 그러냐고?? ㅋㅋㅋㅋㅋㅋ 난 사무실에는 맥 스튜..

[소셜차트] 앱 제작기 #10. Tap to scroll top

bottom tab navigator에서 tab을 누르면 스크롤이 처음으로 올라가고, 또 tab을 누르면 뒤로가기. IOS에서 흔한 동작이야.. 그런데 ㅋㅋㅋㅋ 결론부터 이야기 하자면 못했어..... ㅅㅂ... React Native에서는 react navigation으로 여차저차 구현했는데;;; Flutter에서는 좌절이네;;; ㅋㅋㅋㅋ 다 내 머리가 나쁜 탓이지! ㅠㅠㅠㅠㅠㅠㅠㅠ 사실 flutter에서 scroll on top 기능은 간단해.👇 controller.scrollController.animateTo( 0.0, duration: const Duration(milliseconds: 300), curve: Curves.linear, ); //or controller.scrollControlle..

[소셜차트] 앱 제작기 #9. 무한 스크롤

유저가 작성한 인사이트 카드를 여러사람에게 맞춰 보여주는 건 쉽지 않은 일이겠지? ㅋㅋ 아마 Query가 마이 복잡해 질거야. 앱에서 firestore에 다이렉트로 못 할 수도 있고.. 이럴 경우에는 Backend에서 해야겠지. 그렇다고 손놓고 있으면 등신이고. 걍 일단 시간순으로 정렬해서 listview로 보여주자고.. Insight card는 단순하게 header, body, bottom 이렇게 3부분으로 나뉘는데 header에는 chart의 요약 정보가 들어갈거고 body에는 유저, 카드 내용이, 그리고 bottom에는 스크랩, 댓글 달기, 외부 공유를 할 수 있는 버튼이 있어. header와 bottom은 구현해야할 게 엄청 많으니까 일단 body만 읽어와서 뿌려줄건데 처음에는 귀엽게 10개를 고..

[소셜차트] 앱 제작기 #8. 글쓰는 페이지

일단은 지금 제작중인 소셜차트라는 앱이 소셜네트워킹 앱이어서 사용자들이 글을 쓸 수 있도록 해야 해. 페이스북이나 트위터처럼 말이지. 이거 말고도 구현해야 할 것들이 굉장히 많지만 글을 쓸 수 있는 환경부터 만드는 게 더미 데이터를 넣으면서 테스트하기 좋을 거 같아서 글쓰는 페이지부터 만들고 있어. 1차적으로 해쉬태그와 url을 자동으로 인식해서 link preview를 보여주는 정도로만 구현중이야. 먼저 textfield에 hashtag와 url을 꾸며주는 건 detactable_text_field라는 flutter package를 사용했고👇 https://pub.dev/packages/detectable_text_field detectable_text_field | Flutter Package Tex..

[Flutter] getx page&controller 재사용

get으로 Page랑 controller를 만들고 이걸 여러 군데에서 재사용해야 할 때가 있어. 뭐 Page(Widget)야 그냥 쓰면 되는데 GetxController의 instance가 독립적으로 생성되게 하기 위해서는 binding할 때 tag 옵션을 줘야해. 예를 만들어 보자구. 먼저 3개의 파일을 만들었어. page_text.dart, page_text_controller.dart 마지막으로 page_text_binding.dart get으로 page 기본 구성이라고 할 수 있어. 내용은 아래와 같고, //page_test.dart class PageTest extends GetView {//Getview로 선언하면 const PageTest({super.key}); static const ro..

반응형