라벨이 개발인 게시물 표시

책리뷰- 플러터 앱 개발 첫걸음(2020)

플러터 개발에 필요한 부분을 광범위하게 다루고 있습니다. 한권쯤 레퍼런스로 소장하면 좋을 책 입니다.

책리뷰- 모바일 앱 개발을 위한 다트&플러터 (2020)

플러터 입문자에게 추천한다. 다트와 플러터를 기초부터 설명한다. 책 내용이 아주 쉽다. 다트 문법부터 시작해서 플러터 개발환경, 위젯으로 이어지며 간단한 어플 만들기에 필요한 부분은 대부분 다룬다. 순서와 구성이 좋다.

책리뷰- 리눅스 커널 내부구조 : 리눅스 해커를 위한 지침서(2015)

리눅스의 구조와 동작을 간략하게 설명하는 책이다. 대학 강의하듯이 학부생 눈높이에 맞춰 쉽고 간단하게 설명해서 입문자에게 좋다. 특히 각 장의 첫부분에 동작을 간략히 정리해 설명하는 부분이 좋았다. 자세한 동작이야 소스를 직접보면 되는 것이라 대략의 구조와 동작에 대해 어떻게 되어 있는지 설명해 주는 그 짧은 부분이 엑기스 였다.  숙련된 엔지니어의 짬에서 나오는 통찰력의 느낌이다. 모든 부분이 아닌 중요한 부분만 찝어 설명하는 것이 좋았다. 리눅스 드라이버 설치에 대해 이해 안됐었는데 이 책으로 이해할 수 있었다. 리눅스는 모듈을 만들어 실행 중인 커널에 적재할 수 있다. 모듈로 커널의 기능을 추가하거나 변경할 수 있다. 모듈은 간소화된 DLL과 비슷한 거 같다. 모듈에 드라이버 기능을 구현해서 커널에 적재하면 된다. 단점이 있다면 그림이 너무 옛날 그림이라 촌스러웠고, 자세한 동작도 글로만 설명하니 몇몇 부분은 몇번씩 읽어봐야 했다.

책리뷰 - CODE Reading(2004)

코드를 읽는 법에 대한 책. 이 책의 주 대상은 c로된 오픈소스 프로젝트에 참여하고 싶은 개발자 입니다. 다른 언어를 사용한다면 정말 쓸모 없으니 보지 않는 걸 추천합니다. 유명한 저자가 코드를 읽으면서 그간의 경험을 바탕으로 쓴 책입니다. 하지만 오픈소스와 c에 한정되어 있습니다. 1-2년차 개발자는 볼만하고 5년차 정도면 건질게 거의 없을겁니다.

nginx 소스 간단 리뷰.

- 두가지 목적으로 리뷰. http 헤더 처리시 까지 보안관련 코드.(호기심) 뜯어서 다른걸로 개조할 수 있을지 여부확인. 많은 사용으로 안전성이 확보된 코드. - 과정. vs code에 c언어 확장을 설치. 아래 참고 링크에 있는 콜스택을 참조하여 코드 리뷰. 콜스택과 약간 다른 부분이 있었지만 전체 콜스택이 있으므로 어렵지 않게 중간 함수를 찾을 수 있었다. - 결과. http 헤더 처리 코드까지 별다른 보안 코드는 없었다. c로 개발되어 있어 재활용이 어렵고 새로 개발 했을 때 안전성이 깨지게 되어 nginx소스를 사용하는 이유가 없어짐.  - 감상. c++도 아니고 c로 개발되어 있다. 개발자 입장에서 보면 다른데 신경쓰지 않고 서버를 만드는데만 집중한 거 같다. 성능을 최우선으로 자잘한 부분까지 쥐어짠 흔적들이 보인다. goto문은 개발자들에게 거의 금기시 되어 있는데 goto문을 사용하여 코드의 양을 줄이고 복잡도도 낮아졌다. 검색해보니 중국 개발 사이트들이 보였는데 개발자도 많은지 정말 다양한 분야에 대한 글들이 보였고 꽤 활발했다. github에 중국어로 올리는데 이게 대국의 기상인가 싶다.  참고. https://taohui.blog.csdn.net/article/details/5637451 http://tengine.taobao.org/book/chapter_12.html

시대와 환경이 변했으면 개발 철학도 바껴야 한다.

리눅스 프로그램들을 설치하다 보면 종속성 대환장 파티가 열린다. 오죽하면 openmediavault 같은 배포판들은 도커를 기반으로 플러그인을 설치한다. 이런 종속성은 시스템 유지보수, 보안에 심각한 영향을 미친다. 윈도우 DLL 보안 사고가 끊이지 않고 터지는 거처럼 말이다. 유닉스는 70년대에 열악한 하드웨어와 저장장치 용량 때문에 작은 프로그램을 만들고 이를 이용해 프로그램을 만들어 쥐어 짜듯 개발했다.  하지만 현재는 100기가 가까이 하는 게임이 나올 정도로 저장장치가 비약적으로 늘어났다.  현재는 정적링크로 프로그램 크기가 늘어나도 별 문제가 안되고 cpu 성능도 비약적으로 향상돼 프로그램 크기가 늘어도 로딩 속도에 큰 문제가 되지 않는다. 시대와 환경이 변했으면 개발 철학도 바껴야 한다. IOS의 정적링크와 외부 폴더 접근을 막는 현대적 개발철학이 필요하다.  윈도우도 dll 그만 쳐 쓰고 폴더 접근의 제한 강화해라. 결정권을 쥐고 있는 노땅들이 바껴야 한다.

책리뷰- Do it! 리액트 네이티브 앱 프로그래밍 (2021)

 저자가 꽤 공들여 작성한거 같은 책이다. 하지만 머리에 잘 들어오지 않았다. 생각해 보니 장황한 설명으로 인해 머리가 복잡해 지는거 같다. 기능을 정의할때보면 역사와 자초지정을 전문용어를 섞어서 설명한다. 아마 책으로 만들다 보니 독자를 의식해서 그런거 같은데 독자를 의식하지 않고 자신이 이해하기 쉬운 문장으로 설명하면 더 좋았을거 같다. 그리고 강약조절이 잘 안됬다.  엔지니어로써 만들면서 꼭 필요한 부분은 몇 부분 되지 않는다. 이런 부분을 강조하고 나머지는 쳐내거나 작게 다뤄야 하는데 그렇지 않은거 같다. 총평. 방대한 영역을 다루니 레퍼런스로 필요한 부분만 발췌해서 읽는걸 추천한다. 리액트를 처음부터 배우는 사람이라면 추천하지 않는다. 좀더 읽기 편하고 체계적인 책을 보는게 나을거 같다.

함수형 자바스크립트 입문 2/e (2020)

자바스크립트 함수에 대해 특화되어 있는 책. 설명이 잘 되어 있기 때문에 함수를 많이 다뤄보지 않은 초보에겐 좋다. 람다 형태의 함수를 다루는데 익숙하다면 추천하지 않는다. 장점은 초보에게 설명이 잘 되어 있다. 단점. 예제를 부분부분 짤라서 보여주기 때문에 한눈에 들어오지 않는다. 소설처럼 기능을 전개하며 풀어가는 형식이기 때문에 한눈에 보이게 정리되어 있지 않다. 프로젝트 초기 설정에 대한 중복은 불필요한 부분이다. 어느정도 경험 있는 프로그래머에겐 시간 낭비하게 하는 구성이다. 총평. 초보에겐 추천. 다른 자바스크립트 입문 서적을 본후에 함수에 대해 더 알고 싶을때. 경력자에겐 비추천.

책리뷰- 자바스크립트 스킬업 3/e (2021, 에이콘)

매우 작은 글자가 가득찬 책. 설명이 매우 많고 문장이 길기 때문에 번역자가 고생했을 책이다. 굉장히 광범위한 분야를 다루는데 쉽지도 어렵지도 않게 어중간하고 구성도 체계없이 뜬금없다. 초보자한테는 어렵고 경험자한테는 별도움 안되는 책이다. 저자의 출판경험이 별로 없는거 같다. 총평. 어중간한 책으로 추천하지 않는다.

책리뷰- Electron 애플리케이션 개발 (2017, 프리렉)

예제를 만들면서 배우는 구성이다. 자바스크립트, Node.js, 리액트 등 기반 지식이 필요하다. 소스코드를 나열하는 방식이라 설명이 부족하다. Electron에 대한 관련 도서가 없기 때문에 책으로 보고 싶다면 볼 수 밖에 없다. 총평. 책 내용 전반적으로 아쉽다. 하지만 Electron 관련서적으로 대안이 없다.

책리뷰- Node.js로 서버 만들기 (2021)

  Node.js로 서버 만들기 (2021) 로드북 학교 실기 수업에 쓸거 같은 구성이다. 대략적인 설명과 예제, 마지막에 정리와 숙제까지.. 학교 수업에 사용하는 교재들이 의례 그렇듯 내용이 건실하지 못하다. 총평. 권하지 않는다.

책리뷰- Node.js로 프로그래밍 시작하기 (2020)

Node.js로 프로그래밍 시작하기 (2020) 에이콘출판사 서비스를 개발하면서 설명하는 구조로 되어 있다. 코드와 주석으로 설명해야 더 쉬운데 글로 설명하기 때문에 오히려 피곤하고 난해하게 느껴진다. 소스를 필요한 부분만 발췌해서 설명하기 때문에 이해하기 어렵다. 책에서 다룬 분야가 적고, 깊이감이 낮아서 그런지 전문성이 좀 떨어지는 느낌이다. 총평. 권하지 않는다.

책리뷰- 한 권으로 끝내는 Node & Express (2021)

한 권으로 끝내는 Node & Express (2021) 한빛미디어. 여러 광범위한 분야를 다룬다. 개발해야 할 때 진입점이 되어 리서치에 드는 시간을 절약할 수 있다. 오랜동안 개발했던 저자라서 경험과 기술에 대한 저자의 평가와 이해가 좋다. 라이브러이에 대한 저자의 평도 좋다. 실제 서비스를 개발하는데 필요한 분야를 거의 대부분 다룬다. 번역이 굉장히 매끄럽게 잘되어 보기 편하다. 총평. 개발하면서 가지고 있으면 좋을 책이다.

책리뷰- Node.js 교과서 2판 2020년

광범위한 분야를 다루고 있다.  각종 설치에 대해 스샷으로 자세해서 초보에게 좋다. 각 분야에 대한 진입점이 될 수 있다. 검색에 드는 시간을 줄여 준다. 자바스크립트나 웹개발에 대한 기반 지식이 있어야 무리 없이 읽을 수 있다. 총평. 초보라면 레퍼런스로 보유하는 것도 좋다. 초보를 벗어났다면 "한 권으로 끝내는 Node & Express"(한빛미디어)가 더 괜찮다.

오픈소스 자바 런타임 설치. OpenJDK. java runtime Environment.

오픈소스 자바 런타임 설치. 자바 라이센스가 변경되어 오라클 자바는 무료가 아니다. 간단히 설명하면 개발, 개인사용 등의 목적이 아니면 돈을 내고 사용해야 한다. 자세한 사항은 아래 라이센스 문서를 참고한다. Oracle Technology Network License Agreement for Oracle Java SE https://www.oracle.com/downloads/licenses/javase-license1.html 라이센스가 바뀐 이후부터 자바를 상업용으로 무료로 사용하려면 무료로 공개된 자바 런타임을 사용해야 한다.  무료들은 배포만 할 뿐 사후 지원을 해주진 않는다.  사후 지원이 필요하면 오라클에 돈을 내야 한다. JDK에는 JRE가 포함되어 있다.  보통 JRE만 따로 배포하지 않으므로 JDK을 받아 설치해야 한다. JRE, JDK가 무엇인 지에 대한 참고 사항. - JRE(java runtime Environment)는 자바로 만든 프로그램을 실행할 수 있게 해주는 것이다. - JDK(Java Development Kit)는 자바 프로그램을 만들 수 있는 개발킷이다. 윈도우에서는 msi 확장자 파일을 받아 자동설치 하는게 편하다. 윈도우에서는 java_home 환경변수를 설정해야 자바프로그램이 실행된다. zip으로 받으면 몇 가지 설정을 직접 해야 한다. 아래 위키에 OpenJDK 들의 리스트가 정리되어 있다. https://en.wikipedia.org/wiki/OpenJDK 가장 신뢰할 수 있는 배포처. http://openjdk.java.net/ https://www.microsoft.com/openjdk https://aws.amazon.com/ko/corretto/ 가장 배포가 빠른곳. https://github.com/ojdkbuild/ojdkbuild

TL866 프로그래머를 사용하여 attiny85에 아두이노 바이너리를 업로드 하는 방법.

이미지
기록 저장용으로 글을 작성 합니다. 이 방법보단 usbasp를 사서 하는게 더 간편할 거 같습니다. TL866 프로그래머를 사용하여 attiny85에 아두이노 바이너리를 업로드 하는 방법. 아래 이미지를 클릭하면 크게 볼수 있습니다. - 설치. 아두이노 IDE. https://www.arduino.cc TL866 프로그래머 설치. http://www.autoelectric.cn/en/download.html - 작업 순서. 파일 - 환경설정 에서  '추가적인 보드 매니저 URLs' 에  아래 링크를 기입합니다. https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json 다음 동작중 자세한 출력 보이기 '컴파일' 을 체크합니다. 툴 - 보드 매니저 를 클릭합니다. 사진에 보이는 attiny 를 검색하여 설치합니다. 위 이미지의 설정을 셋팅합니다. 포트는 설정하지 않아도 됩니다. 스케치 - 컴파일된 바이너리 내보내기 를 싱행합니다. 아래 로그에서 hex 확장자 파일이 attiny85에 업로드할 바이너리 입니다. Select IC 를 ATTINY85 로 세팅합니다. 파일 - 오픈 하여  아두이노에서 컴파일한 hex 확장자 파일을 엽니다. file load options 는 위의 그림과 같이 합니다. ATTINY85 칩을 장작한 후에 Device - Program 를 클릭합니다. 위와 같은 창이 열리면 Program 을 클릭하면 됩니다.

Visual Studio 빌드 후 이벤트 명령줄.

 프로젝트 속성 -> 빌드 이벤트 -> 빌드 후 이벤트 명령줄. 하위 폴더까지 복사할때. xcopy "$(ProjectDir)$(OutDir)*" "$(ProjectDir)_exe\" /E /Y 파일만 복사할때. copy /Y "$(ProjectDir)$(OutDir)*" "$(ProjectDir)_exe\" /Y 덮어쓸때 물어보지 않고 덮어씀. /E 빈폴더 포함하여 폴더 복사. xcopy 만. "$(ProjectDir)$(OutDir)*" 빌드한 파일들의 경로. "$(ProjectDir)_exe\" 프로젝트 폴더에 "_exe" 폴더의 경로.

istio, kubernetes, msa 간단 설명.

msa(MicroService Architecture) 예전 서버는 대체로 계정, UI, 로직이 하나의 프로그램에 구현되어 있었다. 이를 Monolithic Architecture 이라고 한다. MicroService Architecture는 계정, UI, 로직을 다른 프로그램으로 구현하고 경우에 따라 머신도 나눈 것이다. istio  msa(MicroService Architecture)가 머신, 프로세스가 여러군데로 분산되어 있어 통신할 수 있는 수단으로 사용한다. 대체로 보안, 모니터링 등의 부가기능을 붙여서 사용한다. kubernetes 바이너리, 라이브러리, OS설정 등을 컨테이너에 담아 일원화 하여 배포한다. msa(MicroService Architecture)가 여러개의 단위로 나뉘어 개발되다 보니 일원화된 OS, 런타임 환경 구성에 많은 자원이 소모되게 된다. 이를 해결하기 위한 기술이다. 결론. PC업계가 점차 한계산업으로 이행되어 고도화된 회사들은 글로벌한 거대한 서비스를 하게 됐다. 예로 구글, 애플, 아마존 등이 있다. 또한 IT기술의 대중화로 국가 서비스가 IT로 이뤄진다. msa는 분산처리의 간편함으로 대용량 서비스를 원활하게 할수 있고 부차적으로 개발의 단순화, 유지보수의 단순화 등을 이뤄 서비스에 비지니스 적용이 신속하고 안정적으로 이뤄질수 있게 한다.  msa로 구현된 서비스의 배포를 쉽게 하기 위해 kubernetes가 사용되고 MicroService간에 통신을 하기위해 istio가 사용된다. msa, istio, kubernetes는 구글, 애플, 아마존, 국가서비스 같이 거대한 서비스를 하는데 적합한 기술이다. 구현하려는 서비스의 규모와 성격에 따라 선택하거나 일부분만 따로 선택해 사용할수 있다.

android Settings Activity 구현. kotlin

아래와 같이 액티비티를 추가한다. Android Studio  File - New - Activity - Settings Activity  res - xml 에 root_preferences.xml 와 비슷한 파일명을 열어 아래와 같이 수정한다. Activity <PreferenceScreen xmlns: app ="http://schemas.android.com/apk/res-auto" xmlns: android ="http://schemas.android.com/apk/res/android" > <PreferenceCategory app :title ="@string/messages_header" > <EditTextPreference app :key ="test1" app :title ="@string/signature_title" app :useSimpleSummaryProvider ="true" /> <SeekBarPreference app :key ="test2" app :title ="font sizw" app :iconSpaceReserved ="false" app :showSeekBarValue ="true" app :defaultValue ="15" app :min ="10" android :max ="35" /> <ListPreference app :defaultValue =

android RecyclerView 심플 구현. kotlin

텍스트뷰만 있는 간단한 RecyclerView 구현이다. activity layout xml 파일에 RecyclerView 을 추가한다. <androidx.recyclerview.widget.RecyclerView android :id ="@+id/text_list" android :layout_width ="match_parent" android :layout_height ="match_parent" app :layoutManager ="androidx.recyclerview.widget.LinearLayoutManager" /> listitem_contents.xml 파일을 layout 폴더에 추가한다. <? xml version ="1.0" encoding ="utf-8" ?> <TextView xmlns: android ="http://schemas.android.com/apk/res/android" android :id ="@+id/item_text" android :layout_width ="match_parent" android :layout_height ="wrap_content" android :gravity ="center_vertical" android :paddingStart ="?android:attr/listPreferredItemPaddingStart" android :paddingEnd ="?android:attr/listPreferredItemPaddingEnd" /> Adapter 클래스를 추가한다. class ContentsAdapter( private val textList : Muta