라벨이 개발인 게시물 표시

tortoisegit 되돌리기 git, tortoisegit - revert 차이.

작업한 파일을 되돌리고 싶다면 tortoisegit - revert  하면 됩니다. tortoisegit revert - 작업 컴퓨터에서 작업한 파일을 되돌립니다. 레파지토리에는 영향을 주지 않습니다. git revert - 레파지토리를 수정합니다. 레파지토리가 이해가 안되면 아래 링크를 보세요. tortoisegit 에서 git revert 와 같은 작업을 하려면 Show log - Revert change by this commt 하면 됩니다.  추가로 git에선 되돌리기로 revert, reset 두가지 옵션이 있습니다. revert 는 이전 commit을 유지, reset은 이전 내commit 삭제 차이가 있습니다. git 그림 한장으로 이해하는 사용법. https://abel9999.blogspot.com/2020/05/git.html TortoiseGit Manual - Undo Changes https://tortoisegit.org/docs/tortoisegit/tgit-dug-revert.html

winform DPI 배율(스케일링) 문제.

글을 작성 시점은 2020년 6월 입니다. DPI 지원 부분이 계속해서 변경되고 있기 때문에 작성 시점을 밝힙니다. ---------------------------------------------------------------------- HiDpi를 지원하는 몇가지 방법이 있습니다. - 매니페스트(app.manifest) - App.config - API 호출. 세가지 방법 모두 manifest Windows 10 설정이 윈도우 보안기능(SmartScreen 등)에 날아가(?) WM_DPICHANGED(윈폼에선 DpiChanged)등 관련 콜백들이 제대로 동작하지 않는게 프로그램이 Windows 10 호환모드로 실행되지 않는거 같습니다. 그나마 SetProcessDpiAwarenessContext 호출시 글로벌후킹한 마우스 좌표값이 제대로 들어왔습니다. 이때 UI 스케일링은 자동으로 이뤄지지 않았고 DpiChanged 콜백도 동작하지 않았습니다. 윈도우 DPI 배율 기능이 땜빵같이 들어가 여기저기 엉켜 있는거 같네요. 윈도우 API로 짜면 어떨까 싶기도 합니다. 개발용 인증서를 사인해 봤지만 이걸로는 안됐습니다. 검색해 보니 아래와 같은 방법이 있지만 해결될지는 미지수 입니다. 신뢰할 수있는 기관 (digicert, symantec, ...)에서 인증서를 구매하고 이를 실행파일에 서명. Windows 스토어에서 소프트웨어 배포. PC에서 스마트 스크린 필터 해제. ---------------------------------------------------------------------- 매니페스트(app.manifest), App.config 두 방법 모두 manifest의 설정이 중요합니다. <!-- Windows 10  --> <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" /> app.manifest에 설정되어 있지 않으면 제대로 동작하지 않습니다. ---

Winform HiDPI scale지원. Winform에서 DpiChanged 이벤트가 호출되지 않을때.

글을 새로 올렸습니다. winform DPI 배율(스케일링) 문제. https://abel9999.blogspot.com/2020/06/winform-dpi.html 아래의 작업을 해도 개발컴퓨터가 아닌 다른 컴퓨터에서는 SmartScreen에 걸리면서 오동작 합니다. SmartScreen에 걸리면 설정이 뭔가 씹히는거 같네요. -------------------------------------------------------- - 매니페스트를 프로젝트에 추가하세요. 프로젝트 - 새항목추가 - visual c# 항목 - 일반 - 애플리케이션 매니페스트 파일(Windows만 해당)  - 프로젝트 속성 - 애플리케이션에서 위에서 만든 매니페스트를 추가하세요. 프로젝트 속성 - 애플리케이션에서 .NET Framwork 4.7 이상으로 설정합니다. - 전 vs2019인데 매니페스트를 편집하면 다음과 같은 항목이 있을겁니다. Windows 10 아래에 주석처리되어 있으면 주석을 제거합니다. 없으면 아래와 같이 추가해 줍니다.  <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">     <application>       <!-- Windows 10 -->       <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />  </application>   </compatibility> - App.config 를 편집합니다. <configuration> 사이에 아래와 같이 추가해 줍니다.  <System.Windows.Forms.ApplicationConfigurationSection>    <add key="DpiAwarene

Winforms 프로그래밍 할때 기본 사항. font, AutoScaleMode.

결론. 폰트는 영문 윈도우 기본 글꼴인 Segoe UI를 쓰는게 유리하다. AutoScaleMode은 Dpi 가 문제가 덜한거 같다. 아이콘 최대 크기는 256 x 256. 윈도우 DPI 배율 설정시 만든 프로그램에 문제가 있다면 아래의 Winform HiDPI 링크를 시도해 보라. 복잡하거나 외형이 중요하다면 윈폼을 사용하지 말자. ms가 윈폼을 오픈소스화 한 이유가 있다. 내용. 한글 윈도우 visual studio에서 winform 기본 글꼴이 굴림으로 설정되어 있다. 아래 Windows 10 font list를 보면 굴림은 한국어가 설정이 되야 설치되는 폰트다. 즉 한글 윈도우 외에는 텍스트가 이상하게(안보이거나 짤리거나 등등..) 보일수 있다. 해결방법은  - 다른 언어 윈도우에도 공통 설치되는 폰트로 설정하거나  - 프로그램에 폰트를 내장하거나  - 폰트를 같이 배포가 있다. ------------------------------------------------------------- AutoScaleMode을 font로 설정했을때, 굴림폰트가 없는 윈도우에서 문제가 생기는 경우가 있어 dpi가 더 적합했다. 이건 프로그램마다 특성을 탈 수 있으니 테스트 해서 정해야 한다. ------------------------------------------------------------- 윈도우8.1이 2023년까지 지원된다고 하지만 이런저런 이유로 사용자가 적다. ------------------------------------------------------------- DPI 스케일과 관련해서 오류가 나면 다음을 참고하라. winform DPI 배율(스케일링) 문제. https://abel9999.blogspot.com/2020/06/winform-dpi.html ----------------------------------------------------------

synology nas에서 python을 사용하여 slack 메세지 보내기.

대략 설명하면 1. slack에 incoming-webhooks App를 설치. 2. python 스크립트를 synology 에 업로드. 3. synology에 python3를 설치. 4. 터미널로 python3 패키지 설치. 5. 작업 스케줄러 등록. 작업순서. 정해진 것은 없고 상황에 따라 변경하셔도 됩니다. slack에 incoming-webhooks App를 설치하고 Webhook URL을 복사해 둡니다. https://slack.com/apps/A0F7XDUAZ-incoming-webhooks 작성한 python 스크립트를 nas에 올립니다. File Station에서 올리고 파일위에서 마우스 우클릭하여 속성을 누르고 위치(경로)를 복사해 둡니다. slack에 메세지를 보내는 python3 코드는 다음과 같습니다. import json import requests webhook_url= "위에서 복사해둔 Webhook URL" payload= {"text": "hello world"} requests.post( webhook_url, json=payload ) synology nas 패키지 센터에서 python3를 설치합니다. 터미널로(저는 PuTTy 사용 합니다.) 접속합니다. 아래과 같은 명령어로 python3 패키지 설치를 위한 준비를 합니다. sudo -i wget https://bootstrap.pypa.io/get-pip.py python3 get-pip.py python3 -m pip install requests 이외에 다른 패키지가 필요하면 설치합니다. synology nas -> 제어판 -> 작업스케줄러 를 엽니다. 생성 -> 사용자 정의 스크립트 를 선택하여 생성합니다. 이름, 시간 등의 설정을 하고 작업설정 -> 실행 명령 -> 사용자 정의 스크립트를 다음과 같은 형식으로 실행하면 됩니다. test.py 는 위에서 복사해둔 python 스크립트의 경로

svn사용자의 git 사용 후기.

저는 cvs, svn, git 을 사용했고 이중 많이 사용한건 svn 입니다. svn과 비교한 장단점. - git 장점. 소스 - 로컬저장소 - 원격저장소로 나뉘어있기 때문에 원격저장소를 여러개 두어 여러군데 백업이 가능하다.  작업 중간에는 로컬저장소에만 올려 다른 팀원들에게 피해를 주지 않기 때문에 작업 중간에도 계속해서 소스 백업을 할수 있다. (아직도 회사에서 svn을 사용한다면 tortoisegit의 svn 관련기능을 사용하자. ) 이게 가장 큰데 github, AWS CodeCommit, google Cloud Source Repositories, ms azure devops 등 소스관리는 git이 대세다. 지원하는 개발 프로그램, 유틸도 git에 맞춰 나오기 때문에 선택이 아니라 필수가 되어가고 있다. - git 단점. 단일 바이너리 서버가 아니라 ssh나 웹서버 등을 조합해 사용하기 때문에 서버세팅이 번거롭다. 큰 바이너리 파일은 부담 스럽다. 지원하는 모듈을 설치하면 되지만 기본 모듈로 있어야 유지보수에 용이하다. 소스 - 로컬저장소 - 원격저장소 로 나눠지면서 복잡도가 증가하면서 용어가 중구난방이라 헤매기 쉽상이다.  예를 들어 소스를 서버에 올리는 기능이 커밑, 푸쉬로 나눠져 있다. 커밑to로컬, 커밑to원격 같이  동작의 이름에 통일성을 주는게 훨씬더 직관적이라 생각된다.  아래 그림에 동작별로 정리되어 있다. https://abel9999.blogspot.com/2020/05/git.html 저장소 내의 폴더 하나만 커밑, 업데이트 할수 없다.  svn은 하위 폴더 하나만 부분적으로 커밑, 업데이트 가능하기 때문에 저장소 하나에 프로젝트 여러개를 모아 놓고 사용했지만 git에서는 하나의 저장소에 하나의 프로젝트가 기본인거 같다. 이래서 저장소가 너무 여러개 일때 사용하는 서브모듈이라는 것도 있지만 바로가기 링크에 불과해 편의성이 떨어진다.  - 종합. svn 사용자 입장에서 로컬저장소 - 원격저장소 로 나누어 개발 중간에도 계속해서 소스

Realm 개발 정리.

https://realm.io/kr Realm Studio 디비 데이터 편집기. https://realm.io/products/realm-studio 닷넷 개발 문서. https://realm.io/docs/dotnet/latest/ 닷넷 예제. https://github.com/realm/realm-dotnet

개발 서적.

https://opentutorials.org/ http://pyrasis.com/ https://wikidocs.net/ https://docs.microsoft.com/ko-kr/learn/ https://github.com/EbookFoundation/free-programming-books Node.js https://www.nodebeginner.org/index-kr.html golang https://github.com/golangkorea https://legacy.gitbook.com/book/gosudaweb/go-language-specification-in-korean/details https://legacy.gitbook.com/book/gosudaweb/effective-go-in-korean/details swift https://jusung.gitbook.io/the-swift-language-guide/ https://seoh.github.io/Swift-Korean/ CppCoreGuidelines http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines https://github.com/CppKorea/CppCoreGuidelines

개발 리소스 - 폰트.

https://noonnu.cc/ https://gongu.copyright.or.kr/freeFontEvent.html https://akal.co.kr/?p=1570 https://offree.net/plugin/print/?id=2261&type=in https://fonts.google.com/ https://www.google.com/get/noto/#/ https://googlefonts.github.io/korean/ https://www.fontsquirrel.com/ http://font.kpipa.or.kr/ https://www.goodchoice.kr/font http://www.bingfont.co.kr/about-taom.html https://www.nyj.go.kr/main/128?space=main_header_gnb https://www.han-don.com/handon_platform/index.php?mode=handon_fonts https://spoqa.github.io/spoqa-han-sans/ko-KR/ http://www.goyang.go.kr/www/www05/www05_3/www05_3_6/www05_3_6_tab1.jsp https://cactus.tistory.com/193

개발 커뮤니티.

커뮤니티 순위. https://codecondo.com/programming-communities/ 해외. https://softwareengineering.stackexchange.com/ https://www.daniweb.com/ https://www.reddit.com/r/cpp/ https://www.drdobbs.com/cpp https://www.codeguru.com/ 게임. https://www.gamedev.net/ https://www.reddit.com/r/gamedev/ 한국. http://codingdojang.com/ http://www.devpia.com/ http://devkorea.co.kr/ https://okky.kr/ https://kldp.org/ https://cafe.naver.com/mcbugi https://www.gpgstudy.com/ http://www.soen.kr/

개발 리소스. 사운드.

무료. https://www.soundeffectpack.com/ http://gameburp.com/ https://www.freesfx.co.uk/ 유료. https://www.soundsnap.com/ https://ongakusozai.com/ https://www.musicplug.co.kr/index/ https://sonniss.com/

개발 리소스. 이미지.

공유마당. https://gongu.copyright.or.kr/ http://donate.copyright.or.kr/cntr/main/main.do 아이콘 http://www.letscc.net/ http://www.iconarchive.com/commercialfree.small-previews.html https://www.iconfinder.com/free_icons http://www.softicons.com/commercial-icons https://all-free-download.com/free-icon/free-commercial-use-icons.html https://icomoon.io/app/#/select https://findicons.com/ http://www.alessioatzeni.com/metrize-icons/ https://gyuha.tistory.com/363 https://thenounproject.com/ https://iconmonstr.com/ 이미지. https://publicdomainvectors.org/ https://pixabay.com/ https://commons.wikimedia.org/wiki/Main_Page https://kr.freeimages.com/ 유료. https://kor.pngtree.com/ 컬러차트. https://coolors.co/ 모바일 UI https://dribbble.com/

게임 개발 리소스.

국내 쇼핑몰. http://resourcebank.or.kr/ http://www.gamesound.or.kr/?SoundLibrary=sound&fcate1=&cate1=1&cate2=62&cate3=&snd_tag=&order=&page=15 2D 이미지 쇼핑몰. https://gameartpartners.com/ https://www.scirra.com/store https://creativemarket.com/Fassous https://www.gamedevmarket.net/member/fassous/ http://www.graphic-buffet.com/ https://www.gamedevmarket.net/ https://www.gameart2d.com/ https://graphicriver.net/game-assets http://www.supergameasset.com/ https://marketplace.coronalabs.com/ 무료. https://game-icons.net/ https://opengameart.org/ http://www.jewel-s.jp/download/ http://tilestudio.sourceforge.net/  - 타일툴

라이센스 정리. License.

라이선스, 한 눈에 보기! http://codenamu.org/2014/10/10/popular-opensource-license 오픈소스SW 라이선스 종합정보시스템 https://www.olis.or.kr/ https://www.olis.or.kr/license/compareGuide.do Creative Commons https://creativecommons.org/licenses/?lang=ko http://cckorea.org/xe/?mid=ccl

파이썬 개발정리.

점프 투 파이썬 https://wikidocs.net/book/1 Python Snippets - 파이썬 조각 코드 모음집 https://wikidocs.net/book/536 예제로 배우는 파이썬 프로그래밍 http://pythonstudy.xyz/ https://www.learnpython.org/ 나만의 웹 크롤러 만들기 https://beomi.github.io/gb-crawling/ 실용적인 예제. https://www.newbedev.com/python/howto/

C# 심플 로거. simple logger.

필요한 클래스에 복사하고 사용하면 된다. 간단하게 찍고 싶은데 log4net는 부담될때 사용하면 된다. public String logPath = @"Log.txt"; public void Log(String message) {     message += System.Environment.NewLine;     File.AppendAllText(logPath, message); }

C# 웹 크롤링, 웹 컨트롤 라이브러리.

크롬 드라이버. https://www.selenium.dev/projects/ https://github.com/cefsharp/CefSharp https://html-agility-pack.net/ https://anglesharp.github.io/ https://github.com/sjdirect/abot 경험상 무거운 크롤링은 C#으로 짜는게 나을거 같다.

C#에서 SQLite 사용하기.(Visual Studio 2019)

디비, 테이블 생성은 "DB Browser for SQLite" 프로그램으로 하는게 편리하다. SQLite 개발환경 셋팅. (Visual Studio 2019) 1. 프로젝트를 연다. 2. 도구 -> NuGet 패키지 관리자 -> 솔루션용 NuGet 패키지 관리 를 연다. 3. 찾아보기에서 System.Data.SQLite 를 검색해 설치한다. 간단 사용법. using System.Data.SQLite; SQLiteConnection mDB = new SQLiteConnection("Data Source="+ @"data.db"); mDB.Open(); SQLiteCommand cmd = new SQLiteCommand(      "SELECT count(*) FROM TestTable WHERE (code = @code)"     , mDB); cmd.Parameters.Add("@code", DbType.Int32); cmd.Parameters[0].Value = 12345; int count = Convert.ToInt32(cmd.ExecuteScalar()); cmd.Dispose(); mDB.Close(); 트랜젝션 사용법. 위와 같이하면 매번 트랜젝션이 걸려 매우 느리다. 생각보다도 더 매우 늦다. BeginTransaction 을 사용해서 개선할 수 있다. using System.Data.SQLite; SQLiteConnection mDB = new SQLiteConnection("Data Source="+ @"data.db"); mDB.Open(); using (SQLiteTransaction tr = mDB.BeginTransaction()) {      SQLiteCommand cmd = new SQLiteCommand(           "SELECT count(*) FROM Tes

github, slack, jira 연동하기.

작성일 - 2020년 5월. - 아래의 사항을 일단 한다. github 가입과 레파지토리 생성. jira 가입과 프로젝트 생성. slack 가입과 데스크탑 프로그램 설치. github https://github.com/marketplace  에서 jira, Slack 을 검색하여 설치한다. jira https://marketplace.atlassian.com/search?hosting=cloud&product=jira 에서 GitHub for Jira, Slack Jira Integration 검색하여 설치한다. 프로젝트에서 항목추가 -> 저장소 -> github Clone with HTTPS(git에서 클론 할때의 주소) 를 추가한다. 프로젝트에서 Slack integration 를 클릭하여 어떤걸 알림 받을지 설정한다. (위에서 Slack Jira Integration을 설치했다면..) Slack Jira Integration 이외의 app 으로도 가능한거 같다.(확실치 않음.) slack 실행화면 왼쪽 하단에 Apps의 오른쪽에 있는 "+" 을 눌러준다. GitHub, Jira Cloud를 Add 한다. 이후 Apps 하단에 GitHub, Jira 가 보일 것이다. GitHub 를 클릭하고 아래와 같이 메세지 창에 입력한다. owner/repository 는 자신의 GitHub 레파지토리 경로를 넣으면 된다. /github subscribe owner/repository Jira 를 클릭한다. 네모박스에 안에 Connect project 가 채팅창에 보일 것이다. 이걸 클릭하여 프로젝트에 연결한다. 테스트. jira 에서 이슈를 만들면 slack에 메세지가 보인다. jira 에서 이슈를 만들고 그 이슈번호(예. SED-1)를 github에 커밑하고 푸쉬할때 메세지를 (예. SED-1 테스트용 커밑) 처럼 하면 jira 이슈에 작게 표시가 되고 slack에 메세지가 온다.

git 그림 한장으로 이해하는 사용법.

이미지
출처 -  https://blog.osteele.com/2008/05/my-git-workflow/ workspace 작업중인 소스 코드. local repository 현재의 컴퓨터에 있는 저장소. remote repository 서버. 그림을 보면 각 명령어의 범위를 알수 있다.