일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- tcp
- 큐
- 함수형 프로그래밍
- exception
- 파이썬
- javscript
- 자바
- JDBC
- design-pattern
- lambda calculus
- 프로그래머스
- 디자인패턴
- Eclipse
- functional programming
- 로버트마틴
- 겨울카카오인턴
- Python
- Spring
- 백준
- 스택
- Java
- 람다 칼큘러스
- Collections
- Network
- DesignPattern
- Rails
- Collection
- Pattern
- JavaScript
- solid
- Today
- Total
목록토이프로젝트/클라이언트-서버 폴더 동기화 (12)
개발자 노트
jar파일 실행 명령어를 SynFolder.bat에 작성해두었다. SynFolder.bat이 있는 디렉토리를 환경변수에 추가하여 명령어창에서 SynFolder를 작성하면 실행하도록 하였다.
메모리 문제해결(3)-command 메모리 문제해결(2)에서 echo 3 > /proc/sys/vm/drop_caches 이를 통해 문제를 해결했다. 그런데 http://blog.daum.net/_blog/BlogTypeView.do?blogid=0FcAa&articleno=12415077&categoryId=521567®dt=20151123102530 이곳에서 위처럼 하면 보조기억장치에 저장되지 않은 채 삭제될 수 있기에 sync로 저장 후에 실행해야 한다고 한다. 서버가 수신 중에 위 명령어를 계속해서 실행해보았지만 위 문제는 발생하지 않았다. vsftpd는 메모리에 놓고,바로 저장장치로 저장하나 보다. 그리고 linux 명령어를 이용한 간결한 방법을 알려주었기 때문에 이 방법을 사용하려 한다...
python busy waiting 줄이기 개요 cached memory를 확인하여 삭제해주는 프로그램 만드려 한다. 이를 위해 프로그램이 항시 작동하여 cached memory를 계속 확인해줘야 한다. 이때, 잘못 작성하면 busy waiting이 발생하기 쉬우므로 python에서 프로세스를 어떻게 waitng 상태로 놓는지, 또는 어떻게 깨우는지에 대해 관련 자료를 찾고, 프로그램을 작성하려 한다. 초기에 shell 명령어를 이용하여 프로그램을 작성하려 했으나, 문자열 파싱 부분이 까다로워 python을 이용하기로 했다. 참고자료 1. python busy waiting 설명 출처 : https://blog.miguelgrinberg.com/post/how-to-make-python-wait 참고한 ..
메모리 문제 임시해결 해결 방법 echo 1 > /proc/sys/vm/drop_chaches 를 이용하여 해결했다. 메모리 문제라고 memory management에서 해결한다기 보단 process management에서 해결해준다. memory는 가상메모리 부분과 관련있다고 봐야할 것 같다.(다시 개념공부하자...) 위 문제점 모든 process의 cahed memory를 지운다. 작동 중인 프로세스는 많을텐데 저 하나 때문에 cached memory를 다 지운다면 나머지 프로세스의 속도가 느려질 것이다. 따라서 해당 프로세스의 cached memory만 선택적으로 삭제해야할 것이다. 자동화가 되지 않았다. 내가 매번 확인해서 지울수 없는 노릇이다. 따라서 shell script 언어를 배워서 메모리..
메모리 해결방안에 대한 모색 문제 분석 메모리 사용량을 봤을 때 캐쉬된 메모리가 많아지는걸 확인할 수 있었다. vsftpd가 보낸 파일은 캐싱하여 가지고 있다는 뜻. 메모리 문제이므로 운영체제의 MemoryManagement 부분에 해당할 것이다. 해당 시스템콜을 이용하면 해결될 듯 하다. 또는 vsftpd에서 보낸 파일을 메모리에서 free해주는 코드를 작성해주면 될 것이다. 해당 api가 있거나 오픈소스라면 해결해줄 수 있을 듯 하다. 이것이 바로 C/C++에서 동적할당 이후 free해주는 이유와 비슷할 것 같다. 서버는 항시 작동중인 프로세스이므로 메모리 누수가 조금이라도 발생하면 치명적인 문제와 연결된다. 이제서야 비로소 체감된다. 앞으로 찾아볼 것. 캐시된 메모리 해제하는 리눅스 시스템 콜 찾아..
증상 핸드폰에서 FTP Client 어플을 통해 서버에 데이터를 보내다가 발견했다. 컴퓨터 메모리 사용량을 보니 계속해서 증가하고 있는 것이다. 그러다가 어느정도되니 메모리 초과해서 서버다운. 왜 이럴까... 1. FTP는 TCP 프로토콜을 사용하기 때문에 슬라이딩 윈도우를 적용할것이다. 2. 이미 받았다고 확인 받은 것들, 그리고 슬라이딩 윈도우가 지나간 것을 디스크로 swap out하지 않는가보다. 3. 해당 프로세스가 종료될 때 swap out하는 것이다. 4. http 프로토콜에서 이게 문제되지 않았던 이유가 요청한 자원을 전송 후 바로 연결을 끊기 때문에 메모리 고갈은 발생하지 않던 것이다! 그런데 왜 swap out하지 않고 자기 버퍼에 계속 가지고 있는거야;; 찾아보니 연결상태를 지속하기 위..
배포시 문제 encoding colsole을 통해 입력창을 구현했다. 그놈의 cp949, utf8때문에 한글이 안보인다. java version, jre java version 때문에 실행이 안된다. 최신 버전으로 작성했는데 막상 exe로 변환하는 프로그램을 이용할 때 1.8버전을 지원한다. 13버전으로 만든 jar파일은 java version 1.8 프로그램으로 exe파일을 생성할 시 실행이 안된다. 반대로는 호환이 되겠지만... 그래서 멋쟁이 eclipse로 다시 1.8버전으로 바꾼뒤 jar파일을 생성하여 만들었다. 실행이 됬다. 하지만 아래를 보면 exe파일을 만드는 의미가 거의 없다. exe파일로 만들면 jre가 필요없을 줄 알았다. python에선 필요없었기 때문에 이것도 마찬가지일 줄 알았다...
ver1.0문제점. (소스코드는 아래에 있습니다.) https://github.com/jurogrammer/PROJECT/tree/master/ftp%EB%8F%99%EA%B8%B0%ED%99%94 1.수정한 파일이 삭제된다. 원인 기존에 ftp에 있는 파일 목록이 있는 db가 있다. 그리고 클라이언트의 동기화 폴더를 탐색하며 이전 db목록들을 pop한다. 그리고 남은 것들에 대해서 삭제하는 방식. 그런데 수정한 파일은 hash값이 달라서 해당 파일이 기존 db에서 pop되지 않는다. 따라서 수정한 파일을 전송하고, 해당 데이터가 db에서 없어지지 않아서 삭제메소드 작동시 수정한 파일이 삭제된다. 해결방안 아예 자료구조를 새로 생각해보는 건?? 일단은 잘 작동되는게 목적이므로.. 나중에 리팩토링하자. ..
MainClass 못 찾는 문제 메이븐에서 메인 클래스를 지정해주지 않아서 그렇다. https://boxfoxs.tistory.com/332 이 분이 잘 설명해주셨다. 잘 실행되다가 class 못찾는 문제 proejct -> clean 해볼 것. Maven dependency class 못찾는 문제. maven dependency 설정시 라이브러리의 설치경로는 /user/.m2/repository 실행시 해당 위치에 있는 라이브러리를 참조했던 것이다. 그런데 메이븐 프로젝트로 빌드하면 manifest에 class-path가 설정되어 있지 않다. 그래서 maven dependency에 작성한 라이브러리(jar)를 못찾았던 것. 이를 해결하기 위해 해당 라이브러리를 참조할 수 있도록 설정해주면 된다. 라이브..
FtpSyn하며 알게된 것들 1.폴더삭제는 recursive삭제해야 함. 디렉토리는 파일을 담는 그릇 정도. 파일시스템.! 디렉토리 삭제는 -> 디렉토리 내 파일들을 삭제한다는 것. 그 파일 내에는 또 디렉토리가 있으므로 디렉토리 탐색하며 삭제. 말이 안되지만 디렉토리만 삭제 한다면? 파일에 접근할 수 없다. 파일이 삭제 된다해도 파일 시스템상 삭제된 파일이 기록됨. 이건 운영체제상 삭제관리가 아닌 것. 2.interface 사용 이유 -> 다형성으로 의존성 약화 파일 내용의 수정여부를 판단하기 위해 sha-1을 이용했다. 그런데 나중에 다른 해쉬함수를 이용할 수도 있다. sha-1이 아주 적은 확률로 충돌할수있다나... 그래서 sha-256으로 할 수 있는거 아니야? ->그럼 hashFunction이라..