16. JS실습

https://www.opentutorials.org/course/1688/9381


1) JavaScript 실습1


JavaScript가 HTML을 프로그래밍 쪽으로 제어하는 언어라는 것을 이해하자!


이벤트 프로그래밍

- 사건이 일어났을 때 어떤 코드가 실행되어야 한다는 것을 브로우저에게 명령해 놓는 것

사건의 예 : 사용자의 마우스가 움직이는 사건, 사용자가 버튼을 누르는 사건

- onclick, onfocus, onblur 등은 웹 브라우저에 약속되어 있는 이벤드들이고, 이 속성들은 속성 값으로 JavaScript 코드를 취한다.



2) JavaScript 실습2


사용자가 입력한 값을 알림창에 띄우자!


1.html

1
2
3
4
5
6
7
8
9
10
<!DOCTYPE html>
<html>
  <head>
    <meta charset = "utf-8">
  </head>
  <body>
    <input type="text" id="user_input"/>
    <input type="button" value="white" onclick="alert(document.getElementById('user_input').value)"/>
  </body>
</html>
cs




3) JavaScript 실습3


            


        

'html'과 '수아'이라는 두 개의 태그에 대해서만 무언가를 하고 싶을 때

- 두 개의 태그를 하나로 그룹핑(→ 클래스)


클래스

- class 선택자는 '.'

- 같은 태그에만 지정할 필요는 없다.

                        


         

JavaScript코드로 HTML을 제어할 수 있다.

- '강조' 버튼을 클릭하면 onclick 속성 값인 JavaScript 코드가 실행된다.
  이것을 웹 브라우저의 개발자 도구로 보면, 버튼을 눌렀을 때 <ol> 태그의 class 속성이 추가되는 것을 확인할 수 있다.


※ 정리

CSS : HTML을 디자인하는 언어

JavaScript : HTML을 제어하는 언어


2.html

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
<!DOCTYPE html>
<html>
  <head>
    <meta charset = "utf-8">
    <style>
      .em{
        text-decoration:underline;
      }
    </style>
  </head>
  <body>
    <ol id="target">
      <li >html</li>
      <li>css</li>
      <li>javascript</li>
    </ol>
    <ul>
      <li>설아</li>
      <li>수아</li>
      <li>시안</li>
      <li>승재</li>
    </ul>
    <input type="button" value="강조" onclick="document.getElementById('target').className='em'"/>
  </body>
</html>
cs



4) JavaScript 실습4

.html 파일                                                                                                                                              style.css

            

<div> 태그

- division : 영역을 나누다

- 어떤 태그와 태그를 그룹핑해서 CSS적인 효과를 주기위해 사용하는 태그

- 어떤 태그들을 묶어주는 역할


index.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<!DOCTYPE html>
<html>
  <head>
    <meta charset = "utf-8">
    <link rel="stylesheet" type="text/css" href="/style.css">
  </head>
  <body id="target">
    <header>
      <h1><a href="/">JavaScript</a></h1>
    </header>
    <nav>
      <ol>
        <li><a href="/page_html.html">JavaScript란?</a></li>
        <li><a href="/page_vc.html">변수와 상수</a></li>
        <li><a href="/page_op.html">연산자</a></li>
      </ol>
    </nav>
    <div id="control">
      <input type="button" value="white" onclick="document.getElementById('target').className='white'"/>
      <input type="button" value="black" onclick="document.getElementById('target').className='black'"/>
    </div>   
  </body>
</html>
cs


page_html.html

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
<!DOCTYPE html>
<html>
  <head>
    <meta charset = "utf-8">
    <link rel="stylesheet" type="text/css" href="/style.css">
  </head>
  <body id="target">
    <header>
      <h1><a href="/">JavaScript</a></h1>
    </header>
    <nav>
      <ol>
        <li><a href="/page_html.html">JavaScript란?</a></li>
        <li><a href="/page_vc.html">변수와 상수</a></li>
        <li><a href="/page_op.html">연산자</a></li>
      </ol>
    </nav>
    <div id="control">
      <input type="button" value="white" onclick="document.getElementById('target').className='white'"/>
      <input type="button" value="black" onclick="document.getElementById('target').className='black'"/>
    </div>   
    <article>
      <h2>JavaScript란?</h2>
      JavaScript는 웹페이지를 프로그래밍적으로 제어하는 언어입니다.
    </article>
  </body>
</html>
cs


page_op.html

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
<!DOCTYPE html>
<html>
  <head>
    <meta charset = "utf-8">
    <link rel="stylesheet" type="text/css" href="/style.css">
  </head>
  <body id="target">
    <header>
      <h1><a href="/">JavaScript</a></h1>
    </header>
    <nav>
      <ol>
        <li><a href="/page_html.html">JavaScript란?</a></li>
        <li><a href="/page_vc.html">변수와 상수</a></li>
        <li><a href="/page_op.html">연산자</a></li>
      </ol>
    </nav>
    <div id="control">
      <input type="button" value="white" onclick="document.getElementById('target').className='white'"/>
      <input type="button" value="black" onclick="document.getElementById('target').className='black'"/>
    </div>   
    <article>
      <h2>연산자</h2>
      계산을 할 때 사용되는 것입니다.
    </article>
  </body>
</html>
cs


page_vc.html

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
<!DOCTYPE html>
<html>
  <head>
    <meta charset = "utf-8">
    <link rel="stylesheet" type="text/css" href="/style.css">
  </head>
  <body id="target">
    <header>
      <h1><a href="/">JavaScript</a></h1>
    </header>
    <nav>
      <ol>
        <li><a href="/page_html.html">JavaScript란?</a></li>
        <li><a href="/page_vc.html">변수와 상수</a></li>
        <li><a href="/page_op.html">연산자</a></li>
      </ol>
    </nav>
    <div id="control">
      <input type="button" value="white" onclick="document.getElementById('target').className='white'"/>
      <input type="button" value="black" onclick="document.getElementById('target').className='black'"/>
    </div>       
    <article>
      <h2>변수와 상수</h2>
      변수는 바뀔 수 있는 값이고, 상수는 바뀌지 않는 값입니다.
    </article>
  </body>
</html>
cs


style.css

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
body.white{
  background-color:white;
  color:black;
}
body.black{
  background-color:black;
  color:white;
}
header{
  border-bottom:1px solid gray;
  padding:20px;
}
nav{
  border-right:1px solid gray;
  width:200px;
  height:600px;
  float:left;
}
nav ol{
  list-style:none;
}
article{
  float:left;
  padding:20px;
}
#control{
  float:right;
}
cs



5) JavaScript 실습5


※ 집중 포인트

HTML과 HTML이 아닌 것들을 분리해서 HTML을 정보로써 더 가치있게 만드는 것

중복되는 코드는 중복을 제거해서 유지 보수, 속도 등 여러 가지 면에서의 장점이 생기는 것 


(실습은 간단히 index.html만 진행)


index.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<!DOCTYPE html>
<html>
  <head>
    <meta charset = "utf-8">
    <link rel="stylesheet" type="text/css" href="/style.css">
  </head>
  <body id="target">
    <header>
      <h1><a href="/">JavaScript</a></h1>
    </header>
    <nav>
      <ol>
        <li><a href="/page_html.html">JavaScript란?</a></li>
        <li><a href="/page_vc.html">변수와 상수</a></li>
        <li><a href="/page_op.html">연산자</a></li>
      </ol>
    </nav>
    <div id="control">
      <input type="button" value="white" id="white_btn"/>
      <input type="button" value="black" id="black_btn"/>
    </div>
    <script src="/script.js"></script>
  </body>
</html>
cs


script.js

1
2
3
4
5
6
7
8
9
wbtn = document.getElementById('white_btn');
wbtn.addEventListener('click'function(){
  document.getElementById('target').className='white';
})
      
bbtn = document.getElementById('black_btn');
bbtn.addEventListener('click'function(){
  document.getElementById('target').className='black';
})
cs



6) 활용(disqus, tawk)

disqus, LiveRe(국내서비스)

- 댓글 기능


tawi, sendbird(국내서비스)

- 채팅 기능


정의 및 구성


1. 네트워크의 개념

정보(신호)란 무엇인가?

- 네트워크상 상호간에 통신을 수행하기 위한 가장 기본적인 자원

- 크게 음성, 데이터, 화상 등으로 나눌 수 있다.


네트워크란 무엇인가?

- Net + Work : 그물작업

- 어떠한 연결을 통해 정보들을 서로 공유하고 상호 정보교환을 수행하는 형태

- 컴퓨터나 통신기기들을 이용한 연결 형태를 의미


2. 네트워크의 분류

전송방식

- 아날로그 통신망 : 음성이나 화상 등의 아날로그 정보를 진폭, 위상, 주파수 형으로 전송하는 통신망

- 디지털 통신망 : 데이터 통신망과 상호 접속시켜 음성, 데이터 등 다양한 서비스를 제공할 수 있는 통신망


연결형태

- 성형, 버스형, 링형, 트리형, 그물형, 혼합형이 있다.


망의 규모

- LAN : 수 Km 내의 통신 연결을 한다.

- MAN : 도시 한 개 정도 지역의 통신 연결을 한다.

- WAN : 광대역 지역간의 통신 연결을 한다.


통신방법

- 회선 교환망(Circuit Switching Network)

: 발신 기기의 접속 정보(다이얼 숫자 등)로부터 교환기가 착신 기기까지의 회선을 설정한 후 통신 정보를 송수신하는 통신방식을 취하는 교환망

ex) 전화

- 패킷 교환망(Packet Switching Network)

: 정보의 송수신을 패킷 교환 방식으로 실현하는 교환망

ex) 인터넷

- 메시지 교환망(Message Switching Network) 

: 교환기가 일단 호출자의 전체 메시지를 받았다가 이를 적절한 경로를 통해 수신자에게 전달하는 교환망

→ 메시지 전달이 주목적이며, 빠른 응답을 요구하는 응용에는 부적합하다.


서비스 별

- 부가가치 통신망(VAN : Value Added Network) 

: 공중 통신 사업자로부터 회선을 대여받아 고도의 통신 처리 기능으로 부가 가치를 높여 서비스를 제공하는 통신망

- 종합정보통신망(ISDN : Integrated Service Digital Network) 

: 성격이 다른 서비스를 종합적으로 취급하는 디지털 통신망

- 공중망(Public Network) 

: 통신 사업자나 통신 주관청이 제공하는 교환 접속형 통신망


3. 네트워크의 구성요소

메세지

- 통신의 대상이 되는 데이터


송신 장치

- 수신측으로 보낼 데이터를 만드는 장치

ex) 텍스트, 숫자, 그림, 화상 이나 이것들을 조합하여 만든 데이터


수신 장치

- 메시지를 수신하는 장치

ex) 컴퓨터, 전화기, TV


전송매체

- 네트워크 신호를 네트워크 상에서 전달해주는 매체

ex) 동축케이블, 구리선, 광섬유, 무선매체 등


프로토콜

- 송·수신측 간의 통신 방법에 대한 규정



프로토콜과 표준기구


1. 프로토콜

프로토콜

- 서로 다른 시스템에 있는 개체(entity)의 통신을 원활하게 하기 위해 만든 통신규약

- 프로토콜이 서로 간에 정해지지 않았다면, 네트워크는 연결이 되지 X

- 서로 간에 자유롭고 효율적인 통신을 하기 위해 통일된 프로토콜의 표준화가 필요


프로토콜의 주요요소

- 구문(Syntax)

: 데이터 구조나 형식을 말한다.

- 의미(Semantics) 

: 각 부분들의 실제적 의미를 나타낸 것

: 각 부분들을 위한 조정과 에러관리를 위한 제어정보를 포함

ex) 메시지가 채택할 경로, 최종 목적지를 나타냄

- 타이밍(Timing)

: 데이터의 전송속도, 전송시기 결정을 가르킨다.


2. 표준

표준이란?

- 일정한 규칙을 따르려는 일련의 동작들

- 네트워크상에서 에러나 트래픽을 피하기 위한 통제


표준의 범주

- 사실표준(De Facto Standard) : 공식기관에 의해 입법화된 표준은 아니나 널리 현재 산업계에서 사용되고 있는 표준(TCP/IP)이다.

ex) TCP/IP model

- 법률표준(De Jure Standard) : 공식기관에 의해 입법화된 표준

ex) OSI 7 Layer model


3. 표준제정위원회

국제표준기구(ISO), 미국국립표준협회(ANSI), 국제전기통신연합(ITU-T), 전기전자공학과(IEEE), 한국정보통신기술협회(TTA), 전자산업협회(EIA),

한국전자통신연구소 표준연구센터



기본구조


1. 회선구성

회선구성

- 통신기기와 통신기기를 링크로 연결하는 행위


회선구성방법

- 점 대 점 연결(Point to Point Connection) : 1 대 1 통신기기들 간의 전용 링크를 제공

ex) 리모콘과 TV, 전화

- 다중점 연결(Multipoint or Multidrop Connection) : 하나의 링크를 다수의 통신기기가 공유

* 장점 : 데이터 내용이 적을 떄 효과적, 설치비용이 점대점 연결보다 저렴

* 단점 : 링크 고장 시 고장지점 이후 장치들은 사용하지 못함


2. 접속형태(Topology)

접속형태(Topology)

- 장치들의 물리적이거나 논리적인 네트워크 구조

- 노드들과 연결된 링크들을 포함한 네트워크의 배열


접속형태의 종류

- 버스형(Bus Topology)

: 다중점 연결 형태

: 버스라 불리는 공통 배선을 모든 노드들이 공유

: 근거리 통신망(LAN)의 일반적인 방식

: 특정 노드의 상태에 따라 네트워크 상태가 변하지 않음

: 전송형태는 브로드캐스팅


* 장점

: 설치비용이 저렴

: 구조가 간단하고 작은 네트워크에 유용하며 사용이 용이

* 단점

: 네트워크 트래픽이 많을 경우 네트워크 효율이 떨어짐

: 전송 중 다른 컴퓨터에서 연결하기 위해서 끼어드는 횟수가 많아지면 대역폭을 낭비할 수 있음

: 연결점이 하나이기 때문에 연결된 통신장치 중에 한개만 고장 날 시에도 전체 네트워크에 영향을 미침

- 스타형(성형 Star Topology)

: 모든 통신기기들이 하나의 중앙제어장치에 연결

: 내부적으로 논리적 버스형의 구현

: 중앙 집중적인 자원과 관리

: 모든 통신기기는 중앙제어장치를 통해서만 전체 네트워크에 신호를 전송


* 장점

: 새로운 통신장치의 추가나 변경 용이

: 네트워크 오류 발견과 수리가 용이

: 한 통신장치의 오류가 전체 네트워크에 영향을 주지 않음

* 단점

: 중앙제어장치 고장 시 네트워크 전체가 통신불능 상태

: 많은 양의 케이블을 사용하므로 설치비용이 많이 소요

- 트리형(Tree Topology)

: 중앙제어장치와 2차 중앙제어 장치

: 여러 개의 작은 버스형 토폴로지를 계층적으로 연결


* 장점

: 하나의 중앙제어장치에 더 많은 장치 연결 가능

: 우선순위 지원 가능

* 단점

: 중앙제어장치 지점에서 갑작스러운 트래픽 증가 현상이 발생할 수 있음

: 네트워크 마비될 수 있음

- 링형(Ring Topology)


: 모든 통신장치들이 원형으로 둘러싸여 링크에 연결

: 데이터의 흐름은 한 방향

: 네트워크 상의 통신장치들은 리피터 역할
(리피터란, 신호 증폭 및 다음 구간으로 재전송시키는 장치)


* 장점

: 한 통신장치가 네트워크를 독점하여 사용할 수 없음

: 설치와 재구성이 용이

: 접속상태에서 결함 분리가 간단 

* 단점

: 링 내의 한 노드가 손상되면 전체 네트워크가 손상

: 한 방향으로 통신하므로 문제발견 및 해결이 어려움

- 매쉬형(Mesh Topology)

: 모든 노드들이 연결된 형태

: 문제해결이 쉽고 오류에 강함

: 여분의 경로로 인해 오류의 영향을 적게 받음


* 장점

: 분산 연결 구성으로 오류 및 문제 해결이 비교적 쉬움

* 단점

: 중복 경로에는 케이블이 다른 토폴로지에 필요한 것보다 더 많이 필요하므로 비용이 많이 들기 때문에 실제 사용은 드묾

- 혼합형(Hybrid Topology)

                        

: 여러 가지의 토폴로지가 서로 연결되어 규모가 큰 접속형태를 구성 할 수 있게 함

: 일반적으로 스타-버스형 토폴로지와 스타-링형 토폴로지 두 종류의 혼성기술이 많이 사용


3. 통신방식

단방향(Simplex)

- 송신자와 수신자가 고정되어 있고 항상 한 방향으로만 데이터를 전송하는 방식
   ex) 키보드, 모니터


반이중(Half-Duplex)

- 송신자와 수신자가 필요에 따라 교대하는 방식으로서 양방향 어느 쪽으로도 데이터를 전송 가능

- 동시 통신은 불가능

ex) 무전기


전이중(Full-Duplex)

- 송신을 하면서 동시에 수신도 할 수 있는 방식

ex) 전화




네트워크의 범주


1. 근거리 통신망(LAN)

LAN : Local Area Network

- 좁은 지역(수 Km)내의 개인 소유나 단일 사무실, 건물 혹은 학교 들에 있는 장치들을 연결

- 근거리 통신망 내의 정보기기, 소프트웨어, 데이터베이스 등을 공유

- 통신속도는 보통 10~100Mbps이며, 최근 1Gbps와 10Gbps급 등장


2. 도시 통신망(MAN)

MAN : Metropolitan Area Network

- 기업, 가정, 학교 등을 모두 포함한 1개 도시 정도의 지역을 연결

- 데이터, 음성, 화상을 종합적으로 전송

- 전송 매체로 주로 광섬유로 사용

- 통신속도는 1.544~155Mbps


3. 광역 통신망(WAN)

WAN : Wide Area Network

- 국가, 대륙 등과 같은 넓은 지역을 연결하는 네트워크

- 데이터 음성, 화상 정보의 장거리 전송 가능



http://webhacking.kr/challenge/web/web-05/




메인화면



로그인 할 계정이 없어 Join 버튼을 눌렀더니 Access_Denied라는 알림창이 나왔다.



                


그래서 Login 버튼을 누르고 SQL Injection을 수행해보니,

admin이 아니라서 Access Denied 되었다.


admin 아이디와 임의의 패스워드를 입력해 로그인을 하니,

잘못된 패스워드라고 한다.




메인화면의 소스코드를 확인해보니,

login.php가 mem 디렉토리에 있는 것이 보였다.




Directory Listing 취약점을 이용해 

mem 디렉토리 안에 join.php가 있는 것을 발견했다.




http://webhacking.kr/challenge/web/web-05/mem/join.php 로 들어갔다. 검정 화면밖에 나오지 않았다.

그래서 소스코드를 확인해보니, 난독화되어 있었다.



notepad++를 이용해 난독화를 풀었다.

내용은 다음과 같았다.

1. oldzombie라는 쿠키가 있어야 한다.

2. url에 mode=1이 있어야 한다.




EditThisCookie를 이용해 oldzombie 쿠키를 만들고,

url에 파라미터 형태로 mode=1을 추가했더니 회원가입 화면이 나왔다.



admin은 이미 존재하는 아이디이기 때문에 가입할 수 없었고,

id 최대 입력 값은 5자리로 제한되어 있는 것이 이상했다.


※insert 에러

insert 에러란, DB column의 길이가 제한되어 있을 때 그 이상의 길이를 갖고 있는 값이 들어와도

제한된 길이만큼만 저장하고, 나머지는 버리는 것이다.

ex) id varchar(5) 라고 설정되어있는 경우, abcdefg를 입력받아도 DB에는 abcde만 저장된다.




개발자 도구를 이용해서 maxlength 값을 변경하고 회원가입을 한다.



 

admin1이라는 id로 회원가입을 했지만,

1은 버려지고 새로운 admin 계정이 생성되었을 것이다.


새로 가입한 계정(admin/1111)을 가지고 로그인을 시도하면

끝!





'문제풀이 > webhacking.kr' 카테고리의 다른 글

webhacking.kr - 4번  (0) 2017.07.31
webhacking.kr - 3번  (0) 2017.07.31
webhscking.kr - 2번  (0) 2017.07.31
webhacking.kr - 1번  (0) 2017.07.31
webhacking.kr - 회원가입  (0) 2017.07.31

15-12. 함수

https://www.opentutorials.org/course/1688/9377


1) 함수의 기본문법

함수

- 서로 연관되어 있는 부품들을 결합해서 하나의 부품으로 만드는 것

- 반복문은 한 곳에서만 사용해야 하지만, 함수는 다른 곳에서도 호출할 수 있다.


12.php

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
<!DOCTYPE html>
<html>
  <head>
    <meta charset = "utf-8">
  </head>
  <body>
    <h1>javascript</h1>
    <script charset="utf-8">
      // 함수 정의
      function ja(){
        document.write("Hello JS Function");
      }
      ja();  // 함수 호출
    </script>
    <h1>PHP</h1>
    <?php
      // 함수 정의
      function pa(){
        echo "Hello PHP Funcion";
      }
      pa();  // 함수 호출
    ?>
    <script>
      document.write("<br />"); // 줄바꿈
      ja();
    </script>
  </body>
</html>
cs




2) 함수의 입력과 출력


- input은 변수이다.



return

- 함수를 종료시키고, 뒤에 있는 값을 반환시킨다.


write() 함수

- document라고 하는 객체에 소속되어 있는 함수

- 내장 함수


객체

- 지금은 메소드(method)들을 효율적으로 관리하기 위해서 비슷한 성격끼리 categorizing 한 거라고 생각하자.


13.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<!DOCTYPE html>
<html>
  <head>
    <meta charset = "utf-8">
  </head>
  <body>
    <h1>javascript</h1>
    <script charset="utf-8">
      // 사용자 정의 함수
      function ja(input){
        return input+1;
      }
      document.write(ja(6));  // 내장 함수
      prompt(ja(3));  // 내장 함수
    </script>
    <h1>PHP</h1>
    <?php
      function pa($input){
        return $input+1;
      }
      echo pa(4);
    ?>
  </body>
</html>
cs





15-13. UI vs API

https://www.opentutorials.org/course/1688/9379


Interface

- 사람과 기계가 서로 소통하기 위한 접점 또는 접점에 해당되는 장치

ex) 컴퓨터나 스마트폰의 전원 버튼, 디스플레이

- 장치와 장치가 서로 소통하기 위한 접점에 존재하는 것

ex) USB Interface

- 웹 애플리케이션이 웹 브라우저와 교류할 수 있는 접점

ex) UI, API


UI(User Interface)

- 사용자가 직접 조작하는 Interface


API(Application Programming Interface)

- 애플리케이션이 무엇인가를 하기 위해서 프로그래밍적으로 애플리케이션이 돌아가는 시스템에게 전달하는 명령


High Level                                                                                                                   Low Level

UI ← 웹 애플리케이션 ← 웹 브라우저 ← 운영체제 ← C와 같은 언어 ← 어셈블리어 ← 기계어 ← 전자공학 ← 전기공학 ← 물리학

- 각각의 층과 층 사이는 API를 통해서 교류 한다.


API 전성시대

- 과거에는 운영체제만이 유일하게 API를 제공하고 있었다. 그래서 어떤 소프트웨어를 만든다는 것은 운영체제 위에서 직접적으로 돌아가는 애플리케이션을 만드는 거라고 할 수 있었다.

- 웹 브라우저는 운영체제 위에서 동작하는 하나의 애플리케이션이지만, 스스로가 API를 가지고 있었기 때문에 웹 브라우저 위에서 동작하는 수 많은 웹 애플리케이션들이 등장하게 되었다.

- 페이스북 앱, 구글 플러스 앱, 스마트폰, 보일러 등 스스로 API를 제공하는 것들이 등장하고 있다.



15-14. 프로그래밍 접근방법

https://www.opentutorials.org/course/1688/9380



적정 용도의 언어를 적정 수준으로 배우세요

- 장기전략 : 장기적으로 능숙한 언어의 사용자가 되는 것

- 단기전략 : 서툰 코딩 실력으로 무언가를 만들어보는 것


API를 탐험해보세요


프로그래밍 언어로 API를 조합해서 애플리케이션을 만들어보세요


그것을 좋아할 관객을 찾으세요


한계를 경험하세요


더 잘 만들고 싶을 때, 더 잘 할 수 있는 방법에 대한 연구를 찾으세요

- 대학의 전공과정

- 대학에서 배우는 것들 각각의 취지가 무엇인지 파악

 

Computational Thinking(컴퓨터적 사고)



+ Recent posts