전체 글 196

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

Mac에서 Python 관리 (2)

출처 : medium.com/python-every-day/python-development-on-macos-with-pyenv-virtualenv-ec583b92934c 저번 포스트 walkaroundthedevelop.tistory.com/7 에서 pyenv라는 library를 소개하였는데, Mac에서 제대로 virtual environment를 구축하기에는 충분하지가 않았습니다. pyenv를 제대로 이용하기 위해서는 pyenv-virtualenv가 필요합니다. 일단 install을 합니다. # Install Homebrew if it isn't already available /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Home..

환경설정 2021.01.28

Git Diff 활용하기

저번 포스팅에서는 해서 branching의 개념을 살펴보았습니다. 이번 포스팅에서는 git diff란 무엇이고, 어떻게 사용하는가에 대한 개념을 알아보도록 하겠습니다. 그럼 git diff가 왜 필요할까요? 한 예로, 그 전 포스팅에서 branch를 옮길 때, 마지막으로 커밋되어있는 파일과 다를 때, 충돌이 난다고 했습니다. 임시조치로 git stash를 배웠지만, 실제로 마지막 commit에서 많이 벗어나 있고, commit하기에는 적절하지 않을 상황일 때, git diff 를 사용해서 어떤 점이 다른지 볼 수 있습니다. 여기서 주의할 점은, 새로운 파일을 만들 경우에는 error가 나지 않는다는 점입니다! untracked file이 되기 때문이죠 git diff를 하면, 마지막 커밋과 어떤 점이 다..

Utils/Git 2021.01.26

git pull, branch 개념 (ft. gitflow, pull, clone)

지난 번 포스팅에서는 git push까지 알아봤습니다. git push를 해서 remote repository에 올린 이후에, 다운받으려면 어떻게 할까요? 가장 쉬운 방법은 git clone 이 있습니다. $ git clone git clone의 경우 새로운 디렉토리가 생기게 되고, authorization 문제가 없는 한 아주 쉽게 받아올 수 있습니다. 하지만 만약 git local repository에서 새로운 기록들을 다운받고자 하면 어떻게 하면 좋을까요? 그럴 때 사용하는 게 git pull 입니다. $ git pull 사실, git pull 은 git fetch와 git merge 두 개의 커맨드로 이루어져 있는데, git pull을 할 때 가끔 에러가 나는데, 이는 git merge 에서 생기..

Utils/Git 2021.01.25

Git의 기본적인 명령어들 (기초사용법)

Git은 기본적으로 인터넷 없이도 사용할 수 있는 프로그램이고, 컴퓨터 OS 위에서 사용하는 프로그램입니다. (맥, 윈도우, 리눅스 등) 그러기 대문에, git을 사용하기 위해서는, 원하는 컴퓨터 운영체제에서 git을 다운받아서 설치하여야 합니다. git-scm.com/ git 홈페이지에 가면 각각 운영체제 별로 git을 다운받을 수 있습니다. 이때 주의할 점은, mac과 리눅스에서는 터미널이 기본으로 주어지지만, 윈도우에서는 그러지 않는 만큼, 윈도우에서 git을 설치할 때는, git command line (git bash)을 꼭 설치하는 것이 좋습니다! 왜냐하면, git은 command line을 사용하여 관리하는 것이 편하기 때문이죠! git gui같은 경우에는 있으면 편할 수 있지만, gui 툴..

Utils/Git 2021.01.25

Git이란? (ft. version control, SVN, github)

Git이란 무엇일까요? Git이란 버전 컨트롤 프로그램의 한 종류입니다. (svn과 같은) 그럼 버전 관리(컨트롤) 툴이란 어떤 걸 의미할까요? 쉽게 설명하자면, 이력서를 만들 때, 여러가지 버전을 만드는 것을 생각하면 편합니다. 지원하는 회사마다, 강조하고 싶은 경력이나, 이력이 있고, 또 빼고 싶은 사항이나 추가하고 싶은 사항이 다를 수 있겠죠? 그리고 시간이 지날수록, 추가 하고 싶은 게 많지만, 예전의 버전도 남겨놓고 싶을 수 있을 겁니다. 버전별로 새로운 파일을 저장할 수도 있겠지만, 버전 관리 툴은, 그런 번거로움 없이, 하나의 파일만 유지한 채로 그 기록을 기록만 한다면 모두 저장할 수 있습니다. 그럼 git과 SVN의 차이는 어떻게 될까요? Git은 분산관리식 구조인 반면에, SVN은 중앙..

Utils/Git 2021.01.24

JPA 를 이용한 Spring Security 로그인 구현(H2 DB)

오늘은 드디어 JPA를 사용하여 H2 데이터베이스에 있는 유저 정보를 이용해서 로그인을 구현해 보도록 하겠습니다. 일단 UserRepository를 만듭니다. package com.myBoard.demo.model; import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; public interface UserRepository extends JpaRepository { Optional findByUserName(String userName); } UserRepository는 Interface로써, 실제 함수가 아니라, 함수를 정의해 놓은 것에 불과합니다. Repository 패턴을 왜 사용하는지, 또 ..

Spring Security 를 이용해서 UserDetailService 사용하기

이 포스팅은 지난 포스팅에서 이어서 나온 내용입니다. 지난 포스팅에서는 WebSecurityConfig를 만들어서 커스텀 로그인을 만들었습니다. home과 / 는 로그인을 하지 않아도 접속하게 만드는 것이 저번 포스팅까지 하였습니다. package com.myBoard.demo; // import 생략... @EnableWebSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override public void configure(WebSecurity web) throws Exception { web.ignoring().antMatchers("/css/**", "/vendor/**", "/js/**", "/imag..

Spring Security 사용하기 - WebSecurityConfig 파일 구성하기

Spring Security를 활용해서 custom login page를 만드는 법을 배웠는데, webSecurityConfig file에 대해서 알아보겠습니다. package com.myBoard.demo; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; @Enable..

JSP vs Thymeleaf

보통 Java spring의 프론트엔드로 JSP를 많이 씁니다. 하지만 Jsp의 장점이자 단점은, html파일이 아니고, java 파일이라는 겁니다. 그래서, java 논리를 쓸 수 있어서 편한 점도 있지만, seperation of concern, 즉, 프로그래밍 디자인적으로 프론트엔드와 백엔드를 나누려는 요즘의 트렌드에 조금 맞지 않다고도 볼 수 있습니다. 참고 url (영어) : www.quora.com/Which-is-better-Thymeleaf-or-JSP 하지만 확실한 건, thymeleaf건 jsp건, 그 문법에 대해서 알아야 한다는 점입니다. 아무리 thymeleaf가 html이라고 해도, 태그가 있기 때문입니다. Name 위와 같이 th를 사용하여 thymeleaf 네임스페이스를 추가해..