오유인페이지
개인차단 상태
프로그래머님의 개인페이지입니다
회원가입 : 07-05-23
방문횟수 : 549회
닉네임 변경이력
일반
베스트
베오베
댓글
527 2016-05-18 22:28:13 0
파일 입출력 질문입니다. [새창]
2016/05/18 21:26:15
enrollment 함수를 보면 파일에 입력하는 부분인데 이 부분에서 여러명을 입력 할 것이냐 아니면 한명씩 입력할 것이냐를 선택할 수 있을것 같아요.

한 명씩 입력 하는 방식 (그러니깐 처음에 자료 등록 (2) 하고 내용 입력해서 파일에 쓰고 다시 자료 등록 (2) 하고 내용 입력해서 파일에 쓰고 하는 방식)은 다음과 같이 구현될 수 있을것 같아요.

void enrollment()
{
 a = 0;
 FILE* stream2;
stream2 = fopen("information.txt", "a"); // 이전 답변에 있는 것처럼 이 부분은 a 로 넣어줘야지 이어 쓰기가 됩니다.
if (stream2 == NULL) {
printf("파일열기 에러n"); // 보너스로 이쁘게 하기 위해 n 을 이용하여 띄어 쓰기 'ㅡ'/
main();
}
  
printf("책의 제목:");
scanf("%s", info[a].name);
fflush(stdin); // 요기서는 fflush 를 써볼까요 'ㅡ'/

printf("책의 저자:");
scanf("%s", info[a].writer);
fflush(stdin);

printf("일련 번호:");
scanf("%s", info[a].no);
fflush(stdin);

fprintf(stream2, "%s %s %sn", info[a].name, info[a].writer, info[a].no); // 이 부분이 파일에 쓰는 부분

fclose(stream2);

 main();
}
526 2016-05-18 22:21:08 0
파일 입출력 질문입니다. [새창]
2016/05/18 21:26:15
다음에 자료 현황 함수인 information 을 보게 되면 첫번째로 눈에 띄는 것은

if (stream1 = NULL) 인데 이 부분은 if (stream1 == NULL) 이렇게 == 두개 써줘야지 비교 연산으로 인식합니다. 하나만 쓰시면 대입 연산이라 항상 참이 되게 되요.

두 번째로는 순서가 조금 잘못된것 같은데 stream1 이 NULL 인지 체크 (즉, 파일이 잘 읽혔는지 체크)할 때는 파일을 먼저 읽어온 뒤에 체크를 해야 하겠죠. 그래서 다음과 같이 되어야 합니다.

 stream1 = fopen("information.txt", "r");
 if (stream1 == NULL)
 {
  printf("파일열기 에러n"); // 보너스로 이쁘게 하기 위해 n 을 이용하여 띄어 쓰기 'ㅡ'/
  main();
 }

마지막으로는 파일을 특정 포멧으로 읽을 때는 fscanf 를 사용해서 읽고 쓸 때는 fprintf 로 사용해야 하기 때문에 여기서는 fscanf 를 이용해서 읽어 주셔야 해요. 또한, 파일의 정보는 stream1 이라는 변수가 가지고 있기 때문에 stdout 이 아닌 stream1 로 넣어 주시면 됩니다.

 for (a = 0;a<2; a++)
 {
  fscanf(stream1, "%s %s %sn", info[a].name, info[a].writer, info[a].no); // 이 부분이 파일에서 읽는 부분 하지만 출력은 하지 않아요
  printf("%s %s %sn", info[a].name, info[a].writer, info[a].no); // 여기서 읽은 데이터를 출력합니다.
 }
525 2016-05-18 22:14:43 0
파일 입출력 질문입니다. [새창]
2016/05/18 21:26:15
먼저 main 함수에서 숫자를 입력하는 부분인

scanf("%d", &b);

이 부분을 보시면 숫자 입력 하는것 까진 좋은데 실제론 엔터 까지 같이 들어 갑니다.

예를들어 1 을 입력하고 엔터를 누르시면 b 에는 1이 들어 가지만 엔터는 stdin 에 남게 되어 다음 scanf 에 영향을 주게 되요.

이 때 해결할 수 있는 방법이 여러가지가 있는데 몇가지 말씀 드리면

1. scanf 뒤에 fflush 를 사용해서 버퍼를 비운다.

scanf("%d", &b);
fflush(stdin);

2. 엔터를 scanf 에서 먹는다.

scanf("%d%*c", &d);

아마 %c 는 아실거에요 문자를 하나 입력받는건데 %*c 를 하게 되면 문자 하나를 무시 하라는 뜻이에요. 그래서 아까 엔터가 남는 문제는 %*c 얘가 해결해줘서 뒤에 scanf 에 영향을 주지 않게 됩니다.
524 2016-05-18 22:11:36 0
파일 입출력 질문입니다. [새창]
2016/05/18 21:26:15
하나씩 수정해볼까요 'ㅡ')/
523 2016-05-18 22:11:15 0
파일 입출력 질문입니다. [새창]
2016/05/18 21:26:15
코드에 수정할게 많아 보여요... (속닥속닥)

지난번에 작성하셨던 글을 보니 댓글에 대한 내용이 반영이 안되신것 같아요...
522 2016-05-18 19:19:10 0
유지보수를 포기하게 만드는 좀비 코드 [새창]
2016/05/18 09:01:37
히이이익....
521 2016-05-18 19:13:46 1
빅데이터를 이용한 이미지 제공 사이트 만들기! [새창]
2016/05/18 18:48:48
참여 했습니다. 재미있는거 구상중이시군요 +_+

여러가지로 많은 일 들이 필요할것 같은데 자주 질문글 올려주세요 ㅎㅎ :)
520 2016-05-18 18:12:36 0
밑에 웹에서 그래프 그리기 관련해서 글 남깁니다. [새창]
2016/05/18 16:58:05
저 역시 같은 고민을 하고 계신분을 만나뵙게 되어 반갑습니다. ㅠㅠ;;

이와 관련되어 재미있는 이슈들이나 진행하면서 재미있는 것들 생기면 또 글 올리도록 하겠습니다. :)
519 2016-05-18 17:46:26 0
밑에 웹에서 그래프 그리기 관련해서 글 남깁니다. [새창]
2016/05/18 16:58:05
렌더링 시 여러 가지 측면에서 최적화를 할 수 있긴 한데 근본적으로 그래프를 구성하는 노드와 엣지의의 복잡도에 따라 속도가 결정되기 때문에 한계가 존재하긴 합니다. 몇 가지 아이디어로는

1. 서버에서 그래프를 구성한뒤 그림 파일로 떨어 뜨리고 이를 제공
- 큰 데이터의 경우 이 부분이 가장 현실적이긴 합니다만, 이럴 경우 노드와 엣지 오브젝트와 인터렉션을 할 수 없다는 단점이 있습니다.

2. 그래프를 그릴려고 하는 문제를 축소
- 그릴려고 하는 그래프가 전부 필요한건지 혹은 그 안의 서브 그래프만 필요한 것인지 판단하여 전체 그래프가 아닌 reasonable 한 수준의 의미 있는 그래프를 추출하여 보여줄 수 있습니다. 이 부분은 해당 문제에 의존적이기 때문에 그렇게 될 수도 있고 아닐 수도 있긴 합니다만 중요한 것은 그래프를 그리기 전에 그 문제에 대해 최대한 이해 하는것이 최적화에 도움이 됩니다.

3. 한번에 그리는 것이 아닌 나눠서 업데이트
- 이 부분도 조삼모사 이긴 한데 전체 그래프를 한번에 그리는 것이 아니라 n 으로 쪼개서 1/n 씩 업데이트 하는 방식도 생각해볼 수 있습니다.

보통 노드가 1000개가 넘어 가면 웹에서 렌더링 하는데 조금씩 문제가 생기며 일반적으로 생각해도 거의 대부분의 문제가 이 보다 많을거라 생각이 됩니다. Visualization 에서 중요한건 시각으로 사람의 인지 힘을 이용하여 정보를 얻는 것인데 생각을 해보면 엄청나게 디테일하고 많은 양의 데이터를 뿌려줘도 사람이 그 것에 대해 인지를 잘 하지 못하면 의미가 많이 줄어 들게 됩니다. 그런 까닭에 만약 이와 같은 문제가 발생되면 2번의 방식으로 문제를 해결하는 것을 추천합니다.

저도 현재 노드의 raw data 만 억 단위가 되고 프로퍼티 벡터들에 의해 엣지 데이터는 노드의 제곱, 세제곱 식으로 복잡도가 증가 하고 있습니다. 만약 큰 그림을 보여주고 싶다면 클러스터들의 샘플들을 뽑아 보여주는 방식으로 하고 클러스터의 디테일한 정보를 보고 싶다면 해당 클러스만 보여주는 방식으로 제공을 하고 있습니다.

제가 테스트 했을 때는 큰 데이터를 socket io 나 jquery 로 땡겨 받아 클라이언트 힙쪽에 할당하는 것 까지는 크게 문제가 없었는데 (물론 데이터가 커지면 nodes, edges 사이즈에 따라 문제가 생길 수 있고 동적으로 커지거나 작아지거나 하면 더욱 문제가 생기긴 합니다) 마지막 그래프 그리는new vis.Network(...) 에서 굉장히 오래 걸리더라구요.
518 2016-05-18 16:59:01 0
[질문] 웹에서 그래프 확인 (R Programming 관련) [새창]
2016/05/16 17:58:06
http://www.todayhumor.co.kr/board/view.php?table=programmer&no=17268&s_no=17268&page=1

답글 남겼습니다. :)
517 2016-05-16 18:58:15 0
[질문] 웹에서 그래프 확인 (R Programming 관련) [새창]
2016/05/16 17:58:06
차트가 아니라 그래프를 그리기 위함이시면 그래프 디비 이용해보셔도 좋을것 같아요. 좀 삽질 하실 여유가 되신다면 neo4j 추천 합니다.

혹은 그냥 json 같은 데이터로 웹에서 렌더링만 하고싶으시면 제가 내일 간단히 그래프 만들수 있는 샘플 소스 올려드릴게요 :)
516 2016-05-16 13:16:34 2
자전거 극한도전 [새창]
2016/05/15 22:15:17
윗분 말씀처럼 댓글 보니깐 심장 마비로 돌아 가셧다고 하네요... RIP
515 2016-05-07 03:39:41 15
프로그래머 유머 [새창]
2016/05/06 22:30:08
네??
514 2016-04-17 23:11:01 0
wireless 공부하는 분 있습니까?? [새창]
2016/04/17 20:02:10
무선에서 공격자들이 일반 사용자를 끌어들일려고 가짜 SSID 를 많이 생성하는 공격들이 있는데 (Evil Twin, Fake AP) 이 내용으로 몇년전에 IEEE 컨퍼런스에 퍼블리쉬 한 경험이 있습니다 ㅎㅎ 'ㅡ' 오랜만에 찾아 보니 레퍼런스가 10개 되어 있네요..... 신경 안써줘도 무럭 무럭 자라는 논문 ㅎㅎ~_~;;
513 2016-04-17 23:07:36 0
wireless 공부하는 분 있습니까?? [새창]
2016/04/17 20:02:10
네, 생각하시는데로 생성해서 채널 호핑 하면서 뿌리면 전 채널에 생각하시는데로 SSID 들이 생깁니다 'ㅡ'
< 이전페이지 다음페이지 >
< 11 12 13 14 15 >
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호