[카테고리:] 컴퓨터
-
스마트폰으로 인터넷공유
스마트폰과 노트북이 있으면 다음과 같은 것이 가능하다.
(Desire폰 SKT 기준)1. 3g+wifi테더링
전화기를 3g망으로 연결하고, wifi로 컴퓨터와 연결한다. 기본적으로는 KT의 EGG서비스와 동일한 개념이 된다. 3g무선데이터용량을 사용하게 되므로 용량 초과시에는 요금폭탄을 맞을 수 있으므로 정신줄 놓지 말자. wifi테더링 할 때
비밀번호를 설정해 두지 않으면 아무나 접속하여 사용 가능해 지므로 요금폭탄을 맞을 수 있다.
매우 주의하자.2. 3g+USB테더링
1번과 같은데, 무선랜을 사용할 수 없는 경우에 컴퓨터에서 무선랜을 쓸 수 있게 된다. 3g용량을 사용하므로 조심하자.3. wifi+USB테더링
2번과 같은데 3g데이터를 사용하지 않는다. 무선랜을 사용할 수 없는데, 근처에 접근 가능한 무선랜이 있을 때 사용할 수 있드. 특히, 최근에 접근 제한된 T wifi zone을 컴퓨터에서 사용할 수 있는 방법이다. 3g용량 걱정없이 마음껏 쓸 수 있다. -
OS에 대하여
http://bit.ly/pRfCCQ
KBS의 동영상이다. 여긴 임베드 방식 퍼가기를 허용하지 않아서 링크만 올린다.
OS가 뭐하는 놈인지 간단하고 쉽게(초보자 수준으로) 설명하고 있다.
-
Semi infinite loop
어쩌다보니 아래와 같은 반복문을 쓰게 되었다.
for M1 in numpy.arange(1e24, 1e26, 1e23):
for M2 in numpy.arange(1.0, 30.0, 1.0):
for M3 in numpy.arange(1.0, 30.0, 1.0):
for v in numpy.arange(1.0, 30.0, 1.0):
for w in numpy.arange(1.0, 30.0, 1.0):
for d1 in numpy.arange(0.0, 10.0, 0.5):
for d2 in numpy.arange(0.0, 10.0, 0.5):
지금 24시간째 돌고 있는데 안 끝나고 있다. 대략 32억번 정도의 반복해야 하는데, 언제 끝나려나…
7차원 공간에서 해당 영역 전체를 스캔해야 하는 계산이라, 최적화는 불가능하다.
-
고유값 구하기 문제
컴퓨터를 이용해서 기계적으로 선형대수학 문제를 풀다 보면 흔히 만나는 문제가 고유값(Eigenvalue)구하기 문제이다. 그리고 이 문제를 풀다 보면 흔히 만나는 문제가 고유값의 순서이다.컴퓨터는 답만 맞으면 되지? 하는 철학으로 구현된 계산 방법을 이용하는데, 그러다보니 행렬을 연속적인 변수로 만들어 냈을 때 고유값의 순서가 바뀌는 경우가 있다. 내가 풀어야 하는 문제는 고유값의 순서가 바뀌면 안되는 문제이고 이 문제를 어떻게 해결하느냐가 관건이다.
다음의 알고리즘을 참고하자.
http://snowall.tistory.com/2595
그리고 만든 것이 다음 프로그램이다.
import numpy
eig = numpy.linalg.eig
matrix = numpy.matrix
absn = numpy.abs
a0 = 0
a1 = 1
a2 = 2
for t2 in numpy.arange(-6.0, 6.1, 3.0):
file = open(“data”+str(t2)+”.txt”, ‘w’)
for t1 in numpy.arange(-r, r, stepping):
test=eig(massMatrix(t1, t2))
a2 = numpy.nonzero(test[0]==test[0].max())[0][0]
a0 = numpy.nonzero(test[0]==test[0].min())[0][0]
a1 = 2*(a0+a2)%3file.write(
str(t1)+”\t”
+ str(t2)+”\t”
+ str(absn(test[0][a0]))+”\t”
+ str(absn(test[0][a1]))+”\t”
+ str(absn(test[0][a2]))+”\t”
+ str(absn(test[1][0, a0]))+”\t”
+ str(absn(test[1][0, a1]))+”\t”
+ str(absn(test[1][0, a2]))+”\t”
+ str(absn(test[1][1, a0]))+”\t”
+ str(absn(test[1][1, a1]))+”\t”
+ str(absn(test[1][1, a2]))+”\t”
+ str(absn(test[1][2, a0]))+”\t”
+ str(absn(test[1][2, a1]))+”\t”
+ str(absn(test[1][2, a2]))+”\t”
+ str(a0)+”\t”
+ str(a1)+”\t”
+ str(a2)+”\n”)
이중 massMatrix는 논문에 써야 하는 영업비밀이라 공개하기가 좀 그렇고, 3차 정사각 행렬을 되돌려 주는 함수라는 것만 알려둔다.
이런식으로 출력시키면 고유값이 끊기지 않고 부드럽게 이어져서 나온다.
이 문제는 내가 석사때도 마주쳤었는데, 그땐 복소수로 이루어진 3차 정사각 행렬의 고유값 계산하는 1000줄짜리 프로그램을 직접 만들어서 풀었었다. 내가 미쳤었나보다. -_-;
-
가게 여는 시간
http://kldp.org/node/124415
위의 문제를 풀어보았다.
문제: 어떤 가게가 여는 시간이 a, 닫는 시간이 b라고 하자. x를 입력하면 가게가 열었는지 닫았는지 알려주는 함수를 만들어 보자.
예: a=2시, b=15시. f(x=12)=true, f(x=1)=false, f(x=17)=false
예: a=20시, b=5시. f(x=1)=true, f(x=12)=false, f(x=23)=trueC언어라고 가정하자.
가장 빠르게 떠오르는 답은 다음과 같다.
isOpen(int a, int b, int x){
if a if areturn true;
} else{
return false;
}
} else {
if a>x || x>b{
return true;
} else{
return false;
}
}
}
KLDP게시판에 많은 고수분들이 괜찮은 풀이를 올렸는데, 그중에 내가 제안한 것 두가지만 여기서 설명하도록 하겠다.
첫번째로
isOpen(int a, int b, int x){ return ((a-b)(x-a)(x-b)/abs((a-b)(x-a)(x-b))+1)/2; }
일단 ab인 경우에 b
b이면 a-b는 양수이다. 이 경우에도 b 이 함수의 문제는 a=b, a=x, b=x인 경우에는 0으로 나누는 문제가 발생한다는 점이다. 예외처리를 위해서 if문을 쓸 수밖에 없게 된다. 두번째로
isOpen(int a, int b, int x){
return (x-a+n)%n<(b-a+n)%n;
}여기서 n은 하루의 길이를 나타내는 정수이다. 이런식으로 계산하는 것이 가능한 것은 24시간을 기준으로 할 때 항상 xb일 수 있겠지만(a=b는?) 실제 개념으로는 항상 a
b인 경우에는 b-a가 음수가 되는데, 그런 사태를 막기 위해서 양변에 n을 더해준 후에 %로 잘라주게 된다. 세번째로
isOpen(int a, int b, int x){
return (a-b)(x-a)(x-b)>0;
}첫번째 답의 변형이다. 셋 중에서 제일 간단한 것 같다
.
