'보고서작성tip' 카테고리의 다른 글
[Excel/엑셀] 앞 뒤 공백 지우기 함수 (0) | 2014.07.22 |
---|---|
'~으로서'와 '~으로써'의 차이 (1) | 2014.03.02 |
[한글] 페이지번호 만들기 / 쪽번호 감추기 (0) | 2013.11.11 |
[한글] 몇 글자 작성했는지 궁금할 땐? (0) | 2013.05.29 |
[Excel/엑셀] 앞 뒤 공백 지우기 함수 (0) | 2014.07.22 |
---|---|
'~으로서'와 '~으로써'의 차이 (1) | 2014.03.02 |
[한글] 페이지번호 만들기 / 쪽번호 감추기 (0) | 2013.11.11 |
[한글] 몇 글자 작성했는지 궁금할 땐? (0) | 2013.05.29 |
#include <WinSock2.h> #include <stdio.h> #define BUFMAX 1024 #define GET_MSG "GET /index.html HTTP/1.0\n\n" #define PORT 80 void printIPAddrs(char **h_addr_list); // A. 실행인자로 도메인 이름을 받는다. int main(int argc, char **argv) { WSADATA WSAData; struct hostent *myent; SOCKADDR_IN addr; SOCKET s; char buffer[BUFMAX]; int readbytes = 0; // B. 인터넷 주소를 가져오지 못할 경우 에러 처리. if(argc != 2) { printf("Usage : %s [ineternet address]\n", argv[0]); WSACleanup(); return 1; } if (WSAStartup (MAKEWORD(2,2), &WSAData) != 0) { printf("WSAStartup failed\n"); return 1; } myent = gethostbyname(argv[1]); if(myent == NULL) { printf("Not Found Domain Name.\n"); return; } printf("Host Name : %s\n", myent->h_name); printIPAddrs(myent->h_addr_list); printf("=====================================================\n"); s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if(s == INVALID_SOCKET) { return 1; } addr.sin_family = AF_INET; addr.sin_port = htons(PORT); addr.sin_addr.S_un.S_addr = inet_addr(inet_ntoa(*(struct in_addr *)*myent->h_addr_list)); printf("%s %d\n", inet_ntoa(*(struct in_addr *)*myent->h_addr_list), PORT); printf("%s\n", GET_MSG); printf("=====================================================\n"); // D. 인터넷 주소 중 하나를 선택해서 웹 서버에 연결해서 웹페이지를 요청한다.(HTTP 프로토콜의 GET Method 이용) if(connect(s, (struct sockaddr *)&addr, sizeof(addr)) == SOCKET_ERROR) { printf("fail to connect\n"); closesocket(s); return 1; } send(s, GET_MSG, sizeof(GET_MSG), 0); while(1){ int i = 0; ZeroMemory(buffer, BUFMAX); i = recv(s, buffer, BUFMAX, 0); if(i <= 0) { break; } readbytes += i; printf("%s", buffer); } printf("\ntotal length : %d\n", readbytes); closesocket(s); WSACleanup(); return 0; } // C. 여러 개의 인터넷 주소가 있을 때, 이를 모두 출력한다. void printIPAddrs(char **h_addr_list) { while(*h_addr_list != NULL) { printf("%s\n", inet_ntoa(*(struct in_addr *)*h_addr_list)); h_addr_list++; } }
[C] UDP 채팅 프로그램(단순 주고받는 핑퐁) - 네트워크 과제 (0) | 2014.11.19 |
---|---|
[C] 소켓 파일 전송 프로그램 (클라이언트 > 서버) (0) | 2014.11.05 |
[C] 소켓 파일 전송 프로그램 (서버 > 클라이언트) (0) | 2014.10.29 |
[C] 도메인 주소 변환 예제 (0) | 2014.10.29 |
서버 실행환경 |
|
|
학과 서버 사용 |
OS |
SunOS 5.10 |
GCC |
3.4.6 |
Java |
1.5.0_16 |
클라이언트 실행환경 | |
Desktop | 조립식 |
CPU | Intel(R) Core(TM) i7-2600K CPU @ 3.40GHz 3.40GHz |
Memory | 8.00 GB |
OS | Windows 7 Professional K 64bit |
Java | 1.8.0_05 |
MySQL | Ver 14.14 Distrib 5.6.19, for Win64 |
Web Server | Apache Tomcat 7.0.51 |
#include <stdio.h> #include <sys/types.h> // socket, bind, accept, open #include <sys/socket.h> // socket, bind, listen, accept #include <unistd.h> // read, write #include <sys/stat.h> // open #include <fcntl.h> // open #include <errno.h> #include <string.h> #define PORT 5500 #define MAXBUF 1024 int main() { int server_sockfd; int client_sockfd; int des_fd; // file num struct sockaddr_in serveraddr, clientaddr; int client_len, read_len, file_read_len; // length char buf[MAXBUF]; int check_bind; client_len = sizeof(clientaddr); /* socket() */ server_sockfd = socket(AF_INET, SOCK_STREAM, 0); if(server_sockfd == -1) { perror("socket error : "); exit(0); } /* bind() */ bzero(&serveraddr, sizeof(serveraddr)); serveraddr.sin_family = AF_INET; serveraddr.sin_addr.s_addr = htonl(INADDR_ANY); serveraddr.sin_port = htons(PORT); if(bind(server_sockfd, (struct sockaddr *)&serveraddr, sizeof(serveraddr)) > 0) { perror("bind error : "); exit(0); } /* listen */ if(listen(server_sockfd, 5) != 0) { perror("listen error : "); } while(1) { char file_name[MAXBUF]; // local val memset(buf, 0x00, MAXBUF); /* accept() */ client_sockfd = accept(server_sockfd, (struct sockaddr *)&clientaddr, &client_len); printf("New Client Connect : %s\n", inet_ntoa(clientaddr.sin_addr)); /* file name */ read_len = read(client_sockfd, buf, MAXBUF); if(read_len > 0) { strcpy(file_name, buf); printf("%s > %s\n", inet_ntoa(clientaddr.sin_addr), file_name); } else { close(client_sockfd); break; } /* create file */ FILE_OPEN: des_fd = open(file_name, O_WRONLY | O_CREAT | O_EXCL, 0700); if(!des_fd) { perror("file open error : "); break; } if(errno == EEXIST) { close(des_fd); size_t len = strlen(file_name); file_name[len++] = '_'; file_name[len++] = 'n'; file_name[len] = '\0'; goto FILE_OPEN; } /* file save */ while(1) { memset(buf, 0x00, MAXBUF); file_read_len = read(client_sockfd, buf, MAXBUF); write(des_fd, buf, file_read_len); if(file_read_len == EOF | file_read_len == 0) { printf("finish file\n"); break; } } close(client_sockfd); close(des_fd); } close(server_sockfd); return 0; }
#include <WinSock2.h> #include <stdio.h> #include <sys/types.h> #include <io.h> #include <sys/stat.h> #include <fcntl.h> #define PORT 5500 #define IP "127.0.0.1" #define MAXBUF 1024 int main() { WSADATA WSAData; SOCKADDR_IN addr; SOCKET s; int sourse_fd; char buf[MAXBUF]; int file_name_len, read_len; if(WSAStartup(MAKEWORD(2,2), &WSAData) != 0) { return 1; } /* socket() */ s = socket(AF_INET, SOCK_STREAM, 0); if(s == INVALID_SOCKET) { return 1; } addr.sin_family = AF_INET; addr.sin_addr.S_un.S_addr = inet_addr(IP); addr.sin_port = htons(PORT); if(connect(s, (struct sockaddr *)&addr, sizeof(addr)) == SOCKET_ERROR) { perror("connect : "); printf("fail to connect.\n"); closesocket(s); return 1; } memset(buf, 0x00, MAXBUF); printf("전송할 파일명 : "); scanf("%s", buf); printf(" > %s\n", buf); file_name_len = strlen(buf); send(s, buf, file_name_len, 0); sourse_fd = _open(buf, _O_RDONLY); if(!sourse_fd) { perror("Error : "); return 1; } while(1) { memset(buf, 0x00, MAXBUF); read_len = _read(sourse_fd, buf, MAXBUF); send(s, buf, read_len, 0); if(read_len == 0) { break; } } return 0; }
[C] UDP 채팅 프로그램(단순 주고받는 핑퐁) - 네트워크 과제 (0) | 2014.11.19 |
---|---|
[C] HTTP client 예제 (0) | 2014.11.05 |
[C] 소켓 파일 전송 프로그램 (서버 > 클라이언트) (0) | 2014.10.29 |
[C] 도메인 주소 변환 예제 (0) | 2014.10.29 |
서버 실행환경 |
|
|
학과 서버 사용 |
OS |
SunOS 5.10 |
GCC |
3.4.6 |
Java |
1.5.0_16 |
클라이언트 실행환경 | |
Desktop | 조립식 |
CPU | Intel(R) Core(TM) i7-2600K CPU @ 3.40GHz 3.40GHz |
Memory | 8.00 GB |
OS | Windows 7 Professional K 64bit |
Java | 1.8.0_05 |
MySQL | Ver 14.14 Distrib 5.6.19, for Win64 |
Web Server | Apache Tomcat 7.0.51 |
#include <sys/socket.h> #include <sys/stat.h> #include <arpa/inet.h> #include <stdio.h> #include <string.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <errno.h> #include <stdlib.h> #define PORT 5555 #define MAXBUF 1024 /* 클라이언트와 길이를 맞추어준다. */ int main(int argc, char **argv) { int server_sockfd, client_sockfd; // 소켓 int client_len, n; int file_read_len; char buf[MAXBUF]; char file_name[MAXBUF]; struct sockaddr_in clientaddr, serveraddr; int source_fd; // 파일 번호 int chk_bind; // 연결 확인 변수 int chk_write; int read_len; client_len = sizeof(clientaddr); /* socket() */ server_sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if(server_sockfd == -1) { perror("socket error : "); exit(0); } /* bind() */ bzero(&serveraddr, sizeof(serveraddr)); // 해당 메모리 영역 초기화 serveraddr.sin_family = AF_INET; serveraddr.sin_addr.s_addr = htonl(INADDR_ANY); serveraddr.sin_port = htons(PORT); chk_bind = bind(server_sockfd, (struct sockaddr *)&serveraddr, sizeof(serveraddr)); if(chk_bind > 0) { perror("bind error : "); exit(0); } /* listen() */ if(listen(server_sockfd, 5)) { perror("listen error : "); } /* 클라이언트 연결 대기 */ while(1) { memset(buf, 0x00, MAXBUF); /* accept() */ client_sockfd = accept(server_sockfd, (struct sockaddr *)&clientaddr, &client_len); printf("New Client Connect: %s\n", inet_ntoa(clientaddr.sin_addr)); /* 파일명 받기 */ read_len = read(client_sockfd, buf, MAXBUF); if(read_len > 0) { memset(file_name, 0x00, MAXBUF); strcpy(file_name, buf); printf("%s > %s\n", inet_ntoa(clientaddr.sin_addr), file_name); } else { close(client_sockfd); break; } /* 파일 열기 */ source_fd = open(file_name, O_RDONLY); if(!source_fd) { perror("file open error : "); break ; } printf("before while\n"); while(1) { memset(buf, 0x00, MAXBUF); file_read_len = read(source_fd, buf, MAXBUF); printf("\nread : %s",buf); chk_write = write(client_sockfd, buf, MAXBUF); if(file_read_len == EOF | file_read_len == 0) { printf("finish file\n"); break; } } close(client_sockfd); close(source_fd); } close(server_sockfd); return 0; }
#include <WinSock2.h> #include <stdio.h> #include <stdlib.h> #include <io.h> // _open(), _read() 사용하기 위해서 #include <fcntl.h> // O_CREATIO, _O_RDONLY 사용하기 위해 #include <sys/types.h> #include <errno.h> #include <sys/stat.h> // _S_IWRITE 사용하기 위해 #define PORT 5555 #define IP "127.0.0.1" #define MAXBUF 1024 int main() { WSADATA WSAData; SOCKADDR_IN addr; SOCKET s; char buffer[1024]; char file_name[1024]; int readbytes; int i, len; int dest_fd; int recv_len; int totaln = 0; if (WSAStartup (MAKEWORD(2,2), &WSAData) != 0) { return 1; } s = socket(AF_INET, SOCK_STREAM, 0); if (s == INVALID_SOCKET) { return 1; } addr.sin_family = AF_INET; addr.sin_port = htons(PORT); addr.sin_addr.S_un.S_addr = inet_addr(IP); if (connect(s, (struct sockaddr *)&addr, sizeof(addr)) == SOCKET_ERROR) { printf("fail to connect\n"); closesocket(s); return 1; } printf("전송받을 파일명 : "); scanf("%s", file_name); printf("입력한 파일명 : %s", file_name); len = strlen(file_name); send(s, file_name, len, 0); // 파일 생성 dest_fd = _open(file_name, _O_CREAT | _O_EXCL | _O_WRONLY,_S_IWRITE); if(!dest_fd) { perror("Error "); return 1; } if(errno == EEXIST) { perror("Error "); _close(dest_fd); return 1; } printf("파일 생성 완료\n"); while(1) { memset(buffer, 0x00, MAXBUF); recv_len = recv(s, buffer, MAXBUF, 0); if(recv_len == 0) { printf("finish file\n"); break; } totaln += _write(dest_fd, buffer, recv_len); } _close(dest_fd); closesocket(s); WSACleanup(); //system("pause"); return 0; }
[C] HTTP client 예제 (0) | 2014.11.05 |
---|---|
[C] 소켓 파일 전송 프로그램 (클라이언트 > 서버) (0) | 2014.11.05 |
[C] 도메인 주소 변환 예제 (0) | 2014.10.29 |
[C] 문자, 숫자 변환 함수 (0) | 2014.10.22 |
라이브러리 ws2_32.lib 추가해주고 실행해야한다.
#include <WinSock2.h> #include <stdio.h> void ptintMyent(struct hostent *myent); int main(int argc, char **argv) { WSADATA WSAData; if (WSAStartup (MAKEWORD(2,2), &WSAData) != 0) { return 1; } ptintMyent(gethostbyname("web.dongguk.ac.kr")); ptintMyent(gethostbyname("www.naver.com")); ptintMyent(gethostbyname("www.hanb.co.kr")); WSACleanup(); return 0; } void ptintMyent(struct hostent *myent) { long int *add; SOCKADDR_IN myen; if(myent == NULL) { return; } printf("Host name : %s\n", myent->h_name); while(*myent->h_addr_list != NULL) { add = (long int*)*myent->h_addr_list; myen.sin_addr.S_un.S_addr = *add; printf("%d -> %s\n", add, inet_ntoa(myen.sin_addr)); myent->h_addr_list++; } printf("\n"); }
[C] 소켓 파일 전송 프로그램 (클라이언트 > 서버) (0) | 2014.11.05 |
---|---|
[C] 소켓 파일 전송 프로그램 (서버 > 클라이언트) (0) | 2014.10.29 |
[C] 문자, 숫자 변환 함수 (0) | 2014.10.22 |
[C] 2의 보수 나누기 (0) | 2014.10.15 |
인스턴스화하지 않고 static 필드인 TURE, FALSE를 사용한다.
public class BooleanExample { public static void main(String[] args) { // Boolean bool = new Boolean(ture); // Boolean bool2 = Boolean.valueOf(false); Boolean bool = Boolean.TRUE; Boolean bool2 = Boolean.FALSE; } }
[JAVA 코딩습관] BigInteger 객체 사용법 (0) | 2014.12.03 |
---|---|
[Servlet] template servlet - db server (0) | 2014.11.26 |
[JAVA] Swing GTKLookAndFeel JAVA1.8에서 실행할 때 (0) | 2014.09.26 |
[JAVA] 데몬 스레드(Daemon Thread) (0) | 2014.09.06 |
#includechar *str = NULL; int result; str = "1234"; result = atoi(str);
atoi()와 달리 itoa()는 표준이아니다. 그렇기때문에 itoa()는 유닉스에서 사용할 수가 없다. 유닉스에서는 sprintf()를 사용한다.
(여담이지만 네트워크 프로그래밍 중간 시험에서 서버에서 숫자로 된 값을 클라이언트(window)로 전송해야하는데 itoa() 밖에 몰라서 한 문제를 날려먹었다... '아는 것이 힘이다.'라는 것을 느낀 시험이었다.)
WINDOW int val = 1234; char* str = NULL; _itoa(val, str, 10) UNIX char str[512]; int val = 1234; sprintf(str, "%d", val);
[C] 소켓 파일 전송 프로그램 (서버 > 클라이언트) (0) | 2014.10.29 |
---|---|
[C] 도메인 주소 변환 예제 (0) | 2014.10.29 |
[C] 2의 보수 나누기 (0) | 2014.10.15 |
[C] 파일 목록 가져오기(출력) 예제 (0) | 2014.10.15 |
$ talk username
$ write username $ input message ctrl + D 전송
$ wall $ input message ctrl + D 전송
거부 $ mesg n 허용 $ mesg y 확인 $ mesg
Linux OS 확인 (0) | 2017.11.29 |
---|---|
[UNIX] session 죽이기(kill) (0) | 2014.11.16 |
[ubuntu] ssh server 설치 (0) | 2014.07.02 |
[ubuntu] JAVA JDK 설치하기 (0) | 2014.04.06 |
connect_db()를 통해 데이터베이스의 연결을 반환 값으로 받는다.
from sqlite3 import dbapi2 as sqlite3 ... DATABASE = '/tmp/minitwit.db' ... def connect_db(): return sqlite3.connect(app.config['DATABASE'])
연결과 종료를 before_request()와 teardown_request() 데코레이터를 이용해 좀 더 모듈화한다.
before_request()는 요청에 앞서서 실행되는 함수 정의.
teardown_request()는 응답이 생성된 후에 실행되는 함수 정의.
g 객체는 전역(global) 객체를 의미하며 한 번의 요청에 대해서만 같은 값을 유지하고 스레드에 대해 안전하다는 전제 조건이 있다.
@app.before_request def before_request(): g.db = connect_db() g.user = None if 'user_id in session: g.user = query_db('select * from user where user_id = ?', [session['user_id']], one=True) @app.teardown_request def teardown_request(exception): if hasattr(g, 'db'): g.db.close()
세 가지 인자로 1. 실행할 질의문, 2. 바인딩 변수라 불리는 질의문에 들어갈 인자(튜플 형태), 3. 결과값으로 리스트 전체를 받을 것인지 리스트의 첫 번째 요소만을 받을 것인지 결정하는 불린(boolean) 값
g 객체에 설정한 데이터베이스 연결을 이용해서 질의문과 바인딩 변수를 실행하고 결과에 대한 커서(cursor)를 얻는다. 그 결과 커서에서 전체 레코드를 꺼내(fetch) 로우(row)를 한 줄씩 읽으면서 그 로우에 있는 컬림(column)의 이름과 값을 dict 형태로 변환한다. 세 번째 인자에 True가 넘어오면 딕셔너리 형태로 변환된 한 개의 로우만 반환되고, False가 넘어오면 전체 로우가 반환된다.
def query_db(query, args=(), one=False): cur = g.db.execute(quert, args) rv = [dict((cur.description[idx][0], value) for idx, value in enumerate(row)) for row in cur.fetchall()] return (rv[0] if rv else None) if one else rv
데이터베이스 초기화함수
def init_db(): with closing(connect_db()) as db: with app.open_resource('schema.sql') as f: db.cursor().executescript(f.read()) db.commit()
[Django] 장고 시작하기(설치, 생성, 실행) (0) | 2015.12.04 |
---|---|
[Python 3] 팩토리얼(factorial) 구하기 (0) | 2014.08.22 |
[Python] 파이썬 예약어 (0) | 2014.08.02 |
[Python] 더 좋은 assert() : assertEqual() (0) | 2014.03.14 |
1 #include <stdio.h> 2 3 int main() { 4 int val1; 5 int val2; 6 int answer = 0; // 몫 7 int remainder = 0; // 나머지 8 9 val1 = 198; 10 val2 = 75; 11 printf("%d / %d =\n", val1, val2); 12 13 val2 = ~val2 + 1; // 2의 보수 14 printf("%d\n", val2); 15 16 while(1) { 17 val1 += val2; 18 if(val1 < 0) 19 break; 20 answer++; 21 remainder = val1; 22 } 23 printf("answer is %d, remainder %d\n", answer, remainder); 24 25 return 0; 26 }
[C] 도메인 주소 변환 예제 (0) | 2014.10.29 |
---|---|
[C] 문자, 숫자 변환 함수 (0) | 2014.10.22 |
[C] 파일 목록 가져오기(출력) 예제 (0) | 2014.10.15 |
[VS] COFF로 변환하는 동안 오류가 발생했습니다. 파일이 잘못되었거나 손상되었습니다. (0) | 2014.10.15 |
#include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <dirent.h> #include <error.h> int main() { DIR *dir; struct dirent *ent; dir = opendir ("./"); if (dir != NULL) { /* print all the files and directories within directory */ while ((ent = readdir (dir)) != NULL) { printf ("%s\n", ent->d_name); } closedir (dir); } else { /* could not open directory */ perror (""); return EXIT_FAILURE; } }
#include <stdio.h> #include <io.h> #include <conio.h> void main() { _finddata_t fd; long handle; int result = 1; handle = _findfirst(".\\*.*", &fd); //현재 폴더 내 모든 파일을 찾는다. if (handle == -1) { printf("There were no files.\n"); return; } while (result != -1) { printf("File: %s\n", fd.name); result = _findnext(handle, &fd); } _findclose(handle); return; }
Microsoft Visual Studio 2010 컴파일시 에러 발생
"COFF로 변환하는 동안 오류가 발생했습니다. 파일이 잘못되었거나 손상되었습니다."
프로젝트 속성 > 구성 속성 > 링커 > 일반 > 중분 링크 사용 > 아니요(/INCREMENTAL:NO) 혹은 프로젝트 속성 > 구성 속성> 매니페스트 도구 > 입력 및 출력 > 매니페스트 포함 > 아니요
영구적으로 해결하는 방법 -> Visual Studio 서비스팩 1 다운로드
[C] 2의 보수 나누기 (0) | 2014.10.15 |
---|---|
[C] 파일 목록 가져오기(출력) 예제 (0) | 2014.10.15 |
[C] warning C4996: '_open()': This function or variable may be unsafe. Consider using _sopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. (0) | 2014.10.11 |
[C] 유닉스의 open()를 대신하는 메서드 (0) | 2014.10.09 |
안녕하세요!
티스토리에 보금자리를 마련하시려는 여러분께 초대장을 배포해 드리려고 합니다.
나만의, 내 생각을, 내 기억을 담는 소중한 블로그를 만들고 싶다면 티스토리로 시작해보세요!
티스토리 블로그는 초대에 의해서만 가입이 가능합니다. 원하시는 분은 댓글에 운영목적과 E-mail 주소를 남겨주시면 초대장을 보내드립니다. 남겨주실 때에는 꼭 비밀댓글로 남겨주세요!
초대장을 보내드리고 바로 개설하시지 않으신 분들은 초대장을 회수할 수도 있으니 바로 개설해주세요!
Yes
이런 분들께 드립니다!
1. 다른 블로그를 사용해보셨던 분
2. 이메일 주소가 정상적인 분
3. 블로그를 시작하려는 이유를 남겨주신 분! |
No
이런 분들께 드리지 않아요!
1. 이메일 주소가 의심되는 분!
2. 이메일 주소를 남기지 않으신 분
3. 이유도 없이 달라고 하시는 분! |
[진행] 11월 티스토리 초대장 배포합니다. (0) | 2015.11.16 |
---|---|
[마감] 6월 티스토리 초대장 배포합니다. (23) | 2014.06.26 |
[마감] 5월 티스토리 초대방 배포합니다. (53) | 2014.05.07 |
[마감] 4월 티스토리 초대장 배포합니다. (56) | 2014.04.08 |
실행환경 |
|
Desktop |
조립식 |
CPU |
Intel(R) Core(TM) i7-2600K CPU @ 3.40GHz 3.40GHz |
Memory |
8.00 GB |
OS |
Windows 7 Professional K 64bit |
Java |
1.8.0_05 |
MySQL | Ver 14.14 Distrib 5.6.19, for Win64 |
Web Server | Apache Tomcat 7.0.51 |
컴파일시 아래와 같은 에러 중 어느 한가지라도 발생했을 경우.(확실치는 않다.)
Warning 2 warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. f:\fernando luiz\teste-3205\ps3000.c 336 1 Programa 3205 Warning 3 warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. f:\fernando luiz\teste-3205\ps3000.c 363 1 Programa 3205 Warning 4 warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. f:\fernando luiz\teste-3205\ps3000.c 369 1 Programa 3205 Warning 5 warning C4996: 'fscanf': This function or variable may be unsafe. Consider using fscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. f:\fernando luiz\teste-3205\ps3000.c 371 1 Programa 3205 Warning 6 warning C4996: 'strtok': This function or variable may be unsafe. Consider using strtok_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. f:\fernando luiz\teste-3205\ps3000.c 374 1 Programa 3205 Warning 7 warning C4996: 'strtok': This function or variable may be unsafe. Consider using strtok_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. f:\fernando luiz\teste-3205\ps3000.c 375 1 Programa 3205 Warning 9 warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. f:\fernando luiz\teste-3205\ps3000.c 718 1 Programa 3205 Warning 10 warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. f:\fernando luiz\teste-3205\ps3000.c 727 1 Programa 3205 Warning 11 warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. f:\fernando luiz\teste-3205\ps3000.c 729 1 Programa 3205 Warning 12 warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. f:\fernando luiz\teste-3205\ps3000.c 754 1 Programa 3205 Warning 13 warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. f:\fernando luiz\teste-3205\ps3000.c 766 1 Programa 3205 Warning 14 warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. f:\fernando luiz\teste-3205\ps3000.c 768 1 Programa 3205 Warning 15 warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. f:\fernando luiz\teste-3205\ps3000.c 792 1 Programa 3205 Warning 16 warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. f:\fernando luiz\teste-3205\ps3000.c 806 1 Programa 3205 Warning 17 warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. f:\fernando luiz\teste-3205\ps3000.c 808 1 Programa 3205 Warning 18 warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. f:\fernando luiz\teste-3205\ps3000.c 830 1 Programa 3205 Warning 19 warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. f:\fernando luiz\teste-3205\ps3000.c 842 1 Programa 3205 Warning 20 warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. f:\fernando luiz\teste-3205\ps3000.c 844 1 Programa 3205 Warning 21 warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. f:\fernando luiz\teste-3205\ps3000.c 866 1 Programa 3205 Warning 22 warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. f:\fernando luiz\teste-3205\ps3000.c 911 1 Programa 3205 Warning 23 warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. f:\fernando luiz\teste-3205\ps3000.c 939 1 Programa 3205
Project properties > Configuration Properties > C/C++ > Preprocessor > Preprocessor Definitions > _CRT_SECURE_NO_WARNINGS 프로젝트 오른쪽 클릭 > 속성 > 구성 속성 > C/C++ > 전처리기 > 전처리기 정의 > _CRT_SECURE_NO_WARNINGS 추가.
보안상의 문제로 다른 함수를 사용하라는 것인데 설정 추가로 해결할 수 있다.
[C] 파일 목록 가져오기(출력) 예제 (0) | 2014.10.15 |
---|---|
[VS] COFF로 변환하는 동안 오류가 발생했습니다. 파일이 잘못되었거나 손상되었습니다. (0) | 2014.10.15 |
[C] 유닉스의 open()를 대신하는 메서드 (0) | 2014.10.09 |
[C] 연산자 우선순위 (0) | 2014.05.02 |
실행환경 |
|
Desktop |
조립식 |
CPU |
Intel(R) Core(TM) i7-2600K CPU @ 3.40GHz 3.40GHz |
Memory |
8.00 GB |
OS |
Windows 7 Professional K 64bit |
Java |
1.8.0_05 |
MySQL | Ver 14.14 Distrib 5.6.19, for Win64 |
Web Server | Apache Tomcat 7.0.51 |
유닉스에서 사용하던 함수 open(), close(), write(), read()를 window Visual Studio 에서 사용하려하는데 에러 발생.
_open()을 사용한다. 다른 함수 모두 앞에 '_'를 붙혀 사용한다. 아래 코드는 MS Developer Network C 라이브러리에서 참고하였다.
#include <fcntl.h> #include <sys/types.h> #include <sys/stat.h> #include <io.h> #include <stdio.h> int main( void ) { int fh1, fh2; fh1 = _open( "CRT_OPEN.C", _O_RDONLY ); // C4996 // Note: _open is deprecated; consider using _sopen_s instead if( fh1 == -1 ) perror( "Open failed on input file" ); else { printf( "Open succeeded on input file\n" ); _close( fh1 ); } fh2 = _open( "CRT_OPEN.OUT", _O_WRONLY | _O_CREAT, _S_IREAD | _S_IWRITE ); // C4996 if( fh2 == -1 ) perror( "Open failed on output file" ); else { printf( "Open succeeded on output file\n" ); _close( fh2 ); } }
참고 사이트 링크
1. Tomcat/webapps 디렉토리 밑에 새로운 애플리케이션(폴더)을 생성한다.
2. 새로운 애플리케이션 안에 WEB-INF, WEB-INF/classes, WEB-INF/lib 를 생성한다.
3. classes 안에는 컴파일한 class 파일을 넣는다.
4. lib 에는 각종 라이브러리 파일을 넣는다.
5. src 에는 작성한 코드파일을 넣는다.
[Servlet] 서블릿 DB 연결 문제 (0) | 2014.10.07 |
---|---|
[tomcat] 톰캣 루트 폴더 변경하기 (1) | 2014.04.29 |
[Apache Tomcat] localhost:8080 접속시 인증 필요 문제(XDB) (0) | 2014.02.09 |
[JSP] 정수,실수,문자열에 콤마찍기 NumberFormat (0) | 2013.07.10 |
실행환경 |
|
Desktop |
조립식 |
CPU |
Intel(R) Core(TM) i7-2600K CPU @ 3.40GHz 3.40GHz |
Memory |
8.00 GB |
OS |
Windows 7 Professional K 64bit |
Java |
1.8.0_05 |
MySQL | Ver 14.14 Distrib 5.6.19, for Win64 |
Web Server | Apache Tomcat 7.0.51 |
서블릿에서 DB 연결시 NullPointerException 발생하고 연결 실패.(이 문제 하나로 몇일을 삽질하였다...)
서블릿은 JDBC를 Properties에서 가져오지 않는다. 서블릿의 디렉토리 구조안에 라이브러리 파일을 넣어야 하는데, 위치는 'WEB-INF/lib'에 넣어주면 된다.
이클립스에서 생성한 프로젝트에서는 WebContent/WEB-INF/lib 에 넣어준다.
참고 링크
[Servlet] 서블릿 디렉토리(패키지) 구조 생성 (0) | 2014.10.07 |
---|---|
[tomcat] 톰캣 루트 폴더 변경하기 (1) | 2014.04.29 |
[Apache Tomcat] localhost:8080 접속시 인증 필요 문제(XDB) (0) | 2014.02.09 |
[JSP] 정수,실수,문자열에 콤마찍기 NumberFormat (0) | 2013.07.10 |
truncate [table name]; ex) truncate students;
[MySQL] MySQL 설정(사용자 추가, 변경, 디렉토리 변경) (0) | 2015.02.04 |
---|---|
[MySQL] workbench read only table 해결하기 (0) | 2014.09.29 |
[MySQL] MySQL 예약어(reserved word) (0) | 2014.09.29 |
[MySQL] utf-8 설정하기 (0) | 2014.09.03 |
The table has no unique row identifier (primary key or a NOT NULL unique index)
현재 테이블에 PK(primary key)나 NOT NULL, unique index 속성이 없으므로 Read Only가 된다.
## 컬럼 추가 ALTER TABLE 테이블명 ADD 컬럼명 타입, 속성; ## 컬럼 속성 수정 mysql > ALTER TABLE 테이블명 MODIFY 컬럼명 타입,속성; # 속성 : NOT NULL / AUTO_INCREMENT / PRIMARY KEY / FIRST / AFTER 컬럼명); # ex) ALTER TABLE 테이블명 MODIFY 컬럼명 INT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST; ## 컬럼 삭제 mysql > ALTER TABLE 테이블명 DROP 컬럼명; ## primary key 속성 삭제 mysql > ALTER TABLE 테이블명 DROP PRIMARY KEY; ## 테이블 내용 전체 삭제 mysql > TRUNCATE TABLE 테이블명;
참고사이트 [1]
[MySQL] MySQL 설정(사용자 추가, 변경, 디렉토리 변경) (0) | 2015.02.04 |
---|---|
[MySQL] 테이블내 데이터 모두 삭제, truncate (0) | 2014.10.06 |
[MySQL] MySQL 예약어(reserved word) (0) | 2014.09.29 |
[MySQL] utf-8 설정하기 (0) | 2014.09.03 |
Reserved Words in MySQL 5.6.22
ACCESSIBLE | ADD | ALL |
ALTER | ANALYZE | AND |
AS | ASC | ASENSITIVE |
BEFORE | BETWEEN | BIGINT |
BINARY | BLOB | BOTH |
BY | CALL | CASCADE |
CASE | CHANGE | CHAR |
CHARACTER | CHECK | COLLATE |
COLUMN | CONDITION | CONSTRAINT |
CONTINUE | CONVERT | CREATE |
CROSS | CURRENT_DATE | CURRENT_TIME |
CURRENT_TIMESTAMP | CURRENT_USER | CURSOR |
DATABASE | DATABASES | DAY_HOUR |
DAY_MICROSECOND | DAY_MINUTE | DAY_SECOND |
DEC | DECIMAL | DECLARE |
DEFAULT | DELAYED | DELETE |
DESC | DESCRIBE | DETERMINISTIC |
DISTINCT | DISTINCTROW | DIV |
DOUBLE | DROP | DUAL |
EACH | ELSE | ELSEIF |
ENCLOSED | ESCAPED | EXISTS |
EXIT | EXPLAIN | FALSE |
FETCH | FLOAT | FLOAT4 |
FLOAT8 | FOR | FORCE |
FOREIGN | FROM | FULLTEXT |
GET | GRANT | GROUP |
HAVING | HIGH_PRIORITY | HOUR_MICROSECOND |
HOUR_MINUTE | HOUR_SECOND | IF |
IGNORE | IN | INDEX |
INFILE | INNER | INOUT |
INSENSITIVE | INSERT | INT |
INT1 | INT2 | INT3 |
INT4 | INT8 | INTEGER |
INTERVAL | INTO | IO_AFTER_GTIDS |
IO_BEFORE_GTIDS | IS | ITERATE |
JOIN | KEY | KEYS |
KILL | LEADING | LEAVE |
LEFT | LIKE | LIMIT |
LINEAR | LINES | LOAD |
LOCALTIME | LOCALTIMESTAMP | LOCK |
LONG | LONGBLOB | LONGTEXT |
LOOP | LOW_PRIORITY | MASTER_BIND |
MASTER_SSL_VERIFY_SERVER_CERT | MATCH | MAXVALUE |
MEDIUMBLOB | MEDIUMINT | MEDIUMTEXT |
MIDDLEINT | MINUTE_MICROSECOND | MINUTE_SECOND |
MOD | MODIFIES | NATURAL |
NOT | NO_WRITE_TO_BINLOG | NULL |
NUMERIC | ON | OPTIMIZE |
OPTION | OPTIONALLY | OR |
ORDER | OUT | OUTER |
OUTFILE | PARTITION | PRECISION |
PRIMARY | PROCEDURE | PURGE |
RANGE | READ | READS |
READ_WRITE | REAL | REFERENCES |
REGEXP | RELEASE | RENAME |
REPEAT | REPLACE | REQUIRE |
RESIGNAL | RESTRICT | RETURN |
REVOKE | RIGHT | RLIKE |
SCHEMA | SCHEMAS | SECOND_MICROSECOND |
SELECT | SENSITIVE | SEPARATOR |
SET | SHOW | SIGNAL |
SMALLINT | SPATIAL | SPECIFIC |
SQL | SQLEXCEPTION | SQLSTATE |
SQLWARNING | SQL_BIG_RESULT | SQL_CALC_FOUND_ROWS |
SQL_SMALL_RESULT | SSL | STARTING |
STRAIGHT_JOIN | TABLE | TERMINATED |
THEN | TINYBLOB | TINYINT |
TINYTEXT | TO | TRAILING |
TRIGGER | TRUE | UNDO |
UNION | UNIQUE | UNLOCK |
UNSIGNED | UPDATE | USAGE |
USE | USING | UTC_DATE |
UTC_TIME | UTC_TIMESTAMP | VALUES |
VARBINARY | VARCHAR | VARCHARACTER |
VARYING | WHEN | WHERE |
WHILE | WITH | WRITE |
XOR | YEAR_MONTH | ZEROFILL |
New Reserved Words in MySQL 5.6
GET | IO_AFTER_GTIDS | IO_BEFORE_GTIDS |
MASTER_BIND | ONE_SHOT | PARTITION |
SQL_AFTER_GTIDS | SQL_BEFORE_GTIDS |
[MySQL] 테이블내 데이터 모두 삭제, truncate (0) | 2014.10.06 |
---|---|
[MySQL] workbench read only table 해결하기 (0) | 2014.09.29 |
[MySQL] utf-8 설정하기 (0) | 2014.09.03 |
[MySQL] 오토커밋(autocommit) 상태 확인하기 (0) | 2014.09.01 |
cmd > sqlplus
cmd > sqlplus sys/password as sysdba
// 사용자 ID가 hr이라고 가정 sql > alter user hr account unlock;
// 추가 sql > create user 사용자명 identified by 비밀번호; // 비밀번호 변경 sql > alter user 사용자ID identified by 비밀번호 // 확인 sql > select username from dba_users; // 권한 부여 sql > grant connect, resource to 사용자명;
sql > conn 사용자ID/비밀번호; sql > conn sys/관리자비밀번호 as sysdba;
[Oracle] ORA-28002 : the password will expired within N days. (0) | 2014.07.17 |
---|---|
[Oracle]OJDBC.jar 드라이버 다운로드 (0) | 2014.01.17 |
[Oracle]ORA-00904 : invalid identifier (0) | 2014.01.17 |
실행환경 |
|
Desktop |
조립식 |
CPU |
Intel(R) Core(TM) i7-2600K CPU @ 3.40GHz 3.40GHz |
Memory |
8.00 GB |
OS |
Windows 7 Professional K 64bit |
Java |
1.8.0_05 |
MySQL | Ver 14.14 Distrib 5.6.19, for Win64 |
PSSAV 에서 실행이 안되서 코드 확인해보니 한 문장에 에러가 있었다. com.sun.java.swing.plaf.gtk.GTKLookAndFeel() 인데 아마도 1.8에서는 없는 클래스 인것 같다. 그래서 다음과 같은 코드로 변경하여 해결하였다.
// 변경 전 UIManager.setLookAndFeel(new com.sun.java.swing.plaf.gtk.GTKLookAndFeel()); // 변경 후 UIManager.setLookAndFeel("Javax.swing.plaf.metal.metalLookAndFeel");
[Servlet] template servlet - db server (0) | 2014.11.26 |
---|---|
[JAVA 코딩습관] Boolean 객체 사용법 (0) | 2014.10.24 |
[JAVA] 데몬 스레드(Daemon Thread) (0) | 2014.09.06 |
[JAVA] MySQL 이클립스에서 Java 로 연동하기 (0) | 2014.08.15 |
스톱워치 프로그램 - FreeStopwatch (작성중) (0) | 2014.04.24 |
---|---|
바탕화면 정리 - Fence(작성중) (0) | 2014.03.26 |
iso 파일 간단 실행하기 - WinCDEmu (0) | 2014.02.12 |
크롬 IE 확장 프로그램 - IE Tab Multi (0) | 2014.02.03 |
실행환경 |
|
Desktop |
조립식 |
CPU |
Intel(R) Core(TM) i7-2600K CPU @ 3.40GHz 3.40GHz |
Memory |
8.00 GB |
OS |
Windows 7 Professional K 64bit |
Java |
1.8.0_05 |
MySQL | Ver 14.14 Distrib 5.6.19, for Win64 |
안드로이드에서는 메인스레드가 아닌 다른 스레드(백그라운드)에서 UI를 건들였을 때 에러가 발생한다. 이는 서로 변경하는 것을 허용하게 되면 동기화 문제가 발생하기 때문이다. 그렇기 때문에 핸들러(Handler)를 사용해서 스레드간에 통신을 할 수 있다.
[Android] AutoCompleteTextView Text Color 버그 (0) | 2014.11.17 |
---|---|
[Android] the method setbackgrounddrawable(drawable) from the type view is deprecated (0) | 2014.11.14 |
[Android][DB] 엑셀파일 변환해서 SQLite DB에 넣기 (0) | 2014.08.06 |
[Android] 생명주기(Life Cycle) (0) | 2014.06.30 |
먼저 GitHub에 가입이 되어있어야 하고, Sublime Text 2 에는 Package Contorl 이 설치되어 있어야한다.
이제 Sublime Text 2 에서 gist를 설치하고 계정을 설정하면 된다.
설치가 완료되면 Perferences - Package Settings - Gist - Settings User 를 클릭하고 GitHub 계정을 저장한다.
아래와 같이 계정 아이디와 패스워드 토큰을 입력한다.
{ // Github user ID "username" : "id", // Gitjub password "password" : "pw", // Your Github API token "token" : "token" }
토큰을 생성하는 방법은 GitHub 홈페이지에서 로그인한 후 Account settings - Applications 에서 Personal access tokens 옆에 Generate new token 으로 생성한다.
다음과 같은 코드를 작성한뒤 gist에 Ctrl+Shift+P 를 입력하고 Gist: Create Public Gist 를 선택한다.
그리고 하단에 입력창이 보이는데 첫 번째 파일 설명과, 두 번째 파일명을 입력하면 파일이 업로드된다.
단축키 Ctrl+K, I(순서대로 K와 I를 입력해야한다.)를 이용하면 훨씬 빠르게 사용할 수 있다.
Ctrl+k,o 마찬가지로 단축키를 이용할 수 있다.
Gist: Update File 로 업데이트 한다. 마찬가지로 단축키 Ctrl+K, S 가 있다.
언론사/포탈 뉴스 RSS 목록 (0) | 2014.11.18 |
---|---|
주요 RSS 목록 (0) | 2014.11.18 |
[운영체제]병행성, 임계구역, 상호배제, 교착상태 (0) | 2014.06.02 |
Bitbucket 무료 gif 사이트 (0) | 2014.05.20 |