개발일기 (17) 썸네일형 리스트형 기술 선정 1.프로젝트의 필요성 이해: 모든 기술 선택은 프로젝트의 실질적인 필요성에 기반해야 합니다. 무슨 문제를 해결하려는지, 그리고 이에 대한 최적의 해결책이 무엇인지 명확하게 인식하는 것이 가장 중요합니다. 2.기술 성숙도 확인: 신기술은 매력적일 수 있지만, 베타 단계의 기술은 종종 불안정하며 필요한 지원을 제공하지 못할 수 있습니다. 따라서, 공식 문서를 분석하고, 커뮤니티의 의견을 살펴보고, 다양한 사례 연구를 검토함으로써 기술의 성숙도를 꼼꼼히 평가해야 합니다. 3.강력한 커뮤니티와 지원의 존재: 도입하려는 기술이 큰 개발자 커뮤니티의 지원을 받고 있는지 확인하는 것이 중요합니다. 이것은 문제가 발생했을 때, 해결책을 찾는데 큰 도움이 됩니다. 활발한 커뮤니티는 해당 기술이 계속해서 성장하고, 발전할.. 컴파일러, 인터프리터 차이 컴파일(compile)의 역사 컴파일 이야기를 하기전에 어셈블리어에 대해서 간단하게 짚고 넘어가야 한다. 어셈블리어란 무엇인가? 어셈블리어를 위키에서 검색하면 정의를 알 수 있는데, 이 정의에 다음과 같은 문구가 있다. 어셈블리어(영어: assembly language) 또는 어셈블러 언어(assembler language)는 기계어와 일대일 대응이 되는 컴퓨터 프로그래밍의 저급 언어이다. 컴퓨터 구조에 따라 사용하는 기계어가 달라지며, 따라서 기계어에 대응되어 만들어지는 어셈블리어도 각각 다르게 된다. 볼드 처리를 한 이 문장이 앞으로 다루게 될 모든 내용들의 이유이다. 그렇다면 이 문장이 컴파일과 무슨 상관인가? 조금 쉽게 예를 들어보자. 초기 컴퓨터 프로그램들은 모두 어셈블리어로 작성했다. 그러나 .. 함수형 프로그래밍 함수형 프로그래밍(Functional programming)은 자바스크립트 생태계에서 매우 중요한 주제가 되었다. 불과 몇 년전만해도 자바스크립트 개발자들은 함수형 프로그래밍에 대해 알지 못했지만, 내가 본 대부분의 큰 어플리케이션들은 함수형 프로그래밍의 아이디어를 차용하고 있었다. 함수형 프로그래밍(약식으로 FP라고도 불리기도 함)은 순수 함수(pure functions) 작성과 공유 상태(shared state), 변경 가능한 데이터(mutable date)와 side-effects 피하기로 소프트웨어를 구축하는 프로세스이다. 또 한, 함수형 프로그래밍은 명령적이라기보단 선언적이고 어플리케이션의 상태의 흐름이 순수 함수를 통해 흐른다. 이는 어플리케이션의 상태가 공유되고, 객체의 메소드와 함께 배치되.. HealthDuo-org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.TransientPropertyValueException 오류 public void messageSendSave(String messageSendTitle, String receiveMemberId, String messageSendContent, String loginMember, Optional SendMemberInfo) { MessageSend messageSend = new MessageSend(messageSendTitle, messageSendContent, String.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))), loginMember, receiveMemberId); messageSend.addMessageSendMember(SendMem.. HealthDuo - 쪽지 보내기 기능 받은 쪽지함 entity 받은 쪽지함 entity 처음 테이블을 만들 때 하나의 테이블로 받은 쪽지와 보낸 쪽지를 관리하는 게 좋다고 생각했었다. 하지만 하나에 테이블에서 관리하게 되면 보낸 사람이 보낸 쪽지를 삭제하게 되면 받은 사람의 쪽지도 같이 삭제되기 때문 테이블을 분리해야겠다고 생각했다. @Entity @Setter @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class) public class MessageReceive { @Id @GeneratedValue(strategy = GenerationType.AUT.. HealthDuo-java.sql.SQLIntegrityConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails 위 페이지에서 삭제를 누르게 되면 java.sql.SQLIntegrityConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails 에러가 난다. mysql에서 DB 테이블이나 Row를 삭제하려고 할때 위와 같은 메시지가 발생할 때가 있다. 말그대로 현재 삭제하려고 하는 테이블 또는 행이 다른 곳에서 참조하고 있기 때문에 발생하는 문제다. 이 문제가 발생하는 이유는 댓글과 게시글이 단방향 +단방향으로 양뱡향으로 연관관계에 있다. 결론적으로 게시글에 댓글이 달려있으니 삭제가 안되는 것 이었다 따라서 @OneToMany(mappedBy = "bbs" ) List comments = new Ar.. HealthDuo-Thymeleaf 에서의 Context Path 사용방법 컨텍스트 패스(Context Path)란?WAS(Web Application Server)에서 웹어플리케이션을 구분하기 위한 path이다. 다시말해 상대적인 경로이다. 예를들어 JSP 에서 https://zontae.tistory.com/member/new 인 절대 경로가 있으면 /member/new처럼 /member/new를 상대적인 경로로 사용 할 수 있게 도와준다. 이러한 기능은 Thymeleaf에서 어떻게 사용할까. 타임리프는 @{img/error/500.png} 와 같이 @{}를 사용하여 매핑해주면 상대경로로 자동적으로 매핑해준다. 위 코드로 에러페이지로 접속할때 이미지가 나오질않는다. 나오지 않는 이유는 상대경로로 지정했기 때문이다. @{img/error/500.png} 로 지정했으니 에러가난.. HomeTheater - 결제 페이지 쿠폰번호 입력 후 할인 된 금액과 결제할 금액 업데이트 포인트 사용 후 결제할 금액과 할인 내역 업데이트 결제하기를 누르게 되면 카카오 페이 API가 실행된다. let discountratio = 1; //할인률 초기화 let discountsum = 0; //할인 총합 계산 let nowamount = document.getElementById("nowamount").innerText; let count = 0; //쿠폰은 하나만 등록하기 위한 카운팅 let pay_totalprice = document.getElementById("pay_totalprice"); let m_point = document.getElementById("m_point"); //쿠폰 번호입력시 10프로 할인 함수 const .. 이전 1 2 3 다음