프레임워크2017. 6. 20. 20:36

1. 안드로이드 SDK 설치

기본 -> 24.0.3 / 23.0.3 / 22.0.1 / 

API25 / API24 / API23 / API22

-> 모두 설치 후 전부 업데이트 한다.


2. GIT 설치


3. NODE JS 설치


4. 코르도바 설치

->  npm install -g cordova


5. 폰갭 설치

-> npm install -g phonegap


6. APACHE ANT 압축 해제


7. 경로 설정

환경변수 -> 위아래 모두 ANDROID_HOME / C:\Users\GIGABYTE\AppData\Local\Android\android-sdk

                -> 위아래 모두 ANT_HOME / D:\Java\apache-ant-1.9.7-bin\apache-ant-1.9.7


위에꺼 밑에꺼 모두 path 수정 %ANT_HOME%\bin 추가




GIT BUSH

1. 작업할 디렉토리로 이동

 -> /d/Java/Cordova


2. 프로젝트 생성

 -> cordova create test_cordova com.myname.test


※ 안드로이드나 IOS 플랫폼을 추가할때 이곳에 추가한다.

-> D:\Java\Cordova\test_cordova\platforms



GIT BUSH

D:\Java\Cordova\test_cordova 위치에서


안드로이드 플랫폼 추가하는 명령어        

cordova platform add android






cordova build android

-> BUILD SUCCESSFUL ( 빌드성공 )


실행하기전 가상모바일이나 스마트폰 개발자모드를 사용해야 한다.

cordova run android

-> 실행





이클립스로 SDK 연동 추가

'프레임워크' 카테고리의 다른 글

폰갭이란?  (0) 2017.03.24
hello world 출력하기  (0) 2017.03.24
기본제공 게시판 만들어보기  (0) 2017.03.24
전자정부프레임워크 설치 방법  (0) 2017.03.24
전자정부프레임워크 기본정보  (0) 2017.03.24
Posted by EL2A
백엔드 언어2017. 6. 20. 20:34

JSP 서버 호스팅 설치


http://www.hongsnet.net/






톰캣을 시작하기 위한 SSH 접속방법


http://www.hongsnet.net/board_main.html?page=1&find=&key=&hongsbbs_id=1100&dc=&hongsbbsmode=read&head_key=&TB_id=5&service_kind=




톰캣 시작 방법


http://www.hongsnet.net/board_main.html?page=1&find=&key=&hongsbbs_id=1100&dc=&hongsbbsmode=read&head_key=&TB_id=11&service_kind=

'백엔드 언어' 카테고리의 다른 글

JSP MyBatis  (0) 2017.06.21
Restful API  (0) 2017.06.21
JSP DB연동 테스트  (0) 2017.06.20
DAO(Data Access Object) 패턴  (0) 2017.06.19
다형성(Polymorphism)  (0) 2017.06.19
Posted by EL2A
백엔드 언어2017. 6. 20. 20:33

1. MYSQL JDBC 다운로드 : http://dev.mysql.com/downloads/connector/j/

밑에서 Platform Independent (Architecture Independent), ZIP Archive 다운로드!


2. 압축풀고 mysql-connector-java-5.1.38-bin 파일을 

C:\Program Files\Apache Software Foundation\Tomcat 8.0\lib 이곳에 넣는다.



3. DB에서 테이블을 간단하게 만든다



CREATE DATABASE TEST;

USE TEST;

CREATE TABLE PERSON
(PID INT(4) PRIMARY KEY,
NAME VARCHAR(10)
);

INSERT INTO PERSON VALUE(0001, 'SEOKHO');
INSERT INTO PERSON VALUE(0002, 'ILWOO');
INSERT INTO PERSON VALUE(0003, 'JAEDO');
INSERT INTO PERSON VALUE(0004, 'JAEOK');
INSERT INTO PERSON VALUE(0005, 'HYEWON');







4. JSP 소스 작성



<%@ page contentType = "text/html; charset=utf-8" %>

<%@ page import = "java.sql.*" %>

<%

String URL = "jdbc:mysql://localhost/test"; // test는 데이터베이스명

String USER = "root"; // 아이디

String PASS= "admin123"; // 비밀번호


Connection conn = null;

Statement stmt = null;

ResultSet rs = null;

 

try

{

  Class.forName("org.gjt.mm.mysql.Driver"); // 없어도 실행됨

  conn = DriverManager.getConnection(URL, USER, PASS); // DB접속 정보를 conn에 입력

  stmt = conn.createStatement(); // DB에 SQL문을 보내기 위해 개체를 만듬

  rs = stmt.executeQuery( "select * from person" ); //DB에 접속하여 쿼리문을 넣고 결과값을 rs에 받음

  while( rs.next() ) // 만약 rs에 결과값이 있다면

  {

    String pid = rs.getString("pid"); // pid에 rs의 "pid" 값을 넣는다.

    String name = rs.getString("name"); // name에 rs의 "name" 값을 넣는다.

    

    out.print( " 일련번호 : " + pid + "<br>" + "이름 : " + name + "<br><br>" );  } // 출력

}

catch(SQLException e) // 예외의 경우

{

  out.print( e.getMessage() );

}


%>






끝. 결과물 실행해서 확인

'백엔드 언어' 카테고리의 다른 글

Restful API  (0) 2017.06.21
홍쓰넷 JSP 무료 호스팅  (0) 2017.06.20
DAO(Data Access Object) 패턴  (0) 2017.06.19
다형성(Polymorphism)  (0) 2017.06.19
자바 웹 개발자의 학습 로드맵  (0) 2017.06.18
Posted by EL2A
알고리즘(CF)2017. 6. 20. 20:27

You are given an array of integers representing coordinates of obstacles situated on a straight line.

Assume that you are jumping from the point with coordinate 0 to the right. You are allowed only to make jumps of the same length represented by some integer.

Find the minimal length of the jump enough to avoid all the obstacles.




Example


For inputArray = [5, 3, 6, 7, 9], the output should be
avoidObstacles(inputArray) = 4.

Check out the image below for better understanding:




Code


function avoidObstacles(inputArray) {


}


'알고리즘(CF)' 카테고리의 다른 글

21. isIPv4Address  (1) 2017.06.19
20. arrayMaximalAdjacentDifference  (1) 2017.06.18
19. areEquallyStrong  (1) 2017.06.18
18. palindromeRearranging  (1) 2017.06.17
17. arrayChange  (1) 2017.06.17
Posted by EL2A
백엔드 언어2017. 6. 19. 22:00

DAO 패턴은 표준 J2EE 디자인 패턴 중 하나로써 다음과 같은 요소들이 있다.

1. 자바빈즈 (DTO) - Department
2. DAO 인터페이스 - DepartmentDao
3. DAO 인터페이스를 구현하는 클래스 - DepartmentDaoImpl
4. 데이터 전송 객체

이 패턴을 사용하면 저 수준의 데이터 엑세스와 고급 비즈니스 로직을 분리할 수 있다.

DAO 패턴 작성 과정
1. 처리할 데이터가 저장되기 위한 데이터베이스 테이블의 구조를 JavaBeans 로 표현한다.
2. 데이터의 입력, 수정, 삭제, 조회 (다중조회) 의 기능을 명시한 Interface를 정의한다.
3. Interface를 상속받는 구현체를 작성하고 메서드들을 오버라이딩 한다.
4. 재정의 된 메서드의 기능을 구현한다.



상세 과정


1. 자바빈즈 만들기
-> 자바빈즈의 필드와 메소드 (getter, setter) 그리고 객체의 값을 표시하기 위한 toString() 메소드를 만든다.

2. 인터페이스 DAO 만들기
-> DAO가 구현해야 하는 기능을 정의한다.
-> Insert, update, delete, select, selectAll 등

3. DAO 인터페이스를 상속받아서 구현체를 만든다.
-> 데이터베이스 접속객체를 만들고 생성자를 통해서 데이터 베이스 접속객체를 전달받는다.
-> DAO에서 정의된 메소드들을 각 기능에 맞게 오버라이딩 한다.
-> 조회기능
--> (한개의 데이터) SELECT 문을 실행하고 결과값을 빈즈객체로 만들어 리턴한다.
--> (다수의 데이터) SELECT 문의 결과값을 반복문을 이용하여 전부 객체로 만든 후 컬렉션 프레임워크의 ArrayList에 담아 리턴한다.

4. DAO를 사용하는 프로그램을 만든다.
-> ex) Department model = new Department(1, '자원관리부', '3층'); // INSERT를 수행할 데이터 생성
-> ex) DepartmentDao dao = new DepartmentImpl(conn); // 다형성을 통하여 동작을 지정한다.
-> ex) int result = dao.insert(model); // 데이터를 저장한다.
-> ex) 데이터 저장 완료.

'백엔드 언어' 카테고리의 다른 글

홍쓰넷 JSP 무료 호스팅  (0) 2017.06.20
JSP DB연동 테스트  (0) 2017.06.20
다형성(Polymorphism)  (0) 2017.06.19
자바 웹 개발자의 학습 로드맵  (0) 2017.06.18
템플릿 언더바 기본 (Template Underscore)  (0) 2017.03.24
Posted by EL2A
백엔드 언어2017. 6. 19. 21:59

다형성이란 하나의 메소드나 클래스가 있을 때 이것들이 다양한 방법으로 동작하는 것을 의미한다. 키보드의 키를 통하여 비유를 든다면 키보드의 키의 동작방법은 '누른다' 이다. 하지만 똑같은 동작 방법의 키라고 하더라도 ESC는 취소를 ENTER는 실행의 목적을 가지고 있다. 다형성이란 동일한 조작방법으로 동작시키지만 동작을 다르게 하는 것이다.




class A{}

class B extends A{}

public class PolymorphismDemo1 {

public static void main(String[] args) {

A obj = new B();

}

}


위의 코드는 A형태의 객체 obj를 만들고 이 객체의 동작은 B로 하는것이다.



class A{

public String x(){return "x";}

}

class B extends A{

public String y(){return "y";}

}

public class PolymorphismDemo1 {

public static void main(String[] args) {

A obj = new B();

obj.x();

obj.y();

}

}


위의 코드에서 obj.x();는 실행이 되지만 obj.y();는 실행이 되지 않는다.

클래스 A에 x()라는 메소드가 없기 때문이다.


즉 클래스 B의 데이터 형을 클래스 A로 하면 클래스 B는 마치 클래스 A인것처럼 동작하게 되는 것이다. 클래스 B를 사용하는 입장에서는 클래스 B를 클래스 A인것처럼 사용하면 된다.


class A{

public String x(){return "A.x";}

}

class B extends A{

public String x(){return "B.x";}

}

public class PolymorphismDemo1 {

public static void main(String[] args) {

A obj = new B();

System.out.println(obj.x());

}

}


위의 코드의 결과는 'B.x' 이다.

A의 동작은 "A.x" 이지만 B클래스에 정의된 메소드 x()가 실행된다.


class A{

public String x(){return "A.x";}

}

class B extends A{

public String x(){return "B.x";}

}

class B2 extends A{

public String x(){return "B2.x";}

}

public class PolymorphismDemo1 {

public static void main(String[] args) {

A obj = new B();

A obj2 = new B2();

System.out.println(obj.x()); // 출력결과 B.x

System.out.println(obj2.x()); // 출력결과 B2.x

}

}


다형성을 통하여 동작방법은 똑같지만 동작을 다르게 설정할 수 있다.

그리고 다른 동작의 클래스는 new B(); 또는 new B2(); 이부분에 있다.

'백엔드 언어' 카테고리의 다른 글

JSP DB연동 테스트  (0) 2017.06.20
DAO(Data Access Object) 패턴  (0) 2017.06.19
자바 웹 개발자의 학습 로드맵  (0) 2017.06.18
템플릿 언더바 기본 (Template Underscore)  (0) 2017.03.24
JSTL 사용법  (0) 2017.03.24
Posted by EL2A
알고리즘(CF)2017. 6. 19. 21:54

An IP address is a numerical label assigned to each device (e.g., computer, printer) participating in a computer network that uses the Internet Protocol for communication. There are two versions of the Internet protocol, and thus two versions of addresses. One of them is the IPv4 address.

IPv4 addresses are represented in dot-decimal notation, which consists of four decimal numbers, each ranging from 0 to 255, separated by dots, e.g., 172.16.254.1.

Given a string, find out if it satisfies the IPv4 address naming rules.




Example


  • For inputString = "172.16.254.1", the output should be
    isIPv4Address(inputString) = true;

  • For inputString = "172.316.254.1", the output should be
    isIPv4Address(inputString) = false.

    316 is not in range [0, 255].

  • For inputString = ".254.255.0", the output should be
    isIPv4Address(inputString) = false.

    There is no first number.





Code


function isIPv4Address(inputString) {

   

}

'알고리즘(CF)' 카테고리의 다른 글

22. avoidObstacles  (1) 2017.06.20
20. arrayMaximalAdjacentDifference  (1) 2017.06.18
19. areEquallyStrong  (1) 2017.06.18
18. palindromeRearranging  (1) 2017.06.17
17. arrayChange  (1) 2017.06.17
Posted by EL2A
프론트엔드 언어2017. 6. 18. 21:17


1. 단순정렬


function simpleSort(arr) {

var t;


for (var i=0; i<arr.length-1; i++) {

for (var j=i+1; j<arr.length; j++) {

if (arr[i] > arr[j]) {

t = arr[i];

arr[i] = arr[j];

arr[j] = t;

} // End of if

} // End of for // j

} // End of for // i


return arr;

}


console.log(simpleSort(new Array(3,1,4,2))); // 출력 1234




2. 버블정렬 


function bubbleSort(arr) {

var t;


for (var i=0; i<arr.length; i++) {

for (var j=0; j<arr.length-1; j++) {

if (arr[j] > arr[j+1]) {

t = arr[j+1];

arr[j+1] = arr[j];

arr[j] = t;

}

} // End of for // j

} // End of for // i


return arr;

}


console.log(bubbleSort(new Array(3,1,4,2))); // 출력 1234




3. 삽입정렬


function insertionSort(arr) {

var t;


for (var i=1; i<arr.length; i++) {

t = arr[i];

for (var j=i-1; j>=0; j--) {

if (arr[j] > t) {

arr[j+1] = arr[j];

} else {

break;

} // End of if

} // End of for // j

arr[j+1] = t;

} // End of for // i


return arr;

}


console.log(insertionSort(new Array(2,6,1,9,5))); // 출력 12569




4. 퀵정렬


function quickSort(arr) {


if (arr.length < 2) {

return arr;

}


var pivot = arr[Math.floor(arr.length/2)];


var middle = arr.filter(function (data) {

return data == pivot;

});


var low = quickSort(arr.filter(function (data) {

return data < pivot;

}));


var high = quickSort(arr.filter(function (data) {

return data > pivot;

}));

return low.concat(middle).concat(high);

}


console.log(quickSort(new Array(4,8,6,5,2,1,3,9,7))); // 출력 123456789





대부분의 경우 퀵정렬이 빠르지만 모든 경우에 고속으로 정렬이 가능한 방법은 없다.

그러므로 각각 정렬의 특징을 이해한 후 가장 적절한 방법을 선택해야 한다.




'프론트엔드 언어' 카테고리의 다른 글

jQuery Mobile ajax refresh Issue  (1) 2017.03.29
함수의 호출  (0) 2017.03.24
arguments  (0) 2017.03.24
클로저  (0) 2017.03.24
값으로서의 함수와 콜백  (0) 2017.03.24
Posted by EL2A
개념정리2017. 6. 18. 20:40

프로그래밍에서 연산속도는 실수보다 정수가 더 빠르다.


그러므로 정수로 해결이 가능한 부분은 가능한 정수를 사용하는 것이 바람직하다.


만약 실수를 사용하여 연산 중 속도에 문제가 생길 경우 '실수를 100배한 정수' 를 만들어 연산한 뒤, 최종적으로 결과는 100을 나누어 표시하면 더욱 빠르다.


하지만 연산할 때 정밀도가 달라질 수 있으므로 조심해야 한다.

'개념정리' 카테고리의 다른 글

상향식접근과 하향식접근  (0) 2017.06.18
방어적 코딩 기법  (0) 2017.03.23
리팩토링  (0) 2017.03.22
호스팅과 클라우드  (0) 2017.03.22
DDNS (Dynamic Domain Name Service)  (0) 2017.03.22
Posted by EL2A
개념정리2017. 6. 18. 20:31


하향식 접근

전체를 먼저 정하고 그 밑에 큰 기능등을 정한 뒤 그것들을 계속해서 세분화하여 프로그램을 구조화 시켜 가는 것.



상향식 접근

하향식 접근과는 반대로 각각의 기능이나 기술을 먼저 만든 뒤에 그것들을 모아서 전체 프로그램을 완성시켜 가는 것.




기본적으로 프로그램은 하향식 접근을 통하여 완성해 나가지만, 기능 또는 기술에 대한 확신이 부족할때는 해당부분만 상향식으로 접근해도 좋을것 같다.

'개념정리' 카테고리의 다른 글

고정 소수점 연산  (0) 2017.06.18
방어적 코딩 기법  (0) 2017.03.23
리팩토링  (0) 2017.03.22
호스팅과 클라우드  (0) 2017.03.22
DDNS (Dynamic Domain Name Service)  (0) 2017.03.22
Posted by EL2A