2017년 4월 13일 목요일

PHP 클라이언트 아이피 주소 | PHP Client IP Address

<?php
    $ip = getenv('HTTP_CLIENT_IP')?:
    getenv('HTTP_X_FORWARDED_FOR')?:
    getenv('HTTP_X_FORWARDED')?:
    getenv('HTTP_FORWARDED_FOR')?:
    getenv('HTTP_FORWARDED')?:
    getenv('REMOTE_ADDR');
?>

Read More

2016년 11월 24일 목요일

Django에서 React 설정 | React with Django

pip and npm packages

$ pip install django_compressor PyReact
$ npm install -g babel-cli

[project]/settings.py

...
INSTALLED_APPS = (
    ...
    'compressor',
    ...
)
...
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    'compressor.finders.CompressorFinder',
)

COMPRESS_ROOT = os.path.join(BASE_DIR, 'static')
COMPRESS_PRECOMPILERS = (
    ...
    ('text/jsx', 'third_party.react_compressor.ReactFilter'),
    ...
)

third_party/__init__.py

(empty)

third_party/react_compressor.py

from compressor.filters import FilterBase
from react import jsx


class ReactFilter(FilterBase):
    def __init__(self, content, *args, **kwargs):
        self.content = content
        kwargs.pop('filter_type')
        super(ReactFilter, self).__init__(content, *args, **kwargs)

    def input(self, **kwargs):
        return jsx.transform_string(self.content)

[project]/urls.py

...
from django.conf.urls.static import static
...
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

static/jsx/main.jsx

ReactDOM.render(<h1>Hello World</h1>, document.getElementById('container'))

How to use in templates

{% load staticfiles compress %}
<!DOCTYPE>
<html>
<head>
    ...
    <script src='//fb.me/react-15.0.1.js'></script>
    <script src='//fb.me/react-dom-15.0.1.js'></script>
    ...
</head>
<body>
    ...
    <div id='container'></div>
    ...
    {% compress js %}
    <script src='{% static "jsx/main.jsx" %}' type='text/jsx'></script>
    {% endcompress %}
</body>

Read More

JSON 정렬 및 포맷 체크 | JSON Formatter & Validator

JSON Formatter & Validator

React 튜토리얼 | React Tutorials

Django에서 Babel 설정 | Babel with Django

pip and npm packages

$ pip install django_compressor
$ npm install -g babel-cli

[project]/settings.py

...
INSTALLED_APPS = (
    ...
    'compressor',
    ...
)
...
STATICFILES_FINDERS = (
    ...
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    'compressor.finders.CompressorFinder',
    ...
)
...
COMPRESS_PRECOMPILERS = (
    ('text/es6+javascript', 'babel -o {outfile} {infile}'),
)

How to use in templates

{% load compress %}
...
{% compress js %}
<script src='{% static "es/main.es" %}' type='text/es6+javascript'></script>
{% endcompress %}
...

Read More

2016년 11월 16일 수요일

JavaScript 문자열을 날짜 객체로 변경 | Convert String to Date Object in JavaScript

var dateString = "2016-11-11 01:02:03";
var reggie = /(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})/;
var dateArray = reggie.exec(dateString); 
var dateObject = new Date(
    (+dateArray[1]),
    (+dateArray[2])-1, // January is 0 and December is 11.
    (+dateArray[3]),
    (+dateArray[4]),
    (+dateArray[5]),
    (+dateArray[6])
);