전체 글 408

리눅스(Linux) nginx 설정

✔ upstream - 백엔드 서버 그룹을 정의하는 지시어 upstream ssl_service { server 127.0.0.1:8000; server 127.0.0.1:8001; server 127.0.0.1:8002; server 127.0.0.1:8003; server 127.0.0.1:8004; } ssl_service라는 이름으로 그룹을 정의하고, 8000부터 8004까지의 포트를 가진 서버를 지정 ✔ Port와 서버 이름 server { listen 443 ssl; server_name tistoryt.co.kr; #server_name 127.1.2.3; #ssl on; tistoryt.co.kr 도메인에서 들어오는 HTTPS(포트 443) 요청을 처리하는 부분이며, 나중에 예를 들어 lo..

업무 기록/ETC 2023.07.11

리눅스 .sh(start.sh, stop.sh

grep grep이 파일의 문자열을 검색할 때, 단순 문자열 매칭이 아니라, 정규 표현식(Regular Expression)에 의한 패턴 매칭(Pattern Matching) 방식을 사용 ✔ start.sh proc=`ps -ef | grep AAAAAAA-0.0.1-SNAPSHOT.jar | grep $LOGNAME | grep -v vi | grep -v grep | grep -v sh` if [X"$proc" != X"" ]; then echo "[$proc] aleadt executed.." else javaja -server -Dspring.profiles.active=dev -jar Terashot-0.0.1-Center.jar & fi // bash stat.sh 로 시작하기 proc=ps ..

업무 기록/ETC 2023.06.25

Eclips 환경설정(마켓플레이스, 사설망 Maven Update, mirror)

✔ Eclips 또는 STS marketplce 에러 발생하는 경우 이클립스 설치 파일에 들어가면 eclips.ini 파일에 들어간다. -Djavax.net.ssl.trustStore=NUL -Djavax.net.ssl.trustStoreType=Windows-ROOT eclips.ini 파일 하단에 위 코드 2줄 작성하면 에러가 발생하지 않고 사용이 가능하다. ✔ 사설망 Maven Update 환경설정 maven 설치 폴더 내 /conf/setting.xml 파일 설정을 해주면 된다. 사설망과 같이 내부개발환경에서 외부로 접근이 불가능한 경우 사용하는 방식이다. mirrorId * Human Readable Name for this Mirror. http://ip주소:포트주소/repository/mav..

업무 기록/ETC 2023.06.24

리눅스 파일

usr: 시스템에서 사용되는 대부분의 유저 애플리케이션과 파일들이 위치하는 디렉토리, 일반적으로 시스템 전반에 걸쳐 설치된 소프트웨어 패키지들이 이 디렉토리에 위치 /usr/bin: 사용자 애플리케이션의 실행 파일들이 위치, 대부분의 사용자 명령어들이 이 디렉토리에 저장 /usr/lib: 애플리케이션에서 사용하는 공유 라이브러리 파일들이 위치, 여러 애플리케이션이 공유하여 사용하는 라이브러리들이 이 디렉토리에 저장 /usr/include: C나 C++ 등의 프로그래밍 언어에서 사용하는 헤더 파일들이 위치, 헤더 파일들은 소스 코드에서 함수 및 데이터 구조를 참조할 때 사용 bin : 시스템 부팅과 관련된 명령어와 기본 실행 파일들이 위치하는 디렉토리이다. 대 부분의 사용자들이 실행 가능한 명령어를 이 디..

업무 기록/ETC 2023.06.24

Spring API 이미지 자동 삭제

✔ 1년간 보관 - 1년 후 삭제 기간 설정 private long getOneYearInMills() { final int millisecondsInSecond = 1000; final int secondsInMinute = 60; final int minutesHour = 60; final int hoursInDay = 24; final int daysInYear = 365; return millisecondsInSecond * secondsInMinute * minutesHour * hoursInDay * daysInYear; } getFiveMinutesInMills 메소드 생성, 1년을 밀리초로 변환하여 반환하는 메서드이다. 저장/삭제 예약 private void saveAndScheduleDe..

업무 기록/API 2023.06.18

Spring 이미지 업로드 (파일생성, 난수, 경로 설정)

✔ 이미지 저장, 경로, 파일이름 // 이미지 저장, 경로, 파일이름private String saveImage(MultipartFile image, String storagePath, String filename, String type) { try { String savePath = UPLOAD_DIRECTOR_STRING + storagePath; File storageDirectory = new File(savePath); if(!storageDirectory.exists()) { storageDirectory.mkdirs(); // 파일 경로가 없는 경우 디렉토리를 생성 } File imageFile = new File(storageD..

업무 기록/API 2023.06.17

Spring 이미지 업로드 API 설계

✔ 이미지 업로드 API (ServiceImpl) - 기본 틀 (이미지가 없는 경우) @Override public JsonElement uploadImageImageVO image) { StopWatch watch = getStopWatch(); MultiValueMap params = new LinkedMultiValueMap(); try { if (image.getImage() == null) { return JsonParser.parseString(new Gson().toJson(new ResponseWithMessageVO(ApiCommonCode.ILLEGAL_PARAMETER, "이미지는 필수 항목입니다."))); } - 파일 형식 지정해주기 (조건) // 업로드된 이미지 파일 가져오기 Mu..

업무 기록/API 2023.05.26

신입 메모1

@PostConstruct 의존성 주입이 이루어진 후 초기화를 수행하며 bean이 여러번 초기화되는 것을막는다. @Slf4j -> slf4j-api 로깅 프레임 워크에 대한 추상화 역할을 하는 라이브러리 @RequiredArgsConstructor lombok으로 스프링에서 의존성 주입 방법 중 생성자 주입이 임의의 코드없이 자동으로 설정 초기화 되지 않은 final, @NonNull이 붙은 필드에 생성자를 생성하고 새로운 필드 추가할 때 다시 생성자를 만들어 관리해야 하는 번거로움이 없다. 유저 IP를 가져왔을 때 IPv6문제 ,IP4로 전환 springboot나 Tomcat의 run as -> run configuration -> 해당하는 곳으로 들어가 -> arguments -> VM argumen..

업무 기록/ETC 2023.05.23

신입 환경설정 오류

신입사원의 하루동안 오류와 배운점 - 리눅스 사용경험 cp, cd...... a java runtime environment(jre) or java development kit(jdk) must be a available in order to run - 오류 발생의 경우는 다른 사람의 파일을 그냥 받아오는 경우 eclips.ini나 sts.ini 같은 파일에 jdk, jre 파일의 경로가 문제가 발생하는 경우이다. 내 피시의 환경설정을 확인하여 동일하게 바꾸자 vm 하단부와 같은곳에 비슷한 상황으로 Maven update간 오류가 발생하는 경우 pom.xml만 다른곳에서 복사하는 경우 많은 오류가 발생했다. pom.xml의 parent 하단부에 artificated, name 등이 네 프로젝트 이름과 동..

업무 기록/ETC 2023.05.21

SpringBoot 메세지 발송/조회 API 설계 2 (Entity, DB, Controller, Service, POSTMAN)

✔ Entiry, DB 이 코드는 lombok 어노테이션을 사용하여 자동으로 생성되는 생성자, 게터, 세터 등을 포함하는 Java 클래스입니다. •@Data: @ToString, @EqualsAndHashCode, @Getter, @Setter, @RequiredArgsConstructor 어노테이션을 포함하는 대표적인 롬복 어노테이션입니다. 이 어노테이션을 사용하면 클래스에서 필요한 메소드들을 자동으로 생성해줍니다. •@Builder: 객체를 생성하면서 값들을 설정하는데 사용되는 빌더 패턴을 쉽게 사용할 수 있도록 도와주는 롬복 어노테이션입니다. •@AllArgsConstructor: 모든 필드 값을 파라미터로 받는 생성자를 자동으로 생성하는 롬복 어노테이션입니다. •@NoArgsConstructor:..

업무 기록/API 2023.05.19

SpringBoot 메세지 발송/조회 API 설계 1 (요구사항, 사용기술, application.properties, Log4j)

✔ 프로젝트 요구사항과 필요성 ✔ Maven 사용기술 부연설명 - •log4j-core는 로깅 프레임워크의 구현입니다. 로거 생성 및 관리, 로그 이벤트 처리, 적절한 어펜더에 로그 메시지 발송과 같은 로깅의 핵심 기능을 제공합니다. 또한 다른 대상에 로그를 작성하는 데 사용할 수 있는 구성 가능한 추가기 세트를 제공합니다. •log4j-api는 개발자가 로깅 프레임워크와 상호 작용하는 데 사용하는 API입니다. 개발자가 로거를 만들고 메시지를 기록하고 로깅 시스템을 구성하는 데 사용하는 로깅 인터페이스와 클래스를 제공합니다. 타사 라이브러리에서도 사용하도록 설계되어 Log4j 로깅 시스템과 통합할 수 있습니다. ✔ application.properties 부연설명 - 1.여기에서는 테스트 서버접속과, ..

업무 기록/API 2023.05.18

Java 음성 소켓 통신(서버, 클라이언트) 기초

✔ Server import java.io.*; import java.net.*; import javax.sound.sampled.*; public class Server { public static void main(String[] args) throws IOException { ServerSocket serverSocket = null; try { // 서버 소켓 생성 serverSocket = new ServerSocket(12345); System.out.println("서버가 12345번 포트에서 연결 요청을 기다리고 있습니다..."); // 클라이언트 연결 대기 Socket clientSocket = serverSocket.accept(); System.out.println("클라이언트가 접속..

Java/Java 2023.04.21

코딩테스트 - 파이썬 - 상자 채우기

def solution(n): if n == 0: return 0 box_5 = n // 5 # 5kg 무게의 상자 개수를 최대한 많이 채우는 경우를 계산하여 box_5에 저장 while box_5 >= 0: # box_5 값이 0 이상인 동안 반복 remaining = n - (5 * box_5) # 남은 무게를 계산하여 remaining에 저장 if remaining % 3 == 0: # 남은 무게가 3의 배수인 경우, 3kg 무게의 상자로 채울 수 있음 box_3 = remaining // 3 # 3kg 무게의 상자 개수를 계산하여 box_3에 저장 return box_5 + box_3 # 5kg과 3kg 무게의 상자 개수를 합하여 반환 box_5 -= 1 # 가능한 경우가 없는 경우, box_5 ..

코딩테스트 준비 - 팰린드롬

팰린드롬(palindrome)은 앞에서부터 읽어도 뒤에서부터 읽어도 동일한 문자열 또는 숫자열을 말합니다. 예를 들면 "level", "radar", "madam" 등이 팰린드롬의 예시입니다. 팰린드롬은 문자열뿐만 아니라 숫자나 기호 등 다양한 형태로 나타날 수 있습니다. def solution(n, m): count = 0 # 팰린드롬 숫자의 개수를 저장하는 변수 for num in range(n, m + 1): # n부터 m까지의 범위에서 숫자를 하나씩 확인 num_str = str(num) # 숫자를 문자열로 변환하여 각 자리수를 확인하기 위한 변수 is_palindrome = True # 현재 숫자가 팰린드롬인지 여부를 저장하는 변수 # 숫자의 각 자리수를 확인하여 팰린드롬인지 여부를 판단 for..

정보처리기사 실기 기본 알고리즘 공부

✔ 아래는 자바(Java)를 사용하여 1부터 100까지의 소수를 찾아 합계를 구하는 예제입니다. public class PrimeNumberSum { public static void main(String[] args) { int sum = 0; // 소수의 합계를 저장할 변수 for (int num = 2; num arr[j + 1]) { // 두 원소를 교환 int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } } public static void printArray(int[] arr) { for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } System.out...

운동자세 인식 프로젝트 사전 준비 및 공부

CNN은 이미지 인식 작업에 널리 사용되며 자세 인식을 비롯한 다양한 응용 분야에서 우수한 성능을 보여 왔다. ✔ 전처리 방식import cv2 import os # 운동 자세 이미지가 있는 디렉토리 경로 지정 image_dir = "/path/to/exercise/posture/images" # 디렉토리 내의 모든 이미지 파일에 대해 반복 for filename in os.listdir(image_dir): if filename.endswith(".jpg") or filename.endswith(".png"): # 필요에 따라 파일 확장자 조정 image_path = os.path.join(image_dir, filename) image = cv2.imread(image_path) # 이미지 로드 im..

파이썬 코딩테스트 - 괄호짝 맞추기 - 참고용

def check_matching_brackets(s): stack = [] # 스택 초기화 # 닫힌 괄호를 키(key)로, 여는 괄호를 값(value)으로 하는 딕셔너리 brackets = {')': '(', '}': '{', ']': '['} for char in s: if char in brackets.values(): # 여는 괄호일 경우 스택에 push stack.append(char) elif char in brackets.keys(): # 닫는 괄호일 경우 if not stack or brackets[char] != stack.pop(): # 스택이 비어있거나, 짝이 맞지 않는 경우 False 반환 return False else: # 괄호 이외의 문자는 무시 continue # 스택에 남아..

파이썬 - 추첨결과 - 코딩테스트 - 참고용

if __name__ == "__main__": # 입력 받기 n = int(input()) # 당첨시킬 응모권의 수 numbers = list(map(int, input().split())) # 추첨함 속 응모권에 적혀 있는 회원번호 리스트 # 중복 제거를 위해 set 사용 unique_numbers = set(numbers) # 추첨 대상으로 인정할 회원번호들을 담을 리스트 winners = [] # 추첨 대상으로 인정된 회원번호들을 winners 리스트에 추가 for num in unique_numbers: if numbers.count(num)

자바스크립트 코딩 문제 결과 참고용

코드는 입력 문자열을 가져와 대괄호 안의 참조를 번호가 매겨진 참조로 바꾸고 끝에 번호가 매겨진 참조 목록을 추가하여 형식을 지정하는 JavaScript 함수 'formatThesis' function formatThesis(input) { let references = new Map(); let referenceCounter = 1; // 참고문헌 번호를 위한 카운터 초기화 let revisedInput = input.replace(/\[(.*?)\]/g, (match, titles) => { // 대괄호 안의 텍스트를 참고문헌 번호로 대체 let titleList = titles.split(",").map(title => title.trim()); // 쉼표로 구분된 제목들을 분리하고 공백 제거 le..

데이터분석 프로젝트 (파이썬 Covid-19 사진 학습(분류) 3)

11. 모델 검증을 위한 Accuracy 생성하기 @torch.no_grad() # 아래 붙어 있는함수가 작동을 할때 def get_accuracy(image, target, model): batch_size = image.shape[0] prediction = model(image) _, pred_label = torch.max(prediction, dim=1) is_correct = (pred_label == target) return is_correct.cpu().numpy().sum() / batch_size 12. 모델 학습을 위한 함수 구현하기 # 모델을 학습하기 위한 함수를 만들어보자 device = torch.device('cpu') # epcoh: 데이터 전체를 한바퀴를 돌리는것? # m..

프로그래머스 - 타겟넘버 - 자바 - 코딩테스트연습

class Solution { int answer = 0; // 목표값과 일치하는 경우의 수를 저장할 변수 public int solution(int[] numbers, int target) { dfs(numbers, 0, target, 0); // 깊이 우선 탐색(DFS) 함수 호출 return answer; // 결과 반환 } // 깊이 우선 탐색 함수 public void dfs(int[] numbers, int depth, int target, int sum){ if(depth == numbers.length){ // 배열의 모든 요소를 다 탐색한 경우 if(target == sum) answer++; // 목표값과 일치하는 경우 answer 변수 증가 } else { dfs(numbers, de..

기술면접 준비 4

ELB(Elastic Load Balancer) 애플리케이션 트래픽을 여러 대상에 자동으로 분산시켜 안정적인 AWS서버 환경을 운용하는데에 도움을 주는 서비스로 EC2뿐만 아니라 컨테이너(ECS), AWS Lambda 등으로 다양한 서비스와 연계하여 부하를 분배할수 있다. 서로 다른 EC2 인스턴스에 대한 하나의 엔드포인트를 제공한다. 그래서 사용자는 실제 요청이 처리되는 백엔드 인스턴스에 대한 고려 없이, 동일한 엔드포인트로 요청을 전송할 수 있다. vue와 react 차이 vue는 반드시 데이터 객체를 생성한 후에 data를 자유롭게 업데이트할 수 있고, React는 state 객체를 만들고 업데이트를 하려면 조금 더 많은 작업이 필요 react * UI 라이브러리이며 * 라이브러리는 참고가 용이, ..

기술면접 결과 정리 2

🎬 추천 프로젝트 사용 필터링 사용자 기반 협업 필터링 나와 성향이 비슷한 사람들이 사용한 아이템을 추천해 주는 방식이다. A가 온라인 몰에서 a와 b, 그리고 c 도 함께 구매하고, 또 다른 사용자 B는a와 b를 구매했다고 가정해 보자. 알고리즘은 구매 목록이 겹치는 이 두 사용자가 유사하다고 판단해, 사용자 B에게 c를 추천한다. - 나는 프로젝트에서 코사인 유사도를 이용 아이템 기반 협업 필터링 아이템간 유사도를 계산합니다. 아이템간 유사도를 추정해보니 아이템 2번과 아이템 4번이 유사하다고 나타난 거죠. 그럼 아직 아이템 4번을 사용하지 않은 사용자 E에게 아이템 4번을 추천해주는 것입니다. - 나는 유사도 값을 json 형식으로 레시피 간의 유사도를 계산 컨텐츠 기반 필터링 영화를 예를 들면 어..

프로그래머스 - 같은 숫자는 싫어 - 자바 - 코딩테스트 준비

import java.util.*; public class Solution { public int[] solution(int []arr) { int[] answer = {}; // 크기가 얼마나 있는지 모르니 가변인 어레이리스트를 사용 ArrayList arrl = new ArrayList(); // 배열 arr의 원소의 크기 : 0보다 크거나 같고 9보다 작거나 같은 정수 int num = -1; // 영햐을 끼치지 않는 숫자 for(int i=0; i< arr.length ; i++){ if(arr[i] != num){ // 처음은 무조건 삽입 왜냐면 관련없는 -1 arrl.add(arr[i]); num = arr[i]; // 배열의 변수를 비교하기 위해 num에 arr을 넣는다. } } // ans..

데이터분석 프로젝트 (파이썬 Covid-19 사진 학습(분류) 2)

5. 데이터 로더 구현하기 def build_dataloader(train_data_dir, val_data_dir): dataloaders = {} train_dset = Chest_dataset(train_data_dir, transformer) # {'train': 데이터...} dataloaders['train'] = DataLoader(train_dset, batch_size=4, shuffle=True, drop_last=True) # 트레인 데이터를 4개 씩 섞고 ,drop_last=True 마지막거를 버려라 # {'train' : 데이터...} 담긴 모습 # 각각의 데이터의 특징(웨이트)을 분류하기 위해 4개로 분류하였고 한번에 전부를 돌리는것보단 조금씩 분석을 하면 # 얼마만큼 틀렸거나 ..

기술면접 준비 3

Servlet vs JSP Servlet - 자바 언어로 웹 개발을 위해 만들어진 것으로, Container가 이해할 수 있게 구성된 순수 자바 코드로만 이루어진 것(Html in JAVA) JSP(Java Server Page) - html기반에 JAVA코드를 블록화하여 삽입한 것(JAVA in Html)으로 Servlet을 좀 더 쉽게 접근할 수 있도록 만들어 진 것 RESTFUL 해당 URL만 보더라도 바로 어떤 작업을 하는지를 알 수 있도록 하나의 데이터는 하나의 URL을 갖도록 작업하는 방식 Session - 특정 웹사이트에서 사용자가 머무르는 기간 또는 한 명의 사용자의 한번의 방문을 의미한다. - Session에 관련된 데이터는 Server에 저장된다. - 웹 브라우저의 캐시에 저장되어 브라..

기술면접 준비 2

예외처리 NullPointException : null 값을 가지고 있는 참조 변수로 즉 해당 객체가 null인 상태에서 접근했을 때 해당 값이 null에 대한 접근을 하여 발생, 해당 객체는 없는데 접근하여 발생한다고 생각하자 ArrayIndexOutBoundsException : 배열에서 할당된 인덱스 범위 초과시 발생 NumberFormatException : 데이터를 숫자로 변경하는 경우 많이 발생 svm(Support vector machine) 신호처리, 의료 응용 분야, 자연어 처리, 음성 및 영상 인식을 비롯한 여러 분류 및 회귀 문제에 사용되는 지도 학습 알고리즘, 기계학습의 하나로 자료 분석을 위한 지도 학습 모델로, 주로 분류와 회귀 분석을 위해 사용 MVC 유저가 보는 페이지, 데이..

데이터분석 프로젝트(파이썬 Covid-19 사진 학습(분류) 1)

✔ 설치 !pip install torch !pip install torchvision !pip install ipywidgets 1. Torch를 기반으로 하며, 자연어 처리와 같은 애플리케이션을 위해 사용된다. GPU사용이 가능하기 때문에 속도가 상당히 빠르다 2. 파이토치가 제공하는 다양한 모델을 가져다 쓰기 위해 사용되는 라이브러리 3. 이미지를 커서를 가지고 이동하면서 이미지를 볼 수 있게하는 라이브러리(슬라이딩 등) ✔ import import torch import copy import os import cv2 import matplotlib.pyplot as plt from torch.utils.data import Dataset, DataLoader from torchvision impo..