Index

 - Primary키는 자동으로 인덱스로 생성된다.

 - 나머지 index는 생성해야 하는데,
     index는  Unique해도 되고 Unique하지 않아도 된다.

 

 

오라클 메모리 :

   PGA - 정령공간, 세션정보, 커서정보, 변수저장

   SGA - 공유풀, 데이터버퍼케쉬, ReDo Log버퍼

     -SGA조절 파라미터  : 10g부터는 자동조절 기능 제공.
            shared_pool_size        

db_cache_size
 log_buffer

 

Join ==========================Join===============

RDBMS에 일반적으로 많이 사용하는 NL(Nested Loop)조인 외에,

오라클에는 Hash Join이 존재한다.

 

((조인의 종류))

1. Sort Merge 조인  (양쪽을 sort해서 join한다..)

   - 잘 안쓰는 것 같은데.. 잘 못봤음

     (주로 Ordered 테이블에서 유리하지 않을까 예상 됨)

 

2. NL(Nested Loop)조인

  - 일반적인 조인.

   이너조인이 일반적이며, 아우터조인도 있음

 

3. 오라클 Hash Join

- (다른 RDMBS에도 있는지 좀 찾아봐야 하지만..)
  A. 작은 테이블(Build Input)을 읽어 Hash Area에 해시 테이블 생성한다.
    (해시 함수에서 리턴 받은 버킷 주소로 찾아가 해시 체인에 엔트리를 연결)
  B. 큰테이블 집합(Probe Input)을 읽어 해시 테이블을 탐색하면서 조인하는 방식이다.
    (해시 함수에서 리턴 받은 버킷 주소로 찾아가 해시 체인을 스캔하면서 데이터를 찾는다)

 

   기준테이블(작은 테이블:build Input)이 충분히 작은 경우에 Hash Join이 적합하다.


 

Posted by yongary
,

브라우저가 html5 video tag에서 mp4동영상을 재생할 때,

byte-range request를 이용하게 된다.


MPGE이 기본적으로 188-byte단위로 패킷을 구성하기 때문에 이러한 방식이 가능하다.


animated-GIF 의 경우에는 byte-range 로 스트리밍 받으면서

재생이 될까?  이 부분에 답은 아직 못 찾았지만


android 브라우저에서 충분히 빠른 것으로 봐서,

gif도 byte-range 전송이 되는 것으로 보인다.


==> 이 부분 확인을 위해서 tcpdump로 잡아보니,

1448 byte 짜리 패킷이 무수히 많이 서버->Client로 전송된다.


====tcpdump ==


14:42:32.699931 IP 192.168.0.67.http-alt > 192.168.0.101.42947: Flags [.], seq 7422086:7423534, ack 1030, win 244, options [nop,nop,TS val 5415908 ecr 6751675], length 1448

14:42:32.699940 IP 192.168.0.67.http-alt > 192.168.0.101.42947: Flags [.], seq 7423534:7424982, ack 1030, win 244, options [nop,nop,TS val 5415908 ecr 6751675], length 1448

14:42:32.699946 IP 192.168.0.67.http-alt > 192.168.0.101.42947: Flags [.], seq 7424982:7426430, ack 1030, win 244, options [nop,nop,TS val 5415908 ecr 6751675], length 1448



Posted by yongary
,

chrome - mobile mode

IT 2015. 9. 10. 08:44

In chrome - F12 is Debug mode



On left-top corner,  find and click 

toggle device mode icon off : toggle Device mode 



then you can resize your screen .  (default is small phone)

Initial start for device mode

Posted by yongary
,

android for Work

Mobile 2015. 9. 1. 18:53

 

android 4.0이후부터 지원되는 Android for Work는

개인모드와 기업모드 데이타를 완전히 분리하여 앱도 설치하고 모드가 관리된다.

(심지어는 앱스토어도 틀리다)

 

단 통화와 SMS는 개인모드의 앱을 이용하게 된다.

 

 

(Ref-Site:  내용)

Android for Work란 무엇인가요?

Android for Work는 기업용 모빌리티 운영(EMM) 플랫폼으로, 회사에서 이 플랫품을 통해 직원에게 안전하고 생산적이며 풍부한 모바일 환경을 제공할 수 있습니다. Android for Work에 솔루션을 구축하면 다음과 같은 이점이 있습니다.

  • 보안 및 데이터 분리—Android for Work가 배포된 기기는 하드웨어를 기반으로 하는 암호화 및 관리자 관리 정책을 통해 멀웨어를 차단하여 비즈니스 데이터를 안전하게 보호하고 개인정보를 비공개로 유지할 수 있습니다. 
  • 직원 소유 기기 및 회사용으로 프로비저닝된 기기 모두 지원—Android for Work 사용자는 하나의 Android 기기를 업무용 및 개인용으로 안전하게 사용할 수 있으며, 회사는 소유한 기기를 프로비저닝하거나 직원 소유 기기에 업무용 프로필을 구성할 수 있습니다. 
  • 원격 관리—관리자는 원격으로 모든 업무 관련 정책, 애플리케이션, 데이터를 제어하고 기기 소유자의 개인 데이터는 그대로 둔 채 기기를 초기화할 수 있습니다. 
  • 원활한 사용자 환경—Android for Work는 모든 기기에 일관된 환경을 제공하여 직관적이고 손쉬운 방법으로 업무용 앱과 개인용 앱 간에 전환할 수 있습니다. 비즈니스 앱은 런처 및 최근 앱 목록에 개인용 앱과 함께 표시되지만 비즈니스 앱 아이콘에 배지가 있기 때문에 손쉽게 구분이 가능합니다. 
  • 간단한 애플리케이션 배포—관리자는 Google Play에서 비즈니스 앱을 찾아 액세스를 허용하고 Android for Work 기기에 배포할 수 있습니다. 또한 Google Play를 사용하여 내부 애플리케이션 및 리소스를 배포할 수도 있습니다. Play for Work 도움말 센터를 참조하세요.
  • Divide Productivity Suite—Google Apps for Work를 사용하지 않는 사용자는 Android for Work용으로 특별히 설계된 안전한 생산성 앱 제품군을 대신 사용할 수 있습니다. 이 제품군에는 비즈니스 이메일, 캘린더, 주소록, 할일 목록, 다운로드 관리가 포함되어 있습니다.

Google은 Google Apps for Work 생산성 제품군에서 즉시 사용 가능한 Android for Work 솔루션을 제공합니다. 이 솔루션을 사용하면 Google Apps for Work 관리자가 관리 콘솔을 통해 EMM 기능에 액세스할 수 있으므로 현재의 기기 관리 기능을 확장할 수 있습니다.

또한 Google은 타사 EMM 공급자가 자체 Android for Work 솔루션을 구축하는 데 사용할 수 있는 인프라를 제공합니다. EMM 공급자는 휴대기기 관리(MDM), 모바일 애플리케이션 관리, 모바일 비용 관리 등의 고급 IT 솔루션을 제공합니다. Google Apps for Work를 사용하지 않는 회사는 Android for Work 배포 관리 도구를 제공하는 타사 EMM 공급자를 선택해야 합니다.

 

Posted by yongary
,

HTML5 Video tag + CSS

FRONT-END 2015. 8. 31. 09:23

<html>

<head>
<meta charset="utf-8" />
</head>

<head>

<script type="text/javascript">  //iphone&LGphone do not load automatically.
window.onload = function(){
  document.getElementById('video').load();
}
</script>

<style type="text/css">
#video{
  width : auto;
  margin : 0% 3%;  //상하 0%, 좌우 3%
  min-width: 94%;
  max-height: 100%;
  border : 3px solid white;
  border-radius : 10px;
}

#texts{
  font-size : 36px;
  margin : 5%;
}
</style>

</head>

 

<body>
<br/>

<video id="video" controls>   // Ref-Site:
  <source src="mpp_vod.mp4" type="video/mp4">
  Browser does not support HTML5 mp4.
</video>


<br/>
<br/>

<p id="texts">
Test용 동영상입니다.<br/><br/>
</p>

</body>
</html>

Posted by yongary
,

10 mistakes + Alpha

java core 2015. 8. 28. 15:27

Ref-Site:

 

1. 

array를 ArrayList로 전환시:

 

ArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(arr));

 

(설명)

Collection인 java.util.ArrayList 는

java.util.Arrays.ArrayList와 다름.List list = Arrays.asList(anArray)  하면  static class인

   Arrays.ArrayList가 return됨: 쓰지 말것

 

 

2. array안에 value존재하는지 check시

Arrays.asList(arr).contains(targetValue);

 

3. List에서 element하나 삭제시.

Size()가 변하는 loop안이라면 Iterator를 사용하여 삭제하는 게 안전.

아니면 뒤에서부터 앞으로 Loop돌면서 삭제. (테스트 필요)

 

Iterator<String> iter = list.iterator();
while (iter.hasNext()) {  
     String s = iter.next(); //꼭 next먼저 호출.
     if (s.equals("a"))  iter.remove()//원래 remove는 가장최근 return()한 걸 삭제하는 이상한 함수임.
}

 

ListIterator의 경우에는 iter.set() 함수도 매우 쓸만하다. //이 역시, 가장 장최근 return()한 걸 치환.

 

4. 보통은 HashMap을 쓰자.  HashTable도 동일하지만 이건 synchronized가 걸려있어 조금 늦음.

Ref-Site: top 10 Q about Map

 

5. Default 생성자는 생성자가 없을경우에만 자동으로 compiler가 넣어 줌.

   => default생성자 없는 class를 상속받을 경우 super()가 필요한데 없으므로 컴파일 에러가 남.

 

6. Sort   Ref-Site:

   => Collections.sort( list, Comparator  ),  Arrays.sort( array, Comparator  ) 사용

 

        // 역순으로 정렬하기 위한 Comparator 객체 생성
        Comparator<String> reverseComparator = new Comparator<String>() {
            @Override
            public int compare(String s1, String s2) {
                return s2.compareTo(s1);
            }
        };
        
        /**참고 */
        따라서, Comparator 클래스를 구현할 때에는 compare() 메서드를 반드시 구현해야 합니다. compareTo() 메서드는 Comparable 인터페이스에서 정의되어 있는 메서드로, 객체를 자신과 비교하여 정렬 순서를 결정하는 메서드입니다. Comparable 인터페이스를 구현하면서 compareTo() 메서드를 구현해야 하며, Comparator 클래스를 구현할 때에는 compare() 메서드를 구현해야 합니다.

 

 

 

   => Set이나 Map의 경우에는 TreeSet, TreeMap 생성 후 add하면 자동 정렬 : complexity of O(logN)

REF-Site:

 - 필요시: 생성시에 Comparator 공급.

 - Sync필요시:  SortedMap m = Collections.synchronizedSortedMap(new TreeMap(...));

 

 

 

 

Posted by yongary
,

CentOS, jdk+tomcat 설치

Linux 2015. 8. 25. 13:36

 

 

1) JDK설치  Ref-Site

root로 로그인해서

#rpm -ivh jdk1.7_xx_xx.rpm  혹은

#rpm -ivh java-1.6.0-openjdk-1.6.0.0-1.45.1.11.1.el6.x86_64   (openJDK가 더 안전)

 

 

2) tomcat 설치  Ref-Site

 

오타: /lib/jsp-api.jar

Posted by yongary
,

JPA방식

Spring 2015. 8. 19. 23:35

REF-SITE 

 

Entity 어노테이션이 RDB테이블이 된다.


@Entity
public class Forum {
    @Id private Long id;
    @Column private String name;
    @Column private String description;
    @Column private Date createdAt;
 
// Omit Getters/Setters....
}


Posted by yongary
,

Frontend hacking

IT 2015. 8. 12. 23:56

SQL Injection

XSS (Cross Site Scripting) - javascirpt를 입력.  


==> 해결책: escapeHtml, escapeScirpt 등을 사용하거나, MVC framework을 사용. angular.js도 어느정도 막을 수 있을 듯.



그외,  

Command Injection

XXE(XML External Entity) 

등의 해킹법도 있음.

Posted by yongary
,

Collections

java core 2015. 8. 12. 17:53

(Sometiems ArrayList is better when no synchronize, Sometimes Vector is better because of Size doubling )

 

ArrayList : Resizable Array - fast because of index.  Add/Delete is Slow for data Copy. ==> 50% increase its array size

Vector : Similar to ArryList..  a little heavy because of synchronize processing. ==> doubles its array size

 

LinkedList: Fast for ADD/Delete.  But No Index so sequential search is slow.

 

HashSet, SortedSet,

HashMap

DelayQueue,  - - - |> BlockingQueue

Stack

 

several I/F like:

  Queue, - 보통  new LinkedList<T>();

  Deque, - 상동.    

  BlockingQueue : (waiting in some cases)

put은 queue가 꽉 차 있을 경우, take

는 queue가 비어있을 경우가 블로킹 조건이다. 

  TransferQueue

 

 

<class> 

  ConcurrentXX  Collections : thread-Safe

-ConcurrentHashMap : synchronize detail이 HashTable과 약간 다름.

   

  - SynchronousQueue: 초기 size가 0이고.. 다른Thread에서 빼려고 할때만 삽입이 가능한 놈이므로 peek도 안됨..

      

 

TreeMap -  red-black Tree 기반의 sorted NavigableMap

 

TreeSet   -  TreeMap기반.

 

PriorityQueue - Heap자료구조 기반..

PriorityQueue 클래스는 기본적으로 작은 값이 우선순위가 높은 것으로 취급합니다. 따라서, 1에서 100까지의 숫자를 PriorityQueue에 추가하면, 1이 가장 높은 우선순위를 갖게 되고, 100이 가장 낮은 우선순위를 갖게 됩니다. 따라서 poll() 메서드를 호출하면, 가장 높은 우선순위를 갖는 1이 먼저 반환됩니다.  => 체육복 코딩테스트에 사용 됨.

 

 

Posted by yongary
,