목록

'홈' 731건

  • 노드 서비스 테스트하기 - 테스트 준비하기
    프로그래밍 언어/NODE JS · 댓글
    실제 서비스를 개발 완료 후, 개발자나 QA들은 자신이 만든 서비스가 제대로 동작하는지 테스트합니다. 이때 기능이 많다면 일일이 수작업으로 테스트하기에는 작업량이 너무 많을 수 있습니다. 이런 경우 테스트를 자동화하여 프로그램이 프로그램을 테스트하도록 만들기도 합니다.또한, 테스트 환경과 실제 서비스 환경을 다르므로 테스트하는 제약이 따를 수도 있고, 테스트 결과와 실제 동작 결과가 다를 수도 있습니다. 이럴 때는 테스트 환경에서 실제 환경을 최대한 흉내 내서 작업합니다.단, 테스트를 아무리 철저하게 해도 에러를 완전히 막을 수는 없습니다. 보통 에러는 개발자가 예상하지 못한 케이스에서 발생하므로, 예상하지 못한다면 그에 대한 테스트도 작성할 수 없습니다. 하지만 모든 에러를 없앨 수 없다라도 테스트는 ..
  • 표현 언어란? - 표현 언어에서 사용하는 자료형과 연산자
    프로그래밍 언어/자바 웹 · 댓글
    초기에는 HTML 태그를 중심으로 자바를 이용해 화면을 구현했으나 화면에 대한 요구 사항이 복잡해지면서 자바 코드를 대체하는 액션 태그가 등장했습니다. 이어서 JSP 2.0에서는 페이지 안에서 복잡한 자바 코드를 제거하는 쪽으로 발전했습니다. 디자이너 입장에서는 JSP 페이지 안에서 복잡한 자바 코드가 있으면 화면 작업을 하기가 어려웠기 때문입니다. 그리고 현재는 JSP 페이지는 스크립트 요소보다는 표현 언어와 JSTL을 사용해서 구현합니다.표현 언어는 자바 코드가 들어가는 표현식을 좀 더 편리하게 사용하기 위해 JSP 2.0부터 도입된 데이터 출력 기능입니다. 표현식에는 자바 변수나 여러 가지 자바 코드로 된 식을 사용하는데, 표현식의 자바 코드가 복잡해짐에 따라 JSP 2.0부터는 자바 코드로 출력하..
  • CORS 이해하기
    프로그래밍 언어/NODE JS · 댓글
    NodeCat이 nodebird-api를 호출하는 것은 서버에서 서버로 API를 호출하는 것입니다. 만약 Nodecat의 프런트에서 nodebird-api의 서버 API를 호출하면 어떻게 될까요?routes/index.js에 프론트 화면을 렌더링하는 라우터를 추가합니다.const express = require("express");const axios = require("axios");const router = express.Router();const URL = "http://localhost:8002/v1";axios.defaults.headers.origin = "http://localhost:4000"; // origin 헤더 추가 // ❶const request = async (req, api) ..
  • QR 코드 만들기
    프로그래밍 언어/Python · 댓글
    QR 코드는 어떤 문자열을 특정 규칙에 따라 이미지로 변환하는 것입니다. QR 코드를 해석할 수 있는 기기, 즉 QR 코드 스캐너를 이용해 해당 이미지에 담긴 문자열을 읽을 수 있습니다. 문자열 QR 코드qrcode 패키지를 불러오고, 함수 qrcode.make()를 사용해서 문자열을 작성한 QR 코드를 생성해 볼 것입니다. 비주얼 스튜디오 코드에서 새로운 'step_1_2.py' 파일을 생성하고, 아래 코드를 입력한 뒤, 대화형 창에서 실행하세요. 대화형 창에 QR 코드가 출력됩니다.import qrcodeimg = qrcode.make("헬로, QR 코드!")img [실행결과] 출력한 QR 코드를 스미트폰의 QR 코드 스캐너로 스캔합니다. "헬로, QR 코드!" 문자열이 출력됩니다. 스마트폰의 운영..
  • setProperty/getProperty 액션 태그를 이용한 회원 정보 실습
    프로그래밍 언어/자바 웹 · 댓글
    useBean 액션 태그를 사용해 자바 코드를 사용해 자바 코드를 사용하지 않고 자바 빈을 생성했습니다. 그러나 여전히 빈의 속성에 값을 설정할 때는 자바 코드에 setter을 사용하고 있습니다. useBean에 접근해 속성 값을 설정하거나 가져오는 엑션 태그와 액션 태그를 사용하는 방법을 다음 표에 정리해 두었으니 참고하기 바랍니다. setProperty와 getProperty 태그의 특징이름정의형식setPropertyuseBean의 속성에 값을 설정하는 태그형식:- name: 태그의 id 속성에 지정한 이름- property: 값을 설정할 속성 이름- value: 속성에 설정할 값getPropertyuseBean의 속성 값을 얻는 태그형식:- name: 태그의 id 속성에 지정한 이름- pro..
  • QR 코드 기초 다지기
    프로그래밍 언어/Python · 댓글
    QR 코드는 다양한 정보를 간편하게 공유할 수 있는 강력한 도구입니다.qrcode 패키지를 장착하고, 원하는 정보를 간단히 전달할 수 있도록 QR 코드를 생성하는 기본적인 방법을 배웁니다. 파이썬 패키지로 준비하기본격적으로 실습을 시작하기 전에 필요한 패키지에 대해 간략히 소개하고, 개발 환경에 설치해 봅시다. pathlib 패키지pathlib 패키지를 사용하여 실습에 필요한 폴더를 생성해 봅시다. 현재 작업 폴더를 'ch_04'로 지정하고 하위 경로에 'input', 'output' 폴더를 생성하겠습니다.비주얼 스튜디오 코드에서 새로운 파일을 만들고, 파일명을 'step_1_1.py'로 지정합니다. 다음과 같이 코드를 작성한 뒤, 대화형 창에서 실행합니다. 현재 작업 폴더의 하위 폴더로 'input',..
  • 사용량 제한 구현하기
    프로그래밍 언어/NODE JS · 댓글
    일시적으로 인증된 사용자(토큰을 발급받은 사용자)만 API를 사용할 수 있게 필터를 두긴 했지만, 아직 충분하지는 않습니다. 인증된 사용자라고 해도 과도하게 API를 사용하면 API 서버에 무리가 갑니다. 따라서 일정 기간 내에 API를 사용할 수 있는 횟수를 제한하여 서버의 트래픽을 줄이는 것이 좋습니다. 유로 서비스라면 과금 체계별로 횟수에 차이를 둘 수도 있습니다. 예를 들면 무료료 이용하는 사람은 1시간에 열 번을 허용하고, 유료로 이용하는 사람은 1시간에 100번을 허용하는 식입니다.이러한 기능 또한 npm에 패키지로 만들어져 있습니다. 이 기능을 제공하는 express-rate-limit 패키지를 소개합니다. nodebird-api 서버에 다음 패키지를 설치합니다.$ npm i express-..
  • 유즈빈 액션 태그를 이용한 회원 정보 조회 실습
    프로그래밍 언어/자바 웹 · 댓글
    자바 빈 코드로 이루어진 자바 빈을 자주 사용할 경우 화면이 복잡해진다는 단점이 있습니다. 이처럼 단점을 보완하기 위해 나온 것이 유즈빈 액션 태그입니다.유즈빈 액션 태그는 JSP 페이지에서 자바 빈을 대체하기 위한 태그로, 사용 형식은 다음과 같습니다.여기서 id는 JSP 페이지에서 자바 빈 개체에 접근할 때 사용할 이름을 의미합니다, class 패키지 이름을 포함한 자바 빈 이름을, scope는 자바 빈에 대한 접근 범위를 지정하는 역할을 합니다 (page, request, session, application를 가지며 기본값은 page입니다). 1. 다음과 같이 실습 파일 member2.jsp를 추가합니다. 2. member2.jsp를 다음과 같이 작성합니다. 회원 가입 및 조회 시 MemberBe..
  • 이미지 콜라주에 메시지 남기기
    프로그래밍 언어/Python · 댓글
    비주얼 스튜디오 코드에서 새로운 파일을 만들고, 파일명을 'step_3_3.py'로 변경하세요. 다음과 같이 코드를 입력한 후, 대화형 창에서 실행하면 왼쪽 상단에 변수 test에 저장된 문자열이 출력됩니다. ch03/step_3_3.pyfrom pathlib import Pathfrom PIL import Image, ImageDraw, ImageFontfrom step_1_1 import IN_DIR, OUT_DIR # 이전에 작성한 모듈을 불러옵니다.from step_3_2 import OUT_3_2img_raw = Image.open(OUT_3_2) # 06text = "2023년의 발리, 그 황홀했던 순간들" # 이미지에 추가할 메시지font = ImageFont.truetype(IN_DIR /..
  • 자바 빈을 이용한 회원 정보 조회 실습
    프로그래밍 언어/자바 웹 · 댓글
    자바 빈은 웹 프로그램, 즉 Java EE 프로그래밍 시 여러 객체를 거치면서 만들어지는 데이터를 저장하거나 전달하는 데 사용합니다. 자바의 DTO(Data Transfer Object, 데이터 전송 객체) 클래스, VO(Value Object, 값 객체) 클래스와 같은 개념이라고 할 수 있습니다.자바 빈을 만드는 방법은 VO 클래스를 만드는 방법과 같은 다음과 같습니다.속성의 접근 제한자는 private입니다.각 속성(attribute, property)은 각각의 setter/getter를 가집니다.setter/getter 이름의 첫 글자는 반드시 소문자입니다.인자 없는 생성자를 반드시 가지며 다른 생성자도 추가할 수 있습니다.그럼 자바 빈을 이용해 회원 테이브의 회원 정보를 조회한 후 출력해 보겠습니..
  • 이미지 배열하기
    프로그래밍 언어/Python · 댓글
    콜라주는 여러 개의 이미지를 하나의 이미지로 조화롭게 배치하는 기법입니다. 아름다운 콜라주를 만들기 위해서는 이미지의 크기, 위치 등을 세심하게 고려해야 합니다. 하나의 큰 배경 이미지를 생성하고, 그 위에 개뱔 이미지를 불러와 알맞은 위치에 삽입하면 됩니다.완성된 이미지 콜라주에 텍스트 메시지를 추가하는 방법도 다릅니다 이미지 가로 배치이제부터 6개의 이미지를 가로로 나란히 배치해 보겠습니다. 먼저, 개발 이미지의 개수와 크기를 고려하여 배경 이미지를 만듭니다. 이어서 삽입될 모든 이미지의 크기를 가로세로 500px로 조정한 후, 이를 배경 이미지 위에 붙이면 됩니다.비주얼 스튜디오 코드에서 새로운 파일을 생성하고 파일명을 'step_3_1.py'로 변경하세요. 다음 코드를 입력한 뒤, 대화형 창에서 ..
  • 다른 서비스에서 호출하기
    프로그래밍 언어/NODE JS · 댓글
    API 제품 서버를 만들었으니 API를 사용하는 서비스로 만들어봅시다. 이 서비스는 다른 서버에게 요청을 보내므로 클라이언트 역할을 합니다. API 제공자가 아닌 API 사용자의 입장에서 진행하는 것이며, 바로 NodeBird 앱의 데이터를 가져오고 싶어 하는 사용자입니다. 보통 그 데이터를 가공해 2차적인 서비스를 하려는 회사가 API를 이용하곤 합니다. 예를 들어 쇼핑몰들이 있으면, 쇼핑몰들의 최저가를 알려주는 서비스가 2차 서비스가 됩니다. 우리의 2차 서비스 이름은 NodeCat입니다.nodebird-api 폴더와 같은 위치에 nodecat-api 폴더와 같은 위치에 nodcat이라는 새로운 폴더를 만듭니다. 별도의 서버이므로 nodebird-api와 코드가 섞이지 않게 주의합니다.{ "name..

노드 서비스 테스트하기 - 테스트 준비하기

실제 서비스를 개발 완료 후, 개발자나 QA들은 자신이 만든 서비스가 제대로 동작하는지 테스트합니다. 이때 기능이 많다면 일일이 수작업으로 테스트하기에는 작업량이 너무 많을 수 있습니다. 이런 경우 테스트를 자동화하여 프로그램이 프로그램을 테스트하도록 만들기도 합니다.또한, 테스트 환경과 실제 서비스 환경을 다르므로 테스트하는 제약이 따를 수도 있고, 테스트 결과와 실제 동작 결과가 다를 수도 있습니다. 이럴 때는 테스트 환경에서 실제 환경을 최대한 흉내 내서 작업합니다.단, 테스트를 아무리 철저하게 해도 에러를 완전히 막을 수는 없습니다. 보통 에러는 개발자가 예상하지 못한 케이스에서 발생하므로, 예상하지 못한다면 그에 대한 테스트도 작성할 수 없습니다. 하지만 모든 에러를 없앨 수 없다라도 테스트는 ..

표현 언어란? - 표현 언어에서 사용하는 자료형과 연산자

초기에는 HTML 태그를 중심으로 자바를 이용해 화면을 구현했으나 화면에 대한 요구 사항이 복잡해지면서 자바 코드를 대체하는 액션 태그가 등장했습니다. 이어서 JSP 2.0에서는 페이지 안에서 복잡한 자바 코드를 제거하는 쪽으로 발전했습니다. 디자이너 입장에서는 JSP 페이지 안에서 복잡한 자바 코드가 있으면 화면 작업을 하기가 어려웠기 때문입니다. 그리고 현재는 JSP 페이지는 스크립트 요소보다는 표현 언어와 JSTL을 사용해서 구현합니다.표현 언어는 자바 코드가 들어가는 표현식을 좀 더 편리하게 사용하기 위해 JSP 2.0부터 도입된 데이터 출력 기능입니다. 표현식에는 자바 변수나 여러 가지 자바 코드로 된 식을 사용하는데, 표현식의 자바 코드가 복잡해짐에 따라 JSP 2.0부터는 자바 코드로 출력하..

CORS 이해하기

NodeCat이 nodebird-api를 호출하는 것은 서버에서 서버로 API를 호출하는 것입니다. 만약 Nodecat의 프런트에서 nodebird-api의 서버 API를 호출하면 어떻게 될까요?routes/index.js에 프론트 화면을 렌더링하는 라우터를 추가합니다.const express = require("express");const axios = require("axios");const router = express.Router();const URL = "http://localhost:8002/v1";axios.defaults.headers.origin = "http://localhost:4000"; // origin 헤더 추가 // ❶const request = async (req, api) ..

QR 코드 만들기

QR 코드는 어떤 문자열을 특정 규칙에 따라 이미지로 변환하는 것입니다. QR 코드를 해석할 수 있는 기기, 즉 QR 코드 스캐너를 이용해 해당 이미지에 담긴 문자열을 읽을 수 있습니다. 문자열 QR 코드qrcode 패키지를 불러오고, 함수 qrcode.make()를 사용해서 문자열을 작성한 QR 코드를 생성해 볼 것입니다. 비주얼 스튜디오 코드에서 새로운 'step_1_2.py' 파일을 생성하고, 아래 코드를 입력한 뒤, 대화형 창에서 실행하세요. 대화형 창에 QR 코드가 출력됩니다.import qrcodeimg = qrcode.make("헬로, QR 코드!")img [실행결과] 출력한 QR 코드를 스미트폰의 QR 코드 스캐너로 스캔합니다. "헬로, QR 코드!" 문자열이 출력됩니다. 스마트폰의 운영..

setProperty/getProperty 액션 태그를 이용한 회원 정보 실습

useBean 액션 태그를 사용해 자바 코드를 사용해 자바 코드를 사용하지 않고 자바 빈을 생성했습니다. 그러나 여전히 빈의 속성에 값을 설정할 때는 자바 코드에 setter을 사용하고 있습니다. useBean에 접근해 속성 값을 설정하거나 가져오는 엑션 태그와 액션 태그를 사용하는 방법을 다음 표에 정리해 두었으니 참고하기 바랍니다. setProperty와 getProperty 태그의 특징이름정의형식setPropertyuseBean의 속성에 값을 설정하는 태그형식:- name: 태그의 id 속성에 지정한 이름- property: 값을 설정할 속성 이름- value: 속성에 설정할 값getPropertyuseBean의 속성 값을 얻는 태그형식:- name: 태그의 id 속성에 지정한 이름- pro..

QR 코드 기초 다지기

QR 코드는 다양한 정보를 간편하게 공유할 수 있는 강력한 도구입니다.qrcode 패키지를 장착하고, 원하는 정보를 간단히 전달할 수 있도록 QR 코드를 생성하는 기본적인 방법을 배웁니다. 파이썬 패키지로 준비하기본격적으로 실습을 시작하기 전에 필요한 패키지에 대해 간략히 소개하고, 개발 환경에 설치해 봅시다. pathlib 패키지pathlib 패키지를 사용하여 실습에 필요한 폴더를 생성해 봅시다. 현재 작업 폴더를 'ch_04'로 지정하고 하위 경로에 'input', 'output' 폴더를 생성하겠습니다.비주얼 스튜디오 코드에서 새로운 파일을 만들고, 파일명을 'step_1_1.py'로 지정합니다. 다음과 같이 코드를 작성한 뒤, 대화형 창에서 실행합니다. 현재 작업 폴더의 하위 폴더로 'input',..

사용량 제한 구현하기

일시적으로 인증된 사용자(토큰을 발급받은 사용자)만 API를 사용할 수 있게 필터를 두긴 했지만, 아직 충분하지는 않습니다. 인증된 사용자라고 해도 과도하게 API를 사용하면 API 서버에 무리가 갑니다. 따라서 일정 기간 내에 API를 사용할 수 있는 횟수를 제한하여 서버의 트래픽을 줄이는 것이 좋습니다. 유로 서비스라면 과금 체계별로 횟수에 차이를 둘 수도 있습니다. 예를 들면 무료료 이용하는 사람은 1시간에 열 번을 허용하고, 유료로 이용하는 사람은 1시간에 100번을 허용하는 식입니다.이러한 기능 또한 npm에 패키지로 만들어져 있습니다. 이 기능을 제공하는 express-rate-limit 패키지를 소개합니다. nodebird-api 서버에 다음 패키지를 설치합니다.$ npm i express-..

유즈빈 액션 태그를 이용한 회원 정보 조회 실습

자바 빈 코드로 이루어진 자바 빈을 자주 사용할 경우 화면이 복잡해진다는 단점이 있습니다. 이처럼 단점을 보완하기 위해 나온 것이 유즈빈 액션 태그입니다.유즈빈 액션 태그는 JSP 페이지에서 자바 빈을 대체하기 위한 태그로, 사용 형식은 다음과 같습니다.여기서 id는 JSP 페이지에서 자바 빈 개체에 접근할 때 사용할 이름을 의미합니다, class 패키지 이름을 포함한 자바 빈 이름을, scope는 자바 빈에 대한 접근 범위를 지정하는 역할을 합니다 (page, request, session, application를 가지며 기본값은 page입니다). 1. 다음과 같이 실습 파일 member2.jsp를 추가합니다. 2. member2.jsp를 다음과 같이 작성합니다. 회원 가입 및 조회 시 MemberBe..

이미지 콜라주에 메시지 남기기

비주얼 스튜디오 코드에서 새로운 파일을 만들고, 파일명을 'step_3_3.py'로 변경하세요. 다음과 같이 코드를 입력한 후, 대화형 창에서 실행하면 왼쪽 상단에 변수 test에 저장된 문자열이 출력됩니다. ch03/step_3_3.pyfrom pathlib import Pathfrom PIL import Image, ImageDraw, ImageFontfrom step_1_1 import IN_DIR, OUT_DIR # 이전에 작성한 모듈을 불러옵니다.from step_3_2 import OUT_3_2img_raw = Image.open(OUT_3_2) # 06text = "2023년의 발리, 그 황홀했던 순간들" # 이미지에 추가할 메시지font = ImageFont.truetype(IN_DIR /..

자바 빈을 이용한 회원 정보 조회 실습

자바 빈은 웹 프로그램, 즉 Java EE 프로그래밍 시 여러 객체를 거치면서 만들어지는 데이터를 저장하거나 전달하는 데 사용합니다. 자바의 DTO(Data Transfer Object, 데이터 전송 객체) 클래스, VO(Value Object, 값 객체) 클래스와 같은 개념이라고 할 수 있습니다.자바 빈을 만드는 방법은 VO 클래스를 만드는 방법과 같은 다음과 같습니다.속성의 접근 제한자는 private입니다.각 속성(attribute, property)은 각각의 setter/getter를 가집니다.setter/getter 이름의 첫 글자는 반드시 소문자입니다.인자 없는 생성자를 반드시 가지며 다른 생성자도 추가할 수 있습니다.그럼 자바 빈을 이용해 회원 테이브의 회원 정보를 조회한 후 출력해 보겠습니..

이미지 배열하기

콜라주는 여러 개의 이미지를 하나의 이미지로 조화롭게 배치하는 기법입니다. 아름다운 콜라주를 만들기 위해서는 이미지의 크기, 위치 등을 세심하게 고려해야 합니다. 하나의 큰 배경 이미지를 생성하고, 그 위에 개뱔 이미지를 불러와 알맞은 위치에 삽입하면 됩니다.완성된 이미지 콜라주에 텍스트 메시지를 추가하는 방법도 다릅니다 이미지 가로 배치이제부터 6개의 이미지를 가로로 나란히 배치해 보겠습니다. 먼저, 개발 이미지의 개수와 크기를 고려하여 배경 이미지를 만듭니다. 이어서 삽입될 모든 이미지의 크기를 가로세로 500px로 조정한 후, 이를 배경 이미지 위에 붙이면 됩니다.비주얼 스튜디오 코드에서 새로운 파일을 생성하고 파일명을 'step_3_1.py'로 변경하세요. 다음 코드를 입력한 뒤, 대화형 창에서 ..

다른 서비스에서 호출하기

API 제품 서버를 만들었으니 API를 사용하는 서비스로 만들어봅시다. 이 서비스는 다른 서버에게 요청을 보내므로 클라이언트 역할을 합니다. API 제공자가 아닌 API 사용자의 입장에서 진행하는 것이며, 바로 NodeBird 앱의 데이터를 가져오고 싶어 하는 사용자입니다. 보통 그 데이터를 가공해 2차적인 서비스를 하려는 회사가 API를 이용하곤 합니다. 예를 들어 쇼핑몰들이 있으면, 쇼핑몰들의 최저가를 알려주는 서비스가 2차 서비스가 됩니다. 우리의 2차 서비스 이름은 NodeCat입니다.nodebird-api 폴더와 같은 위치에 nodecat-api 폴더와 같은 위치에 nodcat이라는 새로운 폴더를 만듭니다. 별도의 서버이므로 nodebird-api와 코드가 섞이지 않게 주의합니다.{ "name..