전체 글

Web

Validation(유효성 검사) 백-프론트 통합 검증 모듈 구현 (Spring-React)

유효성 검사는 어디서 해야 할까, 백엔드? 프론트엔드? 프론트에서만 유효성 검사를 하면, 개발자 도구(Postman과 같은) 로 요청 시 검사 되지 않는다. 백엔드에서만 유효성 검사를 하면, 엔드유저들의 오입력을 미리 쳐내지 못하고 전부 서버로 콜 하기 때문에 부하 문제와 연결된다. 정답은 둘 다 해야 한다. 프론트는 프론트대로 자바스크립트를 사용해서 아래와 같이 유효성 검증을 한다. function check(email,password) { var emailCheck = '[a-z0-9]+@[a-z]+\.[a-z]{2,3}'; if(emailCheck.test(email)){ alert('이메일 형식이 올바르지 않습니다.'); } if(password.length < 8) { alart('비밀번호는 8..

Book Review

웹 개발자를 위한 대규모 서비스를 지탱하는 기술(읽는중)

1장 단어 정리 - 회선 : 데이터를 전송하기 위한 통로 - Mbps : 회선(대역폭)의 사용량 단위 - 스케일 아웃(scale-out) : 저가의 하드웨어를 늘려 부하를 분산하는 방법 - 스케일 업(scale-up) : 하드웨어의 성능을 높여 처리능력을 끌어올리는 방법 - 미들 웨어 : 서로 다른 애플리케이션이 서로 통신하는 데 사용되는 소프트웨어 요약 - 대규모 웹 서비스는 높은 트래픽과 데이터량에 대처하기 위해 확장성, 부하분산, 효율적 운용에 대해 고려해야한다. 2장 단어 정리 - 라우터 : 네트워크 사이를 연결해주는 장치 (ref https://i5i5.tistory.com/455) - 병목현상 (bottleneck) : 병의 목 부분처럼 갑자기 좁아지는 것을 비유하여 나타낸 말. (교통 정체 ..

Java/Standard

break 와 continue의 차이

결론부터 말하자면, break문은 break; 를 적어준 곳에서 해당 조건문 블록과 그 밖의 반복문 자체를 탈출한다. continue문은 해당 조건문 블록을 탈출하여 아래 명령문은 실행하지 않고, 다음 반복문 실행절차를 수행한다. 아래에서 좀 더 자세히 반복문을 탈출하는 break 문과 조건문을 탈출하는 continue 문에 대해 알아보자. break 와 continue 를 이용하면 개발자가 본인 임의로 반복문의 실행 흐름을 제어할 수 있다. break문 switch~ case 문에서 break문은 case의 실행문 수행 후 바로 해당 switch 블록을 빠져나가는 역할을 했다. 반복문에서도 마찬가지로 해당 블록을 빠져나하는 역할을 하며, break가 속한 반복문을 탈출한다. 다음 예시를 보자. 반복문은..

Java/Standard

BufferedReader의 readLine() 은 왜 throws Exception 해주어야할까?

위와같이 main 에 throws Exception 해주지 않거나 try-catch 로 예외처리 하지 않으면 readLine() 메서드에 에러가 나는 이유가 갑자기 궁금해져 집요하게 파보았다. 사실 이런건 왜 발생하는가 보다 발생했을때 어디서 어떻게 처리할까 를 중점으로 고민하는것이 좋지만 어쩔수 없는 성격상 피치 못하게 파헤쳐 보게 되었다..ㅎㅎ 일단 IOException은 checkedException 이기 때문에 반드시 예외처리를 해야한다. readLine() 을 까보았다. 일단 리턴타입이 boolean 이다. synchronized(lock) 은 쉽게 동시에 호출되는것을 막아주는 메서드인데, lock을 걸고 한번에 한 사용자만 readLine 메서드에 접근해서 InputStreamReader가 열..

Java/Standard

Scanner.nextInt() / nextLine() 오류 : 두가지 해결방법

다음은 Scanner 프로그램을 구현하다 발견한 오류이다. 두가지 해결 방법을 찾았다. 오류 코드 예시: 오류 원인 : Scanner.nextInt() 메소드가 사용자가 입력한 enter(개행문자) 를 제거하지 않기 때문이다. 사용자는 콘솔창에 숫자입력 후 enter를 누르는데, 이때 nextInt() 가 숫자는 입력받고, 개행문자는 제거하지않은 채 그대로 남겨둔다. 남겨진 개행문자가 다음 scan.nextLine() 의 입력으로 처리되어 곧바로 개행되고, 위와같이 출력된다. 오류 해결 방법 : 해결방법 1 - scan.nextInt 후 scan.nextLine() 하기 전, scan.nextLine() 을 한번 더 작성하여 개행문자 제거 해결방법 2 - scan.nextLine() 로 읽어들인 후 In..

Java/Standard

반복문 : while 과 do~while

while while문은 for문과 같은 반복문이지만 구성요소의 배치가 다르다. while문은 비교적 형태는 간단하다. 형식은 다음과 같다. 변수 선언및 초기화; while ( 조건식 ) { 실행문 ; } for문에서 했던 0부터 100까지 출력하는 동일한 반복문을 while문으로 작성해보았다. while문은 위와같이 반복 수행할 변수를 while 문 위에 선언하고 초기화한다. 그리고 while문 괄호 안에는 조건식만 존재한다. 증감식과 실행문은 블록안에 작성한다. 실행 흐름은 다음과 같다. while 문의 실행흐름은 for 문과 거의 비슷하다. 1 에서 변수를 i 를 선언하고, 0으로 초기화했다. i = 0 인 상태로 while문에 진입한다. 2 에서 i 가 조건식 i

Java/Standard

반복문 완전 기초 이해하기 : for문

반복문은 이름 그대로 같은 명령문을 여러번 반복하기 위한 것이다. 반복문은 왜 필요할까? 예를 들어보자. 0부터 100까지를 출력하려고 한다. 지금까지 배운 바로는 System.out.println(0); System.out.println(1); System.out.println(2); System.out.println(3); . . . System.out.println(100); 이렇게 101번을 직접 작성해서 실행해야 할 것이다. 매우 비효율적이다. 이럴때 반복해서 실행할 명령문을 공식화하면 간단히 해결할 수 있다. 그래서 고안해낸 것이 반복문 이다. 우리가 0부터 100까지 출력하려고 할 때, 다음을 생각할 수 있다. 첫번째, 무엇을 반복 할 것인가? = 0~100 의 출력문을 반복 할 것이다. =..

Java

조건문 if~else 와 switch~case

프로그래밍 한다 는 것은 어떤 기능을 처리하기 위한 명령들을 구현하는 것이다. 프로그램을 실행한다는 것은 프로그램에서 구현한 명령들을 실행하는 것을 의미한다. 조건문은 명령문을 실행시킬 때, 특정 조건에 따라 다음에 실행할 명령문을 지정하기 위해서 사용한다. 조건문을 알면 프로그램의 실행 흐름을 조절할 수 있다. 조건문을 작성했을 때의 실행흐름은 아래와 같다. 조건문을 만났을때 조건을 검사해서 true이면 실행문1을 수행하고, false 이면 실행문2를 수행하게끔 구현한다. 좀 더 구체적인 예시를 들어보자. 개발자가 시험성적에 관련한 프로그램을 구현했다고 가정하자. 성적이 70점보다 높은 학생은 통과이고, 아닌 학생은 재시험 처리를 할 것이다. 이럴 때 조건문을 사용한다 같은 그림을 적용시켜 이해해보자...

Java

비트 연산자의 이해

비트 연산자는 정수타입의 데이터를 2진수로 계산하는 연산자이다. ( ※ 우리가 평소 사용하는 숫자는 10진수이다. ) 컴퓨터는 모든 정보를 2진수로 표현하는데, 2진수는 1과 0으로만 표현된다. 이때 1이나 0을 비트(bit) 라고 한다. 그리고 비트가 8 개가 모인 것을 바이트(byte) 라고 한다. 즉, 1byte = 8 bit 바이트(byte) 는 의미 있는 정보 하나를 표현하는 최소단위이다. 그럼 우리가 사용하는 숫자 10진수를 컴퓨터가 받아들일 수 있는 2진수로 표현할 수는 없을까? 표현할 수 있다. 다음은 10진수인 숫자 20을 2진수로 표현하는 과정이다. 위의 결과로 나온 2진수 10100을 표현할 때 의미있는 최소단위 1byte(8bit)로 아래와같이 표현한다. 위처럼 10100 은 5비트..

Java/Standard

2진수,8진수,16진수의 모든것

개발자가 N진수를 알아야하는 이유 사람에겐 3과 5를 더하는 것이 익숙하기 때문에 주어진 수를 이용하여 바로 계산이 가능하지만, 컴퓨터는 그렇지 않다. 컴퓨터는 사람이 계산하는 방식과 다른 원리로 계산을 한다. 이 원리를 이해하기 위해서는 '진수' 라는 개념에 대한 이해가 필요하다. 진수란? 진법으로 나타내어진 수를 의미한다 n진법이란? 0부터 n개의 숫자를 사용해서 수를 표현하는 방법이다. 즉,0~ (n-1) 까지 표현한다. n진법으로 나타낸 수가 n진수이다. 이것을 알면 각 진법을 간단히 생각할 수 있다. 2진법이란, 0~1까지의 2개의 숫자를 사용해서 수를 표현한다. 8진법이란, 0~7 까지의 8개의 숫자를 사용해서 수를 표현한다. 16진법이란, 0~9 까지의 10개의 숫자를 사용하고 남는 자리는 ..

hyeindev
hyeindev's IT record