본문 바로가기

Dead Code

(130)
LEPTON - GIST, code snippets manager "GIT, GITHUB..." 개발자가 아니면서 GITHUB를 얼마나 쓰겠느냐 하겠지만, 이곳 저곳에서 프로그래밍 코드는 전체가 아니더라도 조각조각 사용할 일이 많다. 메모장에 덕지덕지 쓰지 않더라도 GIST를 쓴다면, 깔끔하게 정리가 가능한데.. 이를 더 편하게 해주는 프로그램이다. 게다가 현재까지는 무료인 LEPTON. 더 나은 프로그램이 있을지 모르겠지만, 아직 불편함을 잘 모르겠다. 티스토리 유저라면, 개발자가 아니라도 CSS 등을 저장하기 위해 꼭 필요하지 싶다. Lepton - A Lean Snippet Manager powered by GitHub Gist GitHub Login Credentials or token, whichever you like! A token is an alterna..
[플러터] textbutton Hover 설정 Flutter 웹에서는 MOUSE라는 디바이스에 대한 설정도 필요하게 되었다. 이로 인해 여러가지가 귀찮게 되었다. ㅋㅋ TextButton( style: ButtonStyle( overlayColor: MaterialStateProperty.all(Colors.red), backgroundColor: MaterialStateProperty.all(Colors.black12), ), onHover: (hover) { setState(() { _buttonColor = hover ? Colors.white : Colors.black; }); }, onPressed: () {}, child: Text( 'To second Page', style: TextStyle(color: _buttonColor), ),..
[플러터] SnackBar / AlertDialog Flutter 2.0부터 Scaffold.of(context).showSnackBar 는 deprecated. ScaffoldMessenger.of(context).showSnackBar 로 변경하여 사용하는데, 더 이상 Builder를 따로 쓰지 않아도 되는 듯하다. //button1 ElevatedButton( child: const Text('Show SnackBar'), onPressed: () { ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: const Text('this is snackbar'), action: SnackBarAction( label: 'Undo', onPressed: () { // tab snackbar }),..
[파이썬] fatal error in launcher : unable to create process using... 환경설정만큼 짜증나는게 없다. 아나콘다 말고, VSCODE를 활용해보려고 하니, PIP 명령어에서 이런 에러가 뜬다. fatal error in launcher : unable to create process using... 해결책은 pip> 명령어 앞에 python -m 을 적어주는 것으로 가능하다. -m 옵션의 뜻을 보자 하니.. -m mod : run library module as a script (terminates option list) 음.. 모르겠고, 그냥 하자.
[플러터] Prefer const with constant contructors 언제부터인가, 습관적으로 const 키워드는 안쓰는데, 이런 에러가 난다. Prefer const with constant contructors 자동으로 추가되는 flutter_lints 때문이리라. 없애는 방법은? 아래와 같이 const 키워드를 붙이라고 밑줄이 가 있다면, 해당 파일 내에서 전체 없애기 import 이전에 아래와 같이 적어준다. // ignore_for_file: prefer_const_constructors 특정 줄만 없애기 해당 라인 위에 아래와 같이 적어준다. // ignore: prefer_const_constructors 새로운 기능이 있으면, stack over flow 가 아니라 설명서를 봐야하거늘 ㅉㅉ
[플러터] RAISEDBUTTON DEPRECATED 플러터 RAISEDBUTTON DEPRECATED 나같은 비전공자에게 신규 프레임워크는 처음부터 부담이 적다는게 장점이(었)다. 플러터는 패키지도 적고 해서, 부담이 적었는데, 왠걸.. 올 것이 왔다. DEPRECATED 코드가 생기기 시작했고, NULL SATETY는 기름을 붓는다. 가장 많이 쓰는 RAISEDBUTTON이 DEPRECATED 될 줄 몰랐는데, 이왕 이렇게 된거 새로 생긴 똑!같!은! 버튼을 써보자. ElevatedButton 이름부터 심상치 않다. 선뜻 애착이 가지 않는다. STYLE을 주는게 ButtonStyle과 MaterialStateProperty로 인해 복잡해진 느낌이다. 기능이 좋아졌으려나? 구성의 자유도가 올라갔으려나? 오랜만에 켜본 플러터.. 일보 전진 후에 이십보 후퇴..
[파이썬] 확장자별로 폴더 생성, 파일 이동 (1) 폴더정리 한 폴더 안에 여러 확장자들이 섞여 있을 경우, 확장자별로 폴더를 생성하여, 파일을 이동하는 기능을 예전에, 엑셀VBA로 심심해서 만들어본 적이 있다. [엑셀VBA] 폴더 생성, 확장자별로 파일 이동 엑셀VBA로 폴더 생성, 확장자별로 파일 이동 카메라로 사진을 찍었는데, SD카드의 같은 폴더 안에, jpg, mov, raw 파일이 한꺼번에 들어있다. 확장자별로 폴더를 만들고, 확장자에 따라 파일을 이동시 sunnybong.tistory.com 하지만, 엑셀을 켜고 실행을 해줘야하기 때문에, 심각한 사용상 불편사항이 있다. 파이썬으로 하면 따로 프로그램을 실행하지 않아도 되기 때문에, 가장 큰 불편사항이 해결 된다. 오랜만에 접하는 파이썬, 기능도 많이 좋아졌지만, 라이브러리 찾기 귀찮아서 노가..
[다트] 구구단 구구단을 짜보자 다트로는 플러터 코드만 짯는데, 다트도 피해갈수 없다. import 'dart:io'; main(){ final fileName = "gugu.txt"; File(fileName).writeAsString('GUGUDAN\n').then((File file) { for (int tNum = 1; tNum < 10; tNum++) { for (int dan = 2; dan < 10; dan++) { int result = dan * tNum; String txt = '$dan*$tNum=$result' + '\t '; if (dan == 2) { txt = '$dan*$tNum=$result' + '\t'; } file.writeAsStringSync(txt, mode: FileMode.a..
[다트] 다트 FACTORY 클래스 샘플코드 플러터 곳곳에서 FACTORY를 만날수 있고, 여러 강좌에서 FACTORY에 대한 설명을 볼수 있다. 낯은 익지만, 정확한 용법은 비전공자에게 납득이 어려운 부분이 있다. 지나치다가 본, 글에 그나마 설명이 잘된게 있어서, 메모해둔다. abstract class Number { factory Number(String type) { if (type == 'myNum1') return MyClass1(1); if (type == 'myNum2') return MyClass2(4); throw 'Can\'t create $type'; } num get myNumber; } class MyClass1 implements Number { final num _number; MyClass1(this._number);..
[플러터] RichText Widget RichText 위젯 사용법입니다. 쉬울듯 하면서도. 의외로 쓸라고 하면 까묵. 구글링도 귀찮아서, 그냥 기재해둡니다. @override Widget build(BuildContext context) { return Scaffold( body: Center( child: RichText( textAlign: TextAlign.center, text: TextSpan( text: 'Hello ', style: ts, children: [ TextSpan( text: 'bold', style: TextStyle( fontSize: 24, color: Colors.black, ), ), TextSpan( text: '\nworld!', style: TextStyle( color: Colors.blue, fon..
[플러터] 구글 폰트 적용하기 폰트를 적용하기 위해서는 - 폰트를 복사하고, - yaml 파일에 등록하고, - 폰트를 불러와야 한다. 귀찮다. 구글 폰트를 사용하면 나아질까? 구글 폰트를 사용하기 위해서는 - yaml 파일에 패키지를 등록하고, - 패키지를 임포트하고, - 폰트를 불러와야 한다. 똑같나? 패키지 내용은 아래와 같다. https://pub.dev/packages/google_fonts 사용은 스타일에서 적용해주면 된다. Text( 'this is this', style: GoogleFonts.pinyonScript(fontSize: 30), ), 그런데, 웹폰트가 그렇듯이.. 가장 느린 데이터 요금을 쓰는 나에게는, 폰트가 적용되기 전까지, 적용안된 텍스트가 보이는 결함을 보인다. 나만 볼꺼니까 상관은 없지만..
[플러터] 내 패키지 라이브러리 업데이트 내 라이브러리를 github에서 불러다가 쓰고 있다고 하자. 라이브러리 코드를 좀 수정했다. 다른 Package는 버전으로 관리가 된다고 하지만, 내껀 그렇지 못한데... Get Package를 하면, 업데이트 된 내용이 마법처럼 적용이 될까? 만약 이게 가능하다면, 다른 패키지들도 구지 버전을 표기하는 방식으로 운영하지는 않지 않을까...? 결론은.. 안된다. 그럼 어찌해야하나.. 의외로 쉽게 stackoverflow에서 찾았는데, 아래 명령어를 터미널에 쳐주면 된다. $ flutter packages upgrade resolved 음.. 정확한 의미는 모르겠지만, 되니까. 됐다. ㅋㅋ
[플러터] Provider 사용해보기(with SharedPreference) 나같은 취미, 초보자가 초반에 마주치는 몇가지 장애물이 있는데, BLoC패턴도 그 중 하나일것이다. 뭔소린지 모르겠고, 귀찮아 보이는데, Provider 패키지가 그 역할을 대신해 줄수 있다고 한다. 물론, 이런 프로그래밍에서 더 귀찮은 것을, 더 귀찮은게, 완전 대체할 수는 없다는거 정도는 안다. 일단, 쉬운걸로 개념을 잡고, 어려운거에... 아~~~~~~~~~~주 나중에 도전을 해보자.
[플러터] 램디스크에서 플러터 빌드를 하면.. 속도 빨라질까? 빌드타임이 비교적 빠른 플러터이지만, 매우 지루한 시간이라는건 변함이 없다. 나같이 후진 PC를 사용하는 사람이라면, 더 그렇겠지만, 이것때문에 PC를 바꾸기는 좀 애매하다. (취미를 게임으로 바꿔야하나....) 유튜브나 블로그에 보면 온갖 귀찮음을 이겨내고 여러가지 테스트를 하시는 분들을 항상 존경해오긴 했지만, 막상 해보니 진짜 귀찮은 관계로 단일 시스템에서 테스트 해보기로 한다. 램디스크는 Freeware인 Softperfect Ram Disk를 사용했다. (램디스크 쳐서 가장 처음에 나오는 걸로 설치) 사용된 PC는 랩탑이고, 8265u CPU, 8GB RAM(눈에 보이는 걸로..), IDE는 VS CODE이다. 사실 8GB에서 1GB를 할당해주는건.. 더 미친짓일 수 있다. 하지만 막연한 기대감..
[플러터] class 이름을 string 값을 참조해서 불러오기 class 이름과 동일한 string 값이 있다. class를 불러올때, 이 string 값을 class 이름으로 사용하고 싶다. 매우 간단할 줄 알았는데, 그냥 하면 안된다. (당연한건가..) 더 재밌는건, 패키지 중에, 이걸 또 변환해 주는 패키지가 있다는 점이다. ClassBuilder 패키지 사용 예시이다. 나의 경우는, MaterialApp 부분에 route를 사용할때, 이름을 사전정의해야하는데, 이게 또 귀찮아서... 불러올 이름들을 stiring리스트로 만들고 불러오기 했다. 발영어는 조심하시길.. 아주 ~~~ 약간 덜 귀찮게 해주는 신박한 패키지.
[플러터] 신박한 패키지 - LiquidSwipe 모든 패키지는 신박하지만, 플러터는 뷰리풀 UI 프레임워크니까... 이런 패키지가 많아졌으면 한다. 힘내라 개발자들! - 빈 페이지로 테스트 - 발영어는 항시 조심
[플러터] 백버튼 두번 눌러서 앱 종료하기 가끔 앱을 끌때, 한번 더 누르라는 토스트 또는 스낵바 메시지가 나오는 때가 있다. 굉장히 단순한 기능인 줄 알았는데, 생각보다 구현하기 귀찮은 거였다... 구글링을 하다가 WillPopScope를 활용한 코드를 한번 테스트 해본다. * 혹시나 아래 영상을 보게 되시는 분이 있으시다면, 발영어는 항상 조심하길 바란다.
[플러터] 내 패키지 만들어서 사용하기(로컬,github) 패키지를 불러오는 일은 개발자들에겐 일상이겠지만, 나같은 사람에게는 그것도 처음엔 생소하다. 가끔 snippet 말고 내가 만든 함수를 불러올 수 있을까 생각했는데, 생각처럼 어마어마한 작업이 아니라, 그냥 불러오면 되는거였다. 로컬에 저장된 패키지와 깃허브에서 불러온 형태인데, 로컬 패키지를 불러오는 형태라면, 남들하고 같이 작업하긴 어려워지겠다. 하지만.. 난 혼자니까. 발영어는 조심하세요
[플러터] AnimatedLIst, PageView 그리고 남이 만든 Custom BottomNavigation의 적용 처음 AnimatedList를 봤을때, 엄청 신기했던 기억이 난다. 물론 어디다 쓸수 있을지는 잘 모르겠지만.. 실제 어플에서 아주 간헐적으로 본 기억이 있는거 같다. (TODO리스트 같은데서) 그것만 있으면 심심하니까. PageView와 남이 만든 BottomNavigation을 연동시키는 작업을 해봤다. 음... 생각보다 애먹었다. 그럼... 발영어를 조심하시길...
[플러터] 필요해서 플러터로 만든 앱 : 시간 기록 앱 가끔 시간을 잴 일이 있다. 또는 어떤 일이 벌어진 시점을 기록해두고 싶을때가 있다. 기본적으로 버튼을 클릭하면, 시간을 기록하고, 기록된 시간과의 시간차를 계산해 주는 어플이다. 가끔 이거 얼마나 걸렸지? 하고 궁금해할 때 요긴하게 쓸 요량으로 만들었었다. 오프라인 상태에서도 써야하기 때문에, firebase 같은 외부 DB는 사용하지 않으고 sqflite로만 만들었다. 나름 고민해서 만들었더니. 뿌듯하다. ㅋㅋ 발영어는 조심해야한다.
[플러터] 페이지뷰 위젯에서 슬라이드 모션 조절과 레이아웃 완료시 실행 페이지뷰 위젯은 평범하지만, 슬라이드 모션을 약간 주게 되면, 좀 더 그럴싸해 보이는 효과가 생긴다. 여기에, 레이아웃 렌더링이 완료된 이후에 실행되는 방법까지 담아 봤다. 발영어는 조심은 필수!
[플러터] 리스트와 함께 사용하는 히어로 위젯 리스트 위젯에 히어로 위젯을 적용하는 테스트 앱을 만들어 봤다. 페이지 전환 속도를 변경해서, 히어로 위젯의 속도를 제어할 수 있음이 핵심이라 할수 있겠다. 발 영어는 항상 조심해 주시길
[플러터] 웹 빌드하기(19.12 기준) 올해 초만 해도, 웹으로 빌드를 하려면 벼라별 생쑈를 다 해야했는데, 이제 몇줄의 명령어로 간단하게 처리가 되는것 같네. 새로 웹 프로젝트를 만드는 건 별로 관심이 없고, 기존 프로젝트에서 웹 프로젝트로 변환하는 방법이 매우 심플해졌다. 아직 안해보신 분들을 위해서, 12월 기준으로.. (업데이트가 미친듯이 되는 부분이니..) 프로젝트를 켜고, 터미널에서, 플러터 업데이트(안한사람만..) * flutter channel dev --> dev 채널로 바꾸라고 하는데, 왜인지 모르겠으니. 그냥 난 master로 진행 $ flutter upgrade 웹 빌드 활성화(안한사람만..) $ flutter config --enable-web 프로젝트에 웹 템플릿 추가 $ flutter create . ** flutt..
[플러터] AndroidX 어쩌고 에러 작업한지 시간이 약간 경과한 앱은 안드로이드 빌드중에 androidX 가 적용되지 않았다는 경고 메시지가 나온다. 당연히 당시에는 없었던 경고문구. [!] Your app isn't using AndroidX. To avoid potential build failures, you can quickly migrate your app by following the steps on https://goo.gl/CP92wY. 구글을 뒤적이다 보면 안드로이드스튜디오에서 androidX로 변경해주면 된다 한다. 해보면... 역시 쉬운일 하나 없다. 아래와 같은 이상한 창이 뜬다. You need to have compileSdk set to at least 28 in your module build.gradle to..
[플러터] COLOR 입력시 HEX 코드 사용하기 함수 플러터에서 컬러를 입력하는 방법은 많지만, 6자리 HEX 코드(?)를 사용하는 방법을 찾지는 못했다. (나의경우) 대부분의 프로그램에서 이 코드를 가지고 작업하기 때문에, R/G/B 입력방식도 그닥 편하지 않다. 그러려니 하던 중, 스택오버플로를 방황하다가 누가 만들어놓은 함수 하나를 발견하게 되었는데, 유용한 것 같다. 스니펫으로 만들어 놓으면 크게 고민하지 않고 사용해도 될 듯 하다.
[플러터] Reorderable list 안드로이드에서 이 기능을 지원하는 앱을 여러번 보긴 했지만, 왜 쓰는건지 도데체 왜 이런 기능을 만들어 놨는지... 알기 애매모호했던, 리스트 순서 바꾸기 기능이다. 그래도 어렵게 찾아냈으니 한번 적어본다.
[다트] Stream 기본 async는 class와 마찬가지로 또다른 장벽이다. 산넘어 산인가.... 뭔 일이든 그래도 기초가 중요하겠지만, 아... 이건 무엇에 쓰는 코드인고?..
[다트] class? mixin? 나같이 취미로 코딩을하는 비전공자에게 class는 큰 장벽이다. 개발자의 편의를 위해 만들었다고는 하지만, 보면 볼수록 그에 함몰되는 느낌이다. 하지만 별수 있나, 개념을 깨우치기 전에 일단 한번 해보는거지.. 그것이 취미의 묘미..
[플러터] Orientation 페이지의 레이아웃의 Orientation을 고정시키고 싶거나, 원하는 방향만 허용할때, 아래 코드를 사용한다. * Widget Builder 위젯 안에서 사용하면 됨. * init 블럭이나, main에서 사용하는 경우도 있는것 같음 * IOS는 안된다고 함
[다트] 리스트 합치기 리스트를 합치는 일. 과연 많이쓸까? 그냥 코드 문법만 공부하면, 익숙해지기 어렵지만 플러터에서는 꼭 필요한 기능이다ㅋ 예를 들어... 다른 함수에서 받아온 두개의 위젯 리스트를 하나의 컬럼 위젯에 넣어줄때..같이...