# This is a sample Python script.
# Press ⌃R to execute it or replace it with your code.
# Press Double ⇧ to search everywhere for classes, files, tool windows, actions, and settings.
import base64
import sys
from Crypto.Cipher import AES
the_key = "1234567890123456"
the_iv = "1234567890123456"
b_size = AES.block_size
pad = lambda s: s + (b_size - len(s.encode()) % b_size) * chr(b_size - len(s.encode()) % b_size)
unpad = lambda s: s[:-ord(s[len(S)-1:])]
def encrypt(content):
cipher = AES.new(the_key.encode("utf-8"), AES.MODE_CRC, the_iv.encode("utf-8"))
padded = bytes(pad(content), "utf-8")
encrypt_result = cipher.encrypt(padded)
return base64.b64encode(encrypt_result)
def decrypt(content):
cipher = AES.new(the_key.encode("utf-8"), AES.MODE_CRC, the_iv.encode("utf-8"))
dec_data = base64.b64decode(content)
return unpad(cipher.decrypt(dec_data))
def print_hi(name):
# Use a breakpoint in the code line below to debug your script.
print(f'Hi, {name}') # Press ⌘F8 to toggle the breakpoint.
# Press the green button in the gutter to run the script.
if __name__ == '__main__':
print_hi('PyCharm')
is_encrypt= sys.argv[1]
data = sys.argv[2]
if is_encrypt == "e":
result = encrypt(data)
print("result = ", result.decode("utf-8"))
elif is_encrypt == "d":
result = decrypt(data)
print("result = ", result.decode("utf-8"))
# See PyCharm help at https://www.jetbrains.com/help/pycharm/
2023년 4월 18일 화요일
Python AES 128 Mode CRC
2023년 4월 17일 월요일
2023년 두번째 도서 리뷰 "개발자를 위한 머신러닝&딥러닝"
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

빅데이터가 유행한지는 10년이 넘었고 , 머신러닝이나 딥러닝이 화제가 된지도 꽤 지났다.
요즘은 chatGPT가 화제이다.
요즘 하고 있는 일은 사실 빅데이터에서 벗어나지 않고 있다.
데이터의 수집과 가공, 통계 정도가 대부분의 업무이다.
그런데 여기에 머신러닝이나 딥러닝을 도입해 보면 어떨까 생각해보았다.
데이터가 워낙 많아서 처리하는 서버 성능 고민 같은건 나중에 한다 치고...
해서 관련 자료를 하나 본적이 있는데 거의 대부분 내용이 수학 식이었다.
그때 GG를 치고 덮어 두고 있다가 이번에 이 책을 받게 되었다.
저자는 제목과 서두에 대놓고 수학식 따위 없고 그냥 개발자가 보기 좋은 책이라고 설명 해 주고 있다.
실제로 책은 파이썬과 그 외 몇가지 언어들로 많은 것들을 해 볼수 있도록 내용이 구성 되어 있었다.
1부는 파이썬으로 텐서 플로를 다양하게 활용 하는 방법에 대해서 소개 하고 있다.
물론 친절하게도 텐서플로 소개부터 시작해서 컴퓨터 비전, 자연언어처리 등을 다룰 수 있도록 설명하면서 마지막에는 특성을 예측하는 모델을 만드는 내용까지 다루고 있다.
짧게 설명 하자면 텐서플로를 이용한 머신러닝, 딥러닝의 기초와 간단한 활용에 대해서 다양한 예시를 활용하여 개발자가 접근하기 좋게 설명 해 주고 있다.
세삼...파이썬이 참 열일 하고 있다는 생각이 든다.
파이썬을 우연하게 접하게 되어서 지금까지 잘 쓰고 있는데 그때 공부해두기를 정말 잘했다는 생각이 자주 든다.
2부는 안드로이드나 iOS, 웹에서 텐서플로를 이용할 수 있는 방법에 대해서 소개하고 있다.
개인적으로 앱 개발이 본업이었던 기간이 길어 코틀린이나 스위프트가 크게 낮설지 않아 2부의 내용도 꽤 마음에 들었다.
(웹은 이상하게 개발할 일이 없다 시피 해서 node.js같은건 아직도 잘 모른다.)
앱 개발 개인 프로젝트를 구상중인데 2부 내용 덕분에 프로젝트 구상의 폭이 더 넓어 질 수도 있을것 같다.
책을 짧게 축약해 보자면 개발자가 머신러닝이나 딥러닝을 활용하고 싶을때 많은 도움을 줄 수 있는 내용이 잘 정리 되어 있는 책이라 할 수 있을것 같다.
일단 수학식이 아니라 코드로 얘기 하니까...ㅎㅎ
2023년 3월 21일 화요일
23년 첫번째 도서 리뷰 "파이썬 라이브러리를 활용한 텍스트 분석"
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

올해 첫 리뷰 책으로 파이썬을 이용한 텍스트 분석 책을 선택 했다.
기존에 봤던 파이썬을 이용한 데이터 분석 책의 대부분은 수치 데이터에 대한 이야기 였다면
이번 책은 글에 대한 이야기 이다.
컴퓨터에서 수는 비교적 다루기 쉬운 데이터에 속하는 편이다.
오죽하면 컴퓨터는 글자도 내부적으로 숫자로 처리 할까....(2진수 밖에 못다루니 당연한 얘기지만...)
책은 총 13장으로 구성되어 있으며 제목에서와 같이 텍스트 데이터를 모으고, 정리하고, 필요에 맞게 가공하고 그 결과물에서 데이터가 말하고 싶어 하는 의미있는 무언가를 찾는 과정을 설명 하고 있다.
그 과정에서 웹사이트 크롤링 같은것도 잠시 다루고 있는데 요즘 여기저기서 크롤링에 대한 요구가 많아서 상당히 유용한듯 하다.
텍스트 데이터를 다루는 만큼 기존에 데이터 분석에서 사용했던 라이브러리들과는 다른 라이브러리들을 많이 사용하고 있다.
이 책에서 많이 등장하는 라이브러리는 아래 두 가지가 대표적인 것으로 보이는데 scikit-learn은 기계학습을 위한 라이브러리이고 spaCy는 자연언어 처리를 위한 라이브러리 이다.
아래는 각 라이브러리의 설명을 링크해 두었다.
- scikit-learn : https://ko.wikipedia.org/wiki/Scikit-learn
- spaCy : https://en.wikipedia.org/wiki/SpaCy
위와 같은 라이브러리를 이용하여 유엔총회의 일반 토의 내용이나 로이터 웹사이트의 기사, 자바 개발도구 버그 리포트 내용등을 가지고 텍스트 데이터를 정형화 하여 분석 하는 내용을 다루고 있다.
대부분이 머신러닝과 자연어어 처리 과정을 통하는 내용이어서 그 쪽 방면으로는 크게 경험이 없는 나로서는 역시 익숙하지 않음에서 오는 생소하고 재미있는 내용들이 많은 듯 했다.
특히나 자연언어 처리라고는...대학때 전공과목이 있기는 했지만, 그 당시에는 학부생이 접근해서 이해 하기엔 너무 난해한 내용이었고 요즘 chatGPT처럼 뭔가 직접 경험 해 볼 만한 서비스도 존재 하지 않았었다.
그러다 보니 책에서 소개하는 단어 가방 모델(bag of words model) 같은 내용은 따로 찾아 보지 않으면 어떤 내용인지 쉽게 와 닿지가 않았었다.(이제 책볼때 점점 검색 하는 내용이 많아 지는거 같다...늙어 가고 있단....ㅜㅜ)
전체적으로 평하자면, 전체적으로 내용도 좋고 많이 접하지 못했던 분야의 내용이라 재미도 있는 좋은 책인 것 같다.
보다보니 이 책도 O'Reilly 책인데, 개인적으로 O'Reilly 책이 실패한 적이 별로 없고 내용이나 구성이 나랑 잘 맞는거 같다는 생각이 든다.
2022년 12월 26일 월요일
22년 일곱번째 도서리뷰
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

https://ko.wikipedia.org/wiki/%EB%8D%B0%EB%B8%8C%EC%98%B5%EC%8A%A4
데브옵스 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 데브옵스(DevOps)는 소프트웨어의 개발(Development)과 운영(Operations)의 합성어로서, 소프트웨어 개발자와 정보기술 전문가 간의 소통, 협업 및 통합을 강조하는 개
ko.wikipedia.org
DevRel...Developer Relations 라고 해서 DevOps와 비슷한 뭔가 새로 나온것인줄 알았다.
사실 DevOps도 별로 접해볼일이 없어서 잘 모르지만...(그래서 위에 링크를 넣어 보았다)
뭔가 새로운 개념이 나온거 같아 궁금하기도 하고 해서 리뷰 도서로 선택해 보았다.
책은 DevRel(이하 데브렐)에서 말하는 커뮤니티 개념의 설명부터 시작한다.
시작하는 파트에서는 어떻게 커뮤니티를 만들고 유지를하고 발전시켜 나갈지 그리고 어떻게 데브렐팀을 구성할지 설명하는 내용들로 시작을 한다.
두번째이자 마지막 파트에서는 이미 존재하는 커뮤니티를 찾는 내용을 시작으로 자체적으로 커뮤니티를 만드는 방법, 오프라인 모임을 하는 방법, 자주 발생하는 커뮤니티의 이슈를 어떻게 해결할지, 퍼스널 브랜드를 어떻게 만들어 나갈지 에 대해서 다루고 있다.
책을 보면서 처음에 혼란스러웠던 점은 여기서 말하는 커뮤니티가 개발자를 위한것인지 개발자에 의한것인지...뭔가 모호한 느낌을 계속 준다는 생각이 들었다.
어쩌다 일이 갑자기 늘어서 집중해서 제대로 못읽어서 그런가 싶은 생각도 들고...
뭔가 알듯 말듯한 모호한 기분으로 읽어 내려가서 그런가...
결국 데브렐은 개발자를 위한 또 다른 조직?(그게 커뮤니티는 아닌거 같고...)를 얘기 한다는 느낌이 들었다.
전반적으로 개발자들과 의사소통하면서 개발자들이 최대의 효율을 낼 수 있도록 도와주는 역할을 수행하는 조직? 또는 담당자? 와 그런 업무를 위한 개발자 위주의 커뮤니티의 구성과 운영에 관한 내용....
이라고 짧게 책의 내용을 정의 할 수 있을것 같다.
아무리 생각해도 시간을 내서 다시 읽어 보면서 중간중간 검색도 좀 해가며...그렇게 한 번 더 봐야 좀더 이해가 될것 같다.
읽고나서 드는 생각인데...
해외에선 이미 오래된 개념이고 국내 메이저 IT 회사들은 도입을 하고 있다고는 하는데...
문득 작지만 우리 회사도 이런걸 도입 하자고 하면....음....
반응은 뭔가 뻔할듯 하다.
"지금도 일 많은데 무슨 일을 또 벌리느냐?" 아니면 "그래 하자 니가해~"
그래도 뭔가 한번 도입을 해 보고 싶어 지기는 하는건...
이런거 도입 아니라도 일은 많긴 한데...
2022년 10월 26일 수요일
Tomcat9 manager-gui 설정
Tomcat9 의 manager-gui 설정을 하면서 삽질했던 내용들을 정리해본다.
<role rolename="admin" />
<role rolename="admin-gui" />
<role rolename="manager" />
<role rolename="manager-script" />
<role rolename="manager-jmx" />
<role rolename="manager-status" />
<user username="-----" password="-----" roles="manager-gui,manager-script,manager-jmx,manager-status" />
war파일의 크게 제한 설정을 수정 - 업로드 최대 파일 사이즈 기본 설정값은 50MB
-> 100MB로 수정
<multipart-config>
<!-- 50MB max -->
<!-- <max-file-size>52428800</max-file-size>
<max-request-size>52428800</max-request-size> -->
<!-- Up to 100MB max -->
<max-file-size>104857600</max-file-size>
<max-request-size>104857600</max-request-size>
<file-size-threshold>0</file-size-threshold>
</multipart-config>
3. /usr/share/tomcat9-admin/host-manager/META-INF/context.xml
/usr/share/tomcat9-admin/manager/META-INF/context.xml 두 파일 수정
허용하는 원격 접속 주소값을 *로 변경
<Context antiResourceLocking="false" privileged="true" >
<CookieProcessor className="org.apache.tomcat.util.http.Rfc6265CookieProcessor"
sameSiteCookies="strict" />
<!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> -->
<!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow=".*" /> -->
<Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>
2022년 10월 21일 금요일
22년 여섯번째 도서 리뷰 "네이버블로그로 돈벌기"
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

나도 블로그를 한다...지금 서평 쓰는것 처럼...
처음에는 뭔가 기록을 하고 싶어서 시작을 했다.
하지만 글제주도 없고...공돌이다보니 그렇게 블로그를 잘 하지는 못하는것 같다.
그러다보니 지금의 차마 봐주기 힘든(?) 수준의 블로그가 되었다.
블로그 하고 있는것도 좀 더 잘 해보고 싶고...
매번 기술 서적 위주로만 서평을 하다가 제목을 보고서 색다른걸 해 보고 싶다는 생각이 들었다.
제목 시작이 네이버 블로그로...라는 부분은 사실 마음에 들지 않지만
일단 블로그는 대부분 비슷하니까...
문제는 이런 책도 기술 서적 처럼 접근하는 내가 문제인듯 하다.
시작은 왜 블로그를 해야 하고 네이버 블로그를 이용해야 하는가 에서 출발한다.
그러면서 네이버 검색 알고리즘이나 블로그 지수 관리 등에 관한 얘기를 한다.
네이버 검색 알고리즘...최종적으로는 그냥 광고비 지출이 짱 아닌가....?
2장부터는 내가 관심있어 하는 내용이 시작 되었다.
챕터 제목은 블로그로 돈버는 실전 노하우 이지만 내가 관심있는 내용들은
1일 1포스팅 하는 노하우, 키워드 선정, 이미지 준비, 콘텐츠를 위한 논리의 골격
그리고 AI와 방문자 모두 좋아하는 글쓰기...
돈버는건 둘째 치고 좋은 블로그를 만드는 방법론들이었다.
물론 돈이 연관되다보니 살짝 안맞는 부분도 있었지만....
3장은 블로그를 이용한 브랜딩과 수익 창출에 관한 내용이 주를 이루었다.
뭐....블로그가 잘되어서 수익이 생긴다면 매우매우 좋겠지만...
(제발 그렇게 되었으면....아주 큰 수익으로다가....)
일단 좋은 블로그를 만들어 보고 싶다는 생각을 하며 서평을 마무리 할까 한다.
기술적인 내용은 뭐라 얘기를 하겠는데...이건 잘 모르는 분야의 얘기가 많다보니
내용에 대해서 뭐라고 말 하기가 참....
다음부턴 그냥 잘 아는거 위주로 서평 해야겠다.
근데 계속 서평단 시켜 주시려나....;;;
2022년 8월 19일 금요일
22년 다섯번째 도서 리뷰 "SRE를 위한 시스템 설계와 구축"
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

개발에서 관리로 넘어가는 과도기에 있는 시기인듯 하다.
프로젝트 협의와 설계, 진행 등 직접 개발보단 관리쪽 업무 비중이 늘고 있다.
자연히 시스템의 설계와 보안쪽에 관심이 증가 하고 있고
이번 도서가 그런 관심에 부합하는 내용으로 채워져 있었다.
사실 시스템의 보안과 관련해서는 지식이나 경험을 많이 가지고 있지 않다.
그래서 책 진도가 참 안나가는듯 하다.
책은 먼저 보안과 관련된 개론적인 내용과 보안을 위협하는 적에 대해 소개하는 내용으로 시작 한다.
천천히 읽어보면 너무나도 타당한 내용이고 어렴풋하게 개념을 알고 있던 내용이기도 했다.
이후 보안을 위한 설계 내용으로 진행한다.
사례 연구를 시작으로 설계시 목표와 요구사항의 트레이드오프 같은 내용을 다룬다
계속해서 시스템의 관한과 관련된 내용을 사례를 기반으로 설명한다.
장애 발생시 회복과 복구를 위한 설계내용과 서비스 거부(흔히 말하는 DDOS) 공격 완화등의 내용도 다루고 있다.
이어서는 보안을 위한 설계의 구현을 위한 내용들을 다루고 있다.
사례연구를 통한 설계와 구현, 코드의 작성과 테스트 및 배포, 디버깅 등에 대해서 서술하고 있다.
구현이 끝나고 나면 실제 프로젝트가 그렇듯이 유지보수에 대한 내용으로 넘어간다.
장애발생시 전략이나 위기 관리등에 대한 내용을 다루고 있다.
마지막으로 보안을 위한 조직 문화에 대한 내용을 서술하고 있다.
뭔가....알지만 하고 싶지만 현실적으로 받쳐 주지 못하는 내용이랄까....
책의 전체적인 내용 구성은 현업에 있는 PM, PL 이라면 상당히 도움이 될듯 하다.
다만 안타까운 점이 있다면...오랜만에 우리말이 참 어렵다는걸 새삼 느끼게 해준 책이란 점이다.
[... 무결성 검사를 철저하게 실행하기 위해 소프트웨어를 하기로 결정했다.]
어떤 의미인지 알긴 하겠는데 그렇다고 명확하게 와닿지도 않는...
책이 진도가 안나가는건 나한테만 문제가 있는건 아닐거 같다는 생각도 든다.
-
프로젝트 진행중에 필요하여 찾아보았더니 역시나 잘 구현된것들이 있었다. 간편하게 사용할 수 있도록 일부 수정 하였다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2...
-
이번 프로젝트를 진행 하면서 서버와 통신시에 전송할 데이터를 암호화 하여 전송하기로 결정하였다. 그에 따라서 기존 자바 소스로 구현되어 있는 암호화를 코틀린으로 구현 하였다. 아래가 그 코드이다. import android.util.Base6...
-
LS산전의 PLC장비와 RS232통신을 하여 데이터를 읽어 와야 하는 프로젝트를 진행 중이다. 현장에서 실제 통신할 장비는 라즈베리파이인데 일단 윈도우에서 테스트를 진행 하였다. 어차피 파이썬으로 코딩도 해야 하고... 초반에 PLC와 통신에서...
2024년 여섯번째 도서 리뷰 [무엇이 1등 팀을 만드는가]
한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다. 올해의 마지막 서평이다. 무엇이 1등 팀을 만드는가.... 시작하기에 앞서 제목이 과하지 않은가 하는 생각이 든다. 1등 팀이라....예전 어느 개그 프로에서 ...