[안드로이드] 기상청 중기예보 [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 정도 되기 때문에.. 발표나고 준비하면 좀 힘들거 같네요 아 참 장소는 대구 신서혁신도시인가, 대구에서도 좀 멀리 있습니다. 인연은 없었지만 앞으로 도전 하실 분들은 꼭 붙으세요~ 추가로 읽으면 좋을 것

[안드로이드] TranslateAnimation 과 AnimationSet을 이용한 연속 움직임

App을 새로 하나 만들고 있는데, 버튼을 손으로 움직인 것을 토대로 다른 버튼을 누르면 움직인 경로를 따라 움직이는 걸 만들고 있다. Skip Frame 때문에 이걸 애니메이션으로 바꾸는게 나을거 같아 찾아보던 중 AnimationSet과 TranslateAnimation에 대해 알게되었다. AnimationSet은 그냥 Animation 의 ArrayList쯤 되는 것 같다. 자세히는 안찾아 봤지만.... 연속된 움직임을 구현하려면 setStartOffset을 토대로 구현하였다. setStartOffset은 시작시간을 밀리세컨드 단위로 미루는 것을 설정한다 setDuration함수의 경우 밀리세컨드 단위로 움직이는 것을 뜻하는데, 그 시간 이후에 다음것을 실행한다면 도미노가 쓰러지듯 차례로 애니메이션 효과가 나올것이라 예측했고, 그렇게 나왔당 결과화면이다. 다음은 소스코드입니다. xml은 버튼하나만 지정을 해놔서, 따로 올리진 않겠습니다. public class MainActivity extends AppCompatActivity { Button btn_Test; AnimationSet animationSet; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn_Test = (Button)findViewById(R.id.btn_Test); animationSet = new AnimationSet(true); animationSet.setFillAfter(true); MoveCheck(); } void MoveCheck(...

[배우] 곽동연에 대해 알아보자

이미지
--- ### 1. 곽동연의 일생과 연기 경력 배우 **곽동연**은 1997년 3월 19일 대한민국 대전에서 태어났습니다. 어린 시절부터 예술에 관심을 가졌고, 중학생 시절 서울로 올라와 본격적으로 배우의 길을 걷기 시작했습니다. 곽동연은 2012년 KBS 드라마 *'넝쿨째 굴러온 당신'*에서 데뷔하며 대중에게 얼굴을 알렸습니다. 당시 그는 천재 음악 소년 ‘방장군’ 역을 맡아 첫 출연임에도 불구하고 탁월한 연기력을 인정받아 그해 **KBS 연기대상 청소년 연기상**을 수상하며 주목받기 시작했습니다. 이후 다수의 드라마와 영화, 연극에서 다양한 캐릭터를 소화하며 독보적인 연기 스펙트럼을 쌓아왔습니다. --- ### 2. 주요 연기작 곽동연은 주로 드라마를 통해 대중에게 사랑받으며 연기자로서의 역량을 넓혀왔습니다. #### 🎬 **영화** | **개봉 연도** | **제목** | **배역** | **비고** | |---------------|-----------------|------------|---------------------| | 2017년 | 여교사 | 유종기 | 특별출연 | | 2017년 | 대장 김창수 | 최윤석 | 조연 | | 2018년 | 흥부 | 쇠똥이 | | | 2019년 | 야구소녀 | 이정호 | | | 2022년 | 육사오(6/45) | 김만철 | 주연 | | 2024년 | 대도시의 사랑법 | 준수 | 특별출연 | #### 📺 **드라마** | **방영 연도** | **제목** |...

[안드로이드] 공공데이터 기차역 정보 조회 서비스 API 사용 [3]

이미지
이번에 포스팅 할 내용은, [1]에서 열차정보와 코드를 구성했던 .txt 파일을 Android에 올리고, ListView로 구성 및 'ㄱㄴㄷ'순으로 정렬 및 EditText이용한 초성검색 입니다. [2]에서 구성하였던 화면, [출발역 설정] 버튼과 [도착역 설정]버튼이 눌러졌을시 등장하는 Activity입니다 이를 구성하기 위해, Manifest 수정을 해 둘 필요성이 있습니다. < activity android :name= ".StationListActivity" /> 화면 전환 할 Activity 클래스를 추가해 주셔야 합니다. 함수 별로 나눠서 설명하겠습니다. 이것을 테스트 하려면, 아마 모바일 기기를 사용하셔야 될 것입니다. AVD로는 안해봣지만, 안 될것 같긴 한데 잘은 모르겠네요 ㅎㅎ... 일단 준비사항으로는, 프로젝트에 들어가셔서 app -> src -> assets 폴더안에 InfoTrainStation.txt 파일과 InfoTrainStationCode.txt 를 만들어 주셔야 합니다. text파일 정보는 [1] 에 포스팅 해두었습니다. assets 폴더가 없으시면 생성하시면 됩니다. StationInfo.java public class StationInfo implements Serializable{ String st_station; String st_stationCode; public StationInfo(String st_station, String st_stationCode) { this.st_station = st_station; this.st_stationCode = st_stationCode; } } 코드와 역을 저장할 Class StationListAct...

이 블로그의 인기 게시물

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

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

키움 OPEN API MFC 개발 (1)