□ 환경

- ubuntu18.04, 20.04

- python 3.7 이상

 

주로 numpy 설치 시 잘 발생하는 오류이다.  (특히, proxy 환경에서... ...)

SystemError: Cannot compile 'Python.h'. Perhaps you need to install python-dev|python-devel.

 

1) 결론부터, pip를 이용하는 방식으로 했을 때 안될 경우 해결방법이 바로 아래와 같다.

$ sudo apt-get install python-dev

 

특정 python 버전과 밀접한 관련도 많으니, 아래처럼 버전을 확인하여 지정해 주는 것이 가장 해결이 잘된다.

// 아래와 같이 #.# 에 버전을 지정. e.g.) apt-get install python3.7-dev

$ apt-get install python[#.#]-dev

 

이후 numpy를 설치하면 잘 설치되는 것을 확인할 수 있다.

// 아래는 proxy 환경 사례

$ pip install  --trusted-host pypi.python.org --trusted-host files.pythonhosted.org --trusted-host pypi.org  --proxy 프록시서버IP:포트 numpy

 

2) pip를 활용하는 일반 방식, 아래와 같이 패키지 설치 시 해결된다고 많은 사이트에서 소개되어 있다. 의외로 잘 해결이 않되는 경우가 많다.

$ pip install python-dev 

 

proxy 환경 아래라면 

$ pip install   --proxy 프록시서버IP:포트 python-dev

 

proxy 환경 아래, sslVerify 문제(Retrying ...  connection.VerifiedHTTPSConnection ...)가 있을 경우 

$ pip install  --trusted-host pypi.python.org --trusted-host files.pythonhosted.org --trusted-host pypi.org  --proxy 프록시서버IP:포트 python-dev

 

e.g.)

$ pip install  --trusted-host pypi.python.org --trusted-host files.pythonhosted.org --trusted-host pypi.org  --proxy 10.10.10.10:8080 python-dev

반응형

git 프록시 설정(proxy setting)은 아래와 같다.

$ git config --global http.proxy [프록시서버주소:포트]
$ git config --global https.proxy [프록시서버주소:포트]

 

e.g.) git config --global https.proxy http://10.10.10.10:8080

 

proxy server를 경유할 경우 높은 확률로 https 인증 실패를 당하므로

$ git config http.sslVerify false

 

도 함께 해주는 것이 좋다.

 

참고로 기등록된 proxy 주소가 있는지 알고 싶다면 아래 명령으로 확인 가능하다.

$ git config --global --get http.proxy
$ git config --global --get https.proxy

$ git config --global --get http.sslVerify

반응형

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

Proxy setting, curl  (0) 2023.05.28
Proxy setting, date - Proxy가 있을 때 시간 동기화  (0) 2020.06.11
Proxy setting, npm (ubuntu 18.04)  (0) 2020.04.06
Proxy setting, jupyter notebook  (0) 2020.02.06
Proxy setting, conda (Windows)  (0) 2019.12.08

□ 환경

- ubuntu18.04, 20.04

- python 3.7 이상

 

프록시(proxy)가 설치되어 있는 환경에서 docker를 사용할 때, 

docker container 를 실행시킨 후 컨테이너 내부에 패키지들을 설치하기 위해 apt-get update를 실행시키면 메세지와 함께 package list가 update 되지 않는 경우가 있다. 당연히 다른 패키지들을 설치할 수도 없다.

$ apt-get update

...

connection timed out

 

이 경우 여러 원인이 있겠으나 대개의 경우 docker container 안에 proxy setting이 안되어 있는 경우로 proxy 설정을 해주면 해결되는 경우가 많다. 하기 링크에서 설정 가능하다.

https://driz2le.tistory.com/272

 

Proxy setting, apt-get (ubuntu 18.04)

Ubuntu 포함 linux 기본 환경에서 apt 또는 apt-get 에 대한 proxy 설정방법이다. Docker 환경에서 container 안에서 proxy를 설정해야할 경우에도 똑같이 적용하면 된다. 다만, docker container 안에서는 proxy가 안

driz2le.tistory.com

 

apt-get update도 안되는 상황이면 보통 vi 도 설치가 되지 않았을 가능성이 크므로, 이때는

$ sudo echo 'Acquire::http::proxy "http://10.10.10.10:8080/";' > /etc/apt/apt.conf.d/90proxy

$ sudo echo 'Acquire::https::proxy "http://10.10.10.10:8080/";' >> /etc/apt/apt.conf.d/90proxy

// 정상적으로 기록되었는지 확인

$ sudo cat /etc/apt/apt.conf.d/90proxy

Acquire::http::proxy "http://70.10.15.10:8080/";
Acquire::https::proxy "http://70.10.15.10:8080/";

 

위에서 10.10.10.10:8080 은 자신의 proxy server ip나 url을 사용하면 되며 90proxy 파일명은 어떤 이름이든 상관없다.

반응형

curl은 인터넷 상에서 데이터 전송을 위해 사용하는 command line 도구로, https, https, FTP, SFTP 등 다양한  protocols를 지원한다. 따라서, 프록시(proxy) 서버가 설치된 경우, curl 명령을 제대로 사용하려면 proxy 를 명시해야 하는 경우가 있다. 아래와 같은 명령을 사용한다.

curl -x proxy.com:8080 
     -U login:password

당연히 proxy.com 대신 1.2.3.4:8080 처럼 프록시 서버의 IP로 기재하는 것도 가능하다.

 

반응형

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

Proxy setting, git  (0) 2023.06.04
Proxy setting, date - Proxy가 있을 때 시간 동기화  (0) 2020.06.11
Proxy setting, npm (ubuntu 18.04)  (0) 2020.04.06
Proxy setting, jupyter notebook  (0) 2020.02.06
Proxy setting, conda (Windows)  (0) 2019.12.08

윈도우 원격접속을 이용해서 Ubuntu GUI 환경으로 접속을 위해 xrdp 를 이용할 수 있다.

 

우선 하기와 같이 xrdp vnc3server tightvncserver를 삭제한다. 해당 서비스의 경우 높은 확률로 vnc error ( VNC error - problem connecting)를 발생시키기 때문이다.

이후 다시 tightvncserver, xrdp를 설치한다.

 

$ sudo apt-get remove xrdp vnc4server tightvncserver
$ sudo apt-get install tightvncserver
$ sudo apt-get install xrdp

 

Ubuntu 계정의 home 디렉토리에 .xsession 파일을 생성한다. 그리고 .xsession 파일 안에 하기와 같이 기재한다. 

해당 명령은 Ubuntu 연결 시 default GUI를 설정해 주는 것으로 Ubuntu 18.04나 20.04 버전은 gnome이다. 

 

$ gnome-session –session=gnome-fallback

 

추가로 본인의 GUI환경이 잘 설치되어 있는지도 확인한다. sudo systemctl statud gdm3 명령을 수행했을 때 Active: active (running) 으로 나오면 정상이다.

 

$  sudo systemctl status gdm3

 

● gdm.service - GNOME Display Manager
   Loaded: loaded (/lib/systemd/system/gdm.service; static; vendor preset: enabled)
   Active: active (running) since Fri 2023-03-03 13:29:42 KST; 3 weeks 5 days ago
 Main PID: 1227 (gdm3)
    Tasks: 3 (limit: 4915)
   CGroup: /system.slice/gdm.service
           └─1227 /usr/sbin/gdm3

 

위와 같이 나오지 않을 경우 별도 Unbuntu용 GUI 환경을 설치해 주거나 gdm3 서비스를 띄워야 한다.

 

//  gdm3가 없다면 굳이 패키지를 지울 필요는 없다.

$ sudo apt remove --purge -y gdm3    
$ sudo apt autoremove --purge -y

 

// 하기와 같이 gdm3 를 재설치하고 서비스를 시작한다.
$ sudo apt install gdm3 -y
$ sudo systemctl start gdm3.service

 

// 서비스가 잘 수행되고 있는지 확인

$ systemctl status gdm3

 

// 경우에 따라 시스템 재시작이 필요할 수도 있다.

$ sudo reboot

 

이제 xrdp도 띄워야 한다. 우선 xrdp가 잘 띄워져 있는지 먼저 확인한다. 

 

$ sudo systemctl status xrdp


● xrdp.service - xrdp daemon
   Loaded: loaded (/lib/systemd/system/xrdp.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2023-03-30 11:48:23 KST; 18min ago
     Docs: man:xrdp(8)
           man:xrdp.ini(5)
 Main PID: 21249 (xrdp)
    Tasks: 2 (limit: 4915)
   CGroup: /system.slice/xrdp.service
           ├─21249 /usr/sbin/xrdp
           └─22307 /usr/sbin/xrdp

 

만약 Active: inactive (dead) 거나 Active: fail 이면 다음 명령을 수행한다.

 

$ sudo systemctl start xrdp

 

참고로 서비스를 내리거나 다시 시작하는 명령은 다음과 같다.

 

$ sudo systemctl stop xrdp  
sudo systemctl restart xrdp

 

xrdp의 기본 포트는 3389 포트이며 포트가 잘 열려있는지 netstat -lntp 명령을 통해서 확인해야 한다. xrdp 서비스가 시작된 상태에서 아래와 같이 tcp6 3389 ... LISTEN 가 보이면 열려있는 것이다.

 

$ netstat -lntp

 

(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
                             ... (중략) ...
tcp6       0      0 :::3389                 :::*                    LISTEN      -

 

포트가 잘 떠있어도 Ubuntu 방화벽에서 차단하면 의미가 없다. 아래와 같이 방화벽에 포트를 등록한다.

 

ufw allow 3389

 

여기까지 실행되었다면 잘 되고 있는 것이다. 이제 윈도우에서 원격데스트톱 호출을 실행해 보자. 접속 Session은 Xorg로 한다.

 

□ 관련 페이지

- xrdp 원격 접속, 검은 화면 해결(black screen)    https://driz2le.tistory.com/533

 

xrdp 원격 접속, 검은 화면 해결(black screen)

윈도우 환경에서 우분투 원격 접속 할때, 접속은 되지만 검은 화면(black screen)만 보이는 경우가 많다. (사실 대부분...?) 이 경우, xrdp X session start script에 아래 세 줄을 추가해서 해결할 수 있다. uns

driz2le.tistory.com

 

반응형

다양한 영어이름의 유래가 잘 소개된 사이트, 영어이름 지을때 유용하다.

 

원문 URL https://blog.daum.net/zaun4354/511

 

반응형

 

I've followed my heart into the fire.
Got burned, got broken down by desire.
I've tried, I've tried but the smoke in my eyes 
left me blurry, blurry and blind.
I've picked all the pieces up off the ground.
I've burned all my fingers, but that's gone now.
Got the glue in my hands and stick into the plan.
Stick into the plan that says I can do anything at all.
I can do anything at all.
                                                        
This is my kiss goodbye.
You can stand alone and watch me fly.
Cause nothing's keeping me down.
Gonna let it all up.
Come on and say right now, right now, right now.
This is my big hello.
Cause I'm here and never letting go.
I can finally see, it's not just a dream.
When you set it all free, all free, all free.
you set it all free.
                                                        
I was a girl caught under your thumb.
But my stars gonna shine brighter than your sun.
And I will reach so high, shoot so far.
Gonna hit, gonna hit, hit every target.
                                                        
Make it count this time.
I will make it count this time.
내 마음을 따라 불 속에 뛰어들었네.                     
욕망으로 불에 데이고 망가져 버렸지.                    
노력에 노력을 했지만, 내 눈을 가린 연기로              
흐려지고 흐려지다 결국 눈이 멀었어.                    
난 땅 위에 흩어진 모든 조각들을 주우려 했어.           
내 모든 손가락들을 태웠음에도, 모두 사라져 버렸어.         
손에 풀을 쥐고 계획을 세워.                            
내가 무엇이든 할 수 있다고 말할 수 있는 계획을 세워.   
나는 무엇이든 할 수 있어.                              
                                                       
이건 내 작별의 키스야.                                 
너는 홀로 서서 내가 날아오르는 것을 보게 될거야.       
아무 것도 나를 떨어뜨릴 수 없어.                       
이 모든 것을 다 날려버릴 거야.                         
와서 말해 봐. 바로 지금, 바로 지금, 바로 지금.         
이건 나의 커다란 안부 인사야.                          
난 여기 있고 절대 포기하지 않아.                       
난 마침내 보게 될거야. 이건 단지 꿈이 아니야.          
네가 모든 것을 자유롭게 했을때, 모든 것을, 모든 것을.  
네가 모든 것을 자유롭게 했을때.                        
                                                       
난 네 손아귀에 잡혀있던 소녀였어.                      
그러나 나의 별들은 너의 태양 보다 더 밝게 비출거야.    
나는 아주 높이 올라, 더 멀리 쏴서,                     
맞출거야, 맞출거야, 모든 것을 맞출거야.                
                                                       
나는 이 순간을 소중히 여길거야.                        
나는 이 순간을 소중히 여길거야.                        
반응형

'소소한 일상' 카테고리의 다른 글

영어 이름의 유래  (0) 2022.07.07
[펌] 말이 대화지 '네가 바꿔라'였다  (0) 2020.01.26
[펌] 집중할 땐, 모짜르트  (0) 2019.12.28
[펌] 선 그리는 연습  (0) 2019.12.28
스페인 엘치코 데 떼레노  (0) 2019.09.28

스펙트럼 포락선(Spectral envelop)

스펙트럼 포락선은 진폭 스펙트럼의 포락선 곡선을 의미한다. 적시적점(適時適占, one point in time), 정확히는 한 윈도우(one window)를 뜻한다. 분광계(a spectrometer)를 사용한 원격 감지(remote sensing) 분야에서, 특징 값의 스펙트럼 포락선은 관심있는 개별 스펙트럼 대역에 대한 밝기 레벨 범위에 의해 정의된 스펙트럼 특성의 경계이다. 위키백과

 

Envelope(포락선)

임의 신호에 대한 최대값들을 연결하여 구성한 곡선, 임의 신호에 대해 힐버튼 변환(Hilbert transform) 등을 적용하여 구한 곡선을 뜻한다.

  • 진폭 포락선: 파형의 진폭값을 시간축에 따라 연결한 선
  • 스펙트럼 포락선: 스펙트럼의 최대값을 저주파부터 고주파까지 연결한 선

Envelop(포락선), 출처: 정보통신기술용어해설    http://www.ktword.co.kr/test/view/view.php?m_temp1=3830

 

참고  위키백과

 

포락선 - 위키백과, 우리 모두의 백과사전

포락선(envelope, 包絡線)은 어떤 단일 매개변수에 따라 정의된 무한개의 곡선이 있을 때 그 곡선족의 모든 곡선에 접하는 곡선을 이르는 말이다. 즉, 각각의 t {\displaystyle t} 에 대하여 곡선 가 있을

ko.wikipedia.org

 

반응형

DataFrame에서 컬럼명을 수정하는 방법은 몇 개가 존재한다.

아래와 같은 DataFrame 샘플이 존재한다고 할 때

import pandas as pd
df = pd.DataFrame( {'c1':[1, 2, 3]
                   ,'c2':[3, 4, 5]
                   ,'c3':[6, 7, 8]})

	c1	c2	c3
0	1	3	6
1	2	4	7
2	3	5	8

 

□ 특정 컬럼명 수정

아래 세 가지 방법으로 컬럼명 수정이 가능하다.

df.rename( {'c1':'A1'}, axis='columns', inplace=True)
# 이때 inplace=False이면 원본 데이터(df) 값 자체는 변경하지 않는다. default는 False이다.

	A1	c2	c3
0	1	3	6
1	2	4	7
2	3	5	8


df.rename( columns={'c1':'B1'}, inplace=True)  

	B1	c2	c3
0	1	3	6
1	2	4	7
2	3	5	8


df.rename( columns={df.columns[0]:'C1'}, inplace=True)

	C1	c2	c3
0	1	3	6
1	2	4	7
2	3	5	8


df.columns.values[0] = 'D1'

	D1	c2	c3
0	1	3	6
1	2	4	7
2	3	5	8

- inplace option

DataFrame에서 inplace option은 원본 데이터(source) 자체를 변경하는가, 하지 않는가를 지정한다.

inplace=False인 경우에는 원본 데이터 자체는 변경하지 않고 형상만 변경한다. 이때 해당 형상은 return 값을 통해서 받을 수 있다.

 

temp = df.rename( {'c1', 'A1'}, axis='columns', inplace=False) 

 

의 경우 원본 데이터인 df의 첫 번째 컬럼명은 A1으로 변경되지 않는다.

반면 temp는 컬럼명이 A1으로 변경된 데이터를 가지게 된다. 

 

같은 원리로

df.rename( {'c1', 'A1'}, axis='columns', inplace=True) 은

df = df.rename( {'c1', 'A1'}, axis='columns', inplace=False)  과 동일한 결과를 가진다.

 

 

□ 컬럼명 전체 변경

아래 방법으로 컬럼명 전체 수정이 가능하다.

df.rename( {'c1':'A1', 'c2':'A2', 'c3':'A3'}, axis='columns', inplace=True)

	A1	A2	A3
0	1	3	6
1	2	4	7
2	3	5	8


df.rename( columns={'c1':'B1', 'c2':'B2', 'c3':'B3'}, inplace=True)

	B1	B2	B3
0	1	3	6
1	2	4	7
2	3	5	8


df.columns = ['C1', 'C2', 'C3']

	C1	C2	C3
0	1	3	6
1	2	4	7
2	3	5	8

 

반응형

□ DataFrame.loc 사용법

구분

기본 사용법

다른 형태

row name

df.loc[ "row1" ]

 

row name list

df.loc[ "row1", "row2", "row3" ]

 

row name list slicing

df.loc[ "row1" : "row5" ]

df[ "row1" : "row5" ]

column name

df.loc[ :, "col1" ]

df[ "col1" ]

column name list

df.loc[ :, [ "col1", "col2", "col3" ] ]

df[ [ "col1", "col2", "col3" ] ]

column name list slicing

df.loc[ :, "col1" : "col5" ]

 

 

□ DataFrame.iloc 사용법

구분

기본 사용법

다른 형태

row

df.iloc[ 1 ]

 

row list

df.iloc[ [ 1, 2, 3 ] ]

 

row list slicing

df.iloc[ 1 : 5 ]

df[ 1 : 5 ]

column

df.iloc[ :, 1 ]

 

column list

df.iloc[ :, [ 1, 2, 3 ] ]

 

column list slicing

df.iloc[ :, 1 : 5 ]

 

 

반응형

+ Recent posts