목록

'홈' 733건

  • 이미지 배열하기
    프로그래밍 언어/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..
  • 포워드 액션 태그 사용하기
    프로그래밍 언어/자바 웹 · 댓글
    서블릿에서 다른 서블릿으로 포워딩하는 방법에 RequestDispatcher를 이용하는 방법이 있습니다. 하지만, 포워드 액션 태그를 사용하면 자바 코드 없이도 포워딩할 수 있습니다. 또한 포워딩 시 다른 서블릿이나 JSP로 값을 전달할 수도 있습니다.포워드 액션 태그의 형식은 다음과 같습니다. .. 그럼 포워드 액션 태그를 다음 예제를 통해 실습해 보겠습니다. 1. 다음과 같이 실습 파일 login.jsp, result.jsp를 생성합니다. 2. 로그인창에서 ID와 비밀번호를 입력한 후 action의 result.jsp로 전달하도록 login.jsp를 작성합니다. 아이디를 입력하지 않았습니다. 아이디를 입력해 주세요. 아이디: 비밀번호: 3. ID를 입력하지 않은 경우 자바의..
  • 이미지 합성하기
    프로그래밍 언어/Python · 댓글
    서로 다른 이미지를 적절히 합성하면 색다른 분위기의 이미지를 만들 수 있습니다. 여기서는 이미지의 불투명도(opacity)를 조절하여 다른 이미지와 합성하는 방법을 알아봅니다. 구체적으로는, 원본 이미지에 불투명한 검정색 이미지를 합성해서 명도를 어둡게 만들어 보겠습니다. 이미지 생성비주얼 스튜디오 코드에서 새로운 파일을 생성한 뒤, 파일명을 'step_2_2.py'로 변경합니다. 다음 코드를 입력하고, 대화형 창에서 실행하면 불투명도 60% 수준의 검정색 이미지가 화면에 출력됩니다.from PIL import ImageSIZE = (500, 500) # 03img_black = Image.new(mode="RGBA", size=SIZE, color=(0, 0, 0, 153)) # 04img_black[..
  • JWT 토큰으로 인증하기
    프로그래밍 언어/NODE JS · 댓글
    웹 서버에 JWT 토큰 인증 과정을 구현해 보겠습니다. 먼저 JWT 모듈을 설치합니다.$ npm i jsonwebtoken 이제 JWT를 사용해서 API를 만들어보겠습니다. 다른 사용자가 API를 쓰려면 JWT 토큰을 발급받고 인증받아야 합니다. 이는 대부분의 라우터에 공통적으로 해당하는 부분이므로 미들웨어로 만들어두는 게 좋습니다. nodebird-api/.envCOOKIE_SECRET=nodebirdsecretKAKAO_ID=03216323ce22d651877427baebd91267JWT_SECRET=jwtSecret nodebird-api/routes/middlewares.jsconst jwt = require("jsonwebtoken");exports.isLoggedIn = (req, res, n..
  • JSP 페이지에 이미지 포함 실습
    프로그래밍 언어/자바 웹 · 댓글
    1. 새 프로젝트 pro13을 만들고 다음과 같이 실습에 필요한 이미지 파일(duke.png, duke2.png)과 duke_image.jsp, include1.jsp, include2.jsp 파일을 추가합니다. 인클루드 액션 태그의 실행 파일은 다음과 같습니디.1 브라우저 요청 시 JSP 파일을 컴파일합니다.2 컴파일 시 가 지시하는 JSP를 요청합니다.3 요청된 JSP를 컴파일합니다.4 컴파일된 JSP가 응답을 보냅니다.5 JSP는 브라우저에서 요청한 응답 결과를 출력합니다. 2 자식 JSP에 해당하는 duke_image.jsp를 다음과 같이 작성합니다. 부모 JSP에서 포함 요청 시 전달되는 이름과 이미지 파일을 getParameter() 메서드를 이용해 가져온 후 이름과 해당 이미지를 출력합니다...
  • 이미지 크기 변경하기
    프로그래밍 언어/Python · 댓글
    이미지 위에 삽입된 문자열의 색이 이미지의 배경과 유사해서 가독성이 떨어진다면, 이미지의 명도를 조절해서 문자열의 색과 대비되게 할 수 있습니다. 이처럼 이미지의 명도를 높이거나 낮출 때는 알파 합성(alpha composite)이라는 기법을 활용하면 되는데, 쉽게 말하면 원본 이미지 위에 불투명한 색을 덧씌워 탁하게 만드는 것입니다. 이미지 정보 확인'img' 폴더의 'img_001.jpg' 파일의 이미지 크기와 형식, 색상 모드를 확인합니다. Image 객체의 속성을 화면에 출력하기만 하면 됩니다.비주얼 스튜디오 코드에서 새로운 파일을 생성하고 파일명을 'step2_1.py'로 변경합니다. 그리고 나서 다음과 같이 입력한 뒤, 대화형 창에서 실행합니다. 대화형 창에서 픽셀 단위로 표시된 이미지 크기..
  • JWT 토큰으로 인증하기 (1)
    프로그래밍 언어/NODE JS · 댓글
    JWT는 JSON Web Token의 약어로, JSON 형식의 데이터를 저장하는 토큰입니다. JWT는 다음과 같이 세 부분으로 구성되어 있습니다.헤더(HEADER): 토큰 종류와 해시 알고리즘 정보가 들어 있습니다.페이로드(PAYLOAD): 토큰의 내용물이 인코딩된 부분입니다.시그니처(SIGNATURE): 일련의 문자열이며, 시그니처를 통해 토큰이 변조되었는지 여부를 확인할 수 있습니다.시그니처는 JWT 비밀 키로 만들어집니다. 이 비밀 키가 노출되면 JWT 토큰을 위조할 수 있으므로 비밀 키를 철저히 숨겨야 합니다. 시그니처 자체는 숨기지 않아도 됩니다. JWT 토큰 예시eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6I..
  • 인클루드 액션 태그 사용하기
    프로그래밍 언어/자바 웹 · 댓글
    인클루드 액션 태그(Include Action Tag)는 인클루드 디렉티브 태그처럼 화면을 분할해서 관리할 때 사용합니다.인클루드 액션 태그를 이용하면 공통적으로 사용하는 홈페이지의 상당 화면과 왼쪽 메뉴 화면을 재사용할 수 있습니다. 인클루드 액션 태그의 형식은 다음과 같습니다. ... 여기서 page는 포함한 JSP 페이지를 의미합니다. 그리고 flush는 지정한 JSP를 실행하기 전 출력 버퍼 비움 여부를 지정합니다. 그러 인클루드 액션 태그와 인클루드 디렉티브 태그의 차이점은 무엇일까요? 인클루드 액션 태그와 인클루드 디렉티브 태그 비교항목인클루드 액션 태그인클루드 디렉티브 태그기능JSP 레이아웃 모듈화JSP 레이아웃 모듈화처리 시간요청 시간에 처리JSP를 자바 코드로 변환 시 처리데이터 처리 방..
  • 이미지 처리 기본 익히기
    프로그래밍 언어/Python · 댓글
    pillow 패키지를 사용해서 이미지를 불러와 대화형 창에서 출력합니다. 비주얼 스튜디오 코드에서 새로운 파일을 만들고 파일명을 'step_1_2.py'로 변경하세요. 'img' 폴더의 'img_001.jpg' 이미지 파일이 대화형 창에 보이는 것을 알 수 있습니다. ch_03/step_1_2.pyfrom PIL import Imagefrom step_1_1 import IMG_DIR # 이전에 작성한 모듈을 불러옵니다.img = Image.open(IMG_DIR / "img__001.jpg")img 실행결과 이미지에 문자열 추가불러온 이미지에 문자열을 추가하기 위해서는 생각보다 많은 것을 고려해야 합니다. 어떤 문자열을 추가할지를 비롯해서 문자열의 위치를 좌표로 설정하고, 크기와 폰트 등을 지정해야 합..
  • Nodebird 서비스와 데이터베이스를 공유하는 프로젝트 구조 갖추기(2)
    프로그래밍 언어/NODE JS · 댓글
    이제 새로 생성한 도메인 모델을 시퀄라이즈와 연결합니다. 사용자 모델과 일대다 관계를 가지는데, 사용자 한 명이 여러 도메인을 소유할 수고 있기 때문입니다.models/index.jsconst Sequelize = require("sequelize");const env = process.env.NODE_ENV || "development";const config = require("../config/config")[env];const User = require("./user");const Post = require("./post");const Hashtag = require("./hashtag");const Domain = require("./domain");const db = {};const seque..
  • 스크립트 요소 이용해 회원 정보 조회하기
    프로그래밍 언어/자바 웹 · 댓글
    1. sec02.ex01 패키지를 생성한 후 MemberVO, MemberDAO 클래스를 복사해 붙여 넣습니다. 그리고 test03 폴더에 member.jsp, search.jsp 파일을 추가합니다. 2. MemberVO 클래스를 다음과 같이 작성합니다.package sec02.ex01;import java.sql.Date;public class MemberVO { private String id; private String pwd; private String name; private String email; private Date joinDate; public MemberVO() { System.out.println("MemberVO 생성자 호출"); } public String getId() { ..

이미지 배열하기

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

다른 서비스에서 호출하기

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

포워드 액션 태그 사용하기

서블릿에서 다른 서블릿으로 포워딩하는 방법에 RequestDispatcher를 이용하는 방법이 있습니다. 하지만, 포워드 액션 태그를 사용하면 자바 코드 없이도 포워딩할 수 있습니다. 또한 포워딩 시 다른 서블릿이나 JSP로 값을 전달할 수도 있습니다.포워드 액션 태그의 형식은 다음과 같습니다. .. 그럼 포워드 액션 태그를 다음 예제를 통해 실습해 보겠습니다. 1. 다음과 같이 실습 파일 login.jsp, result.jsp를 생성합니다. 2. 로그인창에서 ID와 비밀번호를 입력한 후 action의 result.jsp로 전달하도록 login.jsp를 작성합니다. 아이디를 입력하지 않았습니다. 아이디를 입력해 주세요. 아이디: 비밀번호: 3. ID를 입력하지 않은 경우 자바의..

이미지 합성하기

서로 다른 이미지를 적절히 합성하면 색다른 분위기의 이미지를 만들 수 있습니다. 여기서는 이미지의 불투명도(opacity)를 조절하여 다른 이미지와 합성하는 방법을 알아봅니다. 구체적으로는, 원본 이미지에 불투명한 검정색 이미지를 합성해서 명도를 어둡게 만들어 보겠습니다. 이미지 생성비주얼 스튜디오 코드에서 새로운 파일을 생성한 뒤, 파일명을 'step_2_2.py'로 변경합니다. 다음 코드를 입력하고, 대화형 창에서 실행하면 불투명도 60% 수준의 검정색 이미지가 화면에 출력됩니다.from PIL import ImageSIZE = (500, 500) # 03img_black = Image.new(mode="RGBA", size=SIZE, color=(0, 0, 0, 153)) # 04img_black[..

JWT 토큰으로 인증하기

웹 서버에 JWT 토큰 인증 과정을 구현해 보겠습니다. 먼저 JWT 모듈을 설치합니다.$ npm i jsonwebtoken 이제 JWT를 사용해서 API를 만들어보겠습니다. 다른 사용자가 API를 쓰려면 JWT 토큰을 발급받고 인증받아야 합니다. 이는 대부분의 라우터에 공통적으로 해당하는 부분이므로 미들웨어로 만들어두는 게 좋습니다. nodebird-api/.envCOOKIE_SECRET=nodebirdsecretKAKAO_ID=03216323ce22d651877427baebd91267JWT_SECRET=jwtSecret nodebird-api/routes/middlewares.jsconst jwt = require("jsonwebtoken");exports.isLoggedIn = (req, res, n..

JSP 페이지에 이미지 포함 실습

1. 새 프로젝트 pro13을 만들고 다음과 같이 실습에 필요한 이미지 파일(duke.png, duke2.png)과 duke_image.jsp, include1.jsp, include2.jsp 파일을 추가합니다. 인클루드 액션 태그의 실행 파일은 다음과 같습니디.1 브라우저 요청 시 JSP 파일을 컴파일합니다.2 컴파일 시 가 지시하는 JSP를 요청합니다.3 요청된 JSP를 컴파일합니다.4 컴파일된 JSP가 응답을 보냅니다.5 JSP는 브라우저에서 요청한 응답 결과를 출력합니다. 2 자식 JSP에 해당하는 duke_image.jsp를 다음과 같이 작성합니다. 부모 JSP에서 포함 요청 시 전달되는 이름과 이미지 파일을 getParameter() 메서드를 이용해 가져온 후 이름과 해당 이미지를 출력합니다...

이미지 크기 변경하기

이미지 위에 삽입된 문자열의 색이 이미지의 배경과 유사해서 가독성이 떨어진다면, 이미지의 명도를 조절해서 문자열의 색과 대비되게 할 수 있습니다. 이처럼 이미지의 명도를 높이거나 낮출 때는 알파 합성(alpha composite)이라는 기법을 활용하면 되는데, 쉽게 말하면 원본 이미지 위에 불투명한 색을 덧씌워 탁하게 만드는 것입니다. 이미지 정보 확인'img' 폴더의 'img_001.jpg' 파일의 이미지 크기와 형식, 색상 모드를 확인합니다. Image 객체의 속성을 화면에 출력하기만 하면 됩니다.비주얼 스튜디오 코드에서 새로운 파일을 생성하고 파일명을 'step2_1.py'로 변경합니다. 그리고 나서 다음과 같이 입력한 뒤, 대화형 창에서 실행합니다. 대화형 창에서 픽셀 단위로 표시된 이미지 크기..

JWT 토큰으로 인증하기 (1)

JWT는 JSON Web Token의 약어로, JSON 형식의 데이터를 저장하는 토큰입니다. JWT는 다음과 같이 세 부분으로 구성되어 있습니다.헤더(HEADER): 토큰 종류와 해시 알고리즘 정보가 들어 있습니다.페이로드(PAYLOAD): 토큰의 내용물이 인코딩된 부분입니다.시그니처(SIGNATURE): 일련의 문자열이며, 시그니처를 통해 토큰이 변조되었는지 여부를 확인할 수 있습니다.시그니처는 JWT 비밀 키로 만들어집니다. 이 비밀 키가 노출되면 JWT 토큰을 위조할 수 있으므로 비밀 키를 철저히 숨겨야 합니다. 시그니처 자체는 숨기지 않아도 됩니다. JWT 토큰 예시eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6I..

인클루드 액션 태그 사용하기

인클루드 액션 태그(Include Action Tag)는 인클루드 디렉티브 태그처럼 화면을 분할해서 관리할 때 사용합니다.인클루드 액션 태그를 이용하면 공통적으로 사용하는 홈페이지의 상당 화면과 왼쪽 메뉴 화면을 재사용할 수 있습니다. 인클루드 액션 태그의 형식은 다음과 같습니다. ... 여기서 page는 포함한 JSP 페이지를 의미합니다. 그리고 flush는 지정한 JSP를 실행하기 전 출력 버퍼 비움 여부를 지정합니다. 그러 인클루드 액션 태그와 인클루드 디렉티브 태그의 차이점은 무엇일까요? 인클루드 액션 태그와 인클루드 디렉티브 태그 비교항목인클루드 액션 태그인클루드 디렉티브 태그기능JSP 레이아웃 모듈화JSP 레이아웃 모듈화처리 시간요청 시간에 처리JSP를 자바 코드로 변환 시 처리데이터 처리 방..

이미지 처리 기본 익히기

pillow 패키지를 사용해서 이미지를 불러와 대화형 창에서 출력합니다. 비주얼 스튜디오 코드에서 새로운 파일을 만들고 파일명을 'step_1_2.py'로 변경하세요. 'img' 폴더의 'img_001.jpg' 이미지 파일이 대화형 창에 보이는 것을 알 수 있습니다. ch_03/step_1_2.pyfrom PIL import Imagefrom step_1_1 import IMG_DIR # 이전에 작성한 모듈을 불러옵니다.img = Image.open(IMG_DIR / "img__001.jpg")img 실행결과 이미지에 문자열 추가불러온 이미지에 문자열을 추가하기 위해서는 생각보다 많은 것을 고려해야 합니다. 어떤 문자열을 추가할지를 비롯해서 문자열의 위치를 좌표로 설정하고, 크기와 폰트 등을 지정해야 합..

Nodebird 서비스와 데이터베이스를 공유하는 프로젝트 구조 갖추기(2)

이제 새로 생성한 도메인 모델을 시퀄라이즈와 연결합니다. 사용자 모델과 일대다 관계를 가지는데, 사용자 한 명이 여러 도메인을 소유할 수고 있기 때문입니다.models/index.jsconst Sequelize = require("sequelize");const env = process.env.NODE_ENV || "development";const config = require("../config/config")[env];const User = require("./user");const Post = require("./post");const Hashtag = require("./hashtag");const Domain = require("./domain");const db = {};const seque..

스크립트 요소 이용해 회원 정보 조회하기

1. sec02.ex01 패키지를 생성한 후 MemberVO, MemberDAO 클래스를 복사해 붙여 넣습니다. 그리고 test03 폴더에 member.jsp, search.jsp 파일을 추가합니다. 2. MemberVO 클래스를 다음과 같이 작성합니다.package sec02.ex01;import java.sql.Date;public class MemberVO { private String id; private String pwd; private String name; private String email; private Date joinDate; public MemberVO() { System.out.println("MemberVO 생성자 호출"); } public String getId() { ..