👨💻📱✍️🎢314 프론트엔드 E2E 테스팅 (with Cypress) 💡 이번 포스트는 사내 위클리에서 발표한 내용을 정리한 것입니다. 📌 들어가며 작년 12월부터 약 3개월간 항공 웹 개발을 진행했는데, 생각보다 다양한 동선이 있어서 고생을 했던 기억이 있습니다. 더군다나 제가 진행했던 업무(웹 허브 오픈, TF v12 전환)가 항공의 전체적인 동선에 적용이 필요했던 것들이어서 더욱 그랬던 것 같은데요. 아직 E2E 테스트 작성경험이 없어서 이번 기회에 공부도 해볼 겸 국제선 예약동선의 E2E 테스트를 진행해봤습니다. 📌 E2E 테스트란? 우선 간단하게 E2E 테스트가 무엇인지 살펴보겠습니다. 흔히 E2E (End to End) 테스트는 브라우저 환경에서 유저가 사용하고 있다는 가정하에 애플리케이션의 전체적인 동작을 검증하는 것을 말합니다. 유닛 테스트와 통합 테스트에서.. 2023. 3. 19. JavaScript 로 생성한 csv 파일에서 한글이 깨진다면? 📌 JavaScript 로 csv 파일 생성해서 다운로드받기 이전에 csv 포맷을 다룰 일이 생겨서 Blob 객체를 생성해서 파일을 다운로드 받도록 코드를 구현했었습니다. const download = function (data) { const blob = new Blob([data], { type: 'text/csv' }); const url = URL.createObjectURL(blob) const a = document.createElement('a') a.setAttribute('href', url) a.setAttribute('download', '파일이름.csv'); a.click() } 코드는 간단합니다. 리소스타입이 명시된 Blob 객체를 생성한 뒤 이를 가리키는 Object URL 을 .. 2023. 3. 18. 왜 index 는 0부터 시작할까? 얼마전 프로그래밍을 이제 막 시작한 지인분이 다음 질문을 주셨습니다. 이제 막 프로그래밍을 시작한 사람이라면 누구나 한번 쯤 의문을 품을만한 것이라고 생각합니다. 왜 배열의 index 가 0부터 시작하는 것인가요? 저 또한 처음 C언어로 프로그래밍에 입문 했을 때 0부터 시작하는 인덱싱 체계가 낯설었지만 그때 당시에는 그냥 그런가보다~ 하고 받아들이고 넘어갔었는데, 이번 기회에 알아보면 좋을 것 같다는 생각이 들어서 이와 관련된 몇가지 배경을 찾아보고 정리해봤습니다. 📌 TL;DR 0부터 시작하는 인덱스는 자연스럽고 직관적이며, 배열의 첫 번째 원소가 항상 0번 인덱스라는 점에서 이점이 있다. 또 다른 이유는, 0부터 시작하는 인덱스는 메모리 주소를 계산하기 쉽게 만들어준다. 📌 자연스럽고 직관적이다 0.. 2023. 3. 12. LeetCode 24 - Swap Nodes in Pairs (Medium) 💡 문제 LeetCode -24번 🎯 풀이 과정 뒤에서부터 노드의 순서를 재귀적으로 변경(swap)하는 요구조건을 구현하는 문제입니다. 포인터를 바꿔주기 위해 재귀호출 시 현재 노드와 이전노드에 대한 참조를 함께 전달하도록 했습니다. 👨💻 코드 /** * Definition for singly-linked list. * function ListNode(val, next) { * this.val = (val===undefined ? 0 : val) * this.next = (next===undefined ? null : next) * } */ /** * @param {ListNode} head * @return {ListNode} */ var swapPairs = function(head) { funct.. 2023. 2. 20. LeetCode 35 - Search Insert Position (Easy) 💡 문제 LeetCode -35번 🎯 풀이 과정 target 이 배열에 존재할 경우 해당 요소의 index를, 만약 존재하지 않을 경우 target 이 위치해야할 index 를 반환하는 함수를 구현하는 문제입니다. 문제 조건에서 따라 정렬된 배열에서 이분 탐색 을 사용하면 O(logn) 에 해결할 수 있습니다. 👨💻 코드 /** * @param {number[]} nums * @param {number} target * @return {number} */ var searchInsert = function(nums, target) { let answer = null function findItem(head, tail) { if (head >= tail) { if (nums[head] === target).. 2023. 2. 20. LeetCode 169 - Majority Element (Easy) 최근 몇달동안 LeetCode 문제풀이를 못했는데, 올해에는 재미와 성취감을 위해 시간 날때마다 짬내서 간단한 문제를 하나씩 다시 풀어보려고합니다. 😄 💡 문제 LeetCode - 169번 🎯 풀이 과정 n 크기의 배열이 주어질 때, 과반수 이상의 요소를 찾는 문제입니다. 해시맵을 이용해서 구현할수도 있지만 좀 더 최적화된 방법으로 해결할 수도 있습니다. 요구조건에 의해 과반수를 차지하는 요소가 반드시 존재한다는 것이 보장되기 때문에 보이어-무어 과반수 투표 알고리즘 을 활용하면 O(n) 의 시간복잡도와 O(1) 의 공간 복잡도를 가지는 풀이를 만들 수 있습니다. 이 알고리즘을 간단히 풀어보자면, 길이 n 을 가지는 배열 A 에서 과반수를 차지하는 요소 a가 [n/2 + 1] 개 있을 경우에 나머지 요소.. 2023. 2. 5. 이전 1 ··· 4 5 6 7 8 9 10 ··· 53 다음