본문 바로가기

파이썬189

pyhwpx 간편설치 및 실행 방법 2024년 11월 현재, pyhwpx에 대한 문서화가 아직 완료되지 않은 상태입니다.다만, pyhwpx Cookbook이라는 (튜토리얼 형태의) 전자책을 집필중이며, 위키독스에 공개되어 있습니다.주소는, https://wikidocs.net/book/8956/ 입니다. pyhwpx는 고급 업무자동화 기능의 구현보다는,기본적이고 많이 쓰이지만 다소 사용법이 까다로운 API들을보다 직관적이고 간단히 실행할 수 있도록 만들어진 모듈입니다.(아직은 개발 초기라서)직관적이지 않거나, 일명 파이써닉하지 않은 부분이 있습니다.. 조금씩 개선하고 보완하겠습니다.현재 제 PC에 설치되어 있는 파이썬은 3.11, 아래아한글은 2022 버전입니다.대부분의 포스팅은 주피터노트북으로 진행하겠습니다. 그럼 설치부터 시작해봅시다... 2023. 11. 28.
파이썬 모듈 pyhwpx를 소개합니다. 안녕하세요? 일코입니다. 업무자동화 강의를 준비하다 문득 이런 생각이 들었습니다. 저는 업무자동화와 코딩을 공부한지 올해로 8년 정도 되어서, 다소 복잡한 코드도 이 즈음 되니까 친숙한 느낌이 들고 이젠 좀 적응이 되는 것 같은데.. 이제 막 코딩에 입문한 분들이 아래아한글 자동화를 경험하면 공식문서도 시원찮고, 문법이나 구조도 복잡하고.. 진입장벽이 너무 높겠더라고요. 호기심에 시작하더라도, 배우다 지쳐 그만두실 것 같았습니다. 저 혼자 쓰는 거라면 이미 익숙해져버린 방법을 계속 쓰면 되는데, 새롭게 배우려는 분들에게는 뭔가 더 직관적인 라이브러리가 있으면 좋겠다 싶은 마음이 들어서 파이썬 모듈을 하나 제작하게 되었습니다. 이름하여 pyhwpx! hwpy나 hwppy로 짓고 싶었는데, hwpy는 이미 .. 2023. 11. 28.
기본메서드 매핑 완료 2023. 11. 16. 01:48 올해 수능시험을 보는 수많은 젊은이들, 이따 있을 시험을 위해 어마어마한 시간을 준비했을텐데.. 밤잠을 못 이루고 있을 것 같다. 난 졸려 죽겠다ㅜ 방금 드디어 공식문서의 액션리스트 중 현재 실행되는 모든 액션을 snake_case로 매핑 완료했다. 이젠 메서드에만 있고, API문서에는 없는 메서드들이 남았다. (매핑은 완료했고, 문서화가 남았다.) docstring 작성도 평생 이렇게 꼼꼼하게 해 본 적이 없었다. 몸은 힘들지만, 그래. 솔직히 즐겁기도 하다. 장고로 직접 블로그를 만들어 운영했던 2017년이 문득 기억난다. 웹에 대해 아무 것도 모르고 (지금도 잘 모르지만) 무작정 장고가 좋아서 이것저것 따라해보다가 썸머노트와 프리즘js, 여러 가지 라이브러리를 추.. 2023. 11. 16.
hwpx 모듈 개발 중에 버그 하나를 해결하면서.. 2023. 11. 15. 개발일기 hwpx 모듈 개발에 착수한지 일주일쯤 되었는데, 예상하지 못한 몇 가지 문제를 우연히 발견하게 되었다. Hwp라는 클래스를 만들면서, 생성자(__init__) 안에서 win32로 한/글 오토메이션 오브젝트를 생성하고 인스턴스가 실행하는 모든 메서드는 내부의 hwp 오브젝트와 연결되게끔 매핑을 해두었는데, 오토메이션 프로퍼티 중 HeadCtrl과 LastCtrl 두 개가 말썽이었다. Hwp인스턴스.HeadCtrl이 클래스 내부에 생성되어 있는 hwp오브젝트.HeadCtrl과 같지 않다는 것을 발견했다. 새 문서를 Hwp로 열었는데, 표를 몇 개 추가한 후 여전히 인스턴스.LastCtrl이 "단 정의"라는 충격적인 결과를 보는 와중에도, hwp.LastCtrl.Next.U.. 2023. 11. 15.
아래아한글 업무자동화를 위한 파이썬 모듈, pyhwpx 업무자동화 관련한 교육을 몇 회 진행해보면서 강하게 느낀 부분 중 하나는, 일반 사용자 대부분이 "긴 코드"에 대해 불편함을 느낀다는 건데요. 정부부처, 공공기관이나 기관 연수원에서는 장기간의 교육은 잘 만들어지지 않고, 7~8시간 안에 파이썬 기초부터 업무자동화 중급까지 진행해야 하는 상황, 업무자동화에 유용하게 써먹었던 이런저런 함수들을 모아서 간단한 클래스로 구현해놓고, pypi에 업로드해 두려고 합니다. 문서화나 동영상 촬영도 틈틈이 해 보고 싶고요. 우선 사용법은 아래와 같습니다. 1. 터미널에서 pip install pyhwpx로 모듈을 설치한다. 2. 파이썬에서 from pyhwpx import Hwp로 클래스를 임포트한다. 3. hwp = Hwp()로 한/글을 연다. 4. 한/글에서 제공하.. 2023. 11. 7.
파이썬의 리스트도 표현할 수 있나? # 투두리스트 앱 만들기 앞선 포스팅에서는 간단히 rx.heading이나 rx.text를 이용해 화면에 글자를 출력해보았으며 State라는 클래스와 클래스 변수인 Var를 이용해 동적인 웹앱, Counter를 구현해보았다. 그럼 이런 생각도 해볼 수 있을텐데? 단순한 텍스트 목록은 rx.text를 나열하면 될텐데, ["a", "b", "c"] 같은 리스트도 표현할 수 있을까? (직접 공식문서를 찾아 읽어보신 분이라면, 어렵지 않게 구현하실 것) 이 때는 우리가 사용할 또 다른 레이아웃 컴포넌트, 바로 rx.foreach가 필요하게 되는 시점이다. (굳이 비유하면 파이썬의 for문과 map 함수를 합친 느낌이다.) 참고로 rx.foreach는 단순한 파이썬의 for문과는 살짝 다르다. 무엇이 다른고 하니, rx.foreach(리스.. 2023. 10. 3.
간단한 동적 웹앱 만들어보기 : Counter 이번 포스팅에서는 아래와 같은 페이지를 만들어 보고, State의 사용법에 대해 간단히 이해해보고자 한다. 아래와 같은 코드로 index 함수를 만들었다. import reflex as rx def index(): return rx.vstack( # 행 방향으로 나열하는 레이아웃 컴포넌트 rx.heading("Counter"), # 제목 rx.hstack( # 열 방향으로 나열하는 레이아웃 컴포넌트 rx.button("-", color_scheme="red"), rx.heading("0"), rx.button("+", color_scheme="green") ) ) app = rx.App() app.add_page(index) app.compile() 참고로 위에서 사용한 vstack, hstack은 각각.. 2023. 10. 3.
reflex 웹페이지는 기본적으로 클래스 하나, 함수 하나로 구성된다. reflex는 프론트엔드와 백엔드의 구분이 다소 모호(?)한 pure-python fullstack webframework이다. reflex로 만드는 웹앱은 기본적으로 State라는 클래스 하나, 그리고 index라는 함수 하나로 구성된다. 이를 이해하기 위해서는 가장 간단한 앱 하나를 만들어보는 것이 좋다. 우선 State 없이 간단한 페이지함수인 index를 만들어보자. import reflex as rx def index(): return rx.heading("Hello world!") app = rx.App(state=State) app.add_page(index) app.compile() python 코드로 구성된 간단한 소스이지만, 이는 리플렉스를 구성하고 있는 node.js, React, N.. 2023. 10. 3.
[원데이클래스 안내] 9.2(토) 동대구역 앞 보고서 작성 자동화 원데이 클래스 처음으로 공지포스팅을 올려봅니다. 9월2일 토요일 오후 2시 동대구역 인근에서 보고서 작성 관련 업무자동화 튜토리얼로 원데이클래스를 진행하게 되었습니다. 이번까지만 오프라인으로 진행하고, 앞으로는 줌 등으로 온라인 과정도 개설하겠습니다. 접수는 온오프믹스 플랫폼을 활용하오니, 관심 있으신 야근러 분들의 많은 참여 바랍니다^^ 입문자를 대상으로 커리큘럼을 짰지만, 참석하신 분들의 수준을 고려하여 유연하게 커리큘럼 수정 예정입니다. 2023. 8. 31.