본문 바로가기

개발100

[파이썬] Creon Plus 를 이용해서 KOSPI200 종목 시세 가져오기 목적: CREON PLUS API를 이용해서 KOSPI200에 소속된 200 종목의 현재가 정보를 가져온다가져온 데이터를 Pandas DataFrame 에 저장하고, 엑셀로도 내 보낸다. 예제를 위해 공부가 필요한(or 필요했던) 항목들CREON PLUS API (증권 시세/주문/계좌 정보 가져오기 위해 필요)판다스(PANDAS), DATAFRAME 개인적으로는 파이썬의 Pandas/DataFrame 을 좀더 공부하고 싶어서 만든 예제입니다 아직 실시간 부분은 처리하지 못했는데 요건 담번에 추가 예정입니다 실시간 시세 받아 업데이트도 됩니다. 엑셀로 저장한 데이터 전체 코드 (실시간은 아직 미 구현 실시간도 구현됨)import sys from PyQt5.QtWidgets import * import wi.. 2017. 10. 15.
[파이썬] 안드로이드 프로젝트에서 자바 클래스 레퍼런스 카운트 구하기 요즘 파이썬으로 공부하면서 그동안 필요했던 기능들을 파이썬으로 구현중인데, 배운 지 얼마 안됐지만 파이썬 언어 자체가 정말 매력적이네요 C++ 과는 비교가 안될 정도로 코딩량도 적고 로직에 집중할 수 있어 좋은 듯. 예제 코드의 목적 안드로이드 프로젝트가 커지면서 사용하지 않는 클래스가 점점 늘어남, 다른 파일에서 호출하지 않는 클래스를 찾기 위해 만듦 1. 모든 파일에서 클래스 이름을 찾아 저장 (한 파일에서 하나의 public class 만 있다고 가정) 2. 다시 모든 파일을 단어 단위로 읽어 '1' 에서 저장한 클래스 이름이 있으면 ref count 를 증가 시킴. (단, 클래스가 선언된 파일은 ref count 에서 제외 3. 참조하는 파일 리스트도 저장 4. csv 로 저장할 수 있도록 ','.. 2017. 10. 14.
[파이썬] 폴더 명 일괄 변경 예제 예전에 찍은 사진 중 폴더의 날짜 표기를 변경할 대상들이 많아 일괄 변경하기 위해 만든 코드 (주의: 코드 참고용으로 작성하여 범용적이지 않음) 목적: 주어진 폴더 내에서 폴더 이름의 일자표기가 20031025__**** 인 폴더를 찾아 2003-10-25_**** 로 일괄 변경 코드 import os # 20031025_삼천포대교앞 --> 2003-10-25_삼천포대교앞과 폴더 이름 변경 path = "H:\\5. 사진\\" for fname in os.listdir(path) : fullpath = path + fname if os.path.isdir(fullpath) == False: continue if len(fname) < 8 : continue fpre = fname[:8] fpost = f.. 2017. 10. 11.
[파이썬] 주어진 폴더 파일/크기 비교 예제 사진과 동영상을 백업받을 새로운 하드를 장만하면서 약 10만개가 넘는 사진을 두 하드에 복사하다가, 필요해서 만든 간단한 폴더 비교 샘플입니다 (주의: 파일 자체의 내용까지 비교 해주는 좋은 사용 툴이 있지만, 바이너리 파일 비교는 너무 오래 걸려 파이썬 공부 목적으로 만든 참고용 예제임) 목적: 주어진 폴더 2개를 비교 동일한 파일(파일 이름과 크기만 비교), 한쪽에만 있는 파일, 오른쪽에만 있는 파일 리스트를 구한다 프로그램 코드 import os # 주어진 folder 2개를 look up 한 후 # 파일 이름/사이즈까지 비교 path1 = "H:\\5. 사진\\" path2 = "G:\\5. 사진\\" # key: full path value: filename, folder/file, file s.. 2017. 10. 11.
파이썬 기본 - 리스트/딕셔너리/튜플/set 기본 사용법 파이썬 문법은 C++ 과 상당히 유사합니다 특히 파이썬의 리스트와 딕셔너리는 STL 의 vector 와 map 을 상당히 많이 닮아 C++ 에 익숙하다면 익히는 데 별 어려움이 없이 적응이 가능해서 좋습니다 아래는 간단한 리스트와 딕셔너리에 대한 샘플 코드입니다 리스트는 [], 딕셔너리는 {}, 튜플은 () 로 선언한다는 것도 유의! (자세한 설명은 생략합니다 ^^) 1. 리스트 # list 테스트 def listTest(): # 초기화 codeList = ["A003540", "A005930","A066570"] size = len(codeList) print("list ->", codeList) # 추가 codeList.append("A000660") size = len(codeList) print(.. 2017. 9. 26.
파이썬 개발 환경 구축 하기 파이썬 개발 환경 구축 관련 간단하게 정리~ 아나콘다 설치 설치 주소: https://www.anaconda.com/download/ 32 비트 또는 64 비트 (증권사 API 개발한다면 32 비트 필요) 설치 위치는 기본 user/~ 밑에 설치 되는데, 개발 툴을 특정 위치에 설치를 선호한다면 다운로드 패스를 지정한다 (물론 이처럼 설정 할 경우 추후 SDK PATH 지정시 변경이 필요) 파이썬용 IDE 설치PyCharm 설치 주소: https://www.jetbrains.com/pycharm/download/Community Free 버전 선택 원하는 테마 선택(Visual Studio 가 편하다면 키보드 설정을 VS 로)아나콘다 패스 지정해 주기(아나콘다를 다른 폴더에 선택 한 경우) PYQT5 설.. 2017. 9. 25.
[안드로이드 개발팁]린트 경고를 사용하기 안드로이드 개발 프로젝트가 커지면 역시나 소스를 최적화하고 문제를 좀 더 쉽게 찾는 도구들이 많이 필요 하다 특히 안드로이드의 경우 화면 레이아웃을 XML로 코딩 하는데 하나의 UI 를 표시하는 방식이 개발자의 숙련도와 능력에 따라 천차만별. 그 만큼 잘못 구현해서 성능을 저하시키거나 오류를 내포할 위험도 크다. 아무래도 하나의 XML 로 다양한 화면을 모두 지원하려면 꼼수(?)나 노하우 또는 성능 저하를 가져오는 weight 속성을 많이 사용해야 할 수 있다. 린트 경고(Lint Warning) 를 사용하면 정말 이렇게 많은 문제를 우리 프로젝트가 가지고 있나 싶을 정도로 많은 경고가 나온다. Lint 가 알려주는 경고가 너무 많기 때문에 옵션에서 원하지 않는 항목은 제거 하는 것이 정신 건강에 이롭다.. 2013. 5. 14.
기념일 챙기기 프로그램 – 마이플래너 개선 매년 새해가 다가오면 새로 받은 달력에 올 한해 생일이나, 각종 기념일을 적기 위해 이전에 소개했던 이 프로그램을 실행합니다. 기념일을 잊지 말자 - 마이플래너 0.1a 올해도 이 프로그램을 실행하고 받아 적다 보니, 기본 달력 표시항목에 음력 생일들이 같이 표시되면 좋을 거 같아 간단하게 프로그램을 수정하고 배포합니다. (다행히 소스를 버리진 않았네요 :-D ) 프로그램 기본 사용법은 이전과 동일하고 위 그림처럼 음력 기념일일 경우 (음 11/30) 과 같이 음력 날짜를 표기하도록 했습니다. 모쪼록 한 분이라도 잘 사용하시길 바랍니다. 프로그램 다운로드: 2013년 새해 복 많이 받으세요~ 자세한 사용방법은 이전 글을 첨부 했습니다. 간단한 사용방법 사용방법은 간단합니다. 프로그램을 처음 실행하면 그림.. 2013. 1. 2.
안드로이드 개발툴 설치 PC 를 포맷할 일이 자주 생겨서 그런지, 안드로이드 개발툴 설치 할 일이 빈번하다. 최근에는 그나마 몇가지 과정이 자동화 되어서 편해졌는데, 아직도 설치 과정이 손에 익지 않아 책보고 찾느라 고생. 이 번 기회에 한번 정리 하기로 맘 먹었다. JDK 설치하기 설치 URL: http://www.oracle.com/technetwork/java/index.html SE 선택 – Java SE 선택 최신버전 JDK 선택 윈도우 32 비트 또는 64비트 선택 다운로드 & 설치 - 예전에는 "C:\program files" 같이 설치 폴더에 공백이 있으면 제대로 작동하지 않는 등 이상한 문제가 많았는데 요즘은 버그가 고쳐져서 별 걱정 없이 디폴트 폴더에 설치 이클립스( Eclipse) 설치 설치 URL: htt.. 2012. 8. 28.
Java 의 enum 작년부터 안드로이드 공부를 하면서 조금씩 자바(java) 를 익혀가고 있다. C++ 이랑 비슷하면서도 참 많이 다른 게 자바인데 그 중에 특히 enum 은 그동안 C++ 에서 불편해 하던 것이 다 구현도 있어서 참 편하다 예전에 C++ 관련 쓴 글은 아래 링크 참조 [C/C++] enum, 보다 나은 enum 기본적인 enum 선언이나 사용법은 자바나 C++ 이나 비슷하다 public enum Fruit { Banana, Apple, Lemon, Tomato, Melon; } 간단한 과일을 enum 으로 선언했는데, 각 enum 에 어떻게 값이 들어 가는 지는 아래 테스트 코드로 확인 가능 // 간단한enum 확인용테스트코드 for (Fruit f : Fruit.values()) { Log.d("log".. 2012. 8. 1.
티스토리 블로그 댓글 알리미 티라이브 버전 0.5 안녕하세요 사진찍는 프로그래머입니다 :-) 2011년 새해 들어 처음 쓰는 포스트네요. 올해는 새해 시작부터 눈코 뜰새 없이 바쁜 나날의 연속이라 블로그에 소홀(?) 했습니다. 그래서 ^^; 제 블로그를 찾아 주시는 분들이 많이 사랑해 주시는 티라이브 프로그램을 조금 업그레이드 해서 블로그에 좀 더 활력을 불어 넣어 보려고 아주 오랜만에 티라이브 프로그램을 업그레이드 했습니다. 개발에 늘 쫓기는 터라, 그리 많은 개선은 아니구요. ^^; 티브라이브 개선된 내용은 다음과 같습니다. 기존에는 티라이브에서 댓글을 클릭하면, 별로 웹 브라우저가 실행되었습니다. 그래서 댓글을 달려면 다시 어드민으로 로그인 해야 하는 작은 불편이 있었습니다. 이에 대해, 어드민 페이지로 전환 없이 바로 댓글을 달 수 있게 해 달라.. 2011. 1. 11.
개발자와 관리자 요즘은 거의 개발을 하지 않다 보니 저도 한 때 개발자였던 때가 있나 싶기도 합니다. 요 며칠 전에는 어쩔 수 없이 하루 종일 코딩(이라기 보다는 copy & paste) 을 할 일이 있었는데 그 동안 관리자로서 해 오던 방식과 코딩을 해야 하는 개발자의 업무 방식이 정말 하늘과 땅만큼 차이가 난다는 점을 새삼 깨달았습니다. 물론 책으로도 수십 번 읽어 왔고 경험상 그러하다는 걸 모르는 바가 아니었지만. 그날 코딩 했던 내용은, 복잡한 알고리듬을 고안해야 하는 일도 아니었고, 노가다성 작업으로 수백만 라인의 코드를 뒤져서 A --> B 식으로 고치는 수십가지 묶음 작업들을 진행하고, 컴파일 해 보고, 오류가 있으면 확인하고 방향을 바꾸고, 문서를 만들어 다른 개발자에게 전파하는 일이 다였는데요. 컴파일 .. 2010. 12. 16.
현업과 개발자의 소통 해결하기 전산실에 근무하다 보면, 전산화가 필요한 업무를 요청하는 부서와 - 주로 저희는 현업이라고 부르는 - 전산실은 뗄래야 뗄 수 없는 상호 의존 적인 관계를 지속합니다. 특히 전산을 구현하는 부서는 몇 개 부서에 한정되어 있지만, 업무 전산화가 필요한 부서는 상당히 많기 때문에, 전산쟁이로서는 항상 많은 현업들로부터 요구 사항을 듣고 개발해야 하는 부담이 있는데요. 이런 개발을 진행할 때 자주 문제가 되는 것이, 현업이 구상했던 내용과 개발자가 실제 구현한 결과가 서로 달라 개발이 거의 테스트 단계에 와서야 "이거 내가 생각한 게 아니네" 하고 깨닫는 경우가 많습니다. 그렇다면, 왜 이런 문제가 생기는 걸까요. 제가 생각하는 이러한 소통 방식의 문제 원인은 현업과 개발자가 서로 주고 받는 언어가 틀리기 때문.. 2010. 10. 19.
어플리케이션과 웹의 조화 어플리케이션 시대가 가고 웹의 시대가 온 지 꽤 됐습니다. 상당수 윈도우 프로그램들이 웹으로 대체되었고 이제 남은 건 일부 메신저 프로그램과 게임 프로그램, 그리고 제가 개발 중이기도 한 증권사 HTS 정도가 고작 어플리케이션 영역에서 살아 남았을 뿐입니다. 향후 HTML5 가 적용되면 그동안 거의 대부분의 클라이언트 PC 에 설치되어 있어 디팩토스탠다드였던 플래쉬나, 이제 겨우 새싹을 틀려고 하는 실버라이트도 앞날이 보장 할 수 없다고 하니 새삼 웹의 무한한 발전 가능성에 놀라게 됩니다. 웹의 확장은 참으로 끝이 없습니다. 그런데, 아직 웹의 이러한 무한 증식에도 꿋꿋하게 버티고 있는 곳이 있습니다. 바로 아이폰과 같은 스마트폰용 모바일 앱들입니다. 상상이 안갈 정도로 많은 18만개 이상이 앱 스토어에.. 2010. 5. 4.
윈도우 배경화면을 자동으로 변경하는 프로그램 - ezWallPaper 0.2 윈도우 배경화면을 자동으로 변경해 주는 ezWallPaper 0.2 입니다. 0.1 버전을 처음 올린 지 벌써 2년이 지났네요 2008/02/21 - [프로그램] - 윈도우 배경화면을 자동으로 변경하는 프로그램 – ezWallPaper 0.1 기능 자체가 워낙 간단하다 보니 만들고 나서 댓글 주신분들의 의견을 들어 간단히 몇 가지 수정만 하고 거의 고친 적이 없는 프로그램이었는데 megami17 님 께서 요청하신 기능 때문에 조금 손을 보게 되어 버전 업 하게 되었습니다. 추가된 기능 설명 배경으로 사용될 사진의 배치 방법을 선택할 수 있습니다. 윈도우의 기본 “바탕 화면 배경 선택” 에 보면 사진 위치를 그림과 같이 5가지로 선택할 수 있습니다. 이 중 “채우기”, “맞춤” 은 윈도우 7 에서만 가능한.. 2010. 2. 4.
응용 프로그램 시작 오류(0xc00000ba) 해결하기 이틀 동안 이 오류 때문에 골머리를 앓아오다가 언제나 그렇듯 간단한 원인을 발견해서 겨우 원상 복귀했습니다. 1. 증상: 특정 프로그램을 실행하면 아래와 같은 오류 메시지 박스가 실행되고 오류 메시지 0xc00000ba 를 리턴하며 프로그램이 비정상적으로 종료 됩니다. Dependency 나 WinDbg 등으로 이래 저래 초기 로딩 시 올라 오지 못하는 DLL 이 어떤건지 알아 보기 위해 이것 저것 살펴 봤지만 문제 해결이 되질 않더군요 2. 원인 찾아낸 원인은 좀 허무했습니다. 이틀 전에 프로그램 Crash Dump 를 확인하기 위해 이 PC 에서 수백 개 Dump 를 확인했는데, 그 후부터 이런 문제가 발생했습니다. 관련 문제를 처음 조사했을 때 구글신이 가르켜 준 아래 링크가 정답이었는데 DevEn.. 2010. 2. 2.
티스토리 블로그 댓글 알리미 티라이브 버전 0.4 새 버전이 나왔습니다. 아래 페이지에서 업데이트 바랍니다 2011/01/11 - [프로그램] - 티스토리 블로그 댓글 알리미 티라이브 버전 0.5 티스토리 댓글 알리미 업데이트 소식입니다. 몇 가지 문제가 되었던 부분과 개인적으로 불편했던 것들, 제안 해 주신 내용 일부 반영해서 수정하게 되었습니다. 수정된 전체 내용은 다음과 같습니다. 처음 시작할 때 살짝 깜빡임 제거 - 느끼시는 분도 몇 분 계신데 이전 버전까지 처음 실행 시 잠깐 깜빡이는 현상이 있었습니다. 요번에 없어졌습니다. 유니코드로 프로젝트 변환 - 제가 영문 윈도우 7을 사용하다 보니 유니코드로 만들지 않은 티라이브 한글이 사정없이 깨지더군요 --;; 이번 기회에 유니코드로 물갈이 했습니다. 소리 알림 개선 - 동일한 알림에 대해 소리가 .. 2009. 6. 2.
티스토리 블로그 댓글 알리미 티라이브 버전 0.3.2 새 버전이 나왔습니다. 아래 페이지에서 업데이트 바랍니다 2011/01/11 - [프로그램] - 티스토리 블로그 댓글 알리미 티라이브 버전 0.5 티스토리 블로그에 올라오는 댓글 상황을 웹 브라우저 없이 간편하게 조회할 수 있는 댓글 알리미 티라이브 버전 0.3.2 소식입니다. 최근 댓글 알리미 부활 다른 블로그에 남긴 댓글에 다시 댓글이 달릴 경우 알려주는 최근 댓글 알리미가 드디어~!! 다시 작동합니다. 여태 왜 안 나왔냐고요?. 티스토리 관리자에 들어 가 보시면 아래 최근 댓글 알리미 부분만 약 1-2초 정도 후에 업데이트 되는 걸 알 수 있습니다. 뭔가 추가적으로 더 요청한 다음 데이터를 가져오나 본데, 제가 이걸 기다리지 못하고 바로 정보를 표시했더니 댓글 알리미 내용을 표시 못했던 거더군요. .. 2009. 4. 28.
티스토리 블로그 댓글 알리미 티라이브 패치 - 버전 0.3.1 새 버전이 나왔습니다. 아래 페이지에서 업데이트 바랍니다 2011/01/11 - [프로그램] - 티스토리 블로그 댓글 알리미 티라이브 버전 0.5 티스토리 댓글 알리미 TLive 긴급 패치입니다. 얼마 전부터 티스토리 관리자 페이지에서 댓글 알림(타블로그에 적은 글에 대한 댓글 알림 기능) 가져오는 방식이 변경 된 것으로 보입니다. 그래서 이전에는 일반 텍스트로 가져올 수 있었던 댓글 알림 내용이 정상적으로 가져오지 못해 TLive 가 오작동하는 문제가 생겼습니다. 일단 제대로 된 패치는 당분간 힘들 것으로 보여서, 문제에 대해 우회할 수 있도록 조금 수정을 했습니다. 수정을 하긴 했으나, 타 블로그에 내가 적은 글에 대한 댓글 알리미는 조회가 불안정하거나, 조회 자체가 안될 수 있습니다. 이 부분은 좀.. 2009. 1. 2.
[C/C++]자주 하는 실수 프로그램을 하다 스스로 자주 실수하게 되는 코딩 스타일이 있습니다. 얼마전에 제가 자주 겪는 함정에 빠졌는데요. 관련 코드를 축약하면 아래와 같습니다. CMyClass* pMy = NULL; // 클래스 생성을 함수를 통해 대행 CreateMyClass(pMy); // 아래 함수 호출하면 Crash!! pMy->DoSomeghing(); // 잘못 만들어 진 함수 void CreateMyClass(CMyClass* pMy);) { pMy = new CMyClass; ASSERT(pMy); } CreateMyClass() 라는 함수를 통해 CMyClass 의 생성을 대행하는 것이 목적이었는데, 주석으로 보이는 것과 같이 프로그램이 쉽게 죽어버렸습니다. 이상하게, 포인터를 가지고 작업하다 보면 이와 같은 실.. 2008. 10. 22.