글

[Daily Poll] 소개와 사용 설명서

이미지
Daily Poll 서비스는? 다음과 같은 투표 서비스가 필요한 분들께 유용합니다. 1. 매일 혹은 매주 같은 내용으로 반복되는 투표를 만들어야 하는 분들 2. 특정 시간부터 선착순으로 투표할 수 있는 시스템이 필요한 분 단, 각 투표의 유효 기간은 해당 날짜는 자정까지 입니다. 바로 테스트를 해보고 싶으신 분은 아래 링크로 접속하세요. 안드로이드 사용자라면 "앱으로 보기" 메뉴를 통해 안드로이드 앱 설치도 바로 가능합니다. https://dailypoll.kr/hello     - 비번은 world 👉 Release Note (클릭하면 열림) v1.3.0 릴리즈 노트 (2026-08-12) - 유료 모델 적용 : Credits 방식 v1.2.0 릴리즈 노트 (2026-07-30) - 채널 관리자 기능 추가 v1.1.0 릴리즈 노트 (2026-07-02) - 채널 양도하기 기능 추가 v1.0.0 릴리즈 노트 (2026-06-28) - Ultimate Edition 추가 - '다른 투표에서 가져오기', '이미지에서 추출(AI)' 프리셋 추가    v0.9.2 릴리즈 노트 (2026-06-16) - 아바타 로직 개선 : 앱 업데이트 없이도 아바타 항목 추가 가능하도록 수정 - 오늘의 투표 항목 강조 표시 추가 v0.9.1 릴리즈 노트 (2026-06-10) - 특별 아바타 카테고리 추가 v0.9.0 릴리즈 노트 (2026-05-22) - 투표 채널의 컬러 테마 변경 기능 추가 v0.8.17 릴리즈 노트 (2026-05-19) - Edition 카드 구입 기능 추가 - 투표 실패 시 예외 처리 추가 - 사소한 UI 이슈 수정 v0.8.16-01 (2026-05-10) - Edition 업그레이드 기능 추가 - 오늘의 투표 정보 업데이트 오류 문제 수정 - 채널참가 버튼 수정 v0.8.15 (2026-04-26) - 투표 날짜 변경 후 토스트 팝업 2번 발생하던 문제 수정 - 앱 정보 페이지 추가 : 버전,...

레노버 IdeaPad Pro 5 16IAH10 ULT9 AI (1TB) - 리눅스 설치

이미지
 요즘 집에 있는 컴퓨터 2대 모두 아이들에게 자리를 뺐겨, 10년이 다 되어 가는 구형 노트북으로 개인 프로젝트를 하다가 도저히 안되겠다 싶어서 노트북을 새로 하나 구입하기로 하였다. 요즘 AI 때문에 RAM 과 SSD 가격이 끝을 모르고 올라가는데, 지금이라도 사야겠다고 결정하고 개발용으로 좀 알아봤다. 일단 난 애플과는 안 친하기 때문에 맥북은 패스. 삼성은... 개발용과 게임용은 안 만들기로 결정한 듯한 라인업들 뿐이었다. 그래서 좀 찾아보다가 CPU 성능이 괜찮고, 내가 하는 업무는 굳이 그래픽 카드가 없어도 되는 적당한 가성비의 모델로 결정. 바로 " 레노버 IdeaPad Pro 5 16IAH10 ULT9 AI (1TB)   " 요 녀석이 되겠다. 같은 모델임에도 가격이 더 싼 게 있어서 봤더니 OS 미포함이었다. 어짜피 개발용으로 사용하려 마음 먹은 터라, 이참에 리눅스 깔아서 설치해야겠다 마음 먹고 구입 완료. 개봉기는 사진도 안 찍었기에 패스. 다만 기본 모델이 1TB 모델은 기본 모델이 아니라서, 봉인지 뜯고 매뉴얼로 작업한 뒤 다시 봉인했다고 새로운 스티커가 붙어있더라. 뭐.. 쿨하게 그냥 넘어감. 오히려 SSD 교체하고 컴퓨터 잘 켜지는 지는 확인했을테니 더 나은거 아닌가 싶기도 하고.. 이제 어떤 리눅스 배포본을 사용할 것인가를 결정할 단계. 내가 익숙하거나 이쁜 거 2개만 고려해서 다음 3가지 종류를 사용해 보기함. 1. Ubuntu 최신 (현재 기준 25.10) : 나에게 제일 익숙하기도 하고,  최고의 데스크탑 용 리눅스 중 하나 2. Linux Mint 22.3 Cinnamon : DistroWatch 에서 2위에 랭크된 인기있는 리눅스 배포본 중 하나. 우분투 기반이라 익숙하기도 하여 선택. 3. Zorin OS : 인터넷 검색 결과 이쁘다는 이유만으로 선택해 봄 결론을 말하자면 Zorin OS 써보다가 26.04 LTS 나오면 갈아탈 지 다시 고민해 볼 예정이긴 하지만, 간단하게 깔아본 소감 정도는 남...

[Daily Poll] 자주 묻는 질문(FAQ)

Q) Daily Poll 이 뭔가요? A) 매일 혹은 매주 반복되는 투표가 필요한 분들을 위해 만든 투표 서비스입니다.  지정해 둔 시간부터 투표할 수 있도록 할 수도 있습니다.   좀 더 개인적인 설명을 드리자면 제가 가입한 동호회의 불편한 점을 개선하고자 직접 개발하게 된 서비스입니다. 프로젝트의 시작은 동호회의 레슨 시간을 레슨 날 아침에 결정할 수 있도록 투표를 매번 만들었는데, 투표를 관리하는 동호회 임원들의 고충이 커서 이걸 해결하고자 반복되는 매일의 투표를 좀 더 편하게 관리하고자 개발하게 되었습니다. Q) 어디에서 받을 수 있나요? A)  https://play.google.com/store/apps/details?id=net.ommoks.azza.dailypoll 투표를 만들어야 한다면, 안드로이드 앱을 사용하셔야 합니다. 단순히 투표 참가를 위해서도 안드로이드 앱을 사용하면 편하지만, 웹으로도 투표 참가는 가능합니다. https://dailypoll.kr/채널명 위와 같이 투표 관리자가 공지한 채널 명으로 접속해 주세요.    Q) 어떻게 쓰는 건가요? A)   https://ommokazza.blogspot.com/2026/02/daily-poll_21.html 위 링크의 사용 설명서를 참고하세요.     Q) 웹 브라우저로 투표에 참가할 수는 없나요? A) https://dailypoll.kr/{채널명}  으로 접속하시면 됩니다.  Q) Ultimate Edition 카드를 구입했어요. 아바타 추가는 어떻게 하나요? A) 설정의 '의견 보내기'를 통해 200x200 사이지의 이미지를 보내주세요. 단, 혐오 표현, 폭력, 성적 콘텐츠, 불법 행위, 타인에 대한 명예훼손이 포함된 이미지는 제한됩니다. Q) iOS 는 지원하지 않나요? A) 제가 안드로이드 앱만 개발해 봐서 iOS용 앱 개발은 전혀 모릅니다. 현재는 계획이 없습니다...

Daily Poll 비공개테스트 참가하기 (종료)

 동호회 분들 덕분에 비공개 조건을 만족해서 넘겼네요.

[Daily Poll] 작업일지(2) - 서버 인프라 설계 : 데이터베이스

Daily Poll 의 요구사항을 세세하게 다 적지 않아도, 이 프로젝트의 시작이 명확한 Pain Point를 해결하고자 하는 것이기 때문에, Overall Server Infra 정도는 생각해 볼 수 있을 것 같다. - 유저와 투표를 관리하고 투표를 처리할 수 있는 API Endpoint 제공 및 데이터 저장을 위한 데이터 베이스 구축. 오라클 클라우드에서의 전형적인 기본 구성은 다음 글에서 잘 보여준다. https://k21academy.com/oracle/networks-in-oracle-cloud-oci-vcn-subnet-gateways-peering-transit-routing/ 너무나 당연하게도 데이터베이스 서버는 외부에서 직접 접근할 수 없어야 하고, Bastion과 보안 규칙들로 서버를 보호해야 한다. 제대로 된 프로젝트를 진행하려고 했다면 API 서버와 데이터베이스 서버의 인스턴스를 별도로 분리하고 4개의 무료 코어를 반반씩 나눠서 별도로 구성했어야 하지만... 취미에 가까운 프로젝트이니 저 내용은 머리로 이해만 하고, 실제는 한 서버에 모두 때려 넣었다. 그래도 구성 자체는 Docker 를 통해 분리를 하려고 한다. 먼저 데이터베이스는 PostgreSQL 을 사용하려고 한다. 왜 PostgreSQL 이냐고 묻는다면, 개인 프로젝트라면 뭘 선택해도 상관 없다고 본다. 이미 상용 서비스에서 검증이 끝난 많은 데이터베이스들이 있기에, 그 중에서 익숙한 것을 고르면 된다. 하지만 난 익숙한 데이터베이스가 없으므로, 그냥 마음이 끌리는 데로 선택하였다. 그 옛날 웹 서비스라고 하면 APM(Apache-PHP-MySQL)이 떠오르던 시절부터 MySQL과 함께 데이터베이스 영역을 지켜왔기도 하고, 오라클이 MySQL을 가져간 이후부터 MySQL은 탈락. (근데 난 OCI 쓰는데...) 데이터베이스를 다룰 때 마다 학교 다닐 때 좀 더 열심히 공부할 껄 생각을 하게 된다. 데이터베이스 수업을 정말 대충 들었는데, 중간고사를 완전히 망치고 다음 수업에 들어...

[Daily Poll] 작업일지(1-a) - 마인크래프트 서버 설치

이미지
이번에도 역시 의식의 흐름대로... 전문가들이 본다면 뭘 당연한 걸 적어놨나 싶겠지만, 그냥 공부한 걸 복습할 겸 기록하고 있다. 이전 글의 마지막에 말했듯이 성능이 좋은 서버가 생기니 다른 걸 하고 싶은 욕구가 생겼다. 집에 있던 N100 미니PC를 아이들과 함께 노는 마인크래프트 서버로 사용하고 있었는데, 이 서버를 오라클 클라우드의 인스턴스에 설치해 보았다. 심플하게 바닐라 서버만 실행하면 되기에 openjdk21 설치 후, minecraft 서버를 간단하게 실행하면 끝이다. 하지만 이걸로 외부에서 접속할 수는 없다. 이 인스턴스는 VCN과 Subnet 안에 위치하고 있기에, 외부의 접속 요청이 이 서버까지 도달할 수가 없기 때문이다. 간단하게 표현을 해 보자면 (내 PC의 마인크래프트) - (VCN) - (Subnet) - (Instance) 이렇게 구성되어 있을 때 마인크래스트 접속 요청이 25565번으로 가게 되는데, (내 PC) - (VCN) 사이에서 VCN 가 이걸 통과시켜 주지 않기 때문이다. 이전 글대로 서버 인프라를 구축했다면, VCN 과 Subnet 이 동일한 보안 규칙을 사용하게 된다. 그래서 VCN 혹은 Subnet 둘 중 아무데서나 보안 탭 > 보안 규칙으로 들어간 다음 25565 포트를 열어주면 된다. 자, 그럼 이제 될까? 여전히 안된다. Instance 자체에도 방화벽이 있기 때문이다. 인터넷을 찾아보면 다양한 솔루션들이 나오는데, 무작정 따라하면 안되고... 내가 확인한 바로는 ubuntu 계열이라면 iptables 를 직접 사용하거나 ufw 추가로 설치해서 사용하면 되는 것 같다. Redhat 계열은 firewalld 를 사용하는 솔루션을 찾으면 된다. ufw 가 좀 더 편리하다고 하는데, 그냥 포트 하나 추가하는데 굳이... iptables 사용하는 명령어도 찾으면 다 나오는 걸... 한국에 있는 춘천 리전이라 느리지도 않고, N100 보다도 더 성능이 좋은 거 같다. 그런데 게임을 하고 있으니 갑자기 누군가 접속해서...

[Daily Poll] 작업일지(1) - 프로젝트 시작과 서버 구하기

최근 회사의 탁구 동호회에 가입하여 탁구를 배우기 시작했다. 동호회에서는 강사님에게 레슨을 받을 수 있는 프로그램을 운영하고 있어 주 2회 레슨을 신청하였다. 레슨은 하루에 15분씩 1:1로 진행하는데, 레슨 시간은 카카오톡 투표를 이용하고 있었는데, 매일 오전 8시에 제일 먼저 투표한 사람이 해당 레슨 시간의 우선권을 가지게 된다. 나름 괜찮지만 문제는 투표 관리하는 사람이 매달 매우 많은 투표를 생성해야 하고, 사람들도 해당 날짜의 투표를 매번 찾아서 들어가야 하는 문제가 있었다. 지금은 다른 앱을 사용해보려고 하고 있으나 생각보다 편하지는 않은 듯 하여, 이걸 개인 프로젝트로 진행해보려고 한다. 그리고 먼저 프로젝트 이름부터 Daily Poll 이라는 지어보았다. (다만, 프로젝트가 완성되는 것이 우선일지, 내가 탁구를 그만 두는 게 우선일지...) 일단 이 작업일지는 의식의 흐름대로 진행하게 되고, 작업도 내키는 대로 진행하기 때문에 이야기가 중간에 새거나 할 것 같다. 뭔가 대단한 강좌를 작성하는 것이 아니라, 작업 내용과 거기에서 파생되어 확인했던 내용을 정리하기 위한 목적이 크기 때문이다. 그 시작으로 이 프로젝트에는 서버가 필요하기에 서버를 마련했던 이야기를 해보고자 한다. 가볍게 무료로 시작할 수 있고, 서버 관리도 필요없고, 자료도 많은 AWS 람다로 시작해 볼까 하다가... 이전에 시도해 보다가 그만두었던 오라클 클라우드를 한 번 사용해 보기로 하였다. https://www.oracle.com/kr/cloud/free/ 조금만 검색해 봐도 알 수 있지만, 오라클 클라우드는 상시 무료로 다음과 같은 컴퓨팅을 제공한다. ARM 기반 Ampere A1 컴퓨팅 인스턴스 최대 4개 지원(매월 3,000 OCPU 시간과 18,000 기가바이트-시간 제공) 인스턴스 4개 대신에 4코어 24GB램의 인스턴스 하나를 사용할 수 도 있는데, 무료로 제공하기에는 너무 대단한 서버가 아닌가 싶다. 특히 2026년 기준으로 요즘 AI 때문에 램 가격이 미쳐 날뛰고...

[대항해시대 온라인][글섭] 아이템 정리글

영어로 된 이름의 아이템과 약자들, 혹은 글섭에만 있는 아이템들을 좀 더 쉽게 확인하기 위해 작성해 둡니다. (계속 업데이트 예정)   - Emergency Shipbuilding Request / ESBR : 긴급조선의뢰서(긴조) - Master's Ship Material Purchase Order (No.1) : 주간 보너스 퀘스트 5회 달성 시 주는 아이템. - WTS : 삽니다 (Want to sell) - WTB : 팝니다 (Want to buy) - WTT : 교환합니다 (Want to trade) - WTH : 고용합니다 (Want to hire) - PC {물품이름}: 가격이 얼마인가요? (Price)

[STL] vector 의 정렬 - object pointer 정렬

이미지
[STL] vector 의 정렬 - object pointer 정렬 이 주제는 C++ STL 의 기본에 가까운 듯 한데, 평소에 C++ 로 프로젝트가 진행되는 경우가 없어서 익숙하지가 않아, 쓸때마다 헷갈려서 ( 특히 object pointer 타입을 다룰 때… ) 정리차원에서 한 번 포스팅해 좀. 1. Primitive 타입 먼저 가장 기본 형태. primitive type 의 vector 를 보자. vector<int> v; for (int i = 0; i < 20; i++) v.push_back(i); random_shuffle(v.begin(), v.end()); for (int i = 0; i < 20; i++) cout << v[i] << " "; cout << endl; sort(v.begin(), v.end()); for (int i = 0; i < 20; i++) cout << v[i] << " "; cout << endl; (실행결과) 1 11 15 0 14 7 16 13 8 10 17 5 2 19 18 9 4 3 6 12 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 위와 같이 오름차순으로 정렬이 된다. 기본적으로 std::sort 함수는 elements 비교에 ‘<’ 연산자를 사용하기 때문이다. 그럼 내림차순으로 정렬을 하려면 어떻게 해야 하는가? 바로 compare 하는 함수를 지정해 주거나, compare object 를 지정해 주는 것이다. 이때 함수는 bool comp(int a, int b) 형태로 표현하면 된다. 중요한 점은 comp 함수의 return value 가 true 라면 a 가 b 보다 앞으로 간다는 것이다. 위의 코드에...

[Unit Test] Robolectric 4.4 와 Shadow 그리고 Mocking

이미지
[Unit Test] Robolectric 4.4 와 Shadow 그리고 Mocking 안드로이드 어플리케이션의 유닛 테스트를 작성하다 보면,비즈니스 로직을 완전 순수하게 자바로 독립해서 작성하기에는 너무 코드가 많아지고 복잡해지고 솔직히 너무 오버 아키텍처가 되는게 아닐까 고민하게 되는 것 같습니다. 결국 안드로이드 프레임워크 API 를 이용하게 되는데, 이 안드로이드 API 들을 mocking 하기 위해서 그래도 가볍우면서 샘플코드나 자료를 쉽게 찾을 수 있는 mocking framework인 Mockito 를 사용하게 됩니다. 그런데 또 이걸 이용해서 유닛 테스트를 만들며 mock object들을 만들다보면 내가 테스트 코드를 작성하는 건지, 안드로이드 프레임워크 코드를 작성하는 건지 하는 생각이 듭니다. 결국 안드로이드 프레임워크 코드를 내가 작성해야 하는 상황이 싫어, Robolectric을 사용하는 것을 고민하게 됩니다. Robolectric의 원래 목적을 생각해보면 실제 디바이스나 에뮬레이터 상에서 UI를 수행하는 대신, 빌드 타임에 UI테스트를 수행할 수 있게 해 줍니다. 하지만 이 글에서는 여기까지는 고려하지 않고, 직접 Mock 객체를 만들지 않아도 안드로이드 프레임워크 API를 이용할 수 있다는 것에 집중하려합니다. 그리고 Mock 객체를 직접 만들지 않고 Shadow를 사용하는 것은 부족한 점이 있지만, 이 부분을 어떻게 채워가는지 이야기 하고자 합니다. Mocking 할 필요가 없다. 먼저 JUnit으로 안드로이드 어플리케이션의 유닛 테스트를 작성하는 상황을 보겠습니다. 테스트를 작성할 때, 코드에서 안드로이드 프레임워크의 API를 이용하면 IDE 상으로는 에러를 보여주지 않지만, 실제 테스트를 수행해 보면 에러가 발생합니다. (테스트 대상 클래스) public class MyClass { public boolean verifyName(String name) { r...

[책] 소프트웨어 세계화

이미지
소프트웨어 세계화 박미라 저 에어비앤비, 페이스북, 트위터는 해외에서 50% 이상의 수익을 번다. 그런데 우리나라에는 왜 그러한 소프트웨어가 없을까? 문제는 세계화다. 마이크로소프트, 구글, 에어비앤비, 페이스북, 트위터, 넷플릭스, 링크트인, 인튜이트는 기획 단계부터 세계화를 고려한다. 일단 국내에서 통하고 보자고? 그럼 영원히 해외로 나갈 수 없게 될 것이다. 이 책은 MS 미국 본사 국제화 부서에서 10년 이상 근무한 저자가 세계화를 체계적으로 정리한 국내 최초의 소프트웨어 세계화 지침서다. 세계화, 국제화, 현지화의 개념을 잡는 것... 소프트웨어의 세계화, 국제화, 현지화에 대한 책. 책의 전체적인 내용은 단순히 코딩에 대한 내용은 아니고, 소프트웨어 개발 전반에 걸쳐(기획부터 품질관리까지) 세계화를 어떻게 할 것인가에 대해서 설명하고 있다. 회사에서 세계화 담당팀이 별도로 없고, 자신이 담당하고 있는 소프트웨어 프로덕트가 세계화를 해야할 필요가 있다면 읽어보면 좋을 듯. 개인적으로 나는 이러한 내용들을, 검증으로부터 문제를 전달 받으면서 주먹구구식으로 익힌 느낌인데, 이런 책이 있으면 좀 더 개념잡기에 좋을 것 같다. 전 세계에 배포하는 소프트웨어를 담당하는 팀이라면 신입사원들에게도 한 번 읽어보도록 하면 좋을 것 같다.

[TensorFlow] 대항해시대 온라인 시세 공유 도우미 (2)

이 글에서는 학습된 데이터를 어떻게 저장하고 어떻게 읽어와서 사용할 지에 중점을 두고 설명하겠습니다. 지난 번 글에서 언급한 도시이름, 시세, 화살표의 Learing Model 코드는 이곳 에서 확인하실 수 있습니다. 이 코드는 교역품의 러닝 모델과 거의 비슷하기에 뒤에 학습된 모델을 읽어오기 위해 필요한 부분만 설명하겠습니다. 텐서플로우 공식 사이트에는 Save and Restore 항목이 있고, 여기에 보면 tf.saved_model.simple_save 를 이용하면 제일 쉽다고 되어 있습니다. 그래서 저는 이 함수를 사용하기로 결정하였습니다. 처음에는 단순히 아래와 같이 simple_save 코드를 이용하였습니다. ---------- simple_save(session, export_dir) ---------- 그리고 저장된 모델은 아래와 같이 로드하였습니다. ---------- def estimate(model_dir, raw_bytes):     tf.reset_default_graph()     graph = tf.Graph()     with graph.as_default():         with tf.Session(graph=graph) as sess:             tf.saved_model.loader.load(sess, [tag_constants.SERVING], model_dir, )             x_data = [[float(x) for x in raw_bytes]]           ...

[파이썬] 패키지 재사용을 위한 패키징과 배포

너무나 사심이 가득하고 개인적인 대항해시대 온라인 시세 공유 프로젝트를 진행하면서 파이썬에 대해서도 많이 공부하게 되는 것 같습니다. 단순 언어도 공부가 되었지만, 실제 deploy 하는 측면에서도 고민을 하고 해결 방법을 찾아보곤 합니다. 대항해시대 시세 공유 도우미 프로그램는 크게 2개의 프로젝트로 구성되어 있습니다. 그리고 이 두개의 프로젝트는 물리적으로 분리된 프로젝트로 만들려고 합니다.   - Machine Learning 을 수행하는 부분   - GUI 클라이언트 부분   이 두개의 프로젝트는 공통으로 사용하는 utils 패키지가 있는데, 이 코드를 두 프로젝트에서 소스로 가지고 있으면 관리의 어려움이 있기에 utils 패키지를 패키징해서 pip install 을 이용해 사용하는 방법을 알아보았습니다. 구글에서 검색한 내용을 참고로 저는 아래와 같이 프로젝트 디렉토리를 구성하였습니다 --------------------------------------------- uwo_ps_utils/     LICENSE     MANIFEST.in     README.md     setup.py     .gitignore     docs/     uwo_ps_utils/         __init__.py         market_rates_cropper.py ---------------------------------------------         (docs 디렉토리에는 어떤 포맷으로 작성해야 하는 지 몰라서, 제가 마음대로 작성한 텍스트 파일이 하나 들어...

[TensorFlow] 대항해시대 온라인 시세 공유 도우미 (1)

이미지
국내에서 서비스하는 대항해시대 온라인의 최악의 시스템은 랜덤 그레이드 옵션이 아닐까 생각합니다. 그런데 어쩌다 보니 글로벌판에서 경험치,스킬숙련도,명성 최대 4배 이벤트를 하는 것을 보고, 글로벌판으로 갈아탔지요. 그리고 foxytrixy 를 이용해 오픈 채팅방에서 시세 공유하는 것을 보고 스크린샷에서 바로 정보를 가져올 수 있으면 좋겠다는 생각에 시작했습니다. 때마침 머신러닝 교육을 갔다와서 어디 적용할 만한 것이 없을까 고민하고 있었고요. 처음에는 게임의 해상도마다 이미지 크기가 조금씩 다를테니 이걸 같은 크기로 리사이즈 하고 이런 데이터들을 모아서 학습을 시키면 모든 해상도에서 정보를 인식할 수 있을꺼라 생각했습니다. 그런데 이 옛날 게임은 해상도가 달라도 "Market Rates" 보는 창의 크기는 동일한 사이즈였습니다. 머신러닝을 적용하는 것이 큰 의미가 없어지긴 했지만, 그래도 반투명한 부분 때문에 충분히 도움이 되지 않을까 생각하면서 진행해 봤습니다. 여기서는 Python + Tensorflow 를 이용해서 제가 데이터를 모으고, 신경망을 구성한 것을 보여드리고자 합니다. 일단 대항해시대 온라인의 Market Rates 화면입니다. 창의 왼쪽에는 교역품 시세, 오른쪽에는 인근 도시의 시세입니다. 일단 왼쪽 교역품 항목에 집중해 봅시다. 화면에서 교역품 정보를 알기 위해서는 그림을 보거나 이름을 보거나 둘 중 하나가 될 텐데요, 저는 이미지를 택했습니다. 웬지 이름 보다는 더 식별을 잘 할 것 같아서 말이죠. 스크린샷에서 교역품 이미지를 확인해 보니, 이 이미지는 배경화면의 영향을 받지 않습니다. 그래도 머신러닝 시작한 김에 계속 진행합니다. 대항해시대 온라인의 교역품 종류는 https://ssjoy.org/ 사이트 기준으로 대략 600 가지가 넘는 것으로 보입니다. 처음에는 이 모든 교역품의 이미지를 스크린샷으로 부터 가져와서 데이터를 만들기는 어려워 사람들이 시세를 많이 확인하는 품목 몇 종류만...
이미지
정의란 무엇인가 마이클 샌델 저/ 김선욱 감수/ 김명철 역 한국에 ‘정의’ 열풍을 불러일으킨 마이클 샌델은 구제 금융, 대리 출산, 동성 결혼, 과거사 공개 사과 등 현대 사회에서 우리가 흔히 부딪히는 문제를 통해 ‘무엇이 정의로운가’에 대한 해답을 탐구했다. 이 책은 탁월한 정치 철학자들이 남긴 시대를 초월한 철학적인 질문을 알기 쉽게 소개한다. 이를 통해 옳고 그름, 정의와 부당함, 평등과 불평등, 개인의 권리와 공동선을 둘러싼 주장들이 경쟁하는 공적 담론과 토론의 장에서 정의에 관한 자신만의 견해를 정립하고 논리 기반을 굳건하게 다지는 토대를 제공한다. 이 책은 현대 사회의 문제를... (책을 사고 나서 너무 늦게 읽었나 보다. 내 책은 저 표지가 아닌데...) 너무 어려운 주제라는 생각에 손을 대지 않고 있다가, 몇 일 여유가 생겨서 완독하였다. 제러미 벤담, 존 스튜어드 밀, 이마누엘 칸트, 존 롤스, 아리스토텔레스 등, 정의에 대한 철학자들의 생각을 실제 사건과 연관지어 설명하고 있어 생각보다 이해하기 쉽고 재미있었다. 마이클 샌델 교수의 "정의로운 사회는 단순히 공리를  극대화 하거나 선택의 자유를 확보하는 것만으로는 만들 수 없다. 공정한 사회를 달성하기 위해서 우리는 좋은 삶의 의미를 함께 고민하고, 의례 생기게 마련인 이견을 받아들이는 문화를 가꾸어야 한다" 라는 말에 깊이 공감한다. 정의(Justice)를 정의(Declaration)할 수 있는 단 하나의 원칙이 있을 수 있을까? 그런 것이 있을 리가 없다. 그래서 무엇이 공정한 것인지 판단하기는 참 어려운 것 같다. P.S 뜬금없지만 친구가 이야기 하던 건담의 대사 "네가 정의냐"가 생각나서 찾아 봤는데, 이걸 누가 말한 것인지도 잘 모르겠다. 비슷한 대사로는 건담 시드에 나오는 것이 있는 듯한데... 친구에게 들었던 시점에는 건담 시드 방영을 안 했던거 같은데...?

[윈도우] 실행 중인 프로그램의 타이틀을 변경하는 유틸리티

실행 중인 프로그램의 타이틀을 변경하는 유틸리티 일단, 나의 주 목적은 대항해시대 온라인을 PC방에서 투 클로 실행하기 위해서... 프로그램 실행 시에 보여주는 블로그 주소에서는 해당 유틸리티를 더 이상 배포하진 않는다. (잠깐 블로그를 방문해서 방명록 같은 것을 봤을 때, 마크 쪽 스크립트 배포하다가 저작권 문제 때문에 여러가지 배포하던 카테고리 자체를 싹 없애 버린게 아닐지...) 어쨌든, 다른 블로그에서 프로그램을 다운로드 받을 수 있으며, http://gleak.blog.me/220368297273 친절하게 바이러스 검사 결과까지 첨부해 주셨다. 물론 나는 그냥 첨부해 두기... 다운로드

Synergy 1.10 릴리즈 - 라즈비안 패키지 추가

Synergy 한글키 패치 적용을 하고 나서부터는 Synergy 약간의 애착이 생긴터라 메일이 오면 그냥 넘기지 않고 다 읽어 보는 편입니다. 오늘 1.10 버전이 릴리즈 되었다고 메일이 왔길래 릴리즈 노트 를 한번 읽어 봤습니다. 살펴보니 이번 버전 부터는 Raspbian 패키지도 배포를 하는 군요. '간만에 업데이트 해볼까' 하면서 우분투 버전을 받았으나... dpkg: dependency problems prevent configuration of synergy:  synergy depends on libqt5core5a (>= 5.7.0); however:   Version of libqt5core5a:amd64 on system is 5.2.1+dfsg-1ubuntu14.3.  synergy depends on libssl1.1 (>= 1.1.0); however:   Package libssl1.1 is not installed.  synergy depends on libstdc++6 (>= 5.2); however:   Version of libstdc++6:amd64 on system is 4.8.4-2ubuntu1~14.04.4. 이런 에러와 함께 설치 실패... 우분투 14.04 버전은 라이브러리 버전이 낮아서 안되는 군요. 삽질을 하면서 설치를 해 볼 수는 있겠으나, 우분투 설치된 PC는 개발용이라 함부로 설치된 라이브러리 버전은 변경하지 않는걸로... 결국 윈도우 버전만 업데이트 하고 말았네요.

[책] 오만과 편견

이미지
오만과 편견 제인 오스틴 저 영국 BBC의 '지난 천년간 최고의 문학가' 조사에서 셰익스피어에 이어 2위를 차지할 만큼 영국인의 큰 사랑을 받고 있는 여류작가, 제인 오스틴. 이번에 출간된 『오만과 편견』은 두 영문학자들이 10년 동안 꼼꼼한 원문 대조 과정과 교차 검토 과정을 거쳐 탄생한 번역본이다. 오역이나 부정확한 번역을 없앴음은 물론, 오스틴 문체의 특징으로 잘 알려져있는 '묘출화법'이나 반어와 풍자, 그리고 당시 시대상에 맞는 적절한 단어 표현과 선택에 신경써서 번역했다. 오래 전에 출판된 책이 오랫동안 많은 사람에게 읽혀지는 이유는, 다른 이유가 있을리 없습니다.  재미있기 때문이지요. 그것이면 충분하지 않을까요? 책을 배 송받았을 때, 생각보다 두꺼워 좀 놀랐지만... (그래도 바로 앞의 책꽂이에 있는 Design Pattern 책에 비하면 읽기도 쉽고 페이지도 적으니...) 금방 책을 다 읽어 버렸습니다. 쾌활하고 생기넘치는 엘리자베스의 변화를 지켜보는 것은, 책을 읽는 내내 즐거웠습니다. (처음 엘리자베스=일라이저=리지 라는 걸 몰랐을 땐 좀 당황스러웠지만...) 그리고 가끔씩 던지는 베넷 씨의 농담도 재미있었고요. 사실 이런 책은 10대나 20대에 읽었어야 할 것 같지만, 그때는 만화책, 무협지, 게임에 빠져 있어서..... (그렇다고 내가 그 시절을 후회하는 건 아니고요... 그 땐 그대로 즐겁게 살았으니깐.)

[책] Effective Java

이미지
이펙티브 자바 조슈아 블로크 저 / 이병준 역 『Effective Java 2판』은 졸트(Jolt) 상을 수상하며 고전의 반열에 오른 초판을 전면적으로 개정한 것으로, Java SE 5와 Java SE 6에 새롭게 도입된 기능들을 반영하였다. 저자는 새로운 디자인 패턴과 숙어들을 탐구하면서 제네릭, enum, 어노테이션, 자동 객체화 등의 새로운 기능들을 최대한 활용할 방법을 제시한다. 이 책의 각 장은 짤막한 독립 에세이 형식으로 기술된 “규칙” 들의 묶음이다. 각각의 에세이에는 자바 플랫폼을 다룰 때 알아야 할 미묘한 사항들에 대한 통찰과 조언이, 그리... 말이 필요있을까요? Java 언어를 배우고 있다면, Java 입문서 다음에 필독하여야 할 책. Java 언어를 사용한다면, 옆에 두고 언제든 참고할 만한 책. 당장 자세한 내용을 이해 못하더라도, 각 챕터의 큰 줄기는 기억해두고 실제 코드를 작성할 때 한 번씩 참고한다면 큰 도움이 될 것입니다.

Synergy 한글키 패치 공식 버전 적용 및 최종 정리

이미지
Synergy 한글키 패치는 공식 소스에 이미 반영 되었지만, 블로그를 갈아타면서 옮겨둘 만한 것은 다시 정리해서 재작성 해 둔다. 글을 드문드문 쓰다보니 어떤 글은 반말, 어떤 글은 존대말 섞여 있다. 그러려니 해 달라... 꽤 오래 전에 등록하였던 한글키 패치 PR이 공식 Synergy 버전에 반영되었습니다. Synergy 1.8.8 버전 이후로는 별다른 한글키 패치가 필요없습니다. 그 동안 SSL을 지원하는 Pro 버전을 구입하고도, 한글키 문제로 이용하지 못했던 분들도 이제 공식 버전을 이용할 수 있게 되었네요. 제가 빌드한 마지막 Synergy 한글키 패치 버전입니다. [다운로드 링크] Synergy 1.8.8 Windows 64bit 버전 Synergy 1.8.8 Windows 32bit 버전 마지막 정리 차원에서 Synergy 한글키 관련 내용을 적어둡니다. 1. 한글키 문제의 원인 https://ommokazza.blogspot.kr/2017/07/synergy.html 2. 한글키 패치 Github 주소 이미 공식버전에 반영 되었지만, 어떤 수정을 했는지 궁금하신 분들을 위해 남겨둡니다. https://github.com/ommokazza/synergy keyup 브랜치는 Pull Request를 하지 않은 상태입니다. 지금 상태로도 큰 문제는 없어 보이기도 하고, 깔끔한 수정방법이 아니라서요. (한글키 패치도 딱히 깔끔하지는 않은데... 아무리 고민해 봐도 더 나은 방법을 찾을 수 가 없었습니다..) 3. Synergy 윈도우 버전 빌드 방법 (<= 1.8.x) https://ommokazza.blogspot.kr/2017/07/synergy-version-18x.html 4. Shift + Space키를 한영전환키로 사용할 때의 설정 윈도우에서 드라이버 변경이나 레지스트리 수정을 통해 Shift-Space키를 한영전환키로 이용할 때의 결정적인 문제는, 해당 키가 순수...