참조: https://developers.google.com/cloud-messaging/http-server-ref


GCM 전송 주소: https://android.googleapis.com/gcm/send

FCM 전송 주소: https://fcm.googleapis.com/fcm/send


header : Content-Type : application/json Authorization : key="{서버 API키}" body : { "content_available":true, "notification":{ "sound":"default", "title":"{title string}", "body":"{message string}" } "to": "push token", {"registration_ids":["token1", "token2",...],} "data": { "param1":value1, "param2":value2, } }

'develop > 공통' 카테고리의 다른 글

ssh 포트포워딩(mysql) 및 접속  (0) 2017.11.07
vuforia cylinder target 이미지 dimention 설정  (0) 2017.06.20
신입 개발자 역량평가(퍼옴)  (0) 2017.03.04
sqlite  (0) 2014.12.18
NAT의 종류  (0) 2014.02.17

출처 : https://github.com/EBvi/dev-matrix/blob/master/%E1%84%89%E1%85%B5%E1%86%AB%E1%84%8B%E1%85%B5%E1%86%B8%20%E1%84%80%E1%85%A2%E1%84%87%E1%85%A1%E1%86%AF%E1%84%8C%E1%85%A1%20%E1%84%8B%E1%85%A7%E1%86%A8%E1%84%85%E1%85%A3%E1%86%BC%20%E1%84%91%E1%85%A7%E1%86%BC%E1%84%80%E1%85%A1.md




신입 개발자 역량 평가

  • 각 단계의 마지막 mastery는 우리가 기대하는 신입의 수준을 넘어갑니다만, 가끔은 이런 단계에 오른 신입들도 존재하기 때문에 넣어뒀습니다
  • 평가 그 자체에 너무 부담을 갖지는 말아주세요. 저희는 신입 개발자가 가져야될 가장 중요한 자질로 잠재력에 초점을 두고 있습니다
  • 맨 마지막 항목에 여러분의 잠재력을 어필해주세요

퍼블리싱

1. 웹페이지 코딩

  • 간단한 HTML 문법과 CSS 문법을 알고 사용할 수 있다
  • div로 레이아웃을 잡고 코딩을 할 수 있다 (Box model을 이해한다)
  • 웹 표준을 어느 정도 이해하고 있다 (DTD를 알고 있다)
  • 웹 접근성과 시맨틱한 마크업에 대해 숙지하고 있으며 관심이 깊다

2. 크로스 브라우징

  • 인터넷 익스플로러밖에 사용해 보지 않았다
  • 특정 모바일 디바이스에 최적화된 페이지를 만들어 본 경험이 있다
  • 각 브라우저의 렌더링 이슈를 알고 있으며 해결해 본 경험이 있다
  • 브라우저핵의 존재를 알고 있으며, 우아한 퇴보 기법의 일부를 숙지하여 코딩할 수 있다

3. jQuery

  • 간단한 셀렉터와 실행 문법을 알고 있다
  • 다양한 플러그인을 사용해본 경험이 있다
  • 제법 복잡한 셀렉터를 다룰 수 있고, 메소드 체이닝을 알고 있으며, 거의 모든 문법을 자유 자재로 다룰 수 있다
  • 플러그인 제작이 가능하고 jQuery가 어떻게 구현되었는지 상당 수준을 이해한다

4. JavaScript

  • 아주 기초적인 JavaScript 문법을 알고 있다
  • Context의 역할과 this의 용법을 안다
  • closure를 이해하고 익명함수를 다룰 수 있다
  • 각 브라우저별 JavaScript 엔진의 차이를 이해하고 크로스 브라우징이 가능한 코드를 작성할 수 있다

운영체제

1. 리눅스 경험

  • 윈도우밖에 사용해 보지 않았다
  • 몇 종류의 리눅스를 사용해 보았으며 쉘 명령어를 좀 알고 있다
  • 리눅스에 특정 벤더사의 서버를 설치, 세팅해본 경험이 있다
  • 리눅스로 서비스를 운영해 보았으며 각종 트러블 슈팅에 대한 경험이 있다

2. 윈도우 경험

  • 특별한 경험이 없다
  • 백업과 복원을 할 줄 알고, 시스템을 새로 설치하는 데에도 문제가 없다
  • 각종 고급 테크닉을 숙지하고 있으며 최적화나 튜닝에 대해서도 관심이 많다
  • 오류가 발생하면 덤프를 뜨고 로그를 읽어 어떤 문제가 발생했는지 알고 해결할 수 있다

전산학 이해

1. 자료구조

  • 배열(array)과 List의 차이를 모른다
  • 배열과 Linked List, dictionary의 차이를 설명할 수 있다
  • 트리와 그래프를 알고 사용할 수 있다
  • 각종 상황에서 효율적인 자료구조를 결정할 수 있다

2. 알고리즘

  • 배열에 들어있는 값의 평균을 낼 줄 모른다
  • 정렬, 검색, 순환 알고리즘을 안다
  • 퀵 정렬에 대해 설명할 있고, 직접 코드를 작성할 수 있다
  • 다익스트라나 A*, 또는 그 밖의 알고리즘을 알고 있다

3. 시스템 프로그래밍

  • 컴파일러, 링커, 인터프리터를 구분하지 못한다
  • 컴파일러, 링커, 인터프리터를 설명할 수 있다
  • 커널모드/유저모드 차이를 설명할 수 있다
  • 스레딩/멀티스레딩, 동기화와 락을 이해하고 어떻게 구현되었는지 설명할 수 있다

설계

1. 객체 지향

  • 인터페이스를 왜 써야하는 지 모른다
  • 캡슐화와 추상화를 이해하고 어떤 상황에서 써야하는지 알고 있다
  • 디자인 패턴과 안티 디자인 패턴을 상당수 알고 있다
  • 이를 통해 프레임워크를 구축해본 경험이 있다

2. DI

  • DI나 IoC가 무엇인지 모른다
  • 왜 빈을 주입해야 하고 왜 이것이 낮은 결합도를 만드는지 안다
  • 스프링에서 DI가 어떻게 구현되어 있는지 알고 있다
  • DI와 IoC에 대해 하루종일 설교할 수 있다

3. 모델링

  • 논리적 모델과 물리적 모델이 무엇을 말하는지 모른다
  • 논리적 모델과 물리적 모델을 구분하여 모델링할 수 있다
  • L자형 테이블이 왜 위험한지 알고 있다 (필드가 많이 늘어나는 것이 어떤 영향을 미치는지 이해한다)
  • 정규화를 알고 이를 적용하여 모델링을 할 수 있다

Java

1. 문법

  • 간단한 문법을 이해하고 프로그램을 작성할 수 있다
  • 리플렉션을 이해하고 사용할 수 있다
  • 어노테이션을 어떻게 쓰고 어떻게 구현할 수 있는지 알고 있다
  • 인터페이스와 클래스의 각종 고급 문법을 알고 적용할 수 있다. 디자인 패턴의 존재를 알고 있다.

2. 빌드

  • IDE(이클립스)가 아니면 빌드를 할 수 없다
  • 커맨드라인으로 빌드를 만들 수 있다
  • 빌드 스크립트를 직접 작성할 수 있다
  • 문서, 설치 스크립트, 릴리스 노트를 포함한 빌드 스크립트를 작성한다

3. 테스트

  • 테스트를 하지 않는다
  • System.out.print를 사용하여 문자열을 찍어본다
  • 유닛 테스트를 작성한다
  • TDD를 이해한다 (반드시 TDD를 하고 있어야 한다는 의미가 아님)

데이터베이스

1. 쿼리 작성

  • 기본적인 CRUD를 작성할 수 있다
  • inline view를 사용하여 복잡한 질의문을 작성할 수 있다
  • 각종 join을 다룰 수 있으며, 집계 쿼리, group by 등을 사용할 수 있다
  • 100만 건 이상의 데이터가 누적되어 있는 상황에서 쿼리를 작성해본 경험이 있다

2. 대용량 데이터베이스

  • 실행 계획이 뭔지 모른다
  • Clustered Index와 Non-clustered Index의 차이를 안다
  • 실행 계획을 변경하기 위해 hint를 사용할 수 있다
  • 파티셔닝과 병렬 처리를 제어할 수 있고, 각종 튜닝 방법에 대해 알고 있다

3. 데이터베이스 개념

  • 제대로 데이터베이스에 대한 개념을 학습하지 못했다
  • ACID, 정규화, 트랜잭션을 이해한다
  • 스키마를 정규화해서 정의할 수 있고, 뷰, 스토어드 프로시저, 트리거, 사용자 정의 타입을 다룰 수 있다
  • 쿼리 트랜스포머를 어느 정도 이해하고 있으며, 내부적으로 인덱스가 어떻게 저장되어 있고 작동하는지 이해하고 있다

기타

1. 책

  • 간단한 문법을 다룬 책을 위주로 몇 권 읽어 봤다
  • 코드 컴플리트를 비롯한 스티브 맥코넬의 저서 또는 켄트벡이나 마틴 파울러의 저서를 읽어 봤다 (방법론에 대한 책)
  • 이펙티브 C++, 이펙티브 Java, 그 외 각종 실용적이면서 중급 사용자에게 적절히 도움이 되는 책을 읽어 봤다
  • 아트 오브 컴퓨터 프로그래밍, 자바스크립트 닌자의 비밀, 대용량데이터베이스 솔루션 등의 고급 서적을 읽어 봤다

(어떤 책을 읽어봤는지 추가로 서술해주셔도 좋습니다)

2. 인터넷 커뮤니티 활동

  • 개발과 관련된 어떠한 커뮤니티 활동도 하지 않는다
  • 자주 가는 블로그, 또는 개발자 위주로 된 트위터 리스트를 갖고 있다
  • 프로그래밍에 관한 개인적인 통찰이나 생각을 표현하는 블로그를 갖고 있으며 이것을 다른 개발자와 공유한다

3. 외국어 수준

  • 한국어가 아닌 자료로는 기술 습득이 불가능하다
  • 영어로 된 기술 교재를 읽고 기술을 파악한다
  • 미국인/영어권 사용자로부터 개발 업무를 지시받고 업무 수행 후에 결과를 보고할 수 있다
  • 영어권 사용자로부터 SW를 발주 받아, 인도/중국인에게 개발 업무를 아웃소싱하고 국내 팀과 연계하여 국제적인 프로젝트를 진행할 수 있다

그리고

무엇이라도 좋습니다. 사진, 그림그리기, 만화, 인터넷 활동, 음악, 글쓰기, 잉여력 발산, 게임 등 지금까지 했던 활동 중에서 어떤 걸 어디까지 알고 있는지 자랑할 만한 것이 있으면 기술해주세요. 다만 너무 길게 쓰지는 말아주세요. 저희는 이 항목에 대한 평가를 가장 중요하게 생각합니다.

AVPlayer로 동영상 재생 중 간헐적으로 (특히 plus 기기에서) 동영상 소리만 들리고 화면은 나오지 않는 현상이 재현되었다.


이 현상을 수정하기 위해 기존 개발자가 개발한 코드에서 동영상 로딩 하는 부분을 50% 이상 뜯어 고쳐 아주 기본적인 로직으로만 동영상 재생이 되도록 수정하였으나 마찬가지로 동영상 화면이 간헐적으로 나오지 않는 현상은 고쳐지지 않았다.


그렇게 2주 가까이 다른 버그 수정과 기능 구현을 하는 틈틈히 구글링을 한 결과 다음과 같은 질답을 발견하였고, 답변에 있는데로 구현 후 현재까지 아주 잘 되고 있다.


2주 가까이 해결하지 못하고 있던것을 해결하니 기분이 참 좋다 ㅎㅎㅎ




출처: https://forums.developer.apple.com/thread/27589



Hello all.

 

I got the same problem with my implementation. After trying the solutions proposed here, I think I finally found the relable way to do things

 

The AVPlayerItemVideoOutput must be created AFTER the AVPlayerItem status is ready to play.

So

  1. Create player & player item, dispatch queue and display link
  2. Register observer for AVPlayerItem status key
  3. On status AVPlayerStatusReadyToPlay, create AVPlayerItemVideoOutput and start display link

 

Thanks to all for the inspiration

Renaud


출처: http://itmir.tistory.com/548



private float mTouchX, mTouchY;
private int mViewX, mViewY;
 
private OnTouchListener mViewTouchListener = new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
 
        switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
 
            mTouchX = event.getRawX();
            mTouchY = event.getRawY();
            mViewX = mParams.x;
            mViewY = mParams.y;
 
            break;
 
        case MotionEvent.ACTION_UP:
            break;
 
        case MotionEvent.ACTION_MOVE:
            int x = (int) (event.getRawX() - mTouchX);
            int y = (int) (event.getRawY() - mTouchY);
 
            mParams.x = mViewX + x;
            mParams.y = mViewY + y;
 
            mManager.updateViewLayout(mView, mParams);
 
            break;
        }
 
        return true;
    }
};


백키 누를 경우 잠금화면이 보여짐

getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED

       | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);



백키 누를 경우 바탕화면이 보여짐(화면잠금 해제)

getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED

       | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD

       | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);

curl -o /dev/null -w "Connect: %{time_connect} TTFB: %{time_starttransfer} Total time: %{time_total} \n" [체크할 URL]

'develop > linux' 카테고리의 다른 글

vi 자동으로 encoding 설정  (0) 2024.03.07
vi euc-kr, utf-8  (0) 2019.12.24
GNU C, __attribute__  (0) 2014.10.14
Linux C에서 키보드 이벤트 받기(kbhit())  (0) 2014.02.28
NAT 종류별 설정  (0) 2014.02.17
SELECT * FROM mytable LIMIT N OFFSET (SELECT COUNT(*) FROM mytable) - N;


출처: http://stackoverflow.com/questions/14018394/android-sqlite-query-getting-latest-10-records

아래 3가지 방법중에 하나를 통해서 썸네일 이미지를 가져올 수 있다.


1. ContentResolver를 통해 직접 썸네일 이미지를 가져오기

MINI_KIND: 512 x 384 thumbnail

MICRO_KIND: 96 x 96 thumbnail


Bitmap bitmap = MediaStore.Images.Thumbnails.getThumbnail(

getContentResolver(), selectedImageUri,

MediaStore.Images.Thumbnails.MINI_KIND, null );


2. 썸네일 Uri가져오기

Cursor cursor = MediaStore.Images.Thumbnails.queryMiniThumbnail(

                             getContentResolver(), selectedImageUri,

                             MediaStore.Images.Thumbnails.MINI_KIND,

                             null );

if(cursor.moveToFirst() && cursor.getCount() > 0 ) {

String uri = cursor.getString( cursor.getColumnIndex( MediaStore.Images.Thumbnails.DATA ) );

BitmapFactory.decode.....

}


3. 일반 이미지 파일에서 썸네일 추출하기

ExifInterface exif = new ExifInterface(pictureFile.getPath());

byte[] imageData=exif.getThumbnail();

Bitmap  thumbnail= BitmapFactory.decodeByteArray(imageData,0,imageData.length);



출처: http://stackoverflow.com/questions/5548645/get-thumbnail-uri-path-of-the-image-stored-in-sd-card-android

카톡의 대화입력 창 처럼 자동으로 늘어나도록 하고싶어서 검색을 하는데 대부분이 커스텀 EditText 클래스를 만들어 xml에서 사용하는 것이었다.


하지만 난 순수한 xml로만 하고싶어서 계속 찾던중에 다음과 같이 xml로만 가능한 방법을 찾았다.

maxHeight는 textSize의 크기에 맞춰서 변경해야 하며, 나는 4줄만 표시되도록 설정한 크기가 84dp이다.


android:layout_height="wrap_content" android:isScrollContainer="true" android:maxHeight="84dp" android:textSize="17.6sp"android:inputType="textMultiLine"

출처: https://snipt.net/orastem/android-multiline-edittext-that-dynamically-increases-height-to-always-display-whole-text/


사용자가 설치한 앱만 가능


adb shell "run-as {패키지명} chmod 666 /data/data/{패키지명}/databases/data.db"

adb pull /data/data/{패키지명}/databases/data.db


'develop > android' 카테고리의 다른 글

썸네일 이미지 가져오기  (0) 2016.01.08
EditText 높이 자동조절  (1) 2015.12.24
ImageButton enable 설정  (0) 2015.12.15
Screen On/Off 이벤트 받기  (2) 2015.10.29
webview youtube 백그라운드 재생 정책위반 해결  (1) 2015.10.23

+ Recent posts