전체 글694 [쿠링] 홍보 부스 후기 (feat 건국대 일감호 축제) 건국대 일감호 축제에서 2일간 "쿠링 홍보 부스"를 운영하면서 경험한 내용을 기록해볼까 한다! 1. 부스 신청부터 ~ 준비까지 1.1) 일단 신청부터 사실 신청 당일까지만 하더라도 내가 부스 대표자가 될 거라는 생각은 1도 하지 못하고 있었다.... 하지만 눈떠보니 부스 대표자가 되어 있었다랄까? 하지만 대표자가 된 이상, 성공적으로 끝까지 부스를 완주시키고 싶었다! 일단 부스 이름은 "쿠리의 공지 단속"으로 정하게 되었다. 요즘 인기있는 영화 제목을 이용한 "우영" 님의 아이디어 였는데, 가장 마음에 드는 이름이라 좋았다! iOS개발자 이시지만, 디자인까지 함께 해주신 "재성"님께 감사의 인사를 다시 한번 전한다! 1.2) 팀원들과 거침 없는 회의 팀원 대부분이 직장인이기 때문에, 회의 시간 동안 많은.. BackEnd/쿠링 2023. 5. 20. [쿠링] 검색 쿼리에 Full Text Index 적용하기 해당 글은 개인 프로젝트를 개선해 나가면서 내용을 정리하는 글입니다.1. 문제 되는 상황현 쿠링은 검색어를 입력받으면 like절을 사용하여 원하는 text를 필터링하고 있다.SELECT * FROM notice WHERE notice.contents LIKE '%장학금%'explain을 통해 실행계획을 보면 다음과 같다.예상했듯.... full scan을 하고 있다... 그래도 스토리지 엔진에서 데이터를 불러온 후, 100% filtering 하고 있는 걸 보면 조건절이 스토리지 엔진에 전달되어 필요한 데이터만 가져왔음을 알 수 있다. 이러한 방식은 검색한 text의 내용이 많아지면 어마어마하게 성능이 저하된다.몇 년 치 데이터에서 like로 검색을 한다 생각하면.... 과부하가 발생하고, respons.. BackEnd/쿠링 2023. 5. 11. [컴퓨터 구조] 3. 컴퓨터 연산 이번 장에서는 소수와 실수의 표현과 그 연산과정에 대하여 학습하는 시간이다. 기본적인 덧셈과 뺄샘의 정리는 생략 3.3 곱셈 우선 연필로 곱셈하는 과정을 살펴보자. 0과 1로만 구성된 십진수의 곱셈을 살펴보자. 1000(ten) 곱하기 1001(ten)은 다음과 같다. 첫 번째 피연산자는 피승수(multiplicand)라고 부르고 두 번째 피연산자는 승수(multiplier)라고 부른다. 최종 결과는 곱(product)라고 부른다. 일반적으로 수학에서 우리가 곱셈을 할때 승수의 자릿수를 오른쪽에서 왼쪽으로 가면서 한 번에 하나씩 택해서 이것을 피승수와 곱한 뒤 그 곱셈의 결과를 직전의 곱보다 한 자리 왼쪽에 놓는다. 주목할 점은 최종 곱셈 결과의 자릿수가 피승수나 승수와 비교해서 상당히 크다는 것 이다... CS/Computer Organization Design (2023-1) 2023. 5. 9. [프로그래머스][Java] 택배 배달과 수거하기 (268) 직접 풀어보고 올리는 코드입니다. 지적이나 더 좋은 방향에 대한 댓글은 항상 환영합니다. 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 생각의 흐름 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 이문제를 보고 생각한 방식은 다음과 같았다. 1) 일단 10진수를 2진수로 변환한다 2) 변환된 2진수를 재귀적으로 (왼쪽, 중심, 오른쪽) 으로 나누어서 탐색하면서 판단하면 되겠다! 였다! 하지만 생각하지 못했던 부분이 있었는데, 10진수를 2진수로 변환한다고 끝나는 것 이 아니다... 변환된 2진수가 만약 포화 이진트리가 아니.. Algorithm/프로그래머스 2023. 5. 5. [AWS] AWS Summit 2023 1. 코로나 이후 첫 AWS 컨퍼런스 코로나 시국 이후에 AWS summit 2023이 오래간만에 한국에 열리게 되어 너무 기뻤다. 어떠한 새로운 서비스들을 소개받고 경험해 볼 수 있을지 많은 기대와 관심이 생겼었다~~ 지인이랑 9시쯤 만나서 이동했는데, 가장 큰 충격이 3개의 층을 모두 사용한다는 점이었다. 이전에도 몇 번 대형 컨퍼런스들을 코엑스에서 경험한 적이 있는데, 거의 다 1층만 사용했었다. 오늘 처음 3층도 방문 가능하다는 점을 알게 되었다. 이번에 느낀 게 확실히 전 세계적으로 돈을 잘 버는 기업은 컨퍼런스도 좀 다르구나를 느꼈다. 처음 기조연설시간 전에 영화 메트릭스를 패러디한 짧은 영상을 보여줬는데, 영화관 온 것 같다는 생각이 들 정도로 재미있었다. (동기 세상이라니... 감자튀김 하.. Life/컨퍼런스 2023. 5. 4. [쿠링] Multi thread를 활용한 공지 조회속도 개선 (feat 동기화) 해당 글은 개인 프로젝트를 개선해 나가면서 내용을 정리하는 글입니다. 제가 고민한 고민들을 그냥 복붙 하는 블로그를 본적이 있습니다.... 양심 부탁드립니다... 1. 도입 배경쿠링에서는 학교의 전체 공지를 주기적으로 scrap해와야 한다.하지만 이를 동기 처리 하다 보니 특정 학과의 scrap 속도가 늦어지면, 자연스럽게 전체 작업 속도가 늦어지는 문제가 발생하였다. 문제는 학교의 API를 사용하는 방식이 아니라, 직접 scrap을 통해 정보를 긁어오는 형식이기 때문에 주기적으로 신규 공지를 확인해줘야 하는데, 단일 코어상의 싱글 스레드로 처리하기에는 작업이 너무나 오래 걸렸다. 내가 생각한 공지 확인 간격보다, 한번 업데이트하는 시간이 더 길어지는 문제가 발생한 것이다!나는 이를 해결하기 위해 Mul.. BackEnd/쿠링 2023. 4. 28. [프로그래머스][Java] 택배 배달과 수거하기 (267) 직접 풀어보고 올리는 코드입니다. 지적이나 더 좋은 방향에 대한 댓글은 항상 환영합니다. 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 생각의 흐름 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 생각이고 나발이고 문제 진짜 어렵다 생각 드는데, 이거 나처럼 greedy라고 생각 못한 사람은 끝까지 이 문제 못 건들이다가 끝났을것 같다. 일단 N제한이 100,000 이라 O(N^2), 즉 완전 탐색은 절대 안된다 생각했다. 여기서 문제다. 그럼 O(logN) = 5, O(NlogN) = 500,000, O(N) = 1000.. Algorithm/프로그래머스 2023. 4. 27. [쿠링] SonarCloud와 CI 도입 해당 글은 개인 프로젝트를 개선해 나가면서 내용을 정리하는 글입니다. 1. 도입 배경 기존의 쿠링의 배포 과정에서 CI 과정이 없다는 점이 아쉬웠다. 따라서 이번에는 SonarCloud를 통한 정적분석과 코드 커버리지 측정을 위한 CI과정을 추가해야겠다는 생각이 들었다! SonarCloud공식문서를 보면서 하나하나 해결해봅시다~ https://docs.sonarcloud.io/advanced-setup/ci-based-analysis/github-actions-for-sonarcloud/ GitHub Actions To configure analysis of your project using GitHub Actions you should follow the in-product tutorial. docs... BackEnd/쿠링 2023. 4. 21. [컴퓨터 구조] 2. 명령어: 컴퓨터 언어 2.2 하드웨어 연산 다음 MIPS 어셈블리 언어는 두 변수 b, c를 더해서 그 합을 a에 넣으라고 컴퓨터에게 지시하는 것 이다. add a, b, c MIPS 산술 명령어는 반드시 한 종류의 연산자만 지시하며 항상 변수 3개를 갖는 형식을 엄격하게 지킨다. 변수 b, c, d, e의 합을 구하여 a에 집어 넣는 예를 생각해보자. add a, b, c // a에 (b + c)를 대입한다 add a, a, d // a에 d를 더한다 add a, a, e // a에 e를 더한다 따라서 네 변수의 합을 구하려면 명령어 3개가 필요하다. 덧셈과 같은 연산자의 피연산자(operand)는 더해질 숫자 2개와 합을 기억할 장소 하나, 장소가 모두 3개인 것 이 자연스럽다. 이렇게 모든 명령어가 피연산자를 반드시 3.. CS/Computer Organization Design (2023-1) 2023. 4. 17. [쿠링] 형상관리를 위한 Flyway 도입기 해당 글은 개인 프로젝트를 개선해 나가면서 내용을 정리하는 글입니다. 1. 도입 배경 이번 쿠링 전 학과별 공지 지원 과정에서 기존의 Notice 테이블이 아닌, DepartmentNotice가 추가적을 발생하게 되었다. 새로운 테이블을 기존의 Notice테이블에 Dtype으로 구분하기 시작하면서, 추가된 속성들이 있고, 새로운 값들이 추가되었다. 물론 나야 내가 변경했으니 해당 의미들 을 빠르게 파악 가능하지만, 과연 다른 이가 봐도 이를 빠르게 이해할 수 있을까? 란 의문이 들었다. 또한 서로 다른 환경(local, test, prod)간에 통일된 스키마를 가지기 위해서 많은 리소스가 사용된다. 그러한 과정 속에서 다음 3가지 목표가 생기게 되었다. 업데이트마다 운영 DDL과 개발 DDL을 하나하나 .. BackEnd/쿠링 2023. 3. 31. [쿠링] 중복코드를 Template Method Pattern으로 Refactoring 하기 해당 글은 개인 프로젝트를 개선해 나가면서 내용을 정리하는 글입니다. 1. 현 상황 (개선하기 전의 코드) 우선 다음 코드는 Notice를 Scarp 하는 코드입니다. 문제는 (scarp, scarpAll), (requestWithDeptInfo, requestAllPageWithDeptInfo) 간의 중복 코드가 너무나 많다는 점입니다. scarp : 최근 공지 조회 scarpAll : 모든 공지 조회 이렇게 2개의 메서드를 구분하다 보니 발생한 중복 코드였습니다. 템플릿 메서드 패턴, 함수형 인터페이스, 람다식을 통하여 중복을 제거할 생각입니다! 우선 개선하기 전의 코드는 다음과 같습니다! @Slf4j @Component @NoArgsConstructor public class DepartmentNo.. BackEnd/쿠링 2023. 3. 27. [Spring] @Async와 ThreadPoolTaskExecutor 1. ThreadPoolTaskExecutor 스레드 풀을 사용하는 Executor java.util.concurrent.Executor를 Spring에서 구현한 것 이다. org.springframework.scheduling.concurrent 패키지에서 제공 주로 spring에서 비동기처리를 위해 사용 스레드풀을 사용하여 멀티스레드 구현을 손쉽게 해준다. Default 생성자 하나만 존재 2. Configuration 2 - 1) Pool size configuration @Bean public ThreadPoolTaskExecutor shineTaskExecutor() { ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor(); ta.. BackEnd/Spring 2023. 3. 26. 이전 1 2 3 4 5 6 7 ··· 58 다음