https://pub.dev/packages/grouped_list grouped_list: ^4.1.0 https://pub.dev/packages/grouped_list/example import 'package:flutter/material.dart'; import 'package:grouped_list/grouped_list.dart'; void main() => runApp(MyApp()); List _elements = [ {'name': 'John', 'group': 'Team A'}, {'name': 'Will', 'group': 'Team B'}, {'name': 'Beth', 'group': 'Team A'}, {'name': 'Miranda', 'group': 'Team B'}, {'..
https://www.youtube.com/watch?v=2g8DsOSreqk 30분 안에 배우는 Dart 언어 https://www.youtube.com/playlist?list=PLgRxBCVPaZ_1j9Z66HEu71ST3GqssBdma 개남 플러터 유튜브 리스트 https://docs.flutter.dev/development/ui/widgets 위젯 https://api.flutter.dev/flutter/material/Icons-class.html 기본 머터리얼 아이콘들 https://github.com/flutter/gallery 플러터 갤러리 예제 깃헙 https://gallery.flutter.dev/#/ 플러터 갤러리 웹 https://flutter.github.io/samples/#..
Business Logic Component : MVC 가 있고 MVVM 이 있다 하면 MVVM 이라 볼 수 있는데 그 중에서도 거의 Model 이라고 볼 수 있는 부분이지만 통틀어 Business 로직이라 볼 수 있는 부분을 UI 와 완전히 분리 시킨다. Provider : React 의 Provider 와 거의 같다고 보면 된다. GetX: 오호라~
React Boundaries 라는 것은 선언형으로 전체 에러처리에 좋다. 그리고 react- https://www.youtube.com/watch?v=hszc3T0hdvU react-error-boundary 라는 라이브러리를 추가로 사용해야 한다. react-query 와 같은 api 단계의 에러 처리는 onError 부분에서 처리해주면 좋다. react-error-boundary 를 사용한 React Boundaries 는 전체 에러 처리용. (앱 전체에 걸쳐 예기치 않은 에러 모두 포함) api 단계의 에러처리 부분은 해당 부분 에러처리를 위한 것. 또한 api 부분 외에도 각 포인트 별로 에러처리가 필요하다면 적절한 곳에 포인트를 주면 된다. Exception 와 Error State 는 다르게..
번역: https://react-query.tanstack.com/guides/paginated-queries Paginated/Lagged Queries 페이지네이션 데이타를 렌더링하는 것은 리액트 쿼리에서 매우 일반적인 UI 패턴입니다. 단지 페이지 정보만을 포함하면 작동합니다. const result = useQuery(['projects', page], fetchProjects) 하지만, 이 예제를 실행하면 이상한 걸 알 수 있습니다: success / loading 상태를 들락날락거립니다. 왜냐하면 각 새로운 페이지는 새로운 쿼리로 취급되기 때문입니다. 이러한 부분은 적절하지 않습니다. 그리고 운 나쁘게도 많은 툴들이 이렇게 동작합니다. 하지만 리액트 쿼리는 아닙니다! 예상하듯이, 리액트 쿼리는..
On arriving in Devonport, I had looked for backpackers and I could find two backpackers. Devonport backpackers and the other is Tasman backpackers. There was Devonport YHA but it is changed to a mental hospital. And One more backpackers in Devonport city but it’s not on google map. The name is Molly Malones Irish Pub. I think Molly Malones Irish Pub is the best. But not easy to find parking area..
Today, in the end, I’ve got a job. The strawberry picking now. I don’t know exactly how much an hourly rate is. Anyway current days, there isn’t a job except this. But there is the lowest hourly rate legally. So first I trust the owner will give me as much as that. I’ve arrived here AU already almost a month. Not a month, about three weeks. Until now from the first week passed I was busy. So I’d..
confluence: 요구사항 정의서 및 제안요청서 (RFP, Request For Proposal) 를 뽑아내기 위한 토론, 협의 문서화 도구. 여기서 요구사항을 정의하고 RFP 도 뽑아내어 RFP 를 바탕으로 프로젝트를 진행할 사람을 모집할 수 있다. 해당 요구사항 들은 이슈화 되어 실제 프로젝트 진행시 jira 에서 백로그 > 에픽 > 스토리 > 기술작업 으로 분류되어 기능 구현을 수행한다. jira: 요구사항을 바탕으로 이슈를 만들어 관리한다. 이슈는 백로그, 스토리 이다. 백로그는 대기열에 있는 이슈들. 스토리는 이번 스프린트에 포함된 이슈들이다. 에픽은 이슈들을 폴더처럼 그룹화 시킨 것. 스토리 구현에 실제로 기술적으로 구현해야할 사항들이 기술작업이다. bitbucket: 실제 소스 코드 저장..
https://www.apple.com/kr/newsroom/2021/09/apple-will-open-developer-academy-in-pohang-city-next-year/ Apple은 Apple Developer Academy를 내년 포항에 개소할 예정이다 Apple Developer Academy와 Apple 최초의 제조업 R&D 지원센터는 한국 개발자와 중소기업, 학생들을 지원하기 위해 포항에 Apple이 새로이 단행하는 주요한 투자의 일환이다. www.apple.com https://www.joongang.co.kr/article/25009933#home 세계 최초로 애플 두곳 들어선다…포항공대, R&D·개발자 아카데미 '둥지' 제조업에 특화한 세계 최초 애플 제조업 R&D 지원센터와 미..
인공지능(AI)은 아직도 스스로 민주화할 수 없기 때문에, 모두가 사용할 수 있도록 도움을 줄 것 래트너는 구글의 엔지니어 디렉터로 취임해 구글이 개발한 기계 학습 엔진 '텐서플로(TensorFlow)' 관련 개발에 종사할 것이라고 전했다. 텐서플로는 2015년 11월에 오픈 소스화해 무료로 공개되어 있으며, 래트너가 참가하게 된 구글 브레인은 인공지능 프로그래밍 절차를 간소화하기 위한 텐서플로의 개발 부문이기도하다. 텐서플로는 이전에 사용된 클로즈드 소스인 '디스트빌리프(DistBelief)'의 역할을 거의 대체해 구글의 서비스 연구 및 생산에서 사용되고 있으며, 구글을 지탱하고 있는 핵심 기계 학습 라이브러리의 하나로 자리매김했다.
우선 dependency injection (Inversion of Control, IoC) 만 언급. spring boot jsp mybatis mariadb basic gradle with intellij ultimate lombok 이곳에서도 언급했듯이 프레임워크라 함은 기본적으로 DI 기능을 제공하는 것을 말한다. 조립하듯이 해당 규격에 맞다면 다른 구현체로 갈아 끼울 수 있도록 하는 것을 말한다. 여기에는 Factory Pattern, Stratege Pattern, Dependency Inversion Principal 의 디자인 패턴이 사용될 수 있다. 전략패턴은 인터페이스들 정의하고 로직을 분리하여 사용하고자 하는 곳에서 가져다 사용하는 것이고 DIP 는 사용하고자 하는 곳에서 인터페이스를..
infinite scroll 을 구현하는 경우 useQuery 로는 대응이 안된다. infinite scroll 의 경우 page 가 한개씩 늘어나면서 늘어난 page 가 데이터에 추가되는 식이다. 참고로 pagination 은 새로운 page 로 데이터가 갱신된다. react-query 는 useQuery, useInfiniteQuery 를 대표적으로 사용한다. pagination 은 useQuery 로 대응한다. https://react-query.tanstack.com/reference/useQuery https://react-query.tanstack.com/guides/paginated-queries https://react-query.tanstack.com/guides/infinite-quer..
자꾸 한번씩 의심을 하게 된다. redux 대신 좀 더 쉽게 사용할 수 있는 전역 상태 라이브러리는 없는가에 대해서... 하지만 다른 것들은 쉬운게 아니라 기능이 없는 것이다. redux 가 아직까지는 제일 낫다. 그러나 recoil 은 아직 experimental 인데 이 경우는 아직 잘은 모르겠고 (왜냐하면 리액트 팀의 공식 라이브러리이니깐...) constate 라던가 뭐 이런건 그냥 거의 contextAPI 와 hook 를 사용한 단순한 라이브러리 정도여서 그냥 기능이 없을 뿐이지 심플한 것이 아니다. React 의 useState, useReducer 같은 거 사용한 contextAPI 와의 조합 정도... 전역 상태는 redux-toolkit 이 현재로서는 최고의 선택. flux 패턴의 구현체..
정리하면, sass 와 같은 css preprocessor 적용, styled-components 와 같은 css-in-js 도 적용. 추가적인 헬퍼인 polished, classnames 같은 것 추가. reset 을 전역 scss 파일에 추가해서 적용해주고, postcss 에서 필요한 부분 추가해주면 되는데 이는 보통 browerslist 설정에 대부분 다 포함되어 있다. scss 즉, sass 용 preprocessor 는 node-sass 는 deprecated 되었으니 dart-sass 를 사용해야한다. 명령어는 npm install sass 이다. postcss 란 autoprefixer 나 flexbox 또느 grid 관련 오류라던가 하는 등등의 몇몇 고려해야할 사항들을 위해 컴파일된 css..
git 에서 private repo 접근이라던가 push 같은 것을 할려면 인증을 해야 하는데 https 방식이 있고 ssh 방식이 있다. ssh 방식은 ssh key 를 맥북에서 생성하고 git 의 SSH keys and GPG keys 에 등록하면 ssh url 을 이용할 때 권한이 인증되어 관련 작업을 할 수 있다. https 방식이 기존에 id 와 password 방식으로 인증을 하던 것인데 이제 password 즉 계정 비밀번호로 접근하는 것은 지원되지 않는다. 대신 Developer settings 에서 Personal access tokens 에서 token 을 생성하여 password 입력하는 곳에 입력해주면 된다. 보통은 git repo 를 생성할 경우 https 방식의 url 을 보여주..
UI 는 Main Thread 에서 갱신을 관리한다. UI 갱신이 한 업데이트 사이클에 우선적으로 이루어져야 할 경우 GCD 의 DispatchQueue.main.async {} 를 사용할 수 있다. 아래는 viewDidLoad, viewWillAppear 등과 같은 일반적으로 사용하는 UIView 의 메소드들 외에 좀 더 내부적으로 디테일한 방식의 메소드들을 설명해놓았다. 기본적으로는 Main Run Loop (위에 언급한 GCD Main Thread) 에서 UI 의 갱신을 담당한다. 이곳에 무거운 연산로직을 넣을 경우 화면이 멈출 수 있다. DispatchQueue.main.async { 이곳에 무거운 연산로직을 넣지 말라. } 화면 갱신이 먼저 수행되어야 할 것을 넣어주어야 한다. 이벤트 큐가 있어..
이 글에서 언급된 함수형 프로그래밍 방식이 최신의 트렌드인 것으로 생각하였지만 iOS 개발을 하며 잘못됨을 인지. React 와 함수형 프로그래밍 Functional Programming vs OOP 함수형 개발방식은 하나의 옵션일 뿐이다. 위의 글에서 언급된 객체지향개발방식 + 쓰레드 의 문제로 지적한 부분이 객체지향방식으로 개발을 했을 때 추상화를 위해서 메소드를 정의하는데 해당 메소드가 어떤 동작을 하라는 명령형 방식이되고 그럴 경우 해당 명령형 메소드가 동작을 할 때 선점형 방식인 쓰레드에서 동작할 것이고 그럴 경우 어떤 컴포넌트의 state 에 영향을 미칠 때 여러군데에서 부수효과가 발생할 경우 해당 state 에 대해 의도치 않은 오류를 야기할 수 있을 것 같다고 문제 제기를 하였다. 하지만 ..
정리해보면 nextjs + react-query + redux-toolkit + rtk-query + react-hook-form + yup 의 구성이 좋다. SSR 이 아니라면 CRA (create-react-app) 로. SSR 이면 CNA (create-next-app) 로. 물론 모두 typescript 를 적용. React-Query, RTK-Query, SWR 등은 요청 캐싱용 라이브러리이지 리액트에서 말하는 컴포넌트의 상태, 리덕스의 전역 상태와는 관련이 없다. Hook 와 단일자원(웹소켓이라던가 DB 라던가)의 조합은 마치 전역 상태와 같은 늬앙스를 줄 수 있는데 이는 Hook + 단일자원 이 원래 그러한 역할을 할 수 있기 때문이다. 이것이 늬앙스가 비슷하다하여 마치 리덕스 전역 상태를 ..
* typescript 시작. npm init -y npm install typescript npx tsc --init npm install typescript 를 해주면 node_modules/.bin/tsc 라는 바이너리가 설치된다. npx tsc 명령어는 이를 실행시킨다. 만약 .bin 에 해당 명령어가 없다면 npx 서버 측의 것을 가져와 실행한다. RegExp, setTimeout, console 등 기본 javascript 예약어 들 인식 못하는 것은 npm i -g typescript 하고 설정에서 typescript 실행경로를 Bundled 로 해주니 해결되었음. src/1.ts 생성. npx tsc 라고 입력하면 컴파일 된다. npm install lodash npm install @ty..
1050 x 600 px 로 작업한 뒤 일러스트로 옮기면 (@ 300 DPI 가 된다. 25.4 mm 가 1 inch 이다.) mm 단위로 크기를 줄일 때 88.9mm x 50.8mm 로 해주면 된다. (90mm x 50mm 기준 명함일 때) 실제로는 인쇄소에서 아래쪽이 1mm 정도 잘릴 수가 있다고 한다. figma 에서는 PDF 로 변환하고 나서 일러스트레이터 로 옮기면 ai 파일로 저장할 수 있다. (이상하게 SVG 로는 일러스트에 나오지 않았다. 따로 브라우저로 열어보면 잘 나오는데 래스터 이미지 부분이 일러스트에서는 안나왔다.) 인쇄소는 보통 cs5 기준 버전을 많이 가지고 있어서 cs5 버전으로 ai 파일을 만들어 보내주면 된다. 기준 캔버스는 A4 용지 크기에 figma 에서 뽑은 PDF 파..