전체 글 195

list 에서 Queue로 옮기기

이 이슈를 접한 것은, 제가 쓰던 프로그램에서 os.listdir을 사용하였기 때문입니다. os.listdir을 사용했을 때 deque를 사용하는 방법은 다음과 같습니다. from collections import deque dq = deque(os.listdir('.')) 하지만 멀티 쓰레드 애플리케이션의 경우에는 deque보다는 queue.Queue를 사용하는게 좋다고 말했습니다. 하지만 queue.Queue(os.listdir('.')) 는 통용되지 않습니다. 그럼 직접 옮겨야 되는데, 다음 참고할 만한 레퍼런스가 있습니다. stackoverflow.com/questions/21639888/is-it-possible-to-convert-list-to-queue-in-python/41581928 im..

Python 2021.03.09

Cv2 를 이용해서 multiple 이미지 crop하고 나머지 mask 하기

저번시간의 심화 입니다. 만약 crop하고 싶은 roi가 한 개가 아니면 어떡할까요? import numpy as np import cv2 image = cv2.imread('download.jpg') mask = np.zeros((image.shape[0], image.shape[1])) # roi 정리 시작 roi = "0,0,300,0,300,300,0,300_300,300,600,300,600,600,300,600" roi_list = roi.split("_") print(roi_list) croplist = [] for r in roi_list: crop = [] cl = r.split(",") for i in range(0, len(cl), 2): crop.append([int(cl[i]), ..

Cv2 를 이용해서 이미지 crop하고 나머지 mask 하기

이미지 프로세싱을 하다보면 cropping을 할 때가 종종 있습니다. cropping이란, 잘라내는 걸 뜻합니다. 그럼 큰 사이즈의 이미지가 작은 사이즈가 되는, 잘라지기가 시행됩니다. import numpy as np import cv2 image = cv2.imread('download.jpg') y=0 x=0 h=500 w=500 crop = image[y:y+h, x:x+w] cv2.imshow('Image', crop) cv2.waitKey(0) ~ 하지만 이걸 사이즈를 그대로 유지한 채, 그 부분의 이미지만 보이고, 나머지 부분은 mask, 즉, 검은색으로 칠하는 건 어떻게 할 수 있을까요? 이런 식의 cropping은 특정한 부위에서만 이미지 프로세싱이 필요할 때 필요합니다 import nu..

Ubuntu 여러 개의 파이썬 관리하기

hackersandslackers.com/multiple-versions-python-ubuntu/ Managing Multiple Versions of Python on Ubuntu Easily install and manage multiple versions of Python on Ubuntu 18.04 or older. hackersandslackers.com 오늘은 우분투에서 여러개의 파이썬 버전을 관리하는 방법에 대해서 알아보도록 하겠습니다. 이전 포스팅에서는 pyenv를 이용해서 맥에서 여러 개의 파이썬을 관리하는 법을 알아보았는데, 맥에 비해서 Ubuntu는 더 위험한 느낌이 들기 때문에, 더 조심해야 됩니다. 업데이트 이후, $ apt update && apt upgrade -y 파이썬 관..

Linux/Ubuntu 2021.03.03

자바 스프링 게시판 - 게시글 저장하기

Home에서 글쓰는 페이지를 갈 수 있는 버튼을 만든 후, 페이지를 만듭니다. 제목 내용 일단 PostController를 만듭니다. 물론 그 전에 post 모델을 만들어야겠죠. # import 생략 @Entity @Table(name = "post") public class Post { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String userName; private String title; private String content; private int count; public String getTitle() { return title; } public void setTitle(String ti..

맥에서 여러개의 자바 버전 세팅하기

medium.com/@chamikakasun/how-to-manage-multiple-java-version-in-macos-e5421345f6d0 How to Manage Multiple Java Version in MacOS I have been using multiple versions of Java with a Version Manager in my Mac for a while, whenever I need to switch between different… medium.com brew 를 하다보면 cask를 install 해야된다는 것입니다. brew cask install 하다가 cask에서 에러나서 안됨.. ㅠ 알고보니 brew cask install이 아니라 brew install --ca..

환경설정 2021.02.08

Java Spring Security를 이용해서 회원가입 구현하기

저번 포스팅까지 해서 로그인 기능을 구현하는데 성공했습니다. Spring Security와 JPA, H2 Database를 사용해서 로그인 기능을 구현했는데요, 이번 포스팅에서는 회원가입 기능을 구현해 보도록 하겠습니다. 다행인 건, 회원가입 기능은 로그인 기능보다 구현하기 간단하다는 것입니다. 서비스나 DAO, DTO 등도 사용하지 않고 구현을 해보도록 하겠습니다. 일단 register.html 페이지를 만듭니다. 회원 가입 회원 가입하기 비밀번호를 잃어버리셨나요? 이미 가입하셨나요? 로그인하세요 html을 만들 때 주의할 점은, 현재 Thymeleaf를 쓰고 있기 때문에 head 전에 태그를 붙여줘야 된다는 점입니다. 또, name을 camelcase 형태로 model entity에서 지정해준 대로 ..

자바 스프링 부트로 hello world 프린트하기

오늘은 스프링 부트로 hello world 를 print하는 방법을 포스팅 하도록 하겠습니다. 일단 STS(Spring Tool Suite)를 받은 후, 새로운 project를 만듭니다. 이렇게 프로젝트 관련된 이름과 package 이름도 설정해 준 후, 필요한 dependency들을 세팅해 줍니다. 현재로서 필요한 dependency는 spring-boot-starter-web 뿐입니다. 막상 세팅을 하지 않았다고 해도 나중에 pom.xml에 추가할 수 있으니 너무 걱정하지 않아도 됩니다. 다 세팅한 이후에 directoryStructure를 보면, Application.java file이 src/main/java directory안에 생성되어 있는 것을 볼 수 있습니다. 가장 빠르게 hello wor..

Python 변수 개념(namespace, local, global)

일단 아래 코드를 봅시다. age = 42 name = "Dominic" places = ["Berlin", "Cape Town", "New York"] def info(): print("%s is %i years old." % (name, age)) return info() 보통 python에서 변수는 global, local namespace 두 가지로 나눠질 수 있습니다. local namespace의 변수는 보통 함수 안에 있는 변수를 말하고, global namespace의 변수는 함수 밖의 변수를 말합니다. 하지만 왜 위 함수에서는 함수 안에서(local namepsace), 함수 밖에서(global namespace) 정의한 변수들을 사용하는 걸까요? Python에서는 global namep..

Python/Basics 2021.02.05