Ace-T's Blog 내 검색 [네이버 커넥트 이웃 합니다~^-^/ 요청 大 환영~~]

JBUG- Collection

Study/Study group 2014.07.30 22:01
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T


public interface Collection<E>...


In JDK 8 and later, the Collection interface also exposes methods Stream<E> stream() and Stream<E> parallelStream(), for obtaining sequential or parallel streams from the underlying collection. (See the lesson entitled Aggregate Operations for more information about using streams.)


Traversing Collections

There are three ways to traverse collections: (1) using aggregate operations (2) with the for-each construct and (3) by using Iterators.


Aggregate Operations

In JDK 8 and later, the preferred method of iterating over a collection is to obtain a stream and perform aggregate operations on it. Aggregate operations are often used in conjunction with lambda expressions to make programming more expressive, using less lines of code. The following code sequentially iterates through a collection of shapes and prints out the red objects:

myShapesCollection.stream()
.filter(e -> e.getColor() == Color.RED)
.forEach(e -> System.out.println(e.getName()));

Likewise, you could easily request a parallel stream, which might make sense if the collection is large enough and your computer has enough cores:

myShapesCollection.parallelStream()
.filter(e -> e.getColor() == Color.RED)
.forEach(e -> System.out.println(e.getName()));

There are many different ways to collect data with this API. For example, you might want to convert the elements of a Collection to String objects, then join them, separated by commas:

    String joined = elements.stream()
    .map(Object::toString)
    .collect(Collectors.joining(", "));

Or perhaps sum the salaries of all employees:

int total = employees.stream()
.collect(Collectors.summingInt(Employee::getSalary)));

These are but a few examples of what you can do with streams and aggregate operations. For more information and examples, see the lesson entitled Aggregate Operations.

for-each Construct

The for-each construct allows you to concisely traverse a collection or array using a for loop — see The for Statement. The following code uses thefor-each construct to print out each element of a collection on a separate line.

for (Object o : collection)
    System.out.println(o);

Iterators

An Iterator is an object that enables you to traverse through a collection and to remove elements from the collection selectively, if desired. You get an Iterator for a collection by calling its iterator method. The following is the Iterator interface.

public interface Iterator<E> {
    boolean hasNext();
    E next();
    void remove(); //optional
}

Use Iterator instead of the for-each construct when you need to:

  • Remove the current element. The for-each construct hides the iterator, so you cannot call remove. Therefore, the for-each construct is not usable for filtering.
  • Iterate over multiple collections in parallel.

The following method shows you how to use an Iterator to filter an arbitrary Collection — that is, traverse the collection removing specific elements.

static void filter(Collection<?> c) {
    for (Iterator<?> it = c.iterator(); it.hasNext(); )
        if (!cond(it.next()))
            it.remove();
}


Collection Interface Bulk Operations

Bulk operations perform an operation on an entire Collection. You could implement these shorthand operations using the basic operations, though in most cases such implementations would be less efficient. The following are the bulk operations:

  • containsAll — returns true if the target Collection contains all of the elements in the specified Collection.
  • addAll — adds all of the elements in the specified Collection to the target Collection.
  • removeAll — removes from the target Collection all of its elements that are also contained in the specified Collection.
  • retainAll — removes from the target Collection all its elements that are not also contained in the specified Collection. That is, it retains only those elements in the target Collection that are also contained in the specified Collection.
  • clear — removes all elements from the Collection.

The addAllremoveAll, and retainAll methods all return true if the target Collection was modified in the process of executing the operation.

As a simple example of the power of bulk operations, consider the following idiom to remove all instances of a specified element, e, from aCollectionc.

c.removeAll(Collections.singleton(e));

More specifically, suppose you want to remove all of the null elements from a Collection.

c.removeAll(Collections.singleton(null));

This idiom uses Collections.singleton, which is a static factory method that returns an immutable Set containing only the specified element.

Collection Interface Array Operations

The toArray methods are provided as a bridge between collections and older APIs that expect arrays on input. The array operations allow the contents of a Collection to be translated into an array. The simple form with no arguments creates a new array of Object. The more complex form allows the caller to provide an array or to choose the runtime type of the output array.

For example, suppose that c is a Collection. The following snippet dumps the contents of c into a newly allocated array of Object whose length is identical to the number of elements in c.

Object[] a = c.toArray();

Suppose that c is known to contain only strings (perhaps because c is of type Collection<String>). The following snippet dumps the contents of cinto a newly allocated array of String whose length is identical to the number of elements in c.

String[] a = c.toArray(new String[0]);


Set - 수학에서의 집합을 모델링 함.

LIST - 리스트

MAP - y=f(x) 을 모델링 key가 x, value가 y 임.


찾아보기 : red-black tree
                 람다

합집합
Set<Type> union = new HashSet<Type>(s1);
union.addAll(s2);
 
교집합
Set<Type> intersection = new HashSet<Type>(s1);
intersection.retainAll(s2);
 
차집합
Set<Type> difference = new HashSet<Type>(s1);
difference.removeAll(s2);


두개의 Set 대칭차집합 = 합집합 - 교집합



저작자 표시 비영리 변경 금지
신고

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

JBUG - JDK8 Study

Study/Study group 2014.07.23 20:17
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T




오늘은..저번주에 페이스북으로 코멘트를 달았던 부분에 대해서 설명을 하였다.

2014/07/17 - [Study/Study group] - JBUG - JDK8 Study(정규표현식)- Differences Among Greedy, Reluctant, and Possessive Quantifiers


와우...숨이 막히는 이 느낌은??? ㅋㅋㅋㅋㅋ;; 어느순간 보니 숨도 안쉬고 말하고 있었네요..하하;

아무튼 느낌은 좋았다.ㅎㅎㅎ 다음엔 더 잘해야겠다! ㅋㅋ




- END -



저작자 표시 비영리 변경 금지
신고

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

JBUG - JDK8 Study(정규표현식)- Differences Among Greedy, Reluctant, and Possessive Quantifiers

Study/Study group 2014.07.17 00:41
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T



오늘 이슈가 되었던 내용을 소개 하려고 한다.


링크 : http://docs.oracle.com/javase/tutorial/essential/regex/index.html


Differences Among Greedy, Reluctant, and Possessive Quantifiers

의 내용 이였다.

우선은 아래의 내용을 참고 해보도록 하자.

Quantifiers

Quantifiers allow you to specify the number of occurrences to match against. For convenience, the three sections of the Pattern API specification describing greedy, reluctant, and possessive quantifiers are presented below. At first glance it may appear that the quantifiers X?, X?? and X?+ do exactly the same thing, since they all promise to match "X, once or not at all". There are subtle implementation differences which will be explained near the end of this section.

GreedyReluctantPossessiveMeaning
X?X??X?+X, once or not at all
X*X*?X*+X, zero or more times
X+X+?X++X, one or more times
X{n}X{n}?X{n}+X, exactly n times
X{n,}X{n,}?X{n,}+X, at least n times
X{n,m}X{n,m}?X{n,m}+X, at least n but not more than m times



그리고..초반에 매우 중요한 그림이 있었죠!




문제의 부분

There are subtle differences among greedy, reluctant, and possessive quantifiers.

Greedy quantifiers are considered "greedy" because they force the matcher to read in, or eat, the entire input string prior to attempting the first match. If the first match attempt (the entire input string) fails, the matcher backs off the input string by one character and tries again, repeating the process until a match is found or there are no more characters left to back off from. Depending on the quantifier used in the expression, the last thing it will try matching against is 1 or 0 characters.

The reluctant quantifiers, however, take the opposite approach: They start at the beginning of the input string, then reluctantly eat one character at a time looking for a match. The last thing they try is the entire input string.

Finally, the possessive quantifiers always eat the entire input string, trying once (and only once) for a match. Unlike the greedy quantifiers, possessive quantifiers never back off, even if doing so would allow the overall match to succeed.

To illustrate, consider the input string xfooxxxxxxfoo.

 
Enter your regex: .*foo  // greedy quantifier
Enter input string to search: xfooxxxxxxfoo
I found the text "xfooxxxxxxfoo" starting at index 0 and ending at index 13.

Enter your regex: .*?foo  // reluctant quantifier
Enter input string to search: xfooxxxxxxfoo
I found the text "xfoo" starting at index 0 and ending at index 4.
I found the text "xxxxxxfoo" starting at index 4 and ending at index 13.

Enter your regex: .*+foo // possessive quantifier
Enter input string to search: xfooxxxxxxfoo
No match found.

The first example uses the greedy quantifier .* to find "anything", zero or more times, followed by the letters "f" "o" "o". Because the quantifier is greedy, the .* portion of the expression first eats the entire input string. At this point, the overall expression cannot succeed, because the last three letters ("f" "o" "o") have already been consumed. So the matcher slowly backs off one letter at a time until the rightmost occurrence of "foo" has been regurgitated, at which point the match succeeds and the search ends.

The second example, however, is reluctant, so it starts by first consuming "nothing". Because "foo" doesn't appear at the beginning of the string, it's forced to swallow the first letter (an "x"), which triggers the first match at 0 and 4. Our test harness continues the process until the input string is exhausted. It finds another match at 4 and 13.

The third example fails to find a match because the quantifier is possessive. In this case, the entire input string is consumed by .*+, leaving nothing left over to satisfy the "foo" at the end of the expression. Use a possessive quantifier for situations where you want to seize all of something without ever backing off; it will outperform the equivalent greedy quantifier in cases where the match is not immediately found.


이슈가 되었던 부분은..


Enter your regex: .*foo  // greedy quantifier
Enter input string to search: xfooxxxxxxfoo
I found the text "xfooxxxxxxfoo" starting at index 0 and ending at index 13.

Enter your regex: .*?foo  // reluctant quantifier
Enter input string to search: xfooxxxxxxfoo
I found the text "xfoo" starting at index 0 and ending at index 4.
I found the text "xxxxxxfoo" starting at index 4 and ending at index 13.

Enter your regex: .*+foo // possessive quantifier
Enter input string to search: xfooxxxxxxfoo
No match found.

위의 부분에서 greedy quantifier와 possessive quantifier에서 매칭되어지는 과정에서 궁금증이 생겼다.
greedy : 매칭
possessive : No 매칭

Why??? 

생각해보자.

.*foo 의 패턴! xfooxxxxxxfoo 전체 매칭??? greedy에서..처음에 바로 전체매칭이 된다고 의견이

나왔다.

하지만 튜토리얼에도 나온다.

the quantifier is greedy, the .* portion of the expression first eats the entire input string. At this point, the overall expression cannot succeed, because the last three letters ("f" "o" "o") have already been consumed.


possessive 역시 No match found. 이다.

그러면..어떻게...왜?? greedy에서 매칭이 실패한 걸까????

(아..잠이 와서 무척 포스팅 하는데 건성건성~이군요..하하;)


저의 답은..




# greedy가 전체매칭에 실패했다는 내용



지하철에서 생각해보고 집에와서 그려보았네요ㅎㅎ;;


그리고 시큐리티 매니저라는 친구에 대해서도 알아보았드랬죵!


참고 : 2014/07/03 - [Study/Study group] - JBUG - JDK8 Study(Concurrency_01)


     - END -




저작자 표시 비영리 변경 금지
신고

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

JBUG - JDK8 Study(Concurrency_01)

Study/Study group 2014.07.03 00:04
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T



Jboss User Group Study - 2014.07.02(수)


주호씨 덕분에 하게 된 스터디! 감사르~~

슈퍼맨

Concurrency(동시 실행)


오늘 기억에 남는 내용은..


Interrupts

An interrupt is an indication to a thread that it should stop what it is doing and do something else. It's up to the programmer to decide exactly how a thread responds to an interrupt, but it is very common for the thread to terminate. This is the usage emphasized in this lesson.

A thread sends an interrupt by invoking interrupt on the Thread object for the thread to be interrupted. For the interrupt mechanism to work correctly, the interrupted thread must support its own interruption.

Supporting Interruption

How does a thread support its own interruption? This depends on what it's currently doing. If the thread is frequently invoking methods that throw InterruptedException, it simply returns from the run method after it catches that exception. For example, suppose the central message loop in the SleepMessages example were in the run method of a thread's Runnable object. Then it might be modified as follows to support interrupts:

for (int i = 0; i < importantInfo.length; i++) {

    // Pause for 4 seconds

    try {

        Thread.sleep(4000);

    } catch (InterruptedException e) {

        // We've been interrupted: no more messages.

        return;

    }

    // Print a message

    System.out.println(importantInfo[i]);

}

Many methods that throw InterruptedException, such as sleep, are designed to cancel their current operation and return immediately when an interrupt is received.

// 보라색 부분을 질문 하였다. InterruptedException을 발생시키는 sleep같은 메소드! 들은 디자인 되어있다고 한다.

// 현재의 작업을 취소하고 리턴한다고! 즉시 interrupt 를 반환! 

그런데 토론을 하다보니 내가 생각한 것과 다른 의견이 나왔다. sleep중에 Interrupt가 발생 되어질 때 InterruptedException가 발생되어지고 바로 return을 한다는 것이다. 그것을 해주는 부분이 아래의 부분???

    } catch (InterruptedException e) {       

      // We've been interrupted: no more messages.

        return;

    } 


결론은 sleep같은 많은 메소드들이 현재 작업 취소 및 즉시 리턴 하는 것으로~~:D

또한 아래와 같이 invoking없이 장시간 작업하는 쓰레드가 InterruptedException가 발생 한다면! 체크하여 리턴!


다시 읽어보고 정리한 내용은 이 글의 맨 아래에 있습니다. ㅎㅎ 


What if a thread goes a long time without invoking a method that throws InterruptedException? Then it must periodically invoke Thread.interrupted, which returns true if an interrupt has been received. For example:

for (int i = 0; i < inputs.length; i++) {

    heavyCrunch(inputs[i]);

    if (Thread.interrupted()) {

        // We've been interrupted: no more crunching.

        return;

    }

}


혹은! 아래와 같이 throw new InterruptedException();를 해줄 수 있다!

In this simple example, the code simply tests for the interrupt and exits the thread if one has been received. In more complex applications, it might make more sense to throw an InterruptedException:

if (Thread.interrupted()) {

    throw new InterruptedException();

}

This allows interrupt handling code to be centralized in a catch clause.

The Interrupt Status Flag

The interrupt mechanism is implemented using an internal flag known as the interrupt status. Invoking Thread.interrupt sets this flag. When a thread checks for an interrupt by invoking the static method Thread.interrupted, interrupt status is cleared. The non-static isInterrupted method, which is used by one thread to query the interrupt status of another, does not change the interrupt status flag.

By convention, any method that exits by throwing an InterruptedException clears interrupt status when it does so. However, it's always possible that interrupt status will immediately be set again, by another thread invoking interrupt.



주저리 : 테스트와 아직까지 페이스북에서는 토론이 진행되고 있다 ㅎㅎㅎ 굿!


2번째 참여! 정말 좋은 것 같다. ㅎㅎㅎ 

열심히 준비해서 나도 발표 한번 해봐야지! ㅋㅋㅋ

아..그런데 무슨일이지...방문자가 갑작스레 어제 1천명, 오늘은 900명이네..와우!! 


    - END? not yet :D -


facebook에서 열띤 토론이 벌어져서 다시 한번 읽어보고 정리해보았다. 위의 결론과는 다르다.



- END ? -



저작자 표시 비영리 변경 금지
신고

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

[Study] Step 01. About Backbonejs

Study/Study group 2014.04.12 15:58
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T

 Backbone.js 시작하기

 

javacafe study로 Backbone.js를 살펴보고 있습니다.^0^good~

실습위주라서 이론을 한번 정리해보려고 합니다.


 

 1. Let's start Beginners!!(출처 : http://backbonetutorials.com/)  

    아래의 목차처럼 Backbone.js를 배워보도록 하자^^;


1) Why do you need Backbone.js?

Building single-page web apps or complicated user interfaces will get extremely difficult by simply using jQuery or MooTools. The problem is standard JavaScript libraries are great at what they do - and without realizing it you can build an entire application without any formal structure. You will with ease turn your application into a nested pile of jQuery callbacks, all tied to concrete DOM elements.

I shouldn't need to explain why building something without any structure is a bad idea. Of course you can always invent your own way of structuring your application but you miss out on the benefits of the open source community.

Why single page applications are the future

Backbone.js enforces that communication to the server should be done entirely through a RESTful API. The web is currently trending such that all data/content will be exposed through an API. This is because the browser is no longer the only client, we now have mobile devices, tablet devices, Google Goggles and electronic fridges etc.

So how does Backbone.js help?

Backbone is an incredibly small library for the amount of functionality and structure it gives you. It is essentially MVC for the client and allows you to make your code modular. If you read through some of the beginner tutorials the benefits will soon become self evident and due to Backbone.js light nature you can incrementally include it in any current or future projects.


2) What is a model?

Across the internet the definition of MVC is so diluted that it's hard to tell what exactly your model should be doing. The authors of backbone.js have quite a clear definition of what they believe the model represents in backbone.js.

Models are the heart of any JavaScript application, containing the interactive data as well as a large part of the logic surrounding it: conversions, validations, computed properties, and access control.

So for the purpose of the tutorial let's create a model.

    Person = Backbone.Model.extend({
        initialize: function(){
            alert("Welcome to this world");
        }
    });
    
    var person = new Person;

 

So initialize() is triggered whenever you create a new instance of a model( models, collection

s and views work the same way ). You don't have to include it in your model declaration but you will find yourself using it more often than not.

 

<< 예제 파일 >>

acet.html


Setting attributes

Now we want to pass some parameters when we create an instance of our model.

    Person = Backbone.Model.extend({
        initialize: function(){
            alert("Welcome to this world");
        }
    });
    
    var person = new Person({ name: "Thomas", age: 67});
    // or we can set afterwards, these operations are equivelent
    var person = new Person();
    person.set({ name: "Thomas", age: 67});
  

So passing a JavaScript object to our constructor is the same as calling model.set(). Now t

hat these models have attributes set we need to be able to retrieve them.


<< 예제파일 >>

model.html


<< 소스 >>

   Person = Backbone.Model.extend({     

      initialize: function(){

      //      alert("Welcome to this world");

        }

    });

    

   // 2가지의 방법으로 Backbone.js의 모델을 만들 수가 있다.

   1) 파라미터 방식

   :  So passing a JavaScript object to our constructor is the same as calling model.set()


    var person = new Person({ name: "Thomas", age: 67});

    // or we can set afterwards, these operations are equivelent

   

   2) set() 함수 사용 

    var person = new Person();

 

    // set / get으로 데이터를 넣다뺐다 할 수 가있다.^-^good~

    person.set({ name: "Ace-t", age: 22});   

    alert(person.get('name'));



<< 결과 >>


What is a view?

Backbone views are used to reflect what your applications' data models look like. They are also used to listen to events and react accordingly. This tutorial will not be addressing how to bind models and collections to views but will focus on view functionality and how to use views with a JavaScript templating library, specifically Underscore.js's _.template.

We will be using jQuery 1.8.2 as our DOM manipulator. It's possible to use other libraries such as MooTools or Sizzle, but official Backbone.js documentation endorses jQuery. Backbone.View events may not work with other libraries other than jQuery.

For the purposes of this demonstration, we will be implementing a search box. A live example can be found on jsFiddle.

    SearchView = Backbone.View.extend({
        initialize: function(){
            alert("Alerts suck.");
        }
    });

    // The initialize function is always called when instantiating a Backbone View.
    // Consider it the constructor of the class.
    var search_view = new SearchView();



저작자 표시 비영리 변경 금지
신고

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

2014년 상반기 자바카페 스터디 오리엔테이션 장소 변경!

Study/Study group 2014.03.16 20:13
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T

 

2014/03/03 - [Study/Study group] - 2014년 상반기 자바카페 스터디

 

오리엔테이션 장소: 토즈 메가젠타워토즈타워점 

오리엔테이션 날짜: 2014 3 29(오후 2시

 

ㅎㅎㅎㅎㅎㅎ 정말 다행이네요..

이번 아이다스 MBC 마라톤에 나가는데..3월30일 이네요! ㅎㅎㅎ

+ㅁ+/ 겹치면 안되는데...안되는데..라고 노심초사 했는데..확인해보니

겹치지 않네요^^

 

2014년 슬슬 풀리려나 봅니다.  날씨가 풀리는 것 처럼? ㅎㅎㅎ

 

몸도 많이 나아졌네요...^-^ 포스팅 고우고우~=3=3

저작자 표시 비영리 변경 금지
신고

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

2014년 상반기 자바카페 스터디

Study/Study group 2014.03.03 00:24
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T

기다렸던 자바카페 스터디가 개설 되었네요^^/ good~~선착순이니!! 빨리 참여하세요! ㅎㅎ

 

 

모임주소 : http://onoffmix.com/event/24529

 

다음과 같이 2014년 상반기 자바카페 스터디 회원을 모집합니다. 

많은 참여 부탁 드립니다.

 

오리엔테이션 장소: 상암 누리꿈스퀘어 대강의실

오리엔테이션 날짜: 2014 3 29(오후 2시

 

 

 

1. 모집분야

1-1. Javascript Framework 팀(토요일, 10 ~ 13시)

backbone.js, angular.js  등등 자바 스크립트 프레임워크를 스터디 하고, 서로에 대한 차이점에

대해서 토론해보는 스터디 입니다.


1-2. SQL 자격증 팀[한국데이터베이스진흥원] (토요일, 14 ~ 17시)

SQL  개발자, 전문가 자격증(한국데이터베이스진흥원) 취득을 위한 스터디 입니다.

 - 도서 : SQL전문가가이드 2013 Edition 50,000원 개별 구입(교보문고 기준), 중고도서 구입 희망, 혹은 근처 도서관 대여 희망

도서 URL : http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788988474167&orderClick=LAG&Kc=

 - 진행

    1. 챕터별 인원 할당 후 할당 인원이 워드프레스에 정리

    2. 평일에 개별속독 후 주말에 정독 and 정리

    3. 평일 개별 숙제로 'SQL 문제 2, 3개 만들어 오기' 정도의 과제가 있을 예정

    4. 6월 = SQLD(개발자) 시험 예정

        9월 = SQLP(전문가) 시험 예정

    5. 6월까지 DB 이론, 모델링, 기본 SQL 위주, SQLD시험 후 튜닝 위주의 스터디 진행 예정

   6. OT 당일 관련 사항 협의 가능

 - 난이도

   1. 학생, 사원, 중급 가능


1-3 SQL 2팀(토요일, 10 ~ 13시 또는 일요일)

기존에 있던 SQL 스터디 팀으로 추가인원을 모집합니다.

팀장이 가지고 있는 자료를 중심으로 스터디를 진행합니다. 

 

1-4.  SQL 3팀(토요일, 14 ~ 17시)

교재 '한번에 이해되는 MS-SQL SERVER 2008' 

(링크 : http://www.yes24.com/24/goods/3798503?scode=032&OzSrank=1

를 학습하는 스터디 입니다.

 

1-5. JSP 팀(토요일, 14 ~ 17시)

교재 '최범균의 JSP 2.2 웹 프로그래밍 기초부터 중급까지'

(링크 : http://www.yes24.com/24/goods/8348263?scode=032&OzSrank=1)

를 학습하는 스터디 입니다.

 

1-6. Design Pattern 팀(토요일, 10 ~ 12시)

교재 'Head First Design Patterns : 스토리가 있는 패턴 학습법'

(링크 : http://www.yes24.com/24/Goods/1778966?Acode=101)

를 학습하는 스터디 입니다.

 

1-7. Korea Embedded Linux Project 협업 프로잭트 팀(토요일, 14 ~ 17시)

- Korea Embedded Linux Poject(http://www.kelp.or.kr) 과 협업하여 프로젝트를 진행하는 팀

- 임베디드 관련 부분은 KELP에서 작업(이 부분은 회의 후 수정 가능)

- 팀에서 구현해야 할 기술

   - 서버 프로그램을 통한 임베디드 장비와 통신 방법 학습

   - 임베디드 장비에서 발생한 데이터를 모이터 링 할 수 있는 UI 개발

- 팀 진행 사항

   - 위 구현해야 할 기술에 대한 스터디 진행

   - 구현 기술 구현 후 KELP에서 만든 임베디드 장비와 결합

 

2. 모집일정

 

-  03월 01일 ~ 03월 22일 : 스터디 모집

-  03월 29일 : 오리엔테이션

-  04월 05일 : 스터디 시작

-  06월 28일 : 스터디 종료

-  스터디기간은 3개월입니다.


* 팀별 모집인원이 4명 이하인 경우 팀이 구성되지 않을 수 있습니다.

  만약 팀이 구성되지 않을경우 다른 팀으로 이동하셔야 합니다. 

 

 

 

 

3. 스터디 운영 방식

 

-  스터디는 벌금제로 운영됩니다.

-  모든 스터디에는 3진아웃제가 적용됩니다.

-  스터디 참여율을 높이기 위한 목적으로 활용되며 미리 모은 벌금은 스터디 종료시 다시 돌려드립니다.

-  3진아웃제에 적용되는 벌금 60,000원

-  1번 불참시 벌금 20,000원 삭감

 

*3아웃제란? 

벌금제도로서 벌금을 미리 걷어두고 스터디 진행중 3번이상 불참시 자동으로 탈락되는 제도입니다. 

하지만 모든 스터디 참여시 벌금을 다시 반환해드립니다.

 

 

 

 

4. 오리엔테이션 시간 및 장소

 

-  오리엔테이션 장소: 상암 누리꿈스퀘어 대강의실

-  오리엔테이션 시간: 2014년 3월 29일(토) 오후 2시~4시

-  오리엔테이션 비용: 10,000원

-  오리엔테이션 불참시 스터디 참여가 불가합니다.

 

 

 

 

5. 유의사항

 

- 오리엔테이션 불참시 스터디 참여가 불가합니다.

- 기타 궁금한 사항은 담당 운영진(javacafem@gmail.com)에게 문의하세요

 

 

팀별 확정인원 (2014.03.01 pm 00:00 기준)

 과정

모집인원

확정인원 

 1. Javascript Framework 팀

10 

 2. SQL 자격증팀(신규)

 3. SQL 2팀(기존 인원 추가)

 0 

 4. SQL 3팀(MS-SQL)

10 

 5. JSP 팀

10 

 0 

 6. Design Pattern 팀

 5 

 0 

 7. KELP 협업 팀

 0 


입금자 명단
 (2014.03.01 pm 00:00 기준, 입금일 오름차순 정렬) 

 

 

javascript framework팀에 지원을 하였다.

현재 node.js를 보고 있는데 더욱 더 도움이 될 것 같다.  그리고 스크립트쪽으로 공부를 많이 해본적은 없어서 이참에

더욱 더 관심을 가질 기회가 되었으면 한다. 재미있게 한번 해보자잉~ㅎㅎㅎ

 

    - END -

 

저작자 표시 비영리 변경 금지
신고

설정

트랙백

댓글

  • Favicon of http://blog.anyjava.net BlogIcon anyjava 2014.03.03 17:41 신고 답글 | 수정/삭제 | ADDR

    오홍 스터디 시작이여?? ㅎㅎㅎ 난 구미가 댕기는게 없구먼 ㅋㅋ

    • Favicon of http://acet.pe.kr BlogIcon String Ace-T 2014.03.04 09:56 신고 수정/삭제

      ㅎㅎㅎ 자바스크립트 했어 난 ㅋㅋ
      초절정 고수분이 reading 한다는 소문이 있어서ㅋㅋㅋ
      가서 같이 공부 한번 해볼려공!

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

[Java Cafe] JavaScript Study[ 2013 하반기 ]

Study/Study group 2013.11.09 11:44
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T

 

 

 

 

유용 SITE :  http://insanehong.kr/post/javascript-prototype/

저작자 표시 비영리 변경 금지
신고

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

2013년 하반기 자바카페 스터디 회원모집 안내

Study/Study group 2013.09.13 17:57
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T



2013년 하반기 자바카페 스터디 회원모집 안내

  • 모임기간 : 9월 28일 (토) 14시 00분 ~ 16시 00
  • 등록기간 : 9월 10일 (화) 10시 30분 ~ 27일 (금) 18시 00
  • 모임장소 : 상암 누리꿈스퀘어 대강의실
  • http://onoffmix.com/event/19039

음...너무 학구열들이 높다..-ㅁ-;;;


제발 되길~~~~


  • Java Basic팀 : 10,000원(15명)
  • JSP 팀 : 10,000원(7명)
  • 자바스크립트팀 : 10,000원(15명)
  • Spring 팀 : 10,000원(22명)마감
  • 전자정부 프레임워크 : 10,000원(7명)
  • HTML5 & CSS3 : 10,000원(7명)
  • SQL 팀 : 10,000원(9명)
  • 파이썬 팀 : 10,000원(7명)
  • 유니티3D 팀 : 10,000원(7명)





ㅎㅎㅎㅎ Mr. 굿택과 스터디에 참여하게 되었다! 좋았어~~!!

<----------- 추가확인 (2013.09.13 pm 10:50)

65. 신동렬

66. 박정우

67. 김기준

68. 김종호

69. 이명진

70. 이창훈

71. 김지한

72. 박태하

73. 권택환

74. 임주예

저작자 표시 비영리 변경 금지
신고

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

[2번째] KSUG+자바카페 2013년 상반기 스터디

Study/Study group 2013.03.23 16:57
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T


2013/03/16 - [Study/Study group] - KSUG+자바카페 2013년 상반기 스터디

2시~2시 30분 : 책 읽고, 무엇을 할지 토론
교제는 토비! 가 아닌 Spring in Action^-^

Bean이란?
  스프링 인 액션 : 모든 것은 Bean에서 시작 되었다..ㅋㅋ
  EJB와는 다르다. 스프링의 빈은..
  마치 getter/setter 의 VO ???
  
 빈의 제어영역, 생명주기 관리 : 컨테이너(스프링 컨테이너)
 컨테이너에 올릴려면..자동으로 되던가 , 관리 -> 예전에는 빈 팩토리 -> 스프링이 발전함에 따라 applicationContext(3가지 종류)
  1) ClassPathXmlApplicationContext : 실무에서 가장 많이 씀
  2) FileSystemXmlApplicationContext
  3) XmlWebApplicationContext

스프링 컨테이너..빈의 생명주기를 다룬다. 즉, 자바기반에 인터스화부터 소멸까지..자바소스로 만들어진 것으로 관리가 된다.

빈 유효범위
factory-method="getInstance"   -> getInstance : singlton으로 만들어주는 코드 있음.
싱글톤/prototype 실습

와이어링
  클래스 간의 관계

대표를 만들어 관리하게끔 해준다. - 퍼사드 패턴(Fasad)

제일 중요한 것은 복습!!!

아..실습 엄청 단 시간내에ㅋㅋ
소스는 정리해서 올려야겠다^-^good~


저작자 표시 비영리 변경 금지
신고

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

KSUG+자바카페 2013년 상반기 스터디

Study/Study group 2013.03.16 16:49
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T


1. 스프링 설치
   - 이클립스 또는 STS 설치, 당연히 JDK는 기본!  
   - maven 다운로드 : http://maven.apache.org/download.cgi
2. maven project 생성
   - pom.xml에 dependency 추가
3. spring souurce site 소개 : http://www.springsource.org/

4. github 에서 bean설정 가져오기

더보기



4. Bean 만들어보기 소스코딩
  


5. 여러가지 다양한 주입 테스트!! gooood~~~^0^ 그동안 쌓였던..DI...풀렸다!! ㅋㅋ

메인 부분..

 public class BeanTestBySpring {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub

  MacBook book = new MacBook();
  //Dev dev= new Dev(book);
  
  //dev.setBook(book);
  
  //dev.takeMac(book);
  System.out.println("#### get context ####");
  ApplicationContext context = new ClassPathXmlApplicationContext("example01.xml");
  
  Dev dev = (Dev)context.getBean("dev");
  //dev.setBook(book);
  System.out.println("setter test : "+dev.getBuyer());
  System.out.println("#### Finish ####");
  
 }

}


xml 부분(빈 설정..)

 <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <!-- 여기까지가 빈 선언 -->
<!-- 스프링 컨테이너를 설정할 수 있는 다양한 XML 네임스페이스가 있음
aop : 애스팩트 선언을 위한 엘리먼트와 @AspectJ 애노테이션이 적용된 클래스르 자동으로 스프링 애스펙트로 프록시하는 엘리먼트를 제공함.
beans : 핵심 원시 스프링 네임스페이스로, 빈의 선언과 연결 방법을 정의할 수 있음.
context : 스프링에 의해 직접 관리되지 않는 객체의 주입과 빈을 오토디텍트(autodetect)하고 오토와이어링(autowiring)하는 기능을 포함하여 스프링 애플리케이션 컨텍스트를 설정하기 위한 엘리먼트를 제공함.
jee : JNDI와 EJB 등의 Java EE API와의 통합을 제공함.
jms : 메시지 드리븐 POJO를 선언하기 위한 설정 엘리먼트를 제공함.
lang : Groovy, JRuby, 또는 BeanShell 스크립트로 구현되는 빈의 선언을 가능하게 함.
mvc : 애노테이션 지향 컨트롤러, 뷰 컨트롤러, 그리고 인터셉터 등의 스프링 MVC 기능을 가능하게 함.
oxm : 스프링의 객체-XML 매핑 구조의 설정을 지원함.
tx : 선언적 트랜잭션 설정을 제공함.
util : 유틸리티 엘리먼트의 다양한 선택. 컬렉션을 빈으로 선언하는 기능과 프로퍼티 대치(placeholder) 엘리먼트에 대한 지원을 포함. -->

<bean id="dev" class="Dev">
<property name="book" ref="macBook"/>
<property name="buyer" value="parktaeha"/>
<!-- <constructor-arg ref="macBook"/> -->
</bean>

<bean id="macBook" class="MacBook"/>

</beans>


class 부분

 
public class Dev {
 
 private MacBook book; // 3가지 주입 방식 생성자, setter, parameter
    private String buyer;
 

 public Dev(){}


 /**
  * 생성자 주입
  * @param book
  */
 public Dev(MacBook book) {
  super();
  System.out.println("#### constructor Injection ####");
  this.book = book;
 }
 

    /**
     * setter 주입
     * @param book
     */
 public void setBook(MacBook book) {
  System.out.println("#### setter Injection ####");
  this.book = book;
 }
 
 /**
  * parameter 주입
  * @param book
  */
 public void takeMac(MacBook book){
  this.book = book;
 }
 
 public void setBuyer(String buyer) {
  this.buyer = buyer;
 }


 public String getBuyer() {
  return buyer;
 }
 
}


결과
 #### setter Injection ####
setterparktaeha
#### Finish ####

굳...ㅠ.ㅠ...

저작자 표시 비영리 변경 금지
신고

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

[다섯번째] Spring 사내 스터디

Study/Study group 2012.12.03 13:58
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T

참고 URL :

2012/10/23 - [Study/Study group] - [첫번째] Spring 사내 스터디

2012/10/31 - [Study/Study group] - [두번째] Spring 사내 스터디

2012/11/12 - [Study/Study group] - [세번째] Spring 사내 스터디

2012/11/26 - [Study/Study group] - [네번째] Spring 사내 스터디



 



- 스터디 범위
  용수철 1기
  토비 vol 2, 1장

  용수철 2기
  토비 vol1. 1장


Review

1장. IoC 컨테이너와 DI

스프링 애플리케이션은 오브젝트의 생성과 관계설정, 사용, 제거 등의 작업을 애플리케이션 코드 대신
독립된 컨테이나거 담당한다. 이를 컨테이너가 코드 대신 오브젝트에 대한 제어권을 갖고 있다고 해서
IoC라고 부른다. 그래서 스프링 컨테이너를 IoC컨테이너라고도 한다.

Think :

더보기





또한, 스프링에선 IoC를 담당하는 컨테이너를 빈 팩토리 또는 애플리케이션 컨텍스트라고 부르기도 한다.
"BeanFactory와 ApplicationContext는 각각 인터페이스로 정의 되어있다."
그래서 실제로 스프링 컨테이너 또는 IoC컨테이너라고 말하는 것은 바로 이 ApplicationContext 인터페이스를 구현한 클래스의 오브젝트이다.

ex) StaticApplicationContext ac = new StaticApplicationContext();
위의 코드는 IoC 컨테이너가 만들어진 것인가??     

더보기


IoC가 동작하려면?

더보기


스프링의 설정 메타정보는 XML이 아니다.
스프링의 설정 메타정보는 BeanDefinition 인터페이스로 표현되는 순수한 추상 정보이다.
스프링의 메타정보는 특정한 파일 포맷이나 형식에 제한되거나 종속되지 않는다.
대신 XML 이든 소스코드 애노테이션이든 자바코드이든 프로퍼티 파일이든 상관 없이 BeanDefinition으로
정의되는 스프링의 설정 메타정보의 내용을 표현한 것이 있다면 무엇이든 사용 가능 하다.
단, 원본의 포맷과 구조, 자료의 특성에 맞게 읽어와 BeanDefinition 오브젝트로 변환해주는 BeanDefinitionReader 가 있으면 된다. BeanDefinitionReader도 인터페이스이다.^-^good~

[그림1] IoC 컨테이너를 통해 애플리케이션이 만들어지는 방식


일반적으로 설정 메타정보는 XML파일이나 애노테이션 같은 외부 리소스를 전용리더가 읽어서 BeanDefinition 메타정보를 생설 할 수 있다.

위의 그림에서 메타정보 리소스(XML, 애노테이션, 자바코드) 이다. 아래의 그림2를 다시 보도록 하자.

[그림2] 컨테이너가 활용하는 빈 설정 메타정보



IoC 컨테이너 계층구조
 - 부모, 자식(계층 구조)
 - 빈 검색 시 1) 자기자신 2) 부모 애플리케이션의 빈까지 모두 검색
    단, 자식 컨텍스트에게는 요청하지 않음.(검색 X)

[그림3] 스프링 웹애플리케이션의 다양한 구성 방법


역시나 계층구조로 되어있다. 왜 이렇게 계층구조로 만들까?

더보기




Mr. Gong> servlet 2.5
 









저작자 표시 비영리 변경 금지
신고

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

[네번째] Spring 사내 스터디

Study/Study group 2012.11.26 19:00
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T
스터디 인원 대거 합류..!!
1~2장 : 백, 박, 석, 김, 강
6~7장 : 공, 박, 권, 김, 차(결석)

2012/10/23 - [Study/Study group] - [첫번째] Spring 사내 스터디

2012/10/31 - [Study/Study group] - [두번째] Spring 사내 스터디

2012/11/12 - [Study/Study group] - [세번째] Spring 사내 스터디


[스프링 스터디 4번째]

토비 vol 1, 6~7장 (분량 대략 300페이지)

1) AOP - IoC/DI / 서비스추상화와 더불어 스프링의 3대 기반 기술 중 하나 이다.

2) 목 프레임워크 : 그중에서도 Mockito라는 프레임워크는 사용하기도 편리하고, 코드도 직관적이라
                        최근 많은 인기를 얻고 있음.
3) 트랜젝션
    - 핵심기능, 부가기능 : 부가기능과 핵심기능의 분리 => 프록시

4) 프록시 : 클라이언트가 사용하려고 하는 실제 대상인 것처럼 위장해서 클라이언트의 요청을
              받아주는 것을 대리자, 대리인과 같은 역할을 한다고 해서 프록시(proxy)라고 부른다.
최종적으로 요청을 위임받아 처리하는 실제 오브젝트를 타깃(target) 또는 실체(subject) 라고 부른다.

ex) 프록시 생성
Hello proxiedHello = (Hello)Proxy.newProxyInstance(
    getClass().getClassLoader(),
     -> 동적으로 생성되는 다이내믹 프록시 클래스의 로딩에 사용할 클래스 로더

    new Class[] {Hello.class}, <- 구현할 인터페이스
    new UppercaseHandler(new HelloTarget()))); -> 부가기능과 위임코드를 담은 핸들러

토비 1 - 431p
     클라이언트  ------------->        프록시  ------------->       타깃 


"데코레이터 패턴" : 인터페이스를 통해 위임, 프록시를 사용
"프록시 패턴" : 클라이언트에게 타깃에 대한 레퍼런스를 넘겨야하는데, 실제 타깃 오브젝트는 만드는
                 대신 프록시를 넘겨주는 것이다. 프록시의 메소드를 통해 타깃을 사용하려고 시도하면,
                 그때 프록시가 타깃 오브젝트를 생성하고 요청을 위임해주는 식이다.



interface에 선언된 메소드들을 쓰지도 않는 것들은 구현 할 필요가 없다.




"다이내믹 프록시" : 타깃의 인터페이스와 같은 타입으로 만들어진다.
                         + 리플렉션 방식(Java.lang.reflect)
 - 프록시 기능 : 타깃과 같은 메소드를 구현하고 있다가 메소드가 호출되면 타깃 오브젝트로 위임한다.
                 지정된 요청에 대해서는 부가기능을 수행 한다.
 - 리플렉션 : 자바의 코드 자체를 추상화해서 접근하도록 만든 것이다.
    ex) String의 length() 메소드라고 하면
        1)  Method lengthMethod = String.class.getMethod("length");
        2) invoke() : 메소드를 실행시킬 대상 오브젝트와 파라미터 목록을 받아서 메소드를
                         호출한 뒤에 그 결과를 Object  타입으로 돌려준다.




 - 어드바이스(Advice) : 타깃 오브젝트에 적용하는 부가기능을 담은 오브젝트
 - 포인트 컷(PointCut) : 부가기능 적용 대상 메소드 선정 방법

      <1> 프록시는 클라이언트로부터 요청을 받으면 먼저 포인트컷에게 부가기능을 부여할 메소드를
            확인 해달라고 요청한다.
      <2>확인 받은 뒤 어드바이스를 호출 한다.
 -  어드바이저 : 여러개의 어드바이스와 포인터컷이 추가 될 수 있기 때문에 따로 등록 시
                     어떤 어드바이스(부가기능)에 대해 어떤 포인트컷(메소드 선정)을 적용 할지
                     애매해진다.
                     그래서 어드바이스와 포인트컷을 묶은 오브젝트를 어드바이저라고 부른다.
                     어드바이저 = 포인트컷(메소드 선정 알고리즘)+어드바이스(부가기능)



"빈 후처리기" : 자동프록시 생성
 1) DefaultAdvisorAutoProxyCreator 빈 후처리기가 등록 되어있으면
 2) 스프링은 빈 오브젝트를 만들 때마다 후처리기에게 빈을 보낸다.
 3) DefaultAdvisorAutoProxyCreator는 빈으로 등록된 모든 어드바이저 내의 포인트컷을 이용해
     전달 받은 빈이 프록시 적용 대상인지 확인 한다.
 4) 프록시 적용 대상이면 내장된 프록시 생성기에게 현재 빈에 대한 프록시를 만들게 하고, 만들어진
     프록시에 어드바이저를 연결
해준다.
 5) 빈 후처리기는프록시가 생성되면 원래 컨테이너가 전달해준 빈 오브젝트 대신
     프록시 오브젝트를 컨테이너에게 돌려준다.



"확장된 포인트컷" : 사실..한가지가 더 있었음..--;;
포인트컷은 클래스 필터와 메소드 매처 2가지를 돌려주는 메소드를 가지고 있다.
public interface Pointcut{
    ClassFilter getClassFilter();  -> 프록시를 적용할 클래스인지 확인
    MethodMatcher getMethodMatcher(); -> 어드바이스를 적용할 메소드인지 확인
}



"포인트컷 표현식(pointcut expression)"
복잡함, 세밀함 -> class, method 선정 ==> pointcut expression


AOP란? Aspect Oriented Programming(애스팩트 지향 프로그래밍)


위처럼 핵심적인 기능에서 부가적인 기능을 분리해서 애스펙트라는 독특한 모듈로 만들어서 설계하고 개발하는 방법.
AOP는 OOP를 돕는 보조적인 기술이지 OOP를 대체하는 새로운 개념은 아님.

"AspectJ" : 프록시 처럼 간접적인 방법이 아닌 타깃 오브젝트를 뜯어고쳐서 부가기능을
                직접 넣어주는 직접적인 방법
                즉, 컴파일된 타깃의 클래스 파일 자체를 수정하거나 클래스가 JVM에 로딩되는 시점을
                가로채서 바이트코드를 조작하는 방법   

512p~555p 

 - 끝 -

AOP : cross cutting concern
1) 로그
2) 에러처리,
3) 트랜젝션 처리
 - select (read only)
    insert*
    update*
    delete
    (CUD)
정책에 따라 사전에 해줘야 함.
AOP 적용 시 명명규칙이 중요 함. 레벨(Service, Fasade Layer)결정- 최상위 레벨을 확인
서비스 단위는 업무적으로 각기 다르다. 또는 서로 연관이 있을 수 도 있다.

트랜젝션 전파
 - 특정 메소드 제외

Q) 각각의 서비스도 class 프록시로 구분이 가능 할 꺼 같음. - 상위가 있을 경우 한단계 UP
    구분 가능.






저작자 표시 비영리 변경 금지
신고

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

자바카페 KSUG 스프링 스터디

Study/Study group 2012.11.24 12:02
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T



금일 스터디는 전반적으로 전체를 훓는 날 이네요..
아래와 같이 많은 기술들이 있고..앞으로 공부 해야 할 것들이 많네요^^;;


log4j, slf4j(다이렉트로 설정하지 말고 로그 모듈을 설정 DI로), logging

더보기


web service - restful
dbcp
JMS
http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/jms.html

AOP
기사, 종기사(출전 - 빵빠레, 패전 - 슬픔 등)
http://www.javajigi.net/pages/viewpage.action?pageId=280
관점지향 - 횡단관심사
AOP 핵심 관점 : cross cutting concern
다양한 경로로 들어올때 모든로직에다가 체크를 넣고 싶다고 하면 개발자에게 넣으라고 하는게 아니라 시스템적으로 넣고 싶을때
프록시(스프링 방식),                        컴파일 방식(aspectj 방식)
빈등록 시 프록시 빈으로 리턴



트랜젝션 - 선언적, 코드상
ORM - ibatis, mybatis는 아님
http://en.wikipedia.org/wiki/Object-relational_mapping
http://www.javajigi.net/pages/viewpage.action?pageId=6560

마샬링, 언마샬링

JMX : 포트열고 클라이언트 열고 사용하면 된다.(jconsole - 톰캣에서 옵션 설정)

메이븐 레파지토리
http://mvnrepository.com/






저작자 표시 비영리 변경 금지
신고

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

[세번째] Spring 사내 스터디

Study/Study group 2012.11.12 15:17
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T

2012/10/23 - [Study/Study group] - [첫번째] Spring 사내 스터디

2012/10/31 - [Study/Study group] - [두번째] Spring 사내 스터디


3번째 내부 스프링 스터디!!


범위 : 토비의 스프링 3.1 1권 3,4,5 장
역시나 200페이지 분량이다..ㅋㅋ;;



 1) 템플릿과 스프링(link 참조)
http://www.youtube.com/watch?v=hHwbUlWOelk&feature=BFa&list=PL2D6EA0CE629ACE5B  

 2) review Spring 3.1(토비 ch 3, 4, 5장)



Review

3장 - 템플릿
  템플릿 이란?
  변경이 거의 일어나지 않으며 일정한 패턴으로 유지되는 특성을 가진 부분을 자유롭게 변경되는
  성질을 가진 부분으로 부터 독립시켜서 효과적으로 활욜 할 수 있도록 하는 방법이다.

템플릿과 콜백
전략패턴의 기본구조에 익명내부 클래스를 활용한 방식이다. 이러한 방식을 스프링에서는 템플릿/콜백 패턴 이라고 부른다.
전략 패턴의 컨텍스트를 템플릿이라 부르고, 익명 내부 클래스로 만들어지는 오브젝트를 콜백이라고 부른다.

다시 말해
템플릿은 고정된 작업 흐름을 가진 코드를 재사용한다는 의미에서 붙인 이름이다.
콜백은 템플릿 안에서 호출되는 것을 목적으로 만들어진 오브젝트를 말한다.


4장 - 예외
 예외를 처리 할 때 반드시 지켜야 할 핵심 원칙은 한가지이다.
 모든 예외는 적절하게 복구 되든지 아니면 작업을 중단시키고 운영자 또는 개발자에게 분명하게
 통보돼야 한다.

5장 - 서비스 추상화(Portable Service Abstractions)
 성격이 비슷한 여러 종류의 기술을 추상화하고 이를 일관된 방법으로 사용 할 수 있도록 지원

`트랜젝션 서비스 추상화
   여러가지의 DB를 사용한다고 하면 global transaction 방식을 사용 해야 한다.
   자바는 JDBC 외에 이런 글로벌 트랜잭션을 지원하는 트랜잭션 매니저를 지원하기 위한 API인
   JTA(Java Transaction Api)를 제공하고 있다.

요약하면 높은 응집도와 낮은 결합도를 준수 및 DI가 핵심이다!


간단 책 소개..

구글링 하다가..찾게 된 책이다.
기본을 올려줄 수 있는 책으로 보여진다..
서블릿 컨테이너..이녀석은 스프링과 매우 친분이 있는 녀석이기 때문이다.
http://hanb.co.kr/ebook/look.html?isbn=9788979149685

더보기






스프링은 자바로 된 프레임워크입니다. 자바SE로 된 보통 자바 객체(Plain Old Java Object)를 자바EE에
의존적이지 않게 연결해 주는 역할을 합니다. 이 때 사용되는 패턴이 IoC(Inversion of Control) 또는 DI(Dependency Injection) 라 불리는데, 스프링 프레임워크를 사용하면서 이해가 올 것입니다.

스프링 프레임워크는 JavaEE에 비해서 경량입니다. 하지만 20여가지의 모듈로 구성되어 있고, 모듈간의
그룹은 다음 그림과 같습니다.


출처 : spring-framework-3.1.2.RELEASE/docs/spring-framework-reference/html/overview.html
코어 컨테이너               : Core, Beans, Context, Expression Language 네 가지로 구성되어 있습니다.
데이터 접근/통합           : JDBC, ORM, OXM, JMS, 트랜잭션 모듈로 구성되어 있습니다.
웹                                : 웹, 웹-서블릿, 웹-스트러츠, 웹-포틀릿으로 구성되어 있습니다.
AOP와 인스트루먼테이션: AspectJ로 코드의 반복적인 중복을 일원화했고 인스트루먼테이션으로
                                    클래스로딩을 다룹니다.
테스트                          : JUnit과 TestNG



초 간단 스프링 따라잡기(MVC)
http://www.okjsp.pe.kr/seq/205560

해설
http://www.okjsp.pe.kr/seq/205603
key point :
 <context:component-scan base-package="net.okjsp.spring" />




시장 분석 업체인 레드몽크가 최근 프로그래밍 언어 인기 순위를 발표 했음!!

더보기


 


저작자 표시 비영리 변경 금지
신고

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

[KSUG+Java cafe] 스프링 스터디

Study/Study group 2012.11.10 12:14
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T


스터디를 위해 컴퓨터를 구입! ㅋㅋ 드디어...이렇게 간단하게나마 적을 수 있게 되었다^-^good~

[1] spring mvc 기본 내용 
    - 소스 변천사(servlet filter 등)
[2] 웹로직
1. 쓰레드 풀링 등 뒷단
2. 자바옵션
    - 메모리, 페이징 등 처리
3. Minor GC
   Eden     SS1     SS2   Old
---->    ---->   ------>  -----> 오브젝트 생존 방향

4.Full GC(Major GC)
   old에 유지가 긴 오브젝트들이 풀로 쌓여있을 때

WAS 2개의 컨테이너
  J2E ,  WEB

[3] Java Web 기술
   HTTP , HTML(정적)
   자바 서블릿 - 포트 리스너(80) .java <--tomcat 등에서 처리(WAS)
   
        tomcat                      /   jboss, glassFish 
    servlet container            /    servlet, ejb spec

Dispatcher  ContextListener

스프링은 서블릿 컨테이너 기반!!

예전에는 서블릿을 여러개 만들어줘야 했지만 이제는 Dispatcher Servlet으로 컨트롤 해준다.

이 두개의 내용을 참고하면 좋을 것 같다.
2012/11/09 - [OpenSource/Spring MVC] - Spring MVC의 주요 구성요소
2012/11/09 - [OpenSource/Spring MVC] - 웹??? web.xml은 알고 하자!!

마지막으로 eclipse 단축기는 ctrl+3  , alt+ctrl+l 은 정말 좋은 것 같다.^-^good~

- end -


저작자 표시 비영리 변경 금지
신고

'Study > Study group' 카테고리의 다른 글

자바카페 KSUG 스프링 스터디  (0) 2012.11.24
[세번째] Spring 사내 스터디  (0) 2012.11.12
[KSUG+Java cafe] 스프링 스터디  (0) 2012.11.10
[두번째] Spring 사내 스터디  (0) 2012.10.31
[첫번째] Spring 사내 스터디  (2) 2012.10.23
Google Developers Korea  (0) 2012.08.24

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

[두번째] Spring 사내 스터디

Study/Study group 2012.10.31 17:21
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T


[용수철 스터디 그룹 화이팅~~~!!] 

사진 : 최상무님..ㅋㅋ 참여 감사합니다.(--  (__ * 꾸벅~

드디어..2번째 스프링 내부 스터디!!
범위 : 토비의 스프링 3.1 1장~2장 
         지난 주 8장~9장에 이어 200page의 분량이다.


개요
 1) 간단 스프링 예제 설명 (link 참조)
     http://www.youtube.com/user/whiteship2000?feature=results_main

 2) review Spring 3.1(토비 ch 1, 2장)

 3) 간단한 IoC/DI 구현 with JUNIT + Spring 3.1 Api




Ace-T

Review
  1. 처음으로 Spring 환경 셋팅을 하다. (STS, MySQL, lib 추가)
      스프링2.5를 2년간 써왔지만 이미 셋팅되어진 곳에서만 작업을 하였다.
- 참고 URL
2012/10/27 - [OpenSource/Spring] - [Spring 환경 구축] step 01 - 스프링 STS 를 깔아보자^-^
2012/10/28 - [OpenSource/Spring] - [Spring 환경 구축] step 02 - MySQL을 깔아보자~~~(Windows)
2012/10/28 - [OpenSource/Spring] - [오류] Exception in thread "main" java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
2012/10/28 - [DataBase] - MySQL 기본 문법(데이터베이스 보기, 사용하기)

2. 요 약
   1) 리펙토링 - 추천 북 : 차북? ㅋㅋ => 리펙토링, 마틴파울러, 켄트 벡 공저)
   2) 상속을 통한 확장
      - abstract와 interface의 차이점은? Mr. Kim)
   3) 패턴
      - 템플릿 메소드 패턴
      - 팩토리 메소드 패턴
      - 싱글톤 패턴
      - 전략 패턴
  4) 객체지향 설계 원칙(SOLID)
      : 높은 응집도와 낮은 결합도(변경 X, 확장 O)

  5) IoC/DI
       - 빈, 빈팩토리, 애플리케이션 컨텍스트(빈의 생성과 관계설정)
  6) 싱글톤 레지스트리
  
  7) DaoFactory -> XML으로 변환

  8) JUNIT



Spring Api
http://static.springsource.org/spring/docs/3.1.x/javadoc-api/

저작자 표시 비영리 변경 금지
신고

'Study > Study group' 카테고리의 다른 글

[세번째] Spring 사내 스터디  (0) 2012.11.12
[KSUG+Java cafe] 스프링 스터디  (0) 2012.11.10
[두번째] Spring 사내 스터디  (0) 2012.10.31
[첫번째] Spring 사내 스터디  (2) 2012.10.23
Google Developers Korea  (0) 2012.08.24
스터디 모임 소개^-^  (0) 2012.08.21

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

[첫번째] Spring 사내 스터디

Study/Study group 2012.10.23 00:45
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T
2012.10.23(수) 첫 스프링 스터디!!

자! 스프링..처음 공부한다고 한다면..무엇을 해야하나?? 생각해보자! 단. 3초간..

음.....
움......
um......




고민을 끝냈다면! 실천해보자^-^ Right Now~!!

1. 스프링을 테스트 할 수 있는 환경을 만들자!^-^good~
2. 레퍼런스와 Api를 적극 참조 하자!(현재 레퍼런스 3.1을 외부 스터디(자바카페+KSUG)를 하고 있으니!
   스터디 범위에 맞게 공부해 나가자^-^/
3. 적극 테스트를 실전 환경에서 해보자!





자~~이제 신나고 재밌는 Spring이라는 녀석을 만나러 가보자^-^~~oh yeh~~^-^

제 1장. 스프링이란 무엇인가?
   간략히 말해 자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크

- 스프링을 MVC 프레임워크 또는 JDBC/ORM 지원 프레임워크라고 생각하는 것은 스프링이 다루는
  일부 영역만 봤기 때문이다.(이런!!!ㅠㅠ)

- 또, 스프링을 IoC/DI 프레임워크나 AOP 툴이라고 보는 이유는 스프링이 제공하는 핵심 기술에만
   주목 했기 때문이다.(OMG~~)

DI의 기본 아이디어는 유연하게 확장 가능한 오브젝트를 만드어두고 그 관계는 외부에서 다이나믹하게 설정 해준다는 것이다.


스프링 애플리케이션은 POJO를 이용해서 만든 애플리케이션 코드와, POJO가 어떻게 관계를 맺고 동작하는지를 정의 해놓은 설계정보로 구분 된다.

스프링의 주요기술인 IoC/DI, AOP와 PSA(Portable Service Abstraction는 애플리케이션을 POJO로 개발 할 수 있게 해주는 가능 기술이라고 불린다.

여기에서..POJO 포조 하는데 도데체 포조란 무엇이라는 말인가?????
막 퍼죠? (퍽..죄송합니다..@.,@;;)

POJO란 무엇인가??
POJO는 Plain Old Java Object이다!!
마틴 파울러가 2000년에 컨퍼런스 발표를 준비하다가 만들어낸 용어라고 한다.
단순한 자바오브젝트를 사용한다는 것이 아니라, POJO방식의 기술을 사용합니다~라고
하는 그럴싸하다.

POJO의 조건
평범하게 자바오브젝트라고 할 수 있지만
적어도 다은 세가지를 충족 해야 POJO라고 불릴 수 있다.
1. 특정 규약에 종속되지 않는다.
   : 규약 따위에 종속되지 않아야 하고, 객체 지향 설계의 자유로운 적용이 가능한 오브젝트여야만
     POJO라고 불릴 수 있다.
2. 특정 환경에 종속되지 않는다.
  : 환경에 독립적이여야 한다.

스프링에는 POJO 프로그래밍을 손쉽게 할 수 있도록 지원하는 세가지 가능 기술을 제공한다.
(IoC/DI, AOP, PSA)

참고 문헌 : 토비의 스프링3.1 8장 





저작자 표시 비영리 변경 금지
신고

'Study > Study group' 카테고리의 다른 글

[KSUG+Java cafe] 스프링 스터디  (0) 2012.11.10
[두번째] Spring 사내 스터디  (0) 2012.10.31
[첫번째] Spring 사내 스터디  (2) 2012.10.23
Google Developers Korea  (0) 2012.08.24
스터디 모임 소개^-^  (0) 2012.08.21
자바 마지막^^  (0) 2012.03.22

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

  • er1ca 2012.10.26 15:54 신고 답글 | 수정/삭제 | ADDR

    으헝 !!!!!!!!!!!!!!=ㅁ=............ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

Google Developers Korea

Study/Study group 2012.08.24 13:51
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T
구글에서 하는 Google HackFair 참여 프로젝트 내용!
자세한 내용은 아래 URL을 참조하세요^-^good~
아쉽게..회사+스터디 때문에 못 할 듯 하네요...ㄲㄲ

http://googledevkr.blogspot.kr/2012/08/google-hackfair.html

저작자 표시 비영리 변경 금지
신고

'Study > Study group' 카테고리의 다른 글

[KSUG+Java cafe] 스프링 스터디  (0) 2012.11.10
[두번째] Spring 사내 스터디  (0) 2012.10.31
[첫번째] Spring 사내 스터디  (2) 2012.10.23
Google Developers Korea  (0) 2012.08.24
스터디 모임 소개^-^  (0) 2012.08.21
자바 마지막^^  (0) 2012.03.22

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

스터디 모임 소개^-^

Study/Study group 2012.08.21 00:51
[Good Comment!!, Good Discussion!!, Good Contens!!]
[ If you think that is useful, please click the finger on the bottom~^-^good~ ]
by ace-T

ㅎㅎㅎ 드디어 기다리고 기다렸던 스터디!! 개설!!

KSUG 그룹에 스터디를 하고 싶어서 가입을 했는데^-^good~
스터디가 여태 없다고 자바카페(조효은 강사님이 계신ㅎㅎ)과 연합하여 스터디를 한다고 한다.
한경닷컴하고는 인연이 있어서 더욱 더 자바카페와 한다고 하니 조으다^-^good~

url ) http://onoffmix.com/event/8686

간단 내용)



많은 참여 부탁해요~~선착순이니~~빠르게+ㅁ+ speeeeed~~~~

저작자 표시 비영리 변경 금지
신고

'Study > Study group' 카테고리의 다른 글

[KSUG+Java cafe] 스프링 스터디  (0) 2012.11.10
[두번째] Spring 사내 스터디  (0) 2012.10.31
[첫번째] Spring 사내 스터디  (2) 2012.10.23
Google Developers Korea  (0) 2012.08.24
스터디 모임 소개^-^  (0) 2012.08.21
자바 마지막^^  (0) 2012.03.22

acet 박태하가 추천하는 readtrend 추천글!

설정

트랙백

댓글

:::: facebook을 이용하시는 분들은 로그인 후 아래에 코멘트를 남겨주세요 ::::

티스토리 툴바