티스토리

Dev Level 1
검색하기

블로그 홈

Dev Level 1

devlevel1.tistory.com/m

Where developers grow together

구독자
0
방명록 방문하기

주요 글 목록

  • 자바스크립트에서의 메타프로그래밍: 코드를 다루는 코드 메타프로그래밍은 프로그래밍의 고급 기법 중 하나로, 프로그램이 자기 자신을 분석하고 수정하거나 다른 프로그램을 생성 및 조작할 수 있는 능력을 말합니다. 자바스크립트는 동적 언어의 특성과 함께 강력한 메타프로그래밍 기능을 제공합니다. 메타프로그래밍의 기본 개념메타프로그래밍을 통해 개발자는 다음과 같은 작업을 수행할 수 있습니다.런타임에 코드 생성 및 실행프로그램의 구조와 동작을 동적으로 수정객체와 함수의 속성을 검사하고 조작자바스크립트에서 메타프로그래밍을 구현하는 주요 도구로는 Proxy, Reflect, 그리고 eval 함수 등이 있습니다. Proxy 객체Proxy는 객체의 기본적인 동작(속성 조회, 할당, 순회 등)을 가로채고 재정의할 수 있게 해주는 객체입니다.const handler = { ge.. 공감수 3 댓글수 3 2024. 11. 27.
  • 자바스크립트에서의 쓰로틀링(Throttling) 기법 현대 웹 애플리케이션에서는 사용자 상호작용, 애니메이션, 실시간 데이터 업데이트 등으로 인해 이벤트가 매우 빈번하게 발생합니다. 이러한 상황에서 모든 이벤트를 처리하는 것은 성능 저하를 초래할 수 있습니다. 쓰로틀링(Throttling)은 이러한 문제를 해결하기 위한 중요한 최적화 기법 중 하나입니다. 쓰로틀링이란?쓰로틀링은 일정 시간 간격으로 함수 실행을 제한하는 기법입니다. 즉, 연속적으로 발생하는 이벤트에 대해 일정 주기마다 한 번씩만 핸들러를 호출하도록 합니다. 이는 특히 스크롤 이벤트, 마우스 이동, 윈도우 리사이징 등 연속적으로 빠르게 발생하는 이벤트를 다룰 때 유용합니다. 쓰로틀링의 작동 원리함수 호출 시 마지막 실행 시간을 확인현재 시간과 마지막 실행 시간의 차이가 설정된 간격보다 크면 함.. 공감수 0 댓글수 0 2024. 11. 26.
  • 자바스크립트에서의 디바운싱(Debouncing)을 이용한 성능 최적화 현대 웹 애플리케이션에서 사용자 경험과 성능은 매우 중요합니다. 특히 빈번한 이벤트 처리나 API 호출이 필요한 상황에서, 불필요한 연산을 줄이고 리소스를 효율적으로 사용하는 것이 핵심입니다. 이러한 맥락에서 디바운싱(Debouncing)은 자바스크립트 개발자가 반드시 알아야 할 성능 최적화 기법 중 하나입니다. 디바운싱이란?디바운싱은 연속적으로 발생하는 이벤트를 그룹화하여, 마지막 이벤트 발생 후 일정 시간이 지난 뒤에 단 한 번만 핸들러를 호출하는 기법입니다. 이는 특히 입력 필드의 변경, 윈도우 리사이징, 스크롤 이벤트 등 빈번하게 발생하는 이벤트를 다룰 때 유용합니다. 디바운싱의 작동 원리이벤트 발생 시 타이머 설정설정된 대기 시간 내에 새 이벤트 발생 시 이전 타이머 취소 및 새 타이머 설정대기.. 공감수 0 댓글수 0 2024. 11. 25.
  • 자바스크립트 성능 최적화: 메모이제이션 메모이제이션(Memoization)은 반복적인 함수 호출에서 발생하는 성능 저하를 줄이기 위한 기술로, 특히 재귀 함수나 계산량이 많은 함수에서 효과적입니다. 이 블로그에서는 메모이제이션의 개념, 작동 방식, 자바스크립트에서의 구현 방법, 그리고 실제 사용 사례에 대해 자세히 설명하겠습니다. 1. 메모이제이션의 개념메모이제이션은 이전에 계산한 결과를 저장하여 동일한 입력에 대해 반복적으로 계산하는 것을 피하는 기법입니다. 이 방식은 주로 순수 함수(pure function)에서 효과적이며, 입력이 동일하면 항상 동일한 출력을 보장합니다. 메모이제이션을 통해 다음과 같은 이점을 얻을 수 있습니다:성능 향상: 중복된 계산을 피하여 실행 시간을 단축합니다.자원 절약: CPU 사용량을 줄이고, 메모리 사용량을 .. 공감수 0 댓글수 0 2024. 11. 24.
  • 브라우저와 캐싱: 웹 성능 최적화의 핵심 웹 브라우저의 캐싱 메커니즘은 웹 애플리케이션의 성능을 크게 향상시키는 중요한 요소입니다. 이 기술 블로그에서는 브라우저 캐싱의 작동 원리, 이점, 그리고 구현 방법에 대해 자세히 살펴보겠습니다. 브라우저 캐싱의 기본 개념브라우저 캐싱은 웹 리소스(HTML 페이지, 이미지, 스크립트 파일 등)를 사용자의 로컬 기기에 저장하는 프로세스입니다. 이를 통해 웹사이트의 로딩 속도를 향상시키고, 서버 부하를 줄이며, 네트워크 대역폭을 절약할 수 있습니다. 캐싱의 작동 원리리소스 요청: 브라우저가 서버에 리소스를 요청합니다.캐시 확인: 브라우저는 먼저 로컬 캐시에서 해당 리소스를 찾습니다.캐시 히트: 리소스가 캐시에 있으면 즉시 로드합니다.캐시 미스: 리소스가 없으면 서버에서 다운로드하고 캐시에 저장합니다. 캐시 .. 공감수 0 댓글수 0 2024. 11. 23.
  • 단방향 암호화와 양방향 암호화 단방향 암호화와 양방향 암호화는 데이터 보안을 위한 두 가지 주요 암호화 방식입니다. 각각의 특징과 용도를 자세히 살펴보겠습니다. 단방향 암호화단방향 암호화는 원본 데이터를 암호화된 형태로 변환하지만, 암호화된 데이터를 다시 원본으로 복원할 수 없는 방식입니다.특징암호화는 가능하지만 복호화는 불가능합니다.주로 비밀번호 저장에 사용됩니다.해시 함수를 통해 구현됩니다.장점데이터 유출 시에도 원본 정보를 보호할 수 있습니다.비교적 빠른 처리 속도를 제공합니다.단점레인보우 테이블 공격에 취약할 수 있습니다.이를 보완하기 위해 솔팅(salting)과 키 스트레칭 기법을 사용합니다.대표적인 알고리즘SHA (Secure Hash Algorithm)MD5 (Message Digest algorithm 5) 양방향 암호.. 공감수 0 댓글수 0 2024. 11. 22.
  • Tagged Template Literals Tagged Template Literals는 자바스크립트에서 문자열 조작을 위한 강력한 도구입니다. 이를 활용하여 동적 SQL 쿼리 생성과 XSS(Cross-Site Scripting) 방지를 위한 고급 템플릿 기법을 구현할 수 있습니다.동적 SQL 쿼리 생성Tagged Template Literals를 사용하면 안전하고 효율적으로 동적 SQL 쿼리를 생성할 수 있습니다.기본 사용법const sql = (strings, ...values) => { // SQL 쿼리 생성 로직 return { text: finalQuery, values: sanitizedValues };};const userId = 5;const query = sql`SELECT * FROM users WHERE id = ${use.. 공감수 0 댓글수 0 2024. 11. 21.
  • document.createDocumentFragment를 활용한 성능 최적화 자바스크립트로 DOM을 조작할 때 성능 최적화는 중요한 고려사항입니다. 특히 대량의 DOM 요소를 추가할 때 document.createDocumentFragment를 활용하면 성능을 크게 개선할 수 있습니다. 이 글에서는 DocumentFragment의 개념과 이를 이용한 성능 최적화 방법을 살펴보겠습니다. DocumentFragment란?DocumentFragment는 메모리상에만 존재하는 경량화된 Document 객체입니다. 주요 특징은 다음과 같습니다.DOM 트리의 일부가 아니므로 화면에 렌더링되지 않습니다.메모리상에서 DOM 조작을 수행할 수 있습니다.실제 DOM에 추가될 때는 자식 노드들만 추가됩니다. 성능 최적화의 원리DocumentFragment를 사용하면 다음과 같은 이유로 성능이 향상됩.. 공감수 1 댓글수 1 2024. 11. 20.
  • 암호화 알고리즘 기록 암호화 알고리즘은 데이터를 보호하기 위해 평문을 암호문으로 변환하는 기술입니다. 이는 크게 양방향 암호화와 단방향 암호화로 나뉩니다. 양방향 암호화 대칭키 암호화 특징: 동일한 키로 암호화와 복호화를 수행합니다. 장점: 연산 속도가 빠릅니다. 단점: 키 분배가 어렵습니다. 예시: DES, 3DES, AES 비대칭키 암호화 특성: 서로 다른 공개키와 비밀키를 사용합니다. 장점: 키 관리가 용이합니다. 단점: 대칭키 암호화보다 속도가 느립니다. 예시: RSA, ECC 단방향 암호화 해시 알고리즘 특징: 복호화가 불가능하며, 고정된 길이의 해시 값을 생성합니다. 예시: MD5, SHA-256 공감수 0 댓글수 0 2024. 11. 19.
  • 페어 프로그래밍: 협업의 힘을 극대화하다 페어 프로그래밍은 애자일 개발 방법론 중 하나로, 두 명의 개발자가 하나의 워크스테이션에서 함께 작업하는 기법입니다. 이 방식은 코드 품질 향상과 지식 공유에 효과적인 것으로 알려져 있습니다.페어 프로그래밍의 기본 구조페어 프로그래밍에서는 두 가지 주요 역할이 있습니다.드라이버(Driver): 실제로 코드를 작성하는 역할을 담당합니다.네비게이터(Navigator): 전략을 제시하고 코드를 검토하는 역할을 합니다.이 두 역할은 주기적으로 교대하며, 보통 1시간 작업 후 10분 휴식하는 방식으로 진행됩니다.페어 프로그래밍의 장점1. 코드 품질 향상페어 프로그래밍은 두 명의 개발자가 동시에 코드를 작성하기 때문에, 코드의 품질이 향상됩니다. 내비게이터는 드라이버가 작성하는 코드를 실시간으로 검토하며, 잠재적인.. 공감수 0 댓글수 0 2024. 11. 18.
  • 코드 리뷰: 더 나은 코드를 위한 필수 과정 코드 리뷰는 소프트웨어 개발 과정에서 매우 중요한 단계입니다. 이는 개발자들이 서로의 코드를 검토하고 피드백을 제공하는 과정으로, 코드의 품질을 향상시키고 팀의 협업을 강화하는 데 큰 도움이 됩니다. 코드 리뷰의 중요성코드 리뷰는 소프트웨어 개발 과정에서 중요한 단계로, 여러 가지 이유로 팀과 프로젝트에 긍정적인 영향을 미칩니다. 다음은 코드 리뷰의 주요 중요성과 그 이점입니다.품질 향상코드 리뷰는 버그를 조기에 발견하고 수정할 수 있는 기회를 제공합니다. 다른 개발자가 코드를 검토함으로써, 코드 작성자가 놓쳤거나 간과한 문제를 발견할 수 있습니다. 이 과정은 최종 제품의 품질을 높이고, 사용자에게 더 나은 경험을 제공합니다. 또한, 리뷰를 통해 코드의 안정성을 높일 수 있으며, 장기적으로 유지보수 비용.. 공감수 2 댓글수 2 2024. 11. 17.
  • 애자일(Agile) 소프트웨어 개발: 유연성과 효율성의 만남 애자일은 '민첩한', '기민한'이라는 뜻을 가진 단어로, 소프트웨어 개발에서는 빠르게 변화하는 요구사항에 유연하게 대응할 수 있는 개발 방법론을 의미합니다. 애자일의 핵심 가치애자일 선언문(Agile Manifesto)에 따르면, 애자일의 핵심 가치는 다음과 같습니다.프로세스와 도구보다는 개인과 상호작용을포괄적인 문서보다는 작동하는 소프트웨어를계약 협상보다는 고객과의 협력을계획을 따르기보다는 변화에 대응하기를 애자일의 주요 특징1. 반복적이고 점진적인 개발애자일은 전체 개발 과정을 여러 개의 작은 주기, 즉 스프린트로 나누어 진행합니다. 각 스프린트는 보통 1-4주 정도로 설정되며, 이 기간 동안 팀은 계획, 설계, 개발, 테스트, 검토의 전체 사이클을 경험합니다. 이러한 반복적인 사이클은 팀이 빠르게 .. 공감수 3 댓글수 3 2024. 11. 16.
  • TDD(테스트 주도 개발) 방법론을 실무에 대입하기 테스트 주도 개발(Test-Driven Development, TDD)은 소프트웨어 개발에서 품질을 높이고, 버그를 줄이며, 유지보수를 용이하게 하는 강력한 방법론입니다. TDD의 기본 원칙TDD는 다음의 세 가지 주요 단계로 구성됩니다: 1. 테스트 작성 (Red): 기능이 구현되기 전에 해당 기능에 대한 테스트 코드를 작성합니다. 이 테스트는 실패해야 하며, 목표로 하는 기능이 아직 구현되지 않았음을 나타냅니다. 2. 코드 작성 (Green): 테스트를 통과할 수 있도록 최소한의 코드를 작성합니다. 이 단계에서는 코드의 품질보다는 테스트를 통과하는 것이 우선입니다. 3. 리팩토링 (Refactor): 작성한 코드를 개선합니다. 이 단계에서는 코드의 가독성과 효율성을 높이기 위해 기존 코드를 리팩토링합.. 공감수 2 댓글수 1 2024. 11. 15.
  • 3계층 구조(3 Tier Architecture) 3계층 구조(3-Tier Architecture)는 소프트웨어 애플리케이션 설계에서 널리 사용되는 아키텍처 패턴입니다. 이 구조는 애플리케이션을 세 개의 논리적 및 물리적 컴퓨팅 계층으로 나누어 구성합니다. 각 계층의 역할과 특징, 그리고 이 구조의 장단점에 대해 자세히 살펴보겠습니다.3계층 구조의 개요3계층 구조는 다음과 같은 세 가지 주요 계층으로 구성됩니다:프레젠테이션 계층 (Presentation Tier)애플리케이션 계층 (Application Tier)데이터 계층 (Data Tier)이 구조는 각 계층을 독립적으로 개발하고 유지보수할 수 있도록 설계되어 있어, 복잡한 엔터프라이즈 애플리케이션의 개발과 관리를 용이하게 합니다.각 계층의 상세 설명프레젠테이션 계층 (Presentation Tier.. 공감수 3 댓글수 2 2024. 11. 14.
  • 자바스크립트의 동시성과 병렬성 자바스크립트 개발자라면 동시성과 병렬성의 개념을 이해하는 것이 매우 중요합니다. 이 글에서는 이 두 개념의 차이점, 자바스크립트에서의 구현 방법, 그리고 관련 이론 및 용어를 정리해보겠습니다. 동시성 (Concurrency)동시성은 여러 작업이 동시에 실행되는 것처럼 보이는 상태를 말합니다. 자바스크립트는 기본적으로 단일 스레드로 동작하기 때문에 실제로 여러 작업을 동시에 수행할 수는 없습니다. 대신, 비동기 작업을 통해 여러 작업이 동시에 처리되는 것처럼 구현할 수 있습니다. 동시성 예제아래 코드는 setTimeout과 Promise를 사용하여 동시성을 구현한 예시입니다.console.log("작업 1 시작");setTimeout(() => { console.log("작업 1 완료");}, 100.. 공감수 2 댓글수 1 2024. 11. 13.
  • Transaction과 ACID 이해하기 Transaction이란?Transaction은 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위입니다. 이는 한 번에 수행되어야 할 일련의 연산들을 의미합니다. Transaction은 전체가 성공적으로 완료되거나 전혀 실행되지 않은 상태로 남아있어야 합니다.예를 들어, 은행 계좌에서 돈을 인출하는 과정을 생각해봅시다:계좌 잔액 확인인출 금액만큼 잔액 감소현금 지급거래 내역 기록이 모든 단계가 하나의 transaction으로 처리되어야 합니다. ACID 속성ACID는 데이터베이스 transaction의 안정성을 보장하기 위한 네 가지 속성을 나타냅니다.Atomicity (원자성)Consistency (일관성)Isolation (격리성)Durability (지속성)각 속성에 대해 자세히 살펴보겠습.. 공감수 2 댓글수 1 2024. 11. 12.
  • JavaScript의 Fetch 메서드는 왜 await를 두 번 사용하는가? JavaScript의 비동기 프로그래밍은 최근 웹 개발에서 필수적인 요소가 되었습니다. 특히, fetch 메서드와 async/await 구문은 외부 데이터를 가져오는 데 매우 유용하게 사용됩니다. 그러나 많은 개발자들이 fetch 메서드를 사용할 때 await를 두 번 사용하는 이유에 대해 궁금해합니다.  Fetch 메서드란?fetch 메서드는 네트워크 요청을 보내고 응답을 받아오는 기능을 제공합니다. 주로 API 호출을 통해 서버로부터 데이터를 가져올 때 사용됩니다. 기본적으로 fetch는 프로미스를 반환하므로, 비동기 처리에 적합합니다.const response = await fetch('https://api.example.com/data');위의 코드에서 fetch 메서드는 API로부터 데이터를 요.. 공감수 7 댓글수 6 2024. 11. 11.
  • B-Tree와 B+Tree: 효율적인 데이터 구조의 비교 데이터베이스 시스템과 파일 시스템에서 중요한 역할을 하는 B-Tree와 B+Tree에 대해 알아보겠습니다. 이 두 데이터 구조는 대용량 데이터를 효율적으로 관리하고 검색하는 데 필수적입니다. B-Tree의 기본 개념B-Tree는 1970년 Rudolf Bayer와 Edward M. McCreight에 의해 발명된 자가 균형 트리 데이터 구조입니다. B-Tree의 주요 특징은 다음과 같습니다:각 노드는 최대 m개의 자식을 가질 수 있습니다.루트 노드와 리프 노드를 제외한 모든 노드는 최소 ⌈m/2⌉개의 자식을 가져야 합니다.루트 노드는 리프가 아닌 경우 최소 2개의 자식을 가져야 합니다.모든 리프 노드는 같은 레벨에 있어야 합니다.비리프 노드는 k-1개의 키와 k개의 자식 포인터를 가집니다 (2 ≤ k ≤.. 공감수 1 댓글수 0 2024. 11. 10.
  • 데이터베이스 인덱싱(Indexing) 데이터베이스 시스템에서 인덱싱은 성능 최적화의 핵심 요소입니다. 이 글에서는 데이터베이스 인덱싱의 기본 개념부터 고급 기술까지 포괄적으로 다루어 보겠습니다. 인덱스의 기본 개념인덱스 데이터베이스 테이블의 특정 열에 대한 검색 속도를 향상시키기 위해 사용되는 데이터 구조입니다. MongoDB 공식 문서에 따르면, 인덱스는 B-Tree 데이터 구조를 사용하여 특정 필드 또는 필드 집합의 값을 정렬된 순서로 저장합니다. Oracle 데이터베이스 문서는 "인덱스는 테이블 행에 대한 세스 속도를 높일 수 있는 스키마 객체"라고 정의하고 있습니다. 인덱스의 작동 원리인덱스는 선택된 열의 값과 해당 데이터가 저장된 위치를 가리키는 포인터로 구성됩니다. 쿼리가 실행될 때, 데이터베이스 엔진은 인덱스를 사용하여 전체 이.. 공감수 1 댓글수 0 2024. 11. 9.
  • varchar(255)를 알고 사용하는가? 데이터베이스를 설계할 때 우리는 종종 아무 생각 없이 varchar(255)를 사용합니다.하지만 이런 관행에 대해 한 번쯤 되돌아볼 필요가 있습니다. 과연 우리는 이 데이터 타입을 제대로 이해하고 사용하고 있을까요? VARCHAR의 기본 구조먼저 VARCHAR의 기본 구조를 이해해야 합니다. MySQL 공식 문서에 따르면VARCHAR values are stored as a 1-byte or 2-byte length prefix plus data. The length prefix indicates the number of bytes in the value. A column uses one length byte if values require no more than 255 bytes, two length .. 공감수 3 댓글수 4 2024. 11. 8.
  • 원온원(1on1) 미팅 관리 시스템: 설계 및 구현 가이드 본 글에서는 조직 내 팀원 간의 소통을 강화하고 개인의 성장을 도모하기 위해 설계한 원온원(1on1) 미팅 관리 시스템에 대해 상세히 설명드리고자 합니다. 이 시스템의 목적, 데이터베이스 설계, 주요 기능 및 기대 효과 등을 체계적으로 살펴보겠습니다. 1. 프로젝트 목적원온원 미팅은 팀원 간의 신뢰를 구축하고, 피드백을 주고받으며, 목표를 설정하는 중요한 과정입니다. 그러나 효과적인 미팅을 위해서는 체계적인 관리가 필수적입니다. 본 시스템은 원온원 미팅의 기록, 피드백 관리, 행동 항목 추적 등을 통해 팀워크를 강화하고, 개인의 성과를 도모할 것을 목표로 합니다. 이 시스템을 통해 조직의 전반적인 성과 향상과 함께, 직원 만족도를 높이는 데 기여할 수 있습니다. 2. 데이터베이스 설계시스템의 핵심은 데이.. 공감수 1 댓글수 0 2024. 11. 7.
  • 개발자를 위한 블로그 글쓰기 개발자 블로그를 작성하는 이유는 여러 가지가 있습니다. 첫째, 지식을 정리하고 체계화하기 위해서입니다. 개발 분야는 빠르게 변화하고, 새로운 기술과 도구가 계속 등장합니다. 블로그에 글을 쓰면서 내가 배운 내용을 정리하고, 복잡한 개념을 간단하게 설명하는 과정에서 이해도를 높일 수 있습니다. 정보를 공유하는 즐거움 저는 새로운 도구나 기술, 유용한 팁을 공유하는 것을 정말 좋아합니다. 개발자라는 직업 특성상, 제가 배운 것들이나 해결한 문제를 다른 분들과 나누는 것은 큰 의미가 있습니다. 이 블로그를 통해 제가 관심 있는 주제에 대한 생각을 정리하고, 다른 개발자분들에게 도움이 되고 싶습니다. 질문한 분에게만 메모를 보내는 것보다, 더 많은 분에게 유익할 수 있도록 글로 남기는 것이 훨씬 가치 있다고 생.. 공감수 6 댓글수 7 2024. 11. 5.
  • 테이블 정보 조회하기, Table Description 쿼리 해당 쿼리는 MSSQL 기준으로 작성되었습니다.이 쿼리는 지정된 사용자 정의 테이블의 열 정보를 포함하여, 각 열의 데이터 유형, 길이, NULL 허용 여부, 정렬 규칙, 그리고 설명을 조회합니다. 결과는 열의 순서에 따라 정렬됩니다. SELECT c.colorder AS column_index, a.name AS table_name, e.value AS table_description, c.name AS column_name, f.value AS column_description, d.data_type AS type, d.character_octet_length AS length, d.is_nullable AS is_nullab.. 공감수 1 댓글수 0 2024. 10. 25.
  • 저장 프로시저 내용 검색하기 해당 글은 MSSQL 기준으로 작성되었습니다. 기존의 저장 프로시저를 수정하거나 리팩토링할 때, 특정 구문이나 함수 호출을 포함하고 있는 프로시저를 확인하는 데 유용합니다. 예를 들어, SearchString이 "UPDATE"인 경우, 모든 업데이트 관련 프로시저를 찾아볼 수 있습니다. SELECT OBJECT_NAME(object_id),        OBJECT_DEFINITION(object_id)FROM sys.proceduresWHERE OBJECT_DEFINITION(object_id) LIKE '%SearchString%' SELECT OBJECT_NAME(object_id), OBJECT_DEFINITION(object_id): 이 부분은 object_id를 이용해 저장 프로시저의 이름과 .. 공감수 2 댓글수 1 2024. 10. 8.
  • [SQL Server] MSSQL로 직장 근무 연수 구하기 SQL Server 기준으로 작성되었습니다. 이 쿼리는 특정 입사 날짜(@v_enterDate)부터 오늘 날짜까지의 근무 기간을 년, 월, 일로 계산합니다. HR 관련 시스템이나 근무 기간을 쿼리로 계산해고 싶은 분들은 다양한 응용 프로그램에서 사용할 수 있습니다. SQL을 이용한 근무 기간 계산하기근무 기간을 정확히 계산하는 것은 인사 관리, 급여 계산, 휴가 정산 등 많은 HR 관련 업무에서 중요한 부분입니다. 오늘은 SQL 쿼리를 이용해 특정 입사 날짜로부터 오늘까지의 근무 기간을 년, 월, 일 단위로 계산하는 방법에 대해 알아보겠습니다. 사용된 SQL 함수DATEDIFF: 두 날짜 사이의 차이를 계산합니다.MONTH, DAY: 각각 날짜에서 월과 일을 추출합니다.CONVERT: 데이터 타입을 변환.. 공감수 1 댓글수 0 2024. 5. 13.
  • Firebase 프로젝트 진행하기 Firebase는 Google의 서비스입니다.Firebase Console - Google 회원가입을 진행해 주세요. 프로젝트 생성1. 프로젝트 추가 2. 프로젝트 이름을 입력 3. Google Analytics는 사용하실 분만 선택 4. 완료 주요 기능Authentication간편한 인증 기능을 제공하여, 이메일 및 비밀번호, 전화번호, 다양한 소셜 미디어 계정을 통한 로그인 기능을 지원합니다.App Check앱 체크는 승인되지 않은 클라이언트가 백엔드 리소스에 액세스하는 것을 방지, API 리소스를 악용하지 못하게 보호합니다. Firestore Database Realtime Database보다 더 강력한 쿼리 기능과 더 큰 확장성을 제공합니다. 데이터는 문서 및 컬렉션 형태로 저장되며, 실시간 데이.. 공감수 1 댓글수 0 2024. 5. 6.
  • JavaScript로 API 호출 어떻게 하는 건데? API (Application Programming Interface)API는 응용 프로그램 간 상호작용을 가능하게 하는 메커니즘입니다. 즉, 다른 프로그램이나 서비스의 기능을 사용할 수 있도록 해주는 인터페이스 역할을 합니다. API 호출하기자바스크립트로 API를 호출하는 방법은 여러 가지가 있습니다. 1. XMLHttpRequest 사용하기XMLHttpRequest는 자바스크립트를 이용해 서버와 상호작용하고 데이터를 쉽게 받아올 수 있게 하는 객체입니다. 조금 오래된 방식으로, 모든 브라우저에 지원됩니다만 Internet Explorer 친구가 무덤에 있어 괜찮습니다 :)var xhr = new XMLHttpRequest(); xhr.open('GET', 'https://api.example.com/.. 공감수 2 댓글수 0 2024. 5. 6.
  • [JavaScript] 날씨 앱 만들기(OpenWeatherMap API) OpenWeatherMap API를 이용하여, JavaScript로 날씨 앱을 만들어 보려고 합니다. Directory 구조weather-app/│├── css/ │ └── style.css │├── js/ │ ├── api.js │ ├── ui.js │ └── main.js │├── index.html ├── .gitignore └── README.md css/: 스타일시트 파일들을 포함합니다.js/: 자바스크립트 파일들을 포함합니다. api.js: OpenWeatherMap 같은 외부 날씨 API와 통신하는 .. 공감수 1 댓글수 0 2024. 5. 5.
  • [PHP] filter_var_array 데이터 검증 처리하기 filter_var_array() 함수는 PHP에서 여러 변수를 동시에 검증하고 필터링할 수 있는 유용한 기능입니다. 이 함수는 배열의 각 요소를 지정된 필터로 처리하여, 필터링되거나 검증된 데이터만을 반환해줍니다. 사용자 입력 데이터 같은 외부 데이터를 처리할 때 특히 유용하게 사용됩니다. filter_var_array(array $array, array|int $options = FILTER_DEFAULT, bool $add_empty = true): array|false|null$data: 검증하거나 필터링할 데이터를 포함하고 있는 배열.$definition: 각 데이터 요소에 적용할 필터 또는 옵션의 배열.$add_empty: 필터링된 배열에 빈 값을 포함할지 여부를 결정함 (기본값: true)... 공감수 1 댓글수 0 2024. 5. 2.
  • [DB] 서브쿼리(Subquery)? 서브쿼리(Subquery)서브쿼리(subquery)는 하나의 SQL문에 포함되어 있는 또 다른 SQL 문을 말합니다.서브쿼리(subquery)를 포함하고 있는 쿼리(query)를 외부쿼리(outer query)라고 부르며, 서브쿼리(subquery)는 내부쿼리(inner query)라고도 부릅니다.서브쿼리는 다음과 같이 괄호()로 감싸져서 사용됩니다.서브쿼리(Subquery)를 사용할 때는 성능 저하를 유의해야 하며, 가능하다면 JOIN을 사용하는 것이 효율적일 수 있습니다. 서브쿼리는 복잡한 데이터 처리 요구사항에 유용하지만, 쿼리의 복잡성과 실행 시간이 증가할 수 있습니다.  서브쿼리?id가 '30'인 임직원 보다 입사일이 빠른 임직원의 id, 입사일(enter_date)을 알고 싶다고 가정합니다. .. 공감수 1 댓글수 0 2023. 7. 17.
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.