<b>This text is bold</b>
<b> - Bold text
<strong> - Important text
<i> - Italic text
<em> - Emphasized text
<mark> - Marked text
<small> - Smaller text
<del> - Deleted text
<ins> - Inserted text
<sub> - Subscript text
<sup> - Superscript text
<style>
.myDiv {
border: 5px outset red;
background-color: lightblue;
text-align: center;
}
</style>
...
<div class="myDiv">
<h2>This is a heading in a div element</h2>
<p>This is some text in a div element.</p>
</div>
...
<textarea id="w3review" name="w3review" rows="4" cols="50">
At w3schools.com you will learn how to make a website. They offer free tutorials in all web development technologies.
</textarea>
Putty – SSH(Secure Shell) 를 통한 command line 으로 서버 프로그램 제어
WinSCP – FTP(File Transfer Protocol) 를 통한 서버에 파일 전송 – 서버의 파일을 직접 편집 가능
vi 에디터 – 입력모드(input mode) – 명령모드(command mode) -> vi 시작 시 기본모드 – 라스트 라인모드(last-line mode 혹은 EX mode) – 내용 삽입 a : 커서 바로 다음부터 입력 A : 현재 행 끝부터 입력 i : 커서 바로 앞부터 입력 o : 커서 다음에 새로운 행이 추가되면서 입력
– 내용 삭제 x : 현재 커서 위치의 한 문자가 삭제 dw : 현재 커서 위치의 한 단어가 삭제 dd : 현재 커서 위치의 한 행이 삭제 D : 현재 커서부터 그 행의 마지막까지 삭제
– 단어나 문자 찾기 /little : 첫 little 단어를 파일 아래로 내려가면서 찾음 ?little : 첫 little 단어를 파일 위로 올라가면서 찾음 n : 이전의 찾기 명령을 동일 방향으로 실행 N : 이전의 찾기 명령을 반대 방향으로 실행
– 종료하기 wq [ filename ] : 저장하고 종료 (vi 시작 시 filename 이 없었다면 반드시 지정) :q! : 저장하지 않고 무조건 종료 :w : 지금까지 작업 내용 저장 (종료 않음) :w [ filename ] : 지정한 이름으로 저장 (종료 않음)
Unix Shell – 유닉스 쉘 (Unix Shell) = 명령줄 – 유닉스 운영 체제와 유닉스 계통 시스템을 위한 사용자 인터페이스 제공 – 문자열 입력으로 쉘 실행
UNIX 기본 명령어 $ ls -al : 파일 목록 보기 $ cd 디렉토리명 : 디렉토리 이동, ( change directory ) $ cd .. : 하위 디렉토리 이동 $ mkdir 디렉토리명 : 디렉토리 생성 $ rm 파일명 : 파일 삭제 $ rm -r 디렉터리명 : 디렉토리 안의 파일 및 디렉토리 삭제. recursive $ rm -i 파일명 : 한번 묻고 삭제. (질문없이 삭제하면 복구불가하므로 주의 요망) $ mv 파일명1 파일명2 : 파일명 변경, move $ mv 파일명 디렉터리명 : 파일을 디렉토리로 이동, move $ cp [옵션] FILE1 FILE2 : FILE1을 FILE2로 복사, overwrite 주의, -i : overwrite 의 방지
프로토콜 (protocol) – 컴퓨터나 통신 장비 사이에서 메시지를 주고 받는 양식과 규칙 체계
패킷 (Packet) 전송 – 큰 용량의 정보를 작은 단위의 패킷으로 나누어 전송하는 방법
TCP/IP – TCP (Transmission Control Protocol) : 송신자와 수신자 사이의 전송 단계에서 패킷의 주소와 내용을 담당하는 프로토콜 – IP (Internet Protocol) : 패킷을 목적지까지 보내는 규칙을 정의한 프로토콜
웹(web) – World Wide Web (WWW) 의 줄임말 – 웹의 창시자 : 팀 버너스리 – 인터넷에 연결된 컴퓨터를 통해 사람들이 정보를 공유할 수 있는 전 세계적인 정보 공간 – 메일, 정보검색, 교육, 인트라넷 등으로 활용 – Web 을 위한 프로토콜 : HTTP
DNS: Domain Name System – 사용자가 알기 쉬운 도메인을 컴퓨터가 알기 쉬운 ip주소로 변환하는 역할
웹 접속 과정
웹의 동작 – 웹 브라우저를 통해 웹 서버에 접속하여 정보 획득 가능 – 웹 접속과 실행을 위해 프론트 엔드와 백 엔드의 역할이 필요
프론트 엔드 – 빙하의 노출된 부분 – 웹의 외관적으로 보이는 부분을 담당
백 엔드 – 빙하의 숨겨진 부분 – 웹의 데이터 베이스 관리, 서버 연동 등의 외관적으로 보이지 않는 부분을 담당
프론트 엔드와 백 엔드 – HTML : 웹 페이지의 기본 구조 담당 – CSS : 웹의 스타일을 담당 – JavaScript : 웹 페이지의 동작 담당 – Jquery, nodeJS : 자바스크립트의 기능을 활용 – Cordova : 하이브리드 앱 개발
웹앱 – 웹 브라우저를 통해서 실행되는 응용 프로그램을 총칭 – Hosted App: 온라인 상태에서 URL 접속을 통해서 실행되는 웹앱 – Packaged App: 실행에 필요한 모든 웹 문서와 파일들을 하나의 ZIP 파일로 압축하여 제공하는 웹앱
네이티브 앱(Native App) – 각각의 스마트폰 OS 환경에 따라 제작된 앱
모바일 웹(Mobile Web) – 웹 어플리케이션을 모바일 스크린 크기로 축소해 놓은 것 – 일반적인 웹 기술로 개발되고 모바일 브라우저에서 실행됨
모바일 웹앱(Mobile WebApp) – 모바일 웹보다 모바일에 더 최적화되고 네이티브 앱화됨 – 단일 페이지 모델을 사용하여 화면을 전환 – 모바일 웹보다 실행 속도가 빠름
하이브리드 앱(Hybrid App) – 네이티브 앱과 웹 앱의 장점을 가지고 단점을 보완한 앱 – 외부 형태는 네이티브 앱이지만, 실제 내부는 모바일 웹앱으로 실행 – 예시: 은행 어플리케이션
바람이 불때 프리킥 코드 06-03
# wind
wind_speed = 5 # m/s
#wind_speed = -5 # m/s
#wind_speed = -10 # m/s
wind_v = wind_speed*vec(1,0,0)
# Drag Force
ball.v_w = ball.v - wind_v
drag_wind = -0.5*rho*Cd*(pi*ball.radius**2)*mag(ball.v_w)**2*norm(ball.v_w)
# Sum of Forces
ball.f = grav + drag_wind
마그누스 효과
공에 회전 – 회전하는 방향으로 공이 휨 – 마그누스 힘, 마그누스 효과 – 물체주변의 공기 + 물체 회전 – 진공에서는 휘지 않음. – 물체와 기체분자와의 상호작용 – 기체분자가 축구공에 미치는 알짜힘 ->위쪽 방향으로의 힘.
바나나킥 시뮬레이션 08-01
Cm = 1 # 저항계수
w = 10*2*pi # 10 rev. per sec 초당 10회전
# Magnus Force
magnus = 0.5*rho*Cm*(pi*ball.radius**2)*ball.radius*w*mag(ball.v)*cross(vec(0,1,0),norm(ball.v))
# Sum of Forces
ball.f = grav + drag + magnus
GlowScript 2.9 VPython
# 지구 : 반지름 6,400,000m, 6,400km
Earth = sphere(pos = vector(0,0,0), radius = 6400000, texture = textures.earth)
# 달 : 지구와 거리 385,000,000m 385,000km, 반지름 1,737,000m 1,737km
Moon = sphere(pos = vector(385000e3,0,0), radius = 1737000, make_trail = True)
sf = 6 #scailing factor
Earth.radius = sf*Earth.radius
Moon.radius = sf*Moon.radius
# 중력상수, 만유인력상수, 뉴턴상수: 6.674×10-11 N m2/kg2
G = 6.67e-11
# 지구 질량
Earth.mass = 5.972e24
# 달 질량
Moon.mass = 7.347e22
Earth.v = vec(0,0,0)
Moon.v = vec(0,0,0)
# time
t = 0
dt = 60
# Simulation Loop
while True:
rate(1000)
# Forces
r = Earth.pos - Moon.pos
Moon.f = G * Earth.mass * Moon.mass / mag(r) ** 2 * norm(r)
Earth.f = -Moon.f
# Time Integration
Moon.v = Moon.v + Moon.f/Moon.mass*dt
Earth.v = Earth.v + Earth.f/Earth.mass*dt
Moon.pos = Moon.pos + Moon.v*dt
Earth.pos = Earth.pos + Earth.v*dt
t = t + dt
# Collision Check
if Earth.radius + Moon.radius > mag(r):
print("Collision!")
print(t/60/60/24, "days")
break
달의 공전
달의 공전속도 = 1,022km/s – Moon.v = vec(0, 1022, 0)
코드 05-01 – 만유인력에 의해 (서로 끌어당겨) 점점 위로 올라감 – 지구의 초기속도를 달의 초기속도 반대 방향으로 설정 – 지구의 초기속도 = 달의 속도 x 달의 질량 / 지구의 질량 Earth.v = -Moon.v * Moon.mass / Earth.mass -> 운동량 보존의 법칙 : 지구와 달을 하나의 시스템을 보았을때 운동량을 0으로 만드는 방법 (이렇게 하면 질량 중심의 위치가 변하지 않음)
속도 – 일정 시간동안 물체의 위치가 변한 정도 – 위치의 변화, 변위를 나타내는 물리량 – 벡터 형태로 표현 – Speed and Velocity – 속력과 속도 – 속력 speed = \frac {{\varDelta}s} {{\varDelta}t} = \frac{Distance}{Time} = \frac{50 km}{1 hour} : 스칼라 – 속도(Velocity) 는 방향이 있는 속력 : 벡터
dt = 0.01
while t < 4:
rate(1/dt)
ball.pos = ball.pos + ball.v*dt
t = t + dt
rate : 초당 몇번 이 구문을 실행하게 할것인가?
rate(1/dt) : 실시간, 시간간격을 dt로 잡았다면 1/dt 는 실시간, dt가 1초면 1초마다, 0.01초면 0.01초마다.
rate(100) : 초당 while 루프 안을 100 번 수행(화면을 변경)하겠다는 의미
제 2 법칙 가속도의 법칙
\color{blue} F = ma
힘 = 질량 X 가속도
힘이 클수록 더 많은 가속도
질량이 클수록 더 적은 가속도
힘이 변하지 않을때, 가속도는 일정 : 등가속도운동
하나의 물체에 여러힘이 작용할때는 벡터의 합으로 알짜 힘을 구함
가속도 (Acceleration) – 속도가 변하는 정도 : 일정 시간 동안 물체의 속도가 변한 정도
가속도 = 속도가 변한 정도 / 일정 시간 = {\frac {4 m/s} {2 s}} = 2 m/s2
가속도 예제 03-01
GlowScript 2.9 VPython
#creating ball
ball = sphere(radius = 0.2)
#Initial Setting
ball.pos = vec(-2,0,0) ## m
ball.v = vec(0,0,0) ## m/s
ball.a = vec(0.35,0,0) ## m/s**2, 가속도
t = 0 ## s
dt = 1 ## s
attach_arrow(ball, "v", shaftwidth=0.1, color=color.green)
attach_arrow(ball, "a", shaftwidth=0.05, color=color.red)
attach_trail(ball, type = 'points', pps = 5)
while t < 4:
rate(1/dt)
ball.v = ball.v + ball.a*dt
ball.pos = ball.pos + ball.v*dt #r1 ‐> r2
t = t + dt
attach_trail(ball, type = 'points', pps = 5)
- 객체의 자취를 그려주는 함수
- ball : 자취를 그릴 객체
- type : 자취의 type 설정
- pps : 점을 몇초마다 그릴 것인지
motion_graph = graph(title = 'position-time', xtitle = 't', ytitle = 'y')
- 그래프 생성 함수
- title : 그래프 이름 설정
- xtitle : x축 이름 설정
- ytitle : y축 이름 설정
g_bally = gcurve()
- 그래프의 데이터를 그리는 함수
g_bally.plot(pos(t, ball.pos.y))
- 그래프에 새 데이터를 추가해 그리는 함수
포물체의 움직임 예제 03-03
GlowScript 2.9 VPython
rList = list()
objList = list()
#Creating Objects
ground = box(pos = vec(0, -5, 0), size = vec(15, 0.01, 15))
for i in range(0, 100):
rList.append(vec(0, -4, 0))
for r in rList:
objList.append(sphere(pos = r, radius = 0.1, color = vec(random(), random(), random()), make_trail=True, retain = 30))
#Intitial Condition
vi = vec(0, 5.0, 0)
a = vec(0, -3, 0)
explosion = False
for obj in objList:
obj.v = vi
#time Setting
t = 0
dt = 0.01
#Simulation Loop
while t < 12:
rate(1/dt)
#Explosion
if t > 1 and explosion == False:
print("explosion!")
for obj in objList:
obj.v = obj.v + vec(random()-0.5, random()-0.5, random()-0.5)
explosion = True
#Velocity and Position Update
for obj in objList:
obj.v = obj.v + a*dt
obj.pos = obj.pos + obj.v*dt
#Coliision Handling
if obj.pos.y < ground.pos.y:
obj.pos.y = ground.pos.y
obj.v.y = -0.8 * obj.v.y
obj.color = vec(random(), random(), random())
t = t+dt
mag(r)
- 벡터 r의 크기(길이)를 계산해서 반환하는 함수
norm(r)
- 벡터 r의 단위 벡터를 계산해서 반환하는 함수
제 3 법칙 작용 반작용의 법칙
어떠한 물체에 힘이 작용하면 물체에 힘이 작용하는 동시에, 항상 크기가 같고 방향이 반대인 힘이 작용함