![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/Lyx2z/btr9wGTnRrl/ivQvtm45tPK1Gxprqhm7X1/img.png)
요새 개발자들 사이에서는 AWS가 핫한 솔루션 중 하나로 급부상하였습니다. 이유는 여러 가지가 있지만 제가 생각해본 이유입니다. 서버리스라고 해서 우리는 홈페이지 하나를 보기 위해서 서버가 필요한 부분을 줄여주었습니다. 지금 보고 계신 이런 티스토리 블로그 또한 모두 서버 위에 올라가있는 데이터를 보기 쉽고 편하게 볼 수 있도록 제공해줍니다. 이런 서버를 구축하기 위한 시간을 줄여줍니다. 이전에는 이런 서비스가 존재하지 않아서 물리 서버를 구매하고 통신사에 전화를 해서 내가 이렇게 공용으로 쓸 꺼니까 등록해줘 라고 얘기했습니다. 인터넷이 발달하면서 클라우드가 발달하였고, 이 클라우드의 원천이 사실상 AWS가 시작이기도 하였습니다. 마이크로소프트에서 제공하는 MS Cloud, Google 에서 제공하는 G..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cHKB6C/btr8ndpUN2i/b6SQ5hdQR9VueCSCz87KwK/img.jpg)
이번에는 p6spy라는 로그 관리 툴을 사용하다가 처음에 애플리케이션이 구동이 안되는 증상이 발생하였습니다. 해결 방법을 말씀드리기에 앞서 해당 플러그인을 사용한 이유를 이야기해보고자 합니다. https://mvnrepository.com/artifact/com.github.gavlyukovskiy/p6spy-spring-boot-starter 1. p6spy 사용 이유 기존에 JPA를 사용하면서 Query를 자동 생성하는 이점때문에 열심히 사용중이었는데, 쿼리에 파라미터라던지 다른 변수값들이 '?1', '?2'와 같이 순서로만 설정되어 있고, 매핑을 일일히 SQL Tool 안에서 사용하는 번거로움을 해소하고자 하였습니다. 아래 사진은 증상을 해결하고 캡쳐한 스크린샷입니다. 이전의 쿼리에서는 trace_..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/drImGo/btr7hwk68PO/Kxjk20gsqPXUl2YhIiknqk/img.jpg)
프론트엔드 개발자 정종윤님이 운영하는 닉네임인 재그지그에서 올라온 아티클로 글을 작성할 때 저도 참고할 내용인 것 같아 가져오게 되었습니다 :) https://wormwlrm.github.io/2022/08/20/Personal-Branding-from-Technical-Writing.html 기술 글쓰기를 통해 개인 브랜딩을 구축하는 나만의 방법 - 재그지그의 개발 블로그 기술 포스트 발행을 개인 브랜딩으로 연결시키는 방법에 대한 전반적인 노하우를 소개합니다. wormwlrm.github.io 아티클의 제목에서도 나와있지만 개인 브랜딩 뿐 아닌 제가 배운 내용들에 대해 간단히 회고해보려 합니다. 해당 내용에서는 글을 작성하기 전 미리 시간을 마련해야 한다는 점, 작성할 때 유의해야할 점, 내가 작성한 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bwWsTf/btr7iLhBf5F/VehRXeG1K8PGY7MXN8joD0/img.jpg)
View transitions 라고 하는 속성이 추가되면서 이제 화면 전환을 조금 더 쉽게 가능할 수 있는 방법이 출시되었다고 합니다. 원본 영상은 노마드 코더님의 유투브 영상이고, 여기 영상에서는 더 많은 정보를 제공하고 있으니 자세한 도움이 필요하시면 아래 영상을 확인하시는 것이 좋을 것입니다. https://www.youtube.com/watch?v=ObT87Xu_CO0 1. 기본적인 View Transition 사용하기 View transition 을 사용하는 것은 meta 태그내에 name='view-transition' 속성을 추가해주면 됩니다. 위의 태그를 추가해주면 되고, 동작 원리는 다음 페이지의 스크린샷을 본떠 해당 화면을 뿌려주는 방법처럼 적용된다고 합니다. 2. 더 구체적으로 사용하..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/u2kzC/btr6tYcooVC/lUruOAJ1iA0bQwWXzqF3jk/img.png)
직장을 다니면서 직업을 가진다는 것은 조금 의아한 부분일 수도 있습니다. 직장을 다니면 이미 직업이 있는것이 아닌가? 라는 질문이 당연히 생길 수 있지만 직업은 내가 지금 당장 직장을 그만두더라도 당장 할 수 있는 일을 진행하는 것이 직업이기 때문에 둘은 분리가 되어야 합니다. 아래는 세바시에 올라온 유투브 영상 링크인데, 여기서는 더랩에이치 대표님인 '김호'님께서 설명해주시는 내용 영상입니다. https://youtube.com/watch?v=600GX4LtZe4&feature=share 이 영상에서 나온 내용과 제가 생각해본 내용을 아래에 다시 요약해볼까 합니다. 1. 직업을 만들기 위해 나만의 시간을 투자하라 나만의 직업을 가지는 것은 한 순간에 일어나지 않습니다. 최대한 내가 직업을 가질 수 있고..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/nQSbg/btr6ot3rO2r/Ifd9kDvkNYLBHzR0K7b6n0/img.jpg)
요새는 ChatGPT를 사용하여 컨텐츠를 얻는 것이 일상이 된 시대입니다. 이런 호기심들 속에서 생각해본 것중 하나로 제목과 같이 1억권의 지식을 습득한 AI와 책 1권을 빠삭하게 읽은 개발자중에 어떤게 유리할지 고민해본 내용을 적어보려 합니다. 참고로 해당 내용은 주관적인 내용이 다소 반영되어 있다보니 모든 것이 정답이라는 것을 먼저 말씀드립니다. 1. AI 는 연산이 약하다. 언어모델로 지식을 습득한 AI는 수학에는 특히 약한 모습을 보입니다. 특히나 큰 수를 더하는 경우 (예시: 14892576943 + 3950604982 등)도 틀리게 되는데요, 수학 책을 한번이라도 공부한 사람이면 9+1은 10으로 자리수가 한개 올라가는 것을 대부분 알고 있습니다. 당연히 수학적 지식이 많은 AI는 공식을 쓰거..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/JwaAD/btr5Q3RPiOH/iHT56ZRnopMBvaLv3KFsy1/img.png)
오늘은 자바스크립트의 얕은 복사와 깊은 복사에 대해 알아보고 구현하는 방법에 대해 알아보려합니다. 얕은 복사(Shallow Copy) 얕은 복사는 기존 객체의 주소를 복사하여 변수로 사용하는 방법입니다. 얕은 복사를 하게 되면 참조가 가능하기 때문에 조회하는 값은 같지만, 파라미터로 받아서 데이터의 변조가 일어나는 경우 기존 주소에 담긴 값도 변하는 특성을 가집니다. 아래의 소스에서 확인해보겠습니다. let obj = { "A": "a", "B": "b" }; let copyObj = obj; copyObj.A = "C"; console.log(obj.A); // C 깊은 복사(Deep Copy) 깊은 복사는 얕은 복사와는 다르게 새로운 객체가 생성되어 이전의 데이터만 복사하고 주소는 다르게 사용하는 방..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/pCZKr/btr5Zlxowjl/6cnhX6uqwUJiW0a83fk5P0/img.png)
자바스크립트 언어의 특징상 null을 undefined로 표현합니다. 그리고 자바스크립트는 자바 언어와는 달리 인터프리터 방식의 언어이기 때문에 빌드를 할 때 에러가 나지도 않습니다. (물론 자바에서도 null 값이 들어갈 때 에러가 안 나고 있다가 런타임 에러가 발생하면 NullPointerException 이 발생합니다.) 그럼 이렇게 표현될 때 최대한 방어를 할 수 있는 Java의 Optional 클래스와 같이 쓸 수 있는 방법이 있을까요? 1. 기본 파라미터 값 넣기 함수(function)를 호출하는 파라미터에서 기본값을 설정할 수 있습니다. function nullSafeMultiple(number = 1) { return number * 2; } let num = undefined; nullS..