일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- CSS
- c언어
- 중학수학
- 데이터베이스
- 디버깅
- 파이썬
- 자바
- 컴퓨터구조
- JDBC
- html/css
- 상속
- 혼공머신
- 중학1-1
- 자바스크립트
- 순환신경망
- 머신러닝
- 정보처리기사실기
- SQL
- 자바스크립트심화
- JSP
- 오블완
- JSP/Servlet
- rnn
- 연습문제
- 딥러닝
- 정보처리기사필기
- 자바 실습
- 개발일기
- 데이터분석
- 컴퓨터비전
- Today
- Total
목록프로그래밍 언어/파이썬 (129)
클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지
인터넷으로 주고받는 데이터 형식은 다양하다. 예를 들어 이메일은 인터넷에서 bASE64라는 데이터 형식으로 전송된다. 이번 장에서는 JSON, Base64 등의 인터넷 데이터를 다루는 모듈을 알아본다. JSON 데이터를 다루려면? - jsonJSON 데이터를 쉽게 처리하고자 사용하는 모듈이다. 다음은 개인정보를 JSON 형태의 데이터로 만든 myinfo.json 파일이다. 인터넷으로 얻은 이 파일을 읽어 파이썬에서 처리할 수 있도록 딕셔너리 자료형으로 만들려면 어떻게 해야 할까? JSON 파일을 읽어 딕셔너리로 변환하려면 다음처럼 json 모듈을 사용하면 된다. 하지만 이 코드를 실행하는데 오류가 정말 많이 떠서 무척 어려웠다. 첫번째는 파일 경로를 지정할 때 현재 JSON 파일이 있는 위치에 지정..
이어서 네트워크와 프로세스 통신에 관한 학습을 이어가 볼 것이다. 데이터 관련 라이브러리는 별로 재미가 없었는데 운영체제와 서버 관련 라이브러리부터는 정말 재미있다. 역시 난 벡엔드에 관심이 많다는 걸 느꼈다. SSL로 서버와 통신하려면? - sslsocket 모듈로 자작성한 서버/클라이언트에 공개키 암호화 방식을 사용하는 모듈이다. 공개키 암호화 방식이란 공개 키와 비밀 키를 사용하여 암호화하는 방식이다 비밀 키로 암호화한 데이터는 공개 키로만 복호화하고, 공개 키로 암호화한 데이터는 비밀 키로만 복호화하는 방식이다. 서버와의 통신에 보안을 강화하고자 한다. 이전 절에서 socket 모듈로 만들었던 숫자 맞추기 서버/클라이언트 프로그램에 ssl 모듈을 사용하여 공개 키 방식의 암호호화를 적용하려면 ..
하나의 컴퓨터에서 다른 컴퓨터와 데이터를 주고받으려면 통신이 필요하다. 이번 단원에서는 비동기, 소켓, 시그널과 관련된 통신 프로그램을 작성할 때 사용하는 파이썬 모듈을 알아본다. 비동기 방식으로 프로그래밍하려면? - asyncioasync/await 구문을 사용하여 동시성 코드를 작성할 수 있게 해주는 모듈로, asyncio를 사용하면 단일 스레드 작업을 병렬로 처리할 수 있다. 다음은 서로 다른 입력 값으로 sum() 함수를 2번 수행하여 결과값을 출력하는 파이썬 프로그램이다. sum() 함수에서 입력 값을 하나씩 더할 때마다 sleep() 함수에 의해 1초씩 시간이 소요된다. 이 프로그램을 실행한 결과는 다음과 같다. A 작업은 2초, B 작업 3초 등 5초의 시간이 걸리고, sum() 함수를 ..
동시 실행과 관련된 파이썬 모듈을 사용하면 한꺼번에 여러 가지 일을 할 수 있다. 스레드를 이용하여 병렬로 처리하려면? - threading스레드를 이용하여 한 프로세스에서 2가지 일을 동시에 실행할 수 있게 하는 모듈이다. 다음은 페이지 번호를 입력받아 위치독스의 페이지 리소스를 wikidocs_페이지번호.html 파일로 저장하도록 만든 함수이다. A 씨는 참고 자료를 만드는데, 다음처럼 10개의 위키독스 페이지가 필요하다고 한다. 앞의 함수를 사용하여 페이지 수만큼 실행하여 원하는 결과를 얻을 수 있다. 하지만, A 씨는 10개의 요청을 하나씩 보내기보다 동시에 요청하여 더 빠른 속도로 리소스를 얻고 싶어 한다. 동시에 요청할 수 있도록 하려면 함수를 어떻게 수정해야 할까? 동시에 요청하려면 ..
운영체제는 시스템 하드웨어에서 응용 소프트웨어를 실행하고자 제공하는 시스템 소프웨어이다. 디버깅용 로그를 남기려면? - logging로그를 파일로 출력할 때 사용하는 모듈이다. 다음 myfunc() 함수에서 "함수가 시작되었습니다."라는 문자열을 pirnt()로 콘솔 화면에 출력하는 대신 디버깅에 이용하고자 debug.log라는 이름의 로그 파일로 출력할 수 있도록 프로그램을 수정하려면 어떻게 해야 할까? 단, 로그 파일에 출력하는 문자열은 [시간] + 메시지 형식이어야 한다.파일로 로그를 출력하려면 logging 모듈을 사용해야 한다. 다음처럼 dictConfig로 표시할 로그를 설정하고 logging.debug(문자열)로 원하는 로그를 출력하면 된다. 이렇게 코드를 수정하고 실행해 보면 텍스트..
프로그래밍 시 파일과 디렉터리 처리는 기본 중의 기본이다. 이번 단원에서는 파일과 디렉터리를 다루는 모듈을 알아본다. 디렉터리의 구성을 알려면? - os.path경로명과 파일명에 대한 유용한 함수를 제공하는 모듈이다.특정 폴더에 어떤 파이썬 파일이 있는지 알고자 한다. 이럴 때 매개변수에 지정한 디렉터리의 파이썬 파일을 모두 출력하는 search(dirname) 함수는 어떻게 작성해야 할까? 단, 하위 디렉터리의 파이썬 파일도 모두 출력해야 한다. 디렉터리 경로를 입력으로 받아 파이썬 파일을 출력하는 search() 함수는 다음과 같다. 이렇게 잘 출력이 되고 있다. 특정 파일만 찾으려면? - fnmatch파일 중에서 특정 패턴과 일치하는 파일을 찾을 때 사용하는 모듈이다. 현재 디렉터리의 모든..
이제부터 모든 라이브러리를 학습하지 않고 필요하고 중요하다고 생각되는 부분 위주로 학습하려고 한다. 순서를 생각하며 카드를 뽑으려면? - itertools.permutations반복 가능 객체 중에서 r개를 선택한 순열을 반환하는 함수이다. 1, 2, 3 숫자가 적힌 3장의 카드에서 두 장의 카드를 꺼내 만들 수 있는 2자리 숫자를 모두 구하려면 어떻게 해야 할까? 3장의 카드 중 순서에 상관없이 2장을 뽑는 경우는 모두 3가지이다. 하지만 순서를 더하면 6가지가 된다. 이 순열은 itertools.permultations()를 사용하면 간단히 구할 수 있다. 만들 수 있는 2자리 숫자는 다음과 같이 모두 6가지이다. 조합3장의 카드에서 순서에 상관없이 2장을 고르는 조합은 itertools.c..
함수형 프로그래밍은 자료 처리를 수학 함수 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임의 하나이다. 이번 단원에서는 파이썬 함수형 프로그래밍을 지원하는 모듈을 알아본다. 상담원을 순서대로 배정하려면? - itertools.cycle반복 가능한 객체(iterable)를 순서대로 무한히 반복하는 이터레이터를 생성하는 함수이다. 어느 고객센터에 다음과 같이 3명이 근무 중이라 할 때 이 3명이 순서대로 고객 상담 전화를 받을 수 있도록 하는 상담 프로그럼을 개발해야 한다.상담 전화가 올 때마다 순서대로 상담원을 배정하려면 어떻게 하면 될까? 다음처럼 itertools.cycle() 함수로 무한히 반복하는 이터레이터를 만들고 next()를 호출하여 다음 사람을 계속 요청하면 된다..
수학 관련 모듈을 이어서 학습해 본다. 분수를 정확하게 계산하려면? - fractionsfractions는 유리수를 계산할 때 사용하는 모듈이다. 유리수 1/5과 2/5를 더하면 3/5이다. 하지만 파이썬을 이용한 유리수 연산 결과는 다음과 같다. 분수로 결과가 나오려면 어떻게 해야 할까? 파이썬에서 유리수 연산을 정확하게 하려면 fractions.Fraction을 사용해야 한다. 이제 분모와 분자로 나타내고 이를 계산해 보자. 분자의 값과 분모의 값을 확인해 보았다. 이제 계산을 한 결과는 다음과 같이 출력된다. 결과를 실수로 바꿀 수도 있다. fractions - 유리수 fractions — Rational numbersSource code: Lib/fractions.py The fracti..
파이썬은 수치 연산을 위한 모듈을 많이 지원하여 데이터 과학이나 인공지능에 관련된 프로그램을 많이 사용한다. 이번 단원에서는 수학과 관련된 모듈을 살펴볼 것이다. 과자를 똑같이 나누어 담으려면? - math.gcdmath.gcd() 함수를 이용하면 최대공약수를 쉽게 구할 수 있다. 어린이집에서 사탕 60개, 초콜릿 100개, 젤리 80개를 준비했다. 똑같이 나누어 봉지에 담는다고 하면 최대 몇 봉지까지 만들 수 있을까? 단, 사탕, 초콜릿, 젤리는 남기지 않고 모두 담도록 한다.이 문제는 60, 100, 80의 최대공약수를 구하면 바로 해결된다. 전체 개수를 20으로 나누어도 답을 구할 수 있다. math - 수학 함수 math — Mathematical functionsThis module pr..