분류 전체보기
구글 코랩에서 텐서플로우 버젼 변경하기
구글 코랩에서 텐서플로우 버젼 변경하기
2020.10.14구글 코랩은 다양한 라이브러리가 깔려있다. 구글 코랩은 텐서플로 및 여러가지 딥러닝과 관련된 여러가지 라이브러리가 설치되어있습니다. 그래서 그것을 선택해서 사용하기는 쉽습니다. 하지만 대부분 이 텐서플로우를 사용하기 위해서 코랩에서 직접 코드를 만지는 경우가 많습니다. 텐서플로우는 버젼이 많다. 그리고 오류도 많다. 이 딥러닝 모델을 설계 혹은 실행시키기 위해서는 텐서플로우를 사용해서 코드를 건드는 방법이 많이 있는데, 문제는 텐서플로우는 버젼 별로 그 코드의 변경 사항이 너무 상이해서 코드가 버젼별로 돌아갈 수 도 혹은 안돌아갈 수도 있다. 하위 버젼에서는 돌아가던 코드가 상위버젼에서는 돌아가지 않는 경우가 생길 수 도 있다는 뜻이다. 즉, 코드의 버젼이 큰 영향을 끼친다고 볼 수 있다. 실제로 여러가..
Spring security authorizationGrantType cannot be null 해결 방법
Spring security authorizationGrantType cannot be null 해결 방법
2020.10.13Spring boot에서 Oauth 설정 값을 처리할때 스프링 부트에서 application.properties나 yaml를 통해서 쉽게 Oauth에 관련된 여러가지 설정들을 적용할 수 있다. 물론 버젼별로 Oauth를 적용하는 방식이 좀 다르긴 하다. security: oauth2: client: registration: microsoft: client-id: - client-secret: - redirect-uri-template: '{baseUrl}/login/oauth2/code/{registrationId}' Spring Boot 1.5 버젼에서는 이런식이다. 하지만, 2.0 버젼으로 넘어오면서 여러가지 포멧이 많이 줄었는데 security: oauth2: client: registration:..
구글 콜랩에서 구글 드라이브 공유 폴더 사용하기
구글 콜랩에서 구글 드라이브 공유 폴더 사용하기
2020.10.07구글 콜랩을 모두 공유하면서 사용한다면... 개인 프로젝트로 진행하는 것이라면 굳이 콜랩을 선택하는 것은 사실상 컴퓨터 성능의 문제로 선택하는 경우를 제외하면 없을 것 같다. 하지만, 단체로 개발하는 경우(특히, 학교에서 진행하는 딥러닝 프로젝트나 졸업 작품 프로젝트)에는 코드 공유나 노트북 형식으로 아예 코드를 구성해서 단체로 한 개의 파일로 코드를 만질 수 있게 하는 것이 오히려 효율적으로 일하는 방법이 될 수 있다. 그리고 구글 드라이브 자체를 연동해서 사용하고 거기에서 사용하는 Data 파일을 싱크를 맞추는 작업을 동시에 할 수 있어서 좋다고 생각합니다. 구글 콜랩에서 구글 드라이브를 연결하는 방식 구글 코랩에서는 아래와 같은 코드만 작성하더라도 from google.colab import dri..
장고에서 머신러닝을 사용하는 방법
장고에서 머신러닝을 사용하는 방법
2020.10.04장고에서 머신러닝을 돌리는 게 좋은 이유 장고 웹프레임워크를 사용하는 것에는 여러가지 이유가 있겠으나 장고의 메인 언어인 Python을 쓴다는 점은 엄청난 메리트가 있습니다. 왜냐하면 Python에는 ML,AI와 관련된 여러가지 툴이 있기때문입니다. 그래서 실제로 프로젝트를 진행할때 장고안에 머신러닝 모델을 직접 이식하는 방식을 통해서 굳이 따로 서버를 두는 것이 아니라, 실제로 장고 서버가 돌아가는 와중에 머신러닝이나 신경망을 통한 모델이 바로 제가 넣은 값을 통해서 바로 예측값을 출력해낸다면 저희는 두가지의 일을 동시에 하지 않아도 되죠.( 예를 들면 뭐 머신러닝 서버를 또 따로 만든다던가..) 일단 마주쳤던 문제점 신경망이든 머신러닝이든간에 일단 모델을 불러서 값을 넣은 후에 그것을 예측값을 받는 ..
오픈소스 컨트리뷰터가 될뻔했던 썰.SSUL
오픈소스 컨트리뷰터가 될뻔했던 썰.SSUL
2020.09.17뭘 고친건데? 왜 될뻔했는가를 설명해보자면, 이야기는 한 3주전으로 거슬러올라간다. 현재 인턴에서 Mybatis를 자주 다루고 있기 때문에, 공식문서를 자주 들릴일이 많다. mybatis는 잘 써보지 않은 툴이기때문에 가끔 들여다볼 일이 많이 생겼다. 목차버튼으로 바로 이동을 누르려고 했는데... 이 버튼을 눌러도 작동을 안하는 것이다. 뭔가 좀 이상하길래 주소창을 확인해봤는데... 주소창은 이러한데 mybatis.org/mybatis-3/sqlmap-xml.html#insert_update_and_delete 실제로 html상에서는.. 이렇게 되있었다. 즉, 이 name값이 서로 다르기 때문에, 이동을 안했던 것. 어차피 이런거 찾은김에 오픈소스에 문서화에 기여하는것도 가장 쉽게 contributor가..
Spring Security를 통한 외부 Oauth2.0 Redirect URI와 로그인 URI이 만들어지는 방식
Spring Security를 통한 외부 Oauth2.0 Redirect URI와 로그인 URI이 만들어지는 방식
2020.09.10도대체 Redirect URI랑 로그인 URI는 어케 만들어지나... 최근에 소셜로그인을 JWT 방식으로 전환을 하면서 한가지 궁금한 점이 있었다. 그게 뭐냐하면, 도대체 Redirect URI랑 로그인 URI는 Controller도 없이 알아서 다 만들어주는데 그걸 도대체 어디서 확인할 수 있느냐 이런 문제였다. 어차피 URI 생성과 같은 문제는 Controller에서 처리하는 문제인데, Spring Security는 그런 것도 없이 URI를 생성해주곤 하니 그 발생 진원지가 궁금했다. 어떻게 만들어지는 질 알아야지 제가 Debug를 할질 알아서 궁금해서 찾아보기 시작했다. 그전에 미리 알고 가야할 것들이 있다. 간단하게 Spring Security에서 Oauth2.0을 어떤식으로 처리하는지에 대해서 ..
알프레드(alfred4) 사용시 듀얼 모니터에도 띄우는 방법
알프레드(alfred4) 사용시 듀얼 모니터에도 띄우는 방법
2020.09.07알프레드는 맥에서 Spotlight와 같이 검색 보조 그외에도 여러가지 부가적 기능이 많아서 자주 쓰는 프로그램이다. 특히 필요한 프로그램 바로 키는 기능이 좋아서 쓰는데 지금 생각해보면 Spotlight랑 무슨 차이가 있나 싶긴하다. 아무튼 본론으로 알프레드 사용하는 사용자중에서 노트북만 가지고 쓰는 경우도 있겠으나, 실제로 듀얼모니터를 물려서 사용하는 경우도 있을 것이다. 그러면 단점이 하나 생기는데, 알프레드는 "주" 모니터에만 뜨게된다. 결국 큰화면을 사용하는 이 듀얼 모니터에는 정작 이 알프레드는 못쓴다는 것인가..? 이러면 듀얼모니터에서 못 쓰니까 매번 노트북으로 내 얼굴을 돌려야한다는 번거로움이 생기기 마련... 분명히 해결 할 수 있는 방법이 있을 거라고 생각하고 찾아보기로했다. 구글링은 ..
Spring Data JPA에서 Query를 사용하는 방법
Spring Data JPA에서 Query를 사용하는 방법
2020.09.06쿼리를 자동 생성해준다고? Spring boot를 통해서 개발을 하게 된다면, DB에 데이터를 삽입, 읽기 등 여러 가지 작동을 하기 위해서는 방식이 필요하다. 쿼리를 작동시키는 방식에는 여러 가지 방식이 존재한다. 실제로 현재 Spring Data JPA를 사용하면 꽤 편리한점이 있기 때문에, 그 점을 잘 이용하기 위해서는 결국에는 Query를 "자동 생성할 수 있는 포인트를 아는 것이 좋다." 하지만 하나 짚고 넘어가야 할 점 김영한님의 JPA강좌에서는 다음과 같이 주의점을 준다. 스프링 데이터 JPA는 JPA를 편리하게 사용하도록 도와주는 기술입니다. 따라서 JPA를 먼저 학습한 후에 스프링 데이터 JPA를 학습해야 합니다. JPA를 좀 더 구체적으로 배운 뒤에 Spring Data JPA를 사용하..
Pull Request를 Merge시, Issue를 Closed시키는 방법.
Pull Request를 Merge시, Issue를 Closed시키는 방법.
2020.08.30Pull Request를 올릴때 항상 하나의 문제점이 존재했느니... 이런 PR(Pull Request 이하 PR)를 올릴때는 대부분 Issue에서 파생된 문제를 해결하거나 Issue에 포함된 기능을 만들어서 올리곤 한다. 하지만 이 PR을 머지한 뒤에 Issue를 직접 닫아줘야하는 불편함이 있는데, 매번 내가 닫아줘야하는 귀찮다 정말 상당히.... 이런 문제를 해결하는 방법이 있었다. Linked issues...? 이 Linked Issue가 정확하게 뭘 말하는 거냐면, PR이 merge한 경우 자동으로 Issue까지 Closed되는 효과를 준다. 즉, PR을 머지한 이후에 사용자가 직접 issue를 닫아줘야하는 수고를 줄일 수 있다는 것이다. 이 기능은 이렇게 사용할 수 있다. PR의 오른쪽하단에 ..
Spring Boot Security로 카카오 소셜 로그인 만들기
Spring Boot Security로 카카오 소셜 로그인 만들기
2020.08.21참고 할점.... 이번 포스팅은 스프링 부트와 AWS로 혼자 구현하는 웹 서비스의 소셜로그인 파트를 참조하여 만들었습니다. 즉, 이 책을 기반으로 코드를 추가한 것이기 때문에 자세한 코드는 책을 통해서 확인 해보시는 것을 추천드립니다. 이동욱님의 강좌인 스프링부트를 활용한 소셜로그인 파트를 확인했을때는 구글과 네이버의 소셜 로그인이 예제로 나와있다. 하지만, 카카오는 없어서 한번 동일한 구성으로 카카오를 만들 수 있는지 궁금해서 만들어보았다. 카카오 소셜로그인 추가하기 기존 구성과 카카오는 조금의 다른 구성을 가지고 있다. 일단 카카오 소셜로그인을 위해서 카카오 디벨로퍼로 가야한다. Kakao Developers 카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기,..
Git 커밋 하나만 되돌리는 법
Git 커밋 하나만 되돌리는 법
2020.08.14협업을 하다가 보면, branch별로 git을 관리한다. 이번 프로젝트 도중에 기능을 삭제했는데 기능을 다시 되돌려야하는 경우가 발생했다. 문제는 이미 몇개의 커밋을 푸쉬해버린 상황이었다. 그나마 상황이 괜찮았던 것은 내가 Commit을 기능삭제한 부분을 따로 커밋을 했다는 것이다. 이럴줄알고 그러면 이 기능 삭제 커밋만 빼고 나머지 커밋을 살리는 방법은 뭘까? 1. Rebase를 통해 해결하자 Commit을 되돌리기위해서는 여러가지 방법이 있으나, 검색해본 결과 깃 리베이스를 사용하여 해결했다. git rebase -i HEAD^^ or git rebase -i git Rebase를 통해서 이전의 커밋을 통해서 필요한 부분을 처리할 수 있는 방법이 존재한다. 다음과 같은 방법으로 이 커밋을 살릴지 죽일..
AWS Linux에서 FFMPEG 설치하기 (ElasticBeanStalk)
AWS Linux에서 FFMPEG 설치하기 (ElasticBeanStalk)
2020.07.31이런 주제를 사용하게 된 이유도 사실 내가 이전에 했었던 프로젝트가 DeepLearning을 사용했다. 그리고 그 딥러닝을 Django 백엔드에서 딥러닝 모듈을 돌리는 터라, 이 딥러닝을 실행시키기 위해서는 FFMPEG이 필요했다. 문제는 FFMPEG이 AWS Linux에서는 일반적인 방법으로 설치가 재대로 안된다는 점이 큰 문제이다. 분명히 Red-hat 계열의 설치방법을 사용하기도 하고 Yum이나 Apt-get을 통해서 패키지 설치를 하고 싶었는데 기존 방법으로는 설치가 안됬다. 아마 Apt-get이나 Yum을 통한 링크가 이미 죽은것 같았다. 재대로 설치가 안되서 실행이 안됬기때문에 다른 방법을 찾아내야 했었다. 실제로 나 같은 경우는 Django를 AWS Beanstalk을 통해서 배포하였기 때문..