소스코드를 보다 보니 _.method() 로 시작하는 코드들이 있길래 보니 lodash 라는 모듈(라이브러리) 이었다.

해서 내용을 확인해보니 여기 잘 정리되어 있었다.

쓰더라도 이유나 용도를 알고 써야겠다는 생각으로.


링크 : 자바스크립트 라이브러리 Lodash와 Underscore 알아보기


자바스크립트 인기 라이브러리 중 하나인 Lodash와 underscore 알아보려합니다.

소스 코드를 보면 _.test() 처럼 _로 시작하는 코드를 볼 수 있습니다. 이 코드는 위 라이브러리 소스로 자주 사용되는 라이브러리 툴입니다. 위 두 라이브러리 모두 자바스크립트를 확장하여 편리하게 코드를 작성하거나 웹표준, 크로스 브라우징에 많이 사용됩니다. 이처럼 Lo-dash와 underscore가 인기를 끄는 이유는 아래와 같습니다.

- 브라우저에서 지원하지 않는 다양한 메소드를 가지고 있음
- 퍼포먼스 측면에서 Native보다 더 나은 성능을 가져올 수 있음
- npm이나 패키지 매니저를 통하여 더 쉽게 사용 가능
- 프론트 프레임워크나 3rd 파티 등의 툴에 디펜던시로 많이 쓰임

이처럼 사용하는 것이 많은 장점을 가지게됩니다. 참고로 위 두가지 라이브러리를 비교하는 글들이 많은데 하지만 둘 다 차이점이 있고 최근에는 Lo-dash의 인기가 높은 편입니다. 그 이유는 Lodash가 좀 더 많은 기능을 지원하고 성능적인 측면에서도 더 나은 결과를 가져온다고 합니다. 하지만 둘 다 대부분의 유용한 기능을 지원하며 underscore.js의 경우 오랜 기간 사용되어 왔고 관련 레퍼런스를 쉽게 찾을 수 있습니다. underscore가 용량도 더 적다는 점도 무시할 수 없을 것입니다.


! 웹표준, 최신 브라우저 이슈 해결가능
프론트 개발에 사용되는 자바스크립트는 브라우저에 따라 사용가능한 DOM관련 이벤트, 메소드 등이 제한적입니다. 이에 따라 별도의 개발 코드를 추가하여야하는데 이런 번거러움에서 Lodash 또는 underscore가 많이 사용됩니다. jQuery 역시 사용의 편리함도 큰 장점이지만 다양한 브라우저 환경에서 크로스 브라우징을 지원하죠.


# LoDash, underscore 사이트

더 자세한 내용은 해당 웹사이트에서 알아볼 수 있겠죠. 아래 주소는 해당 사이트로 이동합니다.

Lodash 바로가기 > https://lodash.com/

Underscore.js 바로가기 > http://underscorejs.org/

현재 업데이트 및 소스를 다운 받을 수 있습니다.

찾다보니 까먹을까 포스팅


https://googlechrome.github.io/samples/touch-action/



'Development > CSS' 카테고리의 다른 글

css pinch zoom  (0) 2018.08.28
IE 10 이상으로 셀렉트박스 아이콘 숨기기  (0) 2015.05.08
inline-block 여백 제거  (0) 2013.12.17
HTML5 / CSS3 placeholder 폰트 색상 지정  (0) 2013.09.02
구글폰트 - 나눔고딕등  (0) 2013.07.05
Box Shadow - CSS3  (0) 2013.07.05

무료 SSL 적용하려 했는데 다음 포스팅이 너무 깔끔해 링크.

나중에 적용해보자.


[보안] Let's Encrypt로 무료 https(ssl) 적용하기


'OS & Infra > Secure' 카테고리의 다른 글

SSL 무료인증서 / Let's Encrypt  (1) 2018.07.12
  1. 2018.08.12 19:17

    비밀댓글입니다

몽고디비를 기반으로 개발하다보면 가끔씩 정상적으로 프로세스가 종료되지 않았을때

mongod 명령어가 실행되지 않을때가 있다.


이때는 몽고디비 콘솔에 접속하여 어드민으로 스위칭하고 종료하면 된다.


  1. $ mongo
  2. $ use admin
  3. $ db.shutdownServer()




'DataBase > MongoDB' 카테고리의 다른 글

몽고디비 종료 (already process port 27017)  (0) 2018.07.11

알아두면 매우 유용


  1. Tools
  2. Names
    1. Model Naming Options...


'DataBase' 카테고리의 다른 글

[ERWIN] 오브젝트및 속성 명 일괄적으로 대/소문자 변경  (1) 2018.05.10
[ER-WIN] Names Option  (0) 2016.10.25
memsql  (0) 2013.12.30
FreeSQLFormatter [SQL정렬]  (0) 2012.02.13
NoSQL  (0) 2011.01.14
ERStudio  (0) 2010.08.24
  1. 2018.05.30 17:20

    비밀댓글입니다

1. 리눅스 버전확인 (참고)

$ grep . /etc/*-release
$ cat /etc/*-release | uniq


php, RPM

출처 : blog.remirepo.net


Repositories configuration:

On Fedora, standards repositories are enough, on Enterprise Linux (RHEL, CentOS) the Extra Packages for Enterprise Linux (EPEL) repository must be configured, and on RHEL the optional channel must be enabled.

Fedora 27

wget http://rpms.remirepo.net/fedora/remi-release-27.rpm
dnf install remi-release-27.rpm

Fedora 26

wget http://rpms.remirepo.net/fedora/remi-release-26.rpm
dnf install remi-release-26.rpm

RHEL version 7.4

wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm
rpm -Uvh remi-release-7.rpm epel-release-latest-7.noarch.rpm
subscription-manager repos --enable=rhel-7-server-optional-rpms

RHEL version 6.9

wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
wget http://rpms.remirepo.net/enterprise/remi-release-6.rpm
rpm -Uvh remi-release-6.rpm epel-release-latest-6.noarch.rpm
rhn-channel --add --channel=rhel-$(uname -i)-server-optional-6

CentOS version 7.4

wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm
rpm -Uvh remi-release-7.rpm epel-release-latest-7.noarch.rpm

CentOS version 6.9

wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
wget http://rpms.remirepo.net/enterprise/remi-release-6.rpm
rpm -Uvh remi-release-6.rpm epel-release-latest-6.noarch.rpm

 

remi-php72 repository activation

Needed packages are in the remi-safe (enabled by default) and remi-php72 repositories, the latest is not enabled by default (administrator choice according to the desired PHP version).

RHEL or CentOS

yum install yum-utils
yum-config-manager --enable remi-php72

Fedora

dnf install dnf-plugins-core
dnf config-manager --set-enabled remi-php72

 

PHP upgrade

By choice, the packages have the same name than in the distribution, so a simple update is enough:

yum update

That's all :)

$ php -v
PHP 7.2.0 (cli) (built: Nov 28 2017 10:27:47) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.2.0, Copyright (c) 1999-2017, by Zend Technologies
    with Xdebug v2.6.0alpha1, Copyright (c) 2002-2017, by Derick Rethans

 

MySQL root 패스워드 분실



https://www.lesstif.com/pages/viewpage.action?pageId=26083916


쉘스크립트 잘 정리해놓음.

CentOS 기준


Error Messages

  • Job for mariadb.service failed because the control process exited with error code. See "systemctl status mariadb.service" and "journalctl -xe" for details.
  • Aria engine is not enabled or did not start. The Aria engine must be enabled to continue as mysqld was configured with --with-aria-tmp-tables
위 에러 내용중 하나가 발생하면서, MariaDB 가 기동이 안된다면 다음과 같이 처리한다.


$ systemctl status mariadb

치면  위 메세지중 2번째 메세지를 표시하고 있을것이다.


이제 아래 내용들을 순서대로 처리하면 된다.


1. aria_log_control 파일을 유저경로로 옮기고 삭제.

$ cd /var/lib/mysql
$ mv aria_log_control ~/

2. ib_log 파일들도 동일하게 유저경로로 옮기고 삭제

$ cd /var/lib/mysql
$ mv ib_logfile0 ~/
$ mv ib_logfile1 ~/

$ cd ~/
$ rm ./ib_logfile0 ib_logfile1

3. 위와 같이 완료됬다면

$ systemctl enable mariadb
$ systemctl start mariadb

 

  1. In the Finder, press G to Go to Folder.

  2. Type "~/Library/Services"

  3. Find the service you no longer want

  4. Drag it to the Trash


소스트리를 설치하면 git 은 시스템이든 임베디드로든 선택하여 설치할 수 있다.

이때 임베디드 git 경로를 알아야 IDE 상에서 git 설정할때 불편을 없앨 수 있다.


  • Windows
        C:\Users\User\AppData\Local\Atlassian\SourceTree\git_local\bin\git.exe C:\Users\User\AppData\Local\Atlassian\SourceTree\git_local\bin\cmd\git.exe
        or
        
        %USERPROFILE%\AppData\Local\Atlassian\SourceTree\git_local\bin
  • Mac
    /Applications/SourceTree.app/Contents/Resources/git_local/bin

위 경로에 보면 git 이 있음.
난 노란색 글씨로 설정함.

'OS & Infra > GIT' 카테고리의 다른 글

[SourceTree] 소스트리 임베디드 깃 경로 (SourceTree Embedded Git Path)  (0) 2018.03.22
[펌] git 파일 대소문자 변경하기  (0) 2015.09.22
GIT 참고링크  (0) 2015.06.24
GIT 명령어  (0) 2015.06.24

링크 https://conory.com/blog/19194


리눅스는 여러사용자가 들어와 사용하는 멀티유저 시스템이지요.. 왜냐면 리눅스는 서버용으로 만들어진 운영체제이기때문입니다..

그런데 한가지 문제가 발생합니다.

여러 사용자가 들어오면 서버에 올려진 비밀자료 열람과 그것을 변조,수정,삭제를 할 우려가 높아집니다..

그리고 그 비밀자료는 일부 사용자에게만 공개하는 것이였습니다. 하지만 모든사용자들이 다 볼 수 있겠죠.. 왜냐면 여러사람들이 사용하는 컴퓨터이기때문이지요..


이 문제가 극복하기위해 리눅스에 한가지 기능을 추가합니다.

바로 퍼미션(권한)이라는 기능을 추가했습니다.. 퍼미션은 말그대로 시스템에서 유지되는 권한기능입니다..

참고로 윈도우도 퍼미션기능이 있긴하지만, 여러사용자들이 들어오는 서버용이 아니기에 리눅스처럼 활성화되어있지않습니다.. 


이 기능으로 사용자들은 자신한테 읽기퍼미션이 부여된 파일만 읽을 수 있고,쓰기퍼미션이 부여된 파일만 쓰기와 수정이 가능하고, 실행퍼미션이 부여된 파일만 실행이 가능하게 됩니다.

이로써 비밀자료는 퍼미션이 부여된 사용자들에게만 공개할 수 있게 되었습니다..


그리고 "이 파일은 누구꺼지?"라는 문제에서 소유자 개념도 생겨납니다. 

앞에서 리눅스는 여러사용자들이 공동으로 사용하는 운영체제라고 말했습니다..

그러면 "이 파일은 내가 만들었어.. 그래서 내꺼야.. , 아니! 니가 만들었지만, 내가 대부분 수정했어.. 그래서 내꺼야 "라는 분쟁이 발생합니다.. 왜냐면 혼자쓰는 게 아니라 여러사람들이 같이 사용하는 컴퓨터이잖아요.

그래서 리눅스에서 "이건 니꺼다"라고 정해줍니다.. 리눅스 曰 "이 파일은 니가 만들었으니, 니가 소유자, 즉 이 파일의 주인이야!!"



1) 파일정보 보기

일단, 퍼미션 조정하려면 파일에 부여된 퍼미션부터 봐야겠지요?


1.png 


먼저 "ls -al" 명령어는 다들 아시죠? 앞에서 배웠습니다. 현재위치에 있는 파일들을 자세히보여주는 명령입니다.

그리고 자세히 보면 맨 뒤부분은 파일이름이 표시된다는 건 아시겠나요?

그치만, 앞부분에 있는 "drwxr-xr ~~ 머시기" 이건 도대체 뭔지 모르겠네요..;;


차근차근 봅시다..

drwxr-xr-x  2  root  root  4096 Apr 22 16:59 conory

파일Type 퍼미션정보 링크수 소유자 소유그룹 용량 생성날짜 파일이름
  • 파일 Type : "d" -> 디렉토리 , "l" -> 링크파일 , "-" -> 일반파일 등등..
  • 퍼미션정보 : 해당 파일에 어떠한 퍼미션이 부여되어있는 지 표시!
  • 링크수 : 해당 파일이 링크된 수! 링크는 윈도우의 "바로가기"와 같습니다. "in [대상파일] [링크파일]" 명령으로 링크파일을 만듭니다.
  • 소유자 : 해당 파일의 소유자이름! (누구껀지?)
  • 소유그룹 : 해당 파일을 소유한 그룹이름! 특별한 변경이 없을 경우 소유자가 속한 그룹이 소유그룹으로 지정됩니다.
  • 용량 : 파일의 용량!
  • 생성날짜 : 파일이 생성된 날짜! 
  • 파일이름 : 파일이름이죠!

이제 퍼미션정보를 봐야겠지요.. 윗부분에서 보셔서 아시겠지만, 앞에서 두번째부터 아홉번째까지가 바로 퍼미션정보입니다.
rwxr-xr-x
"근데 이게 퍼미션 정보라고요??.. 와이리 못생겨노?"

일단은 알아두어야 할게 있는 데요.. 퍼미션 종류에는 3가지가 있습니다.. 그리고 퍼미션의 사용자 지정에도 3가지가 구요..

* 퍼미션 종류 , () 괄호에 있는 것이 해당 퍼미션 기호
  • 읽기 ( r ) : 파일의 읽기권한
  • 쓰기 ( w ) : 파일의 쓰기권한
  • 실행 ( x ) : 파일의 실행권한

* 퍼미션의 사용자지정
  • 소유자 : 소유자에 대한 퍼미션지정
  • 그룹 : 소유그룹에 대한 퍼미션지정
  • 공개 : 모든사용자들에 대한 퍼미션지정

그럼 퍼미션 정보를 볼까요?
rwxr-xr-x

"r  w  x가 왠지 낮익어요.." 하는 분 계신가요?? 
네.. 맞아요.. 위에서 봤던 퍼미션 기호이지요..

그런데 기호의 종류는 ( r  w  x )  3개인데.. 퍼미션정보에는 총9개가 표시되네요.. 뭔지?
일단 세자리씩 끊어봅시다.. ( rwx  r-x  r-x ) 이제 감이오나요?
바로!! "소유자 : rwx , 그룹 : r-x , 공개 : r-x"  이런 얘기지요.. ㅎㅎ (이때 '-' 기호는 그 퍼미션은 없다는 기호입니다.)
해석해보면 " 이 파일에 대해서 소유자는 읽기(r),쓰기(w),실행(x)을 허용하고, 
파일의 소유그룹에 속하고 있는 사용자들은 읽기(r),실행(x)만 허용하고,
이외에 나머지 모든 사용자들도 읽기(r),실행(x)만 허용한다. "


2) 퍼미션 변경하기
파일이 생성될때 기본적인 퍼미션이 부여됩니다.
하지만, 퍼미션을 변경하고 싶을 때가 있습니다. (가령 이 파일을 모두에게 공개한다거나 하는...)

퍼미션 변경에는 여러가지 방법이 있지만, 여기서는 가장 쉬운방법으로 배워보도록 합시다.
바로 "chmod" 명령을 사용하면 아주 손쉽게 퍼미션을 변경할 수 있습니다.

chmod [변경될 퍼미션값] [변경할 파일]

여기서 [퍼미션값]을 지정해 줘야하는 데요..
퍼미션값을 구하는 방법은 다음과 같습니다.

  • 각 퍼미션 기호를 숫자로 변환 합니다. ( r = 4 , w = 2 , x = 1 )
예) r  -  x 인 경우 4  0  1

  • 변환한 숫자를 합산합니다.
예) 4  0  1 인 경우  4+0+1 = 5

이런식으로 하나의 퍼미션을 숫자값으로 변환하면 됩니다..
예) rwxr-xr-x 이면 rwx  r-x  r-x 세자리씩 끊고, 4+2+1  | 4+0+1 | 4+0+1  숫자변환 뒤 합산하면 "755" 라는 퍼미션값이 나옵니다.

그래서 " chmod 755 conory.text " 명령을 실행하면 conory.text 파일이 755에 해당되는 퍼미션으로 변경됩니다.
그리고 디렉토리도 이 방법으로 퍼미션을 변경할 수 있습니다.

디렉토리의 경우 "-R" 옵션을 사용하면 하위 디렉토리의 모든 디렉토리및 파일의 퍼미션이 변경됩니다.
예) " chmod -R 777 conory " conory 디렉토리의 하위에 위치한 모든 파일및 디렉토리 퍼미션이 777로 변경됩니다.


3) 소유자 변경하기
파일의 소유자 양도를 해야 될 경우 소유자 변경을 할 수 있습니다.
아래 명령으로 손쉽게 변경할 수 있습니다.

chown [변경할 소유자] [변경할 파일]

이 명령으로 소유자뿐만 아니라 소유그룹도 변경할 수 있습니다.
[변경할 소유자]란에 ".그룹이름" 형식으로 입력하면 됩니다. " .conory "
예를 들어 conory.text의 소유자를 "conory"로, 소유그룹을 "conory2"로 동시에 변경할 경우 " chown conory.conory2 conory.text "


* 실습
conroy.text이란 파일을 만들어 퍼미션을 rwxrwxrwx(777)로 변경하고, 소유자및 소유그룹을 "conory"로 변경해봅시다.
단, conory라는 사용자계정이 생성되어 있어야겠지요..



쓰면서 처음 보는 에러 발생;;;


UPDATE 시에 대상 테이블의 값을 대상 테이블에서 직접 접근하여 조회하여 조건에 사용했을 경우 에러 발생.

UPDATE 에서만 발생하는지는 모르겠음.


정리된 내용은 이러함.

SELECT
*
FROM `TABLE`
WHERE ID = 'JKUN.NET'
AND IDX = ( SELECT MAX_IDX FROM (SELECT MAX(IDX) AS MAX_IDX FROM `TABLE` WHERE ID = 'JKUN.NET') ) _dummy )

링크온디맨드(On-Demand) 서비스란?


잘 정리되어 있어서 유익하게 알수 있음.^^


최근 IT 기사를 읽다 보면 카카오 택시, 배달의 민족, 우버와 같은 온디맨드 O2O 서비스가 뜨고 있다고 합니다. 온라인에서 결제하고 오프라인에서 이용하는 O2O(Onlie to Offline)는 쉽게 이해되는데 온디맨드(On-Demand)는 뭘까요? 꽤 오래전부터 사용되어온 용어인데 어떤 의미인지 쉽게 와 닿지가 않습니다.

 

온디맨드(On-Demand)의 사전적 정의를 살펴보니 우리말로 주문형 서비스라고 이야기합니다.


주문형 서비스 

1. 소비자가 있는 곳까지 찾아가서 상품과 서비스를 전달하는 것.
2. 이용자의 요구에 따라 상품이나 서비스가 바로 제공되는 것.


이렇게 봐도 알쏭달쏭한데요. 단순하게 "내가 있는 곳으로 상품이나 서비스가 찾아온다"라고 이해하면 쉬울 것 같습니다. 비유를 들어볼까요?

 

온디맨드가 아닌 경우 (내가 갈게)

- 짜장면을 먹으러 중국집에 방문한다.

- 영화를 보러 영화관에 방문한다.

- 택시가 지나가는 길목에서 택시를 잡는다.

 

온디맨드 (이쪽으로 와)

- 전단지를 보고 짜장면을 주문한다.

- 콜택시 회사에 전화해 콜택시를 부른다.

- 집에서 메이크업을 받기 위해 출장 메이크업을 부른다.

 

온디맨드 O2O

- 배달의 민족 앱을 통해 짜장면을 주문한다.

- Btv로 스마트폰에서 보고 싶은 영화를 시청한다.

- 카카오 택시, 우버 앱을 이용해서 택시를 호출한다.

 

이해가 좀 되시나요? 결국, 온디맨드 서비스는 이용자의 요구에 따라 상품이나 서비스가 찾아오는 것이고, 온디맨드 O2O 서비스는 IT 기술을 활용하여 수요자와 공급자를 좀 더 긴밀하게 연결시켜주는 것을 의미합니다. 

대표적인 온디맨드 O2O 서비스

온디맨드 O2O 서비스는 위에 소개한 서비스 외에도 변호사, 법률전문가, 컨설턴트 등을 중개하는 분야까지도 확대되고 있으며 점차 세분화되고 있습니다. 결국, 소비자의 요구는 다양해지고 점점더 편리함을 추구하기 때문에 온디맨드 O2O 서비스는 IT산업의 큰 축으로 자리잡게 될 것으로 보여집니다. 개인적으로는 출장 메이크업, 출장 세차, 출장 스냅사진 서비스를 만들어봐도 재밌을 것 같다는 생각이 드네요. 그럼, 이상으로 온디맨드에 대한 용어정리를 마치겠습니다.


첨언. 한국에서는 출장 미용서비스가 불법이라고 하네요. 새로운 사업을 시작할 땐 법적인 이슈도 잘 살펴보시길 바랍니다. 

'Tech Note > 용어' 카테고리의 다른 글

[펌] 온디맨드 서비스  (0) 2018.02.28

흠.. 웹 프로젝트에 대한 방향성에 대한 문제로 일말의 공부와

생각의 정리가 필요하였다.


Node.js 를 보다가 Node / Express 등을 보다가 Nuxt.js 라고 서버사이드 렌더링 프레임워크를

알게 되어서 공부하다 보니 놓칠뻔 했던 중요한 내용이었다.


요새는 바로 사용할 수 있는 실용화, 생산성 위주로 살아가다 보니

전혀 공부할 생각과 시간이 없었는데 이건 중요한 계기였듯.


먼저 Vue.js 에서 보면 다음과 같이 서버사이드 렌더링에 대하여 언급되어 있다.


URL : https://ssr.vuejs.org/ko/

왜 SSR을 사용하나요?

전통적인 SPA(싱글 페이지 애플리케이션)에 비해 SSR의 장점은 주로 아래에 있는 내용과 같습니다.

  • 더보기

  • 컨텐츠 도달 시간 단축, 특히 느린 인터넷 또는 느린 장치의 경우에 서버 렌더링 마크업은 모든 자바 스크립트가 다운로드되어 실행될 때까지 기다릴 필요가 없으므로 사용자는 완전히 렌더링 된 페이지를 더 빨리 볼 수 있습니다. 일반적으로 사용자 경험이 향상되고 전환율과 직접적인 관련성이있는 애플리케이션의 경우 중요해질 수 있습니다.

  • 하지만 SSR을 사용할 때 고려해야할 몇가지 단점이 있습니다.

    • 개발 제약 사항이 있습니다. 브라우저의 특정 코드는 특정한 라이프사이클에서만 사용할 수 있습니다. 일부 외부 라이브러리는 서버에서 렌더링 된 애플리케이션에서 실행할 수 있도록 추가적인 처리가 필요할 수 있습니다.
    • 설치 및 배포 요구사항을 보다 복잡하게 만들 수 있습니다. 정적 파일 서버에 배포할 수 있는 완전히 정적인 SPA와 달리 서버 사이드 렌더링 애플리케이션에서는 Node.js 서버를 실행할 수 있는 환경이 필요합니다.
    • 더 많은 서버측 부하가 생깁니다. Node.js의 전체 애플리케이션 렌더링은 정적 파일을 제공하는 것 보다 CPU를 많이 사용하므로 트래픽이 많을 것으로 예상되면 서버 부하에 대비하고 캐싱 전략을 잘 짜야합니다.

    앱에 SSR을 사용하기 전에 먼저 실제 필요한지 고민해야합니다. 보통 앱의 컨텐츠가 얼마나 빨리 도달해야 하는지에 달려 있습니다. 예를 들어, 초기 로드 시 추가적인 수백 밀리 초가 그다지 중요하지 않은 내부 대시 보드를 구축하는 경우 SSR은 불필요합니다. 그러나 시간에 따른 컨텐츠가 절대적으로 중요한 경우 SSR을 사용하면 최상의 초기 로드 성능을 얻을 수 있습니다.

그리고 관련내용을 또 찾다보니 

굉장히 이해하기 쉽게 깔끔하게 정리해주신 블로거(jaroinside) 님이 있었음. 링크

그래서 많은 생각을 하게됨.


결과적으로는 아수 단순하게 정리.


SEO 에 반영되어 유입률을 늘리려면 서버사이드 렌더링.

굳이 그러한 목적이 없다면 클라이언트 사이드 렌더링 처럼 목적과 용도에 맞게 사용해야겠다는 들었다.




  1. ㅇㅇ 2018.08.30 19:24 신고

    SSR과 SPA의 개념을 반대로 작성하신거 아닌가요?

    • JKUN Dev. Jkun 2018.08.31 15:58 신고

      위 보면 해당글은 Vue.js 에서 언급된 내용입니다.
      그리고 SSR 과 SPA 에서 어느 부분이 반대인지 말씀해 주시면 좋겠네요? ^^;; 보시면 SEO 문제로 인하여 SSR 을 사용하는 건데 반대라면 CSR 방식의 SPA 가 SEO 에 더 좋다는 말씀 이신가요?
      위 내용은 Vue.js 에서 언급된 내용을 인용하여 포스팅한 내용이지만 개인적으로 생각해봐도 이미 렌더링 된 결과를 검색엔진들이 읽어가기 더 좋지 않을까 하네요. 렌더링 되기 전에 빈 UI 만 있는 상태일테니까 가져갈게 없겠네요. 물론 구글에서 요새는 스크립트들도 실행시켜 준다고도 하고, pre-loader 등도 있다고 하지만, 그렇게까지 언급하지는 않았습니다. 그럼 말씀하신 내용이 제가 정확하게 이해를 못하겠지만 답변이 되었으면 합니다. ㅎㅎ

한번 따라해봅세~~



[펌] 도커를 이용하나 웹서비스 무중단 배포 : https://subicura.com/2016/06/07/zero-downtime-docker-deployment.html


[펌] 도커를 깐 김에 배포까지 : http://blog.nacyot.com/articles/2014-01-27-easy-deploy-with-docker/

'OS & Infra > Docker' 카테고리의 다른 글

도커학습 링크  (0) 2018.02.09

별로 어려운 건 아님.

엔진엑스 공식웹사이트에서 나온 대로 따라하면 됨. ㅎㅎ;;


링크 입니다.

오라클에서 통계 관련 쿼리를 작성하다보면,

기간성 정보 기준으로 데이터를 도출해야할 경우가 있다. 예를 들자면 (일간, 월간, 년간)


하지만 영업일이 없었던 경우 0 원으로 표시해야하거나 주말같은 경우는 뭔가 표시를 해주어야 하는데,

이게 필요할 때 찾으면 없거나 보통 귀찮은일이 아님.


해서 테이블부터 데이터 등록 PL/SQL 까지 같이 올림. 그냥 바로 돌리시면 됩니다.^^


CREATE TABLE DATE_STANDARD
(	
  YEAR_ID CHAR(4 BYTE), 
	MONTH_ID CHAR(2 BYTE), 
	DAY_ID CHAR(2 BYTE), 
	DATE_ID VARCHAR2(8 BYTE), 
	WEEK_NO CHAR(1 BYTE), 
	WEEK_TXT VARCHAR2(5 BYTE)
)  

CREATE INDEX IDX_DATE_STANDARD ON DATE_STANDARD (YEAR_ID, MONTH_ID, DAY_ID, DATE_ID) ;
COMMIT;

SET SERVEROUTPUT ON;
DECLARE
  i NUMBER := 1;
  yyyy CHAR(4) := '2019';
  mm CHAR(2);
BEGIN
  
  FOR i IN 1..12 LOOP
  
    mm := TO_CHAR(LPAD(i, 2, 0));
    
    INSERT INTO DATE_STANDARD
    SELECT
      SUBSTR(DS.DATE_ID, 0, 4) AS YEAR_ID,
      SUBSTR(SUBSTR(DS.DATE_ID, -4), 1, 2) AS MONTH_ID,
      SUBSTR(DS.DATE_ID, -2) AS DAY_ID,
      DS.DATE_ID,
      TO_CHAR(TO_DATE(DS.DATE_ID), 'd') AS WEEK_NO,
      DECODE( TO_CHAR(TO_DATE(DS.DATE_ID), 'd') , 1, '일', 2, '월', 3, '화', 4, '수', 5, '목', 6, '금', 7, '토') AS WEEK_TXT    
    FROM (
      SELECT      
        TO_CHAR(TO_DATE(yyyy || mm ||'01', 'YYYYMMDD')+LEVEL - 1, 'YYYYMMDD') AS DATE_ID
      FROM DUAL
      CONNECT BY LEVEL <= (LAST_DAY(TO_DATE(yyyy || mm ||'01', 'YYYYMMDD')) - TO_DATE(yyyy || mm ||'01', 'YYYYMMDD') + 1)
    ) DS;
    
    DBMS_OUTPUT.PUT_LINE(mm || ' 월 데이터 등록 완료');
    
  END LOOP;  
  
  COMMIT;
  
END;

오라클 컬럼을 로우로

SELECT DECODE (MOD (ROWNUM - 1, 3) + 1, 
                 1, SUM_TARGET_SALES_AMT, 
                 2, MALL_TARGET_SALE_AMT, 
                 3, MALL_OUT_CHANNEL_TARGET_SALE_AMT) AS TARGET_SALE_AMT
  FROM (SELECT 1
              FROM DUAL
        CONNECT BY LEVEL <= 3), (
          SELECT                        
            TARGET_VAL            AS SUM_TARGET_SALES_AMT,
            TARGET_CLIENT_TBH     AS MALL_TARGET_SALE_AMT,
            TARGET_CLIENT_TBH_OUT - 100 AS MALL_OUT_CHANNEL_TARGET_SALE_AMT    
          FROM TARGET_DATAS
          WHERE TARGET_YEAR = '2017'
          AND TARGET_MONTH = '09'
          AND TARGET_DIVI_CD = '10'  
        ) TT


가끔 데이터 조회 결과를 1:N 인데 1:1 로 합쳐서 표시할때 유용하다.

예제는 다음과 같다.


/* 엘클라시코 포워드 라인업 */
/* 오라클 11g 기준 문자열 연결 예제 (LISTAGG .. ) */
WITH EL_CLASICO_FORWARD_LINE_UP AS (
  SELECT
    '크리스티아누 호날두' AS PLAYER,
    '레알 마드리드' AS CLUB
  FROM DUAL
  UNION ALL
  SELECT
    '가레스 베일',
    '레알 마드리드'
  FROM DUAL
  UNION ALL
  SELECT
    '카림 벤제마',
    '레알 마드리드'
  FROM DUAL
  UNION ALL
  SELECT
    '리오넬 메시',
    'FC 바르셀로나'
  FROM DUAL
  UNION ALL
  SELECT
    '네이마르',
    'FC 바르셀로나'
  FROM DUAL
  UNION ALL
  SELECT
    '루이스 수아레즈',
    'FC 바르셀로나'
  FROM DUAL  
)
SELECT 
  CLUB,
  LISTAGG(PLAYER, '/') WITHIN GROUP(ORDER BY CLUB) AS FORWARDS
FROM EL_CLASICO_FORWARD_LINE_UP
GROUP BY CLUB;


※ 결과


먼저 DIRECT-PATH INSERT 에 대한 구조를 대략적으로나마 이해하면 좋을 듯 싶다.


나도 데이토의 올라온 내용을 따라해보고 까먹을까봐 일단 예제 순서만 메모.

  1. 해당 세션에 패러렐 DML 허용;
  2. 임시 테이블에 로깅해제;
  3. APPENT 힌트 사용
  4. 테이블 로깅;
  5. 다시 패러렐 DML 비허용

여기에 대한 관련 링크들은 다음과 같음.



오라클에서 쿼리 수행계획을 찾다보니 확인하고,
다음과 같이 샘플 예제를 넣어서 확인해버릇 해야겠다.


내가 이해하기로는 크게 3 블럭으로 나눈다.

  1. PLAN_TABLE(플랜계획내용을 저장하는 테이블) 에 STATEMENT_ID 를 부여
  2. 실행할 쿼리
  3. 플랜계획내용 조회
SET SERVEROUTPUT ON;
EXPLAIN PLAN SET statement_id = 'EX1' INTO PLAN_TABLE FOR

SELECT * FROM "대상테이블" /* 수행계획을 확인할 대상쿼리 */

SELECT * FROM PLAN_TABLE
WHERE STATEMENT_ID = 'EX1'

위 쿼리가 실행할 샘플 예제 입니다.


참고링크 : http://najuung.tistory.com/56



출처: [XronoCore]Macbook Pro Retina 15" Bootcamp 화면 해상도 설정 방법






맥북을 사용하면서 Mac OSX만으로는 부족한 상황이 오면서 윈도우를 부트캠프를 통해 설치하게 됩니다.


그런데 맥북 프로 레티나 15"의 윈도우 권장 해상도는 2880*1800 인데요,


이는 윈도우 UI 상에서 불필요하게 높은 해상도로, 아이콘이나 하단 상태 표시줄 등이 너무 작게 보입니다.


글씨도 작게 보여서 상당히 불편함을 느끼게 하는데요,


필자가 사용중인, 적절한 해상도 설정을 알려드릴까 합니다.


설정 기준은 Windows 10입니다.



해상도 설정 순서

--+


1. 바탕화면에서 마우스 오른쪽 클릭을 하신 후, '디스플레이 설정(D)' 로 진입합니다.


2. 설정 화면에 아래에 보시면, '고급 디스플레이 설정' 이라고 파란 글씨가 있습니다. 눌러서 설정 페이지로 진입해주세요.


3. 해상도를 1680*1050 으로 변경합니다. 필자 처럼 듀얼 모니터를 사용하시는 분은 다중 디스플레이에서 디스플레이 확장으로 이용하시면 됩니다.


해상도 변경 후에는 하단 작업표시줄 크기 등이 변하고, 배경화면 아이콘 사이즈가 바뀝니다.


4. 배경화면 아이콘 사이즈를 바꾸고 싶으신 경우에는, ctrl키를 누르시면서 마우스 스크롤을 올렸다 내렸다를 하시면서 원하시는 사이즈로 변경가능합니다.


해상도 관련 추가 설정법

--+

해상도를 2880*1800에서 1680*1050으로 낮추었다는 점을 생각하여, 각종 프로그램 내부 해상도 설정에서 화면 크기를 1680*1050으로 변경하여 사용하시면 최적의 설정상태로 프로그램을 사용할 수 있습니다. 


대표적인 예로 League of Legends 게임을 2880*1800 해상도로 게임을 하실 경우, 마우스가 굉장히 작게 보여 게임에 지장이 발생할 수 있습니다.


이 경우, 해상도를 필자처럼 1680*1050으로 변경하셨을 시, 게임 내부 설정에서 1680*1050으로 화면 해상도를 변경하시면 정상적인 해상도로 게임을 진행하실 수 있습니다.


추가로, 고해상도인 2880*1800으로 부트캠프를 사용하실 경우, 그래픽 요구량이 높은 작업에서 제약을 받으실 수 있습니다. 따라서 해상도를 낮추어 사용하는 것이 가독성에도 좋고 성능 면에서도 도움이 많이 됩니다.




Mac OS 에서 sqldeveloper 로 접속시 locale not recognized 에러머세지로 연결불가.

아마 로케일 문제인듯.

설치된 sqldeveloper 는 영문판임.

구글링중 발견.


{sqldeveloper 설치위치}/Contents/Resources/sqldeveloper/sqldeveloper/bin/sqldeveloper.conf


파일을 열고 VMOption 에서 


AddVMOption -Duser.language=ko

AddVMOption -Duser.country=KR 


이분은 친절한 캡쳐포스팅 : http://ending1.tistory.com/49

  1. 소액결제 현금화 2017.12.07 04:19 신고

    감사합니다 ^&^

오라클에서 데이터를 다중 조건에 맞게 업데이트하기 위한 방법중 첫번째.

SET 절과 (WHERE, AND) 조건 절과 동일한 내용으로 업데이트 쿼리를 수행.


샘플 데이터는 다음과 같다.


테이블 : JKUN

위 테이블에서 업데이트 대상은 NUM_1 필드(전체)이다.


이 데이터들을 순번으로 업데이트 할 예정.

다음은 가상 데이터

    SELECT 1 AS RN, 4 AS NUM_SEQ
    FROM DUAL
    UNION ALL
    SELECT 2 AS RN, 5 AS NUM_SEQ
    FROM DUAL
    UNION ALL
    SELECT 3 AS RN, 6 AS NUM_SEQ
    FROM DUAL
    UNION ALL
    SELECT 4 AS RN, 7 AS NUM_SEQ
    FROM DUAL
    UNION ALL
    SELECT 5 AS RN, 8 AS NUM_SEQ
    FROM DUAL

    /* 위 가상 데이터를 지속적으로 인라인 뷰 */

위 데이터들은 NUM_SEQ 를 기준으로 NUM_1 을 수정한다. 이 첫번째 케이스로 업데이트를 수행하기 위해서는 반드시 조건/기준 컬럼이 필요.


UPDATE JKUN
SET NUM_1 = (
  SELECT RN FROM (
    SELECT 1 AS RN, 4 AS NUM_SEQ
    FROM DUAL
    UNION ALL
    SELECT 2 AS RN, 5 AS NUM_SEQ
    FROM DUAL
    UNION ALL
    SELECT 3 AS RN, 6 AS NUM_SEQ
    FROM DUAL
    UNION ALL
    SELECT 4 AS RN, 7 AS NUM_SEQ
    FROM DUAL
    UNION ALL
    SELECT 5 AS RN, 8 AS NUM_SEQ
    FROM DUAL
  ) RRD
  WHERE RRD.NUM_SEQ = JKUN.NUM_SEQ
)
WHERE EXISTS (
  SELECT 1
  FROM (
    SELECT 1 AS RN, 4 AS NUM_SEQ
    FROM DUAL
    UNION ALL
    SELECT 2 AS RN, 5 AS NUM_SEQ
    FROM DUAL
    UNION ALL
    SELECT 3 AS RN, 6 AS NUM_SEQ
    FROM DUAL
    UNION ALL
    SELECT 4 AS RN, 7 AS NUM_SEQ
    FROM DUAL
    UNION ALL
    SELECT 5 AS RN, 8 AS NUM_SEQ
    FROM DUAL
  ) RD
  WHERE NUM_SEQ = JKUN.NUM_SEQ
);

위 쿼리를 서술형으로 풀어서 정리하자면

JKUN 테이블에 있는 NUM_1 컬럼의 값들을 JKUN 테이블의 NUM_SEQ 컬럼과 인라인 뷰의 NUM_SEQ 컬럼과 매칭하여 RN 컬럼 값을 JKUN 테이블의

NUM_1 값들을 일괄적으로 수정.




WITH 구문내의 쿼리 결과를 Alias 를 지정하여 이어서 SELECT 절과 이용.

옵티마이저에서 인라인뷰나 임시테이블로 여김.

WITH WITH_EX AS
(
  SELECT ROWNUM R, 'TEST1' STR, SYSDATE DT FROM DUAL
  UNION ALL
  SELECT ROWNUM, 'TEST2', SYSDATE FROM DUAL
  UNION ALL
  SELECT ROWNUM, 'TEST3', SYSDATE FROM DUAL
)
SELECT * FROM WITH_EX;


조인도 가능

SELECT * FROM WITH_EX A LEFT OUTER JOIN (
  SELECT 1 R, 'TESTSSSSS' STR, SYSDATE DT FROM DUAL
  UNION ALL
  SELECT 2 R, 'TESTSSSSS' STR, SYSDATE DT FROM DUAL
) B
ON A.R = B.R;

오라클 시퀀스 정리


아래 내용은 심플하게 정리된 포스팅입니다.


출처 : 오라클 sequence 의 사용이유와 주의점 ( http://javakorea.tistory.com/175 )

시퀀스 사용이유가 데이터 입력시 동시성 때문에 register가 겹칠때 이를 방지 하기 위해 commit이 완료되지 않더라도 시퀀스를 사용하면 여러사용자가 중복되지않은 register(회원가입번호) 를 얻을수있어서 정상적 으로 회원가입이 가능하다. syntax) create sequence 시퀀스명 minvalue 1 // 최소 생성 시퀀스값 max value 99999999999 // 최대 생성 increment by 1 // 증가값 이값은 max-min보다 작아야함 start with 207 // 시작 시퀀스값 nocache // 시퀀스 생성을 위해 미리 값을 할당하는것, 동시성에 좋은 옵션, no하면 미리 할당X noorder//요청되는 순서대로 값을 생성함, 디폴트값은 no nocycle//생성된 시퀀스값이 최대치 혹은 최소치(감소시)에 다다랐을때 초기값부터 다시 시작할지 물어봄 디폴트값은 no . cycle로 돌아가면 minvalue로 돌아감 시퀀스명 " " 을 넣으면 대소문자 구분을 할 수 있다 근데 문제점은 "aaa" 를 만들고 drop sequence aaa 하면 자동으로 AAA 라고 인식을 해서 지워지지 않는다. 하이 테이블에 a시퀀스를 쓰고 헬로 테이블에 a시퀀스를 사용하면 a시퀀스에 현재 저장된 last_number를 따라가기 때문에 테이블,컬럼,데이터 입력시 원하는 시퀀스를 헷갈리지않게 명칭을 잘 정해야할것


링크 : http://tip.daum.net/question/93685852


온라인 쇼핑몰 구축에 따른 개인정보 해외이전

회사에서 인터넷 쇼핑몰을 구축하면서 해외 클라우드를 이용하여 

서비스를 제공하고자 합니다. 
해외 클라우드는 서버 임대형 서비스이며 해당 사업자는 개인정보 접근에 대한 권한은 없으며 단지 서버 구축 및 운영만 담당하고 있습니다. 
이와 같은 사항에 대해서 방통위의 해석을 문의 합니다.



인터넷쇼핑몰 구축시 회원의 DB를 해외 클라우드 서비스를 이용하는 경우 별도의 동의가 필요한 사항인지 문의하신 것으로 판단됩니다. 
정보통신망 이용촉진 및 정보보호 등에 관한 법률(이하 정보통신망법)은 개인정보에 관한 사업자의 의무사항을 규정하고 있습니다. 정보통신망법 제63조에 따르면 이용자의 개인정보가 국외로 이전되는 경우 사업자는 이용자에게 이전에 관한 내용을 알리고 동의를 받도록 하고 있습니다. 
따라서 해당 쇼핑몰 회원정보가 해외 클라우드 서버에 저장되어 보관된다면 이는 해외이전에 해당되므로 이용자에게 이용자의 개인정보가 해외클라우드 서버에 저장되는 사실을 고지하고 이용자의 동의를 받아야 할 것입니다. 
<관련법령> 정보통신망 이용촉진 및 정보보호 등에 관한 법률
[시행 2017.3.23.] [법률 제14080호, 2016.3.22., 일부개정]

제63조(국외 이전 개인정보의 보호) ① 정보통신서비스 제공자등은 이용자의 개인정보에 관하여 이 법을 위반하는 사항을 내용으로 하는 국제계약을 체결하여서는 아니 된다.

② 정보통신서비스 제공자등은 이용자의 개인정보를 국외에 제공(조회되는 경우를 포함한다)·처리위탁·보관(이하 이 조에서 "이전"이라 한다)하려면 이용자의 동의를 받아야 한다. 다만, 정보통신서비스의 제공에 관한 계약을 이행하고 이용자 편의 증진 등을 위하여 필요한 경우로서 제3항 각 호의 사항 모두를 제27조의2제1항에 따라 공개하거나 전자우편 등 대통령령으로 정하는 방법에 따라 이용자에게 알린 경우에는 개인정보 처리위탁·보관에 따른 동의절차를 거치지 아니할 수 있다.  <개정 2016.3.22.>

 ③ 정보통신서비스 제공자등은 제2항에 따른 동의를 받으려면 미리 다음 각 호의 사항 모두를 이용자에게 고지하여야 한다.

1. 이전되는 개인정보 항목

2. 개인정보가 이전되는 국가, 이전일시 및 이전방법

3. 개인정보를 이전받는 자의 성명(법인인 경우에는 그 명칭 및 정보관리책임자의 연락처를 말한다)

4. 개인정보를 이전받는 자의 개인정보 이용목적 및 보유·이용 기간

④ 정보통신서비스 제공자등은 제2항에 따른 동의를 받아 개인정보를 국외로 이전하는 경우 대통령령으로 정하는 바에 따라 보호조치를 하여야 한다. [전문개정 2008.6.13.]  끝.



관련법령 : 정보통신망 이용촉진 및 정보보호 등에 관한 법률제63조(국외 이전 개인정보의 보호)
작성부서 : 방송통신위원회 사무처 이용자정책국 개인정보보호윤리과, 02-500-9000

+ Recent posts