투머치토커가 되기로 한 이유..(LAMI 프로젝트)
·
카테고리 없음
과거 프로젝트를 진행할 때 팀원 간 소통의 부재로 골머리를 앓았던 적이 있었습니다.API 명세서에 user_id라고 적혀있으니 그렇게 데이터를 넘겼는데, 알고 보니 userId로 받아 문제가 발생하기도 했고,회의 미참여 인원을 위해 회의 내용을 메신저에 공유했으나, 인지하지 않는 경우도 있고,자신의 진행 상황, 직면한 문제를 공유하지 않아 프로젝트 계획에 차질이 생기기도 했었습니다. 물론 저 또한 적극적으로 소통을 주도했다고 자신할 수 없었기에, 탓만 할 수는 없습니다만, 이런 소통의 부재는 팀 사기와 생산성에 큰 영향을 준다는 것을 알게 되었고,이번 프로젝트에서도 같은 문제를 겪고 싶지 않았기에, 소통을 적극적으로 주도해보자고 결심했습니다. 그래서.. 우리 주제는 뭐로하죠?팀 프로젝트 첫 만남에서, 프..
Java String의 hashCode()와 equals()에 대해 알아보기!
·
알아보자!
이 글은 String Class의 hashCode 구현 로직을 살펴보고 그와 관련된 궁금증들을 해소하는 과정을 담고있습니다. 글 작성 계기JDK 7부터 switch문의 조건에 String이 포함될 수 있다. 그리고 hashCode를 통해 문자열이 같은지 판단한다고 한다. 여기서 “같은 문자열이면 항상 같은 hashCode인가?” "그게 어떻게 가능하지?"라는 궁금증으로 탐구를 시작했다. 서로 다른 객체가 같은 문자열을 가지면 hashCode는 같을까?public class Main { public static void main(String[] args) { String a = "January"; String b = "January"; System.out.pr..
JAVA 명령어 동작 흐름 알아보기! (JAVA_HOME만 바꿨는데 왜 버전이 바뀔까?)
·
알아보자!
이 글은 제가 JAVA 명령어 동작을 확인하는 과정에서 발생한 궁금증과 오해를 풀어내고 있습니다.적절한 이해를 위해 간단한 배경지식을 설명하고, 궁금증을 해소하는 과정으로 이어집니다.리눅스 명령어는 어떻게 실행될까?터미널에 입력하는 대부분의 명령어들(ls, cp, chmod, tail..)은 전부 실행파일(binary)입니다.이러한 실행 파일은 보통 /bin, /usr/bin 같은 특정 폴더에 존재합니다. 생각해보면, ls 명령어는 /bin 폴더에 위치하는데요, /bin 경로에 위치한 ls 파일을 실행하려면 /bin/ls 라고 사용해야 하는 것 아닐까요? 어째서 ls 만 쳐도 정상적으로 실행이 되는 걸까요? 그 이유는 PATH라는 환경변수에 이 폴더들이 등록되어 있기 때문입니다. PATH란 무엇인가?PA..
Jenkins CI/CD 도입하기
·
개발 일지
캡스톤 디자인 프로젝트를 진행하며, 백엔드 서버를 기능별로 나누어 개발하기로 했습니다. 이 경우, 각 서비스를 독립적으로 개발하고 배포할 수 있다는 장점이 있지만, 수동 배포로는 관리와 유지보수가 어렵다는 한계를 가지고 있었습니다. 이에 따라 배포에 드는 반복적이고 소모적인 작업을 줄이고, 개발에 더욱 집중할 수 있는 환경을 만들고자 CI/CD 파이프라인 구축을 제안 및 구성하였습니다. 이 글에서는 당시의 구조와 구현 방식, 그리고 아쉬웠던 부분까지 정리해보려 합니다. 프로젝트 환경 및 조건서버: Ubuntu 22.04저장소 플랫폼: GitLab (캡스톤 규정)백엔드 폴더 구조:backend/├── ai/│ └── Dockerfile├── grading/│ └── Dockerfile├── memb..
도커 컨테이너의 네임스페이스를 체감(?)해보자
·
알아보자!
개요도커 Docs에서 컨테이너에 대한 설명과 더불어 변천사를 설명하는 블로그 글을 보았다.(https://medium.com/@saschagrunert/demystifying-containers-part-i-kernel-space-2c53d6979504) 현재 사용되는 도커 컨테이너는 리눅스의 네임스페이스와 cgroup으로 구현되었다고 한다. 도커 컨테이너의 네임스페이스를 외부(host)에서수정하면 실제 도커 컨테이너에도 반영이 될까?당시 생각: 도커 컨테이너도 결국 네임스페이스라는 격리된 공간을 활용하는 것에 불과하므로, 해당 공간이 수정되면 그대로 컨테이너에 반영될 거라고 생각했다. 실제로 수행해보면 "도커 컨테이너는 네임스페이스로 이루어졌다"라는 문장을 보다 체감(?)할 수 있을 거 같아 시도해봤다..
오픈스택 콘솔 접속 에러
·
트러블슈팅
문제 상황1. 문제 요약: 오픈스택 메뉴얼을 참고하여 수동 설치하였고, 인스턴스 생성은 되지만 콘솔 접속이 되지 않는다.2. 발생 환경- Host PC OS : Windows 10- controller node OS : Ubuntu 22.04 LTS- compute node OS : Ubuntu 22.04 LTS- openstack version : Antelope(2023.1)3. 발생한 에러 원인 분석controller의 서버 IP 주소를 찾을 수 없습니다-> 요청 URL이 잘못되어 네트워크 요청 자체가 수행되지 않았음을 의미한다고 한다. 해결 과정 1: 요청 패킷 확인1. 브라우저에서 콘솔 접속을 위한 http 요청 패킷을 확인해보았다.2. 요청 URL이 http://controller:6080..
nslookup과 AWS DNS 캐싱에 대한 궁금증
·
알아보자!
도메인의 IP를 조회하는 명령어인 nslookup을 공부하며 생긴 궁금증을 해소하는 과정을 담아봤습니다.nslookup?도메인이 사용하는 IP를 조회할 수 있는 간단한 명령어입니다. nslookup의 동작 구조 nslookup의 대략적인 동작 과정은 다음과 같습니다./etc/hosts 에서 요구하는 도메인 이름을 조회 -> 조회 성공 시 반환/etc/resolv.conf 에서 캐시 내역을 확인캐시가 있으면 반환캐시가 없으면 도메인 질의 수행 위 과정에서 다음과 같은 궁금증이 생겨 AWS EC2 환경에서 테스트를 수행해봤습니다./etc/hosts 파일을 수정해서 임의의 도메인을 8.8.8.8로 연결지을 수 있을까?캐시가 없는 경우 DNS 서버로 요청을 보낼텐데, 이 과정을 눈으로 확인할 수 없을까?캐싱되..
오픈스택 설치 방법과 종류
·
개발 일지
설치 환경1. 베어메탈 설치장점: 컨테이너보다 성능이 뛰어남단점장애 복구(DR) 및 오토스케일링이 어려움운영 중 특정 노드 장애 발생 시 개별적으로 확인 필요사용 가능 툴: Openstack-AnsibleOpenstack-Ansible의 역할 및 책임역할: 싱글/멀티 노드 환경에서 호스트 OS에 직접 오픈스택 서비스 설치 자동화책임: 오픈스택 서비스 설치 및 환경 설정주의 : Ansible은 설치 자동화 도구이지, 유지보수를 자동화해 주는 것은 아님!2. 컨테이너 환경에 설치장점: 장애 발생 시 컨테이너를 재시작하여 장애 복구 가능(베어메탈보다 유연)단점여전히 장애복구(DR) 및 오토스케일링 어려움컨테이너가 죽으면 수동으로 확인 필요(모니터링 시스템 필요)사용가능 툴: kolla-ansibleKolla-..
2024년 돌아보기
·
회고 · 잡담
1/ 2024년 돌아보기 - 12024.01.15 - [잡담] - 나는 우물 안 개구리가 아니라 올챙이다 이 글을 작성한 지 어느덧 1년이 되어간다. 카르페디엠의 마음으로 앞으로 1년을 보내겠다는 포부가 담긴 오글거리는 글이다. 기말고사가 끝나며 여유가 생긴 지금, 문득 나는 무엇을 경험하고 배웠을까? 하는 궁금증에 연말정산 느낌으로 작성한다. 한 해 동안의 크고 작은 이벤트들을 나열해보려고 한다. January프로젝트.. 어떻게 하는 거예요? 학교 선배 형님의 추천으로 프로젝트에 참여하게 되었다(감사합니다!!) 백엔드 파트를 맡게 되었는데, 프로젝트를 어떻게 진행해야 할지 너무 막막했다. 어떤 방식으로 진행해야 할지, 프론트엔드와 협업은 어떻게 해야 하는지.. 여기저기 물어도 보고, 팀원분들께 질문도..
[Java] 감시 15683
·
문제풀이/백준
package 백준.자바.감시_15683;import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.*;public class Main { static final int MAX_N = 8; static final int MAX_M = 8; // val은 현재 사각지대의 개수 static int N, M, val; static int[] dx = {-1, 1, 0, 0}; static int[] dy = {0, 0, -1, 1}; static int[][] map = new int[MAX_N][MAX_M]; static int[][][] directions = { ..
송민서
osnie