본문 바로가기

전체 글323

Windows Security API 정의- Windows 파일/디렉터리/객체의 권한(Access Control)을 다루는 API Windows 보안 구조개념설명SD (Security Descriptor) 소유자, 그룹, ACL을 포함한 최상위 보안 구조체 ACL (Access Control List)여러 ACE를 모아둔 리스트. 누가 어떤 권한을 가졌는지 저장 (DACL/SACL)DACL (Discretionary ACL)접근 허용/거부 규칙 집합ACE (Access Control Entry)한 사용자/그룹의 권한 1개 규칙. (예: Everyone → READ)EXPLICIT_ACCESSACE를 생성하기 위한 구조체 Security Descriptor = 건물 전체DACL = 출입 통제실ACE = 출입 카드 한 장(권한 1개)EXPLI.. 2025. 12. 8.
FFmpeg RTSP(Real Time Streaming Protocol)- 실시간 멀티미디어 데이터 스트리밍을 제어하기 위한 네트워크 프로토콜- 영상과 음성 스트림의 재생, 일시정지 등을 제어할 수 있음- 기본적으로 TCP 554번 포트를 사용- 상태 기반 프로토콜로 client와 server 간의 세션을 유지함기본 URL 구조rtsp://[username:password@]hostname[:port]/path FFmpeg- 오디오·비디오를 인코딩, 디코딩, 변환, 스트리밍, 분석할 수 있는 멀티미디어 프레임워크 - 비디오/오디오 파일을 변환(인코딩/디코딩)하거나 녹화하거나 스트리밍할 때 사용- 주요 실행파일로 ffmpeg, ffplay, ffprobe가 있음ffmpeg- FFmpeg의 멀티미디어 변환기 (FFmp.. 2025. 12. 3.
입출력 구조 입출력scanf("%d", &age); // scanf : 입력 함수printf("Hello, World!"); // prinf : 출력 함수 - scanf 사용 시 변수의 형태에 맞는 변환 문자 사용 및 입력할 변수 앞에 & 입력 필수 변환 문자- %d = 정수, %lf = 실수, %o = 8진수, %x = 16진수(소문자), %X = 16진수(대문자)- %f= 소수(기본 6자리), %.nf = 소숫점 n자리까지 출력- %c = 단일 문자, %s = 문자열 - %n = 왼쪽 n칸 비우고 출력, %-n = 오른쪽 n칸 비우고 출력 int num = 100;printf("%d", num); // 10진수 정수 printf("%o", num); // 8진수 0144printf(".. 2025. 11. 28.
C언어 정의 정의- 1972년 데니스 리치가 유닉스 시스템에 사용하기 위해 캔 톰슨의 B언어를 발전시켜 개발한 범용 프로그래밍 언어 장점- 하드웨어를 제어하는 시스템 프로그래밍 가능- 이식성이 뛰어나 다양한 플랫폼에서 실행 가능- 문법이 간결하고 강력함 단점- 메모리를 수동으로 할당하고 해제해야 함- 포인터 사용이 자유로워 잘못 사용 시 예측 불가능한 동작 발생 -> 안전성 부족- 저레벨 언어라 고레벨 언어에 비해서 더 많은 코드를 요구 -> 생산성 부족- 예외처리, namespace X 기본 구조#include // stdio : standard input output(표준입출력)int main() { return 0; // 정상 종료 전달, 0이 아닌 수 반환 시 오류 발생 상태 전달}- int main(.. 2025. 11. 28.
Q클래스 정의- QueryDSL이 Entity 클래스를 기반으로 자동 생성하는 클래스로 Entity 클래스의 메타 데이터를 가지고 있는 클래스 특징- Q+[엔티티명] 형식으로 자동 생성됨 (generated 폴더)- 엔티티의 각 필드는 Q클래스에서 QueryDSL 타입 필드로 변환- 컴파일 단계에서 생성 → 런타임 시점에 에러를 발견하는 보통의 경우와 다르게 컴파일 단계에서 에러 발견 가능- 필드명(컬럼명)을 직접 기억하지 않고 쿼리 작성을 보다 편리하게 할 수 있음- 엔티티를 직접 사용하는 것이 아니라 QueryDSL이 엔티티 클래스 정보 활용을 위해 QClass를 만들어 사용 → 타입 안전한 쿼리작성 가능 (타입 안정성 보장)※ 일반적으로 .gitignore로 관리 제외 예시엔티티@Entitypublic .. 2025. 7. 12.
WebClient OPEN API HTTP GET 호출 문제 상황 1공공데이터 포털의 OPEN API를 이용하여 원하는 데이터를 WebClient를 활용한 HTTP GET 방식으로 추출하려고 다음과 같이 시도하였지만 java.net.UnknownHostException: Failed to resolve 'http:' 오류 발생 원인 1UriBuilder의 path() 메서드에서 전체 URL을 사용한 것이 문제 → http:를 호스트명으로 잘못 해석 ※ UriBuilder.path()는 절대 경로가 아니라 상대 경로를 설정하는 데 사용 해결 방법 1다음과 같이 baseUrl에는 API의 기본 URL을 입력하고 나머지 상대경로는 UriBuilder.path()로 지정 상황 2해결 방법 1로 수정했으나 400 Bad Request 발생  원인 2OPEN API 접근 승.. 2024. 11. 20.
ORDER SIBLINGS BY과 OFFSET~FETCH 혼용 문제 상황SELECT *FROM( SELECT * FROM board CONNECT BY PRIOR post_num = parent_num START WITH parent_num IS NULL ORDER SIBLINGS BY create_dt DESC -- 부모 글은 최신순, 답글은 오래된 순) OFFSET 0 ROWS FETCH NEXT 5 ROWS ONLY; -- 처음 데이터(0)부터 5개만 반환 2024. 11. 14.
계층 쿼리 문법 CONNECT BY PRIOR- 컬럼 간의 부모-자식 관계 지정에 사용- CONNECT BY PRIOR (부모 컬럼) = (자식 컬럼) 형식으로 입력- 부모 컬럼과 자식 컬럼은 같은 테이블 내에 있어도 상관 Xex) CONNECT BY PRIOR post_num = parent_num (post_num = 게시글 번호, parent_num = 부모 게시글 번호)→ post_num(부모)과 parent_num(자식)이 일치하는 경우를 조건으로 설정→ post_num이 부모인 경우 이 부모 게시글 아래에 자식 게시글(답글)을 가져오는 계층 구조 설정 START WITH- 계층 쿼리에서 탐색을 시작할 특정 루트 노드를 지정할 때 사용 ex) START WITH parent_num IS NULL → parent.. 2024. 11. 14.
Oracle이란 정의- 관계형 데이터베이스 관리 시스템(RDBMS)의 대표적인 한 종류 장점안정성: 대규모 데이터와 높은 트랜잭션 처리량을 요구하는 환경에서도 안정적으로 동작보안성: 데이터 암호화, 접근 제어, 감사 로그 등 강력한 보안 기능을 제공하여 민감한 데이터를 안전하게 관리 가능확장성: 클러스터링과 분산 데이터베이스 지원을 통해 대용량 데이터 처리가 가능하며 높은 성능을 유지하면서도 확장 가능강력한 커뮤니티와 지원: 현존하는 RDBMS에서 가장 역사가 오래되었고 다양한 산업에서 사용하는 만큼 풍부한 자료와 커뮤니티 지원이 존재단점비용: 라이센스 비용이 높아 중소기업이나 개인이 사용하기에는 부담될 수 있음복잡성: 기능이 방대하고 설정이 복잡하여 학습 곡선이 높고, 숙련된 관리자가 필요하드웨어 요구사항: 고성능을 .. 2024. 11. 14.
JSP에서 JavaScript와의 백틱(`) 문제 현상const fileName = "부엉이";alert(`파일 ${fileName}는 이미 존재하는 파일입니다.`);// 경고창이 파일 는 이미 존재하는 파일입니다. 로 출력됨 JSP에서 태그 안에 백틱(`${}`)을 사용하여 코드를 적용시켰는데 데이터가 출력되지 않음 원인JSP와 JavaScript 둘 다 같은 문법을 사용하고 있어 JSP에서 에 JavaScript 코드로 ${}을 EL 표현식으로 착각하여 먼저 해석하여 JavaScript의 템플릿 리터럴이 제대로 동작하지 않기 때문 해결 방법${}을 $('${}')으로 감싸서 입력const fileName = "부엉이";alert(`파일 ${'${fileName}'}는 이미 존재하는 파일입니다.`);// 경고창이 파일 부엉이는 이미 존재하는 파일입니.. 2024. 11. 6.
MultipartRequest, ServletFileUpload 혼용 문제 현상게시글 작성 페이지의 폼에서 method="post" enctype="multipart/form-data"를 통해 보낸 데이터를 다음과 같이 처리하였더니 MultipartRequest를 활용한 multi.getParameter()는 데이터가 정상적으로 조회되는데 ServletFileUpload를 활용한 items는 조회가 아무것도 되지 않았음 원인ServletFileUpload 생성 전에 request는 이미 MultipartRequest 객체 생성 시 MultipartRequest에 의해 처리된 후라서 ServletFileUpload를 사용하면 request 객체에서 이미 처리된 필드에 대한 접근이 제한되어 빈 값이 반환됐던것 해결 방법MultipartRequest, ServletFileUpload.. 2024. 11. 6.
페이징 시 값 고정 현상jsp 게시판 검색 페이지에서 다른 페이지를 눌러 페이징을 실행했을 때 오류 발생  원인검색에 이용했던 option과 keyword가 유지되지 않고 빈값으로 초기화 된 상태로 전달되어 SQL 상에서 에러가 발생하여 데이터를 못 불러와 화면에 데이터가 출력되지 않음 → request에 저장되어 있던 option과 keyword 값이 페이지 이동 시 소멸하기 때문 (HTTP의 stateless 특성)※ 무상태성(stateless) = 서버가 클라이언트의 상태를 보존하지 않는 특징 ※ 성능과 효율성을 높이기 위하여 서버는 각 요청을 독립적으로 처리하고 요청 처리가 완료되면 해당 요청과 관련된 모든 데이터는 소멸되기 때문에 다음 요청(페이지 이동)에서는 이전 요청의 데이터를 사용할 수 없음 해결option과.. 2024. 11. 4.
java.io.IOException: Corrupt form data: premature ending 현상 Controller@WebServlet("/main")public class BoardController extends HttpServlet { private static final long serialVersionUID = 1L; private BoardDAO dao = new BoardDAO(); protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String saveDir = getServletContext().getRealPath("/upload"); int maxSize = 10 * 10.. 2024. 11. 1.
Jsoup 정의- HTML 파싱 JAVA 외부 라이브러리- 웹 스크래핑, 데이터 추출, HTML 문서 수정 및 웹 페이지의 내용 분석에 널리 사용 - DOM과 CSS 선택자를 사용하여 HTML 요소를 쉽게 다룰 수 있음- DOM의 데이터 타입에 대응하는 Document, Element, Elements, Attributes 클래스가 존재 DocumentDocument doc = Jsoup.connect("https://example.com").get();Document doc = Jsoup.parse(new File(./example.html));- Jsoup.parse(File file) 혹은 Jsoup.connect(String url).get()을 통해 HTML 파일에 접근- 위 과정을 통해 얻은 Docume.. 2024. 10. 23.
순수 Java로 서버 구동 과정1. HttpServer를 통해 HTTP 서버 생성HttpServer.create(InetSocketAddress address, int backlog) 메서드를 사용해 HttpServer 객체(서버) 생성InetSocketAddress(ip, port) = 지정한 IP 주소와 포트 번호를 서버의 주소 및 포트로 설정하여 소켓 생성2. createContext()를 통해 특정 경로로 들어오는 요청에 대한 Handler 정의해당 Handler는 HttpHandler 인터페이스를 구현HttpHandler 인터페이스의 handle(HttpExchange exchange)에서 client 요청을 처리HttpExchange = 서버와 클라이언트 간의 HTTP 요청과 응답을 처리하는 데 사용되는 클래스 exc.. 2024. 10. 23.