2016의 게시물 표시

[네트워크/Unix] 소켓 통신 개념

이미지
Unix 소켓 통신의 개념을 함수 별로 정리해보려 합니다. --- 1. Application에서 Socket 함수 호출 시, Kernel을 통해 Socket 기술자가 생성됩니다. --- 2. Bind, IP 혹은 Port정보를 통해, 소켓 기술자와 Application을 연결합니다. --- 3. 이후 Listen을 호출하면 해당 소켓에 대한 Back log Queue, 연결 대기 큐가 생기게 됩니다. --- 4. Client 연결 요청에 따라, Backlog Queue 에 쌓이게 됩니다. --- 5.  이후 Backlog Queue에 쌓인 Client를 FIFO 로 가져오게됩니다. 여기까지가 unix 함수를 통해 알아본 소켓 내부 동작과정입니다. 아마 거의 모든 소켓프로그래밍이 이 과정을 거치리라 생각합니다. 추가로 읽으면 좋을 것

[Unix/Linux] Thread Pool 구현 [1]

이미지
Thread Pool을 만들 일이 있어 포스팅 합니다. 일단 Event Driven 형식으로 Epoll Event가 오면, 작업을 시작하는데, Non-Block을 하려하지만 큰 파일 전송 상황을 가정하여 ThreadPool로 구현합니다. 구현을 위해서, thread 작업 클래스가 필요하며, 작업이 끝남을 알기위해, flag를 넣었습니다. 일단 기초 작업이며, 이것을 base로 작업하시면 요긴하실 것 같습니다.  우선적으로 threadPool로 사용할 클래스입니다.  작업 시 필요한 것을 class화 시키고, flag 또한 dataClass에 넣습니다. 작업이 끝남을 확인하기 위한 ch_flag Test입니다. StartService 시, false -> true로 바꾸고 do_work(thread 작업) 시 true -> false로 재변환 합니다. 그리고 endService() 에서 종료를 검사합니다. 다음은 실행 시 결과입니다. 이를 바탕으로 thread pool을 구현하겠습니다. 추가로 읽으면 좋을 것

[일상] 남산타워 여행기

이미지
10.02 (일) 개천절 기념으로 남산을 다녀왔습니다. 정자역에서 출발했는데, 1시간 넘게 걸리더군요... 갓다오니 녹초 서울 야경을 찍었습니다. 탁 트인 모습이 굉장히 좋더군요 비록 비는 왔지만... 안에 들어 갈 수 있는 건물입니다. 여기서 최상층 까지 갈수 있는데 비용은 만원정도 하더군요 (성인 기준) 입구 들어가는길 보이는 화면입니다 ㅎㅎ 되게 예쁘더군요  저도 여자친구가 생기면....ㅜ 자물쇠가 되게 많았습니다. 또한 다양한 국적의 사람들이 와서 신기하였죠 ㅎㅎ 탁 트인 남산. 한번쯤은 와보셔도 좋을 거 같네요 ㅎㅎ 순환번스 타면 금방오는거 같아요 ㅎㅎ

[Linux/Centos] Centos 설치, Putty 연동 하기

이미지
최근에 바빠서.. 따른 일을 준비 하는 바람에, 안드로이드 보다 Linux 관련 게시물을 업로드 하게 되었습니다. 일단 Centos와 Oracle Vitual Box를 설치 합니다. https://www.virtualbox.org/ 여기서 그냥 아무버전이나 받으시면 될 것같네요. 그 다음에 Centos dvd 버전을 다운 받습니다. http://isoredirect.centos.org/centos/6/isos/i386/ i386 버전인데, x86-x64 버전과는 틀립니다. 제 노트북이 OS windows 8.1, 64bix 인데, 버츄얼 박스에서 x86-x64 버전은 설치가 안되더군요. http://isoredirect.centos.org/centos/6/isos/i386/ 아마 다른 분들도 비슷하지 않을까..해서 올려둡니다. 그다음 새로 가상머신을 만듭니다. Linux - [Red-Hat 32bit] 로 설정하면 됩니다. 그 다음 설정에 들어가셔서 컨트롤러 가상 이미지 파일 iso 를 설정 해 준뒤 실행합니다. 그 다음, Putty 통신을 하려면 SSH와 Iptables를 셋팅해주어야 합니다. iptables는 방화벽 설정이고, SSH는    네트워크  상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고  다른 시스템으로 파일을 복사할 수 있도록 해 주는  응용 프로그램  또는 그  프로토콜 을 가리킵니다. su 명령어를 통해 Root 계정으로 만듭니다. yum -y install openssh-server openssh-clients service sshd start 명령어를 통해 활성화 시킵니다. yum install iptables-service ...

[안드로이드] 기상청 중기예보 [1]

이미지
중기예보 측정을 안드로이드 환경에서 진행 중 입니다. 하면 할수록 열받아서 하기 싫긴 하네요.. 문제점을 한번 나열 해보겠습니다. 1. 날씨 정보와 온도정보를 나눈 것 - 같은 날임에도 불구하고 Url 요청을 두번해야합니다. 2. 중기육상예보과 중기육상온도예보의 지역코드가 틀립니다. - 중기 육상은 그렇다 치더라도, 온도의 경우 이해할 수 없는 지역코드 - 해당 도시가 없는 코드는 따로 예외처리를 해주어야함 이렇게 애매하게 할거면 그냥 중기육상예보코드랑 동일하게 가는게 맞다고 생각합니다. 최소 도 단위까지는 구분을 지어야 하는데, 위 코드에 없는 도시는 따로 개발과정에서 예외처리를 일일이 해주어야합니다. 3. 중기예보 코드를 보시면 '강원도 영서' 와 '강원도 영동'에 대한 지역코드 존재 - 문서에는 강원도 영서, 영동을 나누는 기준이 없음 - 최소 위도, 경도의 기준값이라도 제시해 줘야 한다고 생각함 - 그게 아니라도, 어떤 도시들은 영동이고 어떤 도시는 영서인지는 포함되어야 할듯 4. 동네 예보의 경우 자기들만의 위도 경도 변환식을 사용 - 문서에 나와있긴 하지만 '왜 변환을 하지?'라는 생각이 듭니다.. 기상청 API를 사용하면서 느끼는 점은 개발자한테 예외에 대해 다 떠넘기는 거 같아서 불편하네요. 어쨋든 조만간 안드로이드 기반 중기예보에 대해 포스팅 하겠습니다. 추가로 읽으면 좋을 것

[안드로이드/자바] String.replaceAll을 이용한 숫자 추출

이미지
안드로이드에서 숫자만 추출해서 쓸 일이 있어서 따로 적어두려합니다. Java 환경에서는 모두 동작할 듯 싶습니다. public static int AfterDay(String data) { String mData = ""; mData = data.replaceAll("[^0-9]", ""); Log.i(TAG, TAG + " : " + mData); return Integer.valueOf(mData); } replaceAll(string1,string2) 함수를 통해, 값을 얻어냅니다. 원래 replaceAll 은 string1의 조건이 만족하는 string을 string2로 교체하는 역활입니다. replace같은 경우, 처음만 바꾸는 등의 여러 조건이 있지만, replaceAll은 문장 전체에 해당합니다. 위의 replaceAll("[^0-9]","")는 숫자를 제외한 String을 ""로 바꾸어 줍니다. 그리고 Integer.valueOf(String)을 통해 String -> int 형으로 값 변환을 합니다. 두가지 방법이 더 있는데, String clean3 = string1 . replaceAll ( "\\D" , "" ); String clean2 = string2 . replaceAll ( "[^\\d]" , "" ); 를 통해서도 추출이 가능합니다. 정규표현식으로 알고 있는데, 자세히는 모르겠네요, 다음에 포스팅 해야겠습니다.. 위의 그림은 Input 값 wf30을 30으로 바꾸어 추출한 결과입니다. (출처 : http://stackoverflow.com/questions/6...

[안드로이드] 기상청 중기예보 [0]

이미지
기상청 OpenApi를 써서 중기예보에 대해 만들고 있는데, 아니 대체왜 API를 이런식으로 구성 했는지 이해가 안된다. OpenWeather처럼 한 날짜에 정보를 넣을 수 있을 텐데 날씨정보 & 기온 정보를 얻을려면 두번의 api요청을 해야되고, (중기육상조회[ MiddleLandWeatherRequest ]  , 중기기온조회[ getMiddleTemperatureRequest ] 두번) 심지어 10일 치 날씨라고 해놓고 현재부터 3일 뒤의 날씨를 알려준다. (오늘이 13일 이라면, 16일 날씨부터 23일 날씨까지 알려줌) 도대체 왜??? 그럼 다음날,다다음날은? 만들꺼면 제대로 만들었으면 하는 아쉬움만 남는다 중기만 그런게 아니고 동네예보도 문제가 많다. OpenWeather를 많이 쓰는 이유가 있는 것 같다. 추가로 읽으면 좋을 것

[안드로이드] SimpleDataFormat을 이용한 현재날짜, 시간 받아오기

이미지
시간을 따로 받아야 할 경우가 생겨 따로 함수로 구현하였습니다. 이를 통해, 년 월 일 시간 분 으로 쪼개어 사용하는 함수입니다. public ArrayList MakeSaveData() { SimpleDateFormat currentTime = new SimpleDateFormat("yyyy.MM.dd.HH.mm"); //SimpleDateFormat sdfNow = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss"); String time = currentTime.format(new Date(System.currentTimeMillis())); StringTokenizer mToken = new StringTokenizer(time,"."); ArrayList mTemp = new ArrayList<>(); while(mToken.hasMoreTokens()) { mTemp.add(mToken.nextToken()); } Log.i(TAG, "time print: " + time); for(int i = 0; i < mTemp.size(); i++) Log.i(TAG, "time print: " + mTemp.get(i)); return mTemp; } 로그를 통해 결과를 확인 해 보면, 다음과 같은 결과를 얻습니다. 시간의 경우 현재 휴대폰의 시간을 통해 얻습니다. 추가로 읽으면 좋을 것

[알고리즘] 3. 동적 계획법 개념

이미지
동적 계획법 이란, 동적 계획법(Dynamic Programming) ,  줄여서 DP는 특정 범위까지의 값을 구하기 위해서 그것과 다른 범위까지의 값을 이용하여 효율적으로 값을 구하는  알고리즘  설계 기법이다. 조금 장난스럽게 말해서 답을 재활용하는거다. 앞에서 구했던 답을 뒤에서도 이용하는 것으로 볼 수있다. (출처 : 나무위키 - 동적계획법 https://namu.wiki/w/%EB%8F%99%EC%A0%81%20%EA%B3%84%ED%9A%8D%EB%B2%95?from=%EB%8F%99%EC%A0%81%EA%B3%84%ED%9A%8D%EB%B2%95) 이 말처럼 DP, 동적계획법은 완전 탐색에서 중복된 부분 문제를 한번만 계산 하기 위한 메모이제이션( Memoization) 이다. 메모이제이션이란,  같은 계산을 여러 번 해야 할 때, 한 번 계산한 결과를 메모리에 저장해 이후 동일한 계산 과정을 생략할 수 있게 하는 기법이다. (출처 : 나무위키 - 메모이제이션)   https://namu.wiki/w/%EB%A9%94%EB%AA%A8%EC%9D%B4%EC%A0%9C%EC%9D%B4%EC%85%98 ) 보통 동적계획법 알고리즘 구현은, 1. 주어진 문제를 완전 탐색 이용 해결, 2. 중복된 부분 문제를 한 번만 계산하도록 메모이제이션 적용 두가지 방법으로 나뉜다. 이를 토대로 탐색을 통해 이전 값을 참고하는 것을 해 본다면, [취업] 삼성 SW후기 포스팅의 문제를 동적계획법으로 설계 해 보려 한다. 일단 문제는, Player 비행기가 끝까지 도달하였을 때, 코인의 최대값이 문제다 (자세히는 포스팅을 참조...) 보통 완전탐색으로 모든 경우의 수 탐색을 통해 해결할 수 있지만, 크기가 커지면 탐색하는데 시간 초과가 발생한다. 이를 해결하기위해 동적계획법을 쓴다면, ...

[취업] 중소기업 진흥공단 시험 후기

이미지
중소기업 진흥공단에 2016년 5월 28일(토)일에 서울 잠신고등학교로 가서 시험을 치고 왔습니다. 전산의 경우 NCS + 전산 시험까지 두개를 치게됩니다. NCS의 경우 시중의 NCS책과 SSAT 문제 추론? 부분을 주로 보시면 될 것같네요 3과목 정도 나왔는데, 28 22 26? 이런식으로 문제 배분이 되어있습니다. 시험 시간은 자세히 기억이 나지 않네요 틀려도 감점이 되는 부분은 없었습니다. 전산 문제의 경우 다양한 문제가 나왔는데, 문제 유출에 따른 조항이 있어서 자세히 알려드릴 수는 없지만 Java, 네트워크, 소공, 알고리즘, 보안,DB 식으로 나왔습니다. 전산의 경우 총 33문제 이며 주관식이 12문제 정도 있었던 걸로 기억합니다. 주관식 중 DB SQL문 적는 문제가 나와서 좀 멘붕 했었던 것 같네요 정보가 없는 것 같아 따로 글을 남깁니다~~ 추가로 읽으면 좋을 것

이 블로그의 인기 게시물

윤석열 계엄령 선포! 방산주 대폭발? 관련주 투자 전략 완벽 분석

대통령 퇴진운동 관련주: 방송·통신·촛불수혜주 완벽 분석

키움 OPEN API MFC 개발 (1)