즐기자, 꾸준히, 오래오래
인기 글
-
Html Form에 CSS를 이용한 디자인 적용하기
Html Form에 CSS를 이용한 디자인 적용하기
2020.09.14이전에 html에서 form을 이용해서 다양한 입력형태를 만들어본 경험을 해보았을 것입니다. 하지만 아래와 같이 기본적으로 적용되는 각 input 태그에 대한 입력파트는 크기도 너무 작고 웹 페이지에서 그대로 사용하기에는 디자인 적인 부분에서도 조금 무리가 있습니다. 그런데 html 태그들을 css를 이용해서 각 태그들의 스타일을 지정했던 것처럼 input 태그에도 css를 사용함으로서 사용자가 원하는 형태로 디자인할 수 있습니다. 여기서 기억해야할 점은 기존에 공부하고 사용해보았던 css 속성 및 속성값들을 그대로 input 태그에 적용할 수 있다는 점 입니다. 지금부터 css를 이용해서 input 태그를 디자인하는 간단한 몇가지 예시들을 살펴보도록 하겠습니다. width, height 속성 아래와 같.. -
프로젝트 인수인계 시 꼭 기억할 5가지
프로젝트 인수인계 시 꼭 기억할 5가지
2024.02.040. 글을 시작하며 2024년을 시작하면서 입사 후 한 해동안 진행하던 프로젝트를 마무리하고 새로운 프로젝트를 인수인계 받아 진행하게 되었습니다. 이전 프로젝트는 처음부터 프로젝트를 세팅하고 코드를 직접 작성하며 진행한 프로젝트였지만 이번 프로젝트는 지난 1년부터 지금까지 개발과 유지보수 병행하며 실제 운영 중인 서비스를 유지보수하고 추가 개발하는 내용이었습니다. 이전에는 머릿속으로 정리한 논리를 코드로만 잘 작성하면 되었지만 이제는 기존 전임자의 코드를 통해서 핵심 로직을 이해하고, 전체 시스템에 대해 이해하여 서비스에 대한 유지보수와 함께 신규 기능 추가 개발을 통해 서비스를 향상시켜야할 필요가 있었습니다. 즉, 이전에는 나의 방식대로 로직만 잘 작성하여 요구사항을 충족하는 능력만 있으면 되었다면, .. -
[웹 서비스 개발] Xampp 세팅하기 (for Mac)
[웹 서비스 개발] Xampp 세팅하기 (for Mac)
2022.09.26Xampp 란? APM(Apache, PHP, MySQL) 환경을 쉽게 구성하고 관리할 수 있도록 도와주는 툴 기존 우리가 APM 개발 환경을 구축해야하는 경우, 세팅해야하는 PC에 Apache, PHP, MySQL을 각각 설치하고, 실행하고, 관리해야 합니다. 물론 정식 서비스를 배포해야하는 경우 이렇게 따로 설치하고 관리해주는 것이 일반적이지만, 학습용도로 가볍게 개발하는 경우 이러한 세팅 과정을 거치는 것은 굉장히 번거로운 작업입니다. 하지만 Xampp를 사용하면 이러한 환경을 한번에 구축할 수 있고, 여기에 Phpmyadmin도 함께 설치되기 때문에 별도의 추가설정, 툴 없이도 Phpmyadmin을 사용하여 DB를 관리할 수 있다는 편리함이 있습니다. 현재 수강하시는 수업에서도 이러한 APM 환경.. -
MyBatis - 2개 이상의 Query를 mapper에 한번에 작성하고 싶은 경우
MyBatis - 2개 이상의 Query를 mapper에 한번에 작성하고 싶은 경우
2022.01.14MyBatis를 적용한 Spring Legacy Project에서 개발을 진행하다보면 분명히 하나의 mapper에 대해서 2개 이상의 Query를 호출하고 싶은 경우가 있습니다. 예를 들어서 한번의 mapper 호출로 2개 이상의 table에 record를 insert 하고 싶은 경우, 우리는 mybatis의 mapper 내에서 2개 이상의 Query를 사용할 수 있다면 이러한 문제를 쉽게 해결할 수 있습니다. 우리가 가장 먼저 떠올릴 수 있는 아이디어는 다음과 같습니다. INSERT INTO table1 (member1, member2, member3) VALUES (value1, value2, value3); INSERT INTO table2 (member1, member2, member3) VALU.. -
Linux Command (network) - ping
Linux Command (network) - ping
2021.02.08ping 네트워크 연결상태를 확인 ping 은 외부 호스트 서버가 네트워크 상으로 접근이 가능한지 확인해보는 명령어 이다. ping은 ICMP 라는 프로토콜을 이용해서 외부 호스트에 신호를 보내며, 신호를 받은 호스트가 다시 응답을 주면서 서로 네트워크가 연결되어 있음을 확인할 수 있도록 해준다. 또한 domain 명을 IP주소로 확인하는 데에도 사용된다. 다음과 같이 ping 뒤에 연결을 확인하고 싶은 domain name을 입력하면 다음과 같이 일정간격으로 ping을 보내게 된다. 이후 해당 domain에서 다시 응답이 오게되면 관련 정보를 표시하게 되는 데 각 부분이 의미하는 정보는 다음과 같다. icmp_seq=1 ping을 전송한 회차를 말한다. ping을 보낼때마다 해당값을 계속 1씩 증가하게.. -
라즈베리파이 - 호스트 명 변경하기
라즈베리파이 - 호스트 명 변경하기
2021.01.28우리가 현재 실습에 사용하는 라즈베리파이의 이름(Hostname)을 변경하는 것이 가능하다. 집과 같은 환경에서 혼자 실습하는 경우 공유기를 통해 인터넷에 연결된 상태의 라즈베리파이가 하나이기 때문에 특별히 호스트명을 바꿔야한다는 필요성을 느끼지 못할 수도 있다. 하지만 학교처럼 하나의 공유기를 통해서 여러개의 라즈베리파이가 연결되어있는 환경이라면 어떨까? 그렇게 되면 이전과 달리 하나의 내부 네트워크에 여러개의 라즈베리파이가 연결되어 있기 때문에 수많은 라즈베리파이 중에서 나의 라즈베리파이의 주소를 찾기도 어려울 뿐더러 복잡하진다. 그래서 호스트명을 변경하여 현재 실습하는 라즈베리파이를 쉽게 알아볼 수 있도록 호스트명을 변경해주는 것이 좋다. 자 그렇다면 호스트명을 변경해보도록 하자. 우선 이 실습..
지금까지 올라온 글들
-
JSON_CONTAINS(), IN 절의 검색 대상을 여러 개로 확장하는 전략
JSON_CONTAINS(), IN 절의 검색 대상을 여러 개로 확장하는 전략
2024.04.140. 글을 시작하며 현재 진행하는 프로젝트에는 해시태그 개념이 존재하고, 이 해시태그를 이용한 검색 기능을 제공하고 있었습니다. 기존에는 하나의 post는 하나의 해시태그만을 가질 수 있다는 정책을 설정하고 사용하고 있어서 데이터를 다음과 같은 형태로 저장하고 있었습니다. post_id post_name post_content ... hash_tag 1 석촌호수 벚꽃 석촌호수 벚꽃이 정말... ... 벚꽃 2 따뜻한 날씨 요즘 날씨가 많이 따뜻... ... 일상 ... ... 104 날씨 좋은 날 나들이 이렇게 날씨 좋은 날 ... ... 나들이 105 Querydsl 도입기 기존 프로젝트에서는... ... 기술 그래서 사용자가 "벚꽃" 또는 "나들이" 라는 해시태그가 포함된 글을 보고 싶다면 다음과 같.. -
단위 테스트가 프로젝트에 가져온 긍정적 효과
단위 테스트가 프로젝트에 가져온 긍정적 효과
2024.03.310. 글을 시작하며 현재 회사에서 진행 중인 프로젝트를 인수인계 받으면서 눈에 띄었던 부분 중 하나는 테스트 코드가 존재하지 않는다는 점이었습니다. 해당 프로젝트를 통해 개발 중인 시스템은 실시간으로 어떤 대상의 값을 보고 내부에서 설정한 정책에 따라 작업 생성여부를 판단하는 로직을 타게 되는 데 판정대상이 단순히 하나의 어떤 대상을 보는 것이 아니라 과거의 값까지도 봐야하는 등 꽤 복잡한 형태로 구성되어 있었습니다. 시스템에서 작업을 생성할 것인지, 말 것인지를 판정하는 로직인 만큼 굉장히 중요한 부분이고, 그렇기에 작성한 로직에 대한 검증이 대단히 중요한 부분이기도 했습니다. 하지만 문제는 이 부분을 포함해서 프로젝트 전체에서 테스트 코드를 통한 검증 자동화가 존재하지 않다보니 기존에는 개발 서버에 .. -
동적 쿼리와의 전쟁... Querydsl을 도입할 수 없었던 이유
동적 쿼리와의 전쟁... Querydsl을 도입할 수 없었던 이유
2024.03.170. 글을 시작하며 2024년 회사에서 새로운 프로젝트를 시작한 것도 어느덧 2달이 넘어가고 있습니다. 이미 오랜 기간 개발이 되어오던 프로젝트라 복잡한 DB 구조 및 비즈니스 로직, 새로운 요구사항을 반영할수록 높아지는 클래스간 결합도 등 저를 괴롭히는 문제들이 많지만, 그 중에서 단연 가장 큰 문제는 바로 "동적쿼리" 처리 방식이었습니다. 해당 프로젝트는 현재 Spring Boot에 JPA를 주요 기술스택으로 사용하고 있습니다. JPA에서 동적쿼리 문제를 가장 이상적으로 해결할 수 있는 기술이 querydsl 이라는 것은 많은 분들이 이미 알고 계실겁니다. 하지만 이번 글에서는 제가 자신있게 querydsl을 도입해서 현재 프로젝트의 동적쿼리 문제를 더 깔끔하게 풀어낼 수 없었는 지, native q.. -
프로젝트 인수인계 시 꼭 기억할 5가지
프로젝트 인수인계 시 꼭 기억할 5가지
2024.02.040. 글을 시작하며 2024년을 시작하면서 입사 후 한 해동안 진행하던 프로젝트를 마무리하고 새로운 프로젝트를 인수인계 받아 진행하게 되었습니다. 이전 프로젝트는 처음부터 프로젝트를 세팅하고 코드를 직접 작성하며 진행한 프로젝트였지만 이번 프로젝트는 지난 1년부터 지금까지 개발과 유지보수 병행하며 실제 운영 중인 서비스를 유지보수하고 추가 개발하는 내용이었습니다. 이전에는 머릿속으로 정리한 논리를 코드로만 잘 작성하면 되었지만 이제는 기존 전임자의 코드를 통해서 핵심 로직을 이해하고, 전체 시스템에 대해 이해하여 서비스에 대한 유지보수와 함께 신규 기능 추가 개발을 통해 서비스를 향상시켜야할 필요가 있었습니다. 즉, 이전에는 나의 방식대로 로직만 잘 작성하여 요구사항을 충족하는 능력만 있으면 되었다면, .. -
자기개발 미루지 않는 개발자 되기
자기개발 미루지 않는 개발자 되기
2024.01.210. 글을 시작하며 모든 직업, 분야를 관통하는 문장이지만 특히 개발자라는 직업을 두고 이 문장이 단골로 등장합니다. 개발자는 평생 공부하는 직업이다. 지금 이 순간에도 많은 신기술이 등장하고, 업계 분위기가 바뀌는 개발 시장에서 개발자로서 살아남기 위해서는 지속적인 공부(자기개발)는 필수 요건입니다. 하지만 개발자로서 이 자기개발을 하는 것에 대한 가장 큰 적은 바로 "미루는 습관" 입니다. 저도 '오늘은 이만하면 되지 않았을 까', '오늘 회사일로 이미 힘들었는 데 또 공부를 해야할까?', '주말에 하자... 내일 출근해야 지' 등을 핑계로 자기개발을 미루는 습관들이 반복되다보니 제가 백엔드 개발자로서 기대했던 수준에 미치지 못하는 아쉬움을 많이 느꼈습니다. 그래서 우리가 더 좋은 개발자로 성장하는 .. -
SOLID, 객체지향 설계 5원칙
SOLID, 객체지향 설계 5원칙
2024.01.070. 글을 시작하며 객체지향 설계 5원칙 SOLID는 우리가 스프링을 공부하거나 기술면접을 준비할 때 아주 쉽게 접하게 되는 개념입니다. 보통 기술면접을 준비하면서 많이 접하게 되고 5가지 원칙을 거의 암기하는 방식으로 학습하게 되는 데 그렇다보니 금방 잊어버리고, 해당 원칙을 준수함으로서 가져오게 되는 효과 등 본질적인 내용은 정작 이해하지 못한다는 문제점이 있었습니다. 그래서 이번 글을 통해서 객체지향 언어를 사용하는 개발자라면 꼭 알아야할 객체지향 설계 5원칙을 구성하는 각 원칙의 개념정리와 함께 구체적 예시, 이해하기 어려운 부분들을 정리해보고자 합니다. 흔히 SOLID라고 불리는 이 용어의 정의는 다음과 같습니다. 좋은 객체지향 설계가 지켜야할 5가지 원칙 (SRP, OCP, LSP, ISP, ..