(C#) DataGridView 데이터 업데이트 안되는 경우 Edit나 ComBox를 사용할 경우, 변경 후 Focus를 잃을 때까지 데이터는 업데이트 되지 않아 콤보박스를 수정하고 바로 저장을 누른다고 데이터가 저장되지 않는다. 변경 후 Enter 키를 누르거나 다른 Cell을 눌러줘야만 제대로 변경점이 적용된다. 이럴 때는 저장 전에 EndEdit()를 호출하면 된다. dataGridView1.EndEdit(); 간단하게 해결 했다. Program Language/C# 2024.08.05
(C#) 파일 다이얼로그 파일 열기OpenFileDialog dlg = new OpenFileDialog(){ FileName = "Select a Image file", Filter = "Image files (*.bmp)|*.bmp", Title = "Open Image file"};if (DialogResult.OK == dlg.ShowDialog()){ var filepath = dlg.FileName;} 파일 저장 SaveFileDialog dlg = new SaveFileDialog(){ FileName = "NewImage.bmp", Filter = "Image files (*.bmp)|*.bmp", Title = "Save Image file", OverwritePrompt =.. Program Language/C# 2024.07.26
(MFC) CFileDialog 필터 사소한 실수 TCHAR szFilter[] = _T("Bitmap Data (*.bmp) | *.bmp ||");CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter, this); 이렇게 하면 *.bmp 파일이 나타나지 않는다. 왜?확장자 필터링 하는 문자열에서 뒤에 공백이 있으면 공백도 문자로 인식하는 듯 하다. TCHAR szFilter[] = _T("Bitmap Data (*.bmp) | *.bmp||"); 이렇게 하면 제대로 동작한다. Program Language/API | MFC 2024.05.22
(MFC) Button Click 이벤트 Button Click을 테스트해 보는데 이상한 점을 발견했다.app 밖을 클릭하여 포커스를 잃은 뒤 버튼을 클릭하면 동작을 하지 않는 경우가 발생하는데,이것은 이전에 눌렀던 버튼을 눌렀을 때 그런 현상이 보였다. 화면 밖 클릭 -> 버튼 1 클릭 -> 화면 밖 클릭 -> 버튼 1 클릭 이런 식이다. LButtonDown과 LButtonUp 이벤트는 모두 정상적으로 발생했는데 Click만 발생하지 않는다.그래서 LButtonDown 이벤트에 SetFocus()를 넣으니 그제야 동작한다. 이건 원래 버튼도 그런 건지, 오버라이딩해서 그런 건지는 잘 모르겠다.어쨌든 해결!!void CButtonEnh::OnLButtonDown(UINT nFlags, CPoint point){ if (m_bDisabled).. Program Language/API | MFC 2024.05.21
(OpenCV) SULF 해보기 패턴의 각도를 구할 필요가 생겨서 SULF를 구현해 보기로 했다. 머리가 복잡한데 어려운 아이를 해보려니 시간도 지식도 부족해서 곤란하던 차에 OpenCV에서 SULF를 지원한다는 걸 알게 되었다. opencv_contrib 어쩌고 하는 녀석을 cmake에서 추가해 주면 가능했다. (처음에 헤드 파일 없다고 생쇼를 했다) 그리고 구글링해서 따라 해 봤다. 그런데 이상하게 특징점은 잘 찼는데 영역을 못 잡아 냈다. 이렇게 말이다. 구글링을 해봐도 특징점이 제대로 잡지 못하면 그럴 수 있다고 했지만 아무리 봐도 제대로 잡은 것 같고 못 잡았더라도 너무 엉뚱한 곳을 찾아냈다. 하루를 지나 다음날 가만히 들여다보니 코드가 잘못되었다. 복붙 하다가 잘못한 건지 잘못된 예제를 따라한 건지는 잘 모르겠다. 그리고 고.. Program Language/OpenCV 2024.05.21
error C3861: 'min': identifier not found 1>c:\program files (x86)\windows kits\8.1\include\um\gdiplustypes.h(689): error C3861: 'min': identifier not found 1>c:\program files (x86)\windows kits\8.1\include\um\gdiplustypes.h(690): error C3861: 'min': identifier not found 오랜만에 봐서 살짝 당황했네. MIN, MAX가 중복 선언돼서 문제 되는 건 기억나는데.. 이건 opencv와 Gdiplus의 min, max가 충돌(?) 혹은 선점이 잘못되어서 그런 것 같다. 를 사용하지 않았는데, 이런 에러가 떠다니, opencv.hpp 보다 먼저 인클루드 해주면 된다. #inc.. Program Language/OpenCV 2024.01.11
(OpenCV) LNK2019: unresolved external symbol "class cv::debug_build_guard::_InputOutputArray .... Error Linking static libraries - OpenCV Q&A Forum Error Linking static libraries edit Hi, I built opencv from source and I'm trying to make a dll that uses some of the opencv .lib. In visual studio I set the additional directory and dependencies as follows (.lib files are in that folder): [...]\lib;%(Addi answers.opencv.org 한참을 헤매다가 debug 프로젝트에서 release 라이브러리를 가져와서 발생한 에러라는 걸 알았다. 그래서 debug 라이브러.. Program Language/OpenCV 2024.01.10
C4430 : missing type specifier - int assumed. 오래전에 해결해 두고 또 같은 에러로 헤매고 있었다니.. 아 놀라워라.. C++에서 순환 참조(?)하게 되면 이런 에러가 뜬다. //A.h #include "B.h" class A{ B* b; .. }; //B.h #include "A.h" class B{ A* a; // error error C4430: missing type specifier - int assumed. } 이런 식으로 말이다. 결국 전방 선언을 이용해서 해결해야 한다. //B.h class A; // change the include of A.h to forward declaration class B { A* a; }; 대신 소스파일에서 해당 헤드파일을 포함해주면 된다. Program Language/C & C++ 2023.12.15
git push maser "no matching host key type found. Thier offer : ssh-rsa" error git에서 ssh 접속 시 no matching host key type found. Thier offer : ssh-rsa 에러가 발생한다. 이는 push나 pull 같은 명령어를 쓸 때 해당된다. 이것은 git의 version이 2.3 이상이 되면 ssh에서 rsa 방식을 지원하지 않아 PubkeyAcceptedAlgorithms와 HostKeyAlgorithms 옵션을 직접 지정해줘야 한다. git 폴더 아래 cofig 파일을 열어 옵션을 추가한다. [core] repositoryformatversion = 0 filemode = false bare = false logallrefupdates = true symlinks = false ignorecase = true sshCommand = ssh .. Program Language 2023.11.28
(python) CRM 워드파일 만들기 import mailmerge from mailmerge import MailMerge from datetime import date import pandas as pd template_1 = '고객감사메일.docx' template_2 = '고객감사메일-구매이력.docx' document_1 = MailMerge(template_1) customer_1 = { '등급': 'Gold', '전화번호': '070-XXX-XXXX', '상호': '좋은 신발', '구입총액': '500,000원', '배송한도': '50,000원', '주소': '서울시 종로구 11번지', '날짜': '{:%Y-%m-%d}'.format(date.today()), '할인': '5%', '수신자': '이순신'} document_1.m.. Program Language/Python 2023.11.28
(python) 두 개 엑셀 파일 비교하기 import pandas as pd import xlwings as xw excel1 = '분개장_1.xlsx' excel2 = '분개장_2.xlsx' df_excel1 = pd.read_excel(excel1, 'Sheet1', na_values=['NA']) df_excel2 = pd.read_excel(excel2, 'Sheet1', na_values=['NA']) df_excel1['version'] = 'cur' df_excel2['version'] = 'new' gb_excel1 = df_excel1.groupby(['전표일자', '전표번호']) gb_excel2 = df_excel2.groupby(['전표일자', '전표번호']) df_excel1['전표번호seq'] = gb_excel1.cu.. Program Language/Python 2023.11.28
(python) 코스피 종목 데이터 가져오기 import pandas as pd import numpy as np import FinanceDataReader as fdr import xlwings as xw import os base_dir = os.getcwd() df_code = pd.read_csv('종목코드.csv') df_code = df_code[df_code['검색'] == 1] df_code = df_code.reset_index() print(df_code) date_s = '2021-10-01' date_e = '2022-10-30' tbl_list = [] for i in range(len(df_code)) : # csv로 읽어서 그런지 숫자 첫자리의 0이 계속 삭제되어서 강제로 채웠다. # 종목코드는 6자리니까 강제로 맞췄다.. Program Language/Python 2023.11.28
(python) pandas ix -> iloc 조금 오래된 교재를 보고 따라 하다 보니 .ix 를 사용하는 예제를 작성할 때 코드 자동 생성이 안되길래 기분이 싸~ 했는데... 계속 에러다. 그래서 검색 검색하다 보니 2020년 초에 해당 기능이 deprecated(더 이상 사용하지 않음) 되었다는 걸 알게 되었다. 그래서 .ix 대신에 .iloc을 넣으면 된다. 오래된 교재를 쓰면 역시 이런 문제가 있다. ㅎㅎ iloc은 행번호로 데이터를 가져오고, loc은 라벨 이름으로 가져 온다. Program Language/Python 2023.11.28
(python) 네이버 뉴스 크롤링 import selenium # 여기서는 약자를 붙이지 않았다. import pandas as pd from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.support.ui import WebDriverWait from selenium.common.exceptions import TimeoutException from selenium.common.exceptions im.. Program Language/Python 2023.11.27
(python) bad operand type for unary +: 'str' news_html = "" for i in range(len(df_news_final)) : news_html = news_html + "\ " + str(df_news_final.loc[i, '뉴스제목']) + "\ " + str(df_news_final.loc[i, '매체']) + " \ " + str(df_news_final.loc[i, '등록일']) + "" python 3에서 final_sentence="""Pulled """+stock+""".""" print (final_sentence) 이건 동작하지만, final_sentence="""Pulled""" +stock+""".""" print (final_sentence) 는 동작하지 않는다. 아마 operator 정의 문제인 듯하다. 아래와.. Program Language/Python 2023.11.27
(python) 정부 입찰 공고 자료 수집 import selenium # 여기서는 약자를 붙이지 않았다. import pandas as pd from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options from webdriver_manager.chrome import ChromeDriverManager import time service = Service(ChromeDriverManager().install()) options = Options() options.add_argument("--start-maximized") driver = webdriver.Ch.. Program Language/Python 2023.11.23
(python) 셀레리움 에러 어제 실습 예제대로 하니까 계속 에러가 발생했다. import selenium # 여기서는 약자를 붙이지 않았다. from selenium import webdriver driver = webdriver.Chrome('chromedriver.exe') 크롬드라이버를 내려받으러 갔지만, 크롬이 워낙 신상이라 최신 버전이 없었다. chromedrivermanger를 이용하면 된다고 해서 이렇게도 해봤다 import selenium # 여기서는 약자를 붙이지 않았다. from selenium import webdriver from webdriver_manager.chrome import ChromeDriverManager driver = webdriver.Chrome(ChromeDriverManager().i.. Program Language/Python 2023.11.23
(python) 국세청 사업자 조회 import selenium # 여기서는 약자를 붙이지 않았다. from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options from webdriver_manager.chrome import ChromeDriverManager import time service = Service(ChromeDriverManager().install()) options = Options() options.add_argument("--start-maximized") driver = webdriver.Chrome(service=service.. Program Language/Python 2023.11.23