(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
(python) selenium 이용하여 시청률 엑셀로 만들기 import selenium # 여기서는 약자를 붙이지 않았다. from selenium import webdriver from webdriver_manager.chrome import ChromeDriverManager import time options = webdriver.ChromeOptions() options.add_argument("--start-maximized") driver = webdriver.Chrome() # 우선 경로나 옵션을 넣으면 동작 하지 않음 (해결 안됨) driver.maximize_window() # 창을 최고 사이즈로 함 driver.get('http://wwww.daum.net') # daum으로 이동 #driver.find .find_element_by_id("q.. Program Language/Python 2023.11.22
(python) pyautogui 기능들 import pyautogui as p # as뒤는 약자다. import time time.sleep(2) #2초간 인터벌을 인위적으로 부여한다. print(p.position()) #현재 x축과 y축의 좌표 print(p.size()) # 메인 모니터의 가로 세로 크기 print(p.onScreen(300, 300)) # 커서가 현재 가로, 세로 크기 안에 들어가는지 확인 # 마우스 이동 # 원하는 좌표로 이동 p.moveTo(300, 300, duration=1) # duration에서 이동시간을 초단위로 설정 # 현재 위치에서 원하는 거리만큼 이동 p.moveRel(500, 500, duration=1) # duration에서 이동시간을 초단위로 설정 # 마우스 drag and drop # 원하는 .. Program Language/Python 2023.11.22
(python) most likely due to a circular import 에러 저장한 파일이 불러오려는 라이브러리 이름과 같으면 에러가 발생한다. 해결되었다. Program Language/Python 2023.11.22
YUV Format 개념 이해 YUV란? RGB를 이용한 색 표현은 색 그대로를 전부 표현한다. 이는 무척 자세하고 풍부한 색 표현이 가능하지만 그만큼 용량이 커진다는 단점이 있다. 만약 동영상을 RGB를 사용한 데이터로 재생한다면 영상의 용량은 매우 커질 것이고 이는 치명적인 단점으로 돌아올 것이다. 그래서 생긴 포맷이 YUV 포맷이다. 빛의 삼원색을 표현하는 RGB와 달리 빛의 밝기를 나타내는 휘도(Y)와 색상신호 2개(U, V)로 표현하는 방식이다. 일반적인 TV나 비디오카메라에서 많이 사용되는 방식이며, 흑백을 표현하기 위한 흰색, 회색, 검정색을 표현하는 데 사용되는 RGB와 YUV의 값은 다음과 같다. 흑백 TV가 없어진 현재도 YUV 신호를 사용하는 이유는 RGB에 비해 압축률을 크게 향상할 수 있기 때문이다. 흑백만을 .. 이미지프로세싱/알고리즘 2023.11.02
회전 행렬 유도 회전행렬(Rotation matrix)은 좌표의 회전이 필요할 때 자주 사용된다. 한 번 유도를 해보면 시계 방향 회전이나 반시계 방향 회전에 대해 이해하는 것도 어렵지 않다. 그래서 그냥 무심코 사용하는 것보다 원리를 이해는 것이 중요하다. (x', y')는 중심 c를 기준으로 r만큼 떨어진(x, y)를 θ만큼 회전시킨 좌표다. 각 좌표는 삼각함수를 이용하여 표현할 수 있다. 같은 방법으로 (x', y')를 나타내면, 가 된다. 이를 삼각함수 합 법칙을 적용하면 가 된다. 여기에 (x, y)를 대입하면 다음과 같다. 이 식을 행렬로 바꾸면 다음과 같이 표현할 수 있다. 반시계 방향으로 회전하려면 각을 빼면 된다. 소프트웨어 공부/수학 2023.11.01
중심 정렬, 4point alignment 4 point alignment 4점 얼라인먼트는 2점과 달리 전체 면을 고르게 맞추는 방법이다. 그래서 사각형의 중심을 기준으로 얼라인먼트를 하게 된다. 두 좌표계의 중심을 p, q는 정의된 중심점이 일치되도록 정렬한다. 위치 이송량 dx, dy는 p와 q의 차이로부터 정해지며, 각도 이송량 dθ는 대각선 사이 각도의 평균으로 정한다. 소프트웨어 공부/알고리즘 2023.10.31
중심 정렬, 2point alignment 기판의 치수 변형으로 인해 발생하는 정렬 오차를 최소화하기 위해 이를 고려한 정렬 방법이 필요하다. 중심 정렬(center alignment)은 가장 널리 사용되는 알고리즘 중 하나다. 2 point alignment 두 마크를 잇는 직선의 중심을 각각 p, q라고 하면 다음과 같이 정의할 수 있다. 정의된 중심점이 일치되도록 정렬해야 한다. p, q를 중심으로 회전할 수 있다면 간단히 계산할 수 있지만 회전은 회전 중심으로 회전하기 때문에 회전 후에 위치 이송량 dx, dy를 구해야 한다. 물론 두 직선의 각도를 구한 후 차를 구해도 된다. 회전 행렬을 이용하여 사이 각 만큼 회전을 하면 다음과 같은 모양이 된다. q' 는 다음과 같이 계산할 수 있다. 회전된 중심 q'과 기준 중심 p의 차이를 이용하.. 소프트웨어 공부/알고리즘 2023.10.31
[C#] warning MSB3274 : This is a higher version than the currently targeted framework C#을 사용한 지가 얼마 되질 않아 기존 시스템을 다시 확인하는 것도 쉽지 않다. 분명 문제없이 되었는데 갑자기 되질 않는다. Visual Studio는 프레임워크 버전이 낮다고 계속 업데이트를 하란다. 그래서 4.6, 4.7, 4.8까지 해봤다. 그런데도 워닝이 사라지지 않는다. 워닝이 문제는 아니다. 워닝을 따라 잊는 수많은 error 가 문제다. 너무 간단한 문제였을까? 검색 결과가 없다. 그리고 알았다. C#은 프로젝트에 프레임워크 버전 설정하는 것이 있다는 것을.... 프로젝트 우클릭해서 속성을 누른 다음, 애플리케이션 탭에 들어가면 있다. 이로소 해결되었다. 참, 이 에러는 현재 프로젝트보다 높은 프레임워크로 제작된 레퍼런스를 사용하면 발생한다. Program Language/C# 2023.10.13
[C++] STL map에서 erase 사용 시 주의점 for (auto itr = m_elems.begin(); itr != m_elems.end(); ++itr) { if (itr->second->locking && !ignore_locked_obj) continue; m_elems.erase(itr); } map을 사용하여 조건을 통한 삭제를 실행하려 했는데, runtime error가 발생한다. 조건을 만족하는 iterator가 나타났을 때 해당 iterator를 지워버리면 해당 iterator는 end가 되어 버렸다. erase 하면 pos 값이 날아가버려서 그런가 보다. 미리 복사해 둬야 에러를 발생시키지 않는다. for (auto itr = m_elems.begin(); itr != m_elems.end();) { if (itr->second->.. Program Language/C & C++ 2023.08.24
[C#] 파일 쓰기 C#에서 파일을 쓰는 방법은 System.IO.File에 있는 Write 함수들을 이용하거나 StreamWriter를 사용하면 된다. 둘 다 같은 기능이지만, 하나에 파일에 반복해서 내용을 기입한다면 StreamWriter를 사용하는 것이 편리하다. string[] lines = { "First line", "Second line", "Third line" }; System.IO.File.WriteAllLines(@"C:\Users\Public\TestFolder\WriteLines.txt", lines); string text = "A class is the most powerful data type in C#. Like a structure, " + "a class defines the data an.. Program Language/C# 2023.02.17
[C#] List의 Find List의 Find는 검색 조건을 지정하여 List의 아이템을 검색할 수 있도록 해준다. 조건식에는 true/false를 리턴하는 조건문을 넣어주면 된다. int를 사용 시는 아래와 같다. 조건에 만족하는 값이 없을 경우에는 0을 반납한다. var list = new List() { 3, 2, 9, 8, 10, 3, 8 }; int number = list.Find(X => X > 5); Console.WriteLine(number); int number2 = list.Find(X => X > 10); Console.WriteLine(number2); class를 데이터 타입으로 사용할 시에는 조건에 만족하는 없을 경우 null을 반납한다. var list2 = new List(); list2.Add(n.. Program Language/C# 2023.02.17
[C#] ref 키워드, 참조 ref는 변수가 참조이거나 다른 개체의 별칭임을 나타낸다. ref 키워드는 정식 매개 변수를 변수여야 하는 인수의 별칭으로 설정한다. 즉, 매개 변수에 대한 모든 작업이 인수에서 수행된다. ref 매개 변수를 사용하려면 메서드 정의와 호출 메서드가 모두 ref 키워드를 명시적으로 사용해야 한다. static void FillArray(ref int[] arr) { if (arr == null) { arr = new int[10]; } arr[0] = 1111; arr[4] = 5555; } static void Main(string[] args) { int[] theArray = { 1, 2, 3, 4, 5 }; FillArray(ref theArray); Console.WriteLine("Array e.. Program Language/C# 2023.02.16