레이스 컨디션(Race Condition): 동시성 프로그래밍의 복잡성을 보여주는 단적인 사례.- 두 개 이상의 프로세스나 스레드가 동일한 자원(데이터, 메모리 등)에 동시 접근할 때,실행 순서에 따라 의도치 않은 결과가 발생하는 상황을 의미한다- 즉, 처리 순서가 예측 불가능하여, 논리적인 버그나 예상치 못한 동작이 발생할 수 있는 문제라고 할 수 있다. 이는 병렬 처리(멀티스레딩, 비동기 프로그래밍)나 동시성 프로그래밍 환경에서 자주 나타난다. 레이스 컨디션 특징1. 비결정성(Non-deterministic Behavior)- 실행할 때마다 결과가 달라질 수 있다. 2. 공유 자원 문제- 여러 프로세스/스레드가 공유 자원(변수/메모리 등)에 동시에 접속하여 충돌이 발생. 3. 타이밍 의존성- 작업이..
플로우 차트 그려보기 실습을 하다가, 소셜로그인의 절차에 대해 고민하며 의문점이 들었다. 의문점을 촉발시켰던 의문의 그 문장소셜로그인에서 비밀번호. 그럼 이제 이거는 우리가 구글 로그인으로 자동 로그인으로 돼서얘네가 이 값을 가져온 거거든요. 그럼 이걸로만 아이디 값으로 나오고 있고 지금 비밀번호는 얘네가 체인으로 저장한 거를 지금 진행하고 있는 거예요. 토큰을. 소셜로그인, 자동로그인, 체인?소셜 로그인: 사용자가 구글 같은 소셜 플랫폼 계정을 통해 로그인하는 방식.사용자가 별도의 회원가입이나 비밀번호 입력 없이 구글 계정을 이용해 로그인한다. 자동 로그인: 한 번만 계정 정보를 입력해두면, 후에는 자동으로 정보를 불러와 로그인하는 방식.사용자가 구글 계정으로 로그인하면, 시스템이 자동으로 구글에서 ..
역시 비교봇/등록봇 코드를 보다 보니, 쿼리문 생성 시 placeholder를 활용하는 곳이 있어 찾아보았다. 결론부터 말하면 이 로직은, "INSERT 쿼리에 placeholders를 추가하여 최종 SQL 쿼리 생성"이것이다. 예를 들면 마지막 문장으로query += placeholders;placeholders**에서 생성된다수의 SQL 자리 표시자(Placeholders)를query 문자열에 추가하여 최종적으로 INSERT SQL 쿼리를 완성 이런 형태로 활용하곤 한다. 배경1. query 초기 상태:- 코드에서 query는 기본적인 INSERT INTO 쿼리 구문이다.let query = `INSERT INTO tb_products (` + colArr.join(',') + `) VALUES `..
실무에서 코드 자동화 상품 등록봇/비교봇을 수정하다가, 로직에 대해 차이를 조금 더 파보았다.등록봇등록봇 핵심 - 상품 정보 등록 및 업데이트 Text-based Flow DiagramStart │ ├──> 초기화: `shopName`, `productInfo` 등 입력값 확인 │ ├──> 상품 추가 (`insertQuery`) │ └── 데이터베이스에 신규 상품 데이터 추가 │ ├──> 상품 변경 (`updateQuery`) │ ├── 기존 데이터의 `useYn` 값을 "N"으로 변경 │ └── 데이터베이스에 변경된 데이터 추가 (`insertQuery`) │ ├──> 상품 삭제 │ ├── 기존 데이터의 `useYn` 값을 "N"으로 변경 │ ..
스터디를 하다가, 정보의 순정성과 관련된 설명이 나와서 간단히 정리해보았다. 정보의 순정성(Information Integrity)"정보가 원래 의도된 대로 변질되지 않고, 신뢰할 수 있으며 정확하게 유지되는 것"을 의미합니다.이는 정보가 생성된 후부터 전달되고 사용될 때까지 일관성과 무결성이 보장되는 것을 말한다. 주요 요소정확성(Accuracy): 정보가 사실과 일치하며 오류 없이 제공되는지 여부.일관성(Consistency): 정보가 여러 시스템 또는 채널에서 동일하게 나타나는지 여부.신뢰성(Reliability): 정보가 의도된 목적에 부합하고, 사용자가 신뢰할 수 있는지 여부.무결성(Integrity): 정보가 승인되지 않은 수정 없이 원래의 상태를 유지하는지 여부.예시데이터베이스 관리- 시스템..
SQL 스크립트에서 왜 ?를 사용할까?역시 비교봇 / 등록봇 코드를 보다가, ?이 하도 많아서, 기억을 더듬어볼 겸 ?의 사용에 대해 정리를 해보았다. 1. 물음표 기호(?)의 쓰임- SQL의 '자리 표시자(Placeholder)'로 사용된다.: SQL 쿼리에서 동적으로 값을 삽입할 때 데이터베이스에 직접 값을 넣는 대신에 ?로 자리를 표시한다. => 이후, JavaScript에서 values 배열에 실제 데이터를 채우면 데이터베이스가 이를 바인딩하여 처리한다. 2. 물음표 기호 사용 목적1) 보안 강화- SQL 인젝션 방지: SQL 쿼리에 값을 직접 삽입하면 보안 문제가 발생할 수 있다(ex: SQL 인젝션 공격).=> ?를 사용하면 값이 안전하게 바인딩되므로 SQL 인젝션을 방지할 수 있다. 아래와..
템플릿화 시스템의 구조Admin Side이벤트 운영에 필요한 정보를 입력하고 저장하는 백오피스 역할이다.특정 유저 노출에 필요한 정보와 이벤트 당첨 정보를 관리한다.백오피스에서 입력된 정보를 저장하고 조회 기능을 통해 다시 확인이 가능 Data Side이벤트 정보와 신청 정보를 저장하는 데이터베이스(DB)로 구성된다.데이터는 필요 시 조회하여 User Side에 노출한다. User Side:저장된 정보를 바탕으로 화면에 노출되는 구조이다.FO 템플릿 (유형 1, 2, 3):여러 유형의 템플릿이 존재하며, 각 유형에 맞춰 화면에 표시된다.분기 처리하여 하나의 구조로 다양한 템플릿을 노출하거나, 각각의 템플릿을 별도로 설정할 수 있다.템플릿 시스템의 작동 원리어드민(백오피스)에서 이벤트 정보를 입력하고 저장..
1) 온라인 서비스의 운영 방식온라인 서비스 구조데이터의 입력, 처리, 출력의 구성을 통해 운영됨.사용자가 접속하는 다양한 기기(브라우저, 앱 등)에 데이터를 정확하게 전달하여 화면에 표시되도록 함.웹 브라우저는 서버에서 받은 코드를 해석하여 화면에 그림처럼 표시.앱은 설치된 구조 안에 데이터를 주입하여 표시. 주요 데이터의 형태1) Y/N : 특정 상태 여부를 판단.2) 01, 02, 03, 04: 상태 변화 구분을 위한 숫자 값, 예를 들어 시간에 따른 상태 변경.3) Sequence: 이전 값에 +1을 하여 새로운 번호 생성, 반복적으로 생성되는 데이터에 사용 (예: 이벤트 ID).4) TEXT: 지정된 텍스트 값, 다양한 언어와 코드 조합 가능. 기획 시 고려 사항1) 확장성을 고려한 기획- 상..