일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 사이버보안
- 자격증
- 프로그래밍
- 공부
- SQLD
- 랜섬웨어
- 사이버 보안
- 정보보안기사
- 정리
- IT보안
- GraphDB
- security
- go
- 해킹
- Database
- 데이터모델링
- Golang
- concurrency
- 보안 분석
- cypher
- 시험
- 정보보안
- 그래프 데이터베이스
- 보안
- 그래프데이터베이스
- Neo4j
- graph
- neo4j성능
- 보안솔루션
- 위협 탐지
- Today
- Total
목록분류 전체보기 (67)
Jamie the programmer

Go 언어로 프로그래밍할 때, 여러 고루틴이 동시에 동작하다 보면 언제, 어떻게 안전하게 종료시킬지 고민하게 된다. 단순히 프로세스를 종료하는 것이 아니라, 자원 해제, 데이터 무결성 보장, 작업 마무리 등 여러 요소를 고려해야 하는데, 이를 "Gracefully 하게 죽인다"라고 표현한다.그럼, Gracefully 하게 죽인 다는 기준은 무엇일까?안전한 자원 해제: 열려있는 파일, 데이터베이스 연결, 네트워크 소켓 등 모든 자원을 올바르게 닫아야 한다.데이터 무결성 유지: 진행 중인 작업이나 처리 중인 데이터가 중간에 끊겨 데이터 불일치나 손실이 발생하지 않아야 한다.예측 가능한 종료: 고루틴이 종료될 때, 어떠한 예외 상황 없이 명시된 절차에 따라 종료되어야 한다.이 글에서는 두 가지 방법을 살펴본다..

1. 중첩을 피하고 에러를 먼저 처리하라✅ 핵심 로직을 깊게 중첩하지 않도록 에러를 먼저 처리// Bad: 중첩이 깊어지는 코드func process(value int) error { if value > 0 { if value = 100 { return errors.New("value must be less than 100") } if value%2 != 0 { return errors.New("value must be even") } return nil}2. 중복을 피하라✅ 반복되는 코드를 함수로 추출하여 재사용// Bad: 중복 코드 발생func printHelloWorld() { fmt.Println("Hello, World!")}func printHelloUser(name string) { ..

1. UML Diagram1.1. GraphvizGitHub - ondrajz/go-callvis: Visualize call graph of a Go program using Graphviz# Latest releasego install github.com/ofabry/go-callvis@latest# Development versiongo install github.com/ofabry/go-callvis@mastergo-callvis 적용 사례1.2. PlantUMLGitHub - jfeliu007/goplantuml: PlantUML Class Diagram Generator for golang projectsgo get github.com/jfeliu007/goplantuml/parsergo i..
labelCount, relTypeCount, propertyKeyCount, nodeCount, relCount, labels, relTypes, stats 조회CALL apoc.meta.stats() 모델 데이터 한눈에 보기CALL apoc.meta.graph 모든 relationship 타입 조회MATCH () 모든 라벨 조회CALL db.labels() 특정 노드의 라벨 조회MATCH (a: {name:'Jane Doe'})RETURN distinct labels(a)

1. 정규화(Normalization)정규화는 데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연성을 위한 방법이며 데이터를 분해하는 과정이다.정규화는 데이터 중복을 제거하고 데이터 모델의 독립성을 확보하기 위한 방법이다.정규화를 수행하면 비즈니스에 변화가 발생하여도 데이터 모델의 변경을 최소화할 수가 있다.정규화는 제1정규화부터 제5정규화까지 있지만, 실질적으로 제3정규화까지만 수행한다. 정규화를 하지 않으면 발생되는 문제 정규화를 수행하지 않은 것으로 부서 테이블과 직원 테이블을 하나로 합쳐 둔 것이다.만약 위의 테이블에서 새로운 직우너이 추가되는 경우 부서 정보가 없으면 부서코드를 임의의 값으로 넣어야 한다.즉, 불필요한 정보가 같이 추가되는 것이다.또한 새로운 '총무부'가 추가되어야 ..

식별자라는 것은 엔터티를 대표할 수 있는 유일성을 만족하는 속성이다.일반적으로 회원 ID, 계좌번호, 주민들록번호, 외국인등록번호, 여권번호 등이 있다. 1. 주식별자(기본키, Primary Key)유일성과 최소성을 만족하는 키이다.엔터티를 대표할 수 있어야 한다.엔터티의 인스턴스를 유일하게 식별한다.자주 변경되지 않아야 한다. 2. 키의 종류기본키(Primary Key)후보키 중에서 엔터티를 대표할 수 있는 키이다.후보키(Candidate Key)후보키는 유일성과 최소성을 만족하는 키이다.슈퍼키(Super Key)슈퍼키는 유일성은 만족하지만 최소성(Not Null)을 만족하지 않는 키이다.대체키(Alternate Key)대체키는 여러 개의 후보키 중에서 기본키를 선정하고 남은 키이다. 3. 식별자의 종..

API 레퍼런스가 필요한 이유SIGDOC에서 개발자가 새로운 API를 마주했을 때 어떤 행동을 하는지를 주제로 실험을 해 본 결과 API 레퍼런스에 2번째로 가장 많이 시간을 할애한다고 합니다. API 레퍼런스 자동화 기술SwaggerJavadocAsciiDocGoDoc 자동화 기술을 사용하지 않는 이유 FeedbacksAPI 수정할 때마다 컨플문서 수정하기 너무 힘듭니다..문서는 문서대로 테스트는 포스트맨.. 관리 포인트 너무 많아..문서가 너무 무겁.. 경량화 혹은 분할 필요.스웨거, Asciidoc, 컨플루언스.. 통일화 필요! SSG을 통한 Docs as code정의Docs as code는 기술 문서를 소스 코드처럼 취급하고 관리하는 접근법입니다.Docs like Code로도 불립니다.D..

암호 해독의 최후의 수단? "고무 호스"의 위협암호를 푸는 방법에는 여러 가지가 있습니다. 수학적으로 복잡한 알고리즘을 분석하거나, 슈퍼컴퓨터를 이용해 무차별 대입 공격(Brute Force Attack)을 시도하는 등 다양한 방식이 존재하죠. 하지만 가장 "효율적인" 방법 중 하나는 놀랍게도 기술적인 접근이 아닙니다. 바로 "고문 암호 해독(Rubber Hose Cryptanalysis)" 이라는 다소 섬뜩한 방법이죠.이 용어는 1990년 마커스 라넘(Marcus J. Ranum)이 처음 사용한 것으로, "암호를 수학적으로 푸는 것보다, 그냥 사람을 두들겨 패서 알아내는 게 더 빠를지도 몰라"라는 다소 극단적인 발상에서 나온 말입니다. 고무 호스를 휘두르는 상상을 해보세요. (물론 실제로 그러면 안 되..