https://webdesign.tutsplus.com/ko/tutorials/the-holy-grail-of-css-centering--cms-22114

http://ande226.tistory.com/101

http://egloos.zum.com/kwaknu/v/4988500

http://loveiskey.tistory.com/39


https://developer.mozilla.org/ko/docs/AJAX/Getting_Started


참고하세요~!

<%

/*

Object[][] sampleArr = {

{"초아", "AOA","걸그룹",25}

,{"전효성","시크릿","가수",26}

,{"정은지","에이핑크","탤런트",22}

,{"배수지","미스에이","영화배우",21}

};

JSONObject jsonList = new JSONObject();

JSONArray itemList = new JSONArray();


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

JSONObject tempJson = new JSONObject();

tempJson.put("name", sampleArr[i][0]);

tempJson.put("group", sampleArr[i][1]);

tempJson.put("job", sampleArr[i][2]);

tempJson.put("age", sampleArr[i][3]);

itemList.add(tempJson);


}

jsonList.put("TOTAL",sampleArr.length);

jsonList.put("ITEMS", itemList);

out.print("<script> alert('" + jsonList + "'); </script>");

*/

//JSON 데이터

String jsonInfo = "{\"books\":[{\"genre\":\"소설\",\"price\":\"100\",\"name\":\"사람은 무엇으로 사는가?\",\"writer\":\"톨스토이\",\"publisher\":\"톨스토이 출판사\"},{\"genre\":\"소설\",\"price\":\"300\",\"name\":\"홍길동전\",\"writer\":\"허균\",\"publisher\":\"허균 출판사\"},{\"genre\":\"소설\",\"price\":\"900\",\"name\":\"레미제라블\",\"writer\":\"빅토르 위고\",\"publisher\":\"빅토르 위고 출판사\"}],\"persons\":[{\"nickname\":\"남궁민수\",\"age\":\"25\",\"name\":\"송강호\",\"gender\":\"남자\"},{\"nickname\":\"예니콜\",\"age\":\"21\",\"name\":\"전지현\",\"gender\":\"여자\"}]}";


/*

{

    "books": [

        {

            "genre": "소설",

            "price": "100",

            "name": "사람은 무엇으로 사는가?",

            "writer": "톨스토이",

            "publisher": "톨스토이 출판사"

        },

        {

            "genre": "소설",

            "price": "300",

            "name": "홍길동전",

            "writer": "허균",

            "publisher": "허균 출판사"

        },

        {

            "genre": "소설",

            "price": "900",

            "name": "레미제라블",

            "writer": "빅토르 위고",

            "publisher": "빅토르 위고 출판사"

        }

    ],

    "persons": [

        {

            "nickname": "남궁민수",

            "age": "25",

            "name": "송강호",

            "gender": "남자"

        },

        {

            "nickname": "예니콜",

            "age": "21",

            "name": "전지현",

            "gender": "여자"

        }

    ]

}

 */


try {


    JSONParser jsonParser = new JSONParser();

     

    //JSON데이터를 넣어 JSON Object 로 만들어 준다.

    JSONObject jsonObject = (JSONObject) jsonParser.parse(jsonInfo);

     

    //books의 배열을 추출

    JSONArray bookInfoArray = (JSONArray) jsonObject.get("books");


    System.out.println("* BOOKS *");


    for(int i=0; i<bookInfoArray.size(); i++){


        System.out.println("=BOOK_"+i+" ===========================================");

         

        //배열 안에 있는것도 JSON형식 이기 때문에 JSON Object 로 추출

        JSONObject bookObject = (JSONObject) bookInfoArray.get(i);

         

        //JSON name으로 추출

        System.out.println("bookInfo: name==>"+bookObject.get("name"));

        System.out.println("bookInfo: writer==>"+bookObject.get("writer"));

        System.out.println("bookInfo: price==>"+bookObject.get("price"));

        System.out.println("bookInfo: genre==>"+bookObject.get("genre"));

        System.out.println("bookInfo: publisher==>"+bookObject.get("publisher"));


    }


    JSONArray personInfoArray = (JSONArray) jsonObject.get("persons");


    System.out.println("\r\n* PERSONS *");


    for(int i=0; i<personInfoArray.size(); i++){



        System.out.println("=PERSON_"+i+" ===========================================");


        JSONObject personObject = (JSONObject) personInfoArray.get(i);

    out.print("<script> alert('" + personObject.get("name") + "'); </script>");

        System.out.println("personInfo: name==>"+personObject.get("name"));

        System.out.println("personInfo: age==>"+personObject.get("age"));

        System.out.println("personInfo: gender==>"+personObject.get("gender"));

        System.out.println("personInfo: nickname==>"+personObject.get("nickname"));


    }


} catch (ParseException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

}

%>


<%

   try{

      //URLConnection을 이용한 스트림 생성

      URL url = new URL("http","10.1.97.1", 8080, "/assets/new");

      URLConnection conn = (URLConnection) url.openConnection(); 

      InputStream is = conn.getInputStream(); 

      InputStreamReader isr = new InputStreamReader(is,"utf-8");

      BufferedReader br = new BufferedReader(isr); 

      String line = null;

      StringBuilder sb = new StringBuilder(1024); 


      while ((line=br.readLine()) != null){ // 라인단위 읽기

         sb.append(line+"\n"); 

      }


      //out.println(sb.toString()); 

      out.print("<script> alert('" + sb.toString() + "'); </script>");

   }catch (IOException e) { 

      out.println(e.toString()); //에러 발생시 메시지 출력

   }

%>

웹 호스팅을 받다보면 트래픽을 줄이기 위해 외부에서 이미지를 업로드하고 그 url을 이용해

자신의 사이트에 올리는 경우가 있다.

이럴때 사용하기 좋은 무료 업로그 사이트들에 대한 포스트이다.


http://pgtyman.tistory.com/entry/%EB%AC%B4%EB%A3%8C-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EC%97%85%EB%A1%9C%EB%93%9C-%EC%82%AC%EC%9D%B4%ED%8A%B8-imgurcom


Widevine DRM이란 무엇입니까? 
Widevine의 DRM 솔루션은 강력한 멀티 플랫폼 콘텐츠 보호를 제공하기 위해 업계에서 채택한 다음 표준을 결합합니다.

  • HTTP (DASH)를 통한 동적 적응 형 스트리밍 
    DASH를 사용하면 인터넷을 통해 고품질 미디어 컨텐츠를 스트리밍 할 수 있습니다. DASH는 표준 HTTP 프로토콜을 활용하며 기존 인터넷 인프라 (웹 서버, CDN, 방화벽 등)에 쉽게 배포 할 수 있습니다. 

  • 공통 암호화 (CENC) 
    CENC는 업계 표준 기반의 콘텐츠 암호화 방식입니다. CENC는 다른 DRM 시스템을 사용하여 동일한 파일의 암호 해독을 허용하기 위해 하나 이상의 DRM 시스템이 사용할 수있는 표준 암호화 및 키 매핑 메커니즘을 식별합니다. CENC를 통해 콘텐츠 제공 업체는 콘텐츠를 한 번 암호화하여 수많은 클라이언트 장치 및 다양한 DRM 체계에 전달할 수 있습니다. 

  • EME (Encrypted Media Extensions) 
    EME는 DRM 시스템과 상호 작용하고 라이센스 키 교환을 관리하는 데 사용할 수있는 일련의 공통 API를 제공하는 제안 된 W3C 표준입니다. EME를 통해 콘텐츠 제공 업체는 모든 장치에 대해 단일 응용 프로그램 솔루션을 설계 할 수 있습니다.


출처 : http://www.widevine.com/wv_drm.html


'Develop Issue > DRM' 카테고리의 다른 글

DASH란?  (0) 2018.02.07

* 개요

 - Dynamic Adaptive Streaming over HTTP는 클라이언트에게 네트워크 상황에 맞추어 적합한 비디오 화질을 선택하여 서비스받는 기술을 의미 한다.

 - 유튜브를 사용할 때 네트워크 환경에 따라 영상화질을 변화 시킬 수 있는 것이 그 예시


* 기본 동작

 1. DASH 서버는 비디오를 다양한 비트 rate로 구분하여 인코딩을 한다.

 2. 인코딩 된 비디오 데이터들을 세그먼트(또는 chunk) 단위로 분할해 놓는다.

 3. 클라이언트는 자신의 네트워크 상황에 맞추어서 비트 rate 적용 알고리즘을 수행, 네트워크 가용 대역폭을 계산하고 이를 기반으로 비디오 세그먼트의 비트 rate를 계산한다.

 4. 계산된 rate를 토대로 서버로부터 이에 따른 비디오 서비스를 받는다.


- DASH는 MP4, MPEG-2 Trankport Stream을 지원, DRM을 명시하지 않았지만 ISO/IEC 23001-7: Common Encryption 표준에 명시된 모든 DRM 기술을 지원한다.


참조 : 

http://donghoson.tistory.com/48

https://www.html5rocks.com/ko/tutorials/eme/basics/


Cocos2d-x 라벨 깨짐 현상 해결방법

cocos2d-x의 기본 언어 설정이 UTF-8로 설정되어 있어서 나타나는 현상이다.

우선 해결방법은 drawText 함수를 찾아내어 함수안에 있는 MultiByteToWideChar(CP_UTF8, 0, pszText, nLen, pwszBuffer, nBufLen);의 파라메터에서 CP_UTF8 부분을 CP_ACP로 변경해주면 된다. drawText의 경우 각 버전대별로 경로는 다음과 같다.

3.x 버전대 : Cocos2d-x의 프로젝트 -> libcocos2d -> Platform/win32 -> CCDevice.cpp 


2.x 버전대 : CCImage



'Develop Issue > Cocos2d-x' 카테고리의 다른 글

Cocos2d-x 개발환경 및 포팅환경  (1) 2017.07.14

+ Recent posts