학습내용

http://blog.chequer.io/archives/105

의 내용을 토대로 예제를 만들었습니다.

A-01. 사과엔티티

 package com.donzbox;


public class Apple {

    

    private String color;

    private int weight;


    public String getColor() {

        return color;

    }


    public void setColor(String color) {

        this.color = color;

    }


    public int getWeight() {

        return weight;

    }


    public void setWeight(int weight) {

        this.weight = weight;

    }

}

A-02. 오렌지엔티티

 package com.donzbox;


public class Orange {

    private String color;

    private int weight;


    public String getColor() {

        return color;

    }


    public void setColor(String color) {

        this.color = color;

    }


    public int getWeight() {

        return weight;

    }


    public void setWeight(int weight) {

        this.weight = weight;

    }

}

A-03. 사과와 오렌지 엔티티의 데이터를 필터조건에 의해 추출

 package com.donzbox;


import java.util.ArrayList;

import java.util.List;

import java.util.ListIterator;


public class FruitsFactory {


    public static void main(String[] args) {

        FruitsFactory appleFactory = new FruitsFactory();

        appleFactory.TestApp1();

    }


    public List<Apple> AppleData() {

        List<Apple> appleList = new ArrayList<>();

        Apple apple = new Apple();

        apple.setColor("red");

        apple.setWeight(40);

        appleList.add(apple);

        apple = new Apple();

        apple.setColor("green");

        apple.setWeight(60);

        appleList.add(apple);

        return appleList;

    }


    public List<Orange> OrangeData() {

        List<Orange> orangeList = new ArrayList<>();

        Orange orange = new Orange();

        orange.setColor("yellow");

        orange.setWeight(40);

        orangeList.add(orange);

        orange = new Orange();

        orange.setColor("blue");

        orange.setWeight(60);

        orangeList.add(orange);

        return orangeList;

    }


    public List<Apple> filterGreenApples(List<Apple> inventory, String color, int weight, boolean flag) {

        List result = new ArrayList<>();

        for (Apple apple : inventory) {

            if ((flag && apple.getColor().equals(color)) || (!flag && apple.getWeight() > weight)) {

                result.add(apple);

            }

        }

        return result;

    }


    public void TestApp1() {

        List<Apple> result = filterGreenApples(AppleData(), "red", 50, true);

        ListIterator<Apple> litr = result.listIterator();

        while (litr.hasNext()) {

            Apple apple = litr.next();

            System.out.println(apple.getColor() + " / " + apple.getWeight());

        }

    }

}


B-01. 사과 추상화

 package com.donzbox;


import java.util.ArrayList;

import java.util.List;

import java.util.ListIterator;


public class FruitsFactory {


    public static void main(String[] args) {

        FruitsFactory appleFactory = new FruitsFactory();

        appleFactory.TestApp2();

    }


    public List<Apple> AppleData() {

        List<Apple> appleList = new ArrayList<>();

        Apple apple = new Apple();

        apple.setColor("red");

        apple.setWeight(40);

        appleList.add(apple);

        apple = new Apple();

        apple.setColor("green");

        apple.setWeight(60);

        appleList.add(apple);

        return appleList;

    }


    public List<Orange> OrangeData() {

        List<Orange> orangeList = new ArrayList<>();

        Orange orange = new Orange();

        orange.setColor("yellow");

        orange.setWeight(40);

        orangeList.add(orange);

        orange = new Orange();

        orange.setColor("blue");

        orange.setWeight(60);

        orangeList.add(orange);

        return orangeList;

    }



    public interface ApplePredicate {

        public boolean test(Apple a);

    }


    public class AppleWeightPredicate implements ApplePredicate {

        public boolean test(Apple apple) {

            return apple.getWeight() > 150;

        }

    }


    public class AppleColorPredicate implements ApplePredicate {

        public boolean test(Apple apple) {

            return "green".equals(apple.getColor());

        }

    }


    public class AppleRedAndHeavyPredicate implements ApplePredicate {

        public boolean test(Apple apple) {

            return "red".equals(apple.getColor()) && apple.getWeight() > 150;

        }

    }


    public List filterApples(List<Apple> inventory, ApplePredicate p) {

        List result = new ArrayList<>();

        for (Apple apple : inventory) {

            if (p.test(apple)) {

                result.add(apple);

            }

        }

        return result;

    }


    public void TestApp2() {

        List result = filterApples(AppleData(), new AppleColorPredicate());


        result = filterApples(AppleData(), (Apple apple) -> "red".equals(apple.getColor()));


        ListIterator<Apple> litr = result.listIterator();

        while (litr.hasNext()) {

            Apple apple = litr.next();

            System.out.println(apple.getColor() + " / " + apple.getWeight());

        }

    }

}



C-01. 사과 또는 오렌지 뭐든지간에 드오는대로 처리되는 추상화

과일 구현체에 의한 사과

 package com.donzbox;


public class Apple implements Flute {

    

    private String color;

    private int weight;


    public String getColor() {

        return color;

    }


    public void setColor(String color) {

        this.color = color;

    }


    public int getWeight() {

        return weight;

    }


    public void setWeight(int weight) {

        this.weight = weight;

    }

}

과일 구현체에 의한 오렌지

 package com.donzbox;


public class Orange implements Flute {

    private String color;

    private int weight;


    public String getColor() {

        return color;

    }


    public void setColor(String color) {

        this.color = color;

    }


    public int getWeight() {

        return weight;

    }


    public void setWeight(int weight) {

        this.weight = weight;

    }

}

과일 인터페이스

 package com.donzbox;


public interface Fruits {

public String getColor();

public int getWeight();

}



T클레스에 의한 필터처리

 package com.donzbox;


import java.util.ArrayList;

import java.util.List;

import java.util.ListIterator;


public class FruitsFactory {


    public static void main(String[] args) {

        FruitsFactory appleFactory = new FruitsFactory();

        appleFactory.TestApp3();

    }


    public List<Apple> AppleData() {

        List<Apple> appleList = new ArrayList<>();

        Apple apple = new Apple();

        apple.setColor("red");

        apple.setWeight(40);

        appleList.add(apple);

        apple = new Apple();

        apple.setColor("green");

        apple.setWeight(60);

        appleList.add(apple);

        return appleList;

    }


    public List<Orange> OrangeData() {

        List<Orange> orangeList = new ArrayList<>();

        Orange orange = new Orange();

        orange.setColor("yellow");

        orange.setWeight(40);

        orangeList.add(orange);

        orange = new Orange();

        orange.setColor("blue");

        orange.setWeight(60);

        orangeList.add(orange);

        return orangeList;

    }



    public interface Predicate<T> {

        boolean test(T t);

    }


    public class WeightPredicate<T extends Fruits> implements Predicate<T> {

        public boolean test(T t) {

            return t.getWeight() > 150;

        }

    }


    public class ColorPredicate<T extends Fruits> implements Predicate<T> {

        public boolean test(T t) {

            return "green".equals(t.getColor());

        }

    }


    public class RedAndHeavyPredicate<T extends Fruits> implements Predicate<T> {

        public boolean test(T t) {

            return "red".equals(t.getColor()) && t.getWeight() > 150;

        }

    }


    public <X> List<X> filter(List<X> list, Predicate<X> p) {

        List<X> result = new ArrayList<>();

        for (X e : list) {

            if (p.test(e)) {

                result.add(e);

            }

        }

        return result;

    }


    public void TestApp3() {

        List<Apple> resultApple = filter(AppleData(), new ColorPredicate<>());

        List<Orange> resultOrange = filter(OrangeData(), new ColorPredicate<>());


        ListIterator<Apple> litrApple = resultApple.listIterator();

        while (litrApple.hasNext()) {

            Apple apple = litrApple.next();

            System.out.println(apple.getColor() + " / " + apple.getWeight());

        }

        

        ListIterator<Orange> litrOrange = resultOrange.listIterator();

        while (litrOrange.hasNext()) {

            Orange orange = litrOrange.next();

            System.out.println(orange.getColor() + " / " + orange.getWeight());

        }


//        List redApples = filter(AppleData(), (Apple apple) -> "red".equals(apple.getColor()));

//        List heavyOranges = filter(OrangeData(), (Orange orange) -> orange.getWeight() > 500);

    }

}




스터디사이트1       https://angular.io/docs/ts/latest/tutorial

스터디사이트2  http://www.namooz.com/category/angular2


angular2-toh.pptx



AngularJS2 example - Tour of Heroes, Diagram

 


첨부파일

"영웅의 모험" 공부했던 소스 : angular2-toh-http.zip






일단 이클립스에서 보고싶지 않은 파일 숨기는 방법이다

앵규라2 공식사이트의 예제 (https://angular.io/docs/ts/latest/quickstart.html)를 따라하다가

ts에서 컨버전 된 파일이 js파일은 내가 손댈 필요가 없는 파일임에도 불구하고, 보기힘들게 아래의 왼쪽창과 같이 여기저기 박혀있다.

js 파일등과 같이 산출되는 파일은 특정 폴더에 넣는 방법은 후에 설명하도록 한다.

우선 js 파일 부터 안보이게 해보자.


002-angular-tour-of-heroes 프로젝트에서 오른쪽 클릭 후 Properties 선택

Resource - Resource Filters 선택 후 아래와 같이 설정한다.




한가지 주의사항은

*.js 필터로 Exclude all 을 해버리면 Angular2에서 파일 컨버전시 필요한 systemjs.config.js 까지 안보이게 되므로

^((?!systemjs.config).)*.js$

정규식으로 systemjs.config.js 는 제외시켜 보이게 한다.


상기 정규식에 대한 설명 (출처 : http://nolleh.tistory.com/107)

hero 로 시작하는 문자열 제외

 hero가 포함된 문자열 제외

 ^(?!hero).*$

 ^((?!hero).)*$

^ : 라인 시작으로부터

?! : 문자열이 일치하지 않고

(.)* : 어떤 문자들이 뒤에 위치할 수도 있음

$ : 라인종료




팁 : Angular2 에서 컴파일시 생성되는 *.'js 또는 *.js.map 파일을 특정디렉토리에 산출 되게 하기

/*

 * outDir 은 TypeScript compiler 가 ts 파일을 컴파일하고 생기는 JavaScript 파일과

 * 이것의 mapping 정보를 담고 있는 map 파일의 경로를 설정해 둔것이다. "./dist" 가 실제 Web Application에서 사용 될 JavaScript와 mapping 정보 파일들을 담음

 * 그리고 rootDir은 TypeScript 소스 파일들의 root 폴더이다.

 * 하나의 TypeScript 파일이 컴파일 되면 JavaScript 와 map 이렇게 두 개의 파일이 만들어진다

 * map 파일은 JavaScript 와 source 파일인 TypeScript 의 mapping 정보를 담고 있는데 이 파일은 실제 Production 에 사용 하지 않아도 되는 파일이다.

 * 실제 필요한 것은 JavaScript 이다. 하지만 위에서  sourceMap 을 true 로 설정하였기 때문에 map 파일이 생성 된것이다.

 * 이것을 false로 설정하면 map 파일이 없이 JavaScript 만 생성된다.

 */



아씨 !!! 이거뭐야 !!!

현상 : exErd 플러그인 업그레이드 했더니, 동작하지 않는다!!!


해결법 : http://forum.exerd.com/viewtopic.php?f=3&t=5507

plug-in 설치로 해결

* http://download.eclipse.org/releases/mars

-- EMF - Eclipse Modeling Framework SDK
-- Graphical Editing Framework GEF SDK



7F6Y4SQW2EZMT9HB




SpringFW in RESTful setting


RequestFilter.java

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import net.nimigate.framework.web.servlet.filter.AbstractRequestWrappingFilter;


public class RequestFilter extends AbstractRequestWrappingFilter {


@Override

public void preChain(ServletRequest request, ServletResponse response) {

HttpServletRequest req = (HttpServletRequest) request;

HttpServletResponse res = (HttpServletResponse) response;

//ajax cross domain 문제

//res.setHeader("Accept", "*/*");

//res.setHeader("Access-Control-Allow-Origin", "*");

//res.setHeader("Access-Control-Max-Age", "3600");

if (req.getHeader("Access-Control-Request-Method") != null && "OPTIONS".equals(req.getMethod())) {

res.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");

//res.setHeader("Access-Control-Expose-Headers", "x-mslp-access-token");

res.setHeader("Access-Control-Allow-Headers", "Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers,Authorization,x-mslp-access-token");

}

}


web.xml

    <filter>

        <filter-name>CorsFilter</filter-name>

        <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>

        <init-param>

            <param-name>cors.exposed.headers</param-name>

            <param-value>Access-Control-Allow-Origin,Access-Control-Allow-Credentials,x-mslp-access-token</param-value>

        </init-param>

        <init-param>

            <param-name>cors.allowed.headers</param-name>

            <param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers,Authorization,x-mslp-access-token</param-value>

        </init-param>

        <init-param>

            <param-name>cors.allowed.methods</param-name>

            <param-value>GET, POST, PUT, DELETE, HEAD, OPTIONS</param-value>

        </init-param>

    </filter>


    <filter-mapping>

        <filter-name>CorsFilter</filter-name>

        <url-pattern>/*</url-pattern>
    </filter-mapping>


자바스크립트 에러 표시 무시하기


1. Project 에서 right click -> properties

2. left menu의 JavaScript -> Include Path

3. Include Path Popup창 상단의 두번째 탭 Source -> Excluded : ... 클릭 후 Edit

4. Inclusion and Exclusion Patterns Popup창의 하단 Exclusion patterns: 필드의 Add... 클릭

5. Add Exclusion Pattern Popup 에서 Browse...






DIRECT DOWNLOAD LINK (formality version)

MAC
Direct Link : https://www.visual-paradigm.com/downloads/vp13.2/Visual_Paradigm_OSX_WithJRE.dmg
Direct Link : https://www.visual-paradigm.com/downloads/vp13.1/Visual_Paradigm_OSX_WithJRE.dmg
Direct Link : https://www.visual-paradigm.com/downloads/vp13.0/Visual_Paradigm_OSX_WithJRE.dmg

Direct Link : https://www.visual-paradigm.com/downloads/vp12.2/Visual_Paradigm_OSX_WithJRE.dmg
Direct Link : https://www.visual-paradigm.com/downloads/vp12.1/Visual_Paradigm_OSX_WithJRE.dmg
Direct Link : https://www.visual-paradigm.com/downloads/vp12.0/Visual_Paradigm_OSX_WithJRE.dmg

WIN
Direct Link : https://www.visual-paradigm.com/downloads/vp13.2/Visual_Paradigm_OSX_WithJRE.exe
Direct Link : https://www.visual-paradigm.com/downloads/vp13.1/Visual_Paradigm_OSX_WithJRE.exe
Direct Link : https://www.visual-paradigm.com/downloads/vp13.0/Visual_Paradigm_OSX_WithJRE.exe

Direct Link : https://www.visual-paradigm.com/downloads/vp12.2/Visual_Paradigm_OSX_WithJRE.exe
Direct Link : https://www.visual-paradigm.com/downloads/vp12.1/Visual_Paradigm_OSX_WithJRE.exe
Direct Link : https://www.visual-paradigm.com/downloads/vp12.0/Visual_Paradigm_OSX_WithJRE.exe


UNLIMIT 30 Day (for v13.2 less)

MAC
"/Users/Donz/Library/Application Support/VisualParadigm" 이하의 ALL FILE & DIRECTORY 를 DELETE!!! 
(CAUTION : BACKUP "WS" FORDER) - 반드시 빽업하세욧

WIN
"C:\Users\Donz\AppData\Roaming\VisualParadigm" 이하의 ALL FILE & DIRECTORY 를 DELETE!!! 
(CAUTION : BACKUP "WS" FORDER) - 반드시 빽업하세욧



Visual Paradigm v10.0 full crack download

http://www.mediafire.com/file/6r3u6slrkpz6v4n/Vsual+Paradigm+For+UML+64bit_10_0_sp1.rar

Visual Paradigm v10.0 license file

vp-uml-ee.zvpl






















#!/bin/bash


#sh trans-name.sh YSL1

#sh trans-name.sh YSL2


ARG0="$0"

while [ -h "$ARG0" ]; do

  ls=`ls -ld "$ARG0"`

  link=`expr "$ls" : '.*-> \(.*\)$'`

  if expr "$link" : '/.*' > /dev/null; then

    ARG0="$link"

  else

    ARG0="`dirname $ARG0`/$link"

  fi

done

DIRNAME="`dirname $ARG0`"

PROGRAM="`basename $ARG0`"


FILE_NAME_CSV="YSL-Teacher-Guide-Resource-List-$1-1.csv"


IFS_OLD=$IFS

IFS=,


while read A B C D E F G H I

do

    DIR_SOURSE="$A/$B"

    DIR_TARGET="$D/$E/$F/$G"

    if [ ! -d $DIR_TARGET ]; then

        mkdir -p $DIR_TARGET

    fi


    cp "$DIR_SOURSE/$C" "$DIR_TARGET/$H"

done < $FILE_NAME_CSV


IFS=$IFS_OLD



01. DBVisualizer 접속오류

DBVIsulizer 를 잘 사용하다 어느날 갑자기 "Locale not recognized라는 에러메세지와 함께 DB접속이 안된다.


해당 사이트를 검색해 봐도 인터넷을 검색해봐도 시스템 로켈일 설정에 의존하여 자동 설정되거나,


DBVisualizer의 설정파일을 강제로 설정 (참조 : http://www.dbvis.com/doc/7.1/doc/ug/gettingStarted/gettingStarted.html)


/Applications/01. Develope/DbVisualizer_.app/Contents/java/app/resources/dbvis-custom.prefs


파일의 locale 부분을 설정하면 된다고 나와있지만 적용되지 않는다.



02. Toad 접속오류

혹시나 Toad를 깔아 DB설정 후 접속해 보았지만 동일한 에러메세지 "Locale not recognized발생


나의 macOS Sierra의 locale 설정은 



LANG="ko_KR.UTF-8" 정상설정이 되어있었음.



03. 해결방법



디스크유틸리티 앱을 기동하여 "검사/복구" 후 기동하여 정상 작동하여 지금도 잘 사용하고 있다.



+ Recent posts