대전 운전면허 취득 방법: 대성학원


하도 인터넷에 쓸때없는 사진과 영양가 없는 후기들로 도배된 포스트들이 많아서, 

필자의 후기를 핵심만 정리해서 전달함. 


1단계: 운전면허 학원 등록


대성학원 등록 

장점: 가까움, 셔틀 있음

단점: 도로주행 코스가 A,B,C,D로 4개임 다 익숙해지려면 좀 걸림. 

      도로주행 코스가 주말 나들이 코스라 주말에 운전연습 불가능.


학원비: 약 50만원

기간: 3개월 보장, 그 이후부터는 초기화.

떨어 질 경우: 시험 접수비만 내고 다시 시험 가능, 접수비는 약 5만원 정도, 기능과 도로주행 각각

추가 교육: 시간당 3.8만원 정도이다. 학원에서 기본으로 제공해주는 시간이 부족할 경우 저 금액을 주고 추가교육 가능.



2단계: 운전면허 취득 과정


안전교육 5시간

학원에서 안전교육 5시간을 이수해야함.

단, 정해진 시간마다 강의 내용이 정해져 있으므로, 오전 9시 30분까지 도착해서, 쭈욱 들어야 하루에 모두 수강이 가능함.




필기시험

안전교육 이수후 산내 운전면허 시험장가서 필기시험 응시

학원에선 매일 오후 2시에 셔틀 있음.


만약 필기는 개인적으로 하고싶다면, 그냥 산내가서 1시간 안전교육 듣고 필기시험 보면됨.

단, 학원으로 오면 다시 안전교육 5시간 들어야함.


필기시험장가면, 1만2천원과 민증, 사진 2장 있으면 바로 시험 접수가 가능함.

예약 그런것은 필요없음

평일 오전 9~ 오후 4시면 언제나 가능.

주말의 경우 1달에 딱 1번만 가능하니, 잘 확인해보고 가야함.


공부 안하면 99% 

10분하면 100% 합격률 보장

시험시간 50분 문제 40문제

1종 70점 이상

2종 60점 이상


필자는 2종 자동으로 77점 합격.

시험시간 12분으로 끝냄.

늦게 풀면 같이 셔틀타고온 사람들 기다려야 하므로.. 다들 10분내로 풀고 나감.

20대라면 공부 필요 없음.


"신속하게 지나간다.", "절대로 ~" 등과 같이 너무 과도한 수식어구가 붙으면 무조건 오답임 이런것만 걸러내도 무조건 합격



기능

학원에서 기능 교육 2시간 해줌.

단, 사람이 엄청 많으므로, 필기시험 합격과 동시에, 전화로 예약해야 가능.

최소 1주일 넘게 걸림.

방학 아니면 바로 가능.

기능 교육 2시간 후에, 기능 시험 가능.

사진이랑 응시료 필요.


시험내용

시동켜기

정지상태에서 몇가지 기능 조작 (깜빡이, 와이퍼, 기어변속, 상, 하향등)

50m 직진 주행

중간에 돌발 뜨면 정지 후 비상등


합격률 99%

주행시 핸들 조작 잘못해서 잔디 타고 올라가거나,

후진기어로 잘못 변경해서 뒷차에 박지 않는 이상 떨어질 수가 없는 시험.


1년에 3명 미만으로 불합격한다함. 필기보다 더 쉬움.



도로주행

대성의 경우 도로주행 코스 A,B,C,D 4가 있음.

6시간 정도 교육 시켜줌.

코스당 빠르면 12분~16분 정도 걸림.


시험 당일 4가지 코스 중 무작위로 하나 선택되서 나옴.

기계가 50점 사람이 50점 체점해서 최종 합격 알려줌.



필기, 기능은 도로주행에 비하면 20배이상 쉬운것.

도로주행은 사실 6시간만 교육받고 붙기가 녹녹치 않음.


매일 2시간 교육으로는 4번 정도 뿐이 왕복이 안됨.

1일차: A코스 2번, B코스 2번

2일차: C코스 2번, D코스 2번

3일차: A,B,C,D 각각 1번씩


결국, 각 코스당 평균 3번 많아야 4번 연습하고 시험을 보게됨.

중간에 강사분들도 휴식하고, 평행주차 연습도 하고, 도로주행 코스로 가고 오는대도 시간이 걸리기 때문에

이 모든게 다 2시간에 포함되므로, 실제로 도로주행 연습하는 시간은 1시간 약간 넘음.

개인적으로 연습하지 않는이상 6시간은 부족하게 느껴지는게 사실.


해결책


1) 쉬는시간에 무조건 필기





위 사진처럼 무조건 필기함.

종이 계속 더 달라고해서 집에가서 또 정리함.



2) YouTube의 도로주행 영상으로 복습

대성학원은 도로주행 코스 영상을 찍어서 올려두었음

대성학원이라고 검색하면 나옴. [Here]

이것을 보고 기계의 지시사항과 모든 코스의 차선진행 사항을 암기함.

아줌마들 보통 이거 몰라서 시험 당일날 알게됨.



3) 다음 로드뷰로 확인

YouTube 영상에는 정확한 교차로 방향지시선이나 신호등 위치 확인이 어려움.

아무래도 차안에서 찍은거다 보니 불분명함.

다음 로드뷰로 확실히 다시 확인함.



가장 좋은 방법은 집에 차가있고 2년 이상 운전경험을 가진 보조자가 있다면 같은 코스를 연습하는 것임.

하지만 필자처럼 차도없고 도와줄 사람도 없다면 결국 위의 3가지 방법으로 노력하는 수밖에 없음.



시험진행.


평행주차: 학원에서 알려준대로 하면됨. 평행주차 실패하면 바로 실격됨.

따라서 무리하지말고 뭔가 꼬였다면 그냥 뒷바퀴 1개만 하얀 박스에 집어 넣음.

이럴 경우 -3점 되고 97점으로 도로주행 가능함.

꼬인상황에서 오바해서 어떻게든 성공 할려고 욕심을 부리면, 잔디 타고 올라가거나 사고위험을 발생 시킬 수 있음. 

이경우 바로 실격됨.


도로주행: 차에 탑승해서 테블릿 PC로 뽑기함. 

D가 가장 쉬움. 하지만 운임.

첫번째 응시자가 뽑은대로 나머지 사람들은 똑같은 코스로 시험보게됨.

즉, 첫번째로 시험 보면 준비도 못하고 바로 뽑자마자 해야하므로 좀 불리함 (차안에서 뽑고 바로 시험진행 준비 시간 없음)

이러한 시험 응시 순서도 컴퓨터가 랜덤으로 결정함. 



필자는 첫번째로 응시하게되어 매우 난감했으나 다행이 D를 뽑음.

77점으로 2종 자동 합격.

교차로 좌회전시 차선이탈로 -10점

당황해서 바로 차선 변경하다가 실선에서 차선 변경해서 -10점

뒷차 잘 안보고 진행 했다고 -3점


특징이 1번 실수하면 연달아서 실수가 팍팍 터지므로 한방에 -23점 깍임.


필자의 생각으로는 도로주행은 6시간 교육으론 코스 4개를 마스터 하는것이 좀 힘듬.

필자는 나름 운이좋아 붙었지만, 떨어지는 사람도 많으니 부끄러운 것은 아님.

감독관도 한끝차이로 붙고 떨어지고 한다함.

진짜 잘하는 사람을 제외하고... 

기능시험이 너무 유명무실해져서 상대적으로 도로주행이 큰 벽으로 느껴지게됨.

과거에는 기능을 12시간씩 교육받고 도로주행도 의무 10시간이여서 잘 안떨어졌음. 핸들 조작을 마스터하므로.





'일상 > 놀러' 카테고리의 다른 글

세관 신고 정리  (0) 2016.09.05
대전에서 에버랜드 가는법, 에버랜드 놀이 기구 공략  (0) 2014.05.10
대전 엑스포 음악분수  (0) 2013.08.07

would의 용법 4가지


1) will의 단순 과거형

2) 의지와 소망

3) 고집과 거부

4) 동작과 상태



1) will의 단순 과거형 

주절과 종속적의 시제 일치를 위해서 사용하는 경우


She said that she would get up early tomorrow.

He said that he would be a pilot the next month.

If i were not busy, I would go with you.


2) 의지와 소망

I would like to learn korean.

I would like to play baseball.


I would not miss this chance.

I would live you forever.


3) 고집과 거부

She would not listen to me

He always wouldn't go to the church.

The sounds would not give off.


4) 동작과 상태 즉 과거의 습관 용법


동작 일땐 would = used to

상태 일땐 used to 만 사용 가능.


과거의 동작

I would go skiing.

I used to go skiing.


상태

used to 만 가능

We used to work for the same company.





문법 약어 및 영어 표현



품사(Word classes) 표현에 쓰인 약어들
adjective형용사ADJ
adverb부사ADV
auxiliary verb조동사AUX
colour word색깔을 나타내는 단어COLOUR
combining form하이픈(-) 등으로 다른 단어와 연결되는 단어. 
ex) grey-haired
COMB
conjunction접속사CONJ
convention인사(hello), 사과(sorry), 대답(no comment) 
등과 같은 대화에서 주로 쓰이는 단어나 관용구
CONVENTION
determiner한정사DET
exclamation감탄사EXCLAM
fraction분수를 나타내는 숫자표현 
예) half, thirds, halves, quarter
FRACTION
V-LINK 참고 (see V-LINK)LINK
modal verb활용되지 않는 부정사 동사 
ex) You may go. / Must you speak?
She can swim.
MODAL
count noun가산명사N-COUNT
collective count noun집합 가산명사N-COUNT-COLL
family noun집합명사N-FAMILY
noun in names사람이나 사물, 기관 등의 이름에 나타나는 명사N-IN-NAMES
mass noun질량명사N-MASS
plural noun복수명사N-PLURAL
proper noun고유명사N-PROPER
collective proper noun집합 고유명사N-PROPER-COLL
plural proper noun복수 고유명사N-PROPER-PLURAL
singular noun단수명사N-SING
collective singular noun집합 단수명사N-SING-COLL
title noun직위나 역할을 나타내는 명사N-TITLE
uncount noun불가산명사N-UNCOUNT
collective uncount noun집합 불가산명사N-UNCOUNT-COLL
variable noun가변명사N-VAR
collective variable noun집합 가변명사N-VAR-COLL
vocative noun호격명사N-VOC
negative부정NEG
number기수NUM
ordinal서수ORD
V-PASSIVE 참고 (see V-PASSIVE)PASSIVE
phrasal verb구동사PHRASAL VERB
phrasePHRASE
predeterminer전치 한정사PREDET
prefix접두사PREFIX
preposition전치사PREP
phrasal preposition구 전치사PREP-PHRASE
pronoun대명사PRON
quantifier수량 형용사QUANT
plural quantifier복수 수량 형용사QUANT-PLURAL
question word의문사QUEST
V-RECIP 참고 (see V-RECIP)RECIP
sound word소리를 나타내는 단어SOUND
suffix접미사SUFFIX
verb동사VERB
link verb연결동사V-LINK
passive verb피동사V-PASSIVE
reciprocal verb상호관계를 나타내는 동사V-RECIP
passive reciprocal verb수동태 상호동사V-RECIP-PA



문법 및 패턴정보에 쓰인 약어들
adjective group형용사adj
comparative form비교급 형용사adj-compar
superlative form최상급 형용사adj-superl
adverb group부사adv
word or phrase indicating 
an amount of something
수량을 나타내는 단어나 구amount
clause beginning with as if 
or as though
as if 또는 as though로 시작하는 절as if
broad negative광범위한 부정brd-neg
clausecl
colour word색깔을 나타내는 단어colour
comparative form형용사 또는 부사의 비교급compar
continuouscontinuouscont
definite noun group한정명사def-n
definite noun group 
with an uncount noun
불가산명사와 함께 쓰는 한정명사def-n-uncount
definite noun group 
with a noun in the plural
복함명사와 함께 쓰는 한정명사def-pl-n
determiner한정사det
possessive determiner소유격 한정사det-poss
past participle of a verb동사의 과거분사-ed
noun group, adjective, adverb,
or prepositional phrase
명사구, 형용사구, 부사구, 전치사구 
group
imperative명령문imper
infinitive form of a verb부정사inf
present participle of verb동사의 현재분사-ing
'introductory' or 'dummy' it가주어 itit
clause beginning with likelike로 시작하는 절like
noun명사n
noun group, 
but not a personal pronoun
인칭대명사를 제외한 명사n (not pron)
names of places or institutions장소나 기관의 명칭names
negative word부정 (否定) 단어neg
verb pattern 
with no reciprocal meaning
상호의미 없는 동사패턴non-recip
proper noun고유명사n-proper
number기수num
uncount noun or noun group 
with an uncount noun
불가산명사 또는 불가산명사와 함께 
쓰이는 단어 

n-uncount
oftenoftenoft
ordinal서수ord
particle, part of a phrasal verb구동사를 구성하는 전치사 또는 부사p
passive voice수동태passive
plural복수형()pl
noun in the plural, plural noun 
group, or coordinated noun group
복수형 명사, 복수명사, 등위 명사그룹 
pl-n
plural number복수형 기수pl-num
possessive소유격poss
prepositional phrase or preposition전치사 또는 전치사구prep
pronoun대명사pron
indefinite pronoun부정(不定) 대명사pron-indef
reciprocal pronoun상호대명사pron-recip
reflexive pronoun재귀대명사pron-refl
relative pronoun관계대명사pron-rel
question word의문사quest
direct speech직접화법quote
singular단수형sing
noun in the singular단수명사sing-n
supplementary information
accompanying a noun
명사 앞에 오는 추가정보supp
'that'-clausethat절that
the to-infinitive form of a verbto 부정사to-inf
usuallyusuallyusu
verb or verb group동사v
continuous verb진행형 동사v-cont
past participle of
the verb explained in the entry
과거분사가 뒤에 따라옴V-ed
present participle of the verb 
explained in the entry
현재분사가 뒤에 따라옴V-ing
link verb연결동사v-link
way preceded by
a possessive determiner
소유격 한정사에 선행하는 wayway
clause beginning with 
a wh-word, or a wh-word
의문사절 또는 의문사wh



'영어 > 영문법' 카테고리의 다른 글

on the basis of vs based on  (0) 2015.02.01
would의 용법 4가지  (0) 2015.01.25
assure, ensure, insure  (0) 2015.01.24
with regard to, in terms of, with respect to, regarding, concerning  (0) 2015.01.24
compare with vs compare to  (0) 2015.01.20

assure, ensure, insure




assure ~을 확인하다 (make sure). ~에게 확신 시키다. (convince)

'다른 사람이 덜 걱정하게 하려고, 어떤 일이 사실이거나, 앞으로 확실히 그렇게 될것이라고 말하는 의미를 가진다.'


표현: assure 사람 + that

I can assure you that neither of our two goalkeepers will be leaving 'Lena' said.




ensure ~일이 일어날것을 확신하다.(make sure)  ~을 보장하다. (guarantee)

표현: ensure + that

His reputation was enough to ensure that he was always welcome



insure와 ensure를 미국 영어에서는 같이 보는 경향이 있다.

I shall try to insure that your stay is a pleasant one.

나는 당신이 즐겁게 머물 수 있도록 노력할 것이다.


하지만, 또다른 뜻으로

'자신의 소유물을 분실하게 되거나 도난당하거나 손상되는 경우에 보험 회사에서 금액을 보상해주다."의 뜻이 있다.

즉, 보험에 들다 라는 뜻이다.

insure your baggage before you leave home. 

집을 떠나기 전에 당신의 짐을 보험에 드세요.


따라서, 동사가 중복된다면, 쓸수 있지만, 저런 강력하게 다른 뜻이 있으므로, 처음부터 ensure나 assure의 대용으로 사용하는것은 좋은 글 작성이 아니다.



'영어 > 영문법' 카테고리의 다른 글

would의 용법 4가지  (0) 2015.01.25
문법 약어 및 영어 표현  (1) 2015.01.24
with regard to, in terms of, with respect to, regarding, concerning  (0) 2015.01.24
compare with vs compare to  (0) 2015.01.20
의문문 어순  (1) 2014.03.19

with regard to, in terms of, with respect to, regarding, concerning


문어체를 슬때 '~관하여'를 어떻게 서술 하는지를 다루겠다.

우선 회화체에서는 about을 많이 쓴다.



in terms of ~ 관해서

~의 관점에서라는 뜻이 좀 더 강하다.



아래의 네가지 것들중에서는 with (in) regard to가 의미상 좀 더 about과 의미가 유사 하다.


'~관하여'

with (in) regard to 

with respect to


절을 이끌 수 있다.

regarding

concerning



영어 자체로는 미묘한 차이가 있다. 하지만 한국어로 설명 하기는 쉽지 않다.




'영어 > 영문법' 카테고리의 다른 글

문법 약어 및 영어 표현  (1) 2015.01.24
assure, ensure, insure  (0) 2015.01.24
compare with vs compare to  (0) 2015.01.20
의문문 어순  (1) 2014.03.19
생략 1 - 명사절, 관계사절, 부사절의 각각의  (0) 2014.03.01

Think about vs Think 



think about: 대상에 관련한 어떤 생각을 하다 '~에 관해 생각하다. 숙고하다.'


think of: 대상 자체를 떠올리며 생각하다 '~을 생각해 내다. 떠올려 내다.'



예문

What did they think about our proposal?

What did you think about the professor's lecture?

She couldn't think of the right words

I can't really think of the appropriate words


* What do you think of / about his new book?


대상을 어떻게 생각하느냐는 의미이므로, think of 도 맞는 표현이지만,

think about으로 대체하여도 무리가 없음.

compare with vs compare to


compare with: 두 가지를 비교하여 그 비슷한 점이나 다른 점을 알아내고자 할 때 사용 (실질적인 것들에 많이 사용)


compare to: 비슷한 두 가지를 서로 비유할 때 사용 (추상적인 것들에 많이 사용)



예문

Company profits are down compared with last year's

How do Korean dishes compared with American dishes?

He compared the computer to a human brain.

You have to compare apples to apples.

cf. compare apples and oranges


Money and success do not compare with health and happiness.

The new product compared favorably with the old model.


Git: 두개의 Commit 사이에서 변경된 코드 수 알기


--stat 옵션을 사용 하면 된다.


git diff --stat <commit-ish> <commit-ish>



좀 더 복잡한 방법

http://stackoverflow.com/questions/2528111/how-can-i-calculate-the-number-of-lines-changed-between-two-commits-in-git


How to write Abstract effectively 


First-Model


The speed of sound in a fluid is determined by, and therefor an indicator of, the thermodynamic properties of that fluid.

-> The writer provides background factual information


서론에서의 첫 문장을 보통 가져와서 Abstract의 첫 문장으로 사용 한다.


The aim of this study was to investigate the use of an ultrasonic cell to determine crude oil properties, in particular oil density.

-> the writer combines the model, the general aim and the specific aim of the study in one sentence

일반적인 내용에서 디테일한 내용의 전환을 단 한문장으로 설명한다. 


An ultrasonic cell was constructed to measure the speed of sound and tested in a crude oil sample.

The speed of sound was measured at temperatures between 260 and 411K at pressures up to 75MPs.

_. 방법과 그로인한 결과를 요약하여 설명 한다.

- 요약이다. 정보의 중요도에 따라서 일부분을 생략 해야한다. 그것은 실험결과에 작성해야한다. 이곳은 요약이기 때문이다.


The measurements were shown to lead to an accurate determination of the bubble point of the oil.

-> 저자는 연구의 성과를 나타내게 된다.

앱스트랙의 가장 중요한 내용이다.


This indicates that there is a possibility of obtaining fluid density from sound speed measurements and suggests that it is possible to measure sound absorption with an ultrasonic cell to determine oil viscosity.

-> 연구의 implication을 제시한다.



4단계 모델

 Background, Aim, Problem, What the paper does

 Methodology, Materials

 Results, Achievement, Contribution, Implications

 Applications

 Limitations, Future work






'논문 작성' 카테고리의 다른 글

Mathtype 6.9b  (1) 2016.12.07

이상치 제거 (Box-plot 해석을 통한)


Box-Plot을 이용해서 이상치를 제거한다.

여러 방법이 있지만, 사분위수를 이용해서 제거하는 방법을 사용한다.


우선 Box-Plot은 4가지 구성요소가 있다.

1) 중앙값(median): 말그대로 중앙값 50%의 위치이다.

    중앙 값은 짝수일 경우 2개가 될 수도 있고, 그것의 평균이 중앙값이 될 수도 있다.

    홀수일 경우, 중앙값은 1개가 된다.

2) 박스(Box): 25%(Q1) ~75%(Q3) 까지 값들을 박스로 둘러 쌓는다.

3) 수염 (whiskers): 박스의 각 모서리 (Q1, Q3)로 부터 IQR의 1.5배 내에 있는 가장 멀리 떨어진 데이터 점까지 이어져 있는 것이 수염이다.

4) 이상치(Outlier): 수염(whiskers)보다 바깥쪽에 데이터가 존재한다면, 이것은 이상치로 분류 된다.


Inter Quartile range (IQR) 이란?

Q3 - Q1의 값이다.


이상치를 구하기 위해서는 결국 수염을 이용하게 되는데, 이때 보통 1.5를 IQR에 곱한것으로 구한 수염을 이용한다.



참고사이트: http://www.itl.nist.gov/div898/handbook/prc/section1/prc16.htm


'AI > Probability & Statistics (R)' 카테고리의 다른 글

비교 분석  (0) 2016.08.03
가설 검증과 추정  (0) 2016.08.03
통계학: F-검정  (0) 2013.08.29
회귀 분석 (1)  (0) 2013.08.29
조건부 확률, Conditional Probability / joint probability  (2) 2013.05.17

Unit 03: Results


Result do not speak for themselves!


같은 23% 라도,

in as many as 23% of cases

in only 23% of cases

interpretation에 따라서 다르게 전달 되어 진다.


interpretation의 전략



3.3.3 The model


Here are the sentence descriptions we have collected:


In sentences 1,2

-> the writer refers to the findings and conclusions obtained by other researchers.


In sentences 3,4

-> the writer refers back to her/his own methodology and adds more information about it.


In sentence 5

the writer invites the reader to look at a graph / figure / table / etc.


In sentence 6

-> the writer refers to specific results and compares them with those obtained in another study, using subjective, evaluative language.


In sentence 7

-> the writer offers a general statement about his/her results to begin a new paragraph.


In sentence 8

-> the writer refers to specific results and compares them to those obtained in another study, using language that comments on the result(s).


In sentences 9 and 10

-> the writer selects specific results to describe in more detail, using language that comments on the results.


In sentence 11

-> the writer refers to the method used to analyse the results.


In sentence 12

-> the writer mentions a problem in the results and uses quantity language to minimize its significance.


In sentence 13

-> the writer makes a reference to the implications and applications of the work s/he has done.




 1

 Revisiting the research aim / existing research

 Revisiting / expanding methodology

 General overview of results

 2

 Invitation to view results

 specific / key results in detail, with or without explanations

 comparisons with results in other research

 comparison/s with model predictions 

 3

 problems with results 

 4

 possible implications of results 











19) Loop Transformations


데이터 의존성 까지 고려 하는 것이다.


Loop variables


-induction variable

변수에서의 모든 변화가 단지 증가 또는 감소가 constant value로 발생 하는 경우

-Basic induction variable

루프당 딱 1번 변화하는 것을 발한다. 1번 루푸당 1번씩 변화하는것


Primary induction variable

basic induction variable이 loop를 제어하면 그것이 Primary induction variable이 된다.


Derived induction variable

its value is decided with a linear function of the basic induction variable




Induction Variable Substitution


필요 없는 것을 loop에서 제거 해버린다.


Before and after induction-variable substitution of KI in the inner loop

INC = 2

KI = 0

Do I = 1, 100

DO J = 1, 100

KI = KI + INC

U(KI) = U(KI) + W(J)

ENDDO

S(I) = U(KI)

ENDDO



KI를 제거 하자.


U(KI + INC * J) = U(KI + INC * J) + W(J)

ENDDO

KI  = KI + 100 * INC



Before and after induction-variable substitution of KI in the outer loop

INC = 2

KI = 0

Do I = 1, 100

DO J = 1, 100

U(KI + INC * J) = U(KI + INC * J) + W(J)

ENDDO

KI  = KI + 100 * INC

S(I) = U(KI)

ENDDO



INC = 2

KI = 0

Do I = 1, 100

DO J = 1, 100

U(KI + 100 * (I-1) * INC + INC * J) = U(KI + 100 * (I-1)  * INC INC * J) + W(J)

ENDDO

S(I) = U(KI + 100* I * INC)

ENDDO

KI  = KI + 100 * 100* INC



Before and after constant propagation of KI and INC


INC = 2

KI = 0

Do I = 1, 100

DO J = 1, 100

U(KI + 100 * (I-1) * INC + INC * J) = U(KI + 100 * (I-1)  * INC INC * J) + W(J)

ENDDO

S(I) = U(KI + 100* I * INC)

ENDDO

KI  = KI + 100 * 100* INC



INC = 2

KI = 0

Do I = 1, 100

DO J = 1, 100

U(200 * I - 200 + J * 2) = U(200 * I - 200 + J * 2) + W(J)

ENDDO

S(I) = U(200 * I)

ENDDO

KI  = 20000



Loop Merge


Improve locality

Reduce loop overhead

- 첫번쨰 루푸의 생산결과가 다음 루프에서 바로 사용될 질경우, 이 둘을 병합하면, 지역성을 높일 수 있다.


merge의 가능성을 높이는 기법으로는

enablers, bump, extend/reduce, split, reverse 가 있다.



Tools [1] - loop Bump


Loop extend /reduce









Loops and Data Dependence


Dependency Types


3가지 종류의 의존성이 존재함.


S1: A=B+C

S2: D=A+2

S3: A=E+F


- Flow Dependence (true dependence)  S1S2

새로 어사인된 변수가 다음 구문에서 바로 이용될 때

- Anti-dependence  S2  S3

사용되어 지는 변수가 다음 번에 바로 어사인 되어 버릴때

- Output dependence S1 S3

새로 어사인된 변수가 다음번 구문에서 재차 어사인 되었을때



Dependency Types - LOOP


for k < m

= : k번쨰 인터레이션이 그것의 것에 의존 할때

m 이라는것이 k에 의존할때

k가 m에 의존 할떄


Distance Vector



Normalization Examples

The iteration space can be normalized

The normalization distorts dependences, but is is otherwise preferred to support loop analysis
How to make
Make lower bound 1 (or 0)
Make stride 1
In general,
i' = (i - lowerBound) / I(step)

for (i = 2; i <=100; i = i+3)
Z[i] = 0;
= 100 -2 / 3 = 32

for(i=0; i<=32; i = i++)

Z[ i*3+2  ] =0 



for ( i =3; i<=7; i++)

for(j=6; j >=2; j=j-2)

Z[i,j] = Z[i, j+2] + 1


for( i =0; i<=4; I++)

for(j = 0; j<=2; J++)

i+3, j*-2+6 = Z [i+3, j*-2+8] + 1



Cf. Affine Functions.

어떤 변수들이 i1, i2, i3, i4, i5, i6 이러하 연속 성을 가지고,

1) 상수 들의 합

2) 변수 곱하기 상수 한 것들의 합


Formal Definition of Loop-Carriedness 의존성 문제

▣GCD = 최대공약수

루프 간의 의존성으 공약수로 나눠지 냐 안 나눠지냐로 알 수 있다.

나눌수 없으면 확실히 의존성이 없는 것이며, 나눌수 있다고해서 의존성이 있는 것은 아니다.









Advanced Compilers Reuse Optimization


Reuse Optimization 

Idea
중복되는 것을 제거 하자.
How do redundancies arise ?


Types of reuse optimization

- vn(value numbering)

- cse(common subexpression elimination)

- pre (partial redundancy elimination)


Value Numbering

Determines that two computations are equivalent and eliminates one of them.


Local Value Numbering

Idea

각각의 변수 표현 상수는 unique number로 어사인 된다.


변수, 표현 상수 들이 어떤 숫자로 이미 지정되어져 있었다면,

그것들을 그 상수로 사용한다.

그렇지 않다면 그것을 새로운 숫자로 사용한다.

같은 number는 같은 변수이다.


Loca의 경우는 별다른 어려움 없이 된다.


Global Value Numbering

두가지 기법이 있다.

Pessimistic

어떤 변수도 일치하지 않는다로 가정 한다.

지속적을 일치하는 것을 합쳐 나간다.

Optimistic (Slower but better results)

확실히 다른것이 아니면 모두 같다고 생각한다.


Pessimistic Global Value Numbering



Limitations of Pessimistic Approach

Considers operands before variables that depend upon it
Can't deal with code containing loops !
-> Ignore back edges or make conservative (worst case) assumption for previously unseen variables

Loop 에서 결국 문제가 발생한다.
후방 edge에 대한 고려를 전혀 하지 않게 되는 현상이 발생 한다. 이것이 문제다.



Comparisons 


Constant propagation 또는 ( partial)  redundancy elimination은 두개의 expression이 동일하다면,그것이 constant인지 아닌지 결정 할 수 없다.


read a 이런게 있으면 불가능 하다.


Constant propagation은 b와 d가 7이라는 것을 알수 있다.

하지만 value numbering은 알 수 없다.



빈공간 제거


Ctrl + G -> option selection

'Project > 그래프 그리기' 카테고리의 다른 글

빈도분석, 중복성 제거, CDF (Excel)  (0) 2014.11.03
1. GNUPlot을 uBuntu에 설치하기.  (2) 2014.10.22

Purpose of memory alignment


http://stackoverflow.com/questions/381244/purpose-of-memory-alignment

'Computer Science > 컴퓨터 구조' 카테고리의 다른 글

Amdahl's law  (0) 2015.03.18
4. 멀티 프로세서  (0) 2013.06.09
성능평가 방법  (0) 2012.11.21

Nexus 5 (hammerhead) Android 5.0 factory image

 

(공장 이미지) 올리기


참고사이트: click

AOSP을 가지고 Custom rom을 제작하다가 실패할경우, 이곳에서 제공하는 Factory Image를 이용해서 복구할 수 있다.


To flash a system image



1. 위 참고사이트에서 nexus 5용 Factory Image를 다운 받는다.


2. Factory Image에는 GMS와 각종 제조사별 드라이버가 포함되어있다. 이것을 디컴파일 또는 리버스 엔지니어링으로 추출해서 재배포할경우 법적 책임을 물을 수도 있다.


3. 기본적으로 스크립트 사용을 위해서 fastboot를 환경 설정 해주어야 한다.


4. oem unlock (이미 했다면 무시)


adb reboot bootloader 

fastboot oem unlock 


5. Factory Image를 압축 푼다음, flash-all 스크립트를 실행 한다.

   이때 target phone은 bootloader 상태에 있어야 한다.


6. 실행 결과




Android_preview 올릴때와 다르게, radio를 비롯해서, 상당히 많은 데이터가 올라가는 것을 알 수 있다.

이것을 기반으로 Device properties를 extraction해서 AOSP를 Build하는 법을 다음번에 다루 겠다.




Android New Runtime


The ART Manifesto

Developers should not work around the runtime

Code should be fast

garbage collection should help, not hinder

The runtime should scale


Performance (Better living through compilation)






ART garbage collection


Faster overall gc

single, short pause

less fragmentation

less memory usage



64-bit support (Supporting the future)


Advantages

Increased address space as Android usage diversifies

Increased performance from 64-bit instruction sets and cores

Full support for existing 32-bit apps




ART의 소개




Process VM


Interpretation- it involves a cycle of fetching a source instruction, analyzing it, performing the required operation, and then fetching the next source instruction all in software

Binary translation - it attempts to amortize the fetch and analysis costs by translating a block of source instructions to a block of target instructions and saving the translated code for repeated use.



guest state를 host state로 맵핑 시키는 것.

memory addressing architecture를 emulation 시키는 것.

instruction emulation

exception을 emulation

operating system call을 에뮬레이션


추가로 성능 향상을 위해서, code cache management 기술이 있다.


VM의 개발


loader는 게스트 코드 데이터를 게스트에 할당된 메모리 이미지에다가 쓰기를 한다. 또한 런타임 코드들도 기록 한다.
이것은 게스트 코드와 데이터이지만, 결국 이것 자체는 실행되어질수 없기 대문에 런타임을 포함하는 것이라고 할 수 있다.

이러한 코드들은 결국 interpretation 또는 binary translation의 루틴에서의 인풋이라고 볼 수 있다.


Loader는 initialization block을 한다. 이것은 Code cache를 위한 메모리 공간을 할당하며 process 에뮬레이션을 위한 테이블 공간을 위한 메모리 공간도 할당하게 된다.

추가로, initialization 과정에서는 해당 시스템에서 발생할수 있는 모든 signal에 대한 handler를 생성하기위해서 Host OS를 호출하게 된다. initialization 다음에 에뮬레이션 과정이 시작되게 된다.

Emulation Engine은 Binary Translator 또는 intepreter에 의해서 동작 하게 된다. 


Code cache manager는 Code cache를 관리함.


Profile Data는 최적화를 위해서 사용됨.


OS call Emulator는 시스템 콜을 에뮬레이션 해준다.


Runtime은 반드시 Guest에서 발생할 수 있는 인터럽트에 대해서 핸들을 해줘야한다. 번역된 코드에 있는 Trap을 유발하는 코드에대해서 반드시 처리를 해줘야한다. Runtime은 이것을 처리하기 위해서 exception emulator를 가지게 된다. 이것을 처리해줄때 반드시 Guest의 state를 보장해줘야한다. program counter 또는 register value, trap condition 같은 것들을 말이다.


Side table은 translation 절차에 의해서 만들어 지는 것이다. 이것의 중요한 사용처중 하나는 exception model을 정확하게 동작시키기 위함이다. 즉 source ISA를 정확하게 매칭 시킨다. 









보충 자료




 JIT의 정의 : JIT는 일반적인 뜻으로 'Just-in-time'의 약어로 ‘즉시’라는 뜻입니다.

 JIT 컴파일은 Java, C#등에서 제공하는 ‘실시간’ 컴파일 방식입니다. 자바 가상 머신 실현 방법의 하나입니다. 가상 머신의 실현 방법으로는 현재 3종류가 있습니다. 이 JIT 컴파일러는 자바의 중간 코드인 바이트코드를 실행하는 컴퓨터 운영 체계(OS)와 중앙 처리 장치(CPU)에 맞춘 2진 코드로 일괄 변환한 후에 실행합니다. 자바 해석기 방식의 10~20배의 성능을 얻을 수 있습니다. 다시말해 JIT는 JIT Compiler라 하고 자바 프로그램의 실행 속도를 향상 시키기 위해서 개발된 기술입니다. 일반적인 자바 프로그램 실행은 byte code 가 native code(JVM이 실행중일 OS가 이해할 수 있는 code)로 변환 후 실행 되게 합니다. 이때 JIT는 byte code loading시 변환된 native code의 주소를 v-table에 표기하고 이후 실행시에는 곧바로 native code를 실행 하는 방식으로 속도를 향상 시킵니다. 이것은 기존의 interpreter방식의 단점을 보완한 방법으로 특정 메쏘드를 지속적으로 호출할 때 더 빠른 성능을 보입니다. 하지만 이로 인해 일부 프로그램의 경우 오히려 성능 저하를 가져 올 수 있습니다. (반복 적인 메소드 호출이 없는 경우에는 지속적인 bytecode->machine code 로의 컴파일이 발생 하기 때문에 성능 저하가 발생 합니다.) 이를 보완 하기 위한 compile 방식으로 AOT(ahead-of-time)방식이 있습니다. 이 AOT방식은 실행 전에 미리 컴파일 하는 방식으로 성능 향상에 도움이 됩니다.


좀 더 쉽게 요약


AOT(Ahead of Time) - 실행 시간 이전에 이루어지는 컴파일 방식이며 (실행시점이 아닌 설치시점에 미리 이루어진다는 뜻),

컴파일 타임에 중간언어로 번역한 다음 가상 머신 코드(중간 언어)를 최종 기계어로 번역한다.


JIT(Just In Time) - 실행 시간 이전에 컴파일 한 내용을 미리 가상 머신 코드(중간 언어)로 저장해놓고

                        컴포넌트 사용시 (매번 실행시 마다)에 가상 머신 코드를 최종 기계어로 바꾸어 명령어가 실행되도록 한다.




JIT 컴파일러의 경우 바이트코드를 재실행하는 경우 네이티브 코드를 다시 사용한다.

이 NativeCode의 단위는 class단위가 아니고 method단위이다.

JIT 컴파일러는 byte코드를 최적화한다.


AOT 컴파일러의 경우

- JIT와 동일하게 ByteCode->NativeCode로 컴파일한다. 

- 다른점은, 하나의 JVM에서만 사용할 수 있는게 아니라,여러 JVM에서 사용할 수 있다는 것이다.

- AOT Compiler는 생성한 AOT code를 Shared Cache에 저장한다. 그러면 이 Shared cache를 사용하는 JVM은 기동 시 AOT Code를 바로 사용할 수 있게 되어 기동시간이 줄어드는 이점이 있다




Wikipedia


Ahead of time compilation (AOT)


AOT는 컴파일을 하는 작업의 하나의 종류로 고수준의 언어인 java와 .net 같은 것들의 중간코드 IR 들 즉, 머신에 독립적인 코드들을 native 코드로 변경 하는 작업을 말한다.


보통 중간코드들은 실행되는 순간에 머신 코드로 변경이되는 Just in time(JIT)방식을 취하게 된다. 하지만 이러한 방법들은 응용프로그램의 성능 저하에 원인이 될 수 있다.

AOT는 이러한 수행중 컴파일되어야하는 필요성 자체를 제거하는 기법으로, 실행전에 모든것을 컴파일 하는 방법이다. 하지만 이것은 제한적인 수행 범위를 같는 것이 일반적이다.


AOT 컴파일 방식이 효과적인 상황에 대해서 이야기 하겠다.

1) interpreter가 너무 느린 경우

2) JIT 가 너무 복잡한 경우

3) 지연이 너무 큰경우


AOT는 표준 네이티브 컴파일러와 같은 최적화된 머신 코드를 만들어 낸다. 

즉, compiler 기술이라고 볼 수 있다.



Just in time compilation (JIT) - compiler라는게 정설이다 -

JIT는 dynamic translation기술로 알려져 있으며, 실행중에 중간코드를 머신코드로 변경하는 작업을 한다.

JIT compliation은 2개의 전통적인 기술을 조합한 방법이다. 즉, AOT 기술과 interpretation 기술의 각각의 장점과 단점들을 융합한것이다. 

중간 언어까지는 AOT로 컴파일을 하니, 그 장점을 취함.

Interpretation에서 제공하는 타겟에 덜 의존성적이며 이로인해서 컴파일러 개발 보다는 덜 보작하다는 장점을 취함. 또한 따로 최적화를 하지 않기 때문에 실행에 지연을 발생 시키지 않는다. 


- Applications

현대의 대부분의 runtime 환경들은 JIT compilation 기술에 의존한다. 높은 실행 속도를 제공하기 위해서

bytecode로 AOT를 이용해서 모두 변경 한다음에,

이러한 bytecode를 runtime시점에 machine code로 변경하게된다. 똑같은 코드가 다시 실행된다면, 그것을 재활용 하게 된다.

이것은 결국 interpreter 기능을 향상 시킨 기법이다.


이 JIT Compilation의 궁극적인 목표는 bytecode interpretation의 장점을 유지한체로, static compilation의 성능을 뛰어 넘는 것이다.

기본적으로, JIT은 interpreter 보다는 빠르다. 하지만 당연히 profiling을 하닌까 손실은 발생 할 수 있다.

그리고 몇몇 케이스에 대해서 static compiler 보다도 빠를 수 있다. 왜냐하면, 많은 최적화 기술들은 run time에만 실현 가능한 기술들이 있기 때문이다.


1) 실행중에 타켓 CPU나 운영체제에 맞추어서 최적화를 시킬 수 있다. 

2) 특정 영역이 얼마나 빈번히 실행 되는지에대한 통계값을 이용해서 최적화를 시도할 수 있다.

3) Inlining을 통해서 global code optimization들을 수행 할 수 있다. 이게 static에서는 어려운 이유가 virtual call 때문이다. 다형성으로 인해서 override 된 함수는 실행 해봐야 뭐가 콜 될지를 알 수 있다.

4) GC를 최적의 조건에 맞춰서 부를수 있다. 스태틱하게도 되지만, 어렵다. 실행해봐야 최적의 GC 시점을 알 수 있다.


- Startup delay and optimizations

bytecode를 Load하고 Compile하는 시간 때문에, JIT는 실행의 처음 단계에서 약간의 지연을 발생 시킨다.

이것을 startup time delay 라고 종종 부른다. 

JIT compiler는 최적화가 잘된 Machine Code를 만들어 낼 수 있다. 하지만, 지연은 더더욱 증가하게 되는  trade-off 관계를 가진다.

JVM에서의 전략은 다음과 같다.

일단 bytecode는 interpretation 된다. 그다음 JVM은 bytecode의 실행 빈도를 모니터링 하게 된다. 이렇게해서 가끔 실행 되는 코드들은 최적화를 위한 컴파일 시간을 대폭 줄이게 된다. 하지만 자주 실행 되는 코드라면, 최적화 기능을 모두 적용해서 interpretation 하게 된다. 이렇게하면 초기 지연은 좀 발생하지만, 자주실행되는 bytecode 이기 때문에 다음번 부터는 최적화된 machine code로 실행 할 수 있게 된다. 





Interpreter (이것은 compiler와 대립되는 기술이다.)

컴퓨터 프로그램을 직접적으로 실행하는 방식을 말한다. 즉, 프로그래밍 언어나 스크립트로 짜여진 명령어들을 머신 코드로 실행전에 변경하지 않고 그것을 실행 하는 것을 말한다. 그때 그때 머신 코드로 변경해서 실행하는 것이다.


interpreter는 다음의 전략들중 하나를 프로그램 실행을 위해서 사용 한다.

1) 소스코드를 파스하고 그것을 실행한다.

Lisp programing language and Dartmouth BASIC


2) 소스코드를 중간 코드 몇몇으로 변경한다음 그것을 실행 한다.

Perl, Python, MATLAB, Ruby


3) 인터 프리터 시스템의 한부분인 컴파일러에 의해서 만들어진 precompiled code를 실행하게 된다. (중간코드를 사용)

UCSD Pascal


소스코드는 ahead of time에 컴파일 되어지며, 이것은 머신에 독립적인 코드로 저장되어져 있다.

그다음 이것은 런타임에 인터프리터나, JIT 컴파일러 같은것들에 의해서 runtime에 실행 되어 진다.


java 같은 시스템들은 위 기술들중 몇개를 혼용해서 사용 한다.



Interpreter, static (ahead-of-time) compilation, and Just-in-time (JIT) 3개 구분

전통적으로 컴퓨터 프로그램을 실행하는 방법은 3가지 방법이 존재한다.


1) 인터프리터는 고수준 언어를 저수준언어로 실행할때 번역하게 된다.

2) AOT는 실행 이전에 모두 저수준언어로 번역하여 실행 한다.

3) JIT는 사실 위 두 기술의 hybrid 형태이다. 실행할때 고수준언오를 저수준언어로 번역하게 되고, 이것은 캐쉬에 저장된다. 따라서 매번 번역 과정을 수행하지 않는다. 하지만 분명히 AOT에 비해서 실행중에 번역을 하므로 오버해드는 존재한다.






Use-Def Analysis and SSA (Static Single Assignment)


Use-Definition chains (ud chains)

Each use of a variable is linked to all assginments that reach it


Definition-Use chains (du chains)

Each assignment to a variable is linked to all uses of it



SSA (Static Single Assignment Form)

UD를 좀더 축약한 것이다.

Definition: each assignment to a variable is given a unique name

All of the uses reached by that assignment are renamed


Easy for straight-line code


What about control flow? ==> X nodes



Dominator


만약 어떤 노드 x가 Entry에서 y까지 가는 모든 path에 의해서 반드시 호출 되어지는 것이라면


그것을 우리는 y의 dominator x라고 부른다.



" x dominates y " means  

x is always executed before y is executed 


▶ 특성

- 모든 노들은 그것 스스로 dominate 하다.

- 만약, x가 y를  dominate하고, y가 z를 dominate 한다면, x는 z를 dominate 한다.

(transitivity 성질을 만족함)

- x y 둘다 z를 dominate 한다면, 


Strictly dominating

x가 y의 strictly dominator 라고 한다면, x는 y를 domiante 한다 하지만 x는 y가 아니라는 것이다.




Dominance Frontiers

X 는 Y의 predecessor들중 한개를 dominate한다. 하지만, x는 y를 strictly dominate 하지 않아야 한다.]

그냥 dominate라고 보면, 자기 자신도 포함대므로, x=y를 허용하게 된다. 그러면 정의가 꼬인다.



DF(2) = {6} 이다.


풀어서 써보면,

2에 대한 Dominance Frontier를 구하는 것이다.

2는 2,3,4,5들을 dominate 한다.















VM tools 설치 방법


Ubuntu 12.04 LTS 배포판에서 Vmware Tools 설치하기

(Vmware Tools 설치 뿐만아니라 kernel 헤더버전이 안맞는다고 에러메시지가 나는 경우 도움이 됩니다.)


0. VMTools ISO Image 위치: C:\Program Files (x86)\VMware\VMware Workstation\linux.iso


1. 우선 Vmware Workstation 메뉴에서 VM > Install VMware Tools 를 선택합니다. 만일 Vmware Esxi 일 경우 vSphere 등으로 접속하여 해당머신 마우스 오른쪽 클릭 후 게스트 > Vmware Tools 설치/업그레이드 를 선택합니다. 


2. 우분투에서 CD-ROM을 마운트 합니다.

mkdir /mnt/cdrom (마운트할 디렉토리 생성)

mount /dev/cdrom /mnt/cdrom (특별히 타입을 지정할 필요는 없습니다.)

압축해제


3. VMware Tools 설치

sudo ./vmware-install.pl -d


d의 의미는 default를 의미한다. 자동으로 Answer을해서 Yes를 다로 할 필요가 없다.


다른 상세한 설명 블로그


일반 Desktop일 경우 아래 동영상 가이드를 참조 한다.

mount 명령어를 사용할 필요 없다.


동영상 가이드


설치했을때 얻는 이점


To enable advanced X features (e.g., guest resolution fit, drag and drop, and 

file and text copy/paste), you will need to do one (or more) of the following:

1) Manually start /usr/bin/vmware-user

2) Log out and log back into your desktop session; and,

3) Restart your X session.



troubleshooting


VMware tools installation fails when Easy install is in progress (1017687)


Click

VMware full screen 방법

1. Enable 3D acceleration in VMware.

2. Set the Display option to "AuTomatic"/"host screen"

3. Install VMware tools in Ubuntu to enable dynamic screen resizing.

4. Use Ctrl+Alt+Enter to enable/disable full-screen mode.



DataFlow Analysis


대표적인 알고리즘 3개를 설명한다.


Live Variables Analysis 


정의: 현재 변수 값이 다른곳에서 사용될 것인지를 알아보는 것


아래와 같은 데이터를 모아야 함.

USE: 변수가 외부에서 사용되는 것을 말한다, 하나의 베이직 블럭에서

DEF: 하나의 베이직 블럭에서 정의되는것을 말함.


IN: 시작 포인트에서의 변수들이 살아 있는지를 말한다.

OUT: 변수들이 살아 있는지를 말한다.




















Reaching Definition Analysis 


정의: 어떤 변수의 정의가 특정 위치까지 도달 하는지를 분석함. 

이것의 개념은 최적화 뿐만아니라, 각종 분석에 많이 사용되는 개념임.


요약: 

Forward 방식

Inner Analysis

GEN - 해당 BB에서 생성되는 정의들의 집합

KILL - 모든 BB에서 해당 GEN에 의해서 사라지는 정의들의 집합


Outer Analysis

IN - 모든 이전의 OUT들을 더함

OUT - GEN + ( IN - KILL )















Available Expressions 


정의: 이미 계산된 expression을 재사용 하자.




E_GEN의 생성은 G + (E_GEN(X) - K) 이다.













Base

  1. “Artist’s palette” model
  2. Start with blank canvas and build up from there
  3. Start with plot function (or similar)
  4. Use annotation functions to add/modify (text, lines, points, axis)

Pros:

Convenient, mirrors how we think of building plots and analyzing data

Cons:

  1. Can’t go back once plot has started (i.e. to adjust margins);
  2. need to plan in advance
  3. Difficult to “translate” to others once a new plot has been created (no graphical “language”). Plot is just a series of R commands

Lattice

Plots are created with a single function call (xyplot, bwplot, etc.)

Pros:

  1. Most useful for conditioning types of plots: Looking at how y changes with x across levels of z
  2. Thinks like margins/spacing set automatically because entire plot is specified at once
  3. Good for putting many many plots on a screen

Cons:

  1. Sometimes awkward to specify an entire plot in a single function call
  2. Annotation in plot is not intuitive
  3. Use of panel functions and subscripts difficult ot wield and requires intense preparation
  4. Cannot “add” to the plot once it’s created

ggplot2

Pros:

  1. Split the difference between base and lattice
  2. Automatically deals with spacings, text, titles but also allows you to annotate by “adding”
  3. Superficial similarity to lattice but generally easier/more intuitive to use
  4. Default mode makes many choices for you (but you can customize!)



ggplot2 vs lattice.pdf


ggplot2_part1.pptx




'AI > R ggplot2' 카테고리의 다른 글

CDF stat_ecdf  (0) 2016.12.21
ggplot2: 그래픽 라이브러리  (0) 2016.03.20
R에서 EPS 이미지 생성  (0) 2015.06.16
ggplot2 package를 이용한 Graph 그리기  (0) 2015.02.16

빈도분석, 중복성제거, CDF를 엑셀로 하기


다수의 Data를 표현할때 쓰기 좋은것이 CDF 이다.

CDF를 쉽게 그리기 위해서는 사전에 두 단계를 거쳐야 한다.

1) 빈도분석

2) 중복성 제거



빈도분석


모든 데이터가 1개씩 뿐이라면, 무시해도 되는 단계이다. 하지만 같은 값이 여러개 존재한다면, 빈도분석을 해야 한다.

Excel에서 빈도분석을 하는 방법은 다양하나, COUNTIF()함수를 사용하는 방법으로 설명 하겠다.



COUNTIF(F:F,F1) = 3 이다.



중복성 제거


중복된 값이 존재한다면, 빈도분석을해서 조정해 주어야 누적 빈도수를 구할때 혼동이 되지 않음


1) 빈도분석: A열에서 A1의 빈도를 구함

COUNTIF(A:A,A1) 


2) 상수값으로 변경: 1번에서 구한 빈도값을 상수값으로 변경함 (중복값 제거를해도 빈도가 변경되지 않도록)


3) 중복 값 제거: A와 B열을 선택한 다음 아래의 메뉴를 통해서 중복된 값을 제거함.

Data->Delete Duplicates


4) 중복 제거된 값과 빈도값을 이용해서 누적 빈도를 구하면 됨

=SUM($A$1:A1)


reference site: here



Cumulative Distribution Function Charts in Excel


부드러운 CDF를 그리는 방법에 대해서 알아 보겠다.


CDF는 히스토 그램 차트의 약점을 보완 할 수 있다.

또한, 전체적인 비율을 쉽게 알 수 있으므로 좋은 기능을 제공한다.


I'm convinced. How do I make one in Excel?



CDF 예제 파일: 


다섯 단계


- 데이터 설정

1) 첫 번째 열 (Value)에 X축에 들어갈 데이터를 오름 차순으로 삽입


2) 네 번째 열에(빈도)에 각 value의 빈도를 적어서 넣어라


2) 세 번째 열(누적값)에 각각의 값들의 빈도를 누적해서 순서대로 적어라.

    만약, 모든 빈도가 1이라면, 단순히 값을 증가 시키는 것이면 된다. 

    빈도 누적 수식: =SUM($D$1:D1)

뒤에 D1이 게속 바뀌면서 값이 누적됨.


3) 다섯 번째 열에는 데이터 총 수를 삽입


4) 두번째 열에는 누적 비율을 계산해서 넣는다.

    현재 누적 값 / 전체 값을 해서 비율을 구한다. 

C4/$E$1

마지막 값은 반드시, 1 이어야 한다.


- 그래프 그리기

5) Scatter chart에다가 첫 번째 컬럼과 두 번째 컬럼을 넣는다.

포인트가 아니라, 라인으로 그려지게 설정을 조정하고, 무엇이든지 더 이쁘게 보이기 위해서 여러가지를 한다.

세로는 항상 1로 고정해라. 

가로는 항상 0 부터 시작하게 해라. 


위 다섯 과정을 따라하면, 최종적으로 CDF를 얻을 수 있다.


reference site: here

'Project > 그래프 그리기' 카테고리의 다른 글

엑셀 단축키  (0) 2014.11.27
1. GNUPlot을 uBuntu에 설치하기.  (2) 2014.10.22

명령어


두 명령어를 연결하기 위해서 아래의 파일을 편집

$HOME/.bashrc


아래의 코드를 삽입

alias vi="vim"


터미널 이름 변경 방법


변경할 파일

vi /etc/sysconfig/network


재부팅

다중 스크린 사이즈를 지원하는 방법


용어 정리

Screen size:  대각선 상의 실제 크기를 말한다.

안드로이드 시스템에선 간단히 4개의 그룹으로 표현 한다.

small

normal

large

extra-large


Screen density: 


Orientation: 


Resolution: 화소수, 항상 가로부터 표현.


Density-independent pixel (dp): 가장 중요한 정보이다. 인치당 점의 개수로, UI의 실제 길이가 결정 되는 부분이다.


aspect ratio: 종횡비로 가로와 세로의 비율을 나타냄. 

4:3, 16:9와 같은 것들이며, long, notlong과 같이 표현 하기도함.



안드로이드가 이와 같이 그룹을 이용하는 것은, 약간의 차이는 거의 무시해도 되기 때문이다. 따라서 일반화를 시켜서 계산하게 됨.


화소 vs 밀도 -> 비례

크기 vs 밀도 -> 반비례



---

해상도 제각각

밀도가 제각각


화면이 잘리거나, 검정색 여백을 드러내는 프로그램들이 실제로 존재함.


문제를 발생 시키는 몇가지 나쁜 습관들

1) 물리 단위를 쓰지 않고 논리 단위를 쓴다.

2) 이미지는 가급적 밀도별로 모두 제공함.

3) 레이아웃의 배치 기능을 십분 활용 한다.




논리 단위의 이용

물리 단위는 해당 장치에서만 정확하게 동작하므로, 빌트인 앱과 같은 특수한 경우를 제외 하고는 이용하지 않도록 해야함.

안드로이드에서 제공하는 노리적 단위는 다음과 같음.

px 물리적인 픽셀단위

in, mm, pt 인치, 밀미미터, 포인트

dpi (or dp), sip (or sp) 밀도에 독립적인 단위, 폰트에 가변 크기


dpi가 논리적인 단위 이므로 이것을 사용 해야한다.

160을 기준으고 1 픽셀

240 이면 240/160 = 1.5 배 커짐.

120 이면 120/160 = 0.75배 만큼 감소.






violation 나는 pattern을 분석해서, 나만의 향상된 알고리즘을 생성 한다.


영상처리에 기반한 것이 아닌, 패턴과 규칙에 기반한 접근 법이다.



이미지 리소스의 경우


이미지의 경우 다소 특별한 관리 기법을 따름.


운영체제는 장비의 밀도와 폴더의 밀도를 비교하여 이미지를 스케일링함.

모든 폴더에서 이미지가 발견되지 않으면 컴파일 에러로 처리함.


각각에 맞게,

drawable-ldpi

drawable-mdpi

drawable-hdpi


3개의 디렉터리에 이미지를 넣어 두면 좋은 효과를 볼 수 있다.




레이아웃 활용


절대적인 배치 레이아웃으론 맞추기가 어렵다.

따라서 렐러티브 레이아웃,



















'Computer Science > Android Application' 카테고리의 다른 글

Android wear app  (0) 2015.08.25
Android Studio 자동 import 기능  (0) 2015.07.15
Android Wear 개발환경 구축  (0) 2015.07.15
Notifications API Guide  (0) 2015.06.29
Android Studio 특징 및 단축키  (0) 2015.05.24

리눅스 명령어

검색 명령어


find . -type f -print | xargs grep [찾고자하는 문자열]


특정 파일만 검색하기


grep -r --include *.java TITLE



SLOC 계산 명령어

wc *.py -l


find . -name '*.py' | xargs wc -l



페키지 삭제

# uninstall nginx

sudo apt-get remove nginx


# dependent pakcage까지 모두 삭제

sudo apt-get remove --auto-remove nginx


# 설정 파일만 삭제

sudo apt-get purge nginx


#의존성 설정 파일 모두 삭제

sudo apt-get purge --auto-remove nginx



파일리스트 생성

 find "$(pwd)" -name "*.png" > input.txt


파일 숫자 카운트
find . -maxdepth 2 -type f | wc -l

디렉터리 별로 카운팅
find . -type d -print0 | while read -d '' -r dir; do
    files=("$dir"/*)
    printf "%5d files in directory %s\n" "${#files[@]}" "$dir"
done
특정파일만 제외하고 삭제
ls | grep -v ILSVRC2012_val_0002 | xargs rm

vi 명령어

문자열치환

:(시작줄),(끝줄)s/찾을패턴/바꿀스트링/옵션


:%s/찾는것/바꿀것/g


옵션

g : global - 한 줄에 패턴이 여러 번 나오면 모두 바꾼다. 지정하지 않으면 첫번째 패턴만 치환

i : ignore case - 대소문자 구분을 하지 않는다.

c : confirm - 검색된 모든 문자열에 대해서 바꿀지 말지를 물어본다.



이미지 파일 열기


eog




네트워크 트레픽 모니터링


bmon


GNUPlot 


논문을 보다보면, 유명 대학들의 경우 Excel의 그래프를 사용 하지 않는다.

그들은 스크립트 기반의 그래프 그리는 도구인 GNUPlot을 사용한다.


별거 아니지만, 그래프가 아마추어 수러우면, 뭔가 열심히한 실험 데이터도 의심스럽고 신뢰감이 떨어지는것이 사실이다.


따라서 앞으로는 GNU Plot으로 그래프를 그려야 할것 같다.




Ubuntu에 GnuPlot 설치 하기


기본적으로 우분투에는 gnuplot이 설치 되어있다.

하지만, 오래된 버전의 경우 아닐 수도 있다.

필자는 10.04 버전을 쓰기 때문에 없었다. 따라서 설치를 해야했다.


설치를 위해선 아래의 3가지를 해야한다.

  • update package (최신 우분투의 경우 package 서버가 유요하므로 구지 변경할 필요 없음)
  • apt-get 설치

update package

/etc/apt/source.list의 내용에서 archive.ubuntu.com을 old-releases.ubuntu.com으로 변경 해야함.


아래의 명령어를 사용함.

sudo sed -i -e 's/archive.ubuntu.com\|security.ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list


그리고 리스트를 업데이트

sudo apt-get update && sudo apt-get dist-upgrade


참고 사이트: here


GNUPlot Install


apt-get install gnuplot rlwrap


만약, 우분투 12.04 이상을 쓴다면, 상세한 gnuplot의 버전을 설정해 주어야 한다.

(qt 또는 x11 둘중에 하나를 선택 한다.)


apt-get install gnuplot-qt riwrap


참고

qt가 새로나온 버전이고, x11이 예전것이라고 하는데, 차이는 잘 모르겠다.


Then open your bash configuration file (if using the default bash shell)

gedit ~/.bashrc &

and add the following lines to the file somewhere near the bottom

# enable autocomplete in gnuplot 
alias gnuplot="rlwrap -a -c -b\"\\\"\\\"\\\'\\\'\" gnuplot"

save the file and exit.

First we need some data for plotting, for instance the file


http://www.maths.manchester.ac.uk/~pjohnson/Gnuplot/testResults.dat 


may be downloaded from my website.

Now open a new terminal and type gnuplot into the command line. You should see the following:





p 'testResults.data' w l









'Project > 그래프 그리기' 카테고리의 다른 글

엑셀 단축키  (0) 2014.11.27
빈도분석, 중복성 제거, CDF (Excel)  (0) 2014.11.03

VMware를 이용한 Ubuntu 초기화 과정


1. vim 설치 (apt-get 이용)


2. auto-login with root account (아래 글 참조)


3. VM tool 설치


4. 공유 디렉터리 설정하기


5. samba 이용한 공유 디렉터리 생성


6. 우분투 언어 설정


7. 소스코드 분석 환경    

ctags / cscope

"코드로 알아보는 ARM 리눅스 커널" 책 환경 구축


8. Classic Gnome으로 변경 (10버전대 스타일)


9. VMware Unity Mode 활성화 방법



10. ssh 리스트 설정 방법

- vi ~/.ssh./config

Host XX

HostName [IP]

User [account]

PubkeyAuthentication no



11. hardware  정보 얻기

- hardinfo 설치





Building Environment for Android 2.3 on 64-bit Ubuntu


                          2011-10-17  FUNFUN.YOO (funfun.yoo@gmail.com)



 1. Install VMware / VirtualBox


 2. Install Ubuntu 64-bit version (last version : 11.10)


 3. Setting......


 :: root & auto-login ::


 # sudo passwd root


 # vi /etc/lightdm/lightdm.conf 

-----------------------------------------

autologin-user=root


auto login deafult 변경 방법

아래 코드를 추가함. 단 GUI에 따라서 다르다.


user-session=gnome-fallback


The list of sessions is described in the directory /usr/share/xsessions.


Some of the more common session names are as follows:


For unity-2d the session file is called ubuntu-2d.desktop

For gnome-classic the session file is called gnome-classic.desktop

For gnome-classic (no effects) aka gnome-fallback the session file is called gnome-fallback.desktop

For unity-3d the session file is called ubuntu.desktop

For Lubuntu the session file is called Lubuntu.desktop

For LXDE the session file is called LXDE.desktop

Thus, if you change the light-dm configuration file to "ubuntu-2d" this will default the session to Unity-2D


i.e.


sudo nano /etc/lightdm/lightdm.conf

change the line


user-session=ubuntu

to


user-session=ubuntu-2d

Note - if you don't have a lightdm.conf file then for a autologin use the following values for this file:


[SeatDefaults]

greeter-session=unity-greeter

user-session=ubuntu-2d

autologin-user=myusername

autologin-user-timeout=0

Another possibility is to run:


sudo /usr/lib/lightdm/lightdm-set-defaults -s <session-name>

E.g.:


sudo /usr/lib/lightdm/lightdm-set-defaults -s ubuntu-2d

This will also create the lightdm.conf file if it wasn't already present.


참고 사이트: http://askubuntu.com/questions/62833/how-do-i-change-the-default-session-for-when-using-auto-logins



 # apt-get install vim


 # apt-get install minicom



 :: Samba ::


 # apt-get install samba smbfs


 # vi /etc/samba/smb.conf


 # smbpasswd -a root


 # service smbd restart


deprecated 되었으므로,

cifs-utils를 사용해야 한다.

https://wiki.ubuntu.com/MountWindowsSharesPermanently




 :: Android Build Configuration ::


 # apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev 


  ※ Ubuntu 11.10 : lib32z-dev => lib32z1-dev

                  lib32readline5-dev => lib32readline-gplv2-dev


 # apt-get install lib32z1-dev lib32readline-gplv2-dev


 # apt-get install flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev zlib1g-dev



 # apt-get install valgrind



 :: JDK 1.6 :: 


 # add-apt-repository "deb http://archive.canonical.com/ lucid partner"

      ---------------------------------------------------------------------------------------------------

  => add-apt-repository "deb-src http://archive.canonical.com/ubuntu lucid partner"  명령어는 자동적으로 실행되므로 할 필요가 없음.


 # apt-get update


 # apt-get install sun-java6-jdk



 :: 32-bit Compatibility ::


 # apt-get install ia32-libs



 :: Swap Configuration ::


 # dd if=/dev/zero of=swapfile bs=1024 count=1655360

 # mkswap swapfile

 # swapon swapfile


 # vi /etc/fstab

      ---------------------

   /root/swapfile swap swap defaults 0 0


 # swapon -s


 # free 명령어로 확인!



 :: arm-2009q3 ::


 # ./arm-2009q3-67-arm-none-linux-gnueabi.bin

 # dpkg-reconfigure -plow dash

   -> "NO"

 # ./arm-2009q3-67-arm-none-linux-gnueabi.bin

   -> "/opt/arm-2009q3"


 # vi ~/.profile

   -> export PATH=$PATH:/opt/arm-2009q3/bin


 # source .profile



 :: Boot-Loader Build ::


 # vi Makefile

   -> "CROSS_COMPILE=...." 수정


 # make clobber

 # make mvtv210_config ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-

 # make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-


 # vi ~/.profile

   -> "mkimage"

   -> export PATH=$PATH:.....:/root/V210/u-boot_1.3.4-debug-0419/tools

 

 

 :: Kernel Build ::


 # cp mvtv210-20110509.config .config

 # make clean

 # make oldconfig ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-

 # make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-



 :: Android File System Build ::


 # apt-get install bison

 -> bison : a general-purpose parser generator


 # make clean

 -> 반드시 실행시킬 것!!!!!!!!!!


 # . ./build/envsetup.sh


 # lunch

   -> V210 관련 "5" 선택


 # vi build_android.sh

 -> "KERNEL_DIR=/root/V210/android-samsung-dev-sdmmc/android-kernel-samsung-dev"


 # ./build_android.sh





 



'Computer Science > Linux and MAC 사용법' 카테고리의 다른 글

Ubuntu 한글 설정  (0) 2015.04.26
JDK 설치 및 변경 (Ubuntu 11.10)  (0) 2015.04.26
vi와 vim 연결하기  (0) 2014.10.31
리눅스 터미널 이름 변경 방법  (0) 2014.10.31
리눅스 명령어 정리  (0) 2014.10.25

+ Recent posts