개발/잡다개발 82

Hash Table Python

이 글의 참조본입니다. 해시 테이블을 파이썬으로 구현해본 것입니다. Hash Table implementation in Python [Data Structures & Algorithms] This article deals with implementing Hash Table using Python programming language. Hash Table is a data structure where data are stored in an associative manner (in key, value format). The key/inde… blog.chapagain.com.np key-value형태로 dictionary를 사용해서 저장할 수 있습니다. country_code = {'25': 'USA', '..

개발/잡다개발 2020.02.11

GCP Flask 배포

일단은 GCP 콘솔로 들어갑니다. https://console.cloud.google.com/home/dashboard?hl=ko&project=evocative-lodge-266710 Google Cloud Platform 하나의 계정으로 모든 Google 서비스를 Google Cloud Platform을 사용하려면 로그인하세요. accounts.google.com 그리고 나면, Computer Engine에 VM 인스턴스로 가서 인스턴스를 만들어줍니다. 만들 때 방화벽에 HTTP트래픽 허용 해줘야합니다. 그리고 난 후에, 파이썬 파일을 하나 만들어주고 from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): ret..

개발/잡다개발 2020.01.30

Python Class, Object, Instants, Method

자주 보지만 애매한 개념인 class, object, instants, object에 대해서 알아보겠습니다. 흔히들 비유하는 붕어빵 기계에 대해서 예를 들어보겠습니다. 일단을 붕어빵을 만든다고 가정합니다. 그러면 붕어빵 틀에 넣고 팥 붓고 뒤집고 이런 저런 기능을 해야 합니다. 붕어빵 틀이 Class라고 생각했을 때 뒤집기, 팥붓기 등등이 method라고 생각하시면 됩니다. 그러면 클래스에서 봣던 self라는 애와, __init__은 무엇인가? self라는 애는, 자기 자신입니다 말 그대로(물을 셀프로 드세요의 셀프) self.변수 라고 해서, class 안의 변수에 접근합니다. __init__ 이라는 애는 클래스가 생설 될 때 변수를 초기화하는 애라고 생각하시면 됩니다. 인스턴트는 a = Class 붕..

개발/잡다개발 2020.01.21

GET vs POST

흔히들 쓰는 GET과 POST에 대해 차이를 한마디로 설명하는 글이 없어서 정리해봅니다. GET은 "주세요"라고 요청하는 것 POST는 "가지세요"라고 던지는 것 이 정도로만 생각하면 될 것 같습니다. GET으로 요청하면 아래와 같이 url에 요청하는 값이 나타나면서 정보를 받아옵니다. 그렇다면, 가지세요 라는 POST를 어디서 쓸까요? 아이디와 비밀번호를 서버에 던져주고, 로그인하거나 회원가입할 때 POST를 주로 사용합니다. 아이디와 비밀번호로 로그인할 때 url에 비밀번호가 노출되면 큰일나겠죠? 그래서 POST형태로 url에 아이디와 비밀번호가 노출되지 않은 타입 POST로 요청을 합니다. 정말정말 간단한 GET POST에 대한 설명이었습니다.

개발/잡다개발 2020.01.10

도커와 쿠버네티스

핫한 도커와 쿠버네티스 개념에 대해 알아보겠습니다. (기술적으로 깊게 설명된 글은 많으니 개념만 알고 가 봅시다.) 도커란 컨테이너 기반의 오픈소스 가상화 플랫폼입니다. 이 말만 들으면 무슨 소리인가 할텐데 "컨테이너"라는 것을 주목해봅니다. 컨테이너라고 하면 아래와 같은 애가 생각이 나는데 쉽게 설명하면 저 컨테이너안에 개발환경을 때려박아서, 새로운 환경에서 세팅을 할 때 저 컨테이너 하나만 그대로 가져와주면 복잡하고 귀찮은 세팅을 할 필요없이 한큐에 가는겁니다. (다들 개발환경 세팅하다가 하루 이틀 통째로 날려본 경험이 있으시다면, 이게 얼마나 짱인지 알 수 있습니다.) 자 그렇다면 쿠버네티스라는 것도 나오는데 얘는 도대체 뭘까요 컨테이너 기반의 관리 개발 환경이라고 하는데, 뭐 도커가 있는데 이건 ..

개발/잡다개발 2019.11.09

List 와 Array

리스트(List)와 배열(Array)에 관하여 혼동하여 많이 사용하였습니다. 이 2가지의 차이가 무엇이 있는가.... 에 대해 찾아보니 너무 잘 정리해놓은 블로그가 있는데 https://wayhome25.github.io/cs/2017/04/17/cs-18-1/ 배열(Array)과 리스트(List) · 초보몽키의 개발공부로그 자바의 배열은 기능적으로 한계가 많습니다. 배열의 크기를 배열을 생성할 때 지정하는 것이나, 배열의 크기를 변경할 수 없는 것은 몹시 불편한 일입니다. 또 배열에서 설정된 엘리먼트의 개수를 알아낼 수 없는 것도 불편합니다. 그렇다고 배열이 쓸모가 없는 것은 아닙니다. 데이터의 크기가 확정적일 때 배열을 사용하는 것이 메모리나 처리속도 면에서 좋습니다. 또한 배열은 다른 데이터 스트럭..

개발/잡다개발 2019.09.10

XSS 란

XSS(Cross-site Scripting)란 무엇일까요? SQL injection와 같이 함께 고전적인 취약점 공격 방법입니다. 사이트에 스크립트를 삽입하는 방법인데 게시판에 뭐 이런 스크리트를 삽입하는 방법입니다. 자, 이런 방법을 사용하여, 쿠키나 세션 등을 탈취합니다. 다른 사용자의 쿠키나 세션을 탈취하면, 그 사용자인 것 처럼 권한을 얻어, 다양한 공격을 시도할 수 있습니다.

개발/잡다개발 2019.09.03

SQL INJECTION

SQL Injection 은 쌍팔년도부터 사용된 굉장히 오래된 해킹 기법입니다. 굉장히 원리는 간단합니다. 유저는 로그인을 할 때 ID와 Password를 사용하여, 로그인을 진행합니다. 그렇다면 로그인 할 때 사용한 ID와 Password가 당연히 DB에 저장이 되겠죠? DB로 데이터를 던질 때, 정상적인 user id 와 password를 던지는 것이 아니라 SELECT user FROM user_table WHERE id='admin' AND password=' ' OR '1' = '1'; 와 같은 쿼리문을 던져서, 이 아이디와 패스워드가 맞다고 db에서 인식하게 하여 해킹을 시도하는 방법입니다. 방어하는 방법은 처음에 로그인을 할 때, 이게 진짜 로그인 아이디와 비밀번호 form이 맞는지 검증해주..

개발/잡다개발 2019.09.02

hadoop 하둡이란

여기 귀엽게 생긴 코끼리와 함께 있는 하둡이라는 것을 알아봅니다. 여기저기 지나다니면서 하둡이라고 몇번 들어봤는데 빅데이터 분석을 할 수 있는 소프트웨어라고 합니다. 좋은 컴퓨터 하나로 모든 것을 연산하는 대신, 여러대 컴퓨터를 병렬로 이용해서 처리 속도를 올리는 분산처리 프레임워크입니다. 얘가 알아서 데이터 유실을 방지해주고, 데이터 무결성을 유지하고 등등 빅테이터 처리를 할 때 손이 많이가는 부분을 대부분 해줍니다. 항상 모든 것에는 장단점이 있죠 장점부터 볼까요 오픈소스라 공짜 저렴한 구축 비용 일부 장애가 생겨도, 모든 데이터가 손상되는 것이 아님 뭐 이런 장점들이 있는데 단점은 무엇일까요? HDFS에 저장된 데이터 변경 불가(장점이라고 할 수도 있겠네요) 세팅하기 귀찮음(전문적으로 세팅해주는 업..

개발/잡다개발 2019.08.19

비밀번호 암호화

그냥 심심해서 비밀번호는 어떻게 저장되는지가 궁금해서 써봅니다. 아이디가 : abc 비밀번호가 a1s2d3f4 라고 했을 때 서버에 비밀번호로 "a1s2d3f4" 이렇게 평문으로 저장하는 경우는 없고, 다 암호화된 값으로 저장하겠죠? 예전에는 있었다고 들었습니다... 자, 그렇다면 여러가지 비밀번호 암호화 알고리즘 같은 것들이 있을텐데, 뭐가 있을까요? 1. 단방향 해시 단방향 해시 라는 것이 있는데 "a1s2d3f4" 라는 비밀번호를 넣으면 "asdf122fasdl;vkavcj3810" 뭐 이런 것으로 변환된다고 합니다. 서버가 털린다고 하더라도, 내 비밀번호 "a1s2d3f4"가 그대로 노출되지 않습니다만 단방향 해시는 변환되는 값이 정해져있기 때문에 "asdf122fasdl;vkavcj3810"에서..

개발/잡다개발 2019.08.19