본문 바로가기

전체 글88

TIL-35 1. 오늘의 키워드 정리 2. 오늘 소감! 1. 오늘의 키워드 -REST api, GOF, Layered architecture, DTO -REST api 전에 쓴 것 같은데 다시 한번 정리한다. 구성 - 자원(URI), 행위(HTTP Method), 표현(Representations) 1) Uniform 2) Stateless - 작업을 위한 상태정보를 저장하고 관리하지 않는다. 3) Cacheable - http의 캐싱 기능 구현 4) self-descriptiveness - REST API 메시지만 보고 이해할 수 있는 쉬운 구조 5) Client-Server - 서로의 역할이 구분되어서 의존성이 적다. 6) 계층형 구조 - REST 서버는 다중 계층으로 구성될 수 있다. https://meetup.. 2021. 11. 5.
TIL-34 String은 불변의 속성을 가진다. String끼리 덧셈 연산을 하면 garbage collector가 남은 String을 처리한다. 따라서 변경이 잦은 문자열은 StringBuffer나 StringBuilder을 사용해야 한다. StringBuffer 동기화 키워드를 지원해서 멀티스레드 환경에서 안전하지만 성능은 StringBuilder보다 안좋다. StringBuilder 동기화를 지원하지 않아서 멀티스레드 환경에는 적합하지 않다. 코테는 Builder로 출처 : https://ifuwanna.tistory.com/221 ORM(Object Relational Mapping) 객체와 DB간의 데이터를 자동으로 매핑해주는 것. 내일부턴 알찰겁니다. 기대하시죠. 2021. 11. 4.
TIL-33 MVC패턴이 생긴 이유 서블릿과 JSP의 한계: 1. 서블릿은 뷰 화면을 위한 HTML 작업이 자바 코드에 섞이게 된다. 이는 매우 복잡하고 지저분한 코드를 써야만 하는 단점이 있다. 그 대안으로 나온 JSP 2. JSP를 이용해 뷰를 생성하는 HTML작업을 가져가고 동적 변경이 필요할 때에만 자바 코드를 적용했다. 이는 서블릿보다 간단한 장점이 있지만, JSP의 문제는 다양한 코드가 노출되게 되고 JSP가 너무 많은 역할을 하게 된다. 3. 변경의 라이프 사이클이 다르다 : UI 수정과 비즈니스 로직의 수정을 다르게 발생할 가능성이 높은데 이를 하나의 코드로 관리하는 것은 유지보수 측면에서 좋지 않다. 4. JSP같은 뷰 템플릿은 화면 렌더링에 최적화되어 있기 때문에 이 부분의 업무만 담당하는 것이 효.. 2021. 11. 3.
TIL-32 정신이 하나도 없다. 두달밖에 안남았는데 나는 모르는게 너무 많다. 평생 배워도 더 공부해야 할 것 같다. 인터넷이 발전 안했으면 오히려 나았을지도 모르겠다. ㅎㅎ. 오늘은 SAM을 이용한 서버리스 배포를 배웠다. 지난 며칠간 서버리스 프론트앤드, 서버리스 백엔드를 배웠다. 배운 것들을 간단하게 회상해보자. 1. cloudfront를 이용한 서버리스 배포, 보안 접속(https)를 위한 인증서 설정, s3 정적 호스팅을 이용한 cloudfront 사용, route53 사용 등을 배웠다. 2. aws lambda를 이용한 서버리스 백앤드 배포를 배웠는데 우선 알려주는데가 많지 않은 따끈따끈한 기술을 배워볼 수 있다는 점이 너무 행복했다. 프로그램이 끝나면 개인적으로 node.js를 공부해보고 싶은데 그때 .. 2021. 11. 2.
TIL-31 CORS error 서버에서 다른 서버로 리소스를 요청할 때 w3c에서 정한 cors 법칙에 따라 CORS 에러가 뜬다. 현대 라이브러리에서는 대응이 되어있지만 정적 호스팅에서 lambda api를 통해 호출하면 페이지에서 cors에러가 뜨게 돼 있다. 그럴 땐 "statusCode" : 200, 'headers' : { 'Access-Control-Allow-Headers': 'Content-Type, x-requested-with', 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Methods': 'GET' }, "body": body, } preflight request 예비 요청과 본 요청으로 나누어 서버로 전송하는데 포스트 요청인 경우에는.. 2021. 11. 2.
TIL-30 서버리스 : 개발자가 서버를 관리할 필요 없이 애플리케이션을 빌드하고 실행할 수 있도록 하는 클라우드 네이티브 개발 모델 -서버 인프라에 대한 프로비저닝, 유지관리, 스케일링을 처리해주며 개발자는 코드를 컨테이너에 패키징만 하면 된다. https://www.redhat.com/ko/topics/cloud-native-apps/what-is-serverless VPC https://lukaid.tistory.com/61 (데이터베이스)프록시 : 클라이언트 애플리케이션과 데이터베이스 사이의 네트워크 트래픽을 처리하는 것으로 db연결 관리를 위한 메모리 및 CPU 오버헤드를 줄인다. https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/rds-proxy... 2021. 10. 29.
TIL-29 aws 리눅스 간편 명령어 몇가지 cat /etc/nginx/nginx.conf 엔진x의 conf파일을 확인하는 명령어 여기에 나온 경로를 통해 include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; cat /etc/nginx/sites-enabled/default를 통해서 index.html의 경로를 알 수 있다. 이제 여기에 index.html 파일을 복사해주자 filezila를 통해 넣어준 파일을 sudo cp ~/index.html /var/www/html 해주면 이제 메인 페이지가 변경되는 것을 알 수 있다. 그 외에 vi 안에서 :wq라던가 i를 통해서 수정한다던가 /를 통해 문서 안에서 검색하는 기능등이 있었다. 새록새록 .. 2021. 10. 27.
TIL-28 MYSQL 마지막 주차 subquery where문 안의 서브쿼리 SELECT user_id, name, email FROM users u WHERE user_id in ( select user_id from orders o WHERE payment_method = 'kakaopay' ) 이래 하면 user_id와 일치하는 값들의 order들만 들어오게 된다. 서브쿼리는 where, select, from절 어디에도 들어갈 수 있다. SELECT c.checkin_id, c.user_id, c.likes, ( SELECT AVG(likes) FROM checkins WHERE user_id = c.user_id ) as avg_likes_user FROM checkins c select절에 들어간 sub.. 2021. 10. 26.
TIL-27 MYSQL 같은 것과 같지 않은 것 select * from orders where course_title != '앱개발 종합반' and payment_method = 'kakaopay'; between, > 20000; select * from orders where created_at between '2020-07-13' and '2020-07-15'; in select * from checkins where week in (1, 3); Like select * from users where email like '%daum.net'; r을 두번째에 두는 email들 where email like '_r%'; 최소한 세글자인 a로 시작하는 email where email like 'a__%'; Limi.. 2021. 10. 25.
TIL-26 자바 람다, 스트림 등등 람다 - 보다 단순하게 표현하는데 유용한 개념으로 식별자 없이 실행 가능한 함수. 함수의 이름을 정의하지 않아도 함수처럼 활용할 수 있지만 반복적 사용을 하게 되는 함수일 경우 선언 해 주는것이 좋다. 자바 stream - 기존에 자바 컬렉션이나 배열을 가공할 떄 for이나 forEach로 가공했다면 stream을 이용해 람다함수 형식으로 요소들의 처리가 가능 어떤 배열이나 컬렉션이든 .stream으로 바꿀 수 있다. 스트림은 사용되고 난 후에 다시 사용할 수 없다. List list = new ArrayList(); list.add("korea"); Stream stream = list.stream(); stream.map(str -> str.toUpperCase()) .for.. 2021. 10. 23.
TIL-25 버블 - 끝없는 비교 선택 - 키 작은 사람 찾기 삽입 - 신병 위는 다 N^2 이지만 이미 정렬된 배열이라면 삽입이 가장 좋은 시간복잡도를 가진다. 병합 - 분할정복 - NlogN 쓰레드 - 애플리케이션 코드를 순차적으로 실행하는 것은 쓰레드 자바 메인 메서드는 main이라는 쓰레드가 실행 동시 처리가 필요하면 쓰레드 추가생성 요청 마다 쓰레드를 생성하면 -장점 동시 요청을 처리할 수 있다. 리소스가 허용할 때 까지 처리가 가능하다 하나의 쓰레드가 지연돼도 나머지 쓰레드는 정상 동작한다 -단점 쓰레드 생성 비용이 비싸고 컨텍스트 스위칭은 리소스를 많이 쓴다 쓰레드 생성에 제한이 없으면 hw의 임계점을 넘을 때 서버가 죽는다. 따라서 쓰레드 풀이라는 것을 사용한다. 필요한 쓰레드를 풀에 보관하고 관리한다.. 2021. 10. 21.
TIL-24 어제 발표가 끝나고 알고리즘 주간이다. 오늘은 알고리즘 강의 2주차까지 듣고 문제를 푸는 것을 했다. 프로젝트에 만족하진 못했지만 다음 프로젝트도 있으니까 그때까지 남은 시간동안 다 같이 공부하는 분위기를 만들어봐야겠다. 강의 내용은 그저 자료구조 시간에 배우는 정확하게는 1학년 c언어 시간에 배웠던 링크드 리스트랑 재귀함수같은 기초적인 부분이었다. 잠이 더 중요하다. 그럼이만 2021. 10. 21.