본문 바로가기

전체보기

31일에 다음 달 구하기 주어진 날짜 또는 현재 날짜의 다음 달을 구하는 경우가 있습니다. 보통 날짜에 한 달을 더해 다음 달을 구합니다. 주어진 날짜가 31일이면 한 달 더하는 방식은 문제가 있습니다. 날짜가 31일이면 한 달이 아닌 하루나 이틀 같은 날짜를 이용하여 다음 달을 구해야 합니다. var target = new Date('2021-02-01'); target.setMonth(target.getMonth() + 1); console.log(target); // Date Mon Mar 01 2021 09:00:00 GMT+0900 (대한민국 표준시) target = new Date('2021-02-28'); target.setMonth(target.getMonth() + 1); console.log(target); /.. 더보기
[리뷰] 터미널, 막막함을 벗어나는 한걸음 <처음 배우는 셸 스크립트> 터미널을 열 때마다 까만 바탕화면에 깜빡이는 커서를 보며 막막하다고 느끼는, 셸 스크립트에 적응하기 힘들어하는 분. 잊을만하면 하게 되는 리눅스 서버 작업 때문에 비슷한 내용을 다시 검색하고 있는 자신의 모습이 한심스러워 보일 때가 있는 분. 셸 스크립트를 사용하는데 어려움은 없으나 자주 사용하는 패턴만 사용하는데 아쉬움을 느끼는 분. 궁극적으로 조금 더 게으르고 싶은 분을 독자로 하고 있습니다. 셸 스크립트가 어려운 분에게 도움말 명령어보다 친절한 안내자입니다. 자주 사용하거나 알아야 할 내용을 예제와 함께 설명합니다. 특히 각각의 설명에 모두 예제가 함께 있습니다. 명령어를 사용하다 답답함을 느끼거나, 바르게 사용하고 있는지 궁금해질 때 열어 보았던 도움말. 하지만, 그 도움말을 열 때마다 만났던 막.. 더보기
[리뷰] 시작과 균형잡기 <플러터 인 액션> 플러터로 앱을 개발하시려는 분들, 플러터가 처음이긴 하지만 프로그래밍이 처음은 아닌 분들을 독자로 하고 있다고 볼 수 있습니다. 어느 정도 완성도 있는 앱을 만들어 가는 과정이 큰 줄기를 이루고 있습니다. 하지만, 앱 완성에 얽매이지 않고 플러터를 알려주는데 집중합니다.. 앱 개발 단계를 따라가며 보여주는 건 플러터를 보다 더 잘 설명하기 위한 방식일 뿐입니다. 각 주제를 연결하는 방식이나 서로 연관된 주제를 보여주기 위해 코드를 사용합니다. 곳곳에 참고할 url을 주석으로 표시하고 있습니다. 책은 저자가 알려주고 싶어 하는 내용으로 이루어진 길잡이일 뿐임을 일깨워 준다고 할까요. 좀 더 관심을 가질 수 있는 내용, 저자와 다른 견해, 책의 범위를 넘어서거나 자세한 설명이 있는 url입니다. 알아야 할 .. 더보기
[리뷰] 비슷한 고민, 탁월한 대응 <처음부터 제대로 배우는 라라벨> 먼저, PHP가 아니더라도 절차적 프로그래밍만 하셨다면 조금 낯설 수 있습니다. 다른 언어의 프레임워크를 사용해 보았다면 라라벨을 알아가는데 꽤 많은 도움이 되리라 생각합니다. 이렇게 하면 될 것 같다고 생각했던 아이디어들을 이미 구현해 놓았습니다. 많이 사용하는 기능은 기본 기능을 제공합니다. 변화하는 사용 환경에 적절하게 대응하고 있습니다. 예를 들어, 인증은 대부분의 웹 애플리케이션이 필요로 하지만 여러 가지 생각해야 할 부분이 많은 기능입니다. 그래서 라라벨 6까지는 이러한 기능의 뼈대를 잡아주는 인증 스캐폴딩 기능이 내장되어 있었다고 합니다. 하지만, 최근에는 React나 Vue 같은 프런트엔드 프레임워크 사용이 많아져 인증 스캐폴딩 기능이 별도의 패키지로 분리되었고, 필요하면 추가로 설치하여 .. 더보기
[리뷰] 익숙한 것과 거리 두기 <스위프트 프로그래밍 3판> 비슷한 게 많을수록 다른 점도 많이 보인다. 예전에 우연찮게 봤던 오브젝티브-C 코드, 익숙한 분은 사용하는데 크게 어려운 게 없는 것처럼 말씀하셨지만, 복잡하지 않은 실행문조차 너무 거창하게 느꼈습니다. 개발하신 분의 코딩 스타일을 떠나서 언어 구문 자체가 사용하기에 만만치 않겠다는 느낌이었습니다. 스위프트 프로그래밍을 보면서, 그때 보았던 오브젝티브-C에 비하면 스위프트는 아주 심플하다는 느낌을 받았습니다. 스위프트를 읽어 나가면서 언어 설계자는 아마도 ... - null 때문에 고생을 많이 했다. - 비동기 처리하기 너무 불편해했다. 라는 생각이 들었었습니다. 다른 언어에서 아쉬웠거나 불편한 부분을 해소하는 스위프트만의 방식을 만날 수 있습니다. 개발의 편리함을 추구하다 너무 많은 것을 넣어버린 느.. 더보기
[리뷰] 느슨하게? 유연하게! <쉽게 배워 바로 써먹는 디자인 패턴> 디자인 패턴. 유명하지만 실제로 읽어본 사람을 만나는 게 쉽지 않은 고전처럼, 많이 들어 봤고 몇몇 패턴은 실제로 사용하지 있지만 24개 패턴을 모두 접해본 사람은 많지 않다고 생각합니다. 많은 경우 몇 가지 패턴 사용에 익숙하다고 생각합니다. 자신이 사용하는 코드가 디자인 패턴에 분류되어 있는지 모르더라도 말이죠. 왜 그렇게 사용하지는 어렴풋이 알고 있고, 어떻게 사용하지는 알고 있으며 잘 쓰고 있는 겁니다. 우리는 자신을 계발하고자 하는 욕구가 있습니다. 좀 더 나아지고자 합니다. 경험을 통해 앞으로 나아가지만 한편으로는 늘 아쉬움을 느낍니다. 그래서, 다른 사람들은 어떻게 하고 있는지, 내가 사용하는 방식이 맞는지, 모르는 부분은 어디인지, 조금 더 잘하려면 어떻게 해야 하는지 알고 싶어 합니다. .. 더보기
[리뷰] 딥러닝에 발 담그기 <처음 시작하는 딥러닝> '첫 술에 배부를 순 없다.' 는 말이 있습니다. 그렇더라고 첫 술이 맛있으면 나머지도 더 잘 먹을 수 있지 않을까요? 이 책을 통해 딥러닝에 가까워지는 시간을 만날 수 있다고 생각합니다. '딥러닝을 씹어먹고 말리라' 같은 결연한 의지는 잠시 접어두시고, 딥러닝이 어떻게 생겼는지 안내하는 저자를 따라가는 것만으로 충분히 좋은 시간이 될 수 있을 것입니다. 그림을 보여주며 설명하고, 수식으로 표현한 뒤, 코드로 구현해 보는 방식을 취하고 있습니다. 딥러닝이 처음인데 그림 몇 개로 이루어진 설명, 설명을 표현한 수식, 수식을 실행하기 위한 코드를 보는 것만으로 모두 이해할 수 있으면 천재이지 않을까요? 그러니 너무 부담 갖지 않고 읽으셨으면 하는 마음입니다. 책에 있는 수식을 보며 겁먹을 것도, 모두 이해할.. 더보기
[리뷰] 실력 좋은 선배 같은 <실전 자바 소프트웨어 개발> 실무에서 자바로 소프트웨어를 만들 때, 어떻게 만드는지 그리고, 디자인 패턴과 SOLID 원칙이 왜 필요하고, 어떻게 적용하는지 보여줍니다. 자바로 단순하게 코딩하는 수준이 아니라 자바를 이용하여 소프트웨어를 어떻게 개발하는지 보여줍니다. 말하자면, 덧셈과 곱셈 알고 단순 계산을 열심히 반복하는 수준에서 벗어나 연산의 원리를 이해하고 활용하는, 지금까지 알던 것과 다른 시야를 만나게 해 준다고 할까요. 1에서 10까지 더하는 문제로 비유해 보겠습니다. 처음에는 단순 덧셈을 떠올립니다. 덧셈을 10번하면 되니 큰 문제는 아닙니다. 하지만, 이런 상황은 곧 어려움에 부딪칠 수밖에 없습니다. 요구 사항은 바뀌니까요. 단순한 해결에서 한걸음 나아가 1, 2, 3, …, 9, 10 10, 9, 8, …, 2, 1.. 더보기