2018. 3. 6. 11:24


몇일 전부터, 컴퓨터가 계속 버벅 거리는거다...


그래서, 혹시나, 그럴일은 없겠지만, 오염됬나...해서....아무리 봐도 괜찮은거다..


근데, 원인은 요놈이였다.


Windows 10 Update Assistant 라는게 설치가 되었다.ㅠㅠㅠ




윈도우 업데이트....


분명히 레지스트까지 확인해서, 업데이트 꺼놓았는데......


어찌된건지......계속 설치하려고 한다...


그래서 결국 포기하고, 어제 업데이트 걸어놓았는데....헐.....


아침에 컴터를 켜니...이제야 다시 업데이트중......ㅠㅠㅠㅠㅠ 30분정도 걸리더군....


윈도우 업데이트는 강제로 하는데, 내가 원하지 않으면, 안해도 되게 해야지...이거 원....



더 열받는건....내 시작표시줄이 바뀌었다는거다...


난 내가 자주쓰는거 저기에 추가해 놓았는데,


그게 다 리셋이 되었다.






이해 합니다! 다들 그러지요.


보안 업데이트다...


근데, 나도 업데이트를 선택할 권리가 있다.


오히려 나의 작업과 시간을 방해하는 업데이트는 하고 싶지 않다.


보안도 내가 알아서 책임 질테니, 그냥 초기 버젼 그대로 사용하고 싶다.


업데이트를 하므로써, 바뀌는 설정들을 다시 다 맞추려면...힘들기 때문이다.



내가 변호사라면, 이것도 소비자 권리 침해로, 고소하고 싶다..ㅠㅠㅠㅠ










Posted by Tyson
2018. 2. 28. 19:51


외부에서 접속할때, 잘 안되신다는 분이 있어서, 알려드립니다.


사실, 같은 와이파이 안에서, R-play에서 내 ps아이디 생성해서 처음 로그인하면 그다음부터 거의 자동으로 찾아서  자동으로 되는데,


안될때 하는 법을 알려드리겠습니다.




rplay화면에서, 왼쪽 밑에 설명 버튼을 누르면 밑에처럼 나옵니다.








여기서 보면, 수동 ps4 ip주소는 집에서 쓰는 내부IP주소이다.


그리고, WAN 네트워크에 우리집IP를 넣으면 된다.


우리집 IP 확인하는 법은, '외부아이피확인'으로 검색하던지,


http://www.findip.kr/


사이트 들어가면, 우리집 ip를 알수있다.


이거는 대부분집은 셋톱박스 꺼지면 바뀔수있는 유동아이피기 때문에, 왠만하면, 집 인터넷 모뎀은 끄지 말자~


그리고 포트포워딩하는거는 공유기에서, 하면되는데,


http://tyson.tistory.com/53?category=980858


여기서 확인하시면 됩니다.



Posted by Tyson
2018. 2. 28. 19:30

한국와서 제일 많이 들은 말이, 코더가 되지말고, 프로그래머가 되라는 말이다.


와...진짜....도대체 코더가 멀까?? 프로그래머는 머고??


사전에서 찾아보면, 


coder

noun
1.
a person or device that translates information into a code.
2.
a person who assigns codes to objects or data:
The medical coder submitted the patient's test results to theinsurance company.
3.
a person who writes computer code; a computer programmer.


코더는 정보를 코드로 바꾸는 사람, 데이터를 코드로 하는사람, 컴퓨터 코드를 쓰는 사람. 이런 뜻이다.



programmer





noun
1.
a person who writes code for computer programs.
2.
a person who programs a machine, device, or apparatus.
3.
a person who prepares program schedules, as for radio or television.
4.
a person who prepares instructional programs.


프로그래머는  컴퓨터 프로그램들을 위해 코드는 쓰는사람 이런 뜻이다.



결국 코드를 쓰는 사람을 다 지칭하는 말이다.



근데, 한국에서는 코더는 낮은 존재로 표현한다.


대부분, 웹 프론트 작업 하는 사람들을 대부분 코더라고 많이 표현한다.


컴퓨터 로직같은거 생각 안하고, 그냥 ppt페이지 만들이 찍어 내는 사람?


머 이런 의미로 많이 쓰인다.



왜???? 한국에서 이렇게 코더라는 말을 만들어서 무시할까???


나라에서 직업교육지원을 하면서, 컴퓨터쪽으로 단기 학원들을 지원을 해주기 시작하고,


학원에서 3,6개월 코스를 듣고, 웹페이지 만드는 사람들을 많이 배출을 하면서, 약간의 디자인 감각만 있으면,


시키는데로 쉽게 웹 페이지 만드는 사람들이 많아 졌다. 


그러면서, 컴퓨터 정규교육 (대학교) 등에서 배우고 나온 사람들이, 그런 사람들을 무시하는 경향이 있었고,


그러면서, 넌 내가 시키는대로 해. 이런 분위기가 조성이 되었다.


그러다 보니, 일용직 노동자들과 많이 비교 되면서, 밑에 만화같은 웹툰도 많이 돌았다.






이런 문화가 생긴게, 대기업들도, 시스템을 개발하고, 홈페이지등을 만들면서, 직접 만드는게 아니고, 하청을 주고,


하청에 하청, 그러다 보니, 업체들은, 노동력이 싼, 학원에서 단기코스로 배우고 나온 학생들을 값싸게 고용하고,


부려먹고, 좀 되면, 다시 새로 고용하고, 그런 문화가 되어버렸다.


그리고, 관리직을 하는 사람들이 그들을 코더라고 단정지어 버렸고,,


그러면서, 새로운 계급제도를 만든거다.



난 프로그래머, 어려운 로직 고민만 하고 풀어줄테니, 넌 시키는대로 해, 머 이런 분위기가 생기고,


프로그램 개발만 하고 싶은 사람도 어느정도 나이가 차고, 올라가면, 관리직을 하라고 하게 되는거다.


로직도 참 중요한데, 문제해결을 하기 위해서는 로직 중요하다.


근데, 그만큼, 일을 하는 사람도 필요하다.





위 사진같은 상황인거다.


일하는 사람은 한명에...... 관리자만 많은거지.....


결국엔, 직접 개발하는 작은 회사들보다는 대기업들위주로 가게 되고,


국가 사업도 어느정도 규모가 큰거는 대기업을 마더로 끼고 같이해야되고...


이런 풍토가 발전한거 같다.


그러다보니, 어느정도 개발 경력이 되는 사람들이 하는말이, 코더가 되지말고, 프로그래머가 되라고 하는데,


일을 하는 사람도 필요하다.


예로, 건물을 짓는데, 설계자, 관리자만 넘쳐 나고, 직접 벽돌을 나르고, 시멘트 바르는 일하는 사람이 없는거다.


내가 시멘트만 잘 바르면, 평생 그걸로 많은 돈을 받으며, 일할수있는 그런 사람인거다.


그리고 그들이 잘못하고 있는것도 아니다.


그들은, 직접 코드를 쓰고, 만드는게 좋은 사람들이다.


그리고 나이 먹어서도 그일을 하고 싶어하는 사람들도 있는데, 자꾸 관리를 하라니....힘든거다.



미국에서는 웹개발자를 Web Master 웹마스터라고 부른다.


마스터다, 마스터란 전문가라는 뜻도 있는다. 외국에서는 웹 전문가라 표현한다.


근데, 우리나라에서는 그들은 코더라고 부르지....대부분 프론트작업 하는 이들을 무시하는 경향이 있는거다.


근데, 모든 상품이 이쁘고 보기 좋아야 하듯이 디자이너도 필요하고, 프론트 개발자도 필요하다.


그들은 그들의 자리에서 최선을 다 하는 사람들이다.


코더라는 말이 잘못된거는 아닌데, 코더라는 명칭이... 개발자를 비하는 말로 변질 되어 버렸으니까...


안쓰면 좋을거 같다.



순위 매기고, 계급 매기기 좋아하는 사람들이, 그리고, 높은 위치에 있는 이들이, 밑에 애들이 자신의 자리를 넘보지 않게,


하기 위해서 만든 표현이라고 밖에 생각 할 수 없다.



개발하면서 로직도 고민하고, 같이 연구하면서 하면 좋겠지, 근데, 그거는 관리자 또는 상급자들이 해줘야 된다고 생각한다.


개발자는 그들이 정해준대로 프로그램을 최적하게 해주고, 만들어주면 되는데,


관리자들이 자신들이 고민하기 싫으니까, 너희도 코더 말고, 프로그래머가 되라고 이야기 하면서, 


자신들이 할일을 밑에 사람들에게 전가 시키는거 같다.


우리는 앞으로 코더 vs 프로그래머 구분하지 말고, 


새로운것을 만드는 멋있는 사람들개발자라고 생각해 줬으면 좋겠다.

Posted by Tyson
2018. 2. 28. 18:42

아래글은, 제가 처음에 git을 브랜치 나누는거는 이해가 되는데,


여러명에서 같이 작업할때는 어떻게 해주는지 개념 이해가 안되서,


오랫동안 고민하고, 여려명과 협업 하면서 터득한겁니다.


자신이 git사이트나 여러 설명문서들을 봐도, 이해가 잘 안될때, 여려명이서 관리하는 법이 이해가 안될때,


읽어주세요~!


이건 진짜, 처음 하시는 분들에게 도움이 되고자 한거니까,


좀 쓰시는 분들이 보기에는 너무 쉽게 생각하실 수 있는데, 편하게 봐주세요~!!



----------------------------------------------------------------------------------------


혼자서, git을 쓸때는 그냥 혼자 히스토리 관리용으로 썼는데,


여러명이 쓸때는 개념이 이해가 잘 안되었다.


먼저, 1개의 브랜치(Master)에서만 작업하는 개념으로 설명해 주겠다.


브랜치, 머지는 뒤에 설명하겠다.



제일 중요한거는 마지막사람이 파일을 정리하는거다!



자! 간단하게, git은 마지막에 커밋하고, 푸쉬하는 사람이 최신정보이다.


merge작업은 마지막에 커밋하는 사람이 하면 되는거다!!


이게 제일 중요한 개념임!!



SVN같은 형상관리를 쓰다가, GIt으로 오면 처음에 이해가 안되는게,


다른거는 내가 checkout하면, 다른 사용자가, 파일을 못 건드리게 했는데,


git은 그런게 없다.


그러면 파일이 충돌이 났을때 어떻게 해야하나????


누가 수정한 파일이 최고 권한인가 하는거다..



3명의 작업자가 있다.


A, B, C, D라고 하겠다.


파일 1.txt, 2.txt파일 2개가 있다.


밑에 사진은 급하게 ppt에서 그린건데,


대충 저런식으로 흘러간다.


밑에 설명을 보시길




처음에 다들 클론해서 가져간다.


A 가 1을 수정했다.


그리고 스테이지에 올려서, 커밋까지 했다.


그러면 A 저장소에는 수정했고, 커밋할때의 히스토리를 가지고 있다.


여기서, A가 push를 하면, 서버에 있는 저장소(주저장소)에는 A가 수정한 정보가 최신정보가되었다.



여기서 B가 pull로 댕기면, B가 커밋한 정보가 없으니까, 바로 당겨진다.


C는 2.txt라는 파일만 수정을 하고 커밋을 했지만, pull 하지 않고, push하니까, 에러가 뜬다.


여기서의 에러는, 내가 가지고 있는 정보가, 최신이 아니라는거다.



벌써 서버에는 A가 가지고 있는 정보가, 최신이다.


그래서 최신으로 업데이트 하고, 푸쉬하라고 한다.


이 경우는 pull하고, 최신 히스토리로 업데이트 하고, 다시 push하면, 


A가 커밋한게 최신 업데이트가 된다.




자, 여기에서 D 는 1.txt를 수정하고, push를 했는데, 에러를 토해낸다.


A가 수정을 하고, 커밋, push를 했기 때문에, 내 정보는 최신이 아니고, 파일이 중복으로 커밋됬기 때문이다.


이때는 fetch, pull를 하면, 



>>HEAD

틀린 파일내용

<<



이런식으로 틀린거 알려주고, 파일이 합쳐진다.


fetch를 하면, 내가 가지고 있는 history가 최신이 되기 때문에, 


수정하고, 저장한다음에 커밋하고, push를 하면 에러 없이 된다. 내가 최신의 사람이기 때문에, 다 받아들인다.


그래서, 최신 정보의 사람이 왕이 되는거다.



그래서 먼저, 서로 다른부분확인하고, 내가 다른사람꺼랑 내용을 보고, 수정을 한다.


그리고 커밋,push를 한다.


그러면, 내가 마지막으로 수정했기 때문에, 내꺼가 최신히스토리기때문에, 커밋 푸쉬가 된다.




결국, 마지막에 하는 사람이 갑인거다.


마지막에 하는사람이 다른사람꺼 다 날리고, 자기꺼로 복사, 붙이기 해버리면, 그냥 x되는거다.


git 쓰다가 에러 뜨면, reset해버리고, 그냥 자기커밋한거 되돌리기 하고,


pull로 댕긴다음에, 자기가 수정한거 복사해 놓았다가, 그냥 다시 덮어 쓰는 사람이 있는데,


이러면 즞되는거다.



그럴거면, 파일 못 건들게 하는 SVN쓰지, 왜 git를 쓰나 싶다.....




============================================================================

자, 위에까지가, 여려명이서 작업할때, 기본개념이다.



그 다음에 많이 듣는 브랜치, Merge는 멀까?



브랜치는 나무에서 가지치기 하는거다.


예로, 내가 로그인 부분만 수정해야된다.


근데, 다른데는 건들었다가, 에러가 뜰거 같다.


그러면, loginfix 브랜치를 하나 만든다.


그러면 만든 시점에서, 가지치기가 되는거다.


그리고, 그 브랜치에서 작업을 내 마음대로 한다. 파일을 지우던, 여러파일을 수정하던 상관없다.


그리고, 커밋하고, Master로 가서, loginfix를 Master브랜치에 merge시켜준다.


그러면, 새로운 머지한 정보가 새로 커밋이 생긴다고 생각하면 된다.


그리고 그전에 수정했던것과, Master와 합쳐지는거지, 다른 부분들이 있으면, fetch해줘서, 수정하고 합치고 해서


마지막 사람이 다시 커밋, 푸쉬 해주면 된다!










Posted by Tyson
2018. 2. 23. 12:08

GCP에서 yum install nodejs로 했더니...버젼이..


0.10.24 인가 그랬던거 같다.



그래서 업데이트를 해야했다.


다음 절차에 따라서 업데이트를 진행하세요.

  • 현재 NodeJs 버전 확인하기
    $ node -v
    v5.6.0
    
  • 강제로 캐시 삭제
    $ sudo npm cache clean -f
    npm WARN using --force I sure hope you know what you are 
  • n 모듈 설치
    $ sudo npm install -g n
    /usr/local/bin/n -> /usr/local/lib/node_modules/n/bin/n
    /usr/local/lib
    └── n@2.1.0
  • n 모듈을 사용하여 Nodejs 설치 (다른 버전의 Node.js 를 설치하려면 sudo n 5.11.0 이런식으로 명령어를 입력하면 됩니다)
    $ sudo n stable
    
         install : node-v6.0.0
           mkdir : /usr/local/n/versions/node/6.0.0
           fetch : https://nodejs.org/dist/v6.0.0/node-v6.0.0-linux-x64.tar.gz
    ######################################################################## 100.0%
       installed : v6.0.0
  • 새로운 Node.js 버전 확인하기
    $ node -v
    v6.0.0


NPM 업그레이드

  • 현재 npm 버전 확인하기
    $ npm -v
    3.6.0
  • npm 으로 npm 설치 (인셉션..)
    $ sudo npm install -g npm
    /usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js
    /usr/local/lib
    └── npm@3.8.8
  • 새로운 npm 버전 확인하기
    $ npm -v
    3.8.8




<원본: https://velopert.com/1351 여기서 퍼온겁니다.>






Posted by Tyson
2018. 2. 22. 20:07



$ node -v

-bash: node: command not found

라고 뜨면 설치가 안된거다.


CentOS에서는 


$ yum insall nodejs

하면 된다.


근데, 이런 에러가 뜬다


> node -v 


node: error while loading shared libraries: libv8.so.3: cannot open shared object file: No such file or directory



이게 먼가 했는데, 머가 설치가 안된거다.


그래서 npm을 설치 했더니 없어진다.




$ yum insall npm

하면, 100개정도 설치한다.














Posted by Tyson
2018. 2. 22. 19:12

먼저 Nginx의 폴더 구조에 대해서 설명하겠다.


/etc/nginx   : 여기는 설정파일들이있음.

/etc/nginx/conf.d  : 기본설정 파일이 들어있음.

/usr/share/nginx/html : 기본 띄우는 html파일폴더

/var/log/nginx : 로그파일들이다.




/etc/nginx/nginx.conf 가 기본 설정 파일임.



여기 안에 보면, 

> vi nginx.conf


include 가 있다.


# For more information on configuration, see:

#   * Official English Documentation: http://nginx.org/en/docs/

#   * Official Russian Documentation: http://nginx.org/ru/docs/


user nginx;

#user root;

worker_processes auto;

error_log /var/log/nginx/error.log;

pid /var/run/nginx.pid;


# Load dynamic modules. See /usr/share/nginx/README.dynamic.

include /usr/share/nginx/modules/*.conf;


events {

    worker_connections  1024;

}



http {

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

                      '$status $body_bytes_sent "$http_referer" '

                      '"$http_user_agent" "$http_x_forwarded_for"';


    access_log  /var/log/nginx/access.log  main;


    sendfile            on;

    tcp_nopush          on;

    tcp_nodelay         on;

    keepalive_timeout   65;

    types_hash_max_size 2048;


    include             /etc/nginx/mime.types;

    default_type        application/octet-stream;


    # Load modular configuration files from the /etc/nginx/conf.d directory.

    # See http://nginx.org/en/docs/ngx_core_module.html#include

    # for more information.

    include /etc/nginx/conf.d/*.conf;

    include /etc/nginx/site-available/*.conf;


}




include /etc/nginx/conf.d/*.conf 

는 conf.d폴더의 .conf로 끝나는 파일은 다 저 자리에 넣는거다.


그래서, 관리하는 사이트 만 밑에처럼 작성해서 test.conf 이런식으로 넣어 놓으면 각 서버 정보가 추가되는거다.




server {

    listen 80;


    server_name test.com;

    root /usr/share/nginx/html;


    location / {

        include /etc/nginx/uwsgi_params;

        proxy_pass http://127.0.0.1:3000;

        proxy_http_version 1.1;

        proxy_set_header Upgrade $http_upgrade;

        proxy_set_header Connection 'upgrade';

        proxy_set_header Host $host;

        proxy_cache_bypass $http_upgrade;

    }

}



자, 위에꺼는 80 포트, test.com으로 들어오면, 

로컬호스트 3000포트로 보내라는 건데,


여기서 계속 에러가 뜨는거다..


2018/02/22 09:40:25 [crit] 25667#0: *6 connect() to 127.0.0.1:3000 failed (13: Permission denied) while connecting to upstream, client: 112.111.11.11, server: test.com, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:3000/", host: "test.com"


이런식의 로그가 게속 뜨는거다.


여기서 미치는거다. 권한 문제인가 해서...폴더들 권한 등등 다 넣었는데, 안되는거다.....


아무리 찾아도 없고........


그러다가 방화벽쪽 문제인거 같더라.


SELinux에서 포트포워딩을 막는거 같아서, 




$setsebool httpd_can_network_connect on

위에처럼 해주니까, 바로 프록시포트가 먹힌다.


진짜 이거 찾는데, 엄청 오래 걸렸다!!




<https://stackoverflow.com/questions/23948527/13-permission-denied-while-connecting-to-upstreamnginx

 여기 참조>


I’ve run into this problem too. Another solution is to toggle the SELinux boolean value for httpd network connect to on (Nginx uses the httpd label).

setsebool httpd_can_network_connect on

To make the change persist use the -P flag.

setsebool httpd_can_network_connect on -P

You can see a list of all available SELinux booleans for httpd using

getsebool -a | grep httpd





Posted by Tyson
2018. 2. 22. 12:38

Linux Version 확인

1
cat /etc/*release*


NGINX 설치
>yum install nginx

NGINX 실행
>service nginx start

php설치
>yum install yum-priorities
yum-priorities 설치 php5.3으로 설치
>yum install php php-cli php-common php-fpm php-mysql

PHP 연동

1
vi /usr/share/nginx/html/info.php

이곳에 아래 내용을 붙여 넣는다. (PHP 코드)

1
2
3
<?php
phpinfo();
?>

NGINX 설정 변경

1
vi /etc/nginx/conf.d/default.conf

아래 내용을 넣는다. (이미 주석처리 되어 있으므로 주석을 풀어 준다.)
단!! fastcgi-param 부분과 root 부분의 코드가 주석과 다르니 주의 한다.!!

1
2
3
4
5
6
7
location ~ \.php$ {
  root           /usr/share/nginx/html;
  fastcgi_pass   127.0.0.1:9000;
  fastcgi_index  index.php;
  fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
  include        fastcgi_params;
}

이제 nginx 재기동 하면, (service nginx restart)
info.php 접속하면 정상으로 보여야 한다.


근데, 이렇게 하면, nginx에서 안뜸..

php-fpm를 실행시켜줘야함.

  1. nginx.conf

    location ~ \.php$ {
                root           html;
                #fastcgi_pass   127.0.0.1:9000;
                fastcgi_pass   unix:/var/run/php5-fpm.sock;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
                include        fastcgi_params;
            }
  2. /etc/php-fpm.d/www.conf 

    ;listen = 127.0.0.1:9000
    listen = '/var/run/php5-fpm.sock'
      
    listen.owner = nginx
    listen.group = nginx
    listen.mode = 0660
      
    user = nginx
    group = nginx
  3. service 구동

    chkconfig php-fpm on
    chkconfig nginx on
    service php-fpm restart
    service nginx restart


시작할때, php-fpm 이랑, nginx를 실행되게 해줌.




참고블로그 :

http://jongkwang.com/?p=941

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










Posted by Tyson
2018. 2. 20. 12:06

GCP에서 프로젝트생성하고, 인스턴스 생성하면,


대쉬보드에서 아래와 같이 확인할 수 있다.





위에 "Compute Engine" 인스턴스를 클릭하면,


밑에 하면처럼 인스턴스 목록이 나온다.



이름을 클릭하면, 생성한 인스턴스 상태를 볼수있고, 


외부 IP가 외부에서 접속하는 아이피이다.


나중에 도메인 연결 및 ssh로 접속할때 사용하니까, 확인해놓자~!!



그리고 클릭하면, 아래와 같이 새부정보를 볼수있는데,


밑에 "SSH"를 클릭하면 터미널이 열린다.





밑에처럼 새 창이 열리고, 로딩하는데 좀 오래 걸린다.





아래와 같이 접속이 된다.


웹에서 일반 터미널처럼 작업할 수 있다.




하지만, Putty나 iTerm를 써서 따로 접속하고 싶은 사람들은 밑에작업을 해주기 바란다.


개인적으로 키파일을 받아서 접속해도 되는데, 여러군데에서 작업할때, 패스워드치고 접속하고 싶으면 아래와 같은 작업을 해줘야한다.


터미널차에서,


> sudo passwd

를 치고, 원하는 패스워드를 친다.


재입력까지 두번입력해주면, 성공했다고 뜬다.



> su - 

를 치고 방금 입력한 패스워드를 입력해서, root로 접속한다.




> vi /etc/ssh/sshd_config

를 쳐서 sshd_config파일을 연다.





위에 보면,

PermitRootLogin no

PasswordAuthentication no


라고 되어 있는 곳을 yes로 바꿔준다.


Vi 에디터를 써본적이 없는 분을 위해 설명해주면,


i 를 누르면 입력모드로 바뀐다. 

그다음에 no를 지우고 yes로 바꿔준다.


esc키를 누르고, :wq 를 입려해서 저장하고 나온다.


그다음에는 sshd를 재시작해줘야 먹힌다.




> service sshd restart 

를 치면 재시작이 된다.


그리고, 자신이 쓰는 터미널 프로그램에서, 아까 대쉬보드에서 확인했던, 외부아이피로 접속을 해본다.


ssh root@102.102.102.102 이렇게 하고, 암호를 치면 접속된다.


 










Posted by Tyson
2018. 2. 12. 19:20


미국에서 PHP나, .NET 만 이야기했지, JSP는 듣보잡이였다..


근데, 한국 들어오니, JSP를 이야기하길래, 그래~ 그래도 자바니까....괜찮겠지 하고, 


나라에서도 '전자정부프레임워크'라는 것을 만들어서 권장한다니까......


그래서 배워볼까 하고, 저번 프로젝트때 했었다.


그래서 흔히들 말하는 웹에서는 어떤게 나을까에 대해서, 이야기하고자 한다.







JSP는 JAVA를 웹으로 변화해주는거라고 생각하면 된다.


원래 자바는 어플리케이션 만들던건데, 거기에 웹어플리케이션으로 만든거라고 생각하면된다.


하지만, JSP는 불편하고, 편하게 개량하고, 국가에서도 권장하는게, 프레임워크이다.


'전자정부프레임워크' 란 스프링프레임워크를 기반으로 만들었다고 보면 된다.





프레임워크랑, 단순 반복적인 작업을 편리하게 하기 해주기 위해서 만든것이라고 보면되는데....


전혀 편하지 않다.....ㅎㅎㅎㅎ(이건 밑에 자세히 이야기하겠다.)






그 다음에 오랜 역사를 지닌 php이다. php는 웹에서 html으론 한계가 있으니, 웹에 특화된 언어라고 해도 무방하다.



그리고, .net, asp, 이다. asp에서 .net으로 발전했고, 마이크로소프트에서 미는 언어이다.




 

 JSP(java)

 PHP 

 ASP.NET

 세계점유율

 0.9% 

 69%

 29%

 개발속도

 느림

 빠름 

 엄청빠름 

 개발환경

 Linux,Window

 Linux,Window 

 Window만 지원 

 성능 속도

 느림

 빠름 

 중간 




자바가 보안성이 뛰어나고, PHP가 보안성이 약하다는 이야기가 많은데,


그건, 자바는 컴파일을 하는것뿐이고, php컴파일을 안하는 인터크립터 언어(?)라는 것이란다.


근데, 난 이거에 동의할수 없는게, php라고 보안에 약한것만은 아니고, 많이 개량되고, 많은 프레임워크가 나왔다.




내가 자바, php, asp 써보면서 느낀거는, asp는 코드만 보면, 금방 이해가 된다.


생각보다 쉽다는거다.


그리고, php 편하다. 인터넷에 정보도 많아서, 혼자서 하다가 막히는 부분의 답을 찾을 수있다.


바로바로 반응을 확인해 볼수있기때문에, 중간에 브레이크 코드 걸어서 보다보면 어디쯤에서 에러떨어졌는지 알수있다.


자바는 에러로그자체를 지원해주기 때문에 디버깅할때 편하다는거다.


하지만, 초기 세팅을 하다가 에러가 떨어지면, 많은 변수들이 있기 때문에 에러를 찾는데 하루종일걸린다.


그나마 전문가가 같이 있다면, 답을 찾는데, 혼자서 구글링해서는 절대 답이 안나올때가 많다.


그러면 로그를 일일히 분석해야하는데....생각보다 많은 시간이 걸린다.


사람들이 자바가 안전하고, 메모리관리에 탁월 하다고 하는데,


동의할 수 없는게, 메모리 관리나, 보안성등 많은 라이브러리등이 있고, 이 기능들을 완전히 이해하고, 제대로 쓰는 사람은


고급개발자들이다.


그냥 웹페이지 만드는데, 굳이 자바까지 써야하나 싶을 때가 많다.


은행권이나 시스템이 큰곳은 무조건 자바를 쓴다고 하는데.....


내가 느끼기에는 자바는 웹에서 과하다는 느낌이다.


자바는 백그랑운드 언어로는 최고인데...굳이 웹까지 자바를 써야하나 싶다.


오히려 웹에서 디비수정하고 하나 수정하려면 전체적으로 다 수정해야하는 상황이 발생할때가 많다.


근데, php,asp는 그곳만 찾아서 수정하면 된다.


세계 점유율을 봐도, php가 많다는거다. 이상하게 한국에서만 jsp 비율이 높다.


나라에서 '전자정부프레임워크'라고 jsp를 권장하니까. 다 만드는데.....


내가 보기에는 자바를 다 알고, 시스템을 만드는 회사는 별로 없다라는거다.


Java는 객체지향 OOP의 장점을 쓰자고 만들었는데, 자바를 쓰면서, 그냥 C코딩처럼 일렬로 코딩한다는거다.


왜 그렇게 쓰지???? 알수가 없다.......


자바 코드를 보면서 객체지향을 제대로 써서 코딩한 코드는 실제로 많이 못 본거 같다.


그렇게 자바 쓰면서, 다른 인터프리터 언어를 무시하는 사람들 보면, 한마디 해주고 싶은거는...


그냥 디비에서 불러오고, 디비수정정도의 홈페이지에서, 굳이 자바가 필요 없다는거다.


접속량이 많고, 고 시스템에는 php는 안되고, 자바를 써야 된다고들 하는데...


그러면  php기반인, 위키페디아나, 페이스북은 왜 안느린가???


오히려 사이트들을 돌아다니다보면, jsp자바기반의 사이트들이 처음에 로딩하는데 오래걸린다.


기본적으로 먹고 들어가는게 크기 때문이다.


사람들이 php무시하는데, 내가보기에는 나중에 결국 다시 php로 갈거 같다.


아직까지 그정도로 가벼운 웹언어는 없기 때문이다.


요즘보면 php프레임웍도 많이 나오고, 계속 발전하고 있다. 


















Posted by Tyson