본문 바로가기

Develop167

[MSSQL] 찾고자 하는 테이블 정보가 기억나지 않을 때 어느 정도 규모가 있는 회사에서 일을 하다보면, 여러가지 목적을 가진 데이터베이스를 다루게 된다. 그러다 보니 너무 많은 테이블이 있다보니, 한번씩 테이블 정보가 기억나지 않을 때도 있고.. 또 신규로 투입되는 프로젝트에서는 어떤 테이블이 있는지 조차 모를 때가 있다. (물론 정리가 잘되어 있는 문서들이 회사마다 있겠지만 ...) 이럴때 SSMS (SQL Server Management Studio) 에서 쉽게 테이블을 찾을 수 있는 방법을 포스팅하고자 한다. 오늘은 예시로 MSSQL의 예제 DB인 AdventureWorks를 이용해 실습을 해보겠다. 먼저 아래 명령어를 쳐보자. EXECUTE sp_helpdb; 위의 명령어는 sp_helpdb라는 sp 를 실행하라라는 의미인데, 저장 프로시저(sp)는 .. 2022. 2. 1.
[MSSQL] 쿼리로 페이지 처리 기능 구현하기 하이. 오늘은 웹 사이트를 구축하거나할 때 많이 사용되는 페이징 처리 기능을 쿼리로 구현해보려고한다. OFFSET과 FETCH NEXT를 이용하면되는데, 간단하게 각각의 역할을 말씀드리면 OFFSET 은 지정한 행의 수만 큼 건너 뛴 후에 출력하는 기능을 제공한다. 아래 쿼리를 보자. SELECT userID, name, birthYear FROM UserTbl ORDER BY userId; 위의 결과는 10명의 회원을 userId로 오름차순하여 출력한 결과를 보여준다. 여기서 OFFSET 4 ROWS를 추가하면 SELECT userID, name, birthYear FROM UserTbl ORDER BY userId OFFSET 4 ROWS; 결과가 바비킴,은지원, 조관우, 조용필은 제외되고 김범수~ .. 2022. 2. 1.
[MSSQL] 평균 값 구할 때, 소수점 자리까지 구하는 방법 하이. 최근에 이직하게 된 회사에서 주로 사용하는 RDBMS 가 SQL SERVER이다. 그래서 MSSQL 을 좀 다루는 연습히 필요해 MSSQL을 이용해 여러가지 쿼리 짜는걸 공부하고 있다. (다행스럽게 이전에 사용하던 Oracle과는 크게 차이가 없어보였다.) 오늘은 평균값을 구할때, 조심해야할 것을 포스팅해보려고한다. 아래 쿼리를 보자. SELECT AVG(amount) AS [평균 구매 갯수] FROM BuyTbl; 원래 기대한 값은 2.9XXXXX 이나 실제 값은 아래 처럼 나왔다. 평균 값을 구할때 그냥 구하면, 소수점 자리를 아예 무시해버리고 값을 구하게 된다. 이렇게 구하면 평균값이 의미가 없어지게 될 수 도 있다. 그래서 평균값을 구하는 두가지 방법을 말씀드리려 한다. 1. CAST 이용.. 2022. 2. 1.
클린코드를 위하여 먼저 글을 시작하기전에 내 자신에게 큰 박수를 보내고 싶다. 정말 부끄러운 얘기지만 여태까지 대학생 시절을 포함해서 10년 넘게 개발하는 삶을 살고 있지만, 정작 처음부터 끝까지 관련 전공 서적을 완독한적은 없었던 것 같다. 올해는 적어도 두, 세 달에 한권 씩은 전공 서적을 완독해보자는 목표를 세웠는데 드디어 처음으로 완독한 책이 생겼다. 바로 "클린코드"이다 겨우 한번 읽은 거 가지고 그러냐 하실 수도 있지만은 ㅎㅎ 저에게는 큰 의미이니 너그럽게 이해해주시길 바란다. 책을 읽고 실무에서 언제든 클린코드를 적용 할 수 있게 나름대로 정리를 좀 해보고자 한다. 1. 클린코드의 철학 훌륭한 개발자는 나쁜 코드를 지양한다. 나쁜 코드는 팀의 생산성을 저하시키고 , 나쁜코드는 기술 부채를 만들어 수정이 어렵게.. 2022. 1. 28.
[Spring] Spring 프로젝트를 분석하는 방법 보통 프로젝트에 투입될 때, 아무것도 없는 상태에서 A-Z 까지 다 구현하기도하지만 실무에서는 보통은 누가 짜놓은 코드 위에 새로운 기능을 추가하는 경우가 많다. 스프링 개발자로 일하며 다양한 프로젝트에 투입되었지만 투입될 때마다 기존의 프로젝트 환경을 분석하는게 쉽지 않았다. 문서로 잘 정리된 프로젝트들도 있었지만 많은 프로젝트들이 프로젝트 코드레벨까지 뜯어보지 않으면 분석하기 힘들게 되어있었다. 최근에 여유시간이 조금 생겨 강의를 챙겨봤었는데, 이 강의에서 강사님이 Spring 프로젝트를 분석하는 좋은 방법을 알려주셔 복습차원에서 내용을 정리해보려고한다. https://zero-base.co.kr/category_dev_camp/cleancode_1book 한달한권 | 클린코드 | zero-base .. 2022. 1. 27.
동시성 프로그래밍에 대하여 백엔드 개발자라면 동시성을 고려한 프로그래밍을 할 줄 알아야한다. 다만 아직 학생이거나 주니어 레벨에서는 이러한 동시성을 이해하기가 쉽지는 않다. 프론트 단의 개발과는 다르게 백엔드 쪽은 명확하게 구조를 이해하기가 쉽지 않다. 서버라는 것 자체가 내용이 방대하고, 구조가 복잡하기 때문이다. 분명 동시성을 이해하는 것은 실무에서의 경험이 어느정도 해결해주기는 하나 그래도 어느정도의 공부가 수반되어야 동시성을 잘 이해할 수 있다. 여러분들의 동시성에 대한 이해를 돕기 위해, 동시성에 대한 내용을 좀 정리해 보았다. 동시성 프로그래밍에 대한 오해 1. 동시성은 항상 성능을 높여준다? 동시성은 항상 성능을 높여주진 않는다. 때로 성능을 높여줄 뿐이다. 구체적으로 말하면 대기시간이 아주 길어 여러스레드가 프로세서.. 2022. 1. 19.
깔끔한 코드를 구현하기 위한 설계 규칙 네 가지 하이.. 코드를 짜는 것보다 더 중요한 것이 있다. 바로 설계다. 우리는 항상 깔끔한 코드를 짤 생각은 하지만 그전에 설계를 제대로 하는 것을 잊곤 한다. 오늘은 착실하게 따르기만 하면 우수한 설계가 나오는 간단한 네 가지 규칙을 소개하고자 한다. 이규칙을 지키면 앞으로 여러분은 코드 구조와 설계를 파악하기 쉬워질 것이고, SRP 나 DIP 같은 원칙을 적용하기도 쉬워질 것이고, 네가지 규칙이 우수한 설계의 창발성을 촉진할 것이다. 1. 모든 테스트를 실행하라. 2. 중복을 없애라. 3. 의도를 표현하라. 4. 클래스와 메서드 수를 최소로 줄여라, 단 실용적 관점에서 타협하라 하나씩 제대로 알아보자. 1. 모든 테스트를 실행하라. 위의 순서는 중요한 순서대로 나열한 것이다. 즉 모든 테스트를 실행하는 게.. 2022. 1. 13.
[Design Pattern] Template Method Pattern 오늘은 간단하게 Template Method Pattern 에 대해 정리해두려 한다. 템플릿 메서드 패턴은 Spring Framework 같은 프레임워크 환경에서 자주 활용되는 패턴이고, 실무코드에서도 중복인 코드를 줄이기 위해 자주 사용되는 패턴이니 잘 정리해두면 좋다. Template Method Pattern이란 ? 템플린 메서드 패턴은 알고리즘의 구조를 상위클래스의 메서드에 정의하고 하위클래스에서 자신에 맞게 세부 알고리즘을 정의하도록하는 패턴이다. 구현하려하는 알고리즘에 일정한 단계가 있을 것이고 , 세부적인 단계들 중에 조금씩 구현내용이 다른 경우 사용하면 된다. 작성 방법은 다음과 같다. 알고리즘의 여러단계를 각 메서드로 선언하고, 그 알고리즘을 수행할 템플릿 메서드를 만들어준다. 하위 클래.. 2022. 1. 12.
결합도와 응집도 이야기 OOP를 다루는 개발자라면 혹은 컴퓨터 공학을 전공하는 사람이라면 누구나 이런 얘기를 들어본 적이 있을 것이다. "결합도는 낮추고, 응집도는 높여야 유지보수하기 쉬운 좋은 프로그램이 된다" 개발자로 산지 거의 5년이라는 시간이 지났지만, 저 말을 제대로 이해하고 있는지도 의문이었다. 그래도 최근에 '클린코드' 라는 책을 정독하면서 나름대로 잘 이해하게 된 것 같아, 내용을 좀 정리해보려고한다. 결합도 (Coupling) 결합도는 다른 모듈간의 의존도를 의미한다. 아래그림을 보자. 파란색 사각형이 프로그램의 모듈이라고 생각해보자. 보통 프로그램은 하나의 모듈이 아닌 여러개의 모듈로 이루어져있다. 결합도는 각각의 모듈간의 영향을 주는 즉 의존도를 의미한다. 응집도 (Cohesion) 응집도는 하나의 모듈 내.. 2022. 1. 9.