기본 콘텐츠로 건너뛰기

라벨이 LINUX인 게시물 표시

LINUX C언어 , NULL(널값) 비교처리

문제 : if( Array[0] == NULL ) 구문에서 아래와같은 warning발생시 대처방법 warning: comparison between pointer and integer 소스 하단에 결과와, 해결방안을 정리했습니다. -------------------------------------------------------------------------------------- #include <stdio.h> #include <string.h> void main( void ) {      char temp[ 10 ];      char temp2[ 10 ];      char temp3[ 10 ];      char str[] = "hello" ;      int idx;     printf( "\n ===================================================== \n" );     printf( "NULL printf [%d] [%c] \n\n" , NULL , NULL );        printf( "\n ===================================================== \n" );     printf( "[%s] strlen(str)[%d] sizeof(str)[%d] \n\n" , str, strlen(str), sizeof (str));      for (idx = 0 ; id...

AIX to LINUX makefile migration (AIX소스 리눅스용 메이크파일 만들기)

AIX에서 빌드하던 C소스를 LINUX로 가져와야 하는 상태에서 열심히 빌드시도 > 실패 > 시도 > 실패 (겁나 삽질)을 반복하고있다.. 일단.. 컴파일러와, OS차이도 있겠지만..옵션도 모양이 약간씩 다르기에 ! 기초부터 공부하고 makefile 을 기존에 사용하던것을 모두 버리고 새로 작성하기로함 막막한 상태일지언정 한가지만 집고 넘어가자 focus) CC와 GCC의 차이  - CC는 유료, GCC는 무료  - CC와 GCC간에 컴파일가능한 문법차이가 존재한다 예를들면.. GCC는 int foo(int value){} CC는 foo(value) int value {} 를 허용한다.. 아 왜 이런 변태같은 문법으로 코딩을 한거야 ? 지금 내가 접하고있는 소스가 딱 저모양인데 접할때부터 나를 혼란스럽게 만들었다 현재 Redhat 상용버전을 사용하고있으며 다행히 AIX에서 사용하던 컴파일러인 CC가 Redhat에서도 지원이 되길래 큰 소스수정 없이 빌드를 시도할 수 있는상태 필수 참고자료 "플랫포별 컴파일 옵션 차이" http://www.fortran-2000.com/ArnaudRecipes/sharedlib.html 그럼이제 가장 피곤하고 까다롭게 굴었던 라이브러리 빌드를 속성과정으로 학습! 사실 처음부터 아래 내용을 알고 시작했더라면 여태껏 삽질은 안해도 됐을것이다.. 역시 아는게 힘인듯 [소스작성] 라이브러리 해더 vi mysum.h int ysum(int a, int b); 라이브러리 소스 vi mysum.c #include "mysum.h" int ysum(int a, int b) {     return a + b; } 라이브러리를 참조하여 ysum을 수행하는 테스트소스 vi test.c #include "mysum.h" #include <stdio.h> int main() {     ...

8080 포트번호 없이 접근 가능하도록 iptables 변경하기

톰캣 설치 후 URL 또는 IP주소로 접근할 때  http://111.222.333:8080  또는 http://serve1.test.co.kr:8080   처럼  8080을 붙여서 접속해야하는 경우가 있다. 아래 내용은 8080 포트번호를 작성하지 않아도 알아서 처리하도록 iptable 설정을 바꿔주는 방법이다.  # iptables -t nat -A OUTPUT -d 127.0.0.1 -p tcp --dport 80 -j REDIRECT --to-ports 8080 # iptables -t nat -A OUTPUT -d hostname -p tcp --dport 80 -j REDIRECT --to-ports 8080 # iptables -t nat -A PREROUTING -d hostname -p tcp --dport 80 -j REDIRECT --to-ports 8080 * hostname  부분에는 리눅스를 설치했을때 적용한 도메인 이름을 입력하면된다.  ex ) 도메인 이름이 serve1.test.co.kr 일경우 아래와 같이 작성된다.  >> iptables -t nat -A OUTPUT -d serve1.test.co.kr -p tcp --dport 80 -j REDIRECT --to-ports 8080 # service iptables save 방화벽 규칙을 /etc/sysconfig/iptables에 저장 중: [  OK  ] # service iptables restart 방화벽 규칙을 삭제하는 중: [  OK  ] chains를 ACCEPT 규칙으로 설정함: nat [  OK  ] iptables 모듈을 제거하는 중: [  OK  ] iptables 방화벽 규칙들을 적용하는 중: [  ...

mysql - 외부접속(접근) 허용하기(권한주기)

개요 리눅스 서버에 MySQL 을 DB로 활용할 경우 외부에서 Toad for MySQL 과 같은 툴을 사용해서 접속하고자 할 때 접근권한이 없을경우 계정과 비밀번호 만으로는 DB에 접근 할 수 없다. 환경 : OS : CentOS 5.6 DB : MySQL 방법 : 1. 리눅스에서 mysql  접속 mysql -u root -p       엔터 후 비번입력 2. mysql> use mysql;  사용할 DataBase를 mysql 로 선택 3. 권한 설정 mysql> grant all privileges on *.* to '계정명'@'ip주소' identified by '계정의 비밀번호'; 4. 권한이 정상적으로 등록됐는지 확인 mysql> select host, user, password from user; 5. 명령 적용하기 mysql> flush privileges; 6. my.cnf  설정파일 수정 (외부접속 관련사항) 우선 mysql에서 나와서 리눅스로 돌아오자 mysql> exit 그리고 리눅스에서 아래 명령을통해 my.cnf 파일을 열고 sudo vim /etc/mysql/my.cnf 파일 내용 중 #bind-address = 127.0.0.1 이 내용 맨 왼쪽에 # 을 붙여서 주석처리 후 저장 7. mysql 재시작 sudo /etc/init.d/mysql restart      >> /etc/init.d/mysqld restart   이건가.. 햇갈리네 -0 - ; 완료 ! ------------------------------------------------------------------------------------------------- 概要 在Linux Server中使用MySQL을DB 想要在外部使用类似Toad for MySQL工具的工具...

리눅스 MySQL DB 복사

A라는 서버에서 B라는 서버로  A에 있는 test 라는 DB를 그대로 복사하고 싶을 때 !    1. A서버에서 아래 명령을 통해 dump.sql 을 생성한다.  # mysqldump -u DB접속계정 -p Database이름 > dump.sql 명령을 통해 dump.sql 파일 생성 (덤프생성)   덤프뜬 파일을 mysql 을 새로 설치한 서버로 가져간다음  # mysql -u DB접속계정 -p -e "source dump.sql" Database이름 끝 ! 쉽죠잉 

Oracle (오라클) 특정 시간에 대한 테이블 값 탐색

select * from 테이블 as of TIMESTAMP TO_TIMESTAMP('2014-07-10 15:14:00','YYYY-MM-DD HH24:MI:SS') DB 에서 특정 값이 언제 Update, Insert 가 일어났는지 알고싶을 때가 있다.  그럴땐 타임스템프라는걸 사용하면 그 시간대에 DB에 기록되었던 내용을 볼수있는데 그게 바로 저 위에 쿼리이다.  쿼리를 해석해보자면  2014년 7월 10일 / 15시 14분 00초에 테이블에 기록되었던 내용을 탐색   뭐 이정도로 설명할수있겠다. 

오라클 테이블의 키값과 데이터타입 낫널조건등등 한방에 상세보기 쿼리

WITH T1 AS ( Select C.COLUMN_NAME, S.CONSTRAINT_TYPE, C.TABLE_NAME from USER_CONS_COLUMNS C, USER_CONSTRAINTS S where C.CONSTRAINT_NAME = S.CONSTRAINT_NAME and S.CONSTRAINT_TYPE IN('P', 'R') ) SELECT A.COLUMN_NAME, DATA_TYPE, DATA_LENGTH, CASE WHEN NULLABLE = 'N' THEN 'Y' ELSE '' END AS NOT_NULL, B.CONSTRAINT_TYPE FROM ALL_TAB_COLUMNS A, T1 B WHERE A.TABLE_NAME = B.TABLE_NAME(+) AND A.COLUMN_NAME = B.COLUMN_NAME(+) AND OWNER = 'DB계정명' AND A.TABLE_NAME = '탐색할 테이블 명' ORDER BY NOT_NULL ASC

java 에서 mybatis 를 사용한 독립적인 DB접근 클래스 개발

주제 : java 에서 mybatis 를 사용한 독립적인 DB접근 클래스 개발 mybatis 를 spring framework (스프링)에 연동해서만 써봤지..  java class 파일에서 db연결을 할때 mybatis 를 써볼생각을 안했었다..  근데 java 로 batch 프로그램을 만들려다보니 문득 일반적인 jdbc 연결 말고.. mybatis 를 사용하면 더 편하지 않을까 하는 팀장님에 권유로 한번 해봤고 생각보다 쉽게 잘 적용할수잇었고 이를 기록으로 남기고자.....  ㅋㅋ..  <내용 요약 > 우선 윈도우에서 이클립스를 쓰는환경에서 기본 코딩을 해보고  코딩된 소스를 가지고 리눅스로 가져가서 컴파일 후 돌려보는식에 내용이 작성되어있다.  <윈도우 & 이클립스 환경> 1. mybatis 다운로드  - https://github.com/mybatis/mybatis-3/releases  - mybatis-3.2.8.zip 다운로드 2. 이클립스 실행   - Project Explorer 에서 New Java Project 생성  - 프로젝트명 : test_mybatis 3. test.java 생성 4. test_mybatis 프로젝트에 libs 디렉토리 생성 5. 라이브러리 추가  - mybatis-3.2.8.zip의 압축을 풀고   - mybatis-3.2.8.jar 파일을  - 방금 생성한 libs 디렉토리에 추가  - 그 . 리 . 고   - mysql connector 가 필요하다.   - mysql-connector-java-5.1.29.jar  이놈도 추가해주자 (구글에서 mysql connector download 치면 쉽게 받을수있어요~) 6. java build path 설정  - Project Ex...

8080 포트번호 없이 접근 가능하도록 iptables 변경하기

톰캣 설치 후 URL 또는 IP주소로 접근할 때  http://111.222.333:8080  또는 http://serve1.test.co.kr:8080   처럼  8080을 붙여서 접속해야하는 경우가 있다. 아래 내용은 8080 포트번호를 작성하지 않아도 알아서 처리하도록 iptable 설정을 바꿔주는 방법이다.  # iptables -t nat -A OUTPUT -d 127.0.0.1 -p tcp --dport 80 -j REDIRECT --to-ports 8080 # iptables -t nat -A OUTPUT -d hostname -p tcp --dport 80 -j REDIRECT --to-ports 8080 # iptables -t nat -A PREROUTING -d hostname -p tcp --dport 80 -j REDIRECT --to-ports 8080 * hostname  부분에는 리눅스를 설치했을때 적용한 도메인 이름을 입력하면된다.  ex ) 도메인 이름이 serve1.test.co.kr 일경우 아래와 같이 작성된다.  >> iptables -t nat -A OUTPUT -d serve1.test.co.kr -p tcp --dport 80 -j REDIRECT --to-ports 8080 # service iptables save 방화벽 규칙을 /etc/sysconfig/iptables에 저장 중: [  OK  ] # service iptables restart 방화벽 규칙을 삭제하는 중: [  OK  ] chains를 ACCEPT 규칙으로 설정함: nat [  OK  ] iptables 모듈을 제거하는 중: [  OK  ] iptables 방화벽 규칙들을 적용하는 중: [  OK  ] 추가 iptables 모듈을 읽어오는 중: ip_connt...

jsp 에서 import 에러 날 때

단순히 웹서버에  jsp 페이지로 어떤 코드를 작성해서 올릴 일이있었다.    근데 이 jsp 페이지에서는 특정 JSON 클래스를 사용했어야했기에    <%@ page import = "org.json.JSONArray"%> <%@ page import = "org.json.JSONObject"%>    이와같이 import 문을 사용해야했다.    근데 왠걸 톰캣 실행 후 저 내용이 들어간 페이지를 열려고하면 컴파일 에러가 나는것   이유인즉슨, 저 클래스파일을 참조해줄수있는 classpath 설정이 안되어있다는 점.    하지만 귀찮게스리 vi 에디터 열고 classpath 수정해주고..막 번거롭긔    간단한 방법이 있더이다.    /home/guest1/tomcat/webapps/ROOT/WEB-INF  처럼.톰캣 설치 디렉토리에는 WEB-INF 라는곳이있는데    그곳에 lib 디렉토리를생성한후  사용하고싶은 jar 파일을 저장한뒤 톰캣을 재시작하면 알아서 참조된다는 점.   

간단한 세션(session)에 이해

웹 프로그래밍을 하다가. 과연 세션이 뭥가요 . 라는 의문이 들수도있다.   그럴때 간단한 테스트를통해 몸으로 느낄수있도록 아래 예제를 기록해본다.   아래 두개의소스 t1.jsp , t2.jsp 를 작성하여 t1부터 차례대로 호출해보면 결과를 볼 수 있다.     t1.jsp -  세션을 생성하고 test라는 키값에 111을 저장          - 세션을 생성할때 true 를 넣었는데 이는, 기존세션이 있으면 그걸사용하고 없다면 새로 만든다는 의미          - 세션 생성시 false 를 사용하면 기존게 잇으면 쓰고 없으면 ㅂㅂ2   < %@page import="javax.servlet.http.HttpSession" %> <!DOCTYPE html > <%  HttpSession s = request.getSession(true);  s.setAttribute("test","111"); %> <html> <head> </head> <body> </body> </html>     t2.jsp  -  세션에 저장했던 111을 가져와서 알림창으로 띄운다. < %@page import="javax.servlet.http.HttpSession" %> <!DOCTYPE html > <%  HttpSession s = request.getSession(true);  String value = (String)s.getAttribute("test"); %> <html> <head> <script>    alert('<...

tomcat 80포트 사용설정 및 GET방식 인코딩설정

톰캣 7.0 기준 server.xml 원본에 작성되어있는 내용중에서 아래와같은 내용이있다. <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />   1. 80포트 사용설정 외부에서 웹서버에 접근했을때 주소뒤에 www.xxx.com:8080   처럼 8080포트를 쓰지않는 방법은 두가지가 있는것같다.    - 첫번째 방법 - server.xml 수정 <Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />    - 두번째방법은 내가 작성한 리눅스 iptable를 수정하는것. 80포트로 들어온내용을 8080으로 리다이렉트시켜서 톰캣설정 변견없이 작동하게하는것이다. http://blog.naver.com/cyk7890/40189933263   2. GET 방식 한글인코딩 설정 - URIEncoding="UTF-8" 추가 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" useBodyEncodingForURI="true" />

웹서버와 DB간의 연결 끊어짐 현상에 대하여..

웹서버랑 DB간의 통신이 일정시간동안 발생하지 않을경우 연결이 끊어지면서.. 웹서버가 정상적인 동작을 하지 못할경우가있다..  이것을 대비하여 톰캣에서는 일정 시간을 주기로 DB와의 연결을 점검하는 기능을 제공한다  이름하여 validationQuery  설정방법은 이러하다.  tomcat 설치위치의 conf 디렉토리에 보면   context.xml, server.xml 등등이있을것이다.  둘중하나에 Context 설정부분이있는데  <Context> // 이곳에 내용을 작성하면 된다.  </Context> * MySQL 사용자일경우 예제  <Resource name="jdbc/mysqlDS"                  auth="Container"                  type="javax.sql.DataSource"                  factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"                 driverClassName="com.mysql.jdbc.Driver"                 username="your id"                 password="your password"                 u...

톰캣 실행때 특정 클래스도 같이 실행 ?

톰캣은 DBCP  라고해서 데이터베이스 커넥션 풀  을 생성한다음 풀은 미리 디비와 연결을 맺어놓고  필요할때 맺어져있는 커넥션을 가져다쓴다음 반환하는 형식으로 사용되는게 있다.  근데 옆직원이 이와같은 원리로 소켓풀을 만들고있는데 톰캣 이외에 별도에 프로세스를 띄워야 하나요  ? 라는 질문을 던지길래 .. 어차피 웹서버가 구동될때 필요한 소켓이고..  페이지단이랑 통신이 이루어져야 할태니께...  웹서버가 올라갈때 소켓 커넥션풀이 작동하게끔 하면 되지 않을까? 해서 찾아본게  구글링 : 톰캣 실행할때 특정 클래스도 같이 ㅋㅋㅋ 라고 검색을 때린결과  web.xml 에 servlet을 등록하시고 <load-on-startup> 을 이용하시면 될 것입니다.  그 서블릿 수행시 필요한 클래스를 실행하도록 만들면 됩니다.  저도 쓰고있는게 있습니다.  <servlet>  <servlet-name>popdb</servlet-name>  <servlet-class>kr.pe.okjsp.PopDb</servlet-class>  <load-on-startup>1</load-on-startup>  </servlet> 이와같은 정보를 얻게 됐어요  저렇게하면.. 톰캣 실행과동시에 내가 만들어둔 특정 클래스도 함께 실행..  그럼 소켓 풀을 저기에 지정해주면.. 톰캣이뜨면서 소켓풀도 미리 소켓연결을 맺어두게되겠지 ? 해보진 않았지만 ㅋㅋ 되겠다 싶어서 우선 적어둠 

robots.txt : 웹 포털의 색인 방지 (내 서버가 호출되는것을 막기위해)

대형 포털사이트들.. 구글, 야후, 네이버 등등등은  운영중인 웹서버들의 URL을 색인한다고 한다.  즉 검색결과로 노출시키기 위한 ?  뭐암튼 웹서버는 있으나, 외부의 검색에 노출될 필요가 없는경우  불필요하게 외부 웹포털 사이트로부터 호출을 받는것을 막을 수 있다 이름하야 robots.txt   방법 : robots.txt  를 작성하여 TOMCAT_HOME/webapps  에 둔다. 끝.  이말인즉은 www.my_server.com/robots.txt     이러게 도메인 바로뒤에 tobots.txt 를 작성했을때 정상적으로 로딩이 되어야지만 해당 도메인에 색인을 방지할수있다고 합니다.  그렇다면 robots.txt 안에 내용작성 방법은 ? 아래 두줄만 작성하면 끝.  User-agent: * Disallow: /   위 두줄의 의미는  접근하려는모든 웹포털사이트로부터 내 웹서버에 모든경로에 대한 색인을 차단함 이라고 해석될수있을것 같네요  아 그리고.. 각 웹포털 사이트별로 차단설정을 하고싶다면 아래 사이트에서 제공해주는 robots.txt 작성 툴을 사용하여 robots.txt를 작성하는 방법도 있겠습니다.  http://www.mcanerin.com/EN/search-engine/robots-txt.asp

SVN 설치 및 설정하기

0. 설치환경  - Linux CentOS 5.6 (64bit)   1. 설치  # yum install subversion   2. svn 디렉토리 생성 # mkdir /home/svn   3. svn 저장소 (repository) 생성 # cd /home/svn     (svn 디렉토리로 이동) # svnadmin create repo-tasks       (repo-tasks 가 아니더라도 이름은 자유롭게 설정가능)   4. svn 설정파일 수정 # cd /home/svn/repo-tasks/conf/    (conf 디렉토리로 이동) # vi svnserve.conf   >>   이미 있는내용 전부 지우시구요 (절 믿으세요) 아래 내용을 고대로 복사 붙여넣기 하세요  anon-access = read auth-access = write password-db = passwd realm = repo-tasks        <= 여기서 repo-tasks 부분은 생성되는 repository 이름에 맞게 작성   * 주의 : 위 설정파일 내용을 작성할때.. 왼쪽에 공백이 있으면 오류가 납니다.. 이걸로 하루종일 뻘짓했어요... 하하하하    5. passwd 수정 # vi /home/svn/repo-tasks/conf/passwd   >>   기존 내용 삭제 후 아래 형태로 [사용자아이디 = 비밀번호] 형태로 추가해주세요~  >>   외부에서 svn 접속 시 사용되는 아이디와 비밀번호 입니다.  [users] svnuser = svnpasswd   6. svn 데몬 실행전에 svn에서 사용할 3690 포트를 열어둡니다.  # vi /etc/sysconfig...

SVN 백업 및 이동 (서버에서 다른서버로 SVN을 이동하여 구축할 때 ~ )

처음엔 막연했는데 막상 해보니 겁나 간단했다.    1. 기존 svn 으로 사용되고있는 저장소에서 덤프를 뜬다 ( = 백업을 뜬다) [기존 서버] # svnadmin dump /home/svn/repo-tasks > svn.dump   2. 저 덤프파일을 FTP 로 이동시키거나 서버끼리 마운트된 디렉토리로 공유를 하거나 해서 새로 구축될 svn 디렉토리로 복사한다.    3, 복사후 새롭게 사용될 svn저장소를 생성 (이미 있으면 생략~ ) # svnadmin create /home/svn/new_svn    * 새로 만들어진 svn 으로 덤프를 적용시켜도 설정파일은 변하지 않으므로 설정파일도 기존에 사용하던 svn 설정내용에 맞게 수작업으로 변경해주어야 함   * 설정파일 수정방법은 본 블로그 SVN 설치 라는 게시글에 작성되어 있습니다.    4. 덤프를 신규 svn저장소에 때려박기  [새로 사용될 서버] # svnadmin load /home/svn/new_svn < svn.dump   이동하기 끝!     

xxx: command not found 라는 에러가 날때! 환경변수 등록을 해주면 된다.

command not found   라는 에러가 날때! 환경변수 등록을 해주면 된다.    이번에 maven 과 ant라는걸 처음 접해보면서 명령이 안먹히길래 봤더니 환경변수가 등록되어있질 않았던것. ㅋㅋ    1. 설치된 경로를 확인한다  현재 난 /home/maven  에 설치가 되어있었다.    # vi /etc/profile         를 열고 아래와 같은식으로 내용을 추가해서 각각의 환경변수들을 등록해주면 해당 bin폴더에 들어있는 대표 명령을 사용할 수 있게된다.    < 작성 예시 > export JAVA_HOME=/usr/local/jdk1.6.0_33            export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH="."   export M2_HOME=/home/maven export PATH=$PATH:$M2_HOME/bin   export ANT_HOME=/home/ant export PATH=:$PATH:$ANT_HOME/bin   작성 완료 후    # source /etc/profile        를 입력하여 profile 적용을 하면 끝 !    # mvn -version # ant -version # java -version  등의 명령으로 버전확인이 정상적으로 되면 해결된 것이다. 

FTP 외부접속시 21포트 접속불가현상.. 삽질 기록.. ㅠ_ ㅠ

상황   1. CentOS 5.6 (64bit) 설치시 기본 구성에 있는 FTP 서버도 함께 설치되었다.    2. 외부에서 알FTP 로 IP주소와 포트번호 (21) 접속방식은 FTP 으로 선택후 접속시도 -> 접속 거부. (# 10061 에러)  왜??????????????? 라는 의문은 있었지만... 포트번호 22, SFTP 로 변경 후 시도했더니 접속이 되더이다.. 그래서 그냥저냥 넘겼으나......    3. C로 짠 프로그램단에서 22 포트로도 접속이 안되는 증상이 발생!!!!! 헐 ㅡㅡ    암튼 어찌어찌하여 21포트가 기본적은 FTP 포트이므로, 요놈을 사용할수있는 방법을 찾아보면서 iptables 를 수정해보기도 하고 ~ 별짓 다해보았으나.. 안되더라.    하루정도 뻘짓끝에 결국은 ?    FTP 서버 재설치..........................    에라모르겠다.  # yum install vsftpd        설치가 끝나고 환경설정을 해주고~  # vi /etc/vsftpd/vsftpd.conf  여기에서  # anonymous_enable=YES   주석처리 되어있을것이다, 임의의 사용자에게 공개하기를 원한다면 ? 주석을 해제해 주자    저장 후 fpt 데몬 다시시작!    # /etc/init.d/vsftpd restart      다시 외부에서 21 포트로 접속을 시도해 보니 잘 되었다............ ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ  아... 왜 OS설치할때 설치한 FTP Server는 이거랑 다른건가???? 뭐지 대체 .. ㅋㅋ 암튼 해결      ...