Google colab은 Jupyter ipython notebook과 같은 python code를 온라인에서 공유하면서 작성할 수 있게 해준다.

더구나 GPU도 쓸 수 있고 속도도 빠른편이며 sklearn, prophet등 ML관련 library들도 대부분 미리 설치되어 있다.

 

팁1: 인터넷에 있는 파일을 바로 다운받아서 데이터로 쓰기

ML을 하다보면 데이터가 생명인데, 매번 클릭해서 다운받으면 번거롭기 때문에 wget으로 바로 받으면 공유하기도 좋고 편하다.

 

 

공개적으로 올려진 파일의 경우 다음처럼 wget으로 쉽게 받을 수 있다. 

 

위 파일처럼 압축된 경우에도 다음처럼 zipfile 을 import하여 풀 수 있다.

 

 

 

팁2: github에 있는 파일 받기

github에 올려져 있는 파일의 경우 git clone을 하지 않고 wget만으로는 받기 힘든데.. 다음처럼 raw.으로 시작하는 주소로 바꾸고 약간만 조심하면 바로 받을 수 있다.

주소를 바꾸는 규칙에 대해서는 여기를 참조하라.

요즘에는 그냥 git clone 되는거 같다.

반응형

'Programming > Python' 카테고리의 다른 글

Python GUI Programming(Tkinter)  (0) 2021.01.02
파이선환경 그리고 requirements.txt  (0) 2020.09.20
python array (indexing and slicing)  (0) 2019.02.28
pudb  (0) 2018.11.15
Anaconda & Jupyter  (0) 2018.03.23

가장 기본적인 저장소 개요는 여기를 참조


안드로이드 프로그래밍을 할 때 상태저장 또는 파일입출력, 파일공유 등을 위해 저장소 개념은 중요하다.

그런데 내부/외부 저장소가 있고 저장경로와 권한에 대해 신경써줘야 하는등, 데스크탑에서 하던 콘솔 프로그래밍 또는 MFC등의 application에 비해 복잡성이 좀 더 존재한다.


안드로이드에서 지원하는 저장소에는 다음 5가지가 있다.

1. SharedPreferences: 전용 원시 데이터를 [키, 값] 쌍으로 저장합니다.

2. 내부 저장소: 전용 데이터를 기기 메모리에 저장합니다.

3. 외부 저장소: 공용 데이터를 공유 외부 저장소에 저장합니다.

4. SQLite 데이터베이스: 구조적 데이터를 전용 데이터베이스에 저장합니다.

5. 네트워크 연결: 자신의 네트워크 서버를 사용하여 데이터를 웹에 저장합니다.


SharedPreferences

int, string 등에 대해서 설정값 저장하고 불러올 수 있다.

windows programming에서의 registry개념과 어느정도 유사하다.


내부 저장소

가장 기본적인 파일 입출력 형태라고 볼 수 있다.

다른앱과 공유할 필요없는 앱내부 자료 저장용으로 쓴다.

아래 처럼, app이 설치된 directory에서 Java파일 입출력을 할 수 있다.
자바의 파일입출력 API가 지저분한건 자바의 한계이니 감안하면서 보자 ㅠ



저장된 파일을 확인하는데는 아래 Device File Explorer를 쓰면 된다.


외부저장소

앱간에 공유할 정보가 있다면 이곳에 저장한다. 앱의 외부라는 측면에서 외부저장소라 부른다.

사진이 저장되는 Pictures폴더나 SD카드, USB스토리지등이 외부저장소에 해당한다.


예를들면 Pictures 폴더의 경우 아래처럼 접근해서 사용


공유공간을 사용하는 것이다 보니 권한이 필요하다.
아래처럼 manifest에 설정이 필요하다.

경우에 따라 아래코드가 추가로 필요할 수 있다.


단순히 Environment.getExternalStorageState() 라고만 했을때는, 외부SD카드 경로가 리턴될수도 있고, 내부 메모리의 일정영역이 리턴될수도 있다.

하드웨어 제조사 마음대로. 관련해서는 여기를 참조.




반응형

'Programming > Android' 카테고리의 다른 글

리눅스 네트워크 관련  (0) 2020.06.06

1차원 array

indexing

a = ['a','b','c','d','e','f'] 이런 배열이 있을때, 기본 인덱싱은

a[0] 이렇게 한다 (a[0]은 0번째 element를 indexing하며 따라서 'a'가 된다.)

이때 a[-1] 이렇게 음수도 쓸 수 있으며 마지막 element부터 -1, -2로 indexing된다. (따라서 a[-1]은 'f'가 된다)


slicing

부분집합을 가져오는 slicing은 colon을 한 번 쓰거나, 두 번 쓸 수 있으며,

각각 [start:stop], [start:stop:step] 이라는 의미가 된다.

또한 colon기호는 대괄호 안에서만 쓸 수 있으나 slice() 객체를 사용하면 밖에서 할 수도 있다.

예를 들어 a[1:3] 하면 ['b', 'c']가 되는데, 

a[1:3]은 a[slice(1,3)]과 같기 때문에 

아래처럼 두줄에 나눠쓰는게 가능하다.

> col = slice(1,3)

> a[col]


slicing의 다양한 옵션은 여기를 보면 쉽게 파악할 수 있다.


2차원 array

indexing

a = [[1,2,3],[4,5,6]] 이런 배열이 있을때, 기본 인덱싱은

a[0][1] 이렇게 한다 (a[0][1]은 0번째 row, 1번째 column을 의미하며 값은 2가 된다)

근데 2차원 인덱싱의 경우는 a[0][1]대신 a[0,1]로도 할 수 있다.


slicing

다른건 쉬운데 index을 위한 comma와 slicing을 위한 colon이 같이 쓰이면 헷갈릴 수 있다.

예를 들어 위의 a배열에 대해서 a[:,0:2]라고 하면 [[1,2],[4,5]]가 되는데..

a[:,0:2]는 

a[slice(None, None, None), slice(0, 2, None)]과 같고, 3줄로 풀어쓰면 다음과 같다.


> row = slice(None, None, None)  # 모든 row를 원한다.

> col = slice(0, 2, None)  # 첫번째, 두번째 컬럼만 원한다(마지막 컬럼 배제)

> a[row,col]



반응형

'Programming > Python' 카테고리의 다른 글

파이선환경 그리고 requirements.txt  (0) 2020.09.20
Google Colab(Colaboratory Lab) 팁  (0) 2019.03.07
pudb  (0) 2018.11.15
Anaconda & Jupyter  (0) 2018.03.23
python numpy  (0) 2018.02.28

multiprocess환경에서 디버깅하기

multiprocess를 사용한 경우 pudb가 정상 동작하지 않는다.


이럴 때는 multiprocess로 분기하는  부분을 일시적으로 분기하지 않도록 하거나(근데 이 방법은 코딩을 해야하는 불편이 존재)


remote debugging을 하는 방법이 있는것 같다.


나도 아직 해보진 않았는데.. 여기참조해서 나중에 해보자

반응형

'Programming > Python' 카테고리의 다른 글

Google Colab(Colaboratory Lab) 팁  (0) 2019.03.07
python array (indexing and slicing)  (0) 2019.02.28
Anaconda & Jupyter  (0) 2018.03.23
python numpy  (0) 2018.02.28
python virtualenv 가상환경  (0) 2017.11.16

내 github주소는 다음과 같다.

https://github.com/sevity


접속해보면 coin_strategy, ml등 여러가지 repository가 있고.. 예를 들어 이중 ml 이라는 repository를 리눅스 콘솔로 가져오고 싶으면 다음처럼 clone을 한다.


# git clone https://github.com/sevity/ml.git



반응형

'Programming > Git' 카테고리의 다른 글

git 초기설정  (0) 2023.06.06
git log  (0) 2019.12.09
git 자주 쓰는 명령어 모음  (0) 2019.09.27
git branch 관련  (0) 2019.04.17
--no-ff 옵션  (0) 2017.11.13

Anaconda install

Jupyter를 사용하기위해 anacoda install을 진행했다. (linux, ubuntu 환경)

인스톨은 여기를 참조했다.

인스톨후 conda를 입력해서 인식되면 제대로 설치된 것


맥환경에서 install 하는건 여기에서 설치프로그램 클릭해서 설치했다.

Jupyter 설정

Jupyter 설치는 conda설치시에 기본적으로 되고, 설정하는 방법은 여기 참조

Jupyter notebook에서 tensorflow를 사용하려면, linux 터미널에서 conda install tensorflow 하면 설치된다.


ipdb관련

Jupyter notebook에서 라인디버깅을 하기위해서 ipdb를 추가 인스톨해야했는데 conda install ipdb로는 안됐고

conda install -c conda-forge ipdb로 하니까 깔렸다.

디버깅 방법은 아래와 같다.



위에거 빠져나올때는 exit() 쳐줘야 한다.


gym관련

$ conda install gym으로는 설치가 안됐고

여기 참조해서 $conda install -c akode gym하니까 설치가 됐다.

반응형

'Programming > Python' 카테고리의 다른 글

python array (indexing and slicing)  (0) 2019.02.28
pudb  (0) 2018.11.15
python numpy  (0) 2018.02.28
python virtualenv 가상환경  (0) 2017.11.16
python에서 doxygen 사용해보기  (0) 2017.11.14

유용링크들

101가지 문제풀기 연습



random 관련


0이상 20미만의 int 10개 배열 만들기

> a = np.random.randint(20, size=10)

array([17, 12,  4, 18, 11, 15,  5, 19, 19, 18])



5행3열의 array를 만들고 그 값들을 5~10 사이의 랜덤한 숫자로 채우고 싶을때

np.random.uniform(5, 10, size=(5,3))

#> [[ 8.50061025  9.10531502  6.85867783]

#>  [ 9.76262069  9.87717411  7.13466701]

#>  [ 7.48966403  8.33409158  6.16808631]

#>  [ 7.75010551  9.94535696  5.27373226]

#>  [ 8.0850361   5.56165518  7.31244004]]


위를 소수점 3째자리 까지만 나오도록 하고 싶으면

> np.set_printoptions(precision=3) 하면됨(글로벌 적용이라 그 이후에 출력하는데는 다 공통적으로 적용됨)


e-04와 같은 scientific notation을 제거하고 싶으면?

> np.set_printoptions(suppress=True) 하면 된다.



array관련

> np.arange(10) 하면 array([0,1,2,3,4,5,6,7,8,9]) 가 만들어 진다.



> arr = np.arange(10) 한다음


> arr[arr%2 == 1] 하면 array([1,3,5,7,9])가 리턴된다. (조건문을 인덱스 부분에 넣을 수 있다는 것. 그냥 python list로는 안되는 부분)


> arr[arr%2 == 1] = -1 하면 arrary([0,-1,2,-1,4,-1,6,-1,8,-1]) 이 만들어진다. 조건문으로 인덱스 조회가 되는것 뿐 아니라 assign과 연결시킬수도 있다.


> arr *= -1 하면 array([0,-1,-2,-3,-4,-5,-6,-7,-8,-9])가 만들어진다. (element에 대한 연산을 저런식으로 할 수 있다는것.. python list로는 다른 의미가 되어버리니 주의할 것)



np.where 사용하기

> a = np.array([1,2,3,2,3,4,3,4,5,6])

> b = np.array([7,2,10,2,7,4,9,4,9,8])


값이 같은 인덱스만 추리고 싶으면?

> np.where(a == b) 하면된다.

> array([1,3,5,7])이 리턴된다.




반응형

'Programming > Python' 카테고리의 다른 글

pudb  (0) 2018.11.15
Anaconda & Jupyter  (0) 2018.03.23
python virtualenv 가상환경  (0) 2017.11.16
python에서 doxygen 사용해보기  (0) 2017.11.14
python import  (0) 2017.11.14

ocx 프로그래밍을 하다가, visual studio 버전을 올리다 보면, 

ocx가 포함된 dialog를 열다가 exception이 나는데 알고 보면 occcont.cpp의 925번째 라인 오류라고 나올 때가 있다.


나의 경우는 빈번하게 발생해서 여기에 적어둔다.


해결책은 command line으로 가서 해당 ocx를 

regsvr32 /u my_ocx.ocx 이런식으로 unregister해주고 나서 

regsvr32 my_ocx.ocx 이런식으로 다시 register해주면 된다.


관리자 권한이 아닐경우 친절하지 않게 이상한 오류가 발생할 수 있으니 반드시 comand 창을 관리자 권한으로 열자

반응형

'Programming > Visual studio' 카테고리의 다른 글

visual studio 단축키  (0) 2017.11.12

sudo su로 먼저 root권한을 얻는다.


firewall-cmd --permanent --zone=public --add-port=80/tcp  이걸로 원하는 리슨포트를 추가한다.
firewall-cmd --reload 이거 해주면 반영 된다.

설정된 값 확인은
vi /etc/firewalld/zones/public.xml 이걸로 할 수 있다.


CentOS 6는 아래 확인

https://blog.miyam.net/7



반응형

'Programming > Linux' 카테고리의 다른 글

crontab  (0) 2019.09.27
리눅스 계정 관리  (0) 2019.09.19
리눅스 port 확인  (0) 2017.12.04
sudo 관련  (0) 2017.11.07
디스크/폴더 사용량, 남은용량 확인  (0) 2017.11.07

서버의 특정 포트가 열려있는지 확인하려면 다음 명령어를 사용하면 된다 


nc

예전에는 nc -z가 유용했는데 -z옵션이 없어져버림

nc -z 대신에 nc --send-only </dev/null  {ip} {port} 하면 connect 여부를 확인할 수 있다.

바로 다음 커멘드라인 떨어지면 connect 성공한거고 connect가 안되면 hang이 걸린다.


nc -v {ip} {port} 이걸로 되는것 같기도 하다.


nmap

nmap -Pn -p80 naver.com


위처럼 하면 naver.com에서 80포트가 열려있는지 확인할 수 있다.

열려있다면 다음처럼 보인다.


$ nmap -Pn -p80 naver.com


Starting Nmap 7.01 ( https://nmap.org ) at 2017-12-04 13:26 KST

Nmap scan report for naver.com (125.209.222.142)

Host is up (0.0044s latency).

Other addresses for naver.com (not scanned): 202.179.177.21 202.179.177.22 125.209.222.141

PORT   STATE SERVICE

80/tcp open  http


Nmap done: 1 IP address (1 host up) scanned in 0.03 seconds



위에서 open 또는 closed로 겁색되면 접근자체는 되는것인데 filtered로 검색되면 방화벽 등에서 접근을 차단한 것이다!


telnet


telnet naver.com 80

반응형

'Programming > Linux' 카테고리의 다른 글

crontab  (0) 2019.09.27
리눅스 계정 관리  (0) 2019.09.19
CentOS 7 방화벽  (0) 2017.12.04
sudo 관련  (0) 2017.11.07
디스크/폴더 사용량, 남은용량 확인  (0) 2017.11.07

+ Recent posts