본문 바로가기

전체431

[GIT] .gitignore 사용 .gitignore ? github, gitlab 등으로 소스 관리 및 배포가 대세입니다. 하지만 개발하는 OS, 플랫폼, IDE 등 사용환경에 따라 각자 관리하는, 배포에 상관없는 파일이나 디렉토리가 생깁니다. 이 파일들을 제외하기 위해서 .gitignore 파일이 사용됩니다. 파일 생성 git init 사용 방법 // flutter 프로젝트 기준으로 정리합니다. // 지정된 파일 제외 .metadata // 특정 패턴 파일들 제외 *.lock // lock 확장자 파일 제외 .* // . 으로 시작하는 파일 제외 // 특정 디렉토리만 삭제. 맨앞에 / 붙여야 합니다. /android/ // 디렉토리 이하 특정 파일 제외 /android/*.lock // android/ 이하 lock 확장자 파일 들 제외 2021. 3. 19.
[flutter] FlutterFire를 이용한 firebase 연동 #1. 설치 - iOS/macOS FlutterFire는 Flutter 앱으로 Firebase를 연동하는 Flutter 플러그인 세트 입니다. 기본은 macos 개발을 위한 정보 확인 중에 찾은 자료라서 플랫폼 별로 모두 설정 확인을 하도록 해보겠습니다. 주의) 1주일 가까이 firebase와 씨름을 한 거 같습니다. 상황이 m1 맥미니를 구입한지 얼마 안되었고, flutter 2.0에 깜짝 발표된 뒤라, 먼가 정리되지 않은 상태에서 버전 이슈라고만 생각을 했었는데... ㅠ,.ㅠ 더보기 기본 시스템 환경 Mac Mini 2020 M1 (8core CPU, 8core GPU, 8GB Ram), macOS Big Sur 11.2.2 Flutter 2.0.2 / Dart 2.12.12 / CocoaPods 1.10.1 Android Studi.. 2021. 3. 15.
[flutter] setState 없이 상태 값 변경 - ValueNotifier 하나의 StatefulWidget에서 상태 값을 관리하는 방법은 setState()를 사용하는 것입니다. setState() 없이 상태 값을 관리할 수도 있는데, ValueNotifier를 사용하는 것입니다. ValueNotifier가 좋은 것은 다른 위젯에서 변경한 상태값을 적용할 수 있습니다. setState() 없이 상태값을 변경하는 예제 class MyHomePage extends StatefulWidget { MyHomePage({Key? key, required this.title}) : super(key: key); final String title; @override _MyHomePageState createState() => _MyHomePageState(); } class _MyHome.. 2021. 3. 12.
[MAC M1] laravel + valet + php7.3 다운그레이드 방법 맥 M1에서 지원하는 PHP 기본 버전은 8.0.3 입니다. 터미널 사용 버전을 다운그레이드 하는 것은 쉬운데, 웹은 여전히 8.0이 사용되고 있었습니다. 웹서버는 valet을 사용하고 있었는데, 생각보다 버전 변경하는 것이 쉽네요. 매뉴얼을 대충 보면 안됩니다. ^^ ※ 아래 내용은 모두 로제타로 실행한 터미널에서 실행해야 합니다. 현재 m1에서는 php 8.0 이상만 지원하는 것으로 보입니다. % php -v PHP 8.0.3 (cli) (built: Mar 4 2021 20:45:17) ( NTS ) Copyright (c) The PHP Group Zend Engine v4.0.3, Copyright (c) Zend Technologies with Zend OPcache v8.0.3, Copyri.. 2021. 3. 10.
[MAC M1] laravel + vuejs + vuetify 설치 php, laravel, vuejs, vuetify 설치 brew install php@7.3 php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" ph.. 2021. 3. 8.
Android 폰을 macOS에 미러링을 해보자 안드로이드폰을 미러링으로 윈도우10에 연결하는 방법은 무척 쉬워졌다. (전용앱이 있지 아마???) 하지만 맥은 아직 유료 앱이 아니면 사용이 힘든 것으로 보인다. 라고 생각을 했는데... 약간의 수고를 하면 무료로 미러링을 할 수 있는 방법이 있네~ 참조 URL : https://github.com/Genymobile/scrcpy 설치 조건 더보기 macOS Catalina Ver. 10.15.5 MacBook Pro 16인치 2019. i9 2.3GHz 8 core. RAM 32G homebrew 설치 설치 스크립트 // 설치 brew install scrcpy // adb 관련 PATH 추가 brew cask install android-platform-tools 안드로이드 USB 연결 (모바일 설정.. 2020. 7. 2.
[VueJs] amcharts3 사용하기 설치 npm install amcharts3 --save 사용 샘플 소스 오류 수정 import AmCharts from 'amcharts3' 위 형태로 하면 AmCharts.makeChart() 함수를 찾을 수 없다는 오류가 나와서 수정 참조 URL https://github.com/developerKumar/AmchartsUse 2020. 6. 19.
[Win10] VirtualBox Error. Raw-mode is unavailable courtesy of Hyper-V. wsl2를 설치하고 docker desktop을 설치하려다 실패를 했는데, 사이드 이펙트로 VirtualBox가 정상적으로 동작하지 않는다. ㅠ,.ㅠ; 에러 메시지 Raw-mode is unavailable courtesy of Hyper-V. 해결 방법 // bcdedit 실행 bcdedit // hypervisorlauchtype 확인 hypervisorlaunchtype = On // Off 변경 bcdedit /set hypervisorlaunchtype off // hyervisorlaunchtype 확인 // 리붓 리붓을 한 후에 VirtualBox를 다시 실행해 본다. 2020. 6. 18.
[Laravel] FCM을 이용해서 웹푸시 발송하기 https://picory.com/entry/Laravel-Web-Push-%EB%B0%9C%EC%86%A1%EA%B8%B0 얼마 전에 테스트 중이던 웹 푸시 소스가 사용자를 일정 수준으로 넘어서면서 인지, 아니면 원래 그런 건지 모르겠지만, 메시지는 전송했다는데, 테스트 하는 사람들은 받지 못했다고 하는 상황이 자주 연출이 되었다. 전송했다는데? 왜 안오지? 나는 잘되던데... 하다가 나도 받지 못하는 상황이 생기니... 이거 너무 불안정한데?? 싶어서 FCM을 사용하기로 하고 다시 정리를 해본다. 설치 composer require brozot/laravel-fcm config/app.php 설정 'providers' => [ // ... LaravelFCM\FCMServiceProvider::cla.. 2020. 6. 15.
[VueJs] API 기능 모음 (추가 중) history.back() this.$router.go(-1) UI 강제 업데이트 this.$forceUpdate() // string replace all let replaceAll = function (source, needle, target) { return source.split(needle).join(target) } // 를 변환 let decodeHTML = function (html) { let txt = document.createElement('textarea') txt.innerHTML = html return txt.value } 2020. 6. 7.
[og] 카카오톡 메시지에 URL 첨부시 제목이 URL로 나오는 경우 및 테스트 방법 6월 부터인가? 갑자기 카카오톡에 특정 사이트 URL을 전송하면 보여주던 이미지와 제목에서 이미지는 정상인데 제목이 문제가 되었다. 제목이 URL로만 보인다. 잘되는 것이 안되니 호기심이 생기네... 카카오톡은 어떤 것을 참조해서 제목을 가져오는 걸까? 카카오톡의 테스트 URL? 개발자 센터 일단 카카오톡 메시지로 전송이 되면 어떻게 되는지 미리 알수 있는 방법은 카카오톡 개발자 센터에 있다. 생뚱맞기는 하지만 카카오 스토리 > RESTAPI > 웹 페이지 스크롤링에서 테스트를 제공한다. [페이지 링크] 테스트는 간단하지만 개발자 센터에서 API 테스트기 때문에 액세스 토큰을 발급받아야 한다. 카카오톡 아이디만 있으면 되는 걸로 알고 있으니, 귀찮겠지만 테스트를 위해서 개발자센터에 등록 후 토큰을 발급 .. 2020. 6. 6.
[Laravel] Eloquent ORM, Query Builder로 실행한 full query 확인 개발 중 자주 쿼리를 확인하는 일이 있다. 그런데 ->toSql()로 하게 되면 바인딩 전 쿼리만 나와서 해당 값이 정상 들어갔는지 확인이 어려울 수 있다. 이번에는 mysql 4.x old 버전에 쿼리 질의를 할 일이 생겼는데, php 5.x 버전 부터 mysql 4.x 버전을 지원하지 않고, 어느 언어를 사용하더라도 4.x 버전을 미지원이라는 장벽을 맞이하게 되었다. 결국 원격으로 php 5.x 저 버전에 raw 쿼리를 던져서 질의 하도록 미들웨어 개념의 api를 만들었다. 기본 어드민 툴은 laravel에서 사용을 해야 하니 raw query를 생성해서 던지는 작업을 해야하는 경우가 생긴 것이다. 머 이유가 어찌 됐건 일단 바인딩된 최종 raw query 획득을 위한 작업을 진행하기 위해서 설정 작.. 2020. 5. 30.
[Linux] 가끔 필요한 내용 정리 n일 이전 생성 파일 보기 및 삭제 # n일 이전 생성 파일 보기 find 폴더/ -mtime +n find 폴더/ -mtime +n -print # n일 이전 생성 파일 삭제 find 폴더/ -mtime +n -delete find 폴더/ -mtime +n -exec rm {} \; 2020. 5. 18.
[Python] 텔레그램 채팅봇 만들기 요 근래 말이 많은 텔레그램입니다. 원격지 컴퓨터에 명령 실행할 방법을 찾다가, 메신저를 통해서 실행해 보자는 아이디어 차원에서 한번 챗봇을 보게 되었는데, 파이썬 + 텔레그램 봇 구성이 생각보다 쉬워 공유를 해봅니다. telepot 모듈 설치 pip install telepot --upgrade 소스 샘플 import telepot from telepot.loop import MessageLoop import time TOKEN_MAIN = 'BOT_TOKEN' StartMsg = """ BOT 기본 명령어 1. /help : 도움말 2. 안녕 """ # 특정 명령어가 입력할 때 반응 def execcommand(message, chat_id): args = message.split(' ') comma.. 2020. 5. 15.
[Mac] default python 버전 업데이트(기본 버전 변경) 맥 팩키지 통합 관리 및 버전 변경을 쉽게 하기 위해서 홈브루(homebrew)를 사용합니다. // 파이썬 설치 brew install python // 버전 확인. 2020-05-15 현재 최신버전 3.8.22 python3 Python 3.8.2 (v3.8.2:7b3ab5921f, Feb 24 2020, 17:52:18) [Clang 6.0 (clang-600.0.57)] on darwin Type "help", "copyright", "credits" or "license" for more information. // python3 > python 명령으로 대체 방법 vi ~/.zprofile (macOS 카탈리나) // 추가 내용 alias python='python3' // 소스 적용 sourc.. 2020. 5. 15.
이제서야 아이패드 프로 4세대를 써 봅니다 2019년 하반기 부터 아이패드 프로 4세대 출시를 기다리는 사람들이 내 주위에 점점 늘어났습니다. 저도 딸아이가 필요하다는 말에 3세대를 구매하려고 했지만 곧 나올 4세대 말에.... 이왕이면... 신품을 사자는 생각으로 기다리고 있었습니다. 2020년 3월 출시설이 모락모락 올라왔지만, 1월 이후 강타한 "코로나19"는 기존 애플 제품군 생산차질로 인해 배송 지연이 발생하기 시작하면서, 하반기로 연길될 거라는 말이 3월 초까지만 해도 지배적이었습니다. 하지만 애플은 지난 3월 18일 아주 조용하게 출시를 했고, 4월 중순에는 한국 공홈 주문도 열렸습니다. 와~ 했더니, 내 손에 이렇게 아이패드가 와 있네요. 현재 아이패드 프로4로 해본 것과 경험 1. 사이드카 기존 유선, 혹은 무선 모니터 공유기 앱.. 2020. 5. 11.
[VueJs] vue-chartjs 로 멀티라인 그래프 그리기 머신러닝 같은 강좌나 책을 읽다 보면 간혹 마주치는 단어가 시계열 혹은 시계열화 이란 것입니다. 말은 어려워 보이는데 영어로는 "time series" 라고 합니다. 한글은 어렵지만 영어는 어느 정도 뜻이 이해가 갑니다. 그냥 순차적으로 먼가 하는 거구나... 라는 센쑤~! 개발자들이 디비 등에서 추출한 정보는 보통 테이블 형식의 텍스트로 제공하는 경우가 많습니다. 이것을 보기 좋게 그래프 형태로 변형해서 보여주면, 직관적으로 이해하게 되고, 실시간 의사결정이 가능해 진다고 합니다. 예전부터 알고는 있었지만, 막상 그래프 표현은 좀 어렵기는 합니다. vuejs에서는 되게 쉽습니다. 시계열의 대표적인 것이 Line Chart 일 것 같아서, 소스로 좀더 쉽게 만들어 보도록 하겠습니다. Line Charts.. 2020. 5. 11.
배민의 우아한테크세미나 온라인 진행 관련 세미나 동영상: https://www.youtube.com/watch?v=BlEzbGTQ9Zs 우아한테크세미나 동영상 자료 2020년 5월 7일 개최한 "우아한테크세미나" 발표 내용은 아래와 같습니다. 발표자료 1부 - 엔티티 클래스 설계와 퍼시스턴스 프레임워크의 활용 * 발표자료 (원페이지뷰) : https://bit.ly/2YNxlV7 * 발표자료 (슬라이드) : https://benelog.github.io/entity-dev/ 2부 - Spring Data JDBC Advanced * 발표자료 : https://bit.ly/3fCkRpg * 참고코드 : https://bit.ly/2SFjwE8www.bit.ly/2YNxlV7 참 멋지네요. 2020. 5. 8.
[Apple] WWDC20 - 6월 22일 온라인으로~! 오늘 오전에 애플에서 받은 메일입니다. WWDC이 계절이 다가오고 있습니다. 벌써~~~!!! 애플의 가장 큰 개발자 행사인 WWDC 2020이 코로나 영향으로 6월 22일 온라인으로 진행을 한다고 합니다. 관련 링크는 개발자 페이지로 이동하구요. https://developer.apple.com/wwdc20/?cid=CDM-DM-P0012725-444312&cp=em-P0012725-444312&sr=em 앱 스토어를 통해서 "Apple Developer" 라는 앱을 배포 중입니다. 이곳에서 관련 강좌 등의 내용을 지속 업데이트 할 예정으로 보입니다. 이번 컨퍼런스의 특이사항은 Swift 관련 학생 대회?(Swift Student Challenge)를 5월 17일까지 진행한다고 합니다. 대회 우승자?에게.. 2020. 5. 6.
[Linux] 여러 파일에서 특정문자열 치환 단일 파일에서 vi 오픈한 파일에서 문자열 치환 방법 입니다. :%s/source/target/g 특정 디렉토리 내에서 여러 파일에 대한 문자열 치환 방법입니다. find ./ -name '*.html' -exec sed -i 's/source/target/g' {} \; 2020. 5. 4.
[Python] psycopg2 에서 실행된 쿼리문 전체 보기 import psycopg2 as pg2 from psycopg2.extras import DictCursor conn = pg2.connect() cursor = conn.cursor(cursor_factory=DictCursor) cursor.execute('select %s, %s', ('test', 2)) cursor.query "select E'test', 2" 2020. 4. 29.
반응형