파이썬으로 프로그래밍을 하다가 가끔씩 다음과 같은 에러를 만난다. UnboundLocalError: local variable 'len' referenced before assignment len이라는 이름의 변수를 할당하기전에 사용했다는 에러 메시지다. 이 에러를 발생시킨 코드는 다음과 같다. def func1(s): cs = set(s) for i in range(len(cs)): if False: len = 0 print(i) str = "ABCDDD" func1(str) 문제의 원인은 함수 내부에서 len이라는 변수에 값을 할당해서 사용했기 때문이다. C 언어나 Java의 경우 변수 이름으로 Reserved Word를 사용할 경우 변수 할당이 안되고 컴파일 에러가 발생한다. 하지만 파이썬은 Res..
알고리즘 문제를 풀다가 문자열을 이루고 있는 문자들을 배열로 다뤘다가 다시 문자열로 합치는 동작이 필요했다. Stack, Queue 같은 자료구조에 문자열을 이루고 있는 캐릭터들을 넣었다가 빼는 동작을 하고 다시 문자열로 만드는 동작이 필요했다. 파이썬의 String 클래스는 'join(list)' 메서드를 제공하고 있다. join 메서드를 이용하면 리스트를 구성하고 있는 각각의 캐릭터들을 하나의 문자열 형태로 변경해서 반환해준다. 예를들어보자. list = ['H', 'E', 'L', 'L', 'O', ' ', 'W', 'O', 'R', 'L', 'D'] print(list) print(''.join(list)) # List의 Element들을 공백없이 붙임 print(' '.join(list)) # ..
파이참으로 작성한 소스코드를 깃허브(Github)에 푸쉬를 할 수 있다. 파이참은 프로젝트 파일을 커밋하고 깃허브 리파지토리에 푸쉬(Push)할 수 있는 기능을 제공한다. 깃허브 계정 및 리파지토리 생성 우선 소스코드를 관리할 깃허브 리파지토리를 생성해야한다. 깃허브 계정이 없다면 깃허브 계정부터 생성하자. https://github.com 그리고 리파지토리를 생성하자. 깃허브 홈페이지에서 리파지토리 생성 버튼을 누르거나 https://github.com/new 페이지로 들어가서 리파지토리를 생성하면 된다. helloworld라는 리파지토리를 만들어봤다. "Create repository" 버튼을 눌러서 리파지토리를 생성하자. 깃허브 리파지토리가 생성되었다. 파이참에 깃허브 리파지토리 연동 방금 생성한 ..
맥북이나 iMac에 파이썬 개발환경을 설치해보자. macOS에는 기본적으로 파이썬 2.x 버전이 설치되어 있다. 다음 명령을 실행해보면 기본적으로 설치되어 있는 파이썬 버전을 확인할 수 있다. python -v 확인해보니 현재 맥북에는 2.7.16 버전이 설치되어 있다. 그대로 파이썬 2 문법을 이용해서 파이썬 개발을 해도 좋겠지만 왠만하면 파이썬 3를 사용하는걸 권장하고 있으니 3.x 버전을 설치해보도록하자. 참고로 현재 맥북에서 파이썬을 실행하면 다음 경고 메시지를 볼 수 있다. WARNING: Python 2.7 is not recommended. This version is included in macOS for compatibility with legacy software. Future vers..
다이나믹 언어인 파이썬으로 프로그래밍하다보면 가끔씩 만나는 에러 메시지가 있다. 그 중에 하나가 TypeError: 'NoneType' object is not iterable 에러다. 반복문에 사용할 객체를 얻어오는 과정에서 iterable이 아닌 객체를 사용한 경우 이 에러를 만나게 된다. 이 에러를 재현할 수 있는 간단한 코드는 다음과 같다. def function1(param1): if param1 == 1: return "abc" elif param1 == 2: return "def" elif param1 == 3: return "ghi" value = 1 for char in function1(value): print(char) 이 코드를 실행하면 a b c 이런 실행 결과를 얻게 된다. va..
파이썬 개발 환경인 PyCharm을 이용해 파이썬 프로그램을 개발할 때 "Unresolved reference xxx" 에러를 만나게 되었다. 분명 문제는 없어보이는데 PyCharm 환경에서는 에러를 내고 있었다. Module1 이라는 파일에서 Module1 이라는 클래스를 불러들이는데 Module1을 찾을 수 없다는 의미의 에러 메시지였다. 분명 같은 경로에 Module1.py 라는 파일이 존재하는데 이상한 일이다. 해결 방법 이 경우 PyCharm의 소스 루트(Sources Root)를 지정해주면 된다. 프로젝트 디렉토리의 src 디렉토리를 우클릭하면 여러 메뉴가 뜬다. 그 중에 'Mark Directory as' 메뉴를 선택하고, 'Sources Root'로 선택한다. src 디렉토리가 소스 루트로..
몇 번째인지 모르겠지만 맥북과 iMac을 사용하다 운영체제를 업그레이드 한 이후 git을 사용할 때 다음과 같은 에러가 발생했다. xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun 최근에는 카탈리나(Catalina) 버전으로 업그레이드 한 이후 위 에러가 발생했다. $ git --version xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/..
가비아, 후이즈, 고대디 등의 DNS를 이용해서 커스텀 도메인을 사용할 때, 서브 도메인을 등록하기 위해서 CNAME과 A 레코드 같은 정보를 DNS 서비스 홈페이지에 등록해야한다. 둘 다 서브 도메인을 등록하기 위해 필요한 정보라는 것은 알겠는데 정확히 어떤 차이가 있는 것인지 알아봤다. DNS 인터넷을 구성하고 있는 IP 주소는 IPv4의 경우 192.168.0.1 같이 숫자로 구성된다. 이런 숫자는 아무런 의미도 없기 때문에 외우기 힘들다는 단점이 있다. 따라서 naver.com 같은 문자열로 서버 주소를 표현하게 되었다. 다만 실제 컴퓨터 통신에서는 naver.com이라는 문자열 주소를 192.168.0.1 같은 IPv4 주소로 변환해주는 서비스가 필요하다. 이런 서비스를 DNS 서비스라고 한다...
맥북이 편리한 이유중에 트랙패드가 너무 편리하기 때문이다. 맥북을 사용하는 유저들도 잘 모르는 것 중에 하나가 트랙패드의 포스 터치(Force Touch) 기능을 설정으로 변경할 수 있다는 점이다. 트랙패드를 누르면 '딸깍' 소리가 난다. 거기에서 조금 더 세게 누르면 한 번더 '딸깍'소리가 나는데, 누르는 세기에 따라서 두 단계의 클릭을 사용할 수 있는 기능이다. 중요한 점은 이 두 단계의 클릭이 약간 어색할 수 있는데, 이 두 단계의 클릭을 설정으로 끌 수 있다. '시스템 환경설정'의 '트랙패드'를 선택하면 트랙패드의 클릭 관련 설정을 조절할 수 있다. '세게 클릭 및 햅틱 피드백' 항목을 클랙해서 체크 박스를 체크 아웃시키면 두 째 클릭이 작동하지 않는다. 뿐만 아니라 '클릭' 항목의 설정을 가볍게..
HDFS Short Circuit Read 코드 테스트를 위해서 도커에 컨테이너 세팅을 하고 원격 디버거로 붙어서 보다가 Short Circuit Read 설정으로 안들어가서 찾아보니 로그에 다음과 같은 내용이 찍혀 있었다. 19/12/02 20:46:04 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 19/12/02 20:46:05 WARN shortcircuit.DomainSocketFactory: The short-circuit local reads feature cannot be used because libhad..
- Total
- Today
- Yesterday
- linux
- MacOS
- 깃허브
- 파이썬
- nf_conntrack
- pycharm
- 상추 재배기
- 청양고추
- InterlliJ
- 텃밭
- 베란다 텃밭
- monitoring
- java
- 화분
- 자바
- 하둡
- 파이참
- 화분 버리기
- okhttp
- Python
- 고추
- 리눅스
- 도커
- docker
- 베란타 텃밭
- 상추
- 지킬
- Jekyll
- GitHub
- hadoop
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |