- @참고(점프 투 파이썬): https://wikidocs.net/11

 

0. 자바와 다른 특징점

- type을 선언하지 않는다. 파이썬이 변수에 저장된 값을 스스로 판단하여 자료형을 지정하기 때문이다.

특히 function 정의시 return type 이 없다.

- 주석은 한줄주석은 #, 여러줄 주석일 경우 ''' 또는 """ 로 감싼다.

 

1. 자료형

1.1. 숫자형

- 제곱연산자: **

- 몫연산자: //

자바는 int를 int로 나누면 몫이 결과로 나오지만, python 은 실수가 된다.

 

1.2. 문자열 자료형

- 여러줄 문자열: ''' 또는 """ 으로 감싼다.

예는 아래와 같다.

'''

[multiline]

''' 

* 여러줄 주석도 ''' 또는 """ 으로 감싸나 보다..

 

- 문자열, 리스트, 튜플 더하기, 곱하기가 가능하다.

- 문자열, 리스트, 튜플 인덱싱 및 슬라이싱: a[3], a[:4], a[3:-3], a[:17]

: 은 왼쪽 포함, 오른쪽 미만의 인덱스의 글자로 자른다.

 

- 문자열 포매팅: %, format 함수, f 문자열 포맷팅 3가지 방법이 있다.

>>> "rate is %s" % 3.234

# %s 가 아닌 %d또는 %f로 하게 되면 정수까지만 짤려서 나타나거나 쓸데없는 소수자리 0이 채워져서 나타내진다. 따라서 %s로 표현하는게 원형 그대로 유지하는 방법인 것 같다.

 

>>> I eat {0} apples. so I was sick for {1} days.".format(3, "three")

# 왼쪽 정렬은 :을 붙인 후 <10, 오른쪽 정렬은 :을 붙인 후 >10, 가운데 정렬은 :을 붙인 후 ^10 으로 표현할 수 있으며, :=^10 과 같이 =으로 공백을 채울 수도 있다.

예로, {0:<10}, {0:>10}, {0:^10}, {0:=^10} 과 같다.

 

>>> f'나의 이름은 {name} 입니다. 나이는 {age} 입니다.'

* 문장을 변수에 대입해서 사용하는 방법은 어떻게 사용할 수 없는 방법 같다..

표현식이 사용가능해서 {age+1}, d = {'name':'홍길동', 'age':30} 일 때 {d["name"]}과 같이 사용 할 수 있다.

 

- 문자열, 리스트, 튜플(join 제외) 관련 함수

>>> len(a) # a 길이
>>> a.count('b') # 'b' 문자 개수 

>>> a.index('b') # 'b' 문자의 첫번째 인덱스, 문자열에서는 a.find('b') 가 추가로 존재한다.

# a.index('b') 는 문자가 없는 경우 -1 이 아닌 ValueError를 던진다.

>>> ",".join('abcd') # 'a,b,c,d' 를 결과로 내며, ['a', 'b', 'c', 'd']를 인자로 넣어도 같은 결과값을 가진다.

- 문자열 관련 함수

>>> a.upper(), a.lower(), a.strip() # a.lstrip(), a.rstrip() 이 존재한다.

>>>  a.replace("Life", "Your leg")

>>> a.split() # 인자값이 없으면 공백을 기준으로 문자를 나눈다.

 

- 형변환: str(2), int('2'), float('3.21'), chr(91),  ord('a')

# ord 는 문자를 int(아스키코드값)으로 변환한다.

 

1.3. 리스트 자료형

- 리스트 수정, 삭제

>>> a[2] = 4 # 인덱스 2 의 값을 4 로 수정한다.
>>> del a[2:] # 인덱스 2 이상의 요소를 삭제한다.

- 리스트 관련 함수

>>> a.append([5, 6])
>>> a.sort() 또는 a.reverse() # 오름차순 정렬 및 뒤집기에 대한 함수이다.
>>> a.insert(0, 4) # 0의 위치에 4 요소를 삽입한다.
>>> a.remove(3) # 첫번째로 나오는 3 요소를 삭제한다.
>>> a.pop()

pop()은 딕셔너리에서도 사용 가능하다.

 

- 형변환: str list -> int list

data = "4546793"
nums = list(map(int, data)) # [4, 5, 4, 6, 7, 9, 3]

 

1.4. 튜플 자료형

- 튜플은 그 값을 바꿀 수 없는 리스트가 필요한 경우 사용한다.

- 인덱싱, 슬라이싱, 더하기, 곱하기, 길이 함수 등을 사용할 수 있다.

- 튜플의 예는 아래와 같다.

>>> t1 = ()
>>> t2 = (1,) # 1 개 요소를 가지면 뒤에 , 를 붙이지 않는 경우 (1) = 1 로 인식된다.

 

1.5. 딕셔너리 자료형

- java 의 Map 과 같은 자료형이다.

- 딕셔너리 예는 아래와 같다.

>>> dic = {'name':'pey', 'phone':'0119993323', 'birth':'1118'}

- 추가 / 삭제 / 조회

>>> a[2] = 'b' # key가 2 이고 value 가 'b' 인 딕셔너리 쌍이 추가된다.
>>> del a[1] # key가 1인 딕셔너리 쌍이 삭제 된다.
>>> a[2] # key 가 2 인 딕셔너리의 value를 얻는다.

- 딕셔너리 관련 함수

>>> a.keys() # key 리스트
dict_keys(['name', 'phone', 'birth'])

>>> a.values() # value 리스트
dict_values(['pey', '0119993323', '1118'])

>>> a.items() # key, value 쌍 리스트
dict_items([('name', 'pey'), ('phone', '0119993323'), ('birth', '1118')])

# dict_* 객체는 list로 변환하지 않더라도 반복 구문을 실행할 수 있다.

>>> a.clear() # key: value 쌍 모두 지우기
>>> a.get('foo', 'bar') # a 에 'foo' 라는 키 값이 없는 경우 'bar'를 돌려준다. 
# a.get('foo')는 값이 없는 경우 None 을 돌려주지만, a['foo']는 KeyError를 내뱉는다.

>>> 'name' in a # 해당 key 가 딕셔너리 안에 있는지 조사. 결과는 True 또는 False

- 형변환: list(a), tuple(a), set(a)

 

1.6. 집합 자료형

- 집합 자료형은 v2.3 부터 지원하는 자료형으로 예시는 아래와 같다.

>>> s1 = {1, 2, 3} # set("Hello") 는 {'e', 'H', 'l', 'o'} 의 결과를 낸다.

 

- 교집합, 합집합, 차집합 연산자: &, |, -

- 집합 자료형 관련 함수

>>> s1.add(4) # 4 라는 요소를 추가한다.
>>> s1.update([4, 5, 6]) # 여러 요소를 추가한다.
>>> s1.remove(2) # 2 라는 요소를 제거한다.

 

- type 조사하기

>>> type(a)

 

1.7. 불 자료형

- 자료형의 참, 거짓: "", [], (), {}, 0, None은 거짓이다.

>>> a = [1, 2, 3, 4]
while a:
	print(a.pop())
# 4, 3, 2, 1 을 한줄 씩 순서대로 출력한다.

- 불 연산: bool(a)

 

1.8. 변수

- 메모리 주소 찾기 / 동일 객체 판별

>>> id(a) # a 변수가 가리키는 메모리의 주소를 나타낸다.
>>> a is b # a, b 가 동일한 객체를 가리키고 있는지 판단한다.

 

- 복사

# a 와는 다른 객체인 내용물이 같은 b 를 만들기
>>> b = a[:] 
>>> b = copy(a) # from copy import copy 가 선행한다.
>>> b = a.copy()

 

- 서로 바꾸기

>>> a, b = b, a # 튜플 자료형을 이용한 방법이며, list를 이용할 수도 있다.
블로그 이미지

uchacha

개발자 일지

,

@참고: https://song8420.tistory.com/138

1. Fetch from Upstream 한다. 

2. Synchronize Workspace 로 충돌난 (빨간 <-> 화살표로 표시됨) 파일을 원하는 방향으로 수정해준다.

3. 충돌난 파일을  Add to Index 한다.

4. Git 으로 가서 프로젝트에 대해서  Pull을 진행한다.

 

블로그 이미지

uchacha

개발자 일지

,

- @참고: https://stackoverflow.com/questions/35886053/maven-dependency-showing-up-as-a-folder-inside-maven-dependencies-folder/35886103

 

Maven Dependency showing up as a folder inside Maven Dependencies folder

I have 2 projects. Both are Maven based Java projects. Project2 has Project1 as a dependency in it's pom.xml file, however when I look inside the Maven Dependencies folder in eclipse, I notice that

stackoverflow.com

 

상황

pom.xml에 dependency 를 걸어준 jar가 Maven dependencies를 확인해보면 folder로 보이면서 war로 말려고 할 때 lib 에 포함되지 않았다.

 

원인

eclipse에서 dependency가 걸리는 jar 가 workspace에 존재하는 경우 이런 문제가 생기는 것 같다.

 

해결

Maven dependencies 의 오른쪽 클릭 > Properties for Maven Dependencies  에서 Maven Project settings 로 들어간다 > Resolve dependencies from Workspace projects 체크 박스를 해제한다.

 

블로그 이미지

uchacha

개발자 일지

,

- @참고: http://www.lazenca.net/display/TEC/01.The+basics+technic+of+Shellcode

블로그 이미지

uchacha

개발자 일지

,

- @출처: https://diana-lab.tistory.com/3

1. 크론 설정하기(내 경우에는 관리자 권한으로 실행하지 않았을 시 등록이 되지 않았다.)

sudo crontab -e

2. 크론 작업 등록하기(위 명령어로 켜진 에디터에 다음 내용을 입력한다.)

0 11 * * * /usr/local/bin/python3.9 /Users/[서버이름]/servers/lunch_menu/lunch_menu.py
#[시간 설정] [파이썬이 설치된 절대경로] [실행할 파이썬의 절대경로]
#[시간 설정] = 분(0~59) 시(0~23) 일(1~31) 월(1~12) 요일(0일요일~7일요일)

* python 위치 찾기

which python3.9

3. 설정된 크론 확인하기(관리자명령어로 등록된 크론은 관리자명령어로 리스트를 봐야 보인다.)

sudo crontab -l

4. 크론 로그 기록하기(>> 누적하여 기록한다, > 갱신하여 기록한다.)

0 11 * * * /usr/local/bin/python3.9 /Users/[서버 이름]/servers/lunch_menu/lunch_menu.py >> /Users/[서버 이름]/servers/lunch_menu/test.log 2>&1
#[시간 설정] [파이썬이 설치된 절대경로] [실행할 파이썬의 절대경로] >> [로그 파일의 절대경로] 2>&1
블로그 이미지

uchacha

개발자 일지

,

- @참고: https://minnit-develop.tistory.com/15

1. homebrew를 이용해 Python 최신버전 설치하기

brew install python

2. 설치 위치 확인하기

ls -l /usr/local/bin/python*

3. 파이썬 버전 변경하기(3.9 부분을 변경하고 싶은 python 버전으로 변경한다.)

ln -s -f /usr/local/bin/python3.9 /usr/local/bin/python

4. 확인하기(터미널을 끈 후 다시 접속하여 확인하거나 새 탭을 킨다.)

python --version
블로그 이미지

uchacha

개발자 일지

,

- @참고: https://countryxide.tistory.com/41

 

M1, RC, GA 란?

스프링의 릴리즈 버전들을 보고 있노라니 RC, GA, M1(혹은 2, 3) 등의 접미사가 달리는 것을 볼 수 있다. 각각이 뜻하는 바를 찾아보았다. M1: Milestone 1 프리 알파 단계에 있는 한 종류. 특정한 집합

countryxide.tistory.com

 

M1: Milestone 1

프리 알파 단계에 있는 한 종류. 특정한 집합의 기능이 포함되며 기능이 완성되자마자 공개

 

RC: Release Candidate

마지막 제품이 될 가능성이 있는 베타 버전으로, 상당한 버그가 나타나지 않으면 출시할 준비가 되었음을 의미

 

GA: General Availability

필요한 모든 상업화 활동이 완료되어 물리 매체를 통해 시장에서 이용할 수 있게 됨을 의미

블로그 이미지

uchacha

개발자 일지

,

- @참고: m.blog.naver.com/PostView.nhn?blogId=marnet&logNo=220482280396&proxyReferer=https:%2F%2Fwww.google.com%2F

 

메이븐 로컬 jar 추가하기

메이븐을 편하면서도 그지같다. 호불호가 극명하게 갈리는 듯... 메이븐에서는 .jar 파일을 추가하는 것도 ...

blog.naver.com

- @maven 빌드시 로컬 jar 추가 방법: ykjang.github.io/devlog/2018/07/07/devlog-java-maven%EA%B8%B0%EB%B0%98_lib%EA%B4%80%EB%A6%AC/

 

Project에 local jar를 dependency 거는 법

1. pom.xml 에 project.lib.path 추가

<properties>
   <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
   <project.lib.path>${project.basedir}/src/main/webapp/WEB-INF/lib</project.lib.path>
</properties>

2. 추가하고자 하는 dependency 추가

<dependency>
    <groupId>com.galaxia</groupId>
    <artifactId>billgateAPI</artifactId>
    <version>1.0</version>
    <scope>system</scope>
    <systemPath>${project.lib.path}/billgateAPI.jar</systemPath>
</dependency>

groupId, artifactId, version은 원하는 대로, scope, systemPath만 잘 확인해준다.

 

Project에 local jar를 packaging 하는 법

- pom.xml war plugin에 다음을 추가

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>

    <configuration>
        <webResources>
            <resource>
                <!-- 로컬 lib파일 경로 -->
                <directory>${project.basedir}/local-repo</directory>
                <includes>
                    <include>추가할라이브러리.jar</include>
                    ...
                    ...
                </includes>
                <targetPath>WEB-INF/lib</targetPath>
            </resource>
        </webResources>
    </configuration>
</plugin>

 

블로그 이미지

uchacha

개발자 일지

,