출처 : http://yookeun.github.io/mac/2014/11/16/mac-mariadb/

맥에서 homebrew를 이용해서 mariadb를 설치해본다.

환경:OX Yosemite
먼저 <homebrew>를 설치해야 한다. homebrew는 우분투의 apt-get 같은 패키지인스톨 프로그램이라고 생각하면 된다.

위 사이트에서 설치를 진행한다. 설치가 완료된 다음 터미널에서 brew 를 치면 명령어의 설명이 나오면 정상으로 설치된 것이다.

먼저 brew를 업데이트해준다. (최신의 정보로 업데이트된다)

brew update

다음 maridb를 검색해보자 (꼭 할 필요는 없다)

brew search mariadb

검색하면 mariadb가 검색된다. brew에서는 기본적으로 최신버전을 설치하게 된다. 2014.11월 기준으로 mariadb의 최신버전은 10.0.14이다.

brew info mariadb (역시 꼭 할필요는 없다)

mariadb: stable 10.0.14 (bottled)

만약 brew install mariadb로 인스톨하면 위와 같이 stable버전이 설치된다. 자. 이제 설치를 해보자.

brew install mariadb
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/mariadb-10.0.14_1.yosemite.bottle.tar.gz
... 중략 ...
==> Summary

/usr/local/Cellar/mariadb/10.0.14_1: 524 files, 125M

그러면 위와 같이 설치가 진행이 된다. 이제 세팅을 해준다.

unset TM PDIR

설치된 경로로 이동하자. 10.0.14_1버전이 설치되어 있다. (탭키로 치면 경로나옴)

cd /usr/local/Cellar/mariadb/10.0.14_1/

mariadb의 DB를 설치한다.

mysql_install_db

그러면 아래와 같이 설치가 진행이 된다.

Installing MariaDB/MySQL system tables in '/usr/local/var/mysql' ...
16 18:09:08 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
user created by default.  
You can start the MariaDB daemon with:

..중략...

Support MariaDB development by buying support/new features from
SkySQL Ab. You can contact us about this at sales@skysql.com.
Alternatively consider joining our community based development effort:
http://mariadb.com/kb/en/contributing-to-the-mariadb-project/

자. 이제 mariadb를 가동시켜본다.

mysql.server start
...
Starting MySQL

. SUCCESS!

SUCCESS가 나오면 성공이다.


vsftpd.conf 설정 설명

# anonymous 사용자의 접속 허용 여부, 즉 anonymous ftp (default = YES)
# 공개된 형태의 FTP 서버로 운영할 것이 아니라면 NO로 한다.
 anonymous_enable=NO
# 로컬 계정 사용자의 접속 허용 여부 (default = NO)
 local_enable=YES
# write 명령어 허용 여부 (defualt = NO)
write_enable=YES
# 로컬 계정 사용자용 umask (default = 077)
local_umask=022
# anonymous 사용자가 파일을 업로드 할 수 있는지 여부 (default = NO)
# anon_upload_enable=YES
# anonymous 사용자의 디렉토리 생성 허용 여부 (default = NO)
# anon_mkdir_write_enable=YES
# 파일 전송 로그를 남길 것인지 여부 (default = YES)
 xferlog_enable=YES
# xferlog 표준 포맷으로 로그를 남길지 여부 (기본 설정파일은 YES)
# 아래에서 NO로 설정했을 때를 설명함
 xferlog_std_format=YES
# 파일 전송 로그 파일명
xferlog_file=/var/log/vsftpd.log
# FTP 서버 접속할 때 로긴 메시지 (default = vsFTPd 버전번호)
# 한글 사용 가능
# ftpd_banner=Welcome to blah FTP service.
# 사용자의 홈디렉토리를 벗어나지 못하도록 제한하기 위한 설정 (default=NO)
# 제한이 필요할 경우 YES로 바꾼 후 제한할 사용자 ID를 chroot_list_file= 에 설정한 파일에
# 지정한다.
# chroot_local_user= 설정과 관련이 있으니 '3. 문제 해결'을 꼭 읽어보라.
#
# chroot_list_enable=YES
# chroot_list_file=/etc/vsftpd.chroot_list
# ----------------------------------------------------------------
# 기본 설정 파일에는 없는 설정값으로 필요한 설정만 추가한다.
# ※ 중요한 설정은 굵은 글씨로 표시
# ----------------------------------------------------------------
# PAM 파일명을 지정 (설치할 때 /etc/pam.d/vsftpd명으로 복사함)
pam_service_name=vsftpd
# wtmp에 로그 남기기 (YES로 해야만 last 명령어로 접속 여부 확인 가능)
session_support=YES
# 사용자가 자신의 home directory를 벗어나지 못하도록 설정
chroot_local_user=YES
# 새로운 디렉토리에 들어갔을 때 뿌려줄 환경 메시지를 저장한 파일명
# message_file=.message
# xferlog 형식으로 log를 남기려면 (위에서 이미 YES로 했음)
# xferlog_std_format=NO
#
# - xferlog 표준 포맷은 로긴, 디렉토리 생성등의 로그를 남기지 않음
# 그러나 vsftpd 스타일 로그는 이를 포함한 보다 상세한 로그를 남김
# - vsftpd 스타일 로그 예
#
# Sun Jul 12 01:38:32 2003 [pid 31200] CONNECT: Client "127.0.0.1"
# Sun Jul 12 01:38:34 2003 [pid 31199] [truefeel] FAIL LOGIN: Client "127.0.0.1"
# Sun Jul 12 01:38:38 2003 [pid 31199] [truefeel] OK LOGIN: Client "127.0.0.1"
# Sun Jul 12 01:38:41 2003 [pid 31201] [truefeel] OK MKDIR: Client "127.0.0.1", "/mp3"
# Sun Jul 12 01:39:06 2003 [pid 31201] [truefeel] OK UPLOAD: Client "127.0.0.1", "/델리
# 스파이스 5집 - [04]키치죠지의 검은 고양이.mp3", 6855473 bytes, 3857.39Kbyte/sec
# 전송속도 제한 (0은 제한없음, 단위는 초당 bytes)
 anon_max_rate=0
 local_max_rate=0
 trans_chunk_size=0
# 최대 접속 설정 (단 xinetd를 통하지 않고 standalone으로 동작할 때만 사용 가능)
# standalone을 위해서는 listen=YES 추가하고 별도로 vsftpd를 띄워야 함
#
# max_clients=최대 접속자 수, max_per_ip=IP당 접속 수
# max_clients=100
# max_per_ip=3
# Standalone 으로 운영할 때 listen=YES. 포트 변경을 원할 경우 listen_port 설정
# 디폴트 포트는 21번 포트이다.
# listen=YES
# listen_port=2


These commands are based on a askubuntu answer http://askubuntu.com/a/581497

To install gcc-6 (gcc-6.1.1), I had to do more stuff as shown below.

USE THOSE COMMANDS AT YOUR OWN RISK. I SHALL NOT BE RESPONSIBLE FOR ANYTHING.

ABSOLUTELY NO WARRANTY.


If you are still reading let's carry on with the code.


sudo apt-get update && \

sudo apt-get install build-essential software-properties-common -y && \

sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y && \

sudo apt-get update && \

sudo apt-get install gcc-snapshot -y && \

sudo apt-get update && \

sudo apt-get install gcc-6 g++-6 -y && \

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 60 --slave /usr/bin/g++ g++ /usr/bin/g++-6 && \

sudo apt-get install gcc-4.8 g++-4.8 -y && \

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8;


When completed, you must change to the gcc you want to work with by default. Type in your terminal:

sudo update-alternatives --config gcc


To verify if it worked. Just type in your terminal

gcc -v


If everything went fine you should see gcc 6.1.1  by the time I am writing this gist


Happy coding!


See my blog post at https://www.application2000.com



출처 : http://drasys.tistory.com/entry/Conoha-%EC%BD%94%EB%85%B8%ED%95%98-%EC%84%9C%EB%B2%84-%EA%B5%AC%EC%B6%95%EA%B8%B0-CentOS-67-%EA%B8%B0%EB%B0%98






Conoha (코노하) 서버 구축기 (CentOS 6.7 기반)

지인의 부탁도 있고해서 리눅스 기초적인 사용법을 곁들여


Conoha (코노하) VPS 서비스를 이용한 서버 구축기를 정리해 본다.


1) 서버 사양 선택 / OS 설치


카드 결제까지 마치고 나면 서버 추가 메뉴 ( https://manage.conoha.jp/Service/Add/ )에서


추가할 사양 및 설치할 OS를 선택하여 서버를 생성하자.


서버 스펙은 최저 사양인 한달 900엔에 맞추어 골라본다.


타입은 VPS, 지역은 당연히 가장 가까운 도쿄, 메모리는 1GB ,


이미지 종류에서 OS를 선택하고 OS는 CentOS를 선택하자.


버전은 6.7(64bit)를 고르고 root 패스워드를 입력하자


자동백업은 비활성화, 디스크 용량에선 50GB, 나머지는 걍 그대로 두고


맨 아래 "추가하기" 버튼을 누르면 서버가 생성된다.


2) 생성된 서버 확인 / ssh 로그인


서버 (https://manage.conoha.jp/Service/) 리스트 메뉴에 방금 생성한 서버가 보일텐데 


네임 태그 링크를 눌러 서버의 상세 스테이터스를 확인해보자


가장 중요한 "네트워크 정보" 메뉴를 눌러서 보면


IP주소를 확인할 수 있다. (타입은 IPv4가 선택되어 있을텐데 걍 냅두자)


이제 이 아이피를 이용해 SSH 터미널 아무거나 사용해서 로그인을 해본다.


아직 아무것도 변경하지 않은 상태이므로 포트는 22번 그대로이고,


아이디는 root, 암호는 아까 설정한 암호.


3) 서버 시간 확인


명령어 : date


출력되는 시간이 로컬 시간과 일치하는지 확인한다. 서버 위치로 도쿄를 선택한 관계로


별도의 타임존 변경은 필요없을 것이다. 인터넷 시간 동기화도 해주는게 좋긴 하겠지만 일단 이 포스트에선 스킵


4) ftp 설치


명령어 : yum install vsftpd -y


명령어를 딱 보면 알겠지만 yum 이란 툴을 사용해 뭔가 install 하라는 것일테고, 그 대상이 vsftpd 라는 것이 되겠다.


끝에 -y 옵션은 최종적으로 설치할래 말래 묻지 말고 걍 설치하라는 의미다. 궁금하면 요 옵션을 빼고 실행도 해 볼 것.


보안을 위해 일반 ftp 프로토콜을 사용하지 않고 sftp를 사용할 것이므로


일단 SSL 키부터 만들자.


명령어 : (한 줄 한 줄 Copy & Paste해서 실행시키자)

mkdir /etc/ssl/private

 

openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem


그 다음 /etc/vsftpd/vsftpd.conf 파일 맨 아래에 다음 내용을 입력하고 저장하자


(에디터는 vi 나 nano 편한대로 골라 사용한다. 에디터 사용법은 생략)


rsa_cert_file=/etc/ssl/private/vsftpd.pem

rsa_private_key_file=/etc/ssl/private/vsftpd.pem

ssl_enable=YES

allow_anon_ssl=NO

force_local_data_ssl=YES

force_local_logins_ssl=YES

ssl_tlsv1=YES

ssl_sslv2=NO

ssl_sslv3=NO

require_ssl_reuse=NO

ssl_ciphers=HIGH


이렇게 저장한 후 아래와 같은 명령어로 FTP 데몬을 실행시킨다.


명령어 : service vsftpd start


서버 구동시 자동으로 FTP 데몬이 실행되도록 하려면


명령어 : chkconfig vsftpd on


이제 FTP 클라이언트를 이용해 SFTP 프로토콜로 (22번 포트) 접속이 되는지 확인해본다.


보안을 위해 22번 포트를 그대로 사용하지 말고 다른 포트로 변경하는 것이 좋은데 그건 나중에 설명하겠다.


5) APM (Apache PHP MySQL) 설치


엔터프라이즈 리눅스를 위한 추가 패키지 설치를 위해 (당장은 안 필요하더라도) 일단 아래와 같이 명령어를 수행한 후


명령어 : yum install epel-release -y


아래와 같이 3종 패키지를 일괄 설치하자


명령어 : yum install httpd mysql-server mysql php php-devel php-pear php-mysql php-mbstring php-gd php-fpm -y


6) 아파치 실행


아파치 실행은


명령어 : service httpd start


참고로 service XXX restart 하면 데몬 재시작,


service XXX stop 은 데몬 중지 명령어이다.


ftp 자동 실행 등록과 마찬가지로 아래와 같이 수행토록 한다.


명령어 : chkconfig htppd on


7) MySQL 실행 / 설정


이쯤 되었으면 


명령어 : service mysqld start


명령어 : chkconfig mysqld on


과 같은 응용력이 생겼을 것이다.


참고로 현재 서버 시작시 자동실행되는 데몬들의 리스트를 보려면 아래와 같이 수행한다.


명령어 : chkconfig --list


mysql root 암호 (os의 root 암호와는 별개다) 를 설정해주어야 하는데


여러 방법이 있으나 아래와 같은 방법으로 설정하도록 한다.


명령어 : mysql -u root -p


패스워드를 물어보는데 아직 설정을 안했으니 걍 엔터를 쳐서 mysql 콘솔에 로그인을 한다.


mysql> 프롬프트 상에서 아래와 같은 명령어로 root 암호를 지정한다. 가령 암호를 1234라고 할 경우


명령어 : update user set password=password('1234') where user='root';


보면 알겠지만 sql 업데이트 쿼리문이다.


그 다음


명령어 : flush privileges;


하고 나서


명령어 : quit;


로 빠져나온다.


mysql 에서 한글이 깨지지 않게 하려면 


/etc/my.cnf 파일에 다음 내용을 삽입한 후 mysqld 를 재기동 (restart) 해주어야한다.


[client]

default-character-set = utf8

[mysqld]

init_connect="SET collation_connection = utf8_general_ci"

init_connect="SET NAMES utf8"

default-character-set = utf8

character-set-server = utf8

collation-server = utf8_general_ci

[mysqldump]

default-character-set = utf8

[mysql]

default-character-set = utf8


위의 내용을 그대로 붙여넣자.


7) 새로운 user 생성


계속 root로 사용하는건 서버 안전을 위해 안좋은 습관이다 별도의 user id를 생성해서 사용하도록 하고


필요할 때만 권한 상승을 하여 사용하도록 하자.


해서... newuser 란 아이디로 새롭게 아이디를 생성하려면


명령어 : adduser newuser


요렇게 명령을 내리면 /home/newuser 란 디렉토리가 생성되었을 것이다.


newuser 의 암호를 정해주자


명령어 : passwd newuser


newuser로 계정 변경


명령어 : su - newuser


프롬프트가 바뀐게 보일 것이다.


다시 root 로 변경하려면 exit 하면 되지만


처음에 newuser 로 로그인한 상태라면 (ssh 터미널에서 로그인할 때 newuser로 로그인) 아래와 같은 명령어로


root로 변경한다.


명령어 : su


이 때는 root 의 암호를 입력해야만 한다.


8) jdk, tomcat 설치


보안상 root 로 설치하지 않고 톰캣 전용 계정을 만들어 설치한다.


명령어 : 


groupadd tomcat

useradd -g tomcat tomcat

passwd tomcat

su - tomcat


위와 같이 톰캣 그룹과 톰캣 아이디 생성후 톰캣 아이디로 계정 변경을 하자


su - tomcat 명령어로 인해 현재 디렉토리가 


/home/tomcat 으로 변경되어 있을 것이다.


현재 디렉토리 확인 명령어는 아래와 같다.


명령어 : pwd


참고로 현재 계정의 홈 디렉토리로의 이동은


명령어 : cd


이다.


jdk 부터 설치하자.


jdk 는 오라클 홈페이지에 가서 다운 받은 후 ftp 를 이용해 


/home/tomcat 디렉토리로 전송하도록 한다.


http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html


여기서 jdk-7u79-linux-x64.tar.gz 파일을 받으면 되는데, 버전은 변경될 수 있으니 가장 최신 버전으로 받도록 한다.

단 jdk8이 아니라 7을 설치한다.

/home/tomcat 디렉토리에서 

명령어 : tar xvzf jdk 까지만 치고 탭 키를 누르면 명령어가 완성될 것이다.

xvzf 는 tar.gz 파일을 압축 풀 때 사용하는 명령어이다.

파일이 풀리게되면 

/home/tomcat/jdk1.7.0_79 디렉토리가 생길텐데  ( ls 명령어로 확인해보자 )

/home/tomcat 디렉토리에서

명령어 : ln -s jdk1.7.0_79 jdk 

로 jdk 란 심볼릭링크 (바로가기의 개념) 를 생성한다.

앞으론 jdk 란 디렉토리로 원래 디렉토리인 jdk1.7.0_79 접근이 가능해진다.

여전히 /home/tomcat 디렉토리에서


위와 같이 명령을 내리면 파일이 다운로드될 것이다.

역시 tar xvzf 로 파일을 푼 후

명령어 : ln -s apache-tomcat-7.0.67 tomcat  

으로 tomcat 이란 심볼릭링크를 생성하자.

명령어 : vi .bashrc 


로 .bashrc 파일 (환경설정파일)을 수정하는데


파일 맨 마지막에 아래와 같은 내용을 삽입한다.


export PATH="$HOME/jdk/bin:$HOME/tomcat/bin:$PATH"

export JAVA_HOME="$HOME/jdk"

export JRE_HOME="$HOME/jdk/jre"

export CATALINA_HOME="$HOME/tomcat"

export CATALINA_OPTS="-server -Xms256m -Xmx256m"


파일을 저장한 후


명령어 : source .bashrc


로 적용한다.


톰캣 실행은


명령어 : /home/tomcat/tomcat/bin/startup.sh  


물론 해당 디렉토리로 이동해서 ./startup.sh 라고 입력해도 된다.


현재 /home/tomcat 디렉토리에 그대로 위치해 있었다면


tomcat/bin/startup.sh 로 명령을 내려도 되고.


그 다음, 기본적으로 8080 포트로 실행되므로 방화벽 해제를 해야한다.


9) 방화벽 해제


su 로 root 로 전환한 후


/etc/sysconfig/iptables 파일을 수정한다.


-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT


요런 라인이 보일텐데 22번, 즉 ssh 포트 오픈이 설정되어 있는 것이다


바로 아래 라인에


-A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT

-A INPUT -p tcp -m tcp --dport 10022 -j ACCEPT


을 추가하고 저장한 후


명령어 : service iptables restart


로 수정된 방화벽 정책을 적용 하자.


위에 10022 는 새로운 ssh 포트이다. 보안상 22번 대신 사용할 포트인데


원하는 포트번호를 기입하면 된다. 여기선 예로 10022 를 사용하는 것으로 설명한다.


10) ssh 포트 변경


/etc/ssh/sshd_config


파일에서 Port 부분을 아까 지정한 10022 로 수정한 후 저장하고


명령 : service sshd reload


로 sshd 를 재시작한다.


이제 ssh 클라이언트로 로그인할 때 22번이 아닌 10022로 포트 지정을 하도록 하자.



출처: http://drasys.tistory.com/entry/Conoha-코노하-서버-구축기-CentOS-67-기반 [Memento Omnia]

출처: http://drasys.tistory.com/entry/Conoha-코노하-서버-구축기-CentOS-67-기반 [Memento Omnia]

출처 : http://blog.daum.net/treeofstory/4


현재 Test중인 이클립스는 Indigo이며 Window 7 64bit  Jdk 1.6 버전을 사용중입니다.

 

현재진행중인 프로젝트에서 Sequence , Class Diagram을 달라고 갑질해서 ... ;;

 

게다가 머리도 좋지않은편이라  기록해둬야 할것같아서...

 

참고는  http://www.objectaid.com/  여기에서 했습니다.

 

그럼 시작해봅니다.

 

순서1.  이클립스에서 Help  > Install New SoftWare를선택합니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

순서2.   빨강색 1의 add버튼을 누르면 Add Repository창이 뜬다.

          창에  Name는 맘대로 입력해도된다.   기왕이면 의미있는이름이 나을거같다. 난 UML이라 입했다

         창에 Location에는  http://www.objectaid.com/update/ 이라고입력한다.  이건 그대로 입력해야한다.

         그런다음  빨강색2번버튼을 누른다.  

         아래 순서3처럼 목록이 안나타난다던지 해서 Location을  재입력을 하려는데  안된다고 빨강X가 뜨고 그러면

        밑줄그어진 3을 부분을 눌러보자 현재 플러그인과  사용자가 입력한 플러그인 히스토리가 나온다.

         플러그인  리스트를삭제하고 다시 입력하면된다.

 

순서3.  본인이 필요한건 classDiagram , Sequence Diagram이다. 그래서 두개만 선택했는데

             가만보면 SequenceDiagram은 License가필요한가보다. 일단은 거기까지만 파악하고

             아래에 Next버튼을 눌러준다.

 

 

 

순서4.  그럼 Install Detail 창이뜨는데 이것도 그냥 Next버튼을 눌러준다.

            다시  License동의를 물어보는 창이 뜨는데 위에 radio를 눌러 agree한다.;

 

순서5.  그리고 Finish버튼을 누른다.

            그럼 프로그래스바가 지나가고 Install이 시작된다.

 

순서6. 난 Install중간에  이런창이뜬다.  Warning은 개뿔... 그냥 OK눌러주면 된다.

            다시 Install 프로그래스바가 지나간다.

 

 

순서7.  Install이 끝나면 다시 시작할거냐고 물어보는 창이 뜨는데 Restart Now버튼을 눌러준다.

          이클립스가 restart된다.

 

 

순서8. 이클립스 메뉴의 File > New  > Other를 선택한다.

 

 

순서9.  목록중에 ObjectAid UML Diagram 디렉토리가 보인다.

           classDiaGram을 선택해서 Next를 눌러보자

           Folder 가 보이고 Nane도 보인다. 

           Folder는 ClassDiagram을 그릴 프로젝트를 선택하면된다  선택은 Browse버튼을통해 할수있다.

           Name은 ClassDiagram명이다.

 

순서10.  이제는  Sequence Diagram을 만들어보자

              순서 8 ~9의순서대로 실행하고 Sequence Diagram만 선택하면된다.

 

순서11.  그런데  문제점이 발생했다.  라이센스를 못찾겠단다.

             순서3에서 sequence Diagram은 License가 필요하다고했었다. 

         

                              

순서12. 그래서 License를 등록해주면된다. 

            http://www.objectaid.com/  페이지로 간다.   좌측메뉴의 Account를 누르면로그인창이 뜬다.

           계정이 없다면 create Account를누르고  있다면 그냥 로그인하자      

 

 

 

  순서 13.   아래내용대로 계정을생성한다.

 

 

순서 14. 계정이 생성되었다고 바로 로그인되는게 아니다.

           입력한 Email로  접근해보면 Login정보가 나타난다.

           그걸클릭하고 들어와서 로그인하면된다.

 

순서 15.  로그인을하면 아래와 같은 페이지가 보인다.

             아래에 빨강색 밑줄그인 부분을 클릭해보면 350byte정도되는 문자가나타난다.

             그게진짜  License이다.              

        

 

 

순서 16.   아래 빨강색 블록이 진짜 License 이다. 이젠 이클립스에 라이센스 등록만 해주면

              Sequence Diagram도 사용가능하다. 아쉽게도 사용기간은정해져있다. 30일? 

 

 

 

순서 17.  이클립스에 등록방법은  이클립스메뉴 windows > preferences 를 선택한다.

            add 버튼을누르면 라이센스등록창이 나타난다. 순서 16에서 복사해둔 license정보를 입력하고 Apply를 누른다.

            이클립스가 Restart된다.

 

 

순서 18.   다시 순서 8~ 11의 과정을 반복해보자

 

 

여기까지환경은 됐는데 다이어그램을 만드는건 결코 쉽지가 않은것 같다.

 

자세한 내용은

 

http://www.objectaid.com/ 페이지를 돌아다니다보면 얻어지는게 있을것같다.

 

 

출처 : http://jb-story.tistory.com/13



하는 일이 하는 일인지라 구글에서 코드를 찾아 블로그를 다닐 때가 많다. 그러다가 예전에도 어디서 본듯하긴한데 소스를 이쁘게 정리해주는 소스 입력기? 소스 편집기? 코드 입력기?? 뭐 이런 걸 발견했다.


 바로 Syntax Highlighter


 이름을 몰라서 한참을 찾았었는데 구글링의 힘으로 찾아서 설치/적용 방법을 알게되었다. 차근 차근 따라해보자.


 1. Syntax Highlighter Download


http://alexgorbatchev.com/SyntaxHighlighter/download


다운로드는 의외로 간단하다. Syntax Highlighter 공식 홈페이지에서 다운로드 받을 수 있다. 위 링크를 클릭하면 큼지막 하게 Click Here to Download. 라고 씌여있다.

이 제작자분께서 강력하게 Donate를 원하는 것 같으니 죽어가는 개발자를 위해 Paypal로 돈을 보내줄수도 있겠다.


 

  2. 파일 업로드


압축 폴더를 풀면 다음과 같은 폴더들이 나온다. 



이 중 우리가 업로드 할건 scripts 폴더와 styles 폴더이다. 내용은 아래 그림과 같다. 

필요한 것만 올려도 상관 없으나 용량이 부족하지 않은이상 큰 문제가 없으니 모두 업로드하자.



Tistory 관리 >> HTML/CSS 편집 >> 파일 업로드 >> 추가 버튼을 차례로 눌러서 모두 업로드



  그럼 업로드가 완료된다.



 3. HTML 수정하기


 여러분이 제일 귀찮아하는 나도 귀찮은 HTML 손보기는 의외로 간단하다

 Tistory 관리 >> HTML/CSS 편집에 다시 들어가 CTRL + F 로 </head>를 찾는다.

 찾고나서 </head> 바로 위에 다음 태그를 삽입해준다.(복붙) 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<script type="text/javascript" src="./images/shCore.js"></script>
<script type="text/javascript" src="./images/shLegacy.js"></script>
<script type="text/javascript" src="./images/shBrushBash.js"></script>
<script type="text/javascript" src="./images/shBrushCpp.js"></script>
<script type="text/javascript" src="./images/shBrushCSharp.js"></script>
<script type="text/javascript" src="./images/shBrushCss.js"></script>
<script type="text/javascript" src="./images/shBrushDelphi.js"></script>
<script type="text/javascript" src="./images/shBrushDiff.js"></script>
<script type="text/javascript" src="./images/shBrushGroovy.js"></script>
<script type="text/javascript" src="./images/shBrushJava.js"></script>
<script type="text/javascript" src="./images/shBrushJScript.js"></script>
<script type="text/javascript" src="./images/shBrushPhp.js"></script>
<script type="text/javascript" src="./images/shBrushPlain.js"></script>
<script type="text/javascript" src="./images/shBrushPython.js"></script>
<script type="text/javascript" src="./images/shBrushRuby.js"></script>
<script type="text/javascript" src="./images/shBrushScala.js"></script>
<script type="text/javascript" src="./images/shBrushSql.js"></script>
<script type="text/javascript" src="./images/shBrushVb.js"></script>
<script type="text/javascript" src="./images/shBrushXml.js"></script>
<link type="text/css" rel="stylesheet" href="./images/shCore.css">
<link type="text/css" rel="stylesheet" href="./images/shThemeDefault.css">
<script type="text/javascript">
SyntaxHighlighter.all();
</script>


 아직 끝난게 아니다. 범용성을 늘리기 위해 우리는 textarea 태그를 이용할 것이므로 추가 수정이 필요하다.

 다시 CTRL + F로 <body>를 찾아주자. 

 찾았다면 <body>를 다음과 같이 덮어씌운다(바꾼다).


<body Onload="dp.SyntaxHighlighter.HighlightAll('code');">

 

그렇다면 HTML 수정이 완료된다. 이제 사용법만 알면 된다. 참 쉽죠?



 4. Syntax Highlighter 적용법


 원래 Syntax Highlighter 적용법에는 크게 두가지가 있다. <pre> 태그 이용법과 <textarea> 태그 이용법, 하지만 <pre>태그를 이용하게 되면 html태그 코드를 사용할 때 많이 많이 불편하게 되므로 <textarea>태그를 이용하자.


 간단하다. 글 작성할 때 코드를 쓰게된다면 먼저, HTML에티터 타입으로 변경한다.


그리고 나서 다음과 같이 입력해준다.

 

1
2
3
<textarea name="code" class="brush:원하는 언어;">
에디터 모드에서 이 사이에 코드를 작성하면 된다.
</textarea>



 5. 예시 및 다양한 변형


 만약 c++ 코드를 입력하고 싶다면? 다음과 같이 입력하면 된다. col이나 width는 중요하지 않다.


1
2
3
4
5
6
7
8
9
<textarea name="code" class="brush:cpp;">
#include <iostream>
using namespace std;
 
void main(){
  cout << "참 쉽죠?";
}
 
</textarea>


 사용할 언어 목록은 다음과 같다.


Brush name

Brush aliases

File name

ActionScript3

as3, actionscript3

shBrushAS3.js

Bash/shell

bash, shell

shBrushBash.js

ColdFusion

cf, coldfusion

shBrushColdFusion.js

C#

c-sharp, csharp

shBrushCSharp.js

C++

cpp, c

shBrushCpp.js

CSS

css

shBrushCss.js

Delphi

delphi, pas, pascal

shBrushDelphi.js

Diff

diff, patch

shBrushDiff.js

Erlang

erl, erlang

shBrushErlang.js

Groovy

groovy

shBrushGroovy.js

JavaScript

js, jscript, javascript

shBrushJScript.js

Java

java

shBrushJava.js

JavaFX

jfx, javafx

shBrushJavaFX.js

Perl

perl, pl

shBrushPerl.js

PHP

php

shBrushPhp.js

Plain Text

plain, text

shBrushPlain.js

PowerShell

ps, powershell

shBrushPowerShell.js

Python

py, python

shBrushPython.js

Ruby

rails, ror, ruby

shBrushRuby.js

Scala

scala

shBrushScala.js

SQL

sql

shBrushSql.js

Visual Basic

vb, vbnet

shBrushVb.js

XML

xml, xhtml, xslt, html, xhtml

shBrushXml.js


 나머지 자세한 사항은 홈페이지에 가면 나와있다.


출처 : http://tonggam.tistory.com/5


통감뉴스 인사드립니다. 

오늘은 제로보드XE를 통해 컨텐츠몰, 정보몰과 같이,, 

게시판을 열람할시 정회원권을 구매해야 볼수 있거나, 

포인트가 혹은 캐쉬가 있어야 열람이 가능한 사이트를 

만들어 보겠습니다. 


물론, 이런 사이트 일반 솔루션으로 구매하려면,,

100~300만원까지 다양한데, 우리는 제로보드를 

이용해서 무료로 만들수 있습니다. 

한 10만원 내외를 투자해서, 이쁜 정보몰까지 만들 수 있습니다. 


일단, 자신의 계정에 제로보드XE가 인스톨된 상태여야 합니다. 

이것이 힘드신 분이라면, 제로보드 설치 방법, 블로그를 참고해 

보시길 바랍니다. 


먼저 첫번째 방법으로 포인트를 이용해서 간단하게 

정보몰, 컨텐츠몰을 만드는 방법이 있습니다. 





제로보드XE의 관리자페이지에 접속합니다. 

그리고 포인트 관리에 들어가셔서, 모듈별 설정에 들어가줍니다. 

이 방법을 사용하시기 위해서는, 이미 게시판을 생성하신것이, 

최소1개는 있어야 합니다. 


게시판을 생성하셨다면, 그 게시판의 제목이 위와 같이 뜰겁니다. 

그러면, 게시글조회라고 쓰여있는 곳에 포인트를 적어주는데, 

-2000 포인트 이런식으로, 앞에 - 마이너스 부호를 적어주셔야

2000포인트가 있어야, 게시글을 조회할수 있는 설정이 완료됩니다. 




위에 보시는 게시판 보기만 해도, 클릭하고 싶은 글들입니다. 

하지만, 위의 글을 열람하기 위해서 포인트가 필요한것이죠. 

자연히 사람들은, 포인트를 얻기위해서, 홈페이지 내에 있는 

포인트를 얻는 방법을 알아 볼껍니다. 이래서 필요한것이, 

포인트 충전 게시판 입니다. 포인트 충전게시판을 만들고, 

포인트의 충전금액을 적어 줍니다. 이것은 본인이 정하는 것입니다. 

1만원 - > 1만포인트로 정할수도 있고, 3만원 - > 1만포인트로 

정할수도 있습니다. 그리고 실제로 입금이 되면, 포인트를 주면 됩니다. 

포인트를 주는 방법을 알아 보도록 하겠습니다. 




제로보드 관리자 페이지에서 쉬운설치에 포인트 선물이라고 검색해 보세요. 

그러면, 위와 같은 모듈 혹은 애드온이 나옵니다. 

둘중에 하나를 설치 하시면, 내 포인트를 회원에게 선물할수 있습니다. 

일단, 내 포인트를 올려놓습니다. (본인이 운영자 이기에, 돈을 받았고,포인트를 주어야 하기 때문이죠)




위에 보시는 바와 같이, 현재 포인트는 99,940,450으로 표시되어 있습니다. 

그리고 보낼 포인트라고 적혀있죠. 

포인트 충전을 했고, 나에게 입금신청하신 분에게, 포인트를 여기서 선물식으로

보내주시면, 됩니다. 받으시는 분께 덧붙여 보낼 내용에는 포인트 충전 완료되었습니다. 

라고 보내주면, 좋겟죠?^ 




운영자가 포인트를 보내 주려면, 포인트가 있어야 하겠죠? 

관리자 페이지에서 회원포인트 목록을 들어가 주면, 

운영자 아이디가 보이죠? 


여기에 포인트를 적어주시고, 업데이트 하면, 포인트가 생깁니다. 

이제 넉넉해진, 포인트를 충전한 회원에게 포인트 선물하면, 

충전한 회원은 보고싶은 글을 -2000포인트 내고 보게 됩니다. 

여기서 포인트는 일종의 사이버머니 개념이죠. 


포인트 개념보다는, 사이버머니, 캐쉬시스템이 더 좋다? 라고 생각되시는 분이라면,,

캐쉬 시스템을 만드시면 됩니다. 모듈검색해 보시면, 캐쉬시스템이라는 모듈이 

있습니다. 이걸 까시면, 로그인했을시, 사이버머니라고 하나더 생기게 됩니다. 




위에 보이시죠? 

제로보드 관리자 페이지에서 쉬운설치에 검색어로, 

사이버 머니 혹은 캐쉬 시스템이라 치시면, 위와 같은 모듈이 나옵니다. 

위에 모듈을 설치 하시면, 포인트외에 사이버머니라는 새로운 

개념의 화폐가 생기게 됩니다. 


**캐쉬시스템 이라는 모듈은 현재 1.5.4.3 코어에서는 지원이 되지 않는점 유의하세요. 


한가지 방법이 더 있습니다. 

기간제 회원관리 시스템인데요. 




그누보드의 배추빌더에서 쓰는 정회원 등업 방식인데요. 

정회원, 특별회원, VIP회원 등등, 회원의 등급을 정한 후에, 

포인트를 매겨서, 포인트를 결제하면, 

기간제로 사용이 가능합니다. 


저같은 경우 정회원 100일에 9900포인트를 잡아 놓아 

보았습니다. 저렇게 했을경우, 포인트가 있을 경우, 

등록하면, 자동으로 정회원이 되고, 게시판 권한을 이미 정회원만 볼수 

있도록 했다면, 바로 정회원으로서 100일동안, 게시판을 열람할수 있는 

시스템입니다. 제가 써본결과, 이 방법도 참 편안합니다. 


만약에, 결제 시스템에, 신용카드를 연동해 놓으신다면, 

홈페이지를 손까딱 안해도, 포인트 쌓이고, 정회원등록되고, 정회원이 

재 연장하고, 이런식으로 홈페이지를 키우시면,, 





홈페이지로 돈버는 머신기를 제작하시게 되는겁니다. 

이런 홈페이지 하나만 가지고 있어도, 내 통장에 수익이 들어옵니다. 

잠자고 있어도, 들어오죠.. 


제가 이런식으로, 포인트제로 수익을 낸 후기를 올려보도록 하겠습니다. 

이것도, 일종의 정보몰 컨텐츠몰 인데요. 

정보를 열람하기 위해서 결제를 해야 하는 시스템입니다. 










이 수익은 모두, 컨텐츠몰 정보몰을 통해 얻게된 수익입니다. 

제가 수익을 얻게된 아이템은, 인터넷을 통한 마케팅 방법과, 

수익내는 방법, 인터넷 수익모델, 블로그 수익내기, 

구글애드센스로 수익내기 등등, 

여러가지 방법들을 다루고 있습니다. 

출처 : http://hyeonstorage.tistory.com/14


UML Diagram의 종류







(1) Class Diagram


- 개요 : 객체 타입(클래스)들을 정의하고 그들 간에 존재하는 정적인 관계를 다양한 방식(Association, Aggregation, Generalization, Realization, Dependency) 으로 표현한 Diagram


- 클래스 표기법



- Class Diagram 사용 용도


요구분석 -> Class Diagram (개념)

분석 -> Class Diagram (분석)

설계 -> Class Diagram (설계), Class Diagram (구현)


- Association 표기법



- Multiplicity 표기법


Multiplicity : 한 Class A의 Instance가 생성되었을 때, 다른 Class B의 Instance와 몇 개의 연관이 있는 지를 나타내며 Integer값을 사용함


Abbreviations : Asterisk(*) 는 Zero or more를 나타냄

Multiplicity를 표시하지 않을 수도 있음

Association은 양방향으로 표현되므로 왼쪽으로 또는 오른쪽으로 읽을 수 있음

Left-to-right : 하나의 Car 객체는 2개와 2개의 Door 객체와 연관됨

Right-to-left : 하나의 Door 객체는 연관된 Car 객체가 없거나, 하나의 Car 객체와 연관됨



(2) Component Diagram


- 개요 : 시스템을 구성하는 물리적 단위인 컴포넌트와 그들 간의 관계를 표현


- Component의 종류


UML에서의 컴포넌트

> 배치 컴포넌트 (Deployment component)

> DLL, EXE, DB 테이블

> 작업 결과물 컴포넌트 (Work product component)

> 분석/설계 문서, 소스코드 파일, 데이터 파일

> 실행 컴포넌트(Execution component)

> 메모리, DB 레코드


CBD에서의 컴포넌트

> 계약상의 명시된 인터페이스와 명시적인 의존성을 가진 조합의 단위이며, 독립적으로 전개될 수 있고, 제 3의 컴포넌트와 잘 맞는 SW 부품


UML 1.x


> CBD 프로젝트에서 Component Diagram은 주로 Package를 이용하여 그림


UML 2.x



(3) Deployment Diagram


- 개요 : 전체 시스템을 구성하는 하드웨어의 연결 관계와 SW 컴포넌트의 배치 상태를 표현함


- 구성 요소



> Node : 물리적인 요소로서 시스템이 실행될 때 존재하며 어느 정도의 메모리와 처리 능력을 갖는 전산 자원을 의미

육면체로 표현하며 이름을 표기하고 필요에 따라 탑재되는 컴포넌트를 표기

노드의 성격을 잘 표현할 수 있는 이미지를 사용하여 표현할 수도 있음

> Link : 물리적으로 연결되어 있는 두 노드의 연결 관계를 표현함

연결의 특성을 Stereotype으로 표현함

> Component : 노드에 탑재되는 컴포넌트를 표현하기 위해 사용

> Dependency : 노드와 컴포넌트는 의존 관계로 연결


(4) Use Case Diagram


- 개요 : 개발 주기 초기에 사용자의 기능적 요구사항을 시작적으로 기술하는데 사용

사용자의 시각에서 SW 시스템의 범위와 기능을 정의한 모델

Actor와 Use Case간의 관계를 정적으로 표현


- 구성요소



- Use Case Model 이란?


> UML의 대표적 모델

> Use Case Diagram(Actor와 시스템 사이의 관계를 시각적으로 표현)과 Use Case Description(각각의 내용을 상세히 기술)으로 구성

> 요구사항, 즉 구현해야 하는 기능이 '무엇'인지를 정의하지 '어떻게' 제시할지는 기술하지 않음

> 일반적으로 Use Case는 기능적 요구 사항을 나타내지만 Use Case Description에 해당 Use Case에 관련된 비기능적 요구 사항을 함께 기록하기도 함



(5) Activity Diagram


- 개요 : 기존에 활용하던 DFD나 Flow Chart의 객체 지향 버전의 일종

업무영역, 시스템 영역에서의 처리흐름을 표현한 Diagram

특정 비즈니스 프로세스, 오퍼레이션, Use Case의 내부 업무 흐름 등을 파악할 때 사용


- 표기법



- Activity Diagram의 사용 용도


> 비즈니스 프로세스를 나타내는 용도

> Use Case 내부를 기술하는 용도

> 행위(함수 혹은 메소드)의 내부 프로세스를 표현


(6) Sequence Diagram


- 개요 : 객체간의 동적인 상호관계를 시간 순서에 따라 표현한 모델

Use Case의 기능을 구체적으로 실현

실제 프로그램으로 구현 가능하게 자세히 작성


- 사용 용도


분석    -> Use Case flow 마다 하나

컴포넌트 상호작용    -> Use Case flow 마다 하나

> 설계    -> 컴포넌트의 Interface에 선언된 각각의 Operation마다 하나


- 구성 요소


(7) State Machine Diagram


- 개요 : 하나의 객체를 대상으로 생존 기간 동안 가질 수 있는 상태의 변화를 표현

정적 모델링(Class)과 동적 모델링(Activity)이 동시에 표현

정적 모델링과 동적 모델링 간의 검증


- 사용 용도 : 분석


- 구성 요소




- 사례



(8) Communication Diagram


- 개요 : 객체간의 동적 메시지 전달 관계를 표현한 모델

객체간의 상호관계를 효과적으로 정의

Sequence Diagram과 상호 매핑 됨


- 사용 용도 : Sequence Diagram이 작성되는 태스크와 동일


- 구성 요소



(1) UML 기본 표기법

(2) UML Diagram의 종류

(3) UML 모델링 사례



출처 : http://cgimall.co.kr/happy_faq/board_detail.cgi?db=board_faq&thread=260&page=1&search_type=whole&search_word=%C1%A4%C3%A5


검색로봇(robot.txt) 설정에 대해서 안내를 드리려고 합니다.

먼저 검색로봇에 대해서 알아 보겠습니다 ^^

누구나 한번쯤은 인터넷에서 자신에게 필요한 정보를 검색해 보셨을텐데요 
이때 사용자는 네이버, 구글, 다음 같은 포털사이트에서 원하는 정보를 찾습니다. 
그럼 이런 포털사이트들은 어떻게 이런 많은 정보를 가지고 있을까요?
바로 검색로봇 때문입니다. 

우리가 많이 사용하는 포털사이트(네이버,구글,다음,야후)들은 모두 검색로봇을 가지고 있습니다. 
검색로봇은 알아서 웹사이트들을 돌아다니면서 찾은 정보를 자신의 서버에 저장해 놓습니다. 
그리고 사용자들이 검색하는 검색단어에 맞는것들을 자신의 서버에서 찾은 후 사용자들에게 알려주는 방식입니다.

즉, 검색로봇은 스스로 사이트들을 돌아다니면서 정보를 수집하는 기능을 한다는 것이 키 포인트 입니다.


이번엔 검색로봇을 활용하는 방법에 대해서 알아 보겠습니다 ^^

검색로봇을 컨트롤하기 위해서는 자신의 웹사이트에 robot.txt 라는 파일이 있어야 합니다. 
Cgimall 솔루션은 설치된 기본폴더에 robot.txt 파일을 만들어 주시면 됩니다. 
( 저희 Cgimall 에서는 기본적인 robot.txt 파일을 미리 첨부해 놓았습니다. ^^ )

robot.txt 의 내용에는 모두 User-agentDisallow 단어를 사용하고 있습니다.
User-agent 는 검색로봇의 이름을 설정하는 기능입니다.
Disallow 는 검색가능 여부를 설정하는 기능입니다.

간단한 예로 몇가지 상황에 대한 예를 들어 보겠습니다.
 

  1. 내 사이트의 모든것들이 검색되도록 설정할 경우.
    User-agent: *
    Disallow:
        
      
  2. 내 사이트의 모든것들을 검색되지 않도록 설정할 경우.
    User-agent: *
    Disallow: /
        
       
  3. 내 사이트의 html , img 폴더를 검색하지 못하도록 설정할 경우.
    User-agent: *
    Disallow: /html/
    Disallow: /img/
       
      
  4. 내 사이트의 내용이 구글에 검색되지 않기를 원하실 경우.
    User-agent: Googlebot
    Disallow: /
       
       
  5. 내 사이트의 내용이 구글에 특정폴더(html , img)를 제외하고 검색되기를 원하실 경우.
    User-agent: Googlebot
    Disallow: /html/
    Disallow: /img/
       
      

위의 예를 보시면 대충 감이 오실겁니다 ^^
User-agent 에 * 을 입력하시면 모든검색 사이트들을 대상으로 하는 설정이 되며
User-agent 에 로봇이름을 넣으시면 해당 검색 사이트들에 대해서만 설정이 가능합니다.

  
여기서 robot.txt 설정을 조금 더 고급편으로 가 보겠습니다.
 

  1. 특정 파일(test.php)에 대해서만 검색거부하기
    User-agent: *
    Disallow: /test.php?
      
      
  2. html 확장자에 대해서만 검색불가 설정
    User-agent: *
    Disallow: /*.html$
       
      
  3. 조금더 다양하게 로봇들 종류별로 컨트롤 할 수 있습니다.
    User-agent:Googlebot 으로 설정하시면 구글에 관련된 검색설정을 할 수 있습니다. 
    이 처럼 User-agent 에 로봇이름을 이용하여 여러가지 다양하게 설정이 가능하며
    검색사의 이름 종류는 아래와 같습니다. 
      
    naverbot, DAUMOA, Googlebot, Yeti , Cowbot 등이 있습니다. ^^
    그 외에도 더 있습니다만 .. 가장 많은 접근하는 봇은 Naver , Daum , Google 입니다.
      
      

위 처럼 검색가능하게 해줄 폴더들을 설정하신다면 조금더 트래픽 관리와 함께 
효과적인 검색관리가 가능하게 됩니다. ^^ 
robot.txt 파일 다운로드 ]

네이버의 경우 사이트등록이 되어 있는 경우에... 정보수집이 가능한것으로 알고 있습니다. 
그러므로 사이트를 오픈하셨고 ... 검색이 되기를 원하실 경우 사이트등록을 해 주시면 감사하겠습니다.
네이버만 사이트등록에 영향을 받고... 나머지는 영향을 안 받는 것으로 알고 있습니다. 
그러나 검색에 관해서는 포털사이트들의 정책에 따라서 매번 바뀌게 되므로 수시로 확인해 보시는게 좋습니다. ^^
사이트등록 FAQ 바로보기 - 클릭 ]




부가적인 기능 설명 ]
1:1 게시판과 같은 회원전용 게시판의 경우 아래의 메타태그를 이용하여 검색하지 못하도록
설정하시는 방법도 있습니다. 
html 파일의 <HEAD> 와 </HEAD> 사이에 아래의 코드를 추가하시면 됩니다. 
<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">

NOINDEX는 검색로봇이 해당 페이지의 내용을 인덱싱 하지 못하도록 , 즉 색인작업을 하지 못하도록 하는 설정.
NOFOLLOW는 검색로봇이 해당 페이지에 수록된 링크값을 참조하여 추가적인 검색을 하지 못하도록 하는 설정

 

전, 기초를 닦지 않고 그냥 MFC 를 해서 나중에 참 고생을 많이 했습니다.

MFC 를 선택하셨다는 것은 결국은 C++ 을 선택하신것을 의미하는데,

전 MFC 가 어떻게 되건 C++ 의 고수만 된다면 대세가 어떤 언어가 되건 상관없다고 생각합니다.

C++ 이 Win32 에 종속되는건 아니니까요.

게다가 앞으로도 Win32 는 여전히 쓰일 수 밖에 없구요.

또, C++ 잘 해두면 다른 언어 익히는건 훨씬 쉽습니다.


그래서 MFC/API 를 공부하시면서 (혹은 공부하시기 전에) C/C++ 을 확실히 공부해두시길 권장합니다.

제가 C/C++ , STL, 운영체제, 알고리즘 같은 기초가 부족해서 한참 후회 많이 했습니다.-_-;


너무 언어나 툴이나 운영체제에 종속되지 않으시길...


그럼 추천 나갑니다~


필요하다고 생각되는 책을 골라 보시면 될 듯 합니다.^^



[C/C++/STL]

- 열혈강의 C 프로그래밍

- 열혈강의 C 포인터

- C 언어로 배우는 알고리즘 입문

(C 언어를 어느 정도 익히셨다면, 반드시 알고리즘 예제를 직접 생각해보면서 공부해야 합니다.

이 과정을 거치지 않으면 나중에 후회하게 됩니다. 흑-_-;)

- 열혈강의 C++ 프로그래밍

(열혈 강의 시리즈는 번역서가 아니고 저자가 한국인이라서 아무래도 내용 전달이 명확하고,

프리렉에서 동영상 강의를 보너스로 제공한다는 점이 매력적입니다. 책 내용도 쓸만하구요)

- C++ 기초 플러스

(기초 플러스라는 제목과 달리 생각보다 좀 빡센 책이지만 내용은 아주 좋죠.

열혈강의 C++ 하나 보고 나서 보시는 편이 좋을 듯 합니다)

- Effective C++

- More Effective C++

(스캇 마이어의 명작 중 명작이죠. C/C++ 을 공부하신 분은 반드시 보셔야 합니다.

각종 기법과 개념들을 설명해줍니다)

- STL 튜토리얼.레퍼런스 가이드

(STL 은 제가 C++ 배운 후 가장 큰 감동이었습니다. 흑 T_T;)

- Effective STL

(역시 스캇 마이어의 명작. 내용도 흥미진진하고 재미있습니다.)

- Accelerated C++

(예제로 되어 있고, STL 의 내용도 나오므로 기존에 공부를 해두고 봐야 합니다.)

- Essential C++

- Modern C++ Design

(템플릿, 패턴에 대해 배울 수 있습니다. GoF 책 후에 봐도 괜찮구요)



[API/MFC]

- Visual C++ Programming Bible 6.X

- Visual C++ 6 완벽가이드 2/E

- 윈도우즈 API 정복

(위의 3종 셋트는 너무나 잘 알려진 API/MFC 관련 책)

- API 로 배우는 Windows 구조와 원리

(하드웨어 아키텍쳐와 운영체제에 대해 배울 수 있습니다.

전산과 컬리큘럼에 다 있는 내용이겠으나, 내용이 참 좋습니다.

이걸 완벽 이해하신 후 다른 책을 보시면 뭔가 좀 더 와 닿는게 있죠)

- 윈도우즈 프로그래머를 위한 MFC 구조와 원리

(MFC 에 자동으로 생성된 코드들 100% 이해 하기 힘드신 분 꼭 보셔야죠.

이미 MFC 를 다루지 않는 분이더라도 MFC 를 경험하셨으면 볼만한 책)


[관련 기술]

- Multi Thread Programming

- 열혈강의 TCP/IP 소켓 프로그래밍 (정말 쉽게 되어 있습니다. 소켓의 기초 공부로 최고~)

- Network Programming for Windows 2/E

(위의 책과 겹치는 부분이 좀 있지만 전체적으로 내용이 정말 좋습니다)

- Effective TCP/IP Programming - 네트워크 프로그램을 향상시키는 44가지 Tips

- Windows 시스템 실행파일의 구조와 원리

- Windows 구조와 원리 : OS를 관통하는 프로그래밍의 원리

- Windows 시스템 프로그래밍

- CODE COMPLETE 2/E (고급 코드 작성을 위한 스캇 마이어의 대작. 졸트상 2회 수상이라죠?)

- GoF의 디자인 패턴

- Refactoring


[기타 볼만한 서적]

- 피플웨어

- 조엘 온 소프트웨어 : 유쾌한 오프라인 블로그

- 조엘이 엄선한 소프트웨어 블로그 베스트 29선

- 행복한 프로그래밍

- 누워서 읽는 알고리즘

- 실용주의 프로그래머

- 생각하는 프로그래밍

- 익스트림 프로그래밍

- 테스트 주도 개발


여기서 본책이 몇권없군요..
열혈강의는 저도 잘봤습니다만.. 기초서적중에서는 최고라고 쳐주고 싶구요..
행복한 프로그래밍과 누워서 읽는 알고리즘.. 등등 임백준님의 책.. 저도 가볍게 읽고 많은걸
깨달은 책입니다..^^

http://newly3.tistory.com/14

*메타태그

메타태그에 대해서 알아봅시다.
메타태그는 홈페이지의 문서정보를 담는 태그입니다.
누가 언제 어디서 제작하여, 어느 서버에 올렸는지 홈페이지의 제작한 정보를 담는 태그입니다. 

<META> 태그는 홈페이지에 대한 일반적인 정보를 나타낼 때 사용하며, 홈페이지 작성자 및 날짜, 그리고 홈페이지 검색시 검색 키워드 등을 지정할 수 있다. 이 곳에서 설정한 내용은 브라우저상에 나타나지 않으며 <TITLE>처럼 이 태그 역시 <HEAD>사이에서만 사용한다. 이 태그는 또한 맨 마지막에 </META>라고 닫아주지 않아도 된다. 

그리고 또한 홈페이지의 HTML부분중 <Head>와</Head>사이에 들어간다.

예제)
<html>
<head>
<title>메타태그</title>
<Meta name="Author" content="김아무개">
</head>
<body>
메타 태그의 활용
</body>
</html>
↑ 위와 같이 사용을 합니다. ↓ 아래에 있는 메타태그를 head에 넣으면 되겠습니다.

<Meta name="Author" content="김아무개"> 
홈페이지를 만든 사람. 

<Meta name="Keywords" content="ASP강좌"> 
Altavista 등의 검색 엔진에서 홈페이지를 검색할 때 참조하는 키워드. 

<Meta name="Description" content="방문해 주셔서 감사합니다. "> 
홈페이지에 대한 간략한 설명을 적는다. 

<Meta http-equiv="refresh" content="10;url='next.htm' "> 
10초 후에 'next.htm' 로 이동한다. 

<Meta http-equiv="Content-Type" content="text/html; charset=ks_c_5601-1987 "> 
브라우저상에서 한글이 깨져 보이는 경우, 한글의 코드를 지정하면 한글이 깨져 보이는 현상을 개선할 수 있다. 단 Charset을 "ks_c_5601-1987"로 지정하면 완성형 코드만을 볼 수 있다. 

<Meta http-equiv="Page-Exit" content="RevealTrans(Duration=5, Transition=23) "> 
현재 페이지에서 빠져나갈 때 전환 기법을 사용하여 페이지를 닫는다. 

<Meta http-equiv="Page-Enter" content="RevealTrans(Duration=5, Transition=23) "> 
다른 페이지로 넘어갈 때 전환 기법을 사용하여 페이지를 연다. 

0 Box in - 네모난 박스가 바깥에서 안쪽으로 만들어지면서 이미지 변환 
1 Box out - 네모난 박스가 안쪽에서 바깥쪽으로 만들어지면서 이미지 변환 
2 Circle in - 원이 바깥에서 안쪽으로 만들어지면서 이미지 변환 
3 Circle out- 원이 안쪽에서 바깥쪽으로 만들어지면서 이미지 변환 
4 Wipe up - 이미지의 아래에서 위쪽으로 수직 이동하면서 변환 
5 Wipe down - 이미지의 위쪽에서 아래로 수직 이동하면서 변환 
6 Wipe right - 이미지의 왼쪽에서 오른쪽으로 수평 이동하면서 변환 
7 Wipe left - 이미지의 오른쪽에서 왼쪽으로 수평 이동하면서 변환 
8 Vertical blinds - 수직 브라인드가 쳐지는 형태로 이미지 변환 
9 Horizontal blinds - 수평 브라인드가 쳐지는 형태로 이미지 변환 
10 Checkerboard across - 바둑판 형태의 격자가 왼쪽에서 오른쪽으로 생기면서 이미지 변환 
11 Checkerboard down - 바둑판 형태의 격자가 위에서 아래로 생기면서 이미지 변환 
12 Random dissove - 안개낀 형태로 이미지가 바뀌면서 변환 
13 Split vertical in - 왼쪽과 오른쪽 끝에서 중앙으로 수직이동하면서 이미지 변환 
14 Split vertical out - 중앙에서 왼쪽과 오른쪽 끝으로 수직 이동하면서 이미지 변환 
15 Split Horizontal in - 위쪽과 아래쪽에서 중앙으로 수평이동하면서 이미지 변환 
16 Split Horizontal ou - 중앙에서 위쪽과 아래쪽으로 수평이동하면서 이미지 변환t 
17 Strips left down - 오른쪽 위에서 왼쪽 아래로 이동하면서 이미지 변환 
18 Strips left up - 오른쪽 아래에서 왼쪽 위로 이동하면서 이미지 변환 
19 Strips right down - 왼쪽 위에서 오른쪽 아래로 이동하면서 이미지 변환 
20 Strips right up - 왼쪽 아래에서 오른쪽 위로 이동하면서 이미지 변환 
21 Random bars horizontal - 수평선이 무작위로 생기면서 이미지 변환 
22 Random bars vertical - 수직선이 무작위로 생기면서 이미지 변환 
23 Random - 임의로 지정됨

+ Recent posts