'All Category'에 해당되는 글 502건

  1. 2016.05.28 XML XSD와 DTD와 차이.
  2. 2016.05.11 List 1
  3. 2016.04.22 (싱글턴) Object
  4. 2016.04.22 Nil, Nothing, Null의 차이 + Hierarchy 1
  5. 2016.04.22 함수 정의 def 예제
  6. 2016.03.16 scala 실행
  7. 2016.03.16 object,class,trait 접근성.
  8. 2016.03.15 scala Collections
  9. 2016.03.07 System.in 및 File IO
  10. 2016.03.02 DB with anorm
  11. 2016.02.26 Anonymous class 1
  12. 2016.02.24 some java tips. Array, LinkedList 1
  13. 2016.02.23 Java memory 사용량.
  14. 2016.02.14 My Simple Json Parser (java)
  15. 2016.02.02 Bucket Sort (java)
  16. 2016.02.01 Quck Sort (using Java Generic)
  17. 2016.02.01 Scala OO Example
  18. 2016.01.31 Quick Sort (java)
  19. 2016.01.27 버킷 정렬(bin sort)
  20. 2016.01.20 GPL vs LGPL
  21. 2016.01.20 네트워크 가상화 vs NFV vs SDN
  22. 2016.01.18 구글 STT
  23. 2016.01.15 Docker
  24. 2016.01.14 Android M, Doze mode
  25. 2016.01.13 AWS EBS
  26. 2016.01.13 기업 communication
  27. 2016.01.13 slack
  28. 2016.01.06 AWS 네트워킹 +a
  29. 2016.01.06 WebRTC 1
  30. 2015.12.30 spring DM + OSGi

XML XSD와 DTD와 차이.

IT 2016. 5. 28. 10:15

참고사이트: http://www.scitech.co.kr/upload/book_image/s_017/Xml04.pdf 


<DTD>


 <!DOCTYPE Memo [

    <!ELEMENT Memo (PInfo, MInfo)>

    <!ELEMENT PInfo (from, to)>

    <!ELEMENT MInfo (date, main)>

    <!ELEMENT form (#PCDATA)>

    <!ELEMENT to (#PCDATA)>

    <!ELEMENT date (#PCDATA)>

    <!ELEMENT main (#PCDATA)>

]>



     DTD를 이용한 XML:  REF사이트



<XML XSD> : XML Schema Definition.


<?xml version="1.0" encoding="EUC-KR"?>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"

targetNamespace="http://www.lisia.net"

xmlns="http://www.lisia.net"

elementFormDefault="qualified">


<xsd:element name="Memo">

 <xsd:complexType>  

  <xsd:sequence>

    <xsd:element name="PInfo">

    <xsd:complexType>

     <xsd:sequence>

       <xsd:element name="from type="xsd:string"/>

       <xsd:element name="to" type="xsd:string"/>

   </xsd:sequence>




==> XSD 를 이용한  XML   

 

<?xml version="1.0" encoding="EUC-KR"?>

<Memo xmlns="http://www.lisia.net" 

              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

              xsi:schemaLocation="http://www.lisia.net ex4_3.xsd"> 

<PInfo>

     <from>김광수</from>

     <to>박수란</to>

</PInfo>

   

Posted by yongary
,

List

scala 2016. 5. 11. 09:07

특성

1. immutable    (Array는 mutable)

2. recursive 지원 (Arrary는 미지원)

3. covariant  -   if S is subtype of T이면   List[S]도 List[T]의 subtype.

     =>  이로 인해, List() (List[Nothing])  이 List[S나 T]의 subtype 이 된다.

 

head와 tail

  - head는 첫 아이템이고 tail은 나머지 모든 아이템.

 

List 생성

 $ val abc: List[String] = List("a","b","c")

 $ val fruit = "ora" :: "pea" :: "apples" :: Nil     (이 경우에는 Nil이 꼭 필요)

 

패턴지정 (위에서 fruit가 지정되어 있는 경우)

 $ val List(a,b,c) = fruit     이런형태로 지정해서 a,b,c 를 자동 입력도 가능 (a="ora"가 됨)

 

:: (cons 연산자)

 - scala내의 class로도 존재하고, List내의 method로도 존재.

   (class로 존재하기 때문에  x :: xs 가 ::(x,xs) 로 취급됨.

 

 

 

 

 

Posted by yongary
,

(싱글턴) Object

scala 2016. 4. 22. 18:29

scala 싱글턴 Object  (즉, 키워드 object)

는 2가지 용도로 쓰인다.




1.  Companion Object

- scala class에는 static 함수를 포함할 수 없기 때문에, class 와 동일한 Object 이름을 이용해서

static 함수를 모아 놓는다. 


class A(msg:String){

   def greet() = println(msg)

}


object A{

  def trim(s:String) = s..blabla

}



2. stand-alone Object.    

 - 이건 제일 자주보는 main을 포함하기 위한 용도이다.

object myApp {

  def main( args: Array[String]) {

     

  }

}


Posted by yongary
,

1. Nil은  List 가   비어있을 때.를 Nil이라고 한다.

$ val a=List()

$ a==Nil      ==>    true 임.



2. Nothing은 최하위 class 이다.  

  아래 예제에서 else 경우에 Nothing이 리턴된다. (Int 의 Subtype이므로 리턴 가능.) 


  def divide(x:Int, y:Int) :Int =  if (y!=0) x/y  else error("hi Error")

   


    =>  이경우에 Nothing이...   인터프리터에서 돌려보니 deprecation 된 거 같기도 한데.. (추가 확인 필요) 



3. Null은 기존 java Null 하고 비슷하니 개념은 잠시 잊어도 되겠다.



<Hierarchy>

java.lang.Object 에 해당하는 건  scala.AnyRef 이다.



Scala에선 Any가 최상위 클래스 이고..

data Type 들은 왼쪽 AnyVal 트리를 타게 되므로..

아래 계층도와 같다.


            Any

          /     |    

AnyVal   AnyRef

      |         |

Type들    AnyObject

      |         |

      |       Null 

      |        /

     Nothing



Posted by yongary
,

함수 정의 def 예제

scala 2016. 4. 22. 17:40

 ($: scala line interpreter 라고 치고.....)


기본 def:

$def h(x:String):Type = { println(x)}


1. 한 줄 일때는 curly brace 생략 가능

$def  h() = println("hi")

$def  h = println("hi")    (이것도 동일 동작.)


  => 이 때 아무동작 안하는 듯한 return type은 Unit이라고 부름 (java 의 void 와 비슷)


2. retrurn Type은 보통 안 붙여도 자동추론 하지만. recursive일 때는 꼭 필요.




3. def this     :    추가 생성자용도이다.   (overloaded constructor or Auxilary constructor 라고 부른다) 

   primary 생성자는 자동생성되므로..아래 예제처럼 추가 생성자를 생성할때  this함수와 함께 사용할 수 있다.

   

 class Test( msg:String, count:Int) {


    def this (msg:String ) = this (msg,1)


 }    


Posted by yongary
,

scala 실행

scala 2016. 3. 16. 09:33

  hello.scala 내용:  println(" Hello world")


1. hello.scala와 같은 script 작성 후  


$ scala hello.scala 로 실행 .



2. class나 object .scala작성후


$scalac co.scala

$scala co   

하면 되는데


scalac 보다 빠른 fsc (fast scala compiler)가 존재한다.

차이점은 fsc는 항상 메모리에 띄워 놓고, scalac은 JVM을 그 때 그때 띄우게 되는데..

따라서 fsc를 죽이고 싶다면 

$ fsc co.scala

$ scala co 

$ fsc - shutdown  으로 죽이면 된다.

Posted by yongary
,

class

- java의 class와 동일하다고 보면 되나, primary 생성자는 없다.

- primary 생성자는 class Dog(legs:Int, name:String){ } 로 정의에서 끝난다.

=> legs,name은 val로 자동생성된다.

- primary생성자의 body는 class 안에 아무데나 쓰면 된다.

- overload 생성자는 def this(legs:Int)와 같은식으로 명시하면 된다.


object

- companion object와 stand_alone object 가 존재한다.

- companion object는 java의 static함수를 모아놓은 것이라고 생각하면 된다.
  동일한 이름의 class가 존재한다.

- stand alone object는 독립적으로 존재하는데 보통
  def main(args:Array[String]) {  } 을 포함하는 용도로 사용된다. 


trait

- java의 interface와 유사하다고 보면되나, implements 키워드 대신 항상 extends키워드를 쓴다.

- method를 구현할 수 있다. (java Interface도 원래는 abstract함수만 되나, 1.8부터 body구현 지원)

- 인스턴스 생성시에 with 키워드로 바로 적용이 가능하다. (복잡하겠군요.. 인스턴스마다 다른 특성을 지니겠네요)


- extends Trait  해서 함수 오버라이드 시에..  def 앞에 override 키워드 꼭 필요.




class 인스턴스의 접근성

- class Dog{ var sum=0 }  일 경우 val a = new Dog 이 안됨.  단 var a일 경우.. a.sum+=1 은 됨.  

- class Dog{ private sum=0} 일 경우 val a = new Dog이 됨. s.sum +=1 이 안됨.

  

def의 접근성. =이 type을 의미함.

scala> def h = {"hello"}    h는 hello String 리턴.

scala> def g {"hello"}    g는 리턴없음. 즉 Unit리턴.

scala> def f:Unit = "hello"    g와 동일. 

Posted by yongary
,

scala Collections

scala 2016. 3. 15. 17:16

Array: mutable이고  java와 달리, (0),(1)로 마치 함수호출 하듯이 element get함.


List : immutable이고 동일한 type을 보관

tuple: immutable이고 서로 다른 type의 데이타를 저장할 수 있다. 


HashSet, HashMapt: mutable   (Set,Map은 trait임)

예) val s = new HashSet[String] 

    s += "AA"

예) val m = new HashMap[Int, String]

    m += (1 -> "Go to Hell") 


<immutable Set/Map> - factory method방식으로 이용가능.

    예) val s = Set("A", "BB", "CC")            : compoiler transfers as Set.apply()

   예) val s = Map(1 -> "AA", 2->"BB")       : compoiler transfers as Map.apply()




요약하면 immutable List,Tuple,  Set,Map이 존재한다.



Posted by yongary
,

System.in 및 File IO

scala 2016. 3. 7. 11:13

1. io.Source.stdin 이용    REF-SITE

   for (ln <- io.Source.stdin.getLines) println(ln)  

   (참고: break나 return이 잘 안되서 study 중 )


  1.5 위에서 stdin = fromInputStream(System.in)으로 def(ine)되어 있다. 따라서 아래처럼 변형도 가능

    val input = Source.fromInputStream(System.in);

   val lines = input.getLines.collect


2. System.in 에서 읽기

=> readLine()함수가 system.in에서 바로 라인을 읽는다.

끝나면 null을 리턴하므로 체크 필요.

object SysteminTest {
  def main(args: Array[String]) {

var line = true
do {
var str = readLine() //depricated..
if (str!=null) println(str)

else line=false //need test..
} while ( line )

} }



2. File에서 읽기

Line을 읽어서 String으로 만드는데,  empty Line을 공백" " 으로 처리하는 방법.

val file = Source.fromFile(args(0)).getLines().filter(!_.isEmpty()).mkString(" ")

Posted by yongary
,

DB with anorm

scala 2016. 3. 2. 16:58

scala에서 DB를 연동할 때, JDBC를 직접 사용할 수도 있지만

Play Framework와 함께 할때는 Anorm을 사용하는 방법이 편리하다.


REF-SITE :play



사용모습을 보면 아래와 같다.



(예제: 출처 https://janhelwich.wordpress.com/tag/anorm/ )

object Post{
  val parser = {
      get[String]("title") ~
      get[Date]("posted") ~
      get[String]("content")~
      get[Pk[Int]]("authorId") map {
      case title ~ posted ~ content ~ author => Post(title,  posted, content, User.findBy(author))
    }
  }
 
  def findAll() = {
    DB.withConnection {
      implicit connection =>
        SQL("select * from posts").as(parser *)
    }
  }
 
  def create(post: Post): Unit = {
    DB.withConnection {
      implicit connection =>
        SQL("insert into posts(title, posted, content, authorId) values ({title}, {posted}, {content}, {authorId})").on(
          'title -> post.title,
          'posted -> post.posted,
          'content -> post.content,
          'authorId -> post.author.id
        ).executeUpdate()
    }
  }


Posted by yongary
,

Anonymous class

java core 2016. 2. 26. 21:50

java의 abstract class 나 interface가  instance 화가 될 수 있냐? 고 질문한다면

답은  1. 일반적으론 안된다.  

          2. 그렇지만 anonymous class 방식으로는 된다. REF(Runnable 참조)

       이렇게 둘 다 답하면 best 이다.

 

참고로 
 abstract class : 추상 method가 하나이상 존재--> 상속시 추상 method구현을 강제함.
 Interface : 추상 method만으로 이루어진 class   but jdk1.8에서는  구현된 method도 허용함.  

     REF-SITE:

Posted by yongary
,

[char array->String]

char cArr[] ;  

String s = String.valueOf(cArr);

 

 

 

 

1. Array에 특정한 Object가 있는지 Check:


Arrays.asList(yourArray).contains(yourValue)

Warning: this doesn't work for arrays of primitives (see the comments).


2. LinkedList 에서 삭제 및 data Set.

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()한 걸 치환.


3. LinkedList  에 특정위치에 data 넣고 싶을때?

    LikedList<String> list = new LinkedList<String>();

    list.add("a");list.add("c");


    <a,c사이에 b를 넣고 싶으면>

    list.add(1,"b");   // index를 이미 안다면,  방법을 쓰거나..

    list.add ( getIndex("a")+1, "b"); //모른다면.. 이방법. 근데이게 getIndex가 속도가 의심이 됨..  

     최상의 방법은? 뭘까요?  
     자가 List라면  node.next.next = node.next;  node.next = new Node(); 하면 되는데.. 
     

     이런방법 없을까요?


     

      

     

      

    

    


Posted by yongary
,

Java memory 사용량.

java core 2016. 2. 23. 23:50
public static void main(String[] args) {

    long used1 = memoryUsed();
    int[][] array = new int[200][2];

    long used2 = memoryUsed();
    int[][] array2 = new int[2][200];

    long used3 = memoryUsed();
    if (used1 == used2) {
        System.err.println("You need to turn off the TLAB with -XX:-UseTLAB");
    } else {
        System.out.printf("Space used by int[200][2] is " + (used2 - used1) + " bytes%n");
        System.out.printf("Space used by int[2][200] is " + (used3 - used2) + " bytes%n");
    }
}

public static long memoryUsed() {
    Runtime rt = Runtime.getRuntime();
    return rt.totalMemory() - rt.freeMemory();
}
출처: stackoverflow peter lawrey 


Posted by yongary
,

/*

usage: 

MyJson mj = new MyJson(aLineString);   // {"key1:value1","key2:value2"} 

        String offTime = mj.get("key1") ;

*/



class MyJson{

private HashMap<String, String> hm = new HashMap<String,String>();

public MyJson(String json){

String normal = json.replaceAll("[{\"}]", ""); //remove {,", }

System.out.println("(normal)"+normal);

String[] kvset = normal.split(",\\s*");  // comma + (*:space exist or not)

for( String s : kvset){

String kv[] = s.split(":");

if( kv.length==2)

hm.put(kv[0], kv[1]);

else{

System.err.println("Json Parse err(may have only key) "+s);

}

}

}

public String get(String key){

return hm.get(key);

}

}

Posted by yongary
,

=============My BucketSort. Example===================

 

import java.util.HashMap;
import java.util.LinkedList;
import java.util.ListIterator;



public class BucketSort {

private HashMap<Integer, LinkedList> hMap;
/*
input: unSorted Array, #bucket(number of Bucket)
process: bucket sorting Using #bucket
return: sorted Array.
*/
public Integer[] bucketSort(Integer data[], int numBucket){
Integer[] ret = new Integer[data.length];
hMap = new HashMap<Integer, LinkedList>();



for (int i: data) {
Integer key = numBucket * (i / numBucket); //분모가 maxInt 가 맞을듯.(16.6)

==> 그냥 i%numBucket가 맞을 듯한데.. 좀더 보자.(2017.10)

LinkedList<Integer> prevList;



//make new List and add to HashMap.. when there's no data
if ( (prevList = hMap.get(key)) == null ) {
LinkedList<Integer> list = new LinkedList<Integer>();
list.add(i);
hMap.put(key,list);
}else{ //prevList traverse and add i to apporate position
ListIterator<Integer> it = prevList.listIterator();

boolean added = false; //added flag prevents Concurrent Modify Error.
while (it.hasNext()) { //at least 1 element. SO always on this loop.
if (it.next() > i ) { //Add to Proper position
prevList.add(it.previousIndex(),i);
added = true;
break;
}
}
if (!added)
prevList.add(i); //Add to End

}//else
} //for



//to array.
int k=0;
for (int j=0; j< numBucket; j++){
Integer key = numBucket*j;
LinkedList<Integer> list = hMap.get(key);

if (list!=null) {
ListIterator<Integer> it = list.listIterator();

while (it.hasNext())
ret[k++] = it.next();
}
}

return ret;
}

/////////MAIN /////////////////
public static Integer datas[]={77, 11, 22, 55, 44, 33, 99, 88, 21, 23, 37, 41, 81, 91, 74, 19, 30, 40 };

public static void main(String args[]){

BucketSort b = new BucketSort();
Integer[] data = b.bucketSort(datas, 10);

for ( int i : data)
System.out.print(i+",");
}
}


Posted by yongary
,

Quick Sort using java Generic.

==>   <T extends Comparable> working. <T implements Comparable> not working.

 (Java Generic을 이용해서 Quick Sort를 구현하여보았는데..

            ==>  <T extends Comparable> 이건 동작하는데 <T implements Comparable>은 동작하지 않음)

public class QSortGen<T extends Comparable> {  


void swap(T data[], int i, int j){
T tmp = data[i];
data[i]=data[j];
data[j]=tmp;
}

public void qSort( T[] data, int st, int end){
if (st == end || end < 0) return;

T pivot=data[end]; //Pivot is End (temporary)

int j=end-1;
int i=0;
while (i<j) {
while ( i<j && data[i].compareTo(pivot) < 0 ) i++;
while ( j>i && data[j].compareTo(pivot) > 0) j--;
if (i < j)
swap(data, i, j);
};

System.out.println( "new Pivot:" +i + ","+j);

//IF pivot Largest ?
if ( j == end-1 && data[j].compareTo(pivot) < 0 ) // (j == end-1) =>sometimes wrong. when only 3 data.
qSort(data, 0, end-1);

//General pivot
else {
swap(data, i ,end); //i is real Pivot
qSort(data, 0, i-1); //left divide and conquer:recursive
qSort(data, j+1, end); //right divide and comquer:recursive
}
}

/////////MAIN /////////////////
public static String datas[]={"adf", "kk", "bb", "aa", "dd", "cc", "ff" };

public static void main(String args[]){
QSortGen<String> q = new QSortGen<String>();
q.qSort(datas, 0, datas.length-1);

for( String a : datas)
System.out.println(a);
}
}


Posted by yongary
,

Scala OO Example

scala 2016. 2. 1. 10:52

Scala를 이용해서 OO를 TEST.

(OO Test using Scala)

object Seminar{


class Dog(a:Int, n:String){
var age:Int = a
var name:String = n

def feed()={
println(this.name+ ":eating dog food")
}
}


class Cat(a:Int, n:String) extends Dog(a:Int, n:String){
override def feed()={
println(this.name+ ":eating Cat food")
}
}


//////// MAIN ////////////////////////////////////////////////
def main(args:Array[String]) = {
var allDog:Array[Dog] = Array( new Dog(1,"dogA"),
new Dog(2,"dogB"),
new Dog(3,"dogC"),
new Dog(4,"dogD"),
new Cat(5,"catA"))


for( dog<- allDog)
dog.feed()

}
} //end
Posted by yongary
,

Quick Sort (java)

algorithm & type 2016. 1. 31. 00:34

[int Array기반 간단한 QuickSort]

- http://www.algolist.net/Algorithms/Sorting/Quicksort 참고.

=>c++ 코드 참조하면.. 한번소트 후에, 끝나면 i가 j보다 크군요..

(j=2, i=3) 이때, j포함 왼쪽. i포함 오른쪽 돌려야 함.

public void quickSort(int arr[], int left, int right) { int i = left, j = right; int tmp; int pivotValue = arr[(left + right) / 2]; /* partition */ while (i <= j) { while (arr[i] < pivotValue) i++; while (arr[j] > pivotValue) j--; if (i <= j) { tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; i++; j--; } }; /* recursion */ if (left < j) quickSort(arr, left, j); if (i < right) quickSort(arr, i, right); } public static void main(String args[]){ SortSearch s = new SortSearch(); int A[] = new int[] {9,8,7,6,5,4,3,2,1}; s.quickSort(A, 0, A.length-1); for (int a : A){ System.out.println(a); }

}




-----------아래 건은 연습용------------------

[Simple Quick Sort Example.. with String Array]

- using End element as a temporary Pivot.


 

public class QuickSort {


void swap(String data[], int i, int j){
String tmp = data[i];
data[i]=data[j];
data[j]=tmp;
}

public void qSort( String[] data, int st, int end){
if (st == end || end < 0) return;

String pivot=data[end];
//Pivot is End (temporary)

int j=end-1;
int i=0;
while (i<j) {
while ( i<j && data[i].compareTo(pivot) < 0 ) i++;
while ( j>i && data[j].compareTo(pivot) > 0) j--;
if (i < j)
swap(data, i, j);
};

System.
out.println( "new Pivot:" +i + ","+j);

//IF pivot Largest ?
if ( j == end-1 && data[j].compareTo(pivot) < 0 ) // (j == end-1) =>sometimes wrong. when only 3 data.
qSort(data, 0, end-1);

//General pivot
else {
swap(data, i ,end);
//i is real Pivot
qSort(data, 0, i-1); //left divide and conquer:recursive
qSort(data, j+1, end); //right divide and comquer:recursive
}
}

/////////main
public static String datas[]={"adf", "kk", "bb", "aa", "dd", "cc", "ff" };
public static void main(String args[]){
QuickSort q =
new QuickSort();
q.qSort(
datas, 0, datas.length-1);

for( String a : datas)
System.
out.println(a);
}
}


Posted by yongary
,

일반적으로 정렬 중에 가장 빠른 알고리듬은 quick sort로서 O(N*logN)의 평균속도를 가지고 있다.

 

하지만, 분포가 어느정도 균등한 자료의 경우

버킷 소트를 하게 되면 O(n)으로 정렬을 할 수 있다.

 

Hash의 개념을 사용하게 되며..  그림은 REF-SITE  참조.

 

 

단점: 버킷을 미리 만들어 둬야 하므로 메모리 소비가 좀 있고

그 외 최악의 속도는 O(n)*버킷내 정렬시간 이 되므로 O(n**2)까지도 갈 수 있다.

(어차피 quick sort도 O(n**2)까지 갈 수 있으므로.  자료가 적당하다면 일반적으로 quick sort보다 속도는 좋은 것 같다 ).

Posted by yongary
,

GPL vs LGPL

IT 2016. 1. 20. 16:43

GPL (General Public License) source를 사용하거나 binary를 사용하더라도 본인의 프로그램을 오픈해야함
LGPL (Lesser GPL) :  source를 사용하면 오픈, Library형태의 binary를 사용하면 오픈안해도됨  REF-SITE

 

BSD: 무제한 사용.

Posted by yongary
,

REF-SITE:

 

네트워크 가상화와 NFV

  x86서버에 구현되어 물리 네트워크에 가상 터널이나 기능을 추가함

- 네트워크 가상화: 가상 터널을 통해 추가

- NFV: (터널에) 기능을 추가 및 배치:  방화벽 / IDS_IPS / 로드밸런싱 등을 주로 가상화 하게 됨.

 

 

SDN

  외부적인 수단으로 OpenFlow같은 표준 제어 프로토콜등을 사용해서

물리 네트워크를 변경. ===> 서버가 아닌 네트워크 스위치에 구현.

 

 

Posted by yongary
,

구글 STT

통신 2016. 1. 18. 16:21

 구글 STT (Speech To Text) 테스트는 크롬브라우저로

 여기서 할 수 있다.  https://www.google.com/intl/en/chrome/demos/speech.html 

 

 

 개인용 개발용도로 사용이 허가되어 있는데,

 구글 API형태로 사용을 위해서는  REF-SITE 참고.

 

 영문사이트는

  1. https://developers.google.com/web/updates/2013/01/Voice-Driven-Web-Apps-Introduction-to-the-Web-Speech-API

  2. http://codesamplez.com/programming/html5-web-speech-api  (HTML5)

 

Posted by yongary
,

Docker

SDN,cloud,Puppet 2016. 1. 15. 09:16

아파치에서 만든 

Container 기반의 가상화 툴이다.


Container는 VM과 달리 linux의 프로세서로 동작하기 때문에, 매우 가볍다고 할 수 있다.


단점은 VM 처럼 모든 OS상의 기능을 다 할 수는 없고 제약이 제법 생기게 된다.

Posted by yongary
,

Android M, Doze mode

Mobile 2016. 1. 14. 10:08

Android M의 Doze 모드가 동작하게 되면 다음과 같은 동작이 불가능   REF-SITE

  • 백그라운드 작업 불가
  • 네트워크 작업 불가능
  • AlarmManager
  • JobScheduler
  • WiFi Scan 멈춤, WakeLock 무시.
Posted by yongary
,

AWS EBS

SDN,cloud,Puppet 2016. 1. 13. 17:01

AWS에서는 AMI선택하고, EBS선택해서 attach를 통해 둘 간 연결할 수 있다.  REF-SITE

 

EBS( Elastic Block Storage)

 

AMI( Amazon Machine Image)

 

 

Posted by yongary
,

기업 communication

통신 2016. 1. 13. 16:35

기업 통신은 크게 통화와 UC로 볼 수 있는데..

 

UC쪽은 skype과 slack이 대표적이라고 볼 수 있고

최근에 LGU+에서 Biz Skype을 출시해 TV CF도 열심히 하고 있다. (MS제품에 약간의 customization)

UC의 트랜드는 WebRTC, Mobility, BYOD, Cloud, Social Integration(CRM등 연동 ) 로 볼 수 있다.

 

 

2년정도 지난 자료지만, 아래 4개의 업체도 관심있게 볼 필요가 있다. (REF-SITE)

 

1. Kaltura

open-source Online Video 채널을 생성할 수 있다.

Cisco WebEx와 연동해서 미디어공유, analytic

 

2. Voxeo

voice플랫폼을 이용해서, 폰앱 caller usability를 drastically 향상시킴.

 

3. TigerText

email이 기업communication에서 너무 많은 email, 시간소비, 불편함 초래로 문제가 있다고 평가되면서

시큐어 message랑 file공유등이 핵심이 되어가고 있으며 이 부분에 집중하고 있다.

Healthcare산업에도 집중.

 

4. Unify (이전엔 Siemens Enterprise Communications )

Project Ansible을 통해서, dily flow로 관리되는 보안 communication

 

 

Posted by yongary
,

slack

통신 2016. 1. 13. 14:47

<SLACK의 장점 정리>    REF-SITE  REF-SITE(ENG)

 

대화: 1to1, private 그룹, 채널별(#주제별) 대화방

 

동기화:  자기가 입력한 text는 회색이었다가, 서버동기화 되면 검정색으로 표시.

- HipChat은 이게 안됨.

- PC에서 채팅을 하다가 모바일로 옮길경우 2분후 동기화  같은걸 설정 가능.

 

/appear :  화상회의 바로 연결. (appear.in 제품과 연동)

- 그 외에도 100여개의 앱 연동.

 

문서 직접 생성: 간단한 문서는 직접 생성/작성

 

알림: 구글드라이브, 트위터/페북, RSS, 일정, HelpScout Trello 등과 연동 알림.

 

무료: 작은 team 대상 무료 (Standard는 $8/month )

 

 

Posted by yongary
,

AWS (아마존 cloud)에 특수한 네트워킹 방식이 2가지가 있다.

 

1. VPC (virtual private cloud)  REF-SITE: AWS_ko

고립된 네트워크를 고객에게 제공하는 것으로

고객은 자기만의 private한 네트워크 안에서 독립 cloud를 가지게 된다.

연결방식은 VPN으로 연결지원한다.

 

 

2. AWS Direct Connect    REF-SITE:AWS.ko

1G~10G 전용선을 cloud센터로 직접 연결하는 전용회선 서비스로서

파트너사가 구축을 담당하게 되는데,

16년 1월 15일 KINX(케이아이엔엑스)가 국내 1호 사업자등록.  (기사)

 

세계적으로 10개정도의 Data Center만 해당작업이 가능하다고 한다.

 

 

 

 

 

<AWS 부가기능>

 

  AWS MarketPlace: Oracle, SAP등 S/W trial판이 미리 설치되어 있는 VM이미지를 선택/구매할 수 있다.

 

  CloudFront (CDN의 일종): Edge에 멀티미디어 데이타를 두고, 제공하는 서비스   REF-SITE

Posted by yongary
,

WebRTC

통신 2016. 1. 6. 09:08

WebRTC를 이용한 전화기능이 여기저기서 개발이 되고 있다.

 

대표적인 게 AT&T의 WebRTC Open API이고

AT&T는 15년 10월 NumberSync라는 부가서비스와 함께 WebRTC를 활성화 하고 있고

12월에는 Gear S2에도 NumberSync가 적용되었다.

 

WebRTC는 사파리에서는 지원되지 않는데..

iOS에서도 크롬을 설치하면 지원이 된다.

 

참고사이트:

https://www.playrtc.com/ko/documents-ko/playrtc-support-environments-ko/ 

Posted by yongary
,

spring DM + OSGi

Spring 2015. 12. 30. 11:02

 

spring DM이란:

- spring framework의 Core를 이용해서 Dynamic Module을 지원하는 방식으로서 Server모듈이 개발되어 있다.

주로 OSGi를 이용하게 됨.  REF-SITE(영문)

 

OSGi:

- eclipse의 plug-in에서 주로 사용하던 java용 plug-in개발 framework.

 

 

OSGi를 이용한 spring DM 개발방식 :  REF-SITE(개념),    REF-SITE(실전) 

Posted by yongary
,