forgodbok의 등록된 링크

키자드에 등록된 총 162개의 포스트를 확인하실 수 있습니다.

Naver Blog

MEMS Capacitive 가속도 센서 동작 원리

------------------------------------------------------------------------------------------------------------조경흠 TEL : 055-262-3730 FAX : 055-262-3702 E-mail : [email protected]://www.famtech.co.kr/main/main.php------------------------------------------------------------------------------------------------------------이번 내용은 우리가 사용하는 MEMS 가속도 센서의 내부가 어떻게 동작하는 것인지 살펴 보겠다. 가속도 센서는 위의 그림처럼 각 축의 가속도 값을 알려주는 센서이다. 예를 들어 움직임이 없는 가속도 센서는 z축으로 중력의 영향을 받아 z축에 9.8m/s^2 값을 가진다. 가속도 센서의 동.......

Naver Blog

Charge Output 가속도 센서 - KISTLER

제품에 관심이 있으시면 아래 연락처로 연락 주시면 됩니다. :)------------------------------------------------------------------------------------------------------------조경흠 TEL : 055-262-3730 FAX : 055-262-3702 E-mail : [email protected]://www.famtech.co.kr/main/main.php------------------------------------------------------------------------------------------------------------Charge mode 가속도 센서 (accelerometer) 는 가속도에 맞춰서 전기적인 출력을 보내주는 장치입니다. 해당 장치는 고온에서 발생하는 진동 application에 적용하기 적합합니다. Charge output 가속도 센서는 microelectronic (.......

Naver Blog

post form 으로 보낸 데이터 mongodb에 저장하기

이 프로젝트의 최종 목적은 아두이노에서 모은 가스, 온도, 습도 정보를 web GUI(Graphic User Interface)로 표현하는 것이다.우선 첫단계로 일반적인 페이지에서 정보를 받아서 POST form으로 서버의 DB에 저장하는 예제를 실행하겠다.파이썬 flask로 web GUI를 만들 예정이고, db는 Mongo 를 이용할 것이다. 코드-data_send.html>>주석-data_send.html>>form으로 묶어서 POST를 보내는 것이다. action은 form을 진행한 다음 동작인데 그냥 원래 위치 그대로 유지한다.raw_data0을 동일한 이름으로 name에 묶어서 보내주는 역할을 한다.코드- run.py>>주석-run.py>>web_gui = Flask(__name__) 에서 Flash .......

Naver Blog

Samsung Galaxy S21 Plus 새 비디오 공개

1월 출시 예정을 앞두고 삼성갤럭시 S21 Plus에 대한 정보들이 공개되고 있다. 새로 공개된 비디오에서는 flat display와 display를 감싸는 bezel과 펀치구멍 처럼 일렬로 배치된 카메라를 볼 수 있다.Ramdon Stuff2 라는 유저에 의해 공객된 비디오 상태는 좋지않았다. 갤럭시 S21의 후면에 대한 정보가 없었고 산만하게 만드는 음악이 감상을 방해 한다. 3가지 Galaxy S21 모델이 출시될 예정이다. Standard / Plus / Ultra. 유출된 비디오를 통해 확인한 결과 Ultra 모델은 5개의 카메라를 가지고 있고 나머지 두 모델은 3개의 카메라가 있었다. Android Police 가 지난달에 발표한 바에 따르면 Standard는 6.2인치, Plus는 6.7인치, Ultr.......

Naver Blog

Flask route란

flask route는 입력 인자의 위치를 웹브라우져를 통해 접속 했을 때 route 바로 밑에 정의 된 함수를 실행해서 return 값을 웹브라우져에 표현해 주는 것이다. 아래 예를 통해 이해해보자.코드 - test.py>>결과 및 주석 >>위 코드를 통해 port=9999에 web서버를 동작 시켰고 "/"를 웹에 입력하면 아래와 같은 결과가 나온다.def hello_fnc(): 함수가 "/" 주소에 대해 실행 되고 return 값으로 Hello를 보내 주기 때문에 위처럼 웹브라우져에 Hello가 표기 되었다.만일 /page 주소에 접속하게 될 경우는 page_fnc()함수가 실행 된다. 여기서 methods는 default로 GET을 받는데 다른 요청을 받고 싶.......

Naver Blog

jquery 예제 설명, cdn이란

jquery란 javascript의 라이브러리이다. 라이브러리의 일반적인 기능처럼 구현하기 복잡한 javascript 코드나 기능들을 사용자들이 쉽게 사용할 수 있게 해준다. jquery를 사용하기 위해서 html head에 사용한다고 선언해주어야 하는데 여기서 라이브러리 위치를 지정해줘야 한다. 보통 서버에 jquery를 저장하거나 jquery 웹이나 google웹에 위치한 라이브러리를 가져오는데 웹에서 가져오는 장점은 전세계에 서버가 많이 퍼져 있어서 라이브러리를 이용하는 사용자가 자신 가까이 위치한 웹서버에서 가져온다. cdn (content delivery network)는 해당서버에서 가져오는 내용(라이브러리)라고 보면된다. 기초적인 명령어는 코드 예제를 통.......

Naver Blog

bootstrap 예제 가져와서 사용해보기(로그인페이지)

bootstrap을 간단하게 말하자면 트위터에서 개발한 일종의 라이브러리/템플릿 정도로 보면 된다. 우리가 웹사이트를 개발할때 사람들에서 보여지는 front end를 개발해야 하는데 이부분이 미적감각도 있어야 하고 javascript css 등 신경써야할 부분이 많다. 이런 노동들을 줄이고자 많은 bootstrap template를 유료 또는 무료로 사용할 수 있다. 여기서는 간단히 로그인 페이지를 무료 template를 가져와서 flask와 연동해서 만들어 보겠다. https://getbootstrap.com/docs/5.0/examples/위 링크에서 example를 다운로드 한다. 그중에 bootstrap-5.0.0-beta1-examples\bootstrap-5.0.0-beta1-examples\sign-in\index.html 파일을 열어.......

Naver Blog

Gmail 오류 현상 발생 (Youtube 먹통 현상 하루 뒤 발생)

Google에서 화요일 오후(미국시간) 상당 수의 Gmail 사용자들이 Gmail 서버스 사용에 오류를 겪었다고 발표했다. 사용자이 inbox 에 접속할 때 에러 메세지나 이상 현상 등이 발생하였다고 서비스 페이지에 발표하였다. Google은 해당 문제를 6:51PM ET에 해결 하였다고 발표 했다.해당 에러는 Gmail, YouTube, Google Docs 과 같은 Google 제품의 먹통 현상이 발생한지 하루 뒤에 발생한 것이다. Downdetector(웹사이트 문제현상 모니터프로그램)이 약 3PM ET에 Gmail 문제 현상을 발견했다. 사용자들은 inbox 접속 불량, 이메일 송신 실패(gmail간) 등을 보고 했다. 원문>>Google says that a “significant subset” of.......

Naver Blog

flask, pyserial 동시에 사용하기

이번 주제는 flask로 웹서버를 동작시키면서 동시에 serial 통신으로 아두이노로 부터 값을 계속 받아오고 싶었다. 처음에 사용한것은 thread 모듈이었는데 웹서버와 같이 thread를 돌리는 방법은 시도하다가 잘안되서 포기하였다. 그렇게 찾은 것이 flask의 Response 함수 였다. Reponse는 말그대로 실시간 (on the fly)로 데이터를 처리해주는 것이다. 아래 링크를 통해 공부하였다.https://flask.palletsprojects.com/en/1.1.x/patterns/streaming/내가 작성한 코드를 보고 이해해보도록 하자.코드>>주석>>serial_start 함수는 Response에서 계속 응답해주는 것이다. http://localhost:9999/ 에 접속하자마자 seria.......

Naver Blog

mongodb 두개의 프로그램으로 쓰면서 읽기

이번 주제는 하나의 프로그램이 db에 쓰기만을 하는 동안 다른 프로그램에서 해당 db에 접속해서 읽는동작만 하는 것을 구현하였다.일초 단위로 읽고 쓰고 읽는 값은 마지막 3개의 값만 출력하는 것으로 하였다. 파이썬으로 작성하였고 pymongo로 동작한다.아래 코드를 통해 이해해 보자.코드 - write.py>>코드 - read.py>>결과 및 주석>>read.py에서는 마지막 3개를 db에서 계속 가져와서 출력하고 write.py는 1초마다 계속 증가된 숫자를 넣어준다.

Naver Blog

PS5에서도 HBO Max 시청 가능 (미국)

HBO Max 가 다음 세대 PS5 콘솔에서 시청이 가능해질 것이라고 수요일에 소니측에서 발표 했다. PS 콘솔에서는 스트리밍 서비스를 하지 않았던 HBO가 PlayStation 트윗 계정을 통해 이 같은 사실 발혔다. PS4 에는 안타깝게도 해당 사항이 없다. PS5 사용자들은 내년 HBO 스트리밍 서비스로 출시할 Wonder Woman 1984를 4K HDR로 볼 수 있을 것이다. (Xbox Series X/S 사용자들은 해당 HBO 앱을 이용 사용이 가능함)처음에 PS5에서 HBO Max를 다운 받았을 때 PS4에서만 사용가능하다고 나왔지만 reboot 이후에 다운로드가 가능했다. 만일 HBO Max 앱 다운을 원한다면 PS5 홈 스크린에서 media 탭에서 찾을 수 있다.원문>>Sony on Wedne.......

Naver Blog

serial 통신으로 받은 값 DB에 저장하기

이번 프로젝트는 미리 만들어 놓은 아두이노에서 온도 습도 가스 등등의 값들을 측정해서 serial 통신으로 1초 간격으로 보내주는데 받은 값을 파이썬으로 mongodb에 저장하는 파이썬 프로그램을 만들 것이다. 저장값은 robo 프로그램으로 확인할 것이다. 아래 값은 아두이노에서 보내는 값들이다 이중에 온도와 습도를 의미하는 Tv와 Hv 값을 가져오겠다.파이썬 코드를 통해 이해해보자코드 >>class 내부에 self를 사용해서 함수간에 변수들을 사용했다. 우선 mongodb를 연결하고 다음으로 serial 통신을 연결하였다.다음으로 serial에서 나오는 값들 중에 temperature, humidity 값만을 가져와서 db에 시간 값과 같이 저장.......

Naver Blog

javascript 결과 확인을 위한 alert, console log

이제부터 자바스크립트 기초부터 정리하려고 한다.파이썬의 print 와 비슷하게 결과들을 확인 하는 방법으로 alert와 console log로 확인하는 방법이 있다. 아래 코드로 이해해 보자코드>>결과 >>주석>>html 파일을 열면 위처럼 alert 메세지가 바로 뜨고 console log는 크롬에서 개발자 모드로 들어가면 위 그림처럼 console 탭이 있다.console 탭을 선택하면 위처럼 메세지 값을 확인할 수 있다.

Naver Blog

javascript prompt 로 입력값 받기

자바스크립트 prompt는 웹 화면에서 입력을 받아서 넘겨 주는 역할을 한다. 아래 코드를 통해 이해해 보자.코드 >> 결과>>주석>> 여기서 입력한 값은 age 변수로 넘어간다.주의할 부분은 넘어간 변수는 string으로 넘어간다는 것이다. 즉, 15를 창에 입력하면 age는 "15"를 값으로 받는다.

Naver Blog

Royole FlexPai2 폴더폰

Royole FlexPai 라는 첫번 째 폴더폰을 기억하시나요? 안타깝게도 기대 이하였습니다. 그 뒤 FlexPai2 는 좋은면으로 다른 제품입니다. FlexPai2 는 기존에 안으로 접는 형태와 다르게 화면 바깥으로 접습니다. 그래서 접어도 화면을 볼 수 있습니다. 구조도 탄탄해 보입니다. 하지만 화면상에 단점이 있습니다. 접히는 면이 넓다는 것입니다. 그리고 펼치고 화면에 손을 대었을 때 경첩부분이 느껴 집니다. 9,998 위안으로 싼가격은 아닙니다. 폴더폰을 사라고 추천은 하고 싶지 않지만 초기 폴더 폰에 대한 노력은 인정해줘야 합니다.원문>>Remember the first folding phone, the Royole FlexPai? Unfortunately, it was bad. But.......

Naver Blog

list copy [:] 리스트안에 콜롬(:) 사용하는 이유

코드 >>결과>>주석>>파이썬은 객체 언어이다. int 값을 정하는 것도 모두 객체이다. 위 코드는 리스트 값을 복사하는 여러 방법을 표현했다.type에서 볼 수 있듯이 리스트도 class에 들어가 있다. 객체 내에는 포인터가 있는데 포인터를 통해서 해당 값이 어디 있는지 알려준다. 단순히 b_var = a_var 했을 경우 a_var의 값의 위치를 b_var의 포인터가 취할 뿐이다. [:]처럼 리스트안에 콜롬을 넣으면 값을 복사해오는 것이다. 그래서 복사해온 값을 새로운 위치에 넣고 이 위치를 포인터에 기록한 것이다. copy는 list에 들어가있는 함수 인데 [:]와 같은 기능을 한다. 메모리 위치를 보면 주석의 내.......

Naver Blog

virtualenv 가상환경 만들기

파이썬에서 가상환경을 만드는 주 목적은 프로젝트별 내가 설치한 library를 추적하기 편하게 하기 위해서 이다. 여러 프로젝트를 돌리다 보면 다양한 library를 설치하는데 이를 서버나 다른 PC에 옮길때 virtualenv로 독립된 공간을 만들면 옮기기 용이하다.설치 방법>>visual studio 에서 가상환경을 만들 폴더를 만든다. 나는 webgui_project라는 폴더를 만들고 pip install virtualenv위 명령을 실행해서 virtualenv 를 설치했다. (이미 설치해서 설치되어있다는 결과가 나옴)virtualenv venv 위 명령어로 해당 폴더에 venv (이름은 사용자 마음대로 변경 가능) 라는 가상환경을 만들었다. venv 폴더 밑에 일반적인 p.......

Naver Blog

linked list / 연결리스트 란? 파이썬

링크드 리스트는 파이썬 동적 구조를 잘 설명해 주는 개념이다. 일반적인 정적인 언어들은 변수 선언을 통해 메모를 순차적으로 채워 간다. linked list 는 본인의 값과 다음 노드를 알려주는 포인터를 지녀서 메모리에서 연속적으로 사용되지 않고 포인터로 연결된 형태로 사용이 가능하다. 아래 예제를 통해 이해해 보자.코드>>결과>>주석>>linked_node 에서는 현재 노드의 값과 다음 노드를 가리키는 포인터 값을 가지게 된다. node_value_extract 는 노드에 연결된 값들을 찾아서 list에 넣고 포인터를 통해 다음 노드로 이동하여 값을 넣는다.꼬리가 없어 질때까지 진행하는 구조이다.

Naver Blog

파이썬 deque 사용하는 이유 / popleft

파이썬 deque는 list와 dictionary와 거의 동일하게 생각하면 된다. 차이는 popleft의 시간 차이다. list의 경우 pop()으로 마지막 값을 꺼내는 경우 O(1) (일정한 시간) 시간이 걸리는데, pop(0)으로 가장 앞단에 값을 꺼낼때는 list 크기에 따라 읽어 오는 시간이 달라진다. O(n) 시간이 걸린다.하지만 deque를 사용할 경우 popleft()를 사용하면 리스트의 pop(0)과 같은 기능을 주면서 걸리는 시간은 O(1)이 걸린다. pop을 사용하는 경우 말고 index로 값을 읽어 오는 경우는 리스트나 deque 모두 O(1)로 일정한 시간만 걸린다. 즉, index의 주소 값으로 바로 값을 찾는 것이다.아래 코드는 각 상황에 따라 시간을 측정한 값이다. 0.......

Naver Blog

ESP8266 와이파이내에 다른 station과 ping 주고 받기

지난 번 구성과 동일하게 코드를 올리고 보드를 설정해서 테스트 하겠다.지난번 구성은 아래 링크에서 확인하면 된다.https://blog.naver.com/forgodbok/222162696366작업을 스텝별로 진행하겠다. 1. AT+RST >> 리셋을 하자마자 이전에 저장해놓은 와이파이 아이디와 비번때문에 자동으로 와이파이 연결되었지만 무시하고 진행하겠다.2. AT+CWMODE=1>> station mode로 ESP8266을 설정하였다. station mode를 간단히 설명하자면 와이파이 AP에 연결된 핸드폰 같은 end user 라고 생각하면 된다.3. AT+CWJAP="your SSID","your SSID password">> 그림처럼 와이파이에 접속했다.4. A.......

Naver Blog

파이썬 functools reduce 사용법

간단히 코드를 통해 이해 해보자.코드>>결과>>주석>>위 코드는 리스트에 숫자를 꺼내서 정수형태로 합치는 코드이다. 우선 functools의 reduce 함수는 인자를 하나씩 꺼내어 표현식에 누적해서 넣는 방식이다. 함수 설명 부분을 visual studio에서 가져왔다.def reduce(function, sequence, initial=None)reduce(function, sequence[, initial]) -> valueApply a function of two arguments cumulatively to the items of a sequence, from left to right, so as to reduce the sequence to a single value. For example, reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) calculates ((((1+2)+3)+4)+5). If initia.......

Naver Blog

파이썬 zip함수, 별표(*)

코드 >>결과 >>주석 >>zip 함수는 iterable 의 반복 가능한 자료형을 입력으로 받는다.입력받은 인자 값의 갯수 중 최소 갯수를 받아서 묶어서 튜플로 보내 준다.위의 예제에서는 b_var, c_var의 갯수가 4개로 가장 작으므로 4개의 튜플이 생긴다. 첫번째 튜플은 각 인자의 첫번째 값을 받아서 (0,0,2)가 된다.다음으로 위에서 list를 붙이지 않으면 zip object 주소 값만 나온다. 의미를 예로 들면 붕어빵 만드는 틀을 만들었으니 list만 붙이면 실제 붕어빵을 만들겠다는 뜻이다. 이러한 형태의 장점은 붕어빵을 만들기 전까지는 메모리를 소비하지 않을 수 있게 해준다. 그래서 필요때마다 메모리를 소비하면 되는.......

Naver Blog

인스타그램 자동 "좋아요" 클릭 (like click) 파이썬

좋아요 자동 동작 코드를 보기 전에 자동 로그인과 자동 검색을 아래 링크서 먼저 확인하고 보는것을 추천한다.https://blog.naver.com/forgodbok/222159770536https://blog.naver.com/forgodbok/222161779010코드>>결과>>주석>>위 코드가 좋아요를 동작하게 하는 코드이다. 동작은 selenium 모듈을 사용하였다.동작은 인자에 입력된 number 숫자만큼 사진/영상의 "좋아요" 를 클릭한다.주의 해야할 부분 중에 좋아요가 이미 클릭되어 있다면 다시 클릭하면 좋아요가 사라지므로 좋아요가 클린된 상태인지 아닌지를 확인해야 한다.내가 사용한 부분은 element에서 svg 부분에 aria-label에 적힌 부분.......

Naver Blog

AirPods Max headphone 출시

애플이 새로 출시한 AirPods Max headphone 은 경쟁사 Bose와 Sony 제품에 비해 프리미엄 가격이 붙은 549달러에 판매된다.제어를 위한 디지털 크라운과 자석으로 탈부착이 가능한 earcup 등 디자인은 호불호가 갈릴 듯 하다.원문>>Apple’s new $549 over-hear AirPods Max headphones cost a premium over the competition from Bose and Sony. With a digital crown for controls, magnetically removable earcups, and a design that may end up being polarizing, even our first look has a lot to tell us. reference>>https://www.instagram.com/p/CInsQLmD7F8/?utm_source=ig_web_copy_link

Naver Blog

파이썬 함수안에 함수, 중첩함수

가끔 함수안에 함수를 쓰는 경우가 있는데 하나의 함수로 코드를 끝내고 싶을 때 쓰긴하지만 비효율 적이라 보통은 class를 사용한다.함수안에 함수를 사용하게 되면 가장 바깥에서 선언된 변수는 함수 내에서는 전역변수 처럼 동작하고 함수 안의 함수에서 선언된 변수는 지역변수 처럼 동작한다. 아래 코드를 통해 이해해보자.코드>>결과>>주석>>f_out에서 선언된 값은 f_in0에서 변경을 가져도 f_in0 함수를 벗어나는 순간 원래 값으로 복귀 한다. string 뿐만 아니라 일반 변수를 적용해도 마찬가지이다. 만일 변경된 값을 전역적으로 유지하고 싶다면 f_out1 함수처럼 f_in0에서 변경뒤에 변경 값을 return으로 보.......

Naver Blog

데이터 베이스 (DB) 개념

이번 프로 젝트는 파이썬으로 웹서버를 만들 것이다.웹서버를 운영하기 위해 웹프로그램이 필요한데 이를 파이썬으로 할 것이다. 웹서버에는 사용자 정보나 각종 서버에 정보를 쓰고 읽고 하는 공간이 필요 하다. 이 공간이 데이터베이스다.기존의 DB는 RDBMS(Relational Data Base Management System)라고 불렸다. Relational 은 엑셀과 같이 테이블로 구조를 가진것 처럼 생각하면 된다. 구조의 상대적 위치를 통해 자료를 찾는 것이다.SQL(Structured Query Language)이 Relational을 사용한다. SQL은 행과 열의 구조가 갖춰진 채로 저장하는 것이다.나머지 DB 형태는 No SQL이라고 하는데 Document, Search engine, Key-value 등이 여.......

Naver Blog

MongoDB 기본 명령어 모음, 파이썬

코드 >>결과>>주석>>connect_to = pymongo.MongoClient("localhost", 27017) 로 파이썬에서 mongodb로 연결한다. 27017는 mongodb에서 설정한 포트 번호 이다.connection에서 test_db라는 카테고리 명을 만들고 그 밑에 collection 명을 members로 넣었다.나머지는 주석을 보면 db를 생성하는 법, 찾는 법, 삭제하는 법, 변경하는 법, 조건을 거는 법을 알 수 있다.자세한 예제 및 설명은 아래 링크를 참조하면 된다. https://docs.mongodb.com/manual/reference/operator/query/

Naver Blog

sorted 와 key 값, lambda 사용법, 키 값으로 함수사용

코드>>결과>>주석>>sorted 함수는 입력 받은 list 값들을 정렬해준다. key 값은 정렬 방법을 정의하는데 키 값 으로 len이 들어가면 a_var 리스트 값들의 길이 순으로 정렬하는 것이다.key_ex의 함수는 a_var 리스트를 받아서 각 항목의 [-1],[1] 위치 값을 비교 기준으로 삼는 것이다. 예를 들어 리스트 값중에 "770"의 [-1]은 0이므로 결과 값중에 제일 앞에 위치했다. "505"와 "455"의 [-1] 값은 5로 동일하다. 하지만 두번째 정렬 기준이 0과 5 중에 0이 작으므로 505가 앞에 정렬 되었다.lambda는 한줄로 함수를 처럼 실행해주는 역할 인데 a_var리스트 인자값 중 [0]을 기준으로.......

Naver Blog

ASCII vs Unicode(유니코드) vs UTF-8 차이

처음에 코드에서 문자를 표현하던 방식은 ASCII 인코딩 방식이 었다.ASCII 는 8비트(1바이트) 공간만 차지 한다. 한 비트는 checksum으로 사용하고 2^7 = 128 개는 글자를 표현하는데 사용 되었다.하지만 영어를 표현할 수 있지만 한글같은 문자는 1바이트로 표현이 안되어서 나온 방식이 유니코드 인코딩이다. 2~4바이트의 여유 공간을 가지고 문자를 표현 해준다.유니코드의 문제는 영어는 한바이트로 표현이 가능함에도 2바이트 이상의 공간을 차지하므로 메모리를 불필요하게 사용하게 된것이다.그래서 나온 방식이 UTF-8로 문자 종류에 따라 가변적으로 메모리를 할당해서 효율적으로 사용할 수 있게 해준다.

Naver Blog

if in 구문, for in 구문

if A in B 구문은 B에 값들 중에 A가 있는지 확인하는 것이다.for A in B 구문은 B 값들을 하나씩 A 변수에 넣어주는 것이다. 아래 코드로 확인해 보자코드>>결과>>주석>> compare0은 원하는 값이 리스트내에 존재하는 지 찾는 함수 이다. 그리고 값을 찾아서 index와 함께 보여준다. compare1은 if in 구문을 통해 한번에 리스트내에 원하는 값이 있는지 찾았다.

Naver Blog

인스타그램 자동검색(해시태그)/Instagram Search 파이썬

지난번 자동 로그인 다음으로 자동 검색을 실행하겠다. 코드>>결과>>주석>> 이번에는 자동 로그인이 된 다음에 검색자동화를 해보았다. searchHashtag 함수를 추가하였다. 우선 인스타 웹사이트에서 검색창에 해당하는 xpath를 찾아서 원하는 검색어를 입력하는 문구를 넣었다.로그인 다음에 화면이 로딩하기 전에 검색창을 찾는 경우를 방지 하기 위해 webDriverWait을 사용해서 10초 내로 검색창 xpath 값이 나오면 실행하게 하였다. 그리고 "#"값을 넣은 검색어를 입력하게 하였다. 그리고 검색되면 해당 검색어가 포함된 여러 항목이 나올 수 있다. 이런 경우에 첫번째에 해당하는 항목의 xpath 값을.......

Naver Blog

파이썬 sys.getsizeof 변수 크기/사이즈 확인

파이썬에서 변수의 사이즈를 확인하는 방법은 sys 모듈에서 getsizeof를 사용하면 된다.아래 예제를 참조 하자예제>>결과>>주석>>9223372036854775807 는 (2^63) -1 로 63비트를 maxsize에 사용한다. 타입은 int class이다. 1일때와 maxsize일때 int class 사이즈가 다른 이유는 파이썬은 메모리 사이즈가 고정이 아닌 크기가 증가함에 따라 class에서 증가시켜 주는 배열 형태이기 때문이다. 재미있는 점은 class int의 최소 사이즈가 class float 보다 크기가 작다는 점이다.

Naver Blog

아두이노 와이파이 통신 기본 코드 실행 (ESP8266)

재료 >>1. 아두이노 메가보드 2560 (호환) / 정품아님2. ESP82663. ESP-01 어댑터 보드구성>>ESP8266 전원은 메가 보드 5V와 GND에 연결했다. 메가보드 RX는 ESP8266 TX에 연결, TX는 ESP8266의 RX에 연결함.어댑터는 내부 레귤레이터가 메가에서 나온 5V를 3.3V로 변경해줌, RX,TX전원도 5V에서 3.3V로 변경해줌.USB의 전류가 ESP8266을 돌리는데 부족한 경우가 발생하기도 함. 그런 상황을 방지 하기 위해 메가 전원선을 연결하는게 좋음.메가 보드르 사용한 이유는 serial 통신(RX/TX)가 여러개 있어서 PC와 serial 통신하면서 wifi를 다른 serial 라인에 연결해서 debug가 가능하다.코드>>결과>>주.......

Naver Blog

ESP8266 기본 명령어 (AT)

전제 조건>>https://blog.naver.com/forgodbok/222162696366위 링크 구성으로 연결된 상태에서 기본 명령어 실행을 하겠다.간단히 구성을 설명하자면 컴퓨터와 메가2580 아두이노가 시리얼 통신을 하고 입출력은 ESP8266와 주고 받는다.와이파이 접속하기>>본인 와이파이 id와 비번을 입력하여서 위처럼 명령어를 입력하면 와이파이 접속이 된다.IP와 MAC 주소 확인>>MAC 주소는 고유값이라 표기를 지웠다.웹사이트 접속하기>>웹사이트에서 흔히 우리가 쓰는 http (https아님) 는 80번 포트를 사용한다. 그리고 TCP 통신으로 3 hand shake를 한다. AT+CIPSTART="TCP","222.122.84.2.......

Naver Blog

파이썬 typing모듈 왜 사용하나? , mypy 검사

코드 >>결과 >>주석>>파이썬은 동적 할당을 한다. 예를 들어 리스트가 있으면 append로 추가적으로 리스트 값을 늘릴 수도 있고 변수에 int 를 넣었다가 string으로 변경도 가능하다. 컴파일 언어들은 컴파일 과정에서 문제를 발견할 수 있다.하지만 파이썬의 경우 코드를 짜는 사람의 휴먼 에러로 잘못된 값을 할당하고도 모르고 지나갈 수 있다. 위의 코드처럼 값에 대한 정의를 세미콜론 (:) 또는 typing으로 할 수 있다. 하지만 정의를 한다고 해도 동적 할당을 하면서 정의 된 값을 위의 결과 처럼 덮어 버린다.이런 부분을 컴파일러 언어처럼 확인하기 위해 필요한 모듈이 mypy이다. (pip로 인스톨해야.......

Naver Blog

continue, break, pass 차이

조건문을 사용할 때 continue, break, pass 를 어떻게 사용하는 냐에 따라 조건문 진행 방법이 달라 진다. 아래 코드를 통해 간단하게 이해해보자결과 >> continue의 경우 print(a_var) 를 실행하지 않고 다음 for문의 변수를 실행한다.break의 경우 for문 밖으로 빠져 나간다. pass의 경우 계속 진행 시켜 준다.

Naver Blog

파이썬 replace, strip 함수란

string 을 변경할 때 유용한 함수가 replace와 strip 이다.우선 strip은 string의 제일 앞 또는 끝의 내용이 인자와 일치 할 경우 삭제해준다. 만일 인자를 넣지 않으면 \n(줄넘김), 빈공백을 없애 준다. 줄넘김과 빈공백 또한 string의 앞 또는 끝에 위치 할 경우 만이다. string 중간에 위치한 줄넘김, 공백을 없애고 싶을 경우나 내용을 변경하고 싶을 때 replace 를 사용한다.아래 코드와 결과를 보면 쉽게 이해 될 것이다. 결과>>

Naver Blog

deque, list 차이

deque, list 은 거의 유사 하다. 하지만 간단히 차이를 설명하자면 코드 실행 속도가 차이난다. 아래 예를 통해 이해하도록 해보자.list사용 예결과>>deque 예결과>>해설 >>함수 내에 인자에 세미콜론(:) 은 인자 값 타입을 미리 정의해서 이것만 받겠다는 의미이다.코드 시작 전에 시간을 s_time에 저장하고 결과를 프린터 했다.결과에서 볼 수 있듯이 deque가 더 빠르게 동작했다.그 이유는 리스트에서 해당 index에 해당하는 값을 읽어 올때 O(n) 시간이 걸린다. 즉, 어떤 index의 값을 읽어 오냐에 따라 시간이 더 걸린다는 뜻이다. 하지만 deque는 이러한 문제를 해결하기 위해 파이썬에서 제공하는 자체 함.......

Naver Blog

파이썬 list 와 슬라이싱(slicing)

슬라이싱은 [ : : ] 로 표현된다. 세미콜론(:)이 두개 들어 가는데 첫번째 인자는 리스트로 생각하면 index의 시작 점, 두 번째는 끝점, 마지막 인자는 index를 몇 칸씩 움직일지를 알려 준다. 슬라이싱의 장점은 파이썬에서 일반 list를 사용할 경우 내부 값의 위치를 변경할 경우 index를 참조해서 움직이므로 그에 따른 시간이 걸린다. 하지만 슬라이싱은 파이썬 내부에서 C로 구현된 구조체여서 빠른 속도로 변경이 가능하다. 그리고 string의 경우 리스트에 넣어서 변경해야 하는것에 반해 슬라이싱은 string도 자유롭게 변경할 수 있다.아래 예제를 통해 이해해 보자결과>>슬라이싱에서 음수는 반대 방향을 의미하므로 이를.......

Naver Blog

collections Counter 로 가장 많이 사용한 단어 찾기

신문이나 책에서 가장 많이 사용된 단어를 찾고 싶을때 유용한 모듈이다.collections 의 Counter는 파이썬 모듈로 입력값으로 받은 값을 카운팅해서 dictionary 형태로 해당 단어와 단어가 사용된 횟수를 알려 준다. 리스트를 입력값으로 넣으면 리스트내의 값을 비교해주고 string으로 입력하면 한단어를 기준으로 파악해준다.아래 코드를 통해 쉽게 이해해 보자결과>>words = [word for word in re.sub(r'[^\w]', ' ', paragraph).split()]re.sub 은 정규식에서 \w(단어를 의미) 단어가 아닌 것은 한칸 띄운 공백으로 바꾸겠다는 의미이고 split()은 default로 공객을 기준으로 나눠주는 것이다.

Naver Blog

인스타그램 자동 로그인 (Instagram Log in)

코드>>결과 화면>>주석>>우선 코드를 작성하기 전에 인스타에 가입하였다. options.add_experimental_option("excludeSwitches", ["enable-logging"])위 코드는 Chrome webdriver를 열때 옵션을 추가 한 것이다. 정확한 이유는 모르겠지만 내 컴퓨터 내부에 설치 된 프로그램과 충돌 때문인지 아래와 같은 에러메세지가 발생하였다.[15188:3920:1201/185912.848:ERROR:device_event_log_impl.cc(211)] [18:59:12.849] USB: usb_device_handle_win.cc:1020 Failed to read descriptor from node connection: 시스템에 부착된 장치가 작동하지 않습니다. (0x1F)그래서 구글 검색으로 찾은 해결책이.......

Naver Blog

sort vs sorted 차이 join 함수

코드>>결과>>주석>> sorted 는 입력 값을 받아서 정렬해서 return 해준다. 이때 입력값은 string 또는 숫자를 넣을 수 있는데 둘을 혼용하면 안된다.join은 앞에 정의대로 묶어 주는 역할을 한다.sort는 list 내장 함수로 리스트값에 적용하면 해당 리스트 값이 정렬된다. return 값은 없다.

Naver Blog

locals(), globals()

ocals 와 global의 현재 namespace (전역, 지역, builtin) 을 딕션너리(dict)으로 정리해서 넣어 준다.둘의 차이는 locals은 말그대로 locals()가 실행되어지는 함수내의 지역 namespace 들을 정리해서 넣어주고 globals는 전역, 지역, builtin 정보 모두 dict 형태로 정리해 준다.아래 예제를 통해 이해해 보자.결과>>

Naver Blog

파이썬 변수는 객체이다

파이썬은 모든 변수를 선언할때 객체에 의해서 선언된다. 아래 예를 통해 이해해 보자.결과>>C언어의 경우를 생각해보면 a_var와 b_var는 다른 메모리 주소를 가리킬 것이고 해당 메모리 주소를 따라가면 3이라는 값을 읽을 수있다.하지만 파이썬의 경우 모두 int라는 클래스 안에 할당되고 a_var, b_var, 3이라는 값 모두 해당 주소 값을 가리키는 것을 알 수 있다.

Naver Blog

별표하나 별표두개 (*arg, **kwarg)

파이썬에서 함수 인자 앞에 별표 한개를 쓰느냐 두개를 쓰는 것에 대해 간단히 설명하겠다. 별표 없이 인자만 선언되어 있을 경우는 함수에 인자 갯수는 정의에 따라 고정되고 항상 동일한 수로 입력 해야한다. 하지만 별표 한개로 (*)로 정의 하면 인자 수를 제한 없이 사용할 수 있는 장점이 있다. 함수 내부에서는 해당 인자를 튜플로 인식해서 사용 된다. 별표 두개는 key 값과 value로 받아서 dictionary로 만들어 준다. 함수 내부에서는 해당 dictionary 형태로 사용할 수 있는 것이다. 또는 미리 key 값을 선언해 놓으면 dictionary로 넣을 경우 value 값만 받는 형태로도 사용할 수 있다.결과>>

Naver Blog

collections.defaultdict 이란

딕셔너리는 존재하지 않는 키 값을 출력 할 경우 아래 코드 처럼 에러가 발생 한다. 이러한 에러를 없애기 위해 try 문을 사용한다. defaultdict 객체는 위의 딕셔너리 문제를 쉽게 해결해 준다. defaultdict에 인자 값은 int, list, set 을 받을 수 있다.아래 코드 처럼 키의 value 값은 default로 int 0이 자동으로 들어 간다. 그리고 인자를 int로 사용했을 경우에도 다른 값 (여기서는 string) 을 선언해서 사용할 수 있다.일반적인 dictionary와 다른 점은 존재하지 않는 키 값을 사용할 경우 인자에 따라 0, [], set() 값이 들어감을 알 수 있다.결과>>활용은 엑셀 문서 만들때 해당 키 값이 없어도 비교 분석할때 같은.......

Naver Blog

xpath란

요즘 나오는 웹페이지들은 마우스 오른쪽 클릭으로 아래 그림 처럼 페이지 소스 보기를 하면 복잡한 코드를 확인할 수 있다. 웹 크롤링이나 웹 자동화를 위해서는 특정 부분의 조작이나 정보를 가져와야 하는데 이를 구분 짓기 쉽게 해주는 것이 xpath이다. 한마디로 모든 코드들이 가지는 unique 한 주소 값 정도로 생각하면 되겠다.xpath를 가져오는 방법은 아래와 같다. 나는 크롬만 사용하므로 크롬 기준으로 설명하겠다. 우선 크롬에서 원하는 웹페이지를 들어 간다. 그리고 오른쪽 상단에 점 세개 있는 부분을 클릭하면 도구 더보기 >> 개발자 도구 로 들어 간다. 또는 웹 화면에서 마우스 오른쪽 클릭 하여 검사를 클릭 한.......

Naver Blog

리스트에 새로운 값을 계속 추가하면서 리스트에 항목 갯수 유지하기

이번 코드는 센서에서 측정값을 받아서 리스트에 입력하였다.하지만 입력값을 무한히 가져갈 수 없기 때문에 리스트 크기를 3개의 항목으로 유지하고 최근에 측정 된 값은 항상 리스트 마지막에 업데이트 되게 하는 코드 이다. 습도를 측정하는 코드였는데 습도 값은 다른 코드와 별도로 지속적으로 들어와야 해서 thread로 동작 시켰다.그리고 들어오는 값을 ys 리스트에 20번째 줄 처럼 추가 하였다.32번째 줄에서 새로 업데이트 되는 ys 리스트는 끝에서 -3번째까지만 가져가겠다는 의미이다.

Naver Blog

trailing comma (,)

파이썬 코드를 보다보면 리스트에서 다음 값이 없음에도 콤마를 붙인 경우들을 볼 수 있다. 사실 이 부분은 코드를 짜는 사람은 크게 신경 쓸 부분은 아니다. 리스트에 항목을 추가하는 과정에서 콤마를 빠뜨릴 수 있는 상황을 대비해 준다. 아래 코드 처럼 결과는 동일하다.최근에 발견한 코드는 콤마가 부등호(=) 앞에 선언되어 있었다. 해당 콤마는 아래 결과 처럼 리스트의 항목을 다시 역으로 빼주는 역할을 해준다.

Naver Blog

numpy linspace, 괄호()와 []

오늘도 코드 해석을 통해 이해 해보려고 하겠다.위 코드는 그래프를 만드는 과정에서 x 값과 y값을 리스트로 만드는 과정이었다.linespace는 앞에 두 인자는 시작과 끝점을 알려주고 세번째 인자는 총 몇개로 배분할지를 정하는 것이다. x_vec = np.linspace(0,1,size+1)[0:-1] 에서 ()에는 함수의 인자가 들어 간 것이고 []에는 함수의 인자가 list 형태로 나오는 데 원래 값은 리스트가 총 size+1= 11개가 나와야 하는데 마지막을 -1로 설정함으로써 삭제해서 리스트가 10개 값을 가지는 형태로 x_vec에 저장한 것이다.y_vec은 len(x_vec) 값을 넣어서 동일한 갯수 만큼 리스트를 빼낸 것이다.

Naver Blog

matplotlib.pyplot.figure

Tkinter 로 GUI를 만드는 중인데 GUI 안에 Graph를 넣고 싶어 져서 pyplot을 공부 중이다.위 처럼 라벨 안에 그래프를 넣었다. GUI를 일부를 잘라서 넣었다.여기서 우선 figure에 대해 알아보겠다. figure 안에 들어가는 인자와 설명은 아래와 같다.num : 정수, str 이고 figure ID를 의미한다.figsize : (실수, 실수) default 값은 6.4, 6.4이다. width, height을 inch 로 표현한 것임dpi : 실수로 표현 되고 inch 당 dot 갯수 이다. 높을 수 록 정밀해짐, default는 100.0임facecolor : background color 이고 default는 흰색임edgecolor: edgecolor는 경계선 (boarder) 색임 흰색이 default 임frameon: frameon 은 bool 이.......

Naver Blog

list comprehension, for if문 써서 한줄로 list 만들기

파이썬 예제들을 살펴 보면 한줄로 for문 if문을 사용해서 list를 만드는 것을 볼 수 있다.효율적인 코딩을 위해 사용하는 방식으로 아래 파이썬 예제를 통해 이해해 보자.아래 코드는 여러 리스트들 중에 가장 작은 숫자를 찾는 예제이다. >>결과>>해석yAll = [yValues0, yValues1, yValues2] 는 리스트를 이중으로 채워 넣은 구조이다. min([y for yValues in yAll for y in yValues]) 에서 우선 첫번째 for yValues in yAll 구문을 동작해서 yValues 가두번째 for y in yValues 에 하나씩 들어가가고 각 리스트에서 값들이 y로 들어 간다. 그 y 값은 리스트 앞단에 변수로서 리스트를 채우게 된다. [y for yValu.......

Naver Blog

yield, next 란

파이썬 문법 중 yield와 next가 있다. 일반적으로 함수에서 값을 뽑아 낼때는 return으로 값을 보내 준다. 그리고 생성된 함수는 값을 return 함으로서 역할을 종료 한다. 가령 while 문이 무한으로 돌고 있어도return을 맞이하면 종료 한다. yield는 값을 보내줄때 사용하는데 return 과 다른 점은 함수의 종료가 아닌 지속적으로 보내 줄 수 있다. 이때 값을 받을 수 있는 방식이 next이다. 아래 예제를 통해 이해해 보도록 하자.결과>>위 코드에서 처럼 next는 yield 값을 받을 때까지 함수를 진행해 주고 yield 값을 보내는 역할을 한다.#파이썬#yield#next

Naver Blog

선언 전 메모리절약, range, getsizeof

파이썬 코딩을 할때 유용한 팁으로 원하는 값을 미리 생성하느냐 아니면 문법으로 정의해 놓고 필요할때 마다 빼는 방식이냐에 따라 메모리 사용량이 달라 진다. 아래 예제 코드를 살펴 보도록 하자결과>>>a_var의 경우 range(30) 객체가 변수에 들어가 있고 b_var와 c_var는 리스트를 생성을 완료 하였다.length를 비교 했을때 실제값으로 선언인지 객체선언인지와는 상관없이 동일한 값을 가진다. 이러한 조건을 이용해 코드를 짜는 데는 문제 없이 진행할 수 있다.그리고 메모리 사이즈를 sys.getsizeof로 확인해 보면 차이가 많이 나는 것을 알 수 있다. b_var와 c_var 사이에서도 생성 방식에 따른 약간의 메모리 차이가 발.......

Naver Blog

graph내에 event 처리 방법 - 마우스 클릭, 롤오버

matplotbli으로 graph를 그리고 난 뒤 마우스 클릭이나 키보드 동작같은 event에 따라 다른 동작을 시킬 때(bind) 유용한 기능이다. 아래 예제 코드를 통해 사용법을 알아 보자. 아래 코드 예제는 참조 링크에서 가져왔다. 결과 >> fig에서 마우스를 클릭할때마다 라인이 연결되서 생김해석>>fig = plt.figure()ax = fig.add_subplot(111)우선 그림그릴 fig와 axes를 위처럼 선언했다. line, = ax.plot([0], [0])x,y 축의 값을 0,0 중앙에 배치하고 line 에 객체 값을 넣었다. line, 을 한 것은 리스트 값을 빼온다는 뜻임. 즉,line = ax.plot([0], [0])[0]와 같은 의미 임self.xs = list(line.get.......

Naver Blog

파이썬 여러 리스트 값을 하나의 리스트로 만들기

공부를 하다가 재밌는 표현을 발견해서 포스팅 했다. for in 구문을 두 개를 사용하여 리스트를 합치는 방법이다. minY는 여러 리스트 값 중 최저 값을 찾는 내용인데 for in 문을 두개 사용하였다. 6번째 줄에서 첫번째 for 문에서 yAll 리스트에서 각 각의 리스트를 yValues 에 저장하고 이를 다시 for 문을 써서 y 에 저장하고 리스트로 묶어서 만든 것이다. #forin #파이썬 #리스트합치기

Naver Blog

리스트 안에서 조건문(for, if) 사용 방법

파이썬을 사용하다 보면 한줄에 for 문이나 if 문이 여러개 들어 있는 경우가 있다.나같이 초보들은 이런 경우 혼란 스러워 정리를 위해 기록 한다.아래처럼 조건문이 [] 리스트 안에 있을 경우 왼쪽부터 순차적으로 적용 된다고 생각하면 된다. 그리고 가장 왼쪽에 변수는 조건문을 다 거치고 리스트에 들어가는 실제 값이 되는 것이다.

Naver Blog

파이썬 밑줄 용도 (Underscore)

파이썬에서 밑줄은 변수 또는 함수에 붙어 있는 것을 알 수 있다.용도를 분류하면 아래와 같다1. _ 하나만 사용되면 for문 등을 쓸 때 변수 명 고민 하지않고 해당 for문에서만 사용 되는 방식이다. ex.for _ in range(9):print(_)2. 변수 또는 함수 앞에 _ 밑줄 하나를 쓰면 class 내부에서만 사용되는 private 개념으로 볼 수 있다. 밑줄 두개를 써도 마찬가지 인데 두개를 쓰면 강제성이 생겨서 외부에서 사용하게 되면 에러가 발생한다. ex.__init__(self):self.__name = 철수3. 내부 함수명과 같은 변수를 사용하고 싶을때 충돌을 피하기 위해 변수 뒤에 밑줄을 붙인다.exprint_

Naver Blog

함수와 메서드 차이 (function vs method)

함수와 메서드를 단수하게 설명하면 둘다 모두 어떠한 동작을 실행한다.차이는 함수는 독립적으로 동작을 실행하고 메서드는 클래스나 객체와 연결되어 정의 되어 진다.예를 들어 함수는 sum(), abs()를 독립적으로 사용할 수 있고 메서드는 ex라는 객체를 선언했을 때 객체안에 plus라는 메서드가 선언되어 있다면 ex.plus() 라는 형태로 사용할 수 있다.

Naver Blog

클래스(class)에서 self를 왜 사용할까?

self는 클래스에서 약속처럼 사용한다. 그렇다면 왜 사용할까?사용자가 hello 라는 클래스를 정의해서 아래처럼 a 라는 instance로 정의했다고 예를 들어 보자a = hello()그렇다면 a라는 인스턴스는 메모리 어딘가에 할당되고 self는 a라는 메모리 구역을 알려주는 지시자 처럼 사용 된다.즉, self는 새롭게 할당되는 instance에 대해 각 각 구분되게 알려준다고 보면 된다.

Naver Blog

2017년 6월 27일 오전 9시 49분에 저장한 글입니다.

`timescale 1ps / 100fs//////////////////////////////////////////////////////////////////////////////////// Company: // Engineer: // // Create Date: 17:04:14 06/26/2017 // Design Name: // Module Name: file_open // Project Name: // Target Devices: // Tool versions: // Description: //// Dependencies: //// Revision: // Revision 0.01 - File Created// Additional Comments: ////////////////////////////////////////////////////////////////////////////////////module file_open( ); ////////I'm using inputs.txt and outputs.txt to read both lines at the same time////////TEXT DOC variables integer file_output.......

1 2