본문 바로가기

전체 글532

스프링 기초 DI 예제 3 스프링 기초 DI 예제 3 [의존성 주입 종류] setter(설정 메소드)를 이용한 주입 : 설정 메소드를 사용해서 의존성을 주입하는 것 Constructor(생성자)를 통한 주입 : 생성자를 사용해서 의존성을 주입하는 것 [의존성 주입(DI)의 장점] DI를 사용하면 개발 계획시에 시간이 요구가 되지만, 규모가 큰 프로젝트에서 유지보수 업무를 한다면 DI 개발의 장점을 느낄 수 있다. [의존 관계 설정 방법] - XML파일을 이용한 설정방법 - JAVA를 이용한 설정방법(어노테이션을 이용한다. @Configuration, @Bean) : 어노테이션(Annotation:Metadata)-JDK5부터 등장한 개념 ex)@Override 선언시에는 @를 사용하여 선언한다. 어노테이션은 . 컴파일러에게 정보를.. 2018. 7. 17.
sql 인젝션 2 sql 인젝션 1.입력데이터 검증 기법2.sql 인젝션3.명령어 인젝션 취약점원인 입력데이터 검증 방식 입력데이터 처리를 위한 규칙 설계자나 개발자는 외부에서 입력되는 값을 철저히 통제해야됨 입력값 검증은 애플리케이션에서 먼저 체크되어야 함 서버 애플리케이션에도 체크되어야 함 view 컴포넌트, controller 컴포넌트에 동시에 체크 해야 함 #sql 인젝션 취약점 개요 웹 애플리케이션에서 값을 입력받을 때 동적 쿼리 생성, 데이터 베이스에 쿼리를 전달하여 실행하는 경우 발생 검증되지 않은 외부 입력값으로 인해 정상적인 쿼리가 변조되어 데이터 베이스에 불법적으로데이터 열람, 수정, 삭제 됨 저장된 프로시저를 사용하여 시스템 명령 수행 비정상적으로 데이터베이스에 접근하거나 제어하는 공격 기법 모든 종류.. 2018. 7. 17.
보안이슈 및 개발보안의 필요성1 보안이슈 및 개발보안의 필요성1 취약한 애플리케이션 원인 70% - 80% 분석 => 설계 => 개발 => 테스트 => 배포 => 운영 sql 인젝션 취약점 xss 취약점(크로스 사이트 스크립팅) - 이메일 본문에 스크립트 명령어를 삽입하여본문을 열람하기만 하여도 악성 코드에 감염 될 수 있다. 시큐어 코딩 적용하면 94% 정도 해킹 감소 웹 애플리케이션 보안의 필요성 침해사고 사례를 통해 시큐어 코딩의 필요성 설명 소프트웨어 보안 약점과 취약점 정보 활용가능 행정자치부의 소프트웨어 개발보안 가이드를 활용가능 소프트웨어 개발보안 방법론을 설명 할 수 있음 보안 솔류션 종류 한계 방화벽이나 ids /ips 같은 보안 장비를 구축해서 원격으로 시스템의 취약한 서비스를 이용한 공격은 사실상 어려움 해커들은 웹.. 2018. 7. 17.
스프링 기초 DI 예제2 스프링 기초 DI 예제2 코드의 변경 없이 xml의 설정만으로 개발자가 원하는 객체의 주입으로 바꿀 수 있음. [의존성 주입 종류] setter(설정 메소드)를 이용한 주입 : 설정 메소드를 사용해서 의존성을 주입하는 것 Constructor(생성자)를 통한 주입 : 생성자를 사용해서 의존성을 주입하는 것 [의존성 주입(DI)의 장점] DI를 사용하면 개발 계획시에 시간이 요구가 되지만, 규모가 큰 프로젝트에서 유지보수 업무를 한다면 DI 개발의 장점을 느낄 수 있다. 예제1) 예제2) 2018. 7. 16.
스프링 기초 DI 예제1 스프링 기초 DI 예제1 스프링 프레임워크 특징 1 * 먼저 스프링 프레임워크는 자바언어를 기반으로 한 어플리케이션을 만들때 효율적으로 빠르게 제작할 수 있도록 하는 프로그래밍 툴이다.* 스프링은 자바의 객체를 담고 있는 컨테이너다.* 객체의 생성, 소멸과 같은 생명주기를 관리한다.* DI(의존성 주입패턴)을 지원한다.* AOP, 트랜잭션이나, 로깅, 보안과 같은 엔터프라이즈 어플리케이션에서 공통으로 필요로 하는 기능을 분리해서 각모듈에 적용할 수 있도록 하는 기능을 제공한다.* 스프링은 POJO를 지원한다. 즉 특정 인터페이스나 클래스를 상속받지 않는 순수한 자바 객체를 스프링 컨테이너가 저장하고 있다.* 트랜잭션 처리를 위한 일관된 방식을 제공한다.* 영속성과 관련된 다양한 API를 제공한다.* My.. 2018. 7. 16.
객체지향 예제 객체지향 예제 main.m//// main.m// BookManager//// Created by MacBookPro on 2018. 7. 10..// Copyright © 2018년 MacBookPro. All rights reserved.// #import #import "Book.h"#import "BookManager.h" int main(int argc, const char * argv[]) { @autoreleasepool { Book *book1 = [[Book alloc]init]; book1.name = @"햄릿"; book1.genre = @"비극"; book1.author = @"세익스피어"; //[book1 bookPrint]; Book *book2 = [[Book alloc]ini.. 2018. 7. 10.
array dictionary array dictionary // // main.m // NSArrayTest // // Created by MacBookPro on 2018. 7. 10.. // Copyright © 2018년 MacBookPro. All rights reserved. // #import int main(int argc, const char * argv[]) { @autoreleasepool { NSArray *frutie = [[NSArray alloc]initWithObjects:@"apple",@"banana", @"pineapple", @"lemon", nil]; /* for 문 예제 1 for (int i = 0; i< [frutie count]; i++){ NSLog(@"frute : %@", [fruti.. 2018. 7. 10.
NSString 예제 NSString 예제 // // main.m // StringTest // // Created by MacBookPro on 2018. 7. 9.. // Copyright © 2018년 MacBookPro. All rights reserved. // #import int main(int argc, const char * argv[]) { @autoreleasepool { //초기화 //NSString *str = [[NSString alloc]initWithString:@"This is NSString"]; //간소하게 NSString *str = @"This is NSString"; NSLog(@"str : %@",str); //immutable class - 변경 불가 NSString *result;.. 2018. 7. 9.
if문 for문 switch문 if문 for문 switch문 main.m // // main.m // FirstObjectiveC // // Created by MacBookPro on 2018. 7. 9.. // Copyright © 2018년 MacBookPro. All rights reserved. // #import //구현부 상속해줘야함 #import "Vehicle.h" int main(int argc, const char * argv[]) { @autoreleasepool { //4. Vehicle 객체 생성 Vehicle *hello = [Vehicle new]; //create instance object //5. 값 할당 및 출력 //도트로 값 할당 가능 //hello.wheels = 4; //hello.seats .. 2018. 7. 9.
클래스 파일 나누기 - 선언 - 구현 - 할당 클래스 파일 나누기 - 선언 - 구현 - 할당 선언부 Vehicle.h//// Vehicle.h// FirstObjectiveC//// Created by MacBookPro on 2018. 7. 9..// Copyright © 2018년 MacBookPro. All rights reserved.//// 선언부#import //객체 설정 @interface Vehicle : NSObject{ //1.member variable - 맴버 변수 선언 } //2.member method - 맴버 메서드 선언 //getter setter 대신에 property 작성 @property (getter=getWheels, setter=wheels:)int wheels; @property int seats; //인자 .. 2018. 7. 9.
property 옵션을 이용한 getter setter // // main.m // FirstObjectiveC // // Created by MacBookPro on 2018. 7. 9.. // Copyright © 2018년 MacBookPro. All rights reserved. // #import // - 인스턴스 메서드, + 클래스 메서드 (동적 할당 x) //객체 설정 @interface Vehicle : NSObject{ //1.member variable - 맴버 변수 선언 // int wheels; // int seats; } //2.member method - 맴버 메서드 선언 //getter setter 대신에 property 작성 @property (getter=getWheels, setter=wheels:)int wheels; @pr.. 2018. 7. 9.
ObjectiveC seeter getter // // main.m // FirstObjectiveC // // Created by MacBookPro on 2018. 7. 9.. // Copyright © 2018년 MacBookPro. All rights reserved. // #import // - 인스턴스 메서드, + 클래스 메서드 (동적 할당 x) //객체 설정 @interface Vehicle : NSObject{ //1.member variable - 맴버 변수 선언 int wheels; int seats; } //2.member method - 맴버 메서드 선언 -(void)setWheels:(int)w; -(void)setSeats:(int)s; //getter -(int)wheels; -(int)seats; -(void)print.. 2018. 7. 9.
objective-c 객체 사용법 objective-c 객체 사용법 // // main.m // FirstObjectiveC // // Created by MacBookPro on 2018. 7. 9.. // Copyright © 2018년 MacBookPro. All rights reserved. // #import // - 인스턴스 메서드, + 클래스 메서드 (동적 할당 x) //객체 설정 @interface Vehicle : NSObject{ //1.member variable - 맴버 변수 선언 int wheels; int seats; } //2.member method - 맴버 메서드 선언 -(void)setWheels:(int)w; -(void)setSeats:(int)s; -(void)print; @end //3.Vehicl.. 2018. 7. 9.
[node js] 성경 db 연동 [node js] 성경 db 연동mysql 성경 db를 찾아서 데이터를 넣어준 이후 작업. bible.jsvar express = require('express')var app = express()var router = express.Router()var mysql = require('mysql')var fs = require('fs')var ejs = require('ejs') //성경 메인 화면router.get("/bible",function(req,res){ console.log("메인화면 진행") //console.log(searchBibleIndex("여호수아")) fs.readFile('bible.html', 'utf-8', function (error, data) { res.send(ejs.. 2018. 6. 14.
우분투 mysql에 외부에서 접속하기 우분투 mysql에 외부에서 접속하기 가비아에서 클라우드 서버를 쓰고 있는데 ip/phpmyadmin 들어가서 쿼리 작업하기가 많이 불편했다. 이참에 나의 맥북으로 원격으로 접속할 수 있게 설정을 해보았다. 사진위주로 정리해보았다. 1.나의 맥북 터미널로 ssh 서버 원격 접속!2. etc/mysql/ 위치로 가서 vi my.cnf 열기~!3.bind-address 부분 주석처리 #bind-address ! 이렇게!4.sudo service mysql restart - 재시작! 5. mysql -uroot -p 접속6.select user, host from mysql.user (유저와 호스트 확인)7. % 이렇게 퍼센트로 기입된 host가 모든 host 허용이라는 뜻(나는 이미해놨음)8.사진에 crea.. 2018. 6. 13.
[node js] mysql 연동해서 파일 전송 [node js] 파일전송 네비게이션 file.jsvar express = require('express')var app = express()var router = express.Router()var mysql = require('mysql')var fs = require('fs')var ejs = require('ejs') //파일관련 모듈var multer = require('multer') //파일 저장위치와 파일이름 설정var storage = multer.diskStorage({ destination: function (req, file, cb) { //파일이 이미지 파일이면 if (file.mimetype == "image/jpeg" || file.mimetype == "image/jpg" |.. 2018. 6. 13.
swift http 통신 get방식 post 방식 - 일단 기록 // // ShowBibleVC.swift // JooBo // // Created by MacBookPro on 2018. 6. 12.. // Copyright © 2018년 MacBookPro. All rights reserved. // import UIKit class ShowBibleVC: UIViewController { // let commentTextView: UITextView = { let textView = UITextView() textView.backgroundColor = UIColor(red:0.92, green:0.92, blue:0.92, alpha:1.0) textView.translatesAutoresizingMaskIntoConstraints = false textVie.. 2018. 6. 13.
[node js] mysql 게시판 구현 3년전인가 처음 게시판을 만들어보고 거의 처음인것 같다. 언제쯤이면 머릿속에 생각했던 내용들을 거침없이 만들 수 있는 날이 올까나. 암튼 게시판은 스스로 안보고 짤 수 있을 때까지 연습해보면 실력향상에 도움이 많이 되는 미니프로젝트긴하다. 나중에 게시판에 좀더 기능을 넣을 수도 있다. 예를 들면 db설계를 좀 해서 댓글 기능, 좋아요 기능, 조회기능 등을 넣어서 게시판을 확장 시킬 수 있다. 이번 포스팅에서는 아주 아주 심플한 게시판을 만들어서 페이징 기능의 핵심만 정리해본다.네비게이션아래는 파일 네비게이션이다. 우리가 사용할 파일들은 빨간점으로 표시해놓았다. node js 기본셋팅(app.js)app.js를 아래와 같이 작성한다. 게시판이랑 상관없는 로직도 있지만 지우지 않았다... var produc.. 2018. 6. 12.
스위프트로 배우는 블록체인 - 탈중앙화 구현 스위프트로 배우는 블록체인 - 탈중앙화 구현 노드모듈생성지금까지는 하나의 네트워크에서 블록체인이 어떻게 작동하는지 알아보았습니다. 지금부터는 여러개의 노드를 만들어서 탈중앙화 개념을 구현해 보도록 하겠습니다. model.swift에 새로운 노드를 생성할 클래스를 아래와 같이 작성해 줍니다.//새로운 노드 생성 클래스class BlockchainNode : Codable { var address : String init(address : String) { self.address = address }} 아래에 이이서 class Blockchain 부분에 아래에 위에서 만든 노드 데이터를 컨트롤할 변수와 추가할 함수를 만들어 준다.//체인 구조체class Blockchain : Codable { //블록이 배.. 2018. 6. 2.
스위프트로 배우는 블록체인 - 채굴구현 스위프트로 배우는 블록체인 - 채굴구현 먼저 이전전 포스팅에서 다루었던 BlockChainSwift.playground를 vapor프로젝트에 App -> Model 안에 model.swift 라는 이름으로 새로 파일을 만들어서 복붙해준다. //// models.swift// App//// Created by MacBookPro on 2018. 5. 30..//import Vaporimport Foundationimport Cocoa //거래가 발생할때 거래 타입 선택 가능enum TransactionType : String, Codable{ case domestic case international} // 스마트 컨트랙드 프로토콜 함수 - 지원,신청하는 계약임protocol SmartContract{ f.. 2018. 6. 2.
스위프트로 배우는 블록체인 - vapor프레임워크로 서버 만들기 스위프트로 배우는 블록체인 - vapor프레임워크로 서버 만들기개요 이번 포스팅에서는 vapor 프레임워크를 이용해서 나의 mac 에서 웹서버를 구축해보도록 하겠습니다. vapor란 웹서버를 구현하는데 도움을 주는 모듈이라고 생각하시면 될것 같습니다. 그럼 먼저 vapor 홈으로 가서 설치를 해보도록 하겠습니다. 설치환경도 있기때문에 자신의 xcode 버전과 swift 버젼을 잘확인하신후 설치를 하시기 바랍니다. https://vapor.codes/ 설치순서1.터미널 열기2. brew install vapor/tap/vapor 입력3.작업 폴더 생성 vapor new Hello4.작업 폴더로 이동 cd Hello5.vapor프로젝트 실행 vapor xcode6. 예시화면(BlockChain-Server .. 2018. 6. 1.
스위프트로 배우는 블록체인 -스마트 컨트랙트 스위프트로 배우는 블록체인 -스마트 컨트랙트 스마트컨트랙트 구현물건을 산다거나 보험에 가입한다거나 할때 발생하는 거래데이터를 거래타입에 따라 결과값이 달라지는 스마트 컨트렉트 기능을 구현해보는시간을 가지겠습니다. 쉽게말해서 가입비가 일반회원이면 10만원이고, vip회원이면 20만원이 되는 스마트컨트랙트 거래기능을 구현해보겠습니다. 먼저 거래 타입 enum을 만들어 준다. 나중에 transaction을 발생시킬때 domestic인지 international인지 아래에서 선택할 수 있습니다.//거래 타입enum TransactionType : String, Codable{ case domestic case international} 거래 데이터 클래스를 수정해준다. fee, transactionType부분이.. 2018. 6. 1.
스위프트로 배우는 블록체인 -데이터구조 스위프트로 배우는 블록체인 - 데이터구조 순서xcode9열기 -> get Started with a playground -> 위쪽 탭에 mac os 선택 -> blank 선택 개요이번 포스팅에서는 블록체인 기술의 뼈대가 되는 데이터 구조를 만들어 보겠습니다. 먼저 거래를 담당하는 transaction 구조체, 거래내역과 해쉬, 이전해쉬값, nonce 값을 담는 block 구조체를 만들고 그 블록을 담을 blockchain 구조체를 만들어 보겠습니다. 위에서 오픈한 mac os playground를 열고 아래 코드를 작성해주세요. transaction 구조체//거래 데이터 구조체class Transaction{ var from: String var to: String var amount: Double //.. 2018. 6. 1.
자바스크립트로 블록체인 구현 강좌 11 - 나만의 비트코인 발행하기 자바스크립트로 블록체인 구현 강좌 11 - 나만의 비트코인 발행하기지난 포스팅에서 하나의 네트워크에서 블록체인이 어떻게 작동이 되는지 살펴보았다. 이번포스팅에서는 여러개의 노드, 즉 컴퓨터들이 참여를 할때 블록체인 데이터가 어떻게 기록되는지 살펴보겠다.순서1. api.js 파일 이름을 networkNode.js 로 변경하자. 2. networkNode.js 파일 윗 부분에 동적 포트관련 변수 선언해준다.//동적 포트 package.json script 객체에서 2번째 방에 들어있는 데이터 3001,3002,3003 ...3005var port = process.argv[2];3. app.listen 을 아래와 같이 바꿔 준다.//동적 포트app.listen(port,function(){ console.l.. 2018. 5. 31.
자바스크립트로 블록체인 구현 강좌 10 - 나만의 비트코인 발행하기(소스코드) 자바스크립트로 블록체인 구현 강좌 10 - 나만의 비트코인 발행하기(소스코드)이번 포스팅에서는 블록을 채굴할때, 즉 컴퓨팅 파워로 마이닝 할때 실행되는 app.get(/mine) 함수 부분을 작성해보도록 한다. 순서1.먼저 마지막 블록을 가져온다.2.마지막 블럭의 타입은 객체 이기 때문에 key:value 형태다. 'hash' 키 값으로 해당 value(이전블럭해쉬)를 가져온다.3.현재 블럭데이터는 이전의 발생한 거래내역을 저장해야 하기 때문에 bitcoin객체의 pendingTransaction 배열에 담긴 값을 가져와서 넣어주고, index는 마지막 블럭 index + 1을 해준다.4. 이제 nonce, blockHash를 구할 수 있는 값들을 다 구했다. 5. 그리고 위의 값들을 이용해서 creat.. 2018. 5. 30.
자바스크립트로 블록체인 구현 강좌 9 - 나만의 비트코인 발행하기 자바스크립트로 블록체인 구현 강좌 9 - 나만의 비트코인 발행하기 이번시간에는 api.js에 app.get() , app.post() 부분을 작성해주고, 개발에 조금 더 도움을 줄 node api를 설치 해보도록 하겠다. node js 에서 get, post이 부분이 이해가 안간다면...구글링을 부탁드린다..여기서는 조금이라도 알고 있다고 가정하고 쭉쭉 설명하겠다. 먼저 api.js 소스 코드다var express = require('express')var app = express() // 웹브라우저에 get 방식으로 /blockchain 주소를 입력했을 때 실행app.get('/blockchain', function (req, res) { res.send('blockchain Start')}) // 웹.. 2018. 5. 30.
자바스크립트로 블록체인 구현 강좌 8 - 나만의 비트코인 발행하기 자바스크립트로 블록체인 구현 강좌 8 - 나만의 비트코인 발행하기이번 포스팅 부터는 앞에서 만든 blockchain을 서버에서 구현해보도록 하겠다. 우리는 서버 구축을 간단하게 도와줄 express api를 사용할것이다. 일단 구글로 가서 express npm을 검색하자. 아래 주소로 들어가도 된다. https://www.npmjs.com/package/express콘솔을 열어서 위에 install명령어를 자신의 개발 폴더 위치에서 입력해준다. 이제 express api를 설치 완료 했다. 개발환경으로 가서 api.js 파일을 생성해주고 아래 소스 코드를 입력해주자 아래 소스코드는 express npm 문서에 있다. 간단하게 설명하면 app.get은 웹브라우저에 / 의 값이 들어오면 함수 아래를 실행하겠.. 2018. 5. 29.
자바스크립트로 블록체인 구현 강좌7 - 나만의 비트코인 발행하기(소스코드 포함) 자바스크립트로 블록체인 구현 강좌7 - 나만의 비트코인 발행하기 이번 포스팅에서는 블록체인 기술에서 핵심이라고 할 수 있는 작업증명 POW 개념을 알아보고 코드로 구현해 보자. 간단한 용어정리를 하고 넘어가자. #용어정리해쉬: 해쉬는 의미없는 데이터다. 컴퓨터에서 블럭의 길이를 맞추기 위해서 메모리에 작성된 의미없는 데이터다.예)0000asdkflqwjkeljakldjflaj;블럭: 해쉬를 가지고 있는 사람이 코인을 획득할 수 있는 블록을 의미난이도: 블럭이 생성되는 시간을 일정하게 조정하기 위해 사용되는 개념(전체 해쉬의 양 증가 -> 난이도 증가-> 블럭찾는데 더 많은 해쉬 필요 _> 블럭 생성시간 유지됨)51% 공격: 전체 해쉬의 51% 이상 가진 집단이 존재할때 전체 코인의 이동정보, 즉 블록체인.. 2018. 5. 29.
자바스크립트로 블록체인 구현 강좌6 - 나만의 비트코인 발행하기 자바스크립트로 블록체인 구현 강좌6 - 나만의 비트코인 발행하기저번 시간에 포스팅한 sha256 암호화 값 리턴 함수가 어떻게 사용되는지 보겠다. 일단 test.js 부분을 다 지운다. 그리고 아래 코드를 넣어준다. bitcoin 객체의 hashBlock 함수는 3개의 인자값을 받는다. 1. 이전 블락의 hash 2.현재 블록의 거래 데이터 3.nonce 값 //blockchain.js 모듈을 이곳에서 가져다 쓰겠다.const Blockchain = require('./blockchain'); //위에서 가져온 모듈의 객체를 만든다.const bitcoin = new Blockchain(); const previousBlockHash = "abcdedferefa"const currentBlockData .. 2018. 5. 28.
자바스크립트로 블록체인 구현 강좌5 - 나만의 비트코인 발행하기 자바스크립트로 블록체인 구현 강좌5 - 나만의 비트코인 발행하기 이번 포스팅에서는 sha256 해시생성기와 npm을 이용해서 sha256 모듈을 설치해서 사용해보도록하겠다.일단.sha256 은 암호화 알고리즘의 하나이다. 음..엄청쉽게 말해서 '어떤 입력값이든 고정된 길이의 임의의 문자열값으로 출력한다' 라고 알고 있으면 쉽다.예를 들면 abc 값을 sha256 알고리즘에 넣고 돌리면BA7816BF8F 01CFEA4141 40DE5DAE22 23B00361A3 96177A9CB4 10FF61F200 15AD이값이 생성이된다. 길이를 보자.abcdef를 넣으면?BEF57EC7F5 3A6D40BEB6 40A780A639 C83BC29AC8 A9816F1FC6 C5C6DCD93C 4721같은 길이의 임의의값이.. 2018. 5. 28.