31. [1:49:32](https://www.youtube.com/watch?v=dgm4-3-Iv3s&t=6572s) integral of (x-x^(3/2))^-1/2
32. [1:52:37](https://www.youtube.com/watch?v=dgm4-3-Iv3s&t=6757s) integral of (x-x^2)^-1/2
33. [1:56:03](https://www.youtube.com/watch?v=dgm4-3-Iv3s&t=6963s) integral of e^(2lnx)
34. [1:56:57](https://www.youtube.com/watch?v=dgm4-3-Iv3s&t=7017s) integral of lnx/sqrt x
35. [2:00:32](https://www.youtube.com/watch?v=dgm4-3-Iv3s&t=7232s) integral of 1/e^x+e^-x
36. [2:01:57](https://www.youtube.com/watch?v=dgm4-3-Iv3s&t=7317s) integral of log(x) base 2
37. [2:05:15](https://www.youtube.com/watch?v=dgm4-3-Iv3s&t=7515s) integral of x^3*sin2x
38. [2:08:32](https://www.youtube.com/watch?v=dgm4-3-Iv3s&t=7712s) integral of x^2[1+x^3]^1/3
39. [2:12:30](https://www.youtube.com/watch?v=dgm4-3-Iv3s&t=7950s) integral of 1/(x^2 + 4)^2
40. [2:19:38](https://www.youtube.com/watch?v=dgm4-3-Iv3s&t=8378s) integral of sqrt(x^2-1) from 1 to 2
∫x2x2+11dx=∫tan2θsecθ1sec2θdθ(x=tanθ,dx=sec2θdθ)=∫secθcot2θdθ=∫cosθsin2θcos2θdθ=∫sin2θcosθdθ(t=sinθ,dt=cosθdθ)=∫t2dt=−t1=−sinθ1=−cscθ+C=−csc(arctanx)+C=−xx2+1+C
Alternative
cf) (x4−x2+1)(x4+x2+1)=x8−x6+x4+x6−x4+x2+x4−x2+1=x8+x4+1
부분 분수로 나눠보자. x4−x2+1x2+1=x2+ax+1c+x2+bx+1d(미지수를구한다)=x2+3x+121+x2−3x+121
따라서 적분을 취하면. ∫x4−x2+1x2+1dx=21∫x2+3x+11dx+21∫x2−3x+11dx=21∫(x+23)2+411dx+21∫(x−23)2+411dx
먼저 왼쪽 부분을 계산해 보자. 제곱의 형태를 삼각치환해 보자. (1+tan^x 꼴로 만든다.) 21tanθ=x+23 dx=21sec2θdθ
We know ∫1+x21dx=tan−1x+C. 21∫(x+23)2+411dx=21∫41tan2θ+411dx=21∫41sec2θ121sec2θdθ=θ+C=tan−1(2x+3)+C
오른쪽 부분도 같은 방식으로 계산하면 된다. 21∫(x−23)2+411dx=tan−1(2x−3)+C ∴∫x4−x2+1x2+1dx=tan−1(2x+3)+tan−1(2x−3)+C
∫csc3xsecxdx=∫sin3xcosx1dx=∫sin3xcosxcos2x+sin2xdx=∫sinxcosxcot2x+1dx=∫sinxcosxcot2xdx+∫sinxcosx1dx=∫sinxcosx1dx+∫sin2xsinxcosxcos2xdx
(이하는 아래 계산 과정과 동일)
Q∫ex+3exex−1dxu=ex−1,du=21ex−11exdx=∫u2+4u2ex−1du=2∫u2+4u2du=2∫u2+4u2+4−4du=2∫1−u2+44du=2[u−4∫u2+221du]+C=2[u−421arctan2u]+C=2u−4arctan2u+C=2ex−1−4arctan2ex−1+C
Again… Q∫ex+3exex−1dx(u=ex−1,du=exdx)=∫u+4udu(t=u,dt=2u1du,du=2udt)=2∫t2+4t2dt=2∫1+t241dt=2∫1+(t2)21dt(s=t2,t=s2,ds=−t22dt)=2∫1+s21(−2t2)ds=−∫1+s2t2ds=−∫1+s2s24ds=−4∫s2(1+s2)1ds=−4∫s21−1+s21ds=−4∫s21ds+4∫1+s21ds=−4(−1)s1+4arctans+C=t24+4arctant2+C=2t+4arctant2+C=2u+4arctanu2+C=2ex−1+4arctanex−12+CFailWhere is Incorrect?
Where is incorrect?? … No. It’s all right. arctanx1=2π−arctanx,(x>0)
So, Integration constant is ignored.
윈도우 커맨드에서 실행하는 DOS 스크립트 작성 방법. 쉽지만 막상 필요한 것을 하고 싶을 때 쉽지만은 않다. 자료가 많이 부족하다.
주석
주석 명령은 설명문으로 실행되지 않는다.
rem 으로 실행하고 뒤에 주석문(아무 스트링)을 입력하면 된다. 주석은 프로그래밍시에 간략한 설명을 위한 것이다.
@rem test message… : 앞에 @를 붙이면 배치파일 실행시 rem 커맨드 출력이 안되도록 한다. 물론 그 전에 @echo off을 해 두었다면 @을 붙일 필요없다.
더 간단하게는 :: 으로 시작하면 주석이 된다. 이것은 커맨드 출력도 되지 않아 더 간편히 사용할 수 있다. rem과 다르게 아예 없는 것으로 취급된다.
변수와 출력
dos batch는 파일 확장자를 .bat 또는 .cmd로 하여 메모장으로 텍스트 파일로 작성하면 된다.
기본 적인 출력은 “echo” 커맨드가 있다. 뒤에 출력할 내용을 적으면 된다.
출력 내용에 변수명을 적어 변수값을 출력할 수 도 있다. 또한 변수중에는 미리 시스템에서 정의된 값들도 있어서 유용하다.
변수 설정은 set으로 변수이름과 값을 =으로 할당한다.
변수 사용시에는 변수 이름 앞뒤로 %를 붙인다. 변수 삭제는 빈 값을 할당한다. (빈 값이 있는 변수로 만드는 것이 아니라 변수 자체를 삭제한다는 의미!)
SET FOO=hello world
echo %FOO%
echo %FOO%xxx%FOO%
SET FOO=
for문의 변수 이름은 커맨드창에서 바로 실행할 때 영문자앞에 %를 붙인다. 그러나, Dos batch file(.bat)에서 for문의 변수 영문자 앞에 %% 이렇게 %를 두 개 붙인다!
c:\> copy con test1.bat
@echo off
@rem this is a test batch...
set aaa=hello
echo %aaa%
echo %1
^Z
c:\> test1 kim
hello
kim
@echo off는 이후에 echo 실행명령은 출력하지 않고, 결과만 출력하도록 한다.
batch 파일 실행시 뒤에 파라미터를 줄 수 있는데, 순서대로 %1, %2, … 이렇게 변수로 사용할 수 있다.
줄바꿈. 엔터 입력. 빈 줄 출력
echo.
공백으로 시작하는 문자열 출력
echo. aaa
echo aaa (이것도 이제는 가능함. 앞에 공백 두 개)
특수 문자 출력시 앞에 ^를 사용
echo ^< 이것은 꺾은 괄호 ^>
echo ^| 파이프
echo ^^ 두 개 입력시 하나 출력
스트링 처리
문자열 추출 mid / substr
FOO 변수의 값에서 인덱스 6부터 3글자를 추출. (인덱스는 0부터 시작) 뒤에 수를 생략하면 끝까지를 의미함. -1은 마지막 바로 한글자를 의미.
set BAR=%FOO:~6,3%
set BAR=%FOO:~5%
set BAR=%FOO:~-3% : FOO가 파일명일떄 마지막 세글자(확장자명)을 가져온다.
연산
수 값을 할당하거나 연산하려면 SET /a를 사용한다.
set /a num=4*8+8/2+122
set /a num=1
set /a num+=2
if %num% GEQ 3 echo big
환경 변수
%CD% : 현재 작업 디렉터리
%DATE% : date 커맨드와 같은 포맷의 날짜
%TIME%
%RANDOM% : 0~32767 범위의 수
%ERRORLEVEL%
%CMDCMDLINE%
파라미터
파라미터는 %1, %2, 등으로 받는다. (%0은 배치파일 이름 자체임. %9까지 가능)
%*은 모든 파라미터를 의미함.
파리미터 내부에 공백이 있으면 커맨드상에서 파라미터를 "로 둘러싼다. 단, 스크립트에서 "를 제거하고 받으려면 %~1, %~2 로 받는다.
파라미터가 없으면 종료
if “%1” == “” goto :eof
파라미터에 "를 추가해 주어야 한다.’
Redirect
stderr까지 파일로 기록
cmd /c “test.exe” > “output.txt” 2>&1
실행만 하고 출력은 없앰 (no output)
dir > nul
nul 이라는 파일은 생성되지 않는다. (NUL 대소문자 상관없음. 주의! L이 한 개임.)
for /L %%n in (1,1,100) do net user %%n /add
1부터 100까지 증가하고, 숫자로 계정명으로 사용자를 추가한다.
(for의 변수는 커맨드로 실행시에는 %하나 batch file인 경우는 %% 두개를 사용한다.)
1부터 5까지 출력
for /L %n in (1,1,5) do echo %n
1부터 5까지 출력. 2씩 건너뜀.
for /L %n in (1,2,5) do echo %n
1,3,5 각각 한 줄로 출력됨.
goto
종료시
goto :eof 또는 goto:eof
eof 레이블은 만들필요없이 미리정의된 거라 그대로 사용 가능
또는 exit /b 0
레이블 지정과 goto
레이블 지정시에는 앞에 :을 붙이고 goto 시에는 :를 빼야 한다.
:loop
echo infinite…
goto loop
Sleep
@rem 3sec sleep
@ping 1.2.3.4 -n 1 -w 3000 > NUL
IF
조건 판단
같은지 확인 == 앞 뒤에 공백은 없어도 됨.
if %var% == 1 goto done
echo a
:done
echo b
if else : 괄호, 공백 주의
if %var% == 0 (
echo a
) else (
echo b
)
/i 옵션 : 대소문자 구분 없이 비교. (case-insensitive)
사용자 입력/텍스트파일변수
yn 선택지 (or 스트링 입력)
set /p result=message (Y/N)?
echo %result%
빈 값을 검사하려면 아래 코드를 참고
@echo off
:: init var for empty string.
set "result="
set /p result=are you ok(y/n)?
if "%result%" == "" (
echo no input
goto :eof
)
if /i "%result%"=="y" goto YES
if /i "%result%"=="n" goto NO
echo your input is %result%
텍스트 파일을 첫 행을 읽어 변수에 할당
set /p var=<%temp%\filename.txt
> copy con lines.txt
hello1
hello2
hello3
^Z
> set /p var=<lines.txt
> echo %var% %var%
hello1 hello1
디렉터리
중간 디렉터리까지 모두 생성. mkdir 대신 md를 사용
md “a\b\c”
하위 파일/디렉터리 모두 삭제. /s 옵션
rmdir /s “dirname”
기타
종료 : exit
exit /b 0 : /b는 cmd창은 남겨둔다는 의미. 뒤의 숫자는 프로그램 종료 리턴값. (다른 배치에서는 이 값을 errorlevel 변수로 받아 사용할 수 있다.)
파일 병합 / 붙이기 concate
파일 세 개를 붙여서 하나의 파일로 만든다.
copy 1.txt + 2.txt + 3.txt out.new /b
배치 파일에서 다른 배치 파일 실행하기
call b.bat : call을 사용한다. 그냥 b.bat로 실행하면? b.bat가 종료시 나머지 스크립트로 돌아오지 않고 종료된다.
curl -h 를 하면 옵션이 다 나온다. 너무 많은 내용으로 읽어보기 어렵다. 필요할 때 마다 찾아서 사용하거나 아래 예제를 통해 옵션들을 배워보자.
사용 방법
많이 사용되는 옵션
v : 상세로그 보기
o : 출력 파일 지정
O : 출력 파일명을 자동으로 원격지 파일명과 동일
H : 헤더 추가
A : 에이전트 추가
d : 데이터 추가로 폼 데이터나 JSON 데이터 등을 POST로 보낸다. (단, -G 옵션이 있으면 GET으로 적용된다.)
HTML 받아오기(기본사용)
URL 주소만 뒤에 주면 알아서 받아온다. (GET방식)
파일 받아오기
URL 주소가 image나 zip 등 바이너리 파일 주소인 경우 텍스트 출력이 아니라 파일로 받아오기. 단순하게 파일 받는 용도로 쓸 거면 wget 유틸리티가 더 편하다.
- URL 뒤에 --output 옵션으로 저장할 파일명을 지정한다. (–output 은 -o 와 같다. 대문자 -O로 하면 뒤에 파일명 지정할 필요가 없다. 원격지 파일명과 동일한 파일명으로 자동으로 생성한다.)
$ curl 주소 : 해당 주소의 html content만 출력
$ curl -i 주소 : 해당 주소의 html 헤더와 content를 모두 출력
$ cur -I 주소 : 해당 주소의 html 헤더만 출력 (-I는 --head와 같다)
GET에 추가 정보
헤더 추가
$ curl -H “Host: test.com” -H “name:jun” [주소] : 헤더 정보 추가하기. -H를 여러 번 사용할 수 있다.
User-Agent 추가
$ curl -A “Mozilla/5.0” [주소] : -A 뒤에 지정.
일반적으로 에이전트를 식별하거나 브라우져인척 가장하기 위해 사용한다.
URL 파라미터 추가
$ curl [주소]?key=value&key=value… : URL뒤에 파라미터를 지정.
$ curl -G [주소] -d “key=value&key=value” : -d 옵션은 POST DATA로 지정하는데, -G 옵션을 주면 GET방식 파라미터로 변한다.
$ curl -G [주소] -d “key=value” -d “key=value” : -d 옵션을 나눌 수도 있다.
즉, 위와 같이 입력하면 자동으로 [주소]?key=value&key=value 이런식으로 변환되어 GET으로 요청된다.
POST 사용하기
데이터추가
$ curl -X POST [주소] -d “데이터” : -X POST 옵션은 생략가능 (content-type 지정이 없으면 application/x-www-form-urlencoded 타입으로 보낸다.)
FORM 데이터 추가
HTML의 FORM에 name으로 지정된 부분에 값을 채워서 POST할 경우 사용한다. name을 key로 하여 아래처럼 값을 채워 보낸다.
$ curl -X POST [주소] -d “key=value&key=value&…” : (-X POST는 생략 가능. -d는 --data와 같다)
$ curl -X POST [주소] -d “key=value” -d “key=value” : (상동)
$ curl [주소] --data-urlencode ‘msg=한글’ --data-urlencode ‘name=kkk’ : url인코딩 변환 후 보낸다.
ipynb 노트북 파일을 git에 올려서 형상관리를 하기란 쉽지 않다. 소스코드만이 아니라 output 이 포함되어 있고, 그 외 라인 번호 등 여러가지 추가 정보들 때문에 diff 하기도 정말 어려울 때가 많다. 나중에 충돌 발생하면 어떤 게 최신인지 모를 정도다.
정말 소스 텍스트만 diff 해 주면 좋을 텐데. 충돌도 덜 날 수 있을 텐데.
방법이 없을까???
jupytext를 이용하자.
jupytext를 사용하면 ipynb와 py를 쌍으로 자동 동기화가 가능하다. 주의할 점은 파일명은 동일하고 확장자명만 변경되므로 중복되지 않도록 조심해야 한다.
jupyter notebook에서 ipynb나 py 아무거나 연다음 jupytext 메뉴에 pair로 연결하게 하면 쌍으로 (ipynb, py) 파일이 생성되고, 어느 한 쪽이 수정되면 자동 변경 감지하여 업데이트하게 된다.
이로써 형상관리는 ipynb대신 py 파일 (script)만 관리하게 되면 편리하다. (diff도 source script만 하게되어 변경 내역을 확인할 수 있다.)
사용 준비
먼저 설치 패키지
pip install jupytext --upgrade
설정 변경
jupyter notebook --generate-config
.jupyter/jupyter_notebook_config.py 설정 파일 수정 (윈도우는 %USERPROFILE% 경로에서 찾으면 되고, 리눅스는 ~(home)에서 찾으면 된다.)
다음을 찾아 수정 또는 추가한다.