개요 이번 글에서는 자동화 완성과 강제 종료 기능에 대해 작성한다.자동화 준비 pyautogui는 외부 라이브러리이다. 바로 pip install pyautogui 를 입력해주자. 클릭을 알아서 해주는 건 좋은데, 화면 내의 좌표를 알아야 어디에 클릭을 시키든 말든 할 것이다. 좌표를 알아내는 가장 쉬운 방법은 pyautogui의 position 메소드를 써보는 것이다.import pyautoguiimport timewhile(True): print(pyautogui.position()) time.sleep(1.0) 여기서 좌표는 왼쪽 위로 갈수록 0에 수렴한다. 즉, 좌상단을 기준으로 좌표가 정해진다. 그 말은 자동화를 위해서는 대상이 되는 창 위치를 좌상단에 맞추는 것이 좋다는 게 된다. ..
전체 글
말라야의 아틀리에개요 장부는 A 엑셀에 있는데, 여러가지를 간편하게 계산해주는 비즈폼 엑셀은 B 엑셀에 있다... 문제는 비즈폼 엑셀은 암호로 보호가 걸려 있어서, 매크로를 사용할 수가 없다는 것이었다. 더 문제는 여기에 내가 2500줄이 넘는 장부를 하나하나 입력해야한다는 것이었지만. 즉, 외부 도구를 이용해서 엑셀을 간접적으로 건드릴 필요가 있었다. 이것은 그 이야기이다...준비할 거 최-신 파이썬 VS Code 엑셀계획 1. 내가 적은 장부가 있는 엑셀을 읽는다. 2. 데이터를 가공한다. 3. 가공한 데이터를 비즈폼 엑셀에 써넣는다. 4. 자동으로 굴러가는 걸 보면서 즐긴다.엑셀 준비 당연하겠지만 장부를 적어놓은 엑셀 파일이 있어야 한다. 사용하는 엑셀 프로그램은 이렇다. 행렬의 좌표도 뜨지 않고, 일부 셀은 잠겨..
개요 이번 글에서는 자동화에 사용할 데이터를 만들고, 불러오고, 폼 입력 사이트까지 가는 것을 다룬다.데이터 만들기 엑셀로 간단히 만든다. 진짜로 간단하다. 내가 만들 자동화 도구는 기준 연도, 폐쇄 대장 출력 여부 등 다른 것을 따지지 않고 그냥 주소만 딱 입력해서 바로 발급하는 시스템이기 때문이다. 만약 그런 것들의 조정이 필요하다면 행을 더 추가해서 내용을 넣어주면 되겠다.파이썬으로 데이터 불러오기 데이터시트의 내용을 불러오기 위해서는 두 가지 라이브러리가 필요하다. 파일 선택기를 열 수 있게 해주는 tkinter 내장 라이브러리와, 엑셀 파일을 데이터로 가공해주는 pandas 라이브러리다. 이 중 pandas 라이브러리는 직접 설치해줘야하기 때문에, 터미널에 pip install pandas 를 ..
개요 대리님의 의뢰로 토지대장 140개를 발급받던 중 인간의 존엄성에 대해 의구심을 품게 된 나는 결국 사무실 컴에 파이썬을 내려받았다. 왜냐면 정부24로 토지대장이니 건축물대장이니 하는, 무언가의 서류를 뽑는 것은 걍 쌩노가다였기 때문이다... 아무튼 만들기는했는데 잊어버릴까봐 걍 여기에 써둔다.냄새나는 코드 주의! 이 프로그래머는 자기 마음대로 어떤 사고방식에도 얽매이지 않는 희한한 코드를 짭니다!준비할 거 최-신 파이썬 (3.11~) VS Code 크롬 웹브라우저 정부24 로그인용 계정 실낱같은 파이썬 지식 (옵션)다시는 이런 반복적인 일을 내 손으로 하지 않겠다는 의지계획 어렵지 않다. 1. 웹사이트에 들어가서, 2. 정부24에 로그인하고, 3. 토지대장 발급 링크를 찾아서, 4. 폼에 맞춰 입력..
컴퓨터 네트워크 컴퓨터 간의 통신을 의미한다. 이는 인터넷을 통해 웹 사이트를 보는 것부터, 하드 디스크 안의 파일을 보는 것까지 모두 포함된다. LAN (Local Area Network) 건물 안에서처럼, 특정 지역을 범위로 하는 네트워크다. WAN (Wide Area Network) 인터넷 서비스 제공자(ISP, Internet Service Provider) 등이 제공해주는 광역 네트워크다. WLAN (Wireless Local Area Network) LAN인데 연결선이 없는 버전이다... 프로토콜 컴퓨터 간 통신을 위한 규칙이다. 내가 ---라는 프로토콜로 통신을 시작하면, 받는 쪽에서는 해당 프로토콜을 읽고 통신으로 받는 데이터를 어떻게 다룰지 결정할 수 있게 된다. 당장 인터넷에서 쓰는 H..
여기서는 자바로 openAPI를 사용해 데이터를 확인해보는 부분을 구현한다. IDE 설정 이클립스만 써와서 이번에도 이클립스를 사용할 생각이다. 웹 기능을 완전히 사용하려면, Java SE(Standard Edition)가 아닌 Java EE(Enterprise Edition)를 사용해야한다. 자바의 버전에 따라 IDE도 차이가 생기기 때문에, 기존의 이클립스가 아닌 이클립스 EE를 따로 찾아 설치해야한다. 그냥 홈페이지 가서 받을 수 있다. 인텔리제이의 경우 Ultimate Edition을 쓰는 것이 권장된다. 다만 그건 비싸고... 그렇기에 이클립스를 기준으로 설명한다. New Project -> web -> new dynamic web project를 선택하여 동적 웹 페이지를 제공할 수 있는 서버..
개요 가끔... 아주 가끔 모바일 데이터가 마려울 때가 있다. 집이라면 모르겠지만, 밖에서는 남의 와이파이를 훔쳐쓰는 것만큼 달달한 것이 없다. 기생충 영화의 한 장면 처럼 남의 집에 바짝 붙어서 와이파이를 끌어쓰는 것도 좋지만, 그냥 대놓고 국가에서 쓰라고 하는 공공 와이파이를 쓰는 쪽이 양심면에서 더 당당해질 수 있다. 하지만 폰으로 공공 와이파이를 검색하는 것에는 한계가 있다. 세상에 몇 개 있지도 않은데, 폰은 가까운 거리의 와이파이만 보여주기 때문이다. 조금 먼 거리라도 내가 찾아가면 그만이니, 공공 와이파이가 있는 곳이 어딘지 좀 알고 싶은 것이다. 어떻게 만들 것인가 어떤 방식으로 제공할까 어플리케이션을 만들어서 제공할수도 있고, 정적 웹페이지를 통해 클라이언트 스스로 모든 일을 다 하게끔 ..
가상 메모리 가상 메모리란 사용 가능한 메모리가 실제로 존재하는 메모리보다 큰 것처럼 보이게 하는 기술이다. 프로세스 자체가 차지하는 메모리는 그렇게 크지 않지만, 그 프로세스가 만들어 낼 메모리의 양은 생각보다 거대할 수 있다. RAM이 가진 메모리의 양이 4GB인데, 프로세스에서 8GB만큼의 데이터를 만들어버린다면 할당량을 넘어서기 때문에 제약이 발생하고 만다 제약을 피해서 최대한으로 확보하면? 다른 프로세스들이 메모리를 확보할 수 없게 된다. 그럼 프로세스마다 메모리 할당량을 제한하면? 대규모 데이터나 복잡한 프로그램은 만들 수 없게 된다. 게다가 메모리 할당량을 제한한다는 것은 곧 RAM에 해당 메모리만큼의 용량을 항상 확보해둬야 한다는 것인데, 이는 메모리를 낭비하는 꼴이 된다. 생각해보자, 프..
스레드 스레드는 프로세스 내에서 작업을 수행할 때 사용되는 작업 단위이다. 하나의 응용 프로그램이 여러 프로세스를 가질 수 있고, 하나의 프로세스는 여러 스레드를 가질 수 있다. 병렬적으로 작업을 수행한다는 것이 프로세스와도 일맥상통해서 경량 프로세스(Light Weight Process)라고도 부른다. 스레드의 기능을 쓰지 않겠다고 하더라도, 프로세스에서는 이미 스레드가 하나씩은 동작하고 있다. 이렇게 스레드 하나만으로 동작하는 프로세스를 단일 스레드 프로세스(Single Threded Process)라고 한다. 기본적으로 프로세스끼리는 다른 프로세스의 데이터로 접근할 수가 없다. IPC로나마 간접적으로 프로세스의 데이터에 접근할 수 있는데, 스레드는 프로세스에 귀속되므로 IPC 같은 거 없이 프로세스..
프로세스 (Process) 프로세스는 현재 실행중인 프로그램을 뜻한다. 정확히는 메모리에 올라와 있는 상태에서 실행 중인 프로그램이다. Process 외에도 Task, Job 등의 단어로도 쓰인다. 응용 프로그램 밑에서 여러 프로세스가 동작하기 때문에, 둘의 의미는 다르다. 하나의 PC에서는 정말 많은 프로세스가 실행되고 있다. 우리 눈에는 모든게 동시에 돌아가는 것처럼 보이지만, 사실 이 프로세스들은 하나하나가 순서를 따져가면서 CPU의 연산을 기다리고 있다. 이렇게 프로세스의 작동 순서를 결정하는 것을 프로세스 스케줄링(Process Scheduling)이라 한다. 프로세스의 구조 프로세스는 text(code), data, stack, heap의 네 가지로 구성된다. text(code): 프로세스가 ..
운영체제 (Operating System) 시스템 자원을 관리한다. 여기서 시스템 자원은 컴퓨터의 하드웨어 부분을 말한다. 즉, OS는 CPU, Memory, IO Devices라는 PC의 3요소를 관리한다고 할 수 있다. CPU: 각 프로그램에 얼만큼의 연산량을 할당할지를 담당해준다. Memory: 프로그램을 어느 주소에 저장할지, 어느 정도의 메모리를 확보해줘야하는지를 결정해준다. 저장매체(HDD, SSD): 어떻게, 어디에 저장할지를 정해준다. 키보드, 마우스 등 IO Devices: 들어오는 입력과, 화면이나 다른 수단으로 출력되는 것을 알맞게 변환해준다. 사용자와 컴퓨터간의 상호작용을 지원한다. 우리가 직접 전기신호를 보내줘도 좋겠지만...? OS가 있다면 그냥 몇 번 딸깍딸깍해서 해결할 수 있..
Machine Language: CPU가 제공하는 Instruction Code 컴파일: 프로그래밍 언어로 작성된 프로그램은 컴파일러를 통해 CPU의 Instruction Code로 전환된다. 컴파일을 안하는 언어(파이썬, JS 등): 인터프리터 언어라고도 하며, 이들은 코드를 한 줄씩 기계어로 전환하여 실행시킨다. 한 줄 실행할 때마다 번역 과정이 동반되므로 컴파일 언어에 비하면 상대적으로 느리다. LOD A, [1003h] LOD -> 10h의 Instruction Code A -> Accumulator(가산기)를 나타내는 약자 풀이 -> 1003h에 있는 데이터를 로드하여 Accumulator에 넣으라는 뜻 BEGIN: LOD A, [1005h] 코드를 재작성할 때마다 주소가 바뀌므로 이름을 붙여주..