Array 문서 의 Removing Elements 부분을 보면 popLast는 있지만 popFirst가 없는 것을 볼 수 있습니다. popFirst를 검색해보면 두개가 나오는데, 첫번째 popFirst 는 ArraySlice에 있고 두번째 popFirst는 Collection에 있네요! 그래서 popFirst를 쓰고 싶으면 array에 바로 못쓰고 arraySlice에 써줘야합니다,,, 위의 한 줄을 풀어써보면 이렇게 되는데요, array의 range를 구해서 arrayslice를 만들어준 것입니다! 좀 불편하니까 extension을 만들어줄 수 있습니다. 그럼 이제 array에 바로 편하게 쓸 수 있습니다 [ 참고 ] 참고로 이렇게 extension 안만들고 그냥 여기 removeFirst 쓰면 되는..
Python의 Built-in Function 중 any를 살펴보겠습니다. 첨부한 사진은 3.8버전 문서이지만 파이썬 2~~ 버전도 제공하는 fuction입니다. any는 iterable 객체를 받으며 iterable의 element 중 하나라도 true 라면 true를 반환합니다. true가 하나도 없다면 false를 반환합니다. 만약 iterable이 empty여도 false를 반환합니다. (참고로 iterable의 의미는 element를 하나씩 차례로 반환 가능한 object를 말하며 list, tuple, dictionary 등이 있습니다.) [ 간단 예제 ] 간단한 예제를 살펴보겠습니다. (출처: www.w3schools.com/python/ref_func_any.asp) # List list ..
마틴 파울러 - 리팩터링 (2판) 의 4장 내용 중 기억하고 싶은 것 기록 ✏️✏️ [1] 테스트 코드의 가치 프로그래머들은 대부분의 시간을 디버깅에 쓴다. (실제 코드를 작성하는 시간의 비중은 그리 크지 않다) 컴파일할 때마다 테스트를 돌렸더니 생산성이 급상승했다. 디버깅 시간이 크게 줄어든 것이다. 직전까지 테스트가 성공했다면 마지막 테스트 이후에 작성한 코드에서 버그가 발생했음을 알 수 있다. 테스트를 자주 돌려봤기 때문에 버그가 발생한 지점은 조금 전에 작성한 코드에 있다는 것을 알 수 있고 그로인해 디버깅 시간이 크게 줄어든다. [2] 마틴파울러에게 배우는 좋은 테스트 습관 1. 자주 테스트하기 자주 테스트하라. 작성 중인 코드는 최소한 몇 분 간격으로 테스트하고, 적어도 하루에 한 번은 전체 ..
Developing packages & plugins 문서를 보고 flutter package를 만들고 pub.dev 에 publish 해보겠습니다. [1] 패키지 구성요소 package의 최소 구성요소로는 - pubspec.yaml 파일 (package name, version, author 등이 명시되어있는 파일) - lib 디렉토리 (코드 모음) 가 있습니다. [2] 패키지 타입 패키지 타입에는 두 종류가 있는데요 - Dart Pacakage - Plugin Pacakage Dart Packacage는 단순히 Dart 파일만 제공하는 패키지 입니다. 보통 유틸리티 함수들을 패키지로 제공하거나 플랫폼 별 분기가 필요없는 파일을 제공하고 싶을 때 사용하는 것 같습니다. Plugin Package는 Fl..
Marquee Widget 만들기 (1) - alternate 에서 이어지는 글입니다. 이 글에서는 1번 타입 (계속 한방향으로 흘러가는 Marquee) 을 만들어본 것을 기록합니다. 참고로 Marquee는 flutter package가 이미 몇개있는데, text 하나만 받을 수 있게 구현되어있더라구요,, 저는 이미지 + text로 된 list를 받을 수 있는 위젯으로 만들어보려고 합니다. text만 scroll하기 원하신다면 이미 잘되어있는 package를 쓰시기를 추천드립니다. [1] 코드 이렇게 Marquee 위젯을 만들어주고 앱에서 테스트 해봅니다. [2] 코드 설명 이전 글의 alternate marquee와 다른 점은 build 메소드와 scroll 메소드 밖에 없는 데요 이거 위주로 살펴보겠..
[1] 용어 보통 Marquee 라고 부르는 것은 두가지 타입이 있습니다. 1) 계속 한 방향으로 흘러가는 Marquee 2) 왼쪽 갔다가 오른쪽 갔다가(?) 를 계속 반복하는 Marquee 이 두개를 각각 나눠 말하는 일반적인 용어를 찾고 싶었는데 못찾았습니다,,, 보통은(특히 웹에서) 1번 타입을 Marquee라고 많이 부르고 있기는 합니다,, (marquee는 현수막이라는 뜻이에요) 그러면 2번을 PingpongMarquee 라고 네이밍해서 일단 만들어보겠습니다. (이름이 잘 안떠오르네요,,😳) ===> (추가) 여기 블로그 에서 봤는데 html에서는 1번을 scroll, 2번을 alternate 속성이라고 부른다고 합니다 [2] PingpongMarquee 만들기 # Step 1. 우선 state..
[ 목표 ] RIBs 에서 Template과 template을 xcode에 설치할 수 있는 스크립트를 제공하는 것처럼 두개의 템플릿 (Reactor Template / Reactor Unit Tests Template)과 install 스크립트를 만들어보기! 그리고 Reactor Template에 옵션 (접근제어자를 public으로 할 건지 internal로 할 건지) 을 추가해보기! [1] 초기 setup 우선 reactor-tooling 이라는 폴더를 만들고 Reactor.xctemplate Reactor Unit Tests.xctemplate 이라는 두개의 빈 폴더를 만들어줬습니다. 그 다음 RIBs의 install 스크립트 를 적당히 수정해서 폴더로 가져와줍니다. #!/usr/bin/env sh ..
마틴 파울러 - 리팩터링 (2판) 의 1,2장 내용 중 기억하고 싶은 것 기록 ✏️✏️ [1] 리팩터링하는 이유 리팩터링의 궁극적인 목적인 개발 속도를 높여서 더 적은 노력으로 더 많은 가치를 창출하는 것이다. 아래 그래프처럼 내부 설계가 잘 된 소프트웨어는 새로운 기능을 추가할 지점과 어떻게 고칠지를 쉽게 찾을 수 있다. 사람들이 빠지기 쉬운 가장 위험한 오류는 리팩터링을 '클린코드'나 '바람직한 엔지니어링 습관' 처럼 도덕적인 이유로 정당화하는 것이다. 리팩터링은 오로지 경제적인 이유로 하는 것이다. (개발 기간 단축, 기능 추가 시간 단축, 버그 수정 시간 단축) 스스로 이렇게 인식하고 다른 사람과 대화할 때도 이 점을 명심하라. 리팩터링하도록 이끄는 동력은 어디까지나 경제적인 효과에 있다. 이를 ..
collections - Container datatypes 에서 딕셔너리 서브클래스 3개를 살펴보겠습니다. 일반적인 딕셔너리랑 다르게 조금 특별한 점이 있습니다. [1] defaultdict 딕셔너리에서 존재하지 않는 키를 조회할 경우 KeyError exception이 납니다. 하지만 defaultdict은 존재하지 않는 키를 조회하면 에러가 나는 것이 아니라 설정한 디폴트 값을 기준으로 해당 키에 대한 아이템을 딕셔너리에 추가해줍니다. defaultdict의 first argument로 default_factory 를 제공해주면 됩니다. 디폴트값을 10이라고 해줄게요! '라이언' 이라는 키값이 존재하지 않지만 KeyError도 안나고 디폴트 값을 기준으로 아이템을 딕셔너리에 추가해주는 것을 볼 수 ..
파이썬은 string formatting을 다양한 방식으로 지원해왔습니다. 1) %-formatting name = 'Fred' age = 50 introduce = 'My name is %s, my age next year is %s' % (name, age+1) print(introduce) // 결과 My name is Fred, my age next year is 51 2) str.format name = 'Fred' age = 50 introduce = 'My name is {}, my age next year is {}'.format(name, age+1) print(introduce) // 결과 My name is Fred, my age next year is 51 3) string.Temp..
- Total
- Today
- Yesterday
- ipad multitasking
- Watch App for iOS App vs Watch App
- 장고 Custom Management Command
- Flutter 로딩
- flutter deep link
- Flutter getter setter
- Flutter Spacer
- Django Heroku Scheduler
- flutter dynamic link
- 플러터 얼럿
- Django Firebase Cloud Messaging
- flutter 앱 출시
- cocoapod
- 구글 Geocoding API
- 장고 URL querystring
- METAL
- github actions
- Flutter Clipboard
- Django FCM
- ribs
- Flutter Text Gradient
- Python Type Hint
- flutter build mode
- DRF APIException
- Sketch 누끼
- SerializerMethodField
- drf custom error
- 플러터 싱글톤
- PencilKit
- Dart Factory
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |