분류 전체보기
PWA |Progressive Wep App 프로그레시브 웹 디자인 가이드라인 (작성중)
PWA란? 기존에 서비스되는 웹 페이지를 모바일 환경에서도 별도의 포팅이나 어플리케이션 개발 없이도 사용할 수 있게끔 만든 형태. 각 플랫폼별 언어를 이용한 개발이 필요하지 않으므로, 크로스 플랫폼을 완벽하게 지원한다고 볼 수 있다. PWA의 조건 HTTPS 운영 - 보안문제 해결. Lets entrypt, cert bot 등을 이용한 SSL 적용하기 웹 앱 매니페스트|Web App Manifest 존재 사이트와 관련된 정보를 담은 JSON 파일을 적용하는것. 모바일 환경에서도 잘 동작할 수 있게 대응. 서비스 워커|Service Worker 사용 백그라운드에서 동작하는 프로세스로 실행됨 App이 종료된 상태에서도 동작하거나, 캐싱 등의 다양한 기능을 제공. 반응형 디자인 적용 Offline 기능 적용 ..
VM 웨어 우분투에서 LVM 디스크 용량 증설하기
시작 하기 전.. VM웨어의 우분투 서버 용량이 꽉차서 더이상 작업이 불가능한 상황이 왔다. 디스크 용량 확장하려면 스냅샷을 지워야하므로, 원본을 백업하고 복사한다음 스냅샷 삭제 이후 디스크 크기 확장 진행한다. vm머신 우클릭 - 설정 - harddisk - expand 선택, 기존 50 -> 64로 키웠다. VM웨어에서 LVM 파티션 크기를 키워주려면 물리 파티션에 크기를 바로 추가해주는 방식이 아니라, 다른 물리 파티션 생성 -> 파티션 종류 LVM으로 전환 -> 물리 볼륨 생성 -> 기존 VLM과 새로 만든 LVM 병합 순으로 진행해야한다. 이후 설정 진행하기 전에 스냅샷 떠두고 부팅한다. 디스크 구조 확인 df -h로 전체 볼륨 용량 확인 -> 볼륨 추가 안된것 확인됨 └────╼ df -h F..
Django 에서 JSON으로 데이터 파싱하고 주고받기
일단 목적은 제목과 같은데, 간단하게 순서를 정리해보자. 웹페이지에서 form을 통해 데이터 전송을 요청 파이썬에서 API로부터 JSON데이터를 받아와서 활용하기 쉬운 형태로 파싱함. 파싱한 데이터를 json 형태로 Django의 view로 전달함. view는 다시 받아온 json 데이터를 template의 html 파일로 전달함. 템플릿으로 전달된 json 데이터는 자바스크립트에 의해 활용할 수 있는 형태로 다시 파싱된다. 이제 자바스크립트를 통해서 json 데이터를 자유롭게 사용할 수 있음. 1.웹페이지에서 form을 통해 데이터 전송을 요청하기 1번부터 차근차근 해보자. 우선 웹 페이지에서 데이터를 받아오게 요청을 보내야한다. contact.html {% csrf_token %} views.py f..
FSOP 기초
FSOP File Stream Oriented Programming file struct 구조를 이용한 방식. fopen,fread처럼 파일스트림을 사용하는 함수가 있거나 bss영역에 stdout 등이 있을때 사용할 수 있음. ->원하는 함수를 실행 가능. 파일스트림이나 stdout을 사용하는 함수들이 호출될때는 vtable을 참고하여 함수를 호출함 -> vtable을 임의로 작성하여 원하는 함수를 호출하는 방법 . 18.04(glic 2.27) 이후부터는 vtable 검증루틴이 추가됨. 참조하는 vtable의 주소가 _libc_IO_vtables 영역에 존재하는 주소인지를 검증한다. 파일 구조체를 임의로 만들고 조작하여 최종적으로는 원하는 함수를 실행하는 기법. aeroCTF nav_journal 풀이..
Docker-Compose 를 활용한 Django + Nginx + Gunicorn Container 구축기
Docker-Compose 를 활용한 Django + Nginx + Gunicorn Container 구축기 목차 1. 도커란? 2. Django+Python 프레임워크 튜토리얼 3. 장고, Nginx, Gunicorn 각각의 역할과 차이점 4. 본격적인 구축 시작 - Dockerfile 사용하기 5. Docker-Compose 사용하여 django와 nginx 묶어주기 1. 도커란? 도커란 VMware, Virtual Box와 같은 가상화 플랫폼 중 하나로써, 다른 가상화 프로그램들과 달리 도커는 컨테이너라고 하는 독자적인 방식을 이용하는데 , 컨테이너는 별도로 만들어진 공간에서 프로세스가 동작하는 기술로 기존 가상화 기술과는 확연한 차이를 가진다. 전 가상화 (Full-Virtualization) 완..
Django의 form 핸들링 방법
장고의 폼 처리 과정 이미지 출처 : https://developer.mozilla.org/ko/docs/Learn/Server-side/Django/Forms 웹 브라우저에서 폼을 포함하는 페이지를 서버에 요청 unbound 상태 : 폼의 각 필드는 비어있거나 초기값이 채워져 있지만 유저가 입력한 값이랑은 관련이 없다. binding : 입력된 데이터를 각 폼의 형식에 맞게 결합하는 작업. 서버 작업 : 해당 URL로부터 첫 요청인가? (binding된 데이터가 있는가?) 2.1. yes : unbound 상태의 기본 폼 형태를 만들어 다시 브라우저에 반환한다. 2.2. no : binding 된 데이터가 있다는 의미. 2.2에서 -> 들어온 데이터가 유효한가? (데이터 유효성에 대한 검증) 3.1 y..
Django reverse() 함수 - Class 뷰와 Def 뷰
장고에서 reverse 함수는 urls.py 에 선언해둔 name에 따라 URL을 받아와서 사용할 수 있게 해주는 기능을 가지고 있다. 다만 사용하기 위해서는 몇개의 밑작업이 필요하다. 우선 urls.py 에 수정이 필요한데, apps/urls.py #apitest/urls.py from django.urls import path from . import views app_name = 'apitest' urlpatterns = [ path('',views.IndexView.as_view(),name='index'), path('/',views.testView,name='testview'), path('formtest/',views.FormView.as_view(),name='formtest'), path..
페도라 12 고정IP 설정
동아리 서버 VM의 드라이브 경로를 옮긴 뒤에 재시작을 해봤더니 네트워크 서버가 제대로 동작을 안하더라. ip주소를 확인해보니 기존에 쓰던 ip에서 바뀌어있다. 분명 고정ip 설정을 해놨을텐데. 네트워크 장치를 재시작하기 위해 service network restart 명령어 실행시 Bringing up interface eth0 : device eth4 does not seem to be present ~ 로 시작하는 에러가 발생한다. 이는 해당 네트워크 장치의 IP/MAC 등등 상세 설정이 뭔가 제대로 세팅되어있지 않다는 뜻. 따라서 해당 장치의 설정을 확인해봐야 한다. 페도라 12의 경우는 네트워크 장치 설정 파일이 /etc/sysconfig/network-secripts/ 에 저장되어있다. ifc..
장고 튜토리얼 내용 정리
새로운 앱 추가 python3 manage.py startapp [app이름] 이렇게 하면 해당 앱을 위한 디렉토리가 생성된다. 수정해야 할 파일 : main/settings.py , main/urls.py , app/urls.py , app/views.py main/settings.py INSTALLED_APPS = [ 'apitest.apps.ApitestConfig', 'polls.apps.PollsConfig', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles',..
docker + nginx + django 에서 static file serve 해주기
기본적으로 장고는 정적파일 로드를 static 이라는 경로에 따로 모아놓고 진행을 한다. 따라서 실제 서비스 환경에서는 CSS나 이미지를 비롯한 정적 파일들을 해당 경로에 모아놔야 정상적으로 로드가 되는데, 장고에서는 runserver 실행시 필요한 static 파일들을 /static/ 이라는 하위경로에 자동으로 모아줘서 장고만 쓸때는 크게 문제가 없다. 서버가 실행되면 /static/ 경로를 참조하면 그만이니까. 근데 nginx를 쓸때는 그렇지 않다. nginx에서 로드할 파일들 목록에 static은 포함이 안되있어서 참조를 못하고, nginx에서 static을 참조를 못하니까 장고에서도 static을 못불러온다. 그래서 nginx에서도 static 파일을 모아올 수 있게끔 수동으로 내용들을 모아줘야한..