분류 전체보기
온라인 사진전을 개최하며 겪었던 후일담 -1편
온라인 사진전을 개최하며 겪었던 후일담 -1편
2020.12.08나는 이게 이렇게 커질거라고 생각 못했다. 나는 금요일 그것도 저녁 10시가 넘어서 사진전 링크가 우리 동아리 카톡방에 뿌려질때만 해도 과연 우리 동아리 사진전이 이정도로 큰 파급력이 있을거라고 생각하지는 않았다. 저녁 12시부터 많은 공유가 된 이후부터 분명히 사람이 많이 들어오는 거까지는 봤는데... 실 서버 배포를 하는 건 결국 누구나 신경을 많이 써야하는 문제라서 당일날 앞에 테스트 및 드라이 리허설 방식으로 서버 부하테스트도 해보고 다른 일까지 모두 처리하다보니까 지쳐서 새벽에 구글 애널리틱스로 많은 사람들이 들어왔구나 와 그래도 서버가 안뻗고 잘 되는거 보면 뭐 어쨌든 굴러가는구나 이게...하면서 별생각을 안하고 잠을 잤다. 자고 일어난 나는 새벽녘에 AWS로부터 메일 두통을 받았는데, 다음과..
github actions를 통한 React의 build 오류 처리와 yarn install 캐쉬 처리
github actions를 통한 React의 build 오류 처리와 yarn install 캐쉬 처리
2020.11.20배포 작업은 귀찮아... 현재 진행하는 프로젝트에서 Front-end서버는 React로 다른 친구가 작업하고 있고, 나는 실제로 배포와 백엔드 서버와 같이 진행하고 있었다. 문제는 React를 다루는 친구가 배포에 대해서는 잘 모른다는 것이었는데, 나는 실제 서버에 올려보고 싶었다. 하지만 내 귀여운 t2.mirco는 백엔드도 키면서 yarn build를 돌리기에는 1시간정도 걸릴것만 같아서 외부에서 build를하고 차라리 파일을 가지고 오는게 훨씬 좋다고 판단했다. 근데 일일히 내 컴퓨터에서 굳이 친구가 commit올릴때마다 git pull로 다운 받아서 그걸 build를 해야하나 고민하다가 좋은 아이디어가 떠올랐다. 깃허브 액션을 통해서 React build를 해보았다. 일단 이 react를 buil..
AWS CLI를 통해서 S3 파일 다운/업로드하는 방법
AWS CLI를 통해서 S3 파일 다운/업로드하는 방법
2020.11.20CLI를 통해서 직접 S3에 접근하려면... AWS CLI를 통해서 S3를 이용하려면 AWS CLI를 설치하고, AWS access key id, secret access key를 통해 등록하여 사용하면된다. CLI를 접근하는 방식은 다루지 않겠지만, s3 명령어 중에서도 소개할만한 것이 있어서 포스팅한다. S3 업로드 / 다운로드 aws s3 cp s3://~~~ s3 주소 /user/~~{현재 내 파일 디렉토리 주소} 예를들어서 s3:// -> /user/~~ 이런식이면 S3에서 현재 컴퓨터로 다운로드 하겠다는 뜻. /user -> s3:// 이면 로컬 파일에서 s3로 파일 업로드 하는 개념 --recursive 명령어를 붙이면, 폴더 전체를 다운 받을 수도, 폴더 전체를 올릴수도 있습니다. aws ..
AWS EC2 프리티어에서 메모리 부족현상 해결방법
AWS EC2 프리티어에서 메모리 부족현상 해결방법
2020.11.20AWS free tier를 사용하다보면 2%가 부족할 때가 있다. AWS 프리티어는 가난한 대학생에게는 한줄기 빛과 같은 존재인데, AWS의 프리티어라서 적게 돈이 나가는 것도 좋고, 실제로 이것저것 해볼 수 있다는 측면에서 한줄기의 빛과 같은 존재이다.하지만, 이러한 프리티어도 한가지의 문제를 가지고 있다.t2.micro의 램이 1GB정도 밖에 안된다는 것인데, 여러 가지의 프로젝트를 동시에 돌리는 것에 엄청나게 문제를 준다는 것이 가장큰 문제일 것이다.나의 사례로만 들어도 Spring boot 한개를 킨 상태에서 Spring boot의 gradle을 통한 빌드 작업을 시도 해봤는데, 서버의 가용성이 폭발해버린 사례가 있었다. 이때는 마치 SSH가 실제로 가용중인 Gradle을 종료시키지도 못했고 SS..
글또 5기를 시작하면서...
글또 5기를 시작하면서...
2020.11.10글또를 시작해버렸다. 글쓰는 또라이라는 이 모임은 개발 블로그 글쓰기 모임과 같다. 사실 개발 블로그는 내가 배운 내용이 아니면 정기적으로 포스팅하기가 쉽지는 않다. 아무래도 내가 순간순간 깨닫는 내용은 국소적인데 타자에게 전하는 것은 범위가 크니까 내 스스로도 정리하고 검증하는 글을 쓰는 시간이 필요하고 그게 글을 단기적으로 많은 글을 꾸준히 쓰게 하는게 어렵게 하는 원인 중 하나이다. 그래서 결국에는 대충 이런 악순환의 고리를 만든다. 1. 글을 쓰려고 다짐한다. -> 2. 내가 전달하려는 글이 복잡하네? 검증의 시간이 필요하다. -> 3. 검증 시간 블로그 탐색과 구글링, 책 섭렵 -> 4. 오히려 검증하는 시간이 글쓴시간 보다 오래걸림. OR 기술적 검증이 더 필요한 상태 -> 5. 이렇게 까지 ..
구글 코랩에서 텐서플로우 버젼 변경하기
구글 코랩에서 텐서플로우 버젼 변경하기
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랑 무슨 차이가 있나 싶긴하다. 아무튼 본론으로 알프레드 사용하는 사용자중에서 노트북만 가지고 쓰는 경우도 있겠으나, 실제로 듀얼모니터를 물려서 사용하는 경우도 있을 것이다. 그러면 단점이 하나 생기는데, 알프레드는 "주" 모니터에만 뜨게된다. 결국 큰화면을 사용하는 이 듀얼 모니터에는 정작 이 알프레드는 못쓴다는 것인가..? 이러면 듀얼모니터에서 못 쓰니까 매번 노트북으로 내 얼굴을 돌려야한다는 번거로움이 생기기 마련... 분명히 해결 할 수 있는 방법이 있을 거라고 생각하고 찾아보기로했다. 구글링은 ..