[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문 적는 문제가 나와서 좀 멘붕 했었던 것 같네요 정보가 없는 것 같아 따로 글을 남깁니다~~ 추가로 읽으면 좋을 것

[학습 - 데이터베이스] 개념

이미지
데이터 베이스 정의 : 한 조직에서 업무 처리를 위해 다수의 응용 시스템 혹은 다수의 사용자들이 공용으로 사용하기 위해 통합, 저장된 운영데이터의 집합 특징 통합된 데이터(Integrated Data)  하나의 주제에 따라 중복을 최소화한 데이터 집합 저장된 데이터(Stored Data)      사용자나 응용 시스템이 필요시 언제든지 이용가능한 데이터 집합 공용 데이터(Shared Data)        여러 사용자와 다수의 응용 시스템이 공유할 수 있도록  만든 데이터 집합 운영 데이터(Operational Data)  중복 최소, 여러 사람이 공유함에 있어, 문제 발생하지 않도록 관리를 필요로 하는 데이터, 이용가치 있는 데이터 집합 데이터베이스 특징 계속적인 변화(Continuous Evolution)   항상 최신 정보 유지 위해 삽입, 삭제 갱신 동시 공유(Concurrent Sharing)            여러 사용자 동시 접근 이용 실시간 접근성(Real-Time Accessibility)  질의(Query)에 대해 실시간 처리 및 응답 내용에 의한 참조(Contents Reference)   데이터 물리적 주소나 위치에 의하지 않고 요구하는 데이터 내용으로 검색 구성 요소 1) 개체(Entity) - 사람이 생각하는 개념, 정보단위와 같은 현실세계의 대상체 - 실 세계에 존재하는 유형 혹은 무형 정보의 대상 - 개체는 하나 이상의 속성(정보)로 구성 2) 속성(Attribute) - 개체의 특성 or 상태를 기술 하는 것 - 속성만으로 개체를 구분하기 어려움 3) 관계(Relation) - 두개 이상의 개체 사이 또는 속성간의 상호 연관 - 관계의 종류(사상 대응수) 1 : 1 (일 대 일)...

[취업] 한국정보화진흥원 시험 후기

이미지
한국 정보화 진흥원 (NIA) 시험을 쳤습니다. 시험 친 지는 꽤 되었는지 최근에 바빠서 쓰지 못했네요 시험을 치는데 총 30문제, 시험 시간 1시간이 주어집니다. 객관식 18문제 주관식 12문제 였던 걸로 기억나네요. 문제의 경우 TopCit의 비즈니스 영역에서만 문제가 출제됩니다. Topcit이란 것을 이때 처음 알게 되었네요. IT 최신 동향 + IT 비즈니스 용어 들에 대한 문제가 나옵니다. 뭐 ERP나 개발 방법론 같은 것들인데 잘 기억이 안나네요 ㅠ 만약 한국 정보화진흥원을 준비하실거면 TopCit 비즈니스 영역을 미리 부터 준비하시는게 나을 것 같습니다. 약 340 page 정도 되기 때문에.. 발표나고 준비하면 좀 힘들거 같네요 아 참 장소는 대구 신서혁신도시인가, 대구에서도 좀 멀리 있습니다. 인연은 없었지만 앞으로 도전 하실 분들은 꼭 붙으세요~ 추가로 읽으면 좋을 것

이 블로그의 인기 게시물

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

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

키움 OPEN API MFC 개발 (1)