장담한다. 

기본 기능 이외의 기능을 찾는다면 웬만하면 쓰지 말자.

그냥 그 시간에 만드는게 더 빠르다. 

정말이다.

swagger에서 지원하는 기능을 이제야 만들고 있으므로 큰 기대 말고, 

기본 기능외는 찾지 말고 그냥 하나 만들어서 쓰는 게 당신에게 이익이다.

'web > Django_rest_framework' 카테고리의 다른 글

django에서 swagger로 한다면 drf_yasg 는 왠만하면....  (0) 2019.05.20
django REST_FRAMEWORK login  (0) 2019.01.11
9. href  (0) 2016.07.30
8 pagination  (0) 2016.07.29
7 search  (0) 2016.07.28
6 저장/수정시 유저 저장  (0) 2016.07.27

WRITTEN BY
No.190
세계정복의 시작점

트랙백  0 , 댓글  0개가 달렸습니다.
secret


REST_FRAMEWORK에서 오른쪽 상단의 로그인을 통해 로그인을 해도 세션이 유지가 안되고, 

유저 객체가 AnonymousUser만 뜬다면


setting 의 REST_FRAMEWORK 속성에 auth관련 속성을 추가해 주면 된다.

REST_FRAMEWORK = {

    .......

    'DEFAULT_AUTHENTICATION_CLASSES': (

        'rest_framework.authentication.TokenAuthentication',

        'rest_framework.authentication.SessionAuthentication'

    )

}


'web > Django_rest_framework' 카테고리의 다른 글

django에서 swagger로 한다면 drf_yasg 는 왠만하면....  (0) 2019.05.20
django REST_FRAMEWORK login  (0) 2019.01.11
9. href  (0) 2016.07.30
8 pagination  (0) 2016.07.29
7 search  (0) 2016.07.28
6 저장/수정시 유저 저장  (0) 2016.07.27

WRITTEN BY
No.190
세계정복의 시작점

트랙백  0 , 댓글  0개가 달렸습니다.
secret

nginx + uwsgi 연동

web/Django 2019.01.11 03:29


uwsgi 연동 에서 이어짐


nginx 설치 

$ sudo apt-get install nginx


nginx에 프로젝트 설정 파일 추가 

$ cd /etc/nginx/sites-available/

$ sudo vi django_project.conf

server {

    listen 80; # 수신 포트 설정

    server_name _; # 도메인 설정 ip로 할경우 언더바 _ 로 하면 됨 

    location / { 

        # 요청을 전달할 소켓 파일 지정 (해당 파일은 uwsgi.ini에서 socket로 지정했음)

        uwsgi_pass unix:///tmp/django_project.sock; 

        include uwsgi_params; # uwsgi 사용, 리눅스에서 소켓은 파일처럼 취급된다.

    }

}


/etc/nginx/sites-enabled/ 에도 같은 파일이 필요. 심볼릭 링크로 추가

$ ln -s /etc/nginx/sites-available/django_project.conf /etc/nginx/sites-enabled/


!! 아이피로 할경우 default의 파일과 충돌하여 작동하지 않습니다. 도메인이 아닌 ip로 할경우 default파일을 지워줘야 합니다. ( 도메인이면 지우지 않아도 됩니다.)

$ sudo rm /etc/nginx/sites-enabled/default

$ sudo rm /etc/nginx/sites-available/default



nginx 재시작

$ sudo service nginx start

'web > Django' 카테고리의 다른 글

nginx + uwsgi 연동  (0) 2019.01.11
uwsgi -- unavailable modifier requested: 0 --  (0) 2019.01.10
ubuntu uwsgi  (0) 2019.01.10
django middleware  (0) 2016.08.15
django-summernote 사용하기  (4) 2016.07.23
get 방식의 글자 256자 제한은 잘못된 상식  (2) 2016.05.24

WRITTEN BY
No.190
세계정복의 시작점

트랙백  0 , 댓글  0개가 달렸습니다.
secret


nginx + uwsgi 로 진행시 


-- unavailable modifier requested: 0 --

-- unavailable modifier requested: 0 --

-- unavailable modifier requested: 0 --



와 같이 접근이 안된다면 python3의 패키지나 옵션을 추가해 주시면 됩니다. 


1. uwsgi-plugin-python3 를 설치하고 다시 시작

$ sudo apt-get install uwsgi-plugin-python3


2. uwsgi 실행시  --plugin python3 옵션을 추가해서 시작

$ sudo uwsgi -i uwsgi.ini --plugin python3

'web > Django' 카테고리의 다른 글

nginx + uwsgi 연동  (0) 2019.01.11
uwsgi -- unavailable modifier requested: 0 --  (0) 2019.01.10
ubuntu uwsgi  (0) 2019.01.10
django middleware  (0) 2016.08.15
django-summernote 사용하기  (4) 2016.07.23
get 방식의 글자 256자 제한은 잘못된 상식  (2) 2016.05.24

WRITTEN BY
No.190
세계정복의 시작점

트랙백  0 , 댓글  0개가 달렸습니다.
secret

ubuntu uwsgi

web/Django 2019.01.10 00:49

가상환경 추가

$ virtualenv -p python3 venv


django 설치 및  프로젝트 생성

$ sudo apt-get install build-essential python-dev

$ pip3 install uwsgi

$ pip3 install django 

$ cd ~

$ django-admin.py startproject django_project


uwsgi 실행 확인 (에러시 포트 바인딩 확인)

$ cd django_project

$ uwsgi --http :8089 --module django_project.wsgi


ini 파일로 uwsgi 실행 

$ cd ..

$ vi uwsgi.ini

( base 의 경로 확인 필요 )

[uwsgi]


base = /home/ubuntu

project = django_project

chdir = %(base)/%(project) 

module = %(project).wsgi:application   

master = true    

processes = 1    

socket= /tmp/%(project).sock  

chmod-socket = 666

vacuum = true    

pidfile = %(base)/%(project).pid 

daemonize = %(base)/%(project).log


$ uwsgi -i uwsgi.ini



데몬으로 uwsgi 실행 ( uwsgi 설치 )

$ sudo apt-get install uwsgi

$ sudo apt-get install uwsgi-plugin-python3


$ sudo uwsgi -i uwsgi.ini

-> [uWSGI] getting INI configuration from uwsgi.ini 

출력과 함께 실행됨

로그를 보고 싶다면

$ tail -f -n 1000 django_project.log (ini파일의 deamonize의 경로의 log 파일)


uwsgi 종료시

$  sudo uwsgi --stop django_project.pid (ini 파일의 pidfile 경로의 pid 파일)




'web > Django' 카테고리의 다른 글

nginx + uwsgi 연동  (0) 2019.01.11
uwsgi -- unavailable modifier requested: 0 --  (0) 2019.01.10
ubuntu uwsgi  (0) 2019.01.10
django middleware  (0) 2016.08.15
django-summernote 사용하기  (4) 2016.07.23
get 방식의 글자 256자 제한은 잘못된 상식  (2) 2016.05.24

WRITTEN BY
No.190
세계정복의 시작점

트랙백  0 , 댓글  0개가 달렸습니다.
secret


1. script 는 기본적으로 window 객체 안에서 돌아간다.

2. 로드된 스크립트들은 window객체 안에 있고, 모듈간의 의존성 문제, 변수 및 함수의 침범이 일어났다.

3. 이를 방지하기 위해 commonJS / AMD(Asynchronous Module Definition) 가 생겨났고, es6 또한 제공하기 시작

AMD              require([""], function(module) {})

CommonJS    var module = require("")

ES6                 import { module } from "";

4. 서로 지원하는게 달라서 춘추전국시대가 열림

5. 이 모든것을 통합 해주는 babel 등장 ( js 하위버전으로 변환까지 해줌 ) 으로 결국 모두 바벨 사용해야함.



- 읽어보기

https://blog.pigno.se/post/157992405313/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EB%AA%A8%EB%93%88-%EC%A0%9C%EA%B3%B5%EC%9D%84-%EC%9C%84%ED%95%9C-amd-commonjs-%EA%B7%B8%EB%A6%AC%EA%B3%A0-requirejs-%EC%86%8C%EA%B0%9C

https://d2.naver.com/helloworld/591319


# 결국 node는 commonjs / 웹팩은 AMD / 클라이언트 프레임워크 ES6를 선택...... 이게 무슨..

'web > javascript' 카테고리의 다른 글

javascript 의 모듈 제공 방법  (0) 2018.09.05
js regexp wrong results?  (0) 2018.05.03
overflow-x 된 DOM에서 마우스 휠로 좌우스크롤 움직이기  (0) 2016.06.29
javascript reduce  (0) 2016.06.10
javascrpt map  (0) 2016.06.09

WRITTEN BY
No.190
세계정복의 시작점

트랙백  0 , 댓글  0개가 달렸습니다.
secret


var str = "FRANCE";

var re = new RegExp("[A-z]{2}", "ig");

for(var i=0; i<str.length; i++){
        var substring = str.substr(i, 2);
        console.log("re.test(substring)", substring, re.test(substring));
}


위의 소스를 돌려보면 아래와 같이 모두 true / false 가 번갈아 가면서 나온다.

re.test(substring) FR true
re.test(substring) RA false
re.test(substring) AN true
re.test(substring) NC false
re.test(substring) CE true
re.test(substring) E false

정규식이 두글자의 문자일때 true가 반환되어야 하지만 정상적인 경우에도 false가 나온다.

이는 regExp의 g 옵션때문인데, g는  글러벌 속성으로 마지막으로 통과한 정규표현식의 위치를 기억하고

다음번엔 해당 index부터 시작하게 된다.

위의 경우 첫번쨰  FR을 통과 했으므로 LastIndex = 1이 되고, 다음번 RA를 검사할시 LastIndex가 1이기 때문에 RA에서  A부터 검사하여 false이 리턴된다. 그리고 다시 LastIndex는 0으로 초기화된다.


이렇게 for문 안에서 반복적인 정규표현식을 사용할 경우엔 g옵션을 빼고 사용하거나,

혹은 LastIndex를 지속적으로 0으로 초기화를 해야 한다.

re.lastIndex = 0;


참조 : https://stackoverflow.com/questions/1520800/why-does-a-regexp-with-global-flag-give-wrong-results

'web > javascript' 카테고리의 다른 글

javascript 의 모듈 제공 방법  (0) 2018.09.05
js regexp wrong results?  (0) 2018.05.03
overflow-x 된 DOM에서 마우스 휠로 좌우스크롤 움직이기  (0) 2016.06.29
javascript reduce  (0) 2016.06.10
javascrpt map  (0) 2016.06.09

WRITTEN BY
No.190
세계정복의 시작점

트랙백  0 , 댓글  0개가 달렸습니다.
secret





{
    position: fixed;
    top: 0;
    left: 50%;
    margin-left: 216px;
    overflow: auto;
    height: 100%;
}


position을 fixed로 할 시 반응형일 경우 옆의 개체와 일정한 간격을 유지하기 위해선 약간의 꼼수가 필요하다.

left 50%; 와 

margin-left 값을 해당 태그사이즈 / 2 + 간격사이즈 를 px로 주면 반응형에도 알맞게 떨어진다.




WRITTEN BY
No.190
세계정복의 시작점

트랙백  0 , 댓글  0개가 달렸습니다.
secret

php 서버 실행

web/PHP 2018.04.30 23:12


1. 일반 실행 


   $php artisan serve 


  내장 PHP 웹 서버를 8000 포트에 구동



2. 포트 지정 

    $php artisan serve --port:8080

   8080 포트로 실행 



3. host 지정 

    $ php artisan serve --host 192.168.0.4 --port 8080

   기본으로 localhost 로 실행하기 때문에 localhost 로 접근하지 않으면 접근 되지 않음. 

   지정한 ip로 실행하면 접근 가능 




WRITTEN BY
No.190
세계정복의 시작점

트랙백  0 , 댓글  0개가 달렸습니다.
secret

오랜만에 라라벨을 실행시켜 보니 다음과 같은 에러가 난다. 


production.ERROR: exception 'ErrorException' with message 'file_get_contents(.env): failed to open stream: No such file or directory' in /Users/uiandwe/Downloads/profile/vendor/laravel/framework/src/Illuminate/Foundation/Console/KeyGenerateCommand.php:57
Stack trace:


해당 에러는 .env 파일이 없어서 나는 에러이다. (해당 파일에 라라벨 기본 설정 및 암호화 관련이 명시되어 있다. 기본 설정을 못 불러와서 나는 초기화 에러이다. )


1.  $php artisan key:generate




위의 명령어를 실행하고 처리되면 끝나지만 위와 같이 에러가 나면 파일 자체가 없는것이다. 


2. $vi .env


APP_ENV=local
APP_DEBUG=true
APP_KEY=SomeRandomString
APP_URL=http://localhost

DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null


해당 파일을 만든후 저장한다. 


3. $php artisan key:generate

     Application key [base64:xadA$G!@$%fgkljasdfnAFSDGATZU9E=] set successfully.


다시 1번의 명령어를 실행하여 키를 생성하면 정상적으로 셋팅이되며 이제 라라벨을 실행할수 있다. 




WRITTEN BY
No.190
세계정복의 시작점

트랙백  0 , 댓글  0개가 달렸습니다.
secret