본문 바로가기

전체 글98

구글 애드센스 광고 클롤러 오류 얼마전 카카오 데이터 센터 화재로 인해 구글 광고가 끊겼네요... 제 블로그에서 수익이 날 거라는 기대는 하지 않지만 그래도 찜찜하잖아요?? 애드센스 갔는데 호스팅 서버 과부하라고 하는데 호스팅 서버면 카카오를 말하는건데 이거는 어찌할 도리가 없네요..... 아직 100% 정상화가 안된건지 뭐가 뭔지 잘 모르겠네요ㅋㅋㅋ 그냥 가만히 기다리면 될까요? 2022. 10. 21.
[파이썬 GUI] tkinter 4(버튼 사용하기/버튼의 기능 만들기) 이번에는 GUI에서 특정 기능이 발휘 될 수 있는 버튼 위젯을 사용하는 방법을 알아보겠습니다. 1. 버튼 기본 사용방법 2. 버튼 속성 3. 버튼을 이용한 Label 위젯의 text변경 1. 버튼 기본 사용방법 바로 코드를 통해서 알아보겠습니다. from tkinter import * def but(): print("기능 실행") gui = Tk() gui.title("버튼 사용하기") gui.geometry("400x300+300+300") # 기본 사용법 Button(gui, text="버튼이당", command=but).pack() gui.mainloop() 이 코드의 실행 화면입니다. 버튼을 누르면 콘솔 화면에 다음과 같이 나타납니다. 코드 설명입니다. Button(gui, text="버튼이당",.. 2022. 10. 21.
[티스토리] 현재 카카오 오류 상황(스킨 편집기능 없음/강제적 모바일 페이지 전환) 15일 사고가 터진 이후로 사흘이 지났습니다. 아직도 정상화가 되지 않았습니다. 현재 상황은 1. 티스토리 스킨 편집기능 없음 원래 이 부분에 스킨 편집 기능이 있어야 하는데 지금은 레이아웃 페이지 밖에 존재하지 않습니다. 아마 아직 복구가 안된 것 같습니다... 언제 쯤 복구가 완료될까요? 참으로 답답합니다.. 아 참고로 모바일 환경에서는 관리자 페이지에 접속을 할 수 없는데요 접속할 수 있는 방법이 있습니다. 우선 티스토리 홈페이지로 들어가야합니다. 거기 들어가다 보면 우측 상단에 자신의 블로그 아이콘이 있습니다. 저기 누르면 톱니바퀴 모양으로 관리자 페이지에 접속할 수 있습니다. 2. 티스토리 접속 시 무조건 모바일 페이지로 주소 변환 모든 블로그가 이러는지는 잘 모르겠습니다만. 다른 티스토리 블로.. 2022. 10. 18.
2022.10.15 데이터센터 화재로 인한 카카오 계열 서비스 사용 중단 사태 요번 카카오의 사태를 보면서 정말 답답했습니다. 제가 네트워크 분야를 전공하지는 않았지만 아주 조금은 공부해본 적이 있습니다. 한 개의 데이터센터가 화재가 발생했다고 해서 전국적으로 모든 카카오 계열 서비스가 중단되는 사태가 발생했다는 것이 믿을 수가 없습니다. 카카오와 같은 거대 플랫폼 회사가 화재를 예상하지 못한 일이라고 말하는 점, 서버 3만2천대가 전력이 다운돼는 유래없는 일이라 대처할 수 없었다는 말하는 점, 이중화가 되어있기 때문에 복구가 빨리 가능하다고 말한 점, 등등 뉴스에서 들려오는 말들이 저는 너무 어이가 없었습니다. 이 사태에 대해서 그리고 이 사태 전 상황에서도 답답한 마음들이 있었습니다. 4가지 주제를 가지고 답답한 심정을 이야기해보려 합니다. 1. 카카오는 무엇을 이중화 한 것인.. 2022. 10. 18.
[파이썬 GUI] tkinter 3(위젯을 화면에 배치하는 방법, pack, grid, place) tkinter에서 위젯을 나타내게 할 때 사용되는 3가지 메소드가 있습니다. 1. pack method 2. grid method 3. place method 1번 pack method는 절대적인 위치에 등장시키고 싶을 때 사용합니다. 예를 들어 300x400, 또는 이와 다른 화면 크기에서 위젯을 맨 위, 맨 아래 등에 배치하고 싶을 때는 pack method를 사용합니다. 이 메소드는 내가 어디에 정확하게 배치하고 싶을 때는 부정확할 가능성이 있습니다. 2번 grid method는 엑셀과 같다고 생각하면 됩니다. 엑셀과 같이 격자를 위젯의 크기에 맞게 자동으로 설정이 됩니다. 자동으로 격자가 생성되기 때문에 위젯의 크기가 들쭉 날쭉한다면 사용하기 곤란할 수도 있습니다. 3번 place는 좌표를 이용하.. 2022. 10. 14.
[파이썬 GUI] tkinter 2(Label을 이용하여 글자, 이미지 표현하기) GUI에서 글자를 나타내게 하고 싶으면 Label class를 사용해야 합니다. Label class는 글자 뿐만 아니라 이미지도 나오게 할 수 있습니다. 오늘 알아볼 주제입니다. 1. Label class 기본 사용법 2. Label 나오게 하기 3. Label에서 사용하는 속성들 4. 이미지 나오게 하기 1. Label class 기본 사용법 from tkinter import * gui = Tk() gui.title("Label 사용하기") gui.geometry("400x300+300+300") gui.resizable(False, False) # Label 사용법 1 Label(gui, text="string") gui.mainloop() Label(gui, text="string") -> gu.. 2022. 10. 14.
[파이썬 GUI] tkinter 사용법 1(화면 만들기, 화면 중앙에 배치하기) 파이썬으로 GUI 즉, 프로그램 화면을 만드는 방법을 알아보겠습니다. PyQt도 있지만 tkinter가 개인적으로 더 쉽게 느껴졌습니다. 기초적인 과정부터 tkinter와 소켓 통신을 통해 채팅창 만드는 과정까지 나가보겠습니다. 우선 tkinter 모듈을 import 해야합니다. tkinter 모듈은 파이썬 설치 시 기본으로 제공됩니다. 혹시나 없다면 pip install tk로 설치해야 합니다. 목차 1. 화면 만들기 2. 창의 최대/최소 사이즈 3. 줄이기 가능, 불가능 4. 프로그램 화면을 중앙에 배치하기 1. 화면 만들기 코드를 통해서 알아보겠습니다. from tkinter import * gui = Tk() gui.mainloop() from tkinter import * -> tkinter 모.. 2022. 10. 13.
[Arduino] #3 analog 신호 입력과 출력 지난 번 digital 신호를 출력해보았습니다. 단순히 1로 켜주면 전기가 들어왔습니다. 이번 시간에는 아날로그 신호의 입력과 출력을 알아보겠습니다. https://www.youtube.com/watch?v=VeVC0f-zAq8 개념을 먼저 알아보겠습니다. 1. 아날로그 신호? 2. PWM 3. 가변저항 1. 아날로그 신호 디지털 신호는 0과 1로 전기를 주거나 안 줄수 있었습니다. 아날로그 신호는 이와 다르게 여러 값을 가지고 있습니다. 0 또는 500 또는 1023과 같이 말이죠 그래프로 나타내 보면 사인, 코사인 함수와 비슷합니다. 아두이노는 아날로그 신호를 0 ~ 255까지 출력이 가능합니다. 이 값으로 LED의 불빛의 세기를 조절 할 수 있습니다. 그런데 아두이노는 아날로그 신호를 출력할 수 없.. 2022. 10. 9.
[100명의 죄수 문제] 파이썬으로 확률 알아보기 얼마전 재미있는 영상을 보았습니다. 내용은 이러합니다. 100의 죄수가 있는 교도소의 교도소장이 1~100까지의 상자 속에 무작위로 자신의 번호가 적힌 쪽지가 있다. 죄수들은 50번의 기회 중 자신의 번호가 적힌 쪽지를 찾으면 탈출할 수 있다. 만약 단 한명이라도 50번 안에 쪽지를 찾지 못하면 전원 사형한다. 단, 죄수들을 게임이 시작 전 작전회의를 할 수 있다. 또한 한 명이 들어가고 다른 한 명이 들어올 때 교도관들이 처음 상태로 말끔히 되돌려서 이전 죄수가 표식을 남겼다해도 알 수가 없다. 이때 100명의 죄수들이 통과할 가장 높은 확률은? 해당 유튜브에서의 해법은 이러합니다. 모든 사람이 자신의 번호가 적힌 상자를 열어본다. 그 상자에 있는 쪽지 번호가 자신의 번호이면 통과이고 아니면 그 번호가.. 2022. 10. 7.
[Arduino]아두이노 #2 digitalWrite 함수로 전기를 주자 LED에 전기를 주면 불이 켜지게 됩니다. 이전 포스팅에서는 아두이노의 5V 핀에 선을 연결하였기 때문에 계속 켜졌습니다. digitalWrite 함수로 핀을 조작하면 전기를 주었다 주지 않을 수 있습니다. https://www.youtube.com/watch?v=bxOGu4wi_1I&list=PLT3wBGSbC9DzAfxuzxItvRcMNDsyEuZro&index=2 먼저 선행으로 알아야 할 점들이 있습니다. 1. Arduino 보드 정보 2. Arduino 프로그램 설치 3. 아두이노가 사용하는 programming language 4. code 구조 5. pinMode 함수, digitialWrite 함수 1. Arduino 보드 정보 아두이노 보드는 종류가 여러가지 있습니다. 그 중에서 영상에 사.. 2022. 9. 16.
[Arduino] 아두이노 #1 옴의 법칙과 LED를 켜보자! 아두이노를 딱 처음 사고 회로나 간단한 센서 부품을 연결하려고 보면 어떻게 해야하는지 잘 이해가 안가는 경우들이 종종 있습니다. 그래서 이번에 키트를 사서 간단하게 LED를 켜보는 실습을 통해 전기가 어떻게 통하는 건지 이해해보려 합니다. 먼저 이 점을 반드시 기억해야합니다. 1. 전선끼리 닿으면 전기는 통한다. 2. 전기는 +극에서 -극으로 흐른다. 3. 그 흐름에 맞춰서 부품을 장착해야한다. 1번 설명 고무 장갑끼리는 전기가 통하지 않죠? 당연한 이야기 입니다. 후에 더 공부하면 알겠지만 전선도 규격이란 것이 존재합니다. 하지만 그것은 나중 문제이고 키트를 처음 샀다면 전선들이 있을 텐데 그냥 걔네 끼리 닿으면 전기가 통한다는 이야기 입니다. 2번 설명 좀더 자세히 말해서 전류의 흐름이 +극에서 -극.. 2022. 9. 9.
[보안] 2. 우분투에 파이썬 설치(vscode 설치) 이번 시간에는 우분투에 vscode를 이용하여 파이썬을 설치해보도록 하겠습니다. 기본적으로 text mode가 아니라 GUI mode이기 때문에 .deb 파일을 다운받아 설치하겠습니다. 1. vscode 설치 우분투에서 https://code.visualstudio.com/docs/setup/linux 에 접속하여 '.deb package (64-bit)'를 클릭하면 설치파일을 다운받을 수 있습니다. download 디렉터리에 가면 다운 받은 파일이 있습니다. 아래의 명령어를 다운로드 디렉터리로 이동한 후 실행합니다. 해당 명령어는 .deb 파일을 설치하는 명령어입니다. sudo dpkg -i [파일명] 설치가 완료되었으면 application 목록에 보면 vscode 아이콘이 존재할 것입니다. 2. v.. 2022. 8. 25.
[보안] 1. 우분투 설치 얼마 전 책을 하나 구입했습니다. 그 책에서 말하길 보안이라는 분야가 어렵게만 느껴지는 이유를 설명해주고 있었습니다. 상당히 공감이 가는 글이였습니다. 웹 보안만 하더라도 수 많은 프레임워크, 프로그래밍 언어, 웹에서 동작되는 다양한 행위 등등 뭐 하나 세밀하게 들어가면 끝이 안보이고 또 연결되어 있는 분야에 대해서 또 공부해야하는 그런 막막함이 많이 느껴졌습니다. 그 책을 통해서 결국 보안도 매커니즘이 있으니 이 것을 이해해야 함을 말하였습니다. 그래서 제 기준에 보안에 대해서 새롭게 다가왔습니다. beebox, metasplotable과 같이 웹 보안을 테스트 해볼 수 있는 곳도 있지만 제 스스로 간단한 페이지를 구축해보고 실습해볼 페이지를 만들어보려고 합니다. 그래도 왠만큼 이해하고 있는 파이썬을 .. 2022. 8. 18.
호기심 파이썬(함수 사용법 2탄 : **kargs, 나를 다시 호출하는 재귀함수) 이번에는 매개변수로 딕셔너리 형태로 전달하는 **kargs와 나를 다시 호출하는 재귀에 대해서 알아보겠습니다. 1. 키워드와 값을 전달하는 **kwargs 키워드와 함께 값을 함수로 딕셔너리 형태로 전달하는 매개변수입니다. 예제와 함께 간단한 사용법을 알아보겠습니다. def function2(**kwargs): print(kwargs) function2(pi=3.141592, sqrt2=1.414) 결과 값은 아래와 같습니다. {'pi': 3.141592, 'sqrt2': 1.414} 함수의 매개변수 부분에 **kwargs의 **은 키워드와 값을 전달해주는 기능을 의미하며 뒤의 kwargs는 단순 변수 이름입니다. 그러므로 이름은 아무거나 해도 되지만 **은 유지해야 합니다. 매개변수를 총 정리해보겠습니.. 2022. 7. 3.
호기심 파이썬 : 코딩을 공부할 때 알아두면 좋은 것들(1) 보통 프로그래밍 언어라고 하는데 실제 배워보면 진짜로 언어를 배우는 듯한 느낌이 강합니다. 언어이긴 한데 컴퓨터에게 지시를 내리는 것이죠. 일방적인 언어입니다. 우리가 알고 있는 영어가 가득한 코드도 사실 컴퓨터는 알지 못합니다. 컴퓨터는 0과 1로 이해하고 있기 때문입니다. 우리가 아는 코드는 몇 개의 번역기를 돌려서 0과 1로 변하게 됩니다. 이 번역기의 특징은 거꾸로 번역은 불가능합니다. 비유하자면 이렇습니다. "사과"라는 단어가 코드이고 코드를 번역하면 컴퓨터가 알아들을 수 있는 말인 "apple"이라고 해보겠습니다. 이것을 거꾸로 번역하면 "붉은색을 가진 과일" 정도로 바뀐다는 말입니다. 즉, 토씨 하나하나 똑같이 변하지는 않고 코드의 특징은 알 수 있을 정도로는 번역이 가능하다는 말이 되겠습니.. 2022. 7. 2.
파이썬 : 올림/내림/반올림(ceil/floor/round) 파이썬에서 올림 내림 반올림을 하는 법에 대해서 알아보겠습니다. 수학적으로 올림 내림 반올림의 의미는 잘 아실것이라 생각합니다. 보통 이것들을 사용할 때 소수점 n번째 자리 버림, 십의 자리 올림 등등 여러 가지로 사용이 가능하지만 아래에 서술할 올림 내림 반올림 함수들은 소수점에 대해서만 적용이 됩니다. 1. 올림 math 모듈의 ceil 함수를 사용해야 합니다. 소수점 첫째 자리를 올려 정수로 만듭니다. 사용법 math.ceil(숫자) # 예제코드 import math # math 모듈 불러옴 num1 = 3.141592 print(math.ceil(num1)) num1 변수를 올림하면 4가 됩니다. 2. 내림 math 모듈의 floor 함수를 사용해야 합니다. 소수점 첫째 자리를 내려 정수로 만듭니.. 2022. 7. 1.
파이썬 마인크래프트 : 파이썬과 마인크래프트 1.19버전 연동 방법 파이썬과 마인크래프트를 서로 연결하는 방법을 알아보겠습니다. 당연한 이야기겠지만 자신의 마인크래프트 계정이 있어야 합니다. 파이썬 연동에 필요한 항목 1. 마인크래프트 2. 파이썬 설치 3. 자바 jdk 설치 4. 사용할 마인크래프트 버전과 맞는 spigot 파일 5. 파이썬을 실행 시킬 raspberryjuice 파일 1. 마인크래프트 마인크래프트는 이미 준비가 되었다고 가정하겠습니다. 2. 파이썬 설치 https://www.python.org/ 파이썬 공식 페이지입니다. 여기서 download에 들어가서 설치하면 됩니다. 단, 주의하실 점은 path 추가 체크박스는 반드시 체크하고 넘어가시길 바랍니다. 나중에 곤란한 일이 생길 수도 있습니다. 3. 자바 jdk 설치 https://www.java.co.. 2022. 6. 29.
파이썬 마인크래프트 : 파이썬을 멀티로 사용하는 방법 얼마전 파이썬으로 마인크래프트가 가능하다는 점을 알고 멀티로도 사용이 가능한지 테스트를 해보았는데 다른 사용자들도 사용이 가능하였습니다. 저는 대부분이 사용하는 스피곳을 이용하여 서버를 열고 라즈베리주스를 통해서 파이썬과 연동시키는 방법으로 멀티 서버를 열었습니다. 연동 과정은 상세히 추후 올리겠습니다. 보통 player class를 많이 사용하는데 entity class를 사용하면 됩니다. 아래 코드는 일반적으로 내가 가고 싶은 방향을 갈때 쓰는 코드입니다. player class 함수를 사용한 것입니다. from mcpi.minecraft import Minecraft # 파이썬과 마인크래프트의 각 축의 괴리값 X_AXIS = 240 Y_AXIS = -78 Z_AXIS = -208 mc = Minec.. 2022. 6. 22.
파이썬 마인크래프트 : 플레이어가 바라보는 방향 마인크래프트에서 F3키를 누르면 대표적으로 위치 정보와 바이옴 정보 등등의 현재 장소에 대한 정보를 표시해줍니다. 이번에는 플레이어가 바라보는 방향을 파이썬 코드로 나타내 보겠습니다. 이때 사용하는 함수는 getDirection 함수입니다. 플레이어가 바라보는 방향을 숫자로 돌려줍니다. 다음의 코드를 실행해보길 바랍니다. from mcpi.minecraft import Minecraft import time mc = Minecraft.create() # 서버와 연결 while True: pos = mc.player.getDirection() # 내가 보는 방향을 벡터로 알려줌 x = round(pos.x, 3) y = round(pos.y, 3) z = round(pos.z, 3) if 0.90 2022. 6. 17.
파이썬 마인크래프트 : 텔레포트 GUI만들기 이전 포스팅에서 다룬 텔레포트와 tkinter 모듈을 사용하여 GUI 창을 통해 마인크래프트의 텔레포트 기능을 만들어보겠습니다. from tkinter import * from mcpi.minecraft import Minecraft X_AXIS = 240 Y_AXIS = -78 Z_AXIS = -208 mc = Minecraft.create() # 서버와 연결 def tp(): """원하는 좌표로 이동""" # x = int(input_x.get()) # y = int(input_y.get()) # z = int(input_z.get()) xyz = [] for val in range(3): # 각 좌표값을 받아옴 temp = int(input_list[val].get()) xyz.append(temp.. 2022. 6. 17.
파이썬 마인크래프트 : player 관련 함수 마인크래프트와 파이썬의 연동은 차후 글을 올리도록 하겠습니다. 마인크래프트에서 player 관련 함수들을 살펴보겠습니다. from mcpi.minecraft import Minecraft mc = Minecraft.create() # 서버와 연결 # 정수 형태 플레이어 좌표 pos_integer = mc.player.getTilePos() print(pos_integer) # 실수 형태의 플레이어 좌표 pos_float = mc.player.getPos() print(pos_float) 위 코드에 대한 실행 결과입니다. 실제 마인크래프트의 좌표를 살펴보겠습니다. 출력된 좌표와 실제 마인크래프트간 차이가 있습니다. 출력된 좌표 - 미지수 = 실제 좌표 이 계산대로 미지수를 구해보겠습니다. 7 - x = -.. 2022. 6. 16.
호기심 파이썬(함수 1탄 : 함수 만들기, 여러 개 입력받기*args) 이번에는 함수에 대해서 알아보겠습니다. 함수는 수학시간에 했던 함수의 개념과 동일합니다. 수학에서의 함수는 아래 그림과 같이 어떠한 값을 넣으면 결과 값이 튀어나오는 구조입니다. 이와 같은 방식으로 프로그래밍의 함수로 마찬가지 입니다. 함수의 구조를 살펴보겠습니다. def function_name(parameter1 , parameter2 ... ): 함수 호출 시 작동할 코드 return 반환하고 싶은 값 def는 definde의 약자입니다. function_ name 은 함수 이름을 작성하는 부분입니다. parameter는 함수 호출 시 함수로 전달할 매개 변수 입니다. return은 함수를 종료하고 함수를 실행한 값을 돌려줍니다. 1. 함수의 기본 사용법 매개변수와 return은 필요에 따라 사용할.. 2022. 5. 13.
호기심 파이썬 ( 변수 이름 만들기 ) 변수 이름을 만들 때에도 규칙이 있습니다. 만약 한 반에 같은 이름이 여러명 있다면 누군가 이름을 부를 때 어떤 친구의 이름을 부르는 것인지 혼란이 올 것 입니다. 그래서 변수의 이름은 독특해야(unique) 합니다. 첫 번째 규칙 : 변수의 이름은 독특해야 한다. 만약 변수의 이름이 아래와 같을 때 a=1 b=2 ab=3 C=4 첫 번째 규칙에 따라 독특하긴 하지만 어떠한 용도로 사용되는지 구분이 가지 않습니다. 변수는 저장된 값의 의미를 담고 있는 것이 훨씬 알아보기 편리합니다. name = "코딩" age = 20 과 같이 특별한 의미도 지니고 있다면 이후에 코드를 보아도 이해하기 쉽습니다. 두 번째 규칙 : 변수는 저장된 값에 대한 의미를 가지면 좋다. 이 후의 규칙들은 특별히 설명까지는 필요하지.. 2022. 5. 12.
호기심 파이썬(반복문 : while문) 파이썬은 특정 범위를 반복 시킬 수 있는 for 문과 조건에 따라 반복 시킬 수 있는 while 반복문이 있습니다. 이 while 반복문의 특징은 조건이 참이면 반복을 실행하고 조건이 거짓이 되면 반복문을 중단하는 특징이 있습니다. 또한 모든 for문은 while 반복문으로 변환이 가능하지만 while 반복문은 for문으로 변환 될 수도 아닐 수도 있습니다. 이는 for문의 특징 때문인데 특정 범위만을 반복 시킬때만 사용가능하기 때문입니다. while 반복문의 구조를 살펴보겠습니다. while (조건식): --- ⓐ 반복시킬 문장 --- ⓑ 굉장히 심플하게 되어있습니다. 반복의 순서는 1. ⓐ에서 조건식의 참 거짓 여부 2. ⓑ ⓐ조건이 참이면 반복시킬 문장 실행 3. 다시 ⓐ조건 검사 4. ⓑ ⓐ조건이.. 2022. 5. 9.