부제 - 역시 쉽지 않다. 그 밖에도 좋은 코드를 짜는 지침에는 여러가지가 있습니다. 그런데 사실 프로그램 생각한대로 잘 돌아가면 그만 아닌가요? 저런 지침들 꼭 따를 필요 있을까요? 맞습니다 저런 규칙들 따를 필요 없어요 단, 조건이 하나 필요해요 완성 후에 다시는 코드를 보지 않느다면요! 프로그램이 사용자에게 전달되고나면 땡! 그걸로 끝인거죠 하지만 세상에 그런 프로그램이 있나요 '한번 만들면 다시 보지 않는 프로그램' 잘 생각해보면 있습니다. 프로그램명은 보통 "XX과목 OO팀 프로젝트" 사용자로는 공식적으로 교수님, 실제로는 조교님 어쩌면 조교님과 친한 내 친구 아무리 일찍 공지해도 제출 2주 전에 시작하는 신기한 개발 가독성은 사치가 되어 버립니다. 나중에 합류하려고 해도 그 땐 이미 너무 늦어..
부제 - 그래도 쉽지 않다. 컴퓨터는 "0 과 1"로 구성된 문장만 이해합니다. 하지만 "0 과 1"로 구성된 프로그램을 짜기란 쉽지 않습니다. "커피 마시고 돌아오면 무슨 작업을 하고 있었는지 알 수 있었을까?" 의문이 들지만 누군가는 이 작업을 했겠죠"0 과 1" 보다는 사람이 알아보기 편한 코드가 등장합니다. 어셈블리어죠 문법을 몰라도 추리는 해볼만한 형태네요 그 이후에는 C언어를 포함 현재 프로그래밍의 형태와 유사한 고급 언어들이 등장합니다 기계 친화적이란 특정 하드웨어의 최적화하기 용이하다는 겁니다. 인간 친화적이란 말은 사람이 이해하기 쉽다는 말입니다. 프로그래밍 코드는 시대가 흐를수록 사람이 이해하기 쉽도록 변해갑니다. 기계어로 통역하는 과정은 컴파일, 인터프리터, 가상머신 등등을 포함해서 ..
부제 - 여전히 쉽지 않다. 절차지향은 "절차"를 지향하는 것이고 객체지향은 "객체"를 지향하는 것이니 "시대는 객체지향에 이르러 절차는 중요하지 않게 되었구나!" 생각에 사로잡힐 무렵 GUI(Graphic User Interface) 프로그래밍을 시작하게 됩니다. CUI(Console User Interface) 첩보액션 영화에 자주 등장하는 해커 화면같은 화면을 말합니다. GUI(Graphic User Interface) 화면 전체에 상호작용 요소가 배친된 화면을 말합니다. 프로그래밍 입문자의 CUI 프로그램은 아마 이런 형태일 것입니다. 입력을 받아 처리하고 그 결과가 다시 또 입력이 되고... 모든 처리가 완료되면, 프로그램은 종료 GUI 프로그래밍을 하게되면 화면에 여러 상호작용 요소를 배치하고..
부제 - 정말 쉽지 않다. 프로그래밍 일반인들에게는 생소한 단어였습니다. 하지만 이제 어린아이들도 필수 교육으로 받을만큼 가까운 단어가 되었죠. 프로그래밍에 입문하는 방법은 무엇이 있을까요? 저의 입문은 C언어 였습니다 컴퓨터공학을 전공하면 보통 C언어부터 시작하는 것 같습니다. 요즘은 비전공자의 프로그래밍 입문을 위해 진입장벽을 낮춘 언어도 많습니다. 아이들 교육 목적의 프로그래밍 언어 Scratch 비전공자가 프로그래밍에 입문하기 좋은 Python 다른 여러가지 프로그래밍 언어들이 존재하겠지만 명령을 수행한다 DO 조건으로 흐름을 제어한다 IF 반복한다 LOOP 이를 활용하여 머리속에 순서도를 그리는 컴퓨팅 사고를 배우게 됩니다. C언어 과제가 계산기를 만드는 것일만큼 처음에 배우는 프로그래밍은 굉장..
부제 - 절대 쉽지 않다. 객체 지향 프로그래밍 Object Oriented Programming - OOP 컴퓨터 공학을 전공한 사람이라면, 프로그래밍을 입문한 사람이라면 한번씩은 들어보았을 단어입니다. C++과 Java을 대표적으로 객체 지향 프로그래밍 언어들이 매우 많이 있습니다. 객체 지향 프로그래밍 언어를 사용하면 정말 객체 지향 프로그래밍을 하게 되는 걸까요? 객체 지향 프로그래밍은 패러다임이라고 합니다. (정말 많은 패러다임 중에 하나일뿐이죠) C++, Java라는 언어는 문법을 알면 사용할 수 있지만 C++, Java로 프로그래밍했다고 객체 지향 프로그래밍을 했다고 할 수는 없습니다. 프로그래밍 언어가 세상에 많이 존재하는 언어로 본다면, 프로그래밍 패러다임은 글쓰기 방식 혹은 말하기 방식..
재미로 시작했던 이 여정의 막을 내릴 때가 왔네요. 그 동안 총 3개의 요청방법을 알게되었습니다. 요청 1. 평창 동계 올림픽의 모든 입장권 리스트 얻음 요청 2. 특정 입장권의 경기 정보를 얻음 요청 3. 특정 입장권의 가격 정보를 얻음 알고리즘은 간단합니다. 알고리즘이라고 하기도 뭐한 수준이지만import requests def get_session_list(): url = "https://tickets.pyeongchang2018.com/Session/GetSessionList"; payload = { "Culture":"ko-kr", "SDate":"2018-02-08", "EDate":"2018-02-25", "SearchKey":"", "SeatCount":0, "Disciplines":"",..
경기 상세 페이지에서 요청하는 데이터를 한번 살펴봅시다. 4개의 요청으로 보이지만 데이터가 표시되는 건 짝수번째 입니다. 첫번째 요청은 경기 자체에 대한 상세 정보를 보여주는 것 같네요. https://ticketapi.pyeongchang2018.com/api/Session/GetSession/?Culture=ko-kr&SessionCode=CUR01 API라는 단어가 포함된 URL이네요. 이렇게 어렵게 찾지 않아도 API로 제공하고 있을지도 모르겠네요. 경기에 대한 정보를 나타내는 상단을 구성하는 데이터인 것 같네요. 그렇다면 하단은 두 번째 데이터가 구성하겠군요. 경기 정보와는 다르게 두번째 정보는 여러 데이터의 다발로 구성되어 있네요. 해당 경기에 배정된 입장권이 카테고리별로(일반A, 휠체어A, ..
심심풀이로 쓴 글이 벌써 5부네요. 데이터가 리스트를 어떻게 구성하는지 한번 추론해봅시다. 리스트에 보여지는 내용과 데이터를 매칭 해보았습니다. 데이터를 있는 그대로 사용해서 크게 고민할 것도 없었습니다. 예매 가능성만 빼구요. Ctrl + Shift + C를 누르면 화면에 표시된 부분에 해당하는 HTML 코드를 찾아줍니다. ... 뭔가 딱 봐도 예매 가능성처럼 생긴 부분이네요 뭔가 우리가 가진 데이터를 가지고 저 부분을 수정하는 스크립트가 있을 것 같은 느낌이 강하게 드는군요. 리스트가 없는 빈 틀이었던 HTML 파일에 검색해보니 이런 스크립트가 있네요 데이터의 저 두 숫자를 이용하는 간단한 코드네요. GP_OrgSeatCount 중 GP_SeatCount 의 비율로 High, Medium, Low를 ..
데이터가 어디 숨어있는지 찾았으니 불러봅시다. GetSessionList 이름도 딱 리스트를 요청하는 것처럼 생겼네요. 링크를 복사해서 브라우저로 들어가봅시다. ??? 아무런 화면이 나오지 않네요. 사용하는 방식이 POST네요 브라우저에 URL을 입력하고 엔터를 치는 것은 GET방식입니다. 쉽게 얘기하면 당겨야 할 문을 밀어서 열리지 않았다고 보면 됩니다. 함께 보내야할 정보도 잊지말고 잘 넣어줘야겠네요. Payload 기억하도록 하죠! POST방식 요청은 브라우저에서는 할 수 없으니! 다시 파이선 코드로 돌아옵시다. import requests url = "https://tickets.pyeongchang2018.com/Session/GetSessionList"; payload = { "Culture"..
그 많던 리스트가 다 어디로 도망간 것일까요? 입장권 리스트를 보여주던 화면을 다시 면밀히 살펴보죠. 이번에는 사용자의 눈이 아닌 개발자의 눈으로 봅시다. 저는 지금 Chrome 브라우저를 사용하고 있습니다. F12 키를 누르면 개발자 도구를 사용할 수 있습니다. 브라우저에 의해 샤샤샥 이쁘게 그려지기 전 상태를 볼 수 있네요. HTML 코드를 보는 것도 분석에 도움이 될 지 모르지만 그보다 먼저 Network 정보를 먼저 보고 싶네요. Network의 눈을 통하면 어떤 자원들(HTML, 이미지, 자바스크립트 등등)이 브라우저에 도착하고 떠났는지를 확인할 수 있습니다. F5 키를 눌러 새로고침을 해보았습니다. 그 짧은 사이에 정말 많은 정보가 오는 모양이네요. 뭔가 엄청 많은데 대부분 리소스인 것 같네요..
- Total
- Today
- Yesterday
- 클래스
- 평창
- 객체지향
- 올림픽
- abstraction
- 동계
- Android
- Object Oriented Programming
- 우분투
- 마크다운
- 추상화
- 입장권
- readme.md
- ubuntu
- media
- 리눅스
- Linux
- Video
- Class
- markdown
- 다형성
- 크롤링
- Polymorphism
- 캡슐화
- Encapsulation
- player
- ContentResolver
- Multimedia
- 파이선
- OOP
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |