목록분류 전체보기 (279)
HwangHub
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Rqgxc/btszUrBIkZO/u5UBKD95qwfAKf32ByviE0/img.png)
구현 내용 요약 직원 정보를 전체 조회(보고서 출력), 조건 검색, 조건 삭제, 직원 추가, 조건 수정을 수행할 수 있는 프로그램 기본 요구사항을 넘어, “조건 수정” 기능을 추가 구현 자바 GUI 프로그램 제작을 위한 Java Swing 라이브러리를 활용하여 standalone 프로그램으로 구현 DB connector 는 Jdbc 라이브러리를 활용하여 MySQL 로컬 데이터베이스와 연결함 소스코드는 깃허브 레포지토리에서 확인할 수 있다. 개발 환경 Programming Language : Java 17 (openjdk-17) IDE : intelliJ Ultimate mainly-used library : java swing (GUI), jdbc (database connector) Database :..
질문받았던 에러를 기록한다. JPA를 활용하여 개발을 하다가 제목과 같은 SQL Error가 발생하였고, 문제의 SQL은 다음과 같다. SQL statement: insert into like (artist,date_time,item_id,item_name,raffle_state,user_id,venue,like_id) values (?,?,?,?,?,?,?,default) 이것과 유사한 에러를 나도 처음 마주했던 때를 생각하면, 도대체 SQL을 자동으로 완성해주는 data JPA를 사용했는데도 SQL Error가 뜬다는 것이 이해가 되지 않았었다. 사실 위 SQL문을 블로그에서 보면 문제가 뭔지 바로 보이긴 한다. 문제는 자바 코드를 기반으로 생성된 SQL 문에서 like 와 같은 SQL상에서 사용하는..
유형 파악 이 문제는 2차원 배열 상의 출발지에서 목적지까지 이동시간의 최소를 구하는 문제이면서, 이동간 시간 가중치가 동일하기 때문에 전형적인 BFS 문제라고 이해할 수 있다. 아울러, 몇 개의 점을 선택하여 제거하는 경우를 세야 하므로 이 부분은 백트래킹 로직을 활용하여 풀어내 주었다. 제출 코드 구성했던 로직의 특징은, 여러 경우에서 도착지에 도달하는 시간이 도출될텐데, 그 경우 중 가장 빠른 경우에서의 시간을 구하는 것을 우선순위 큐를 활용하여 도출해줬다는 것과, 제거하려는 벽을 중복으로 선택하지 않기 위해 selected[][] 라는 배열을 운영한 것이다. 개인적으로 헤맨 부분은, 백트래킹을 통해 제거할 벽을 모두 선택했을 때 bfs를 수행하기 위해 관련 변수들을 초기화해줘야 한다는 것이다. 이..
돌아가는 코드 짜기 아래 코드는 돌아가는 코드다. jdbc.connectJDBC(); Statement stmt = conn.createStatement(); for (String ssn : ssnList) { sb = new StringBuilder(); String sql = sb.append(baseDeleteClause).append("ssn = ").append(ssn).append(";").toString(); stmt.execute(sql); } jdbc.disconnectJDBC(); 그렇다. 원하는 현상을 구현하기 위해 개발을 하다 보면 가장 먼저 해야 할 일이 " 1. 돌아가는 코드 짜기 " 이다. 하지만 돌아가는 코드를 짜기만 하면 우리의 일은 끝인가? 아니다. 두 번째로 해야 할 일..
jdbc 프로젝트를 진행하다가 위와 같은 이슈를 마주했다. 문제 원인을 알아보니 문제의 코드는 아래 부분이였다. Statement stmt = conn.createStatement(); for (String ssn : ssnList) { sb = new StringBuilder(); String sql = sb.append(baseDeleteClause).append("ssn = ").append(ssn).append(";").toString(); stmt.executeQuery(sql); } 위 코드 중 .executeQuery()메서드가 문제다. 한번 이번 기회에 살짝 알아보자. 알아야 할 것 jdbc에서 지원하는 실행 메서드는 execute() , executeQuery() , executeUpda..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bKFNPC/btszwe41PA2/m3flTDBvb3qKoqkpvU0l6K/img.png)
jdbc를 이용하기 위한 database vendor의 connector(ex. mysql connector J)가 의존성으로 연결되지 않아서 그렇다. intelliJ 기준으로 project setting에서 jar 모듈 의존성을 추가해주면 해결된다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b494li/btszoifdB7i/mJGKlphwbuF6qwEiVa4KMk/img.png)
항상 코드를 조금만 수정해도 반복해줘야 하는 배포 작업이 번거롭고 부담스러운 작업이라 느꼈다. 또한 여러 스크립트를 입력해야 하므로 보통 복붙을 하게 되는데, 만약 손으로 타이핑할 필요가 있을 때마다 오타 등의 휴먼 에러가 종종 발생하기도 했다. 따라서 이를 최소화하기 위해 배포 자동화에 관심을 갖게 되었고, 깃허브를 소스코드 보관 플랫폼으로 이용하고 있는 김에 젠킨스나 다른 툴 보다도 접근성도 좋고 무료인 깃허브 액션으로 먼저 해당 기술을 익혀보고자 했다. 다음 내용은 송곳매 프로젝트 진행 중에 발생한 이슈를 해결한 내용입니다. 배포 자동화 스크립트 전문을 우선 첨부한 뒤에, 차근차근 작성했던 것들을 설명해보고자 한다. 배포 자동화 스크립트 전문은 다음과 같다. name: stage-server-dep..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/YnGK4/btszcGnwJMM/Hi7sgeT1FAmOCUJRUC46jk/img.png)
ec2와 rds를 이용하여 배포를 진행하던 중, 아래와 같은 에러가 발생했고 이를 해결한다고 하루를 낑낑댔다. 분명 저번에는 비슷하게 했을 때 이런 에러가 없었던 것 같은데, 왜 이번에는 이런게 발생했을까 원망도 하고... 데이터베이스 이름이 틀린 것도 아닌데 unknown database라고 해버리니까 몹시 당황스러웠다. 원인 알아보니, RDS에서 보통은 database schema를 기본적으로 생성해주는 것 같다. 지금까지 이런 에러가 없었던 거 보면. 근데 당연히 이런 과정에서 에러가 발생할 수 있고, 자동으로 처리되지 않은 데이터베이스 생성을 수동으로 SQL을 입력해주어 처리하면 된다. 데이터베이스 스키마를 "생성"하는 SQL은 아래와 같다. MySQL 공식문서에 따르면 database 대신 sc..
다음 내용은 송곳매 프로젝트 진행 중에 발생한 이슈를 해결한 내용입니다. ubuntu 환경의 ec2에 docker를 이용하여 배포를 하려고 docker를 나름대로 설치하고 docker ps를 수행했는데 다음과 같은 에러가 발생하였다. $ docker ps Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? 알아보니 systemctl status docker 를 통해 체크해보면 대부분 아래와 같이 docker가 ec2 컴퓨터 내에서 실행되고 있지 않아서 그렇다고 한다. $ systemctl status docker docker.service - Docker Application Con..
지난 실력진단 문제에서 구성되는 마을의 최대 크기라던지, 마을의 개수를 어떻게 구할 수 있을지 쉽게 떠오르지 않았어서 해당 부분을 연습하기 위해 이 문제를 다시 풀어봤다. 코드트리 | 코딩테스트 준비를 위한 알고리즘 정석 국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요. www.codetree.ai 접근 이 문제는 단순 반복문을 통해서는 나의 한계로 로직이 떠오르지도 않거니와, 있더라도 분명히 매우 복잡할 것이므로 패스하였다. 그 외에 순열, 조합과 같은 경우의 수를 탐색하는 경우도 아니고, 최대최소를 얻는 그리디한 바이브의 문제도 아니였다. 탐색 알고리즘 중에 이웃한 항과의 관계를 통해 답을 도출해 내는 그래프 알고리즘이 이 문..