나의탄생
- 생활꿀팁생활계좌에서 입금 출금 계좌이체하는 프로그램을 자바로 만들고 있습니다.A. 계정정보는 db를 활용하면 좋겠지만 연동에 제약이 있다면 db처럼 활용할 수 있는 데이터 타입을 하나 만들어서 활용하는 방법을 적용하면 좋을것 같습니다.예제에서는 BankAccount 파일만 올려주셔서 BankAccount.bankAccounts 를 넣었지만 이를 분리하여 리팩토링 하시면 더 좋은 코드가 될것입니다. (local db를 활용한다면 더 좋은 코드가 될것입니다. 예제는 https://www.baeldung.com/spring-boot-h2-database)import java.util.HashMap; import java.util.Map; public class BankAccount { // 계정 생성시 저정할 데이터 타입 public static Map bankAccounts = new HashMap(); private static int changeNumber = 0; public static void main(String[] args) { // 계정 생성 new BankAccount(1, 3000); new BankAccount(2, 10000); new BankAccount(3, 100000); // 계정을 조회하여 이체 BankAccount bankAccount = bankAccounts.get(2); bankAccount.transfer(1, 5000); // 이체한 계정 조회 BankAccount transferBankAccount = bankAccounts.get(1); System.out.println(transferBankAccount); } private int accountNumber; private int balance; public BankAccount(int accountNumber) { this.accountNumber = changeNumber + 1; changeNumber = accountNumber; this.balance = 0; // 계정 생성시 해당 데이터 저장 bankAccounts.put(accountNumber, this); } public BankAccount(int accountNumber, int balance1) { this.accountNumber = changeNumber + 1; changeNumber = accountNumber; this.balance = balance1; // 계정 생성시 해당 데이터 저장 bankAccounts.put(accountNumber, this); } public void deposit(int depositMoney) { balance += depositMoney; } public boolean withdraw(int withdrawMoney) { if (withdrawMoney > balance) { System.out.print("잔액이 부족합니다. 다시 확인해주세요"); return false; } else { balance -= withdrawMoney; return true; } } public boolean transfer(int accountNumber, int transferMoney) { if (transferMoney > balance) { System.out.print("잔액이 부족합니다. 다시 확인해주세요."); return false; } else { // 이체할 데이터 조회 및 이체 BankAccount to = bankAccounts.get(accountNumber); to.setBalance(to.getBalance() + transferMoney); // 이체 후 잔액 감산 balance -= transferMoney; } return true; } public int getNumber() { return accountNumber; } public int getBalance() { return balance; } public void setBalance(int balance) { this.balance = balance; } }
- 생활꿀팁생활자바스크립트로 현재 월의 마지막 일자를 구할 수 있나요?A. var now = new Date(); var firstDate = new Date(now.getYear(), now.getMonth(), 1); var lastDate = new Date(now.getYear(), now.getMonth()+1, 0);// 2월 마지막일 new Date(2020, 10, 0); // 2020-09-30new Date(2020, 10, 0);설명을 한다면월의 경우 0부터 시작하므로 10는 10월이 아니라 9월입니다.10월 0일은 없으므로 하루전인 9월의 마지막일을 리턴합니다.응용한다면 맨 마지막 일에서 하루전이라면 -1 옵션을 넣어주시면 됩니다.new Date(2020, 10, -1); // 2020-09-29
- 생활꿀팁생활자바를 더욱 더 쓰고있는 학생인데 코틀린의 장점은 무엇인가요?A. 자바와 코틀린의 차이점이라고 한다면 개발언어적 문법의 차이라고 보시면 됩니다.즉, 코틀린은 자바에서 좀 더 편리하고 실용적으로 만든 언어입니다.안드로이드 개발시 자바보다 코틀린을 더 많이 사용하며 웹 개발에도 코틀린을 활용하는 사례가 많아지고 있습니다.저같은 경우에도 코틀린으로 프로젝트를 진행하고 코틀린의 매력에 빠져버렸습니다.안드로이드 개발자가 되실거라면 java도 알아야 겠지만 kotlin 을 접하는것을 추천드립니다. 코틀린의 특징으로1. 데이터 타입을 추론한다.private String name; // java val name // kotlin name에 문자를 넣으면 String, 숫자를 넣으면 int2. 안전한 코드 생성@Nullable 및 @NonNull이 Kotlin 유형 시스템에 통합되어 비용이 드는 NullPointerException을 방지java의 경우 null 에 대한 에러 방지를 위해 if문을 통해 계속 체크해야줘 합니다.만약 list 안의 데이터를 처리하기 위해선 list가 null인지 체크 후 그 안의 데이터 필드가 null인지 체크하는 if문이 들어가는데 kotlin의 경우 이를 깔끔하게 처리가 가능합니다.// java @Nullable String strNullable = null; @NonNull String strNonNull = ""; private String strNullOrNotNull; if(strNullOrNotNull == null) { ... } // kotlin var strNullable: String? = null var strNonNull: String = ""3. data classjava 의 경우 setter, getter, toString 등 만들기 위해 lombok을 활용하여 많은 메소드 생성을 대신합니닫.하지만 kotlin 은 data class에 대해 필드만 선언하면 그에 필요한 메소드를 자동으로 생성되어 사용할 수 있습니다.// java @Data public class JavaData { private String s; private int i; private boolean b; } // kotlin data class KotlinData(var s: String?, var i: Int, var b: Boolean)그 이외에는 문법적 차이입니다.기본적인 문법은 링크를 참조하시기 바랍니다.https://junghun0.github.io/2019/07/20/kotlin-android/
- 생활꿀팁생활스프링 MVC 질문 드립니다.A. 안녕하세요.controller에서는 데이터의 처리, service에서는 로직처리를 한다고 생각하시면 됩니다.controller에서 필수값 체크 및 데이터 폼에 맞는지 여부를 확인하고service에서는 처리하고자 하는 로직을 처리하시면 됩니다.하지만 validation을 controller에서 처리하다 보면 복잡하기 때문에 이를 도와주는 bean-validation의 라이브러리가 존재합니다.간단한 예시입니다.@NotNull // null 값 입력 불가 private File file; @Email(message = "Email 형식이 아닙니다.") // email 패턴 체크, error message 출력 private String email; @Min(value = 1, message = "Age should not be less than 1") @Max(value = 30, message = "Age should not be greater than 30") private int number; // 숫자의 경우이외에도 다양한 validation 어노테이션이 존재합니다.아래 링크에 설치방법 및 사용방법에 대한 링크를 참조하시면 됩니다.https://meetup.toast.com/posts/223https://www.baeldung.com/spring-boot-bean-validation확인하시고 추가적인 질문있으시면 남겨주세요.
- 생활꿀팁생활react js 공부를 시작하려합니다 A. react 의 장점은1. 양방향 바인딩단방향 바인딩의 경우 뷰를 업데이트하는 소스코드가 필요합니다.예를 들어 데이터 조회 후 뷰(html template)를 업데이트 해줘야 합니다.하지만 양방향 바인딩은 사용자의 뷰를 업데이트 하는 코드 없이모델에서 template으로 template에서 모델로 값을 자동으로 데이터를 채워줍니다.그로써 반복적인 소스코드를 줄일 수 있습니다. 개인적으로 해당 기능만으로도 굉장히 매력적입니다.2. React-nativereact-native를 통해 모바일 웹과 pc웹을 동시에 호환하는 개발을 진행할 수 있습니다.3. Components재활용성을 높여주는 Component 를 활용한 개발예를 들어 게시판을 하나 만들었다면(Component) 해당 Component로 질문하기 게시판/자유게시판/공지 게시판... 하나를 이용해 다양하게 활용할 수 있습니다.4. 다양한 라이브러리 존재예를들어 파일업로드를 개발한다고 한다면 파일업로드 라이브러리를 설치하고 호출하면 끝난다.일반적으로 개발시 필요한 라이브러리들이 많이 존재하기 때문에 손쉽게 구현할 수 있다.장점은 더 많겠지만 주요 기능만 나열하였습니다.공부하시다 보면 하나씩 보이게 될것입니다.우리나라에서 react의 전망은 매우 좋습니다.현재 대부분의 프론트 개발이 react, vue 그리고 가끔 angular 를 사용합니다.회사마다 사용하는 프레임워크가 다르지만 react, vue를 한다면 대부분 회사에서 긍정적인 반응을 보일것입니다.프론트 개발 자체가 이제 점점 하나의 전문 개발 분야로 분리되어 높은 연봉과 대우를 받습니다.프론트 개발자를 많이 뽑지만 인력이 부족한단 느낌을 받습니다.그만큼 프론트 개발도 많은 지식이 필요한 분야로 발전하고 있다고 생각합니다.센더스님의 프론트 개발자의 첫발을 react로 하는것을 좋은 선택이라고 생각하고 응원합니다.