2022/01 30

[Go] Go language 간단후기1 - Rust보다 재밌다!

며칠전에 프로젝트를 하다 지쳐서 하고 싶은거나 공부해볼까 하는 김에 Rust 문서를 읽으면서 맛보기를 해보고 있었다. 이후에 go언어가 눈에 들어왔다.(사실은 Rust를 좀 보다가 잠깐 글도 쓰고 이것저것 정리하고 보고싶었던 영화 정주행 달리다보니 며칠 사이에 새로운게 땡겼다.) 사실 go언어도 이전부터 관심갖고 지켜봐왔던 언어였다. 물론 유독 비판이 많은 언어였다. 열성 rust론자들이 있어도 go를 열성적으로 주장하시는 분들은 rust대비 거의 9:1의 비율인것 같았다. 그럼에도 불구하고 도구로써 go는 굉장히 유용하다는 의견들이 많았다. 그 의견들을 종합해보면 몇 가지로 추려질 수 있었는데 고루틴과 함께 go언어 자체의 심플함이었다. 물론 심플함 자체에 대해서도 제네릭의 부재를 말씀하시면서 비판을 ..

Go lang 2022.01.28

[Go] goquery import 에러

빠르게 해결하고 싶으신 분은 바로 맨 아래로 가서 도식화해놓은걸 확인하시면 된다. goquery를 쓰려고 하는데 gopath가 각 예제마다 다른 경우가 많다. 어느 블로그에서는 C:/ 바로 밑에 go폴더를 만들고 그안에 src bin pkg 이렇게 생성해서 쓰라는 사람도 있고 어떤 분은 그냥 지금 go lang 사이트에서 install받고 그냥 그대로 다른 설정없이 써도 상관없다는 분들도 계시다. 아마 후자가 좀더 최신인것 같은데 후자대로 하면 go를 처음 딱 설치했을때 go 경로가 c:/ program files쪽으로 잡히는걸로 알고 있다. 이게 가장 최신이다. 왜냐면 오늘해봤기때문에용. 크크 그래서 문제가 뭐냐면 각 블로그마다 설정이 다른데 goquery를 쓰려고 하다가 터미널에서 계속 에러가 나서 ..

Go lang 2022.01.28

[SpringBoot] 백엔드 프로젝트 중간점검

프로젝트가 거의 막바지에 달했다. 사실 아직 부족한 기능도 너무 많고 완벽하게 테스트도 이뤄지지 않은 부분이 많다고 생각했다. 뭐 그래도 마감일이 있으니 결과물은 내놔야하기에 이것저것 손보며 뚝딱뚝딱하고 있다. 같은 파트를 맡은 팀원분께서 개인 사정으로 너무 바쁘셔서 거의 참여를 하지 못하셔서 얼추 4주 정도를 혼자 작업한 것 같다. (사실 작업하면서 중간에 고비가 몇번 있어서 정말 힘들긴했다. 초반에 같은 파트 팀원 한분께서 갑작스레 못한다고 하셔서 나가시게 되었고 다른 파트에서도 또 한분이 나가시면서 전체적으로 인원이 줄어든 점도 있지만 이 부분에선 크게 힘든점을 느끼진 못했다. 그저 좋은 기회를 함께 하지 못한 것이 아쉬웠을 뿐이다. 그보다는 팀원분들과 연락이 잘 안되는면에서 답답한 부분이 있었던 ..

[SpringBoot] @RestController와 ResponseEntity

스프링부트로 진행중인 프로젝트에서 한참 리팩토링을 진행중이었는데 @RestController 를 사용하면 컨트롤러마다 @ResponseBody를 반복할 필요가 없다고 한다. 왜냐면 이미 @RestController 내에 선언되어 있기 때문이다. 그래서 @RestController로 바꾸어 주기로 했다. 그런데 보통 @RestController를 사용할 경우에 ResponseEntity를 사용하는 경우가 많다고 한다. 그래서 리턴 타입도 모두 ResponseEntity로 바꾸어 주었다. 예전에는 객체나 문자열 혹은 Long타입 변수를 그대로 프론트에게 던졌는데 지금은 ResponseEntity로 주다보니 통일된 느낌이라 좋은 것같다. 그리고 에러가 발생했을 경우 그 또한 통일되게 처리할 수 있는 방법이 장..

[WASM] 웹 어셈블리의 미래 - WebAssembly

브런치에 웹 어셈블리의 미래라는 글을 작성했는데 해당 글을 이곳에도 공유하고 싶어서 올리고자 한다. 아래 브런치 링크를 첨부한다. https://brunch.co.kr/@razelo/7 [WASM] 웹 어셈블리의 미래 WASM이란 무엇일까? | 웹 어셈블리라고 불리는 wasm은 2015년에 개발되어 비교적 최근에 나온 기술이다. 2017년에 발표되었고 지금까지 계속해서 개선되는 기술이다. C/ C++ / RUST와 같은 로우 레벨 랭 brunch.co.kr WEB 어셈블리라고 불리는 WASM은 2015년이라는 비교적 최근에 나온 기술이다. 2017년에 발표되었고 지금까지 계속해서 개선되는 기술이다. 주로 C/ C++ / RUST와 같은 LOW 레벨 랭귀지 즉 속도가 좋은 강한 타입의 랭귀지를 웹에서 쓰고..

Rust lang 2022.01.26

백엔드 개발자 로드맵(공통)

1. 백엔드 언어 택1 2. 프레임워크 택1 3. 데이터베이스 택1 4. jwt, 토큰, Oauth 5. 캐싱 - redis, memcached 6. 메시지큐 - 카프카, rabbitMQ 7. 버전 컨트롤 - git 8. 배포 - AWS, GCP , Firebase, Heroku 근데 사실 언어는 크게 상관없는것 같다. 완전 비탈길을 내려가는 언어가 아닌 이상 어떤 언어든 배워서 써먹을 수 있으면 그만이고 프레임워크도 마찬가지라고 생각한다. 그리고 위의 내용들보다 더 중요한건 영어다. 영어가 가장 중요하다. 구할 수 있는 양질의 자료들의 99.9퍼센트가 영어로 되있다고 생각한다. 영어가 진짜 중요하다. 영어에 문제가 없다면... 노트북 한대만 있으면 된다.

개발 정보 2022.01.25

[SpringBoot] *.jar 백그라운드 실행하기 - $ nohup 명령어 &

springboot로 프로젝트를 진행하는 와중에 운영 서버에서 .jar 을 실행시켜놓으려고 하는데 백그라운드 실행을 시키기 위해서는 nohup 커맨드를 입력해야 한다. 평소에 실행시킬 때는 java -jar blabla-0.0.1-SNAPSHOT.jar 와 같이 실행했겠지만 백그라운드에서 실행시키기 위해서는 아래와 같이 명령어를 치면 된다. & 이 백그라운드라는 의미이다. nohup java -jar blabla-0.0.1-SNAPSHOT.jar & 즉 이 명령어를 치면 터미널 세션이 끊어져도 계속 실행된다. 이 명령어를 치면 nohup.out 파일이 생기는데 이 파일에 해당 jar파일의 출력들이 저장된다고 보면 된다. 실제로 위의 명령어들을 실행한 뒤에 ps -al을 실행해보면 아래와 같이 잘 실행하고..

[Intellij] Intellij에서 삭제했던 파일 혹은 코드 복구하는 방법

인텔리제이에 있는 흥미로운 기능을 발견했다. 이전에 삭제했던 파일이나 코드를 복구할 수 있는 기능이다. 예를 들어 아래와 같은 resources 폴더에서 log4j2.xml 을 삭제했는데 다시 필요한 경우가 있다고 가정하자. 깃에도 없고(?) 뭐 아무튼 아무튼 증발해버렸다면? 위의 resources 폴더에 마우스 우클릭을 한다. 그러면 위와 같이 Local History라는 메뉴가 뜰 것이다. 해당 Local History를 클릭하면 아래와 같은 화면이 나오면서 변경된 사항을 확인할 수도 있고 이전에 있었던 코드를 긁어올 수도 있다. 덕분에 살았다... 사실 진짜 실수로 지워서 복구할 필요가 있었다. 근데 그냥 CTRL + Z 누르면 되려나? 나중에 테스트해봅시다.

개발 정보 2022.01.25

java.lang.IllegalStateException: Ambiguous handler methods mapped for '/favicon.ico':

illegalStaeException 은 여러번 본적이 있지만 /favicon.ico는 뭘까? 배포중에 문제가 생겨 다시 로컬에서 부트를 띄우던 도중에 갑자기 위와 같은 에러가 발생했다. 사실 이전에 restapi 들의 경로를 바꿔주었던 작업에서 계속 작은 문제들이 잇따라 발생했는데 혹시 거기서 또 뭔가 발생하지 않았나 짐작하긴했었다. 결론부터 말하면 맞다. Controller의 경로가 중복되었을때 발생하는 고질적인 문제이다. 꼭 경로가 중복된 상황에서만 발생하는게 아니라 이외의 상황에서도 발생할 수 있는 에러이긴 하다. 그런데 신기한 점은 Ambiguous하다는 로그에 있다. 왜 모호하다는 표현을 썼을까? 위의 두 사진을 보면 api의 mapping에서 한군데는 filename이라고 되어있고 한군데는 ..

반응형