본문 바로가기

python timestamp to datetime 파이썬에서 timestamp를 datetime으로 변경하는 방법입니다. 일단 dateutil이라는 라이브러리를 사용하는 것이 편리해서 dateutil을 설치합니다. pip install python-dateutil 로 설치하실 수 있습니다. dateutil 문서: https://dateutil.readthedocs.io/en/stable/ dateutil - powerful extensions to datetime — dateutil 2.8.1 documentation Quick example Here’s a snapshot, just to give an idea about the power of the package. For more examples, look at the documentation. S.. 더보기
selenium python - 에러 날 때 한 번 쯤 해보면 좋을 시도 selenium python - 에러 날 때 한 번 쯤 해보면 좋을 시도 에러의 종류에 따라서 달라지겠지만 xpath 혹은 name, class 등으로 elements를 찾아 클릭하는 것을 시도했을 때 에러가 난다면 2가지를 볼 것 같아요. 1 . modal이 띄워져 있어서 해당 elements를 찾았지만 클릭이 안된다. >> 요건 이전 포스팅에 작성해뒀는데 한 번 확인해보세요. modal을 display:none 시키면 됩니다. >> 2019/08/25 - selenium python - Other element would receive the click 2. element를 못찾는다. >> 코드가 실행될 때 selenium이 해당 페이지를 모두 로드하지 못하는 경우도 있는 것 같으니까 time.sle.. 더보기
selenium python - find_element_by_xpath selenium python - find_element_by_xpath selenium을 활용하여 어떤 버튼을 클릭하거나 선택하거나 등등의 작업을 할 때 find_element_by_xpath 정말 좋은 것 같아요. 함수명 처럼 xpath를 이용해서 element를 찾아줍니다. xpath는 chrome browser에서 쉽게 얻을 수 있어요. get xpath : chrome >> inspect >> elements select >> copy >> copy XPath 복사하면 이런 것들이 나오거든요. '//*[@id="root"]/div[3]/div[3]/ul/li[8]' 이걸 활용해서 선택, 클릭을 할 수 있습니다. 클릭하기 click() 함수를 사용하시면 됩니다. xpath = '//*[@id="ro.. 더보기
DRF Custom Permission DRF Custom Permission Django에서 특정 그룹에 속해있는 유저만 실행할 수 있는 viewset을 만들어봅시다 !! 일단 "NGEE" 라는 그룹이 생성되어 있다고 가정할 때 아래와 같은 permission 클래스를 하나 만들어줍니다. ngeePermission의 has_permission이 하는 일은 request.user.groups 이름을 가지고 와서 거기에 NGEE가 있는지 없는지를 리턴해줍니다. NGEE 라는 그룹에 속해있다면 True가 리턴될 것이고 반대로 속해있지 않다면 False가 리턴되겠죠? from rest_framework.permission import BasePermission class ngeePermission(BasePermission) def has_perm.. 더보기
Data-attribute to Modal in Bootstrap4 (모달에 데이터 전달하기) Data-attribute to Modal in Bootstrap4 부트스트랩4에서 모달을 보여지게 하는 방법은 몇 가지가 있죠. 그중에서 Button을 누르면 모달이 띄워지는 방법이 있죠. 아래와 같은 코드로 가능합니다. 검색 ... 코드를 잠깐 살펴보면 button을 누르면 data-toggle="modal" data-target="#test_modal"을 통해서 modal이 보여지게 되죠. data-target은 modal div의 id와 일치해야 하고요. 이번 포스팅에서 정리하려는 것은 button에 있는 data-test='aaa' 를 modal로 전달하자 라는 것입니다. 아래와 같은 코드로 가능한데요. show.bs.modal은 https://getbootstrap.com/docs/4.3/co.. 더보기
git branch delete / remote branch delete / remote branch list udpate Git branch delete / list update git branch delete 로컬에서 git branch 하나를 삭제하고 싶을 때에는 -d 옵션으로 가능합니다. 아래와 같이 말이죠. git branch -d branch_name 여러 개의 로컬 branch를 삭제하고 싶을 때에는 -d 뒤에 쭉 붙여주면 됩니다. git branch -d branch_name branch_name2 branch_name3 branch_name4 git branch force delete 기본적으로 합쳐진 branch가 아니면 에러가 나면서 지워지지 않습니다. 그럴 때 강력하게(?) 삭제하는 옵션은 -D 입니다. 대문자는 강력하니까요. git branch -D branch_name -d 옵션과 마찬가지로 -D 옵.. 더보기
django-crontab 소개 (특정 모듈 주기적으로 실행하기) Django-crontab 적용하기 django-crontab으로 특정한 모듈을 주기적으로 실행하는 것이 가능합니다. 물론 직접 crontab에 잘 작성하는 것도 방법이겠지만 라이브러리로 어느정도 간단하게 관리가 가능하니까 사용하는 것이 좋을 것 같습니다. 설치는 pip install django-crontab settings.py에 아래와 같은 내용을 포함해줍니다. INSTALLED_APPS = [ ... ... 'django-crontab', ] ... ... CRONJOBS = [ ('* * * * *', 'app_name.file_name.def_name', '>> /log_path/log_file.log') ] INSTALLED_APPS는 당연한거니까 PASS ! CRONJOBS에 적절히 추가해.. 더보기
Bootstrap4 Table Border Color Change CSS 부트스트랩 4 테이블 선 색 변경하기 아래와 같은 부트스트랩 테이블이 존재한다고 가정하면 테이블의 내부 선 색을 변경하기 위해서 아래와 같은 css가 필요해요. ... class 이름에 td 붙여주시고 border를 지정해주시면 됩니다. .table_test_class td{ border: 1px solid #000000; } th, tr 등을 이용해서 원하시는 부분에 border color 혹은 border style을 변경하실 수 있습니다. 더보기
javascript replace (with regex) 자바스크립트에서 replace는 제일 처음것만 해준다고 합니다. 그래서 regex로 replace를 많이 사용한다고 합니다. 결론은 귀찮은 regex를 해야 한다. 라는 것인데. 생각해보면 내가 싫어서 제대로 공부하지 않은 regex라고 마냥 뒤로 미뤄두는 것도 아닌 것 같아 사용할 수 있을 때 사용해보려고 노력중입니다. 일단 아래 사이트에서 regex 로 매칭되는 것들을 확인할 수 있습니다. 테스트 하는 거죠. https://www.regexpal.com/ Regex Tester - Javascript, PCRE, PHP RegexPal requires a modern browser. Please update your browser to the latest version and try again. ww.. 더보기
datatables create example/sample Datatables Create Example datatables 라이브러리를 사용해서 테이블을 생성하는 예시입니다. 라이브러리 추가, trunc 함수 추가 등이 필요하지만 대충 코드 보시면 아실 것 같아서 자세한 내용은 추가하지 않았습니다. var table = $('#targetTable').DataTable({ data: source_data, dom: 'Bfrtip', buttons: [{ extend: 'excelHtml5', text: 'Excel Download', className: 'btn btn-black export-button' } ], columns: [{ title: "description" }, { title: "status" } ], "columnDefs": [{ "width.. 더보기
Django Allauth Login Page Custom Django에서 사용자 관리로 allauth 많이 사용하죠. 저도 사용하고 있는데 기본적으로 제공하는 페이지는 이쁘지 않죠 ! 그래서 custom을 해야 하는데 간단하게 정리해봅니다. 1. login.html을 만들어주시면 됩니다. 위치는 templates/account/login.html 입니다. accoutn/login.html을 정확하게 지키지 않으면 기본 페이지가 나옵니다. 2. 맘대로 변경하시면됩니다. 저는 bootstrap도 사용해서 login.html에 bootstrap cdn으로 적용하고 아래를 꾸미면 되겠습니다. 하지만 form.as_p 부분은 걍 불러온 것이기 때문에 이것은 따로 조정해야 합니다. 3. settings.py에 아래 설정을 추가합니다. ACCOUNT_FORMS = {'lo.. 더보기
Selenium Webdriver 활용 Instagram Login 해보기 (Python) Selenium Webdriver를 활용하면 웹 파싱이나 반복작업 등을 처리할 수 있습니다. 여기서는 간단하게 Instagram Login을 해보는 과정을 작성해봅니다. 환경설정이나 라이브러리 설치는 건너뛰고요. 저는 chromedriver를 활용해서 해보겠습니다. chromedriver는 아래 주소에서 받으실 수 있습니다. 적당한 곳에 다운로드 및 위치 해두면 됩니다. chromedriver : http://chromedriver.chromium.org/ 일단 인스타그램 로그인 페이지를 띄워보고 어떻게 할지 작성할게요. 아래와 같은 창인데요. 단순하게 Id 역할을 하는 phone number, username, or email 입력하는 input이 하나 있고요. password input이 하나 있습니.. 더보기
(다시쓰는) AWS CloudWatch Alarm Writing to Slack Using Lambda AWS CloudWatch에서 알람이 울리면 그 내용을 관리자 이메일로 보내고 추가로 슬랙(slack)의 특정 채널에 메세지를 작성하는 내용을 예전에 정리한 적이 있습니다. 부족한 부분이 있더라고요. 그래서 다시 정리해봅니다. \ 1. 준비하기 - 순서는 상관없습니다. - Slack WebHook URL 생성 > https://.slack.com/services/new 에 접속해서 'incomming webhooks' 검색합니다. > Add Configuration을 통해서 Webhook URL을 하나 생성합니다. 잘 가지고 있다가 Lambda에서 사용합니다. 2. CloudWatch Alarm 생성 - 여러 Metric 중에서 원하는 것을 생성하고 Define Alarm 에서 Actions에 Send .. 더보기
Django Cache example 캐시 사용 여부에 따라 반응 속도가 정말 많이 차이나기 때문에 꼭 캐시를 사용하는 것이 좋습니다. 저는 캐시를 위해서 Redis를 사용하고 있습니다. Django + Redis 셋팅은 2017/02/19 - [ # 파이썬/- Django&REST] - Django와 ElastiCache 연결 포스팅에서 찾아보실 수 있어요. 활용 방법은 아래와 같습니다. 중요한 것은 cache.get(), cache.set() 을 적절히 사용하면 되는거죠.그리고 여러 번의 테스트를 통해서 원하는 결과가 잘 리턴되는지 속도가 빨라지는지 확인해보는거죠 !! 위 소스를 간단하게만 살펴보면 다음과 같습니다. 일단 cache.get('items')으로 캐시에 저장된 것이 있는지 확인합니다. None이 아니라면 캐시에서 받아온 데이.. 더보기
gulp 예제 (기록용) 약 2달 전에 아래와 같은 포스팅을 남겨둔 적이 있네요. 2016/08/25 - [Bootstrap&JS] - gulp uglify error 아무튼 이번에는 gulp를 어떻게 사용하고 있는지 간단하게 기록용으로 남겨둡니다. 스샷으로 간단하게 남겨봅니다. gulp gulp depend gulp publish 이런 명령어를 사용해서 gulp를 실행하고요. 꽤 편리하게 사용하고 있습니다 :) 더보기
Javascript 모듈화 예제 (기록용) 예전에 포스팅한 아래 글에 이어서 하나 더 추가해봅니다. 2016/07/16 - [Bootstrap&JS] - Javascript 모듈화 (기록용) 위 포스팅보다 좀 더 친절하게 작성했습니다.일단은 기록용이고 틀린 부분은 지적해주세요. github에도 추가했습니다. https://github.com/motobyus/moto // ===============================================// write : moto// update : 2016.10.30.// =============================================== var OBJSAMPLE = function() { // private variables ---------------------------.. 더보기