개발
-
비동기 api 요청이 동기적으로 작동할 때 (ASP.NET SessionState 접근 문제)개발/이슈 처리 2024. 3. 13. 18:53
세 줄 요약: 1. 브라우저 자바스크립트에서 비동기 api 요청을 했는데 동기적으로 응답이 도착했다. 2. 왜 그런가 봤더니 ASP.NET 서버는 기본적으로 세션 동시 접근을 막기 위해 SessionID가 동일한 요청들에 lock을 걸어 직렬화(serialized)하고 있었던 것. 3. 동일한 세션에서 발생하는 동시다발적 요청의 비동기 처리가 필요하다면 해당 컨트롤러에 `[SessionState(System.Web.SessionState.SessionStateBehavior.ReadOnly)]`를 걸어주자. 저희 DB에는 사이트 이용자의 여정을 기록한 로그 테이블이 있습니다. 그 로그를 가져와서 보여주는 기능을 구현하고 있었는데요. 많은 데이터를 가져오다 보니 api 호출의 응답이 1~2초 정도 걸리는 ..
-
Safari Invalid Date 문제 (new Date()에 공백 파싱 이슈)개발/이슈 처리 2024. 1. 2. 15:07
광고 세부 내역 페이지의 날짜 부분에 NaN (not a number) 오류가 있다는 이슈가 올라왔습니다. 뭘까 싶어서 해당 페이지에 접속해 봤는데 잘 나옵니다. 사파리에서 접속하면 그렇게 된다길래 들어가 봤더니, 과연 일수가 표기되어야 할 곳에 NaN이 나오네요. 뜯어보니 `new Date`에 들어가는 문자열 양식이 문제였습니다. '`2024-01-02 `' 이런 식으로 끝에 공백 하나가 들어가 있었어요. 이게 크롬이나 다른 브라우저에서는 파싱이 잘 되는데, Safari에서는 파싱을 못하고 `Invalid Date`를 띄웁니다. 그러니 해당 문자열로 숫자 계산을 하려고 하면 JS는 `NaN`을 내뱉겠죠. 크롬은 알아서 trim해서 파싱을 해주는 것 같은데, 사파리는 엄격한 기준을 갖고 있는 것 같네..
-
디스크 컨트롤러 - 왜 그렇게 풀리는가? 개념 알아보기 [프로그래머스]개발/알고리즘 문제풀이 2023. 11. 11. 16:30
문제를 풀고 나서 인터넷에 풀이들을 찾아 봤습니다. '이 방식을 쓰면 된다'는 풀이들은 많았으나, 왜 그렇게 풀면 풀리는지에 대해 이유를 설명한 글을 찾아보기가 어려워서 이렇게 글을 포스팅하게 되었습니다. 본문에는 풀이법과 정답 코드가 포함되어 있으니, 열람을 원치 않는 분들께서는 주의하여 주시기 바랍니다. 문제 보러 가기 > 개념 풀이 문제의 조건에 따르면, 작업의 요청부터 종료까지 걸린 시간의 평균을 가장 줄이는 방법을 찾아야 합니다. 한 번에 한 작업씩만 들어온다면 우선 순위가 필요 없겠지만, 현재 작업을 진행하는 도중에 여러 작업 요청이 있을 수 있습니다. 따라서 우선 순위에 따라 처리해야 하는데요. 우선 순위를 처리하는 정답부터 말씀드리자면, 현재 작업이 진행되는 동안 요청된 작업들 중에 가장 ..
-
총알 피하기 게임 - 소감 그리고 총정리 [항해 플러스 코육대]개발/사이드 프로젝트 2023. 10. 3. 22:51
게임 해보기 (링크) 이전 글 보러가기 (링크) GitHub Repository (링크) 항해 플러스: 제1회 코육대 홈페이지 (링크) 드디어! 게임을 완성했다. 생각했던 것보다 프로젝트 볼륨이 컸다. 하지만 정말 재밌게 개발했다. 덕분에 추석 연휴 기간동안 심심하지 않게 지낼 수 있었다 ㅋㅋㅋ 게임 개발은 예전부터 해보고 싶다고 생각했었는데, 제대로 개발하려면 언리얼 엔진이나 유니티를 써야 하지 않을까..? 하는 막연한 생각에 진입장벽이 생겨서 도전도 못 해보고 있었다. 이번 코육대를 계기로 간단한 웹 게임을 만들어보니, 생각보다 어렵지 않구나! 하는 기분이 들어서 뿌듯하다. 느낀 점 느낀 점을 몇 가지로 정리해 보면 이 정도이다. 자바스크립트는 정말 대단한 언어다. 안 되는게 없다. 정말로. 개발 과..
-
총알 피하기 게임 [항해 플러스 코육대]개발/사이드 프로젝트 2023. 9. 28. 17:17
게임 해보기 (링크) GitHub Repository (링크) 항해 플러스: 제1회 코육대 홈페이지 (링크) 소감 및 기능 구현 설명 보기 (링크) 추석이 다가왔다. 이번 추석 명절은 길다. 열심히 일하던 회사를 떠나 6일간의 자유를 얻은 것이다. 하지만 나는 개발자... 회사가 주는 일이 없어져 버린다면 머리 한 구석이 허전하다. idle 프로세스가 자꾸 심심하다고... 일 좀 주라고...... 마침 재밌어보이는 코딩 대회가 열린다는 소식을 접했다. 이름하야 코육대.. 코딩 육상 대회다. 아육대를 예전엔 참 즐겨봤었는데 요즘엔 하는지 안 하는지도 잘 모르겠다. 암튼 코딩을 육상 달리기 하듯 하는 대회라니 얼마나 설레는가? 더군다나 상품으로 27인치 DELL UHD 모니터가 주어진다고 하니, 피가 끓어오..
-
백준 12015 : 가장 긴 증가하는 부분 수열 2개발/알고리즘 문제풀이 2022. 12. 16. 17:08
문제는 아래 링크에 : https://www.acmicpc.net/problem/12015 12015번: 가장 긴 증가하는 부분 수열 2 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000,000) www.acmicpc.net 이 알고리즘의 원리는 다음과 같다. 가장 긴 증가하는 부분 수열을 저장할 리스트를 하나 만든다. 그리고 주어진 입력값을 순차적으로 순회하며 리스트를 갱신하는데, 아래 과정에 따른다. 현재 값 n이 리스트의 최댓값보다 크면, 수열이 증가함이 보장된다. 그러므로 리스트의 마지막에 n을 append 해준다. 현재 값 n이 리스트의 최댓값과 같거나 작다면, 수열이 증가하지 않는다...