Download God of war for mobile android – Ghost of sparta – Tamil

안녕하세요 친구가 내 채널에 오신 것을 환영합니다 전쟁의 신에 관한이 비디오에서 우리 중 대부분은 PS2, PlayStation 등에서 연주했습니다

오늘은 모바일에서 게임하는 법을 보여줍니다 이 게임에 가장 중독 된 스토리 기반 게임입니다 게임, 기술, 트릭 등에 관한이 채널 게시물에서, 채널을 구독하고 벨 아이콘을 누릅니다 최신 업데이트 시작하자 아래 설명 된 링크를 클릭하여 확인하십시오

그리고이 페이지가 열립니다 10 초간 기다린다 그런 다음 다운로드 링크가 생성되었습니다 아이콘을 클릭하고 게임을 다운로드하십시오 확인 다운로드가 완료되었습니다

그런 다음 Playstore를 엽니 다 검색 창에 Rar를 입력하고 검색하십시오 이 응용 프로그램을 사용하여 우리는 그것을 추출해야합니다 ISO 파일로 이제 응용 프로그램을 설치하십시오 신청서를 엽니 다

권한을 허용하십시오 피하기 위해 데이터 사용 중지 그리고 모든 중단 저장 한 폴더를 엽니 다 나는 UC 브라우저에 저장했다 UC 폴더를 여는 중입니다 여기 전쟁 파일의 신을 볼 수 있습니다

아이콘을 똑딱 거리십시오 그리고 위쪽 화살표 아이콘을 클릭하십시오 저장 영역 선택 그런 다음 확인을 클릭하십시오 SD 카드 사용 권한을 요청합니다 SD 카드를 클릭하십시오

그런 다음 허용 그것은 기다리는 시간을 추출하는 데 몇 분이 걸립니다 확인이 완료되었습니다 이제 Ppsspp 응용 프로그램을 엽니 다 아래에 설명 된 응용 프로그램 다운로드 링크 설정을 클릭하고 내가 만든 모든 설정을 저장하십시오 모드를 클릭하십시오

그리고 버퍼 효과를 건너 뛰도록 변경하십시오 프레임 구성에서 모바일 구성에 따라 필요를 클릭하십시오 내 모바일 낮은 구성 장치 때문에 5로 설정했습니다 내가 한 모든 것을 틱한다 호환되는 컨트롤을 변경하십시오

나는 바닥에 L과 R 버튼을 만들었다 이제 게임 플레이 시작되었습니다

The Making of Stronghold Kingdoms (iOS/Android)

그것이 바로 우리가 갔던 요점이었습니다 "맞습니다

우리는 단지 5 년간 아무것도 보지 않았습니까?" 우리가 Stronghold Kingdoms를하기로 결정했을 때 흥미로운 것들 중 하나 한 성을 짓고 포위 공격을 당하거나 한 방어를하는 것에 관한 성채와는 달리 그것은 당신이 그것을 할 수있게하지만 중세 전쟁의 현실을 재현 할 수있게 해줍니다 그것은 긴 게임이었다 : 전쟁보다는 전쟁, 다중 포위 공격, 당신이 실제로 한 달 정도 걸릴 수있는 포위 공격을 재현 할 수 있다는 사실 보통 큰 성은 하루 만에 내릴 수 있지만, 꽤 자주 마찰의 전쟁입니다 이것은 실제로 하나의 플레이어 게임보다 중세 전투의 측면을 재창조합니다 프로토 타입 우리에게는 의도의 상태에 관한 초기 프로토 타입이 있었기 때문에 우리는 Stronghold 버전을 가지고있었습니다

그리고 나서 우리는 "글쎄, 어떻게 연결시켜야 할까?"와 같았습니다 그리고 나서 모든 종류의 기술적 문제가 앞으로 수년 내내 나타날 것이며 우리는 재 작업해야 할 것입니다 우리는 데이터베이스에 대해 배우고, 웹 서버 기술에 대해 배우고, 많은 것을 배울 것입니다 핵심 기술을 몇 번 바꿨습니다 그렇죠? 그리고 웹 서버는 해결책을 찾는다

그래, 아무도 이런 종류의 게임을하지 않았다 실제로 많은 사람들이 지금도 왕국이하는 일을 정확히하지는 않습니다 그것은 그렇게 가파른 학습 곡선이기 때문에, 나는 생각합니다 그리고 운 좋게 우리는 계속할만큼 충분히 미쳤습니다 우리가 2 ~ 3 년을 보냈다는 사실을 무시하고 우리는 여전히 아무것도 얻지 못했습니다

2011 년 11 월, 우리가 나왔다 그것은 2010 년 11 월이었습니다 2010, 죄송합니다 그리고 나서 그것이 "우리가 방금 5 년 동안 아무것도 보지 못했습니까? 아니면 실제로 사람들이 우리에게 돈을 지불 할 것입니까?" 그것은 그렇게 느꼈다 그것은 그날에 했었습니다

"누가 알겠습니까?" 누가 압니까? 아무도 그 일을하지 않았기 때문에 우리는 그게 효과가 있을지 모르지만 운 좋게도 돈을 지불했습니다 내 말은, 그렇게했다 그것은 훌륭했다 우리가 한 일이 사람들에게 우리에게 돈을주고 싶어하는만큼 중요하다는 것을 아는 것은 놀랍습니다 또한 발사시 Stronghold를 아는 사람들이있었습니다

스트롱 홀드가 아닌 팬이 없었기 때문에 우리는 항상 스트롱 홀드 팬이 될 것이라고 생각했습니다 그리고 우리가 실제로 그것을 시작했을 때, 그것은 정말로 그렇게 좋아지지 않았습니다 스트롱 홀드가 아닌 다른 많은 팬이 우리가 깨달은 것보다 더 많이 플레이했는데, 분명히 목표가 분명합니다하지만 놀라움으로 우리를 데려갔습니다 우리는 Stronghold 팬들을 겨냥했지만 실제로는 더 넓은 그룹에게 호소력을 발휘했음을 알게되었습니다

내 말은, 스트롱 홀드가 다르다는거야 싱글 플레이어 스트롱 홀드는 왕국 플레이 스타일과 다릅니다 그러나 나는 Stronghold Kingdoms가 더 많은 청중에게 그리고 어떤면에서는 약간 더 하드 코어의 청중에게 호소한다고 생각한다 왜냐하면 당신은 중세의 주님이라는 무자비한 상태에 행복해야합니다 나는 우리에게 흥미로운 점은 모바일 시장에보다 깊이있는 전략 게임을 가져올 수 있는지 여부를 확인하는 것입니다

내가하는 모든 것을 – 그리고 나는 모바일 게임을하기 때문에 -하지만 잠시 후에 나는 조금 지루해한다 왜냐하면 그들은 모두 아주 가볍고 아주 가볍기 때문입니다 Stronghold Kingdoms와 함께 할 수 있기를 바랍니다 마침내 우리는 모바일 시장에 새로운 것을 가져올 수 있습니다 클랜 유형 게임과는 약간 다른 것을 찾고있는 사람들이 있어야합니다

Stronghold Kingdoms는 플레이어들에게 조금 다른 전략 게임을 할 수있는 기회를 제공합니다 당신이 왕국을 방어하기 위해 업무용 책상이나 집에 묶여 있지 않다는 사실은 당신이 외출 할 수 있다는 것을 의미합니다 그리고 거기 앉아서 친구들과 저녁을 먹을 수도 있고, 무시할 수도 있습니다 왜냐하면 거기에 앉아서 성을 수리하고 있기 때문입니다 나는 베타에서, 우리가 일을 떠날 때 (왕국을하는) 좋은 것을 알고 있다는 것을 기억한다

나는 그것이 통근하기 위해 나를 데려 갔던 전체의 시간 동안 생각하는 것을 기억한다, 나는 왕국에 관해 생각하고 있었다 그리고 집에 도착하자마자 아내를 무시하고 위층에 올라 컴퓨터를 켜서 내가 보낸 공격을 확인했습니다 그리고 명백하게, 모바일 버전으로, 그것은 약간 쉬웠을 것입니다, 나는 열차에서 그것을 점검 할 수있었습니다 그러나 나는 그 당시에 얼마나 편리했을지를 생각하고 기억하고 있습니다 Simon : 그래, 절대적으로

폴 : 그것은 바로 처음이었습니다 내 마음에, 드디어 화장실에서 놀 수있는 왕국의 버전 이죠? 그것은 멋진 이미지입니다 나는 우리가 그걸 끝낼 것이라고 생각한다 시청 해 주셔서 감사 드리며 동영상을 즐긴 경우 구독하고 구독하는 것을 잊지 마세요 다음 주 목요일에 Youtube의 Firefly Studios에서 더 많은 비디오를 감상하십시오

Leveraging the Power of Arrow to Build Android(Kotlin) Apps using Functional Programming

[음악 재생] 좋아, 얘들 아 다시 오신 것을 환영합니다

그래서 얼마나 많은 기능적인 프로그래머가 여기에 있습니까? 승인 그럼 지금 놀라운 세션이 있습니다 화살표를 사용하여 안드로이드를 구축하는 힘 모니카 (Monika)의 함수 프로그래밍을 사용한 Kotlin 그녀는 4 년 동안 안드로이드 개발자로 일해 왔습니다 이제부터 그녀를 무대에 오르게해서 시작할 수 있습니다

[음악 재생] MONIKA KUMAR : 개발자 John을 만날 수 있습니다 Kotlin을 처음 사용하고 싶어합니다 그의 프로젝트에서 Kotlin의 함수 프로그래밍 기능 그러면 어떻게 그렇게 할 수 있을까요? 화살표를 입력하십시오 안녕, 모두들

저는 Monika Kumar Jethani입니다 나는 당신을 환영합니다 이 세션의 모든 부분을 활용하면 Arrow 기능적 프로그래밍을 사용하여 Android 애플리케이션을 구축하는 방법 그래서 저는 4 명으로 구성된 다국어 프로그래머입니다 소프트웨어 개발 분야에서 수년간의 경력을 쌓았습니다 관심 분야는 이동성과 인공 지능입니다

코드를 읽고, 코드를 작성하고, 코드에 대해 이야기합니다 그리고 나는 자바가 시작된 같은 날에 태어났습니다 얼마나 많은 사람들이 함수형 프로그래밍을 사용하기 시작 했습니까? 당신의 프로젝트에서? 좋아, 좋아이 세션에서 우리는 함수형 프로그래밍이 무엇인지 조사하고, Kotlin의 기능적 구성물 Arrow 소개, Arrow의 데이터 유형에 대해 자세히 설명합니다 유형 클래스,보다 기능적인 프로그래밍 개념 Arrow가 그 자체로 가져 오는, 그리고 샘플 Arrow 애플 리케이션

그래서 함수형 프로그래밍은 선언적 스타일을 도입합니다 당신이 무엇을해야할지 집중하는 프로그래밍의 하는 방법보다는 계산으로 평가를 처리합니다 수학 함수의 그래서 객체 지향 프로그래밍과는 달리, 프로그램에 국가가있는 곳 객체는 메소드를 통해 상태를 변경합니다

함수형 프로그래밍은 유지 보수 및 변경을 엄격하게 피할 수 있습니다 의 상태 따라서 함수형 프로그래밍의 핵심 개념은 순수한 함수입니다 따라서 순수한 함수 (normal function)처럼, 당신은 입력을 받아, 당신은 출력을 제공합니다 그러나 보편적 인 판매 포인트가 있습니다

순수 함수가 있음을 의미합니다 동일한 입력에 대해 항상 동일한 출력을 제공합니다 b = 1, b = 2, b = 10, 동일한 입력에 대해 동일한 출력을 얻을 수 있습니다 두 번째 요점은 중요한 점입니다 주문 함수는 적용된 매개 변수에만 초점을 맞 춥니 다

그것에 함수 밖에서는 작동하지 않습니다 여기 오른쪽에서 볼 수 있습니다 합계 함수는이 두 가지 이유로 순수한 함수입니다 그래서 언제든지, 내가 1을 동등하게한다면, b = 2이면 항상 출력을 얻습니다

일부 기능은 조작 요소에 초점을 맞추기 때문에 그것은 그것에 제공됩니다 그것은 인스턴스 변수 나 어떤 것이 작동하지 않습니다 함수 밖입니다 따라서 함수형 프로그래밍의 많은 장점이 있습니다 객체 지향 프로그래밍 그래서 우리는 응용 프로그램을 함수로 만듭니다

따라서 코드는보다 간결하고 모듈화됩니다 테스트가 더 쉬워집니다 그것은 예측 가능합니다 당신은 T가 1 인 것을 압니다 또한 a1, b2를 주면 3이됩니다

똑같습니다 – T에서 10을 얻습니다 안전 프로그래밍을 장려합니다 불변성과 순수성과 같은 구조를 도입함으로써 기능 그래서 함수형 프로그래밍은 언어 독립적입니다 그리고 함수를 다루는 언어 일류 시민으로서의 기능적 프로그래밍으로서의 소리 언어

예는 Scala, Haskell 및 Kotlin입니다 이러한 언어에서 함수는 다른 함수로 전달 될 수 있습니다 함수에서 반환 될 수 있습니다 변수에 할당 할 수 있습니다 그럼 Kotlin의 함수 구조를 살펴 보겠습니다

그것들은 변경 불가능한 객체를 의미하는 변경 불가능 성이며, 객체의 상태를 변경할 수 없습니다 그리고 Kotlin에서 val 키워드를 사용하여 불변성을 부여합니다 고차 함수 – 고차 함수 함수를 취하는 함수에 주어진 이름이다 매개 변수 또는 반환 함수로 람다 (Lambdas) – 또 다른 기능을 제공합니다

기능 그러나이 경우에 공급되는 기능은 이름이 없습니다 게으른 평가 – 객체 생성 처음 사용될 때까지 연기됩니다 테일 호출 재귀 – 그래서 모두들 여기서 재귀에 익숙해야합니까? 따라서 꼬리 호출은 메소드의 마지막 호출 동일한 서브 루틴에 호출됩니다 꼬리 호출 재귀, Kotlin의 꼬리 호출 최적화 재귀 호출로 마지막 호출이있는 경우입니다

확장 기능 – 어디에서 할 수 있습니까? 더 많은 메소드를 추가하여 클래스의 기능을 확장하십시오 Null 안전성 – nullable 유형을 나타낼 수있는 곳 유형 뒤에 물음표가 나타납니다 패턴 일치 – 호출 할 변형을 알아 내고, 패턴 또는 유형에 따라 다릅니다 그래서 코 틀린은 우리 모두가 알듯이, 바닥을 걸을 것입니다 자바에 있었다

그리고 그것들을 개선하려고합니다 그래서 우리 모두가 알 수 있습니다 객체 지향 프로그래밍 언어에서 자체는 객체 지향 프로그래밍 언어입니다 따라서 Kotlin은 기본적으로 객체 지향 프로그래밍의 융합입니다 기능 프로그래밍

순수한 함수형 프로그래밍 언어는 아닙니다 기능적 프로그래밍을 시행하지는 않지만, 형식화 된 함수형 프로그래밍을 지원하지 않습니다 그래서이 모든 것을 고치려면 Arrow가 들어갑니다 Arrow는 Kotlin의 표준 라이브러리에 기능적인 동반자입니다 그것은 2017 년에 소개되었습니다

최신 릴리스는 073입니다 가장 인기있는 두 가지 Kotlin 라이브러리의 융합입니다 Kategory 및 funcKTionale을 사용하면 자세한 정보를 얻을 수 있습니다

arrow-ktio에서의 Arrow에 대해 따라서 Arrow에는 세 가지 데이터 유형이 있습니다 더 많은 데이터 유형이 있습니다 하지만이 프레젠테이션에서는 세 가지 중요한 것에 초점을 맞춘다

Option, Either 및 Try입니다 그래서 그들 모두는 봉인 된 수업입니다 그리고 Option은 이름에서 알 수 있듯이, 선택적 값을 나타내는 데 사용됩니다 그래서 Option에 A 타입의 값이 있다면, 그것은 [INAUDIBLE] Some의 가치를 가질 것입니다 그래서 약간의 가치가 있다면 A가 될 것입니다

모든 값은 None이됩니다 그래서 Option은 Some 또는 None을 가질 수 있습니다 예에서 볼 수 있듯이, 우리가 someValue, Some과 문자열을 할당하려한다면, 그것을 인쇄합니다 그래서 우리는 산출물로서 어떤 가치를 얻습니다 따라서이 경우 someValue, 변수, Some 유형의 Option 값을 포함합니다

두 번째 예 – emptyValue 변수 없음 유형의 옵션 값을 포함합니다 그런 다음 옵션을위한 중요한 도구가 있습니다 어떤 유형의 경우, 어떤 작업을 수행하면, 당신은 결과를 얻을 것이다 없음 유형에서, 당신은 작업을 수행하려고 시도하지만, 당신은 결과적으로 항상 None을 얻을 것입니다 따라서이 예에서는 숫자를 볼 수 있습니다

Some 유형의 Option 유형입니다 숫자 없음은 유형 없음의 Option 유형입니다 따라서 옵션에 대한 작업을 수행하려고 할 때 type 일부는 결과를 얻는다 언제 Option 유형 None에서 작업을 수행하려고 시도하면, 당신은 결과를 None으로 얻습니다 두 번째는 출력을 없음으로 얻는 경우입니다

기본 설정을 지정하려는 경우가있을 수 있습니다 null 타입의 경우의 값 – 없음 유형 거기에서 getOrElse를 사용할 수 있습니다 그래서 당신에게 제공하는 옵션을 제공합니다 유연성을 기본 제공 None 유형의 경우 값

그래서 값은 None이고, getOrElse를 사용하면, 이를 기본값으로 지정합니다 그래서 당신이 그것을 출력 할 때, 당신은 디폴트 값을 얻습니다 None 값이기 때문입니다 그런 다음 Option의 사용 사례는 다음과 같을 수 있습니다 우리는 신청서에 양식이 있습니다

따라서 필수 항목은 주로 이메일, ID, 비밀번호, 사용자입니다 이름 이름은 Option이 될 수 있습니다 따라서 Option 데이터 유형을 사용하여 당신의 코드에서 그 이름 그런 다음, 우리 모두는 Kotlin의 when 절 스위치와 같습니다

그래서 절에는 기본값이 있습니다 따라서 기본적으로, 없음을 사용할 수 있습니다 그리고 나머지 경우에는 Some을 사용할 수 있습니다 이제 두 번째 데이터 유형 인 Isither로 넘어갑니다 그 이름에서 알 수 있듯이, 모두 이중 값 중 하나입니다

따라서 왼쪽은 예외 상황을 나타내는 데 사용됩니다 오른쪽은 [INAUDIBLE]을 나타내는 데 사용됩니다 따라서이 예제에서는 right라는 변수를 볼 수 있습니다 그리고 그것은 어느 쪽인가의 유형입니다

그래서 왼편에는 문자열이 있어야합니다 맞습니다 정수를 포함해야합니다 당신은 어느 쪽을 지정합니다 맞아요

그리고 당신이 그것을 인쇄하면, 당신은 권리를 얻습니다 그럼 두 번째 경우에 그래서 왼쪽, 예외를 나타 내기 때문에, 일부 유효성 검증 메시지를 넣을 수 있습니다 따라서 인쇄 할 때 왼쪽 부분이 인쇄됩니다 그래서 당신은 또한 어떤 디폴트 값을 넣으려고 시도 할 수 있습니다 마찬가지로, 권리가 있다면, 당신은 그냥 결과물을 낼 수 있습니다

왼쪽에 기본값을 넣을 수 있습니다 당신은 예외적 인 경우입니다 그냥 0을 출력 할 수 있습니다 따라서 이것이 가능한 예입니다 어느 쪽에서 값을 추출 할 때 사용합니다

Option과 마찬가지로, getOrElse를 Either와 함께 사용할 수 있습니다 게다가 그리고 여기에서도 왼쪽에 기본값을 제공 할 수 있습니다 그래서 여기서 다시 볼 수 있습니다, 우리는 getOrElse를 사용하여 기본값 0을 할당 알려진 부분이있는 왼쪽 부분으로 그래서 당신은 어느 쪽이 될 수 있는지 추측 할 것입니다 그 검증 자료를 표시합니다

우리 양식에는 이메일 양식이 있습니다 그래서 우리는 특정 형식이있을 것으로 기대합니다 그래서 포맷이 바르게 따른다면, 우리는 그것을 입력으로 받아 들일 수 있습니다 그렇지 않으면 유효성 검사 메시지를 표시 할 수 있습니다 어느 쪽이든의 도움으로 이제 시도해 보겠습니다

Try는 Try와 유사합니다 Java 나 C #에서 볼 수 있습니다 그래서 값이 존재하는지 확인해보십시오 존재하는 경우 성공 부분으로 이동합니다 실패하면 실패 부분으로 넘어갑니다

따라서 예제에서 볼 수있는 getQuizQuestions 실패 할 가능성이 있으며 예외가 발생합니다 그래서 그것은 Try 안에 포함되어 있습니다 그래서 Try 내부에 동봉되어 있기 때문에, 그것은 예외를 던질 수 있습니다 예외가 발생하면 출력을 실패로 볼 수 있습니다 그리고 예외 행 번호와 이름을 얻습니다

예외도 마찬가지입니다 Option 및 Either와 유사하므로 다음과 같이 할 수도 있습니다 Try 값을 추출하십시오 성공하면 b 부분을 찾습니다 그래서 우리는 실패한 b로서 성공합니다

따라서 실패한 경우 기본값을 출력 할 수 있습니다 이 경우 0입니다 그리고 성공 – b를 찾을 수 있습니다이 경우는 a입니다 승인

따라서 알려진 함수가 있습니다 Recover로 예외를 처리하는 데 사용됩니다 실패입니다 그래서 복구 – 다시, 예외가 걸립니다, 화면에 표시 할 값을 제공합니다 그 예외가 발생할 때 여기에서는 런타임 예외가 발생합니다

이렇게되면 값 0이 출력됩니다 그리고 이것은 Recover를 사용하여 수행 할 수 있습니다 그래서 try를위한 유스 케이스는 예외를 잡을 수있다 우리가 나누는 것처럼 그래서 우리는 항상 제수가 0이 아닙니다

따라서 Try 블록에서 나누기 코드를 묶을 수 있습니다 기기가 0이 아닌 경우 분할 결과를 출력합니다 값이 0이면 Try를 사용할 수 있습니다 오류 부분으로 리디렉션 할 수 있습니다 그래서 타입 클래스 – 타입 클래스는 Arrow의 중요한 특징입니다

그들은 행동을 나타냅니다 3 가지 타입 클래스가 있습니다 이 세션에서 초점을 맞추십시오 그것은 Functor, Monad 및 Applicative입니다 따라서 Functor는 래핑 된 값에 함수를 적용하는 데 사용됩니다

맵 기능 사용 그래서 여기에서 그들은 A에서 B까지의 기능을 가지고 있다는 것을 알 수 있습니다 우리는 감싸 진 값, F of A를가집니다 그리고 나서 우리는 감싸 진 값, B의 F를 얻습니다 그래서 F 포장 된 값을 변환하는 함수입니다

map은 동일한 컨텍스트 내에서 변환 된 값을 반환합니다 Functor는 어떻게 작동합니까? 펑 터는 함수와 펑터를 취하고, 새로운 펑터를 반환합니다 그래서 여기서 플러스 3이 함수라는 것을 알 수 있습니다 그러면 Functor가 생깁니다이 경우 Option

Some (2)입니다 그리고 새로운 펑터를 반환합니다 그래서 OptionSome (2)에서 연산을 수행하면 3, 그것은 우리에게 Some (5)를 줄 것이다 그래서 Some (5)는 새로운 functor입니다

맵 기능에 의해 제공됩니다 따라서 Functor에서 먼저 값은 컨텍스트에서 풀립니다 그런 다음 3을 더한 함수가 적용됩니다 결과 값은 같은 맥락에서 배치됩니다 그래서 이것은 일부 부분에서는 잘 작동합니다

이제 Option에 포함 된 None 부분이 있습니다 지금까지 함수 자체는 전혀 적용되지 않습니다 오른쪽에서 코드를 볼 수 있습니다 옵션 없음을 사용합니다 함수에 3을 더하고 싶습니다

그래서 함수는 적용되지 않습니다 결과 출력은 None입니다 그런 다음 Functor를 배열에 적용합니다 따라서 각 추가 된 값에 대해 함수가 적용되고, 우리는 새로운 가치 배열을 얻습니다 그런 다음 함수에 적용된 펑터 – 그래서 여기에서 우리는 functor 자체가 함수라는 것을 알 수 있습니다

먼저 주어진 값에서 우리는 함수를 적용합니다 즉 주어진 값은 10이므로 우리는 더하기 2를합니다 그것은 우리에게 12를줍니다 그런 다음 함수에 3을 더한 함수를 적용하여 15를 얻습니다 그런 다음 Functor는 Option, Either, Try 또는 모든 데이터 유형으로 작업하고, Functor의 인스턴스를 제공합니다

여기서 addOne을 볼 수 있습니다 Type 종류의 매개 변수를 취합니다 그래서 모든 클래스는 Option, Try, 여기에서 사용할 수있는 Functor 인스턴스를 제공하십시오 여기 구체적인 구현을 할 때 볼 수 있습니다 이걸 Option과 Try로 – 그래서 옵션 (1)의 경우, 플러스 1 기능을 수행합니다

그런 다음 Some (2)로 출력합니다 그런 다음 Try를 사용하여 동일한 작업을 수행 할 때 Try (1)을 사용하면 1 Success (2)를 제공합니다 마찬가지로, 사람들은 커스텀 펑터를 만들 수 있습니다 그러나 그들은 일정한 규칙을 따라야합니다 규칙은 구성 및 신원과 같습니다

그래서 당신은 명심해야합니다 당신의 펑터를 만드는 동안 그래서 Applicative– Applicative가 사용되었습니다 Apply를 사용하여 랩핑 된 값에 랩핑 된 함수를 적용합니다 여기에서 함수 a가 더하기 3과 같은 것을 볼 수 있습니다

또한 값에 싸여 있습니다 그리고 우리는 감싸 진 값 Some (2)를가집니다 따라서 래핑 된 함수를 값에 적용합니다 일부는 (2) Apply를 사용하고 결과는 Some (5)입니다 애플리케이터가 어떻게 작동하는지 – 우리는 문맥 안에 포장 된 함수를 가지고있다

우리는 맥락에서 가치가 있습니다 우리는 둘 다 unwrap하고 값에 함수를 적용합니다 그리고 우리는 맥락에서 새로운 가치를 부여합니다 그래서 응용 프로그램을 값 배열에 적용합니다 그래서 함수에 2와 3을 곱하면, 우리는 펑터처럼 적용 할 것입니다

각 배열 요소에 적용 해 보겠습니다 새로운 배열 요소 목록을 얻습니다 따라서 Applicative Builder로 알려진 개념이 있습니다 당신은 다른 Option 타입을 통해 그것을 묶어서 계산할 것이고, 일부 계산을 수행합니다 여기 예제에서 볼 수 있습니다

Employee라는 클래스가 있습니다이 클래스에는 세 가지 속성이 있습니다 ID, 이름 및 doj 그리고 우리는 Option 타입의 변수를 가지고 있습니다 다른 옵션 유형 – 하나는 UUID, 하나는 String, 하나는 Integer입니다

따라서 이러한 속성 값을 유지하는 데 사용됩니다 그래서 우리는지도에 Applicative와 Map을 사용합니다 모든 변수 값 [INAUDIBLE] Employee의 속성으로 Applicative Builder에 대한 USP는 다음과 같습니다 유형, 컴퓨팅 할 때의 정보를 보존한다는 것 다른 Option 유형을 넘어서 그리고 모든 값이 완료되면 콜백이 호출됩니다

값이 Some 일 때 발생합니다 값 중 하나가 없음이면 출력이 없음으로 표시됩니다 없음에서 작동하지 않습니다 따라서 모나드 – 모나드는 싸인 된 값을 적용합니다 flatMap을 사용하여 랩핑 된 값을 리턴하는 함수

여기서는 half라는 함수가 있습니다 따라서 반은 의견을 제시합니다 그리고 그 수가 짝수라면 그것의 절반을 돌려 줄 것입니다 그것이 4이면, Some (2)를 줄 것입니다 짝수가 아니면 None을 반환합니다

그래서 절반은 모나드를 반환하는 함수입니다 그리고 우리는 감싸 진 값인 Some (3)을가집니다 flatMap을 사용하여 반으로 적용합니다 따라서 3이 짝수가 아니기 때문에 반은 None을 반환합니다 4는 짝수이므로 절반은 랩된 값을 반환합니다

그 일부입니다 (2) 우리가 None 연산을 위해 똑같은 것을하려고 할 때, 그것은 아무 것도주지 못할 것이다 이미 말했듯이, 모든 작업은 일부와 작동합니다 없음으로는 작동하지 않습니다 Monad는 어떻게 작동합니까? Monad는 모나드와 모나드를 반환하는 함수를 취하고, 그리고 나서 모나드를 반환합니다

그래서 Some (3)은 모나드라는 것을 알 수 있습니다 함수 half는 함수이고, 모나드를 반환합니다 그리고 마지막 결과는 None입니다 그 자체는 모나드입니다 Monad Chaining도 가능합니다

여기서 볼 수 있습니다 절반은 3 번 호출됩니다 값은 Some (20)입니다 그래서 처음으로 반은 참여하게되고, 그것은 어떤 것을 줄 것이다 (10); 두 번째 시간, 일부 (5); 세번째, 없음 모나드 바인딩은 다음과 같은 프로세스입니다

다른 Option 유형을 결합하는 데 사용됩니다 따라서 Option 유형은 flatMap을 사용하여 결합 할 수도 있습니다 그러나 계산이 증가하고 복잡성이 커집니다 따라서이를 방지하기 위해 Monad 바인딩을 사용합니다 따라서 Monad 바인딩에서 bind 메소드는 내부적으로 flatMap을 호출합니다

그러나 성능 집약적 인 방식으로 수행합니다 그래서 우리는 세 가지 옵션을 결합한 것을 볼 수 있습니다 정수 값을 갖는 타입 그리고 결과로, 모나드 바인딩 후에, 또한 Option 유형입니다 그래서 Functor, Applicative, 및 Monad

Functor의 모든 참여자는 Applicative에서 가능합니다 그리고 Applicative의 모든 기여자들 Monad에서도 가능합니다 따라서 더 많은 기능 프로그래밍 개념이 있습니다 첫 번째는 기능 구성입니다 그 이름에서 알 수 있듯이 작곡 기존 함수에서 함수를 작성합니다

그래서 고정 기능으로 작성하십시오 고정 된 의미로, 함수 이름 두 이름 사이 그리고 그것은 그들이 왼쪽과 오른쪽 매개 변수라고 가정합니다 해당 함수에 적용됩니다 이렇게 구성된 함수는 오른쪽에서 가치를 얻습니다

왼쪽에 적용하고 계속합니다 그것이 최종 결과를 얻을 때까지 그래서 여기에서 당신은 볼 수 있습니다, 두 가지 기능이 있습니다 심지어 더 커졌습니다 그리고 그들에 대한 작품을 작곡합니다

따라서 Compose는 우선 짝수 기반 목록을 필터링합니다 둘째로, 그 결과를 더 큰 수조로 전달할 것입니다 그런 다음 greaterThanThousand를 기준으로 목록을 필터링합니다 배관 – 배관은 Compose의 반대입니다 왼쪽에서 시작하여 계속 적용합니다

오른쪽의 모든 것 그래서이 경우에는 이것이 동일한 예입니다 거기에 Compose가있었습니다 이 경우 먼저 목록을 평가합니다 더 많은 것을 위해

그리고 그 결과가 무엇이든간에 그 결과를 짝수에게 제공 할 것입니다 논리적 구성 요소 – 함수에서 작동합니다 부울 형식을 반환하고이를 부인합니다 그래서 여기에 모든 정수의 함수가 있음을 알 수 있습니다 0보다 큽니다

다시 말하면, 임대인 기능은 보완법을 기반으로합니다 이전 기능의 즉, 그것은 0보다 작은 모든 사람들을 찾을 것입니다 컴포넌트 함수는 보완 물을 찾는 데 사용됩니다 특정 기능의 그럼 우리는 목록을 가지고 있습니다 목록을 출력하면 1에서 5까지 모든 숫자를 더 많이 얻는다

남은 숫자는 그보다 훨씬 적습니다 암기는 순수 함수의 예비를 캐시하는 데 사용됩니다 우리 모두 알다시피 순수 함수 항상 동일한 입력에 대해 동일한 출력을 반환합니다 그래서 우리가 [INAUDIBLE] 함수를 캐시한다면 – 캐시 순수 함수 결과, 그것은 우리에게 도움이 될 것입니다 우리는 같은 계산을 여러 번 수행 할 필요가 없습니다

함수를 외우고 계산 결과를 저장합니다 그것에 적용된 매개 변수에 그렇다면 Arrow를 기존 Android와 어떻게 통합 할 수 있습니까? 스튜디오 프로젝트? 종속성을 추가해야합니다 이것은 의존성 목록입니다 GitHub 사이트에 나열됩니다

필요한 모든 클래스와 함수를 기반으로, 적절한 종속성을 가져와야합니다 이것은 간단한 계산기 앱입니다 두 개의 operants를 취하고, 더하기, 빼기, 곱하기, 나누기 그래서 데이터를 통합 할 수있는 유스 케이스였습니다 유형 개념

그래서 여기에 Add, Add operation, you 또한 모나드 바인딩을 결합 할 수 있습니다 유사한 유형의 옵션 여기서는 나누기 위해 Try 데이터 형식을 사용했습니다 왜냐하면 제수가 0 일 가능성이 있기 때문입니다 따라서 제수가 0이면 실패가 발생합니다

예외 이름 제수가 0이 아니면 Try는 Success 봇을 실행합니다 나는 값을 얻는다 비슷하게, 곱셈은 모두 1에서 2가 2라는 것을 압니다 3에서 1은 3입니다

따라서 Some (1)에 들어가는 것은 숫자 자체가됩니다 그래서 곱셈 – 나는 그 사건을 고려했습니다 더 많은 경우가 있습니다 마찬가지로, 값이 0이면 결과는 0이됩니다 따라서 모든 Arrow 개념을 통합 할 수 있습니다

우리가 보통하는 일에 그렇다면이 앱은 이메일을 입력하는 간단한 앱입니다 구독 버튼을 누르십시오 그래서 여기에 Option 유형을 사용했습니다 따라서 입력 된 이메일이 유효한 입력 인 경우, 변수에 저장합니다 유효한 입력이 아닌 경우 None 만 저장합니다

따라서이 경우, 추가 처리, 메일 링 목록에 이메일을 추가하는 것처럼 완료되지 않습니다 따라서 입력이없는 곳에서 볼 수 있습니다 이메일 입력은 None으로 저장합니다 입력이 제공되면 값은 Some 및 값으로 저장됩니다 그런 다음 Android 용 화살표를 사용할 때의 우수 사례 – 그래서 Arrow는 새로운 도서관이자 Kotlin입니다

우리 대부분에게 새로운 것입니다 그래서 우리는 Kotlin과 Arrow를 통합 할 수 있습니다 가능한 한 우리 프로젝트에서 부작용을 단일 지점으로 푸시하려고합니다 또한, 우리는 다른 데이터에 대해 매우 확신 할 필요가 있습니다 다른 개념, 즉 데이터 유형과 유형 수업

차이점이 있습니다 우리가 어떻게 할 수 있는지 확인해야합니다 Arrow의 주어진 개념을 사용하여 프로젝트를 모델링합니다 그래서 이미 진행중인 다양한 프로젝트가 있습니다 화살표를 사용하여 완료됩니다

Helios처럼 – Helios는 Kotlin의 Arrow 용 JSON 파서입니다 그것은 화살표를 사용합니다 그런 다음 기능 유효성 검사가 있습니다 Either 및 Try 데이터를 사용하여 양식 유효성 검사 수행 유형 따라서이 링크에서 다른 프로젝트를 확인할 수 있습니다

그래서 화살을 말릴 준비가 되셨습니까? 좋아, 잘됐다 이것이 바로 프레젠테이션의 끝입니다 모두 감사합니다 모든 검색어에 대해 내 Gmail ID에 연결할 수 있습니다 고맙습니다

Taking Advantage of Kotlin in Your Android App with Sean McQuillan (GDD India ’17)

[음악 재생] 연사 : 시작하겠습니다 안녕하세요, 저는 Sean McQuillan입니다

저는 Android 개발자 옹호자입니다 그리고 오늘 저는 코 틀린에 관해 당신과 이야기 할 것입니다 그래, 우리는 강사 주도의 훈련을 할거야 오늘 그게 무슨 뜻이야? Kotlin에서 코드 연구소를 운영하기 위해 도움을 받으러 여기 올거야

그래서 나는 너를 도울거야 나는 약간의 지시를 걸어 갈거야 그리고 우리는 청중에 몇 가지 TA를 가지고 있습니다 그들은 당신이 가진 어떤 문제라도 당신을 도울 것입니다 오늘 내가 할 일은 우리가 우리의 다운로드를 설치함으로써 시작할 것입니다, Android Studio에서 프로젝트를 컴파일하는 중입니다

그 다음 약 10 분 강의를 드리겠습니다 그런 다음 코드 연구소의 일부에서 작업 할 것입니다 다시 이야기하겠습니다 우리는 코드 랩의 일부를 다시 사용할 것입니다 이 코드 랩에서 우리가 할 일은 Java 애플리케이션을 Kotlin으로 마이그레이션하는 것입니다

우리가 함께 만든 주소록 응용 프로그램입니다 그것은 Java로 작성되었습니다 그리고 우리는 Kotlin 변환기를 사용할 것입니다 우리는 Kotlin에 추상화를 작성하려고합니다 그리고 우리는 그것이 어떻게 가능한지를 볼 것입니다

우리의 상용구 코드를 줄이는 데 도움이됩니다 유지하기 쉽고 간결하고 읽기 쉬운 코드를 제공하십시오 그리고 우리는 몇 가지 일반적인 문제를 피할 것입니다 더 나은 코드를 작성하는 데 도움이되는 추상화를 작성합니다 그러니 계속 뛰어 들어 보자

가서 그 링크를 따라 가라 맨 위의 코드 랩을 다운로드하여 시작하십시오 1 단계와 2 단계를 수행하고 요점을 알려면됩니다 어디 안드로이드 스튜디오에서 그것을 컴파일거야 그렇게하면 우리 모두 다운로드 할 수 있습니다

모든 의존성 [음악 재생] 나는 대부분의 사람들이 그 지점에 있다는 것을 알았다 Android Studio에서 종속성을 다운로드하는 곳입니다 따라서 Wi-Fi 휴식이 효과적이었습니다 Kotlin과 함께 제공되는 정말 멋진 기능 중 하나입니다

코 틀린은 – 죄송합니다 Android Studio의 Java to Kotlin 변환기입니다 그것을 사용하려면 프로젝트에 Kotlin이 있어야합니다 로 시작하도록 구성되었습니다 그리고 자바 파일을 선택할 때마다, 코드 메뉴로 이동할 수 있습니다

Java 파일을 Kotlin으로 변환하십시오 이 변환기에 대한 정말 멋진 기능입니다 내가 제일 좋아하는 것들은 마술처럼 보인다 내가 그것을 사용할 때마다 – 붙여 넣을 때이다 클립 보드의 Java 코드를 Kotlin 파일로 변환하고, Java 코드를 자동으로 Kotlin으로 변환합니다

그것은 붙여 넣습니다 그래서 내가 지금 이야기하고 싶은 것은 단지 모든 Kotlin 구문 기본에 대한 개요 우리는 오늘 코드 랩에서 사용할 것입니다 따라서이 함수 선언을 살펴볼 수 있습니다 바로 여기, 우리는 단계적으로 그것을 거치게 될 것입니다 따라서 Kotlin에서 함수를 정의하고 싶을 때, 재미있는 핵심 단어로 정의됩니다

그래서 여기에 함수, 합, a와 b 두 개의 매개 변수가 있습니다 매개 변수에는 유형이 있습니다 a는 정수 유형이고 b는 정수 유형입니다 그리고 이것은 코 틀린 (Kotlin) 전체에 공통된 구문입니다 변수 선언 다음에 변수의 유형을 넣으십시오

따라서 이것은 자바 프로그래밍과는 다릅니다 언어, 분명히 다른 방법입니다 비슷하게, 함수의 리턴 타입 인수 뒤에 나열됩니다 따라서 두 개의 매개 변수가있는 함수 합계입니다 정수를 반환합니다

그리고 Kotlin에 대한 또 다른 멋진 기능 세미콜론은 선택 사항입니다 JavaScript와 마찬가지로 Kotlin의 디자이너 우리가 수 년 동안 우리가 코드에 세미콜론을 넣거나 세미콜론을 넣지 않아야합니다 아니요, Kotlin 코드에 세미콜론을 넣으면 안됩니다 가지고있는 반 패턴으로 간주됩니다 세미콜론은 Kotlin 코드에 있습니다

한 줄 구문으로 함수를 정의 할 수도 있습니다 당신이 여기에서 볼 수 있습니다 여기서는 함수 합을 정의합니다 다시 두 개의 매개 변수를 취하고 더하기 b를 반환합니다 그래서 그것은 바로 그 표현입니다 그리고 우리는 할당 연산자를 순서대로 사용합니다

이 방법으로 함수를 정의하십시오 언제든지 사용할 수 있습니다 당신은 함수를 정의하기를 원한다 이와 같은 단일 표현식으로 구성됩니다 여러 개의 표현식을 만들고 싶다면, 중괄호 구문을 사용해야합니다

우리가 잘 알고있는 Kotlin은 기본 인수도 제공합니다 예를 들어, 우리는 함수, 합, 대개 두 개는 정수 유형을가집니다 기본값은 2입니다 그래서 당신이 이것을 부를 때마다, 당신이 인수를 지정하지 않으면 기본적으로 2로 설정됩니다

다음은 변수 선언에 대해 설명하겠습니다 여기서는 두 변수를 정의하고 있습니다 이름이 불렀다 다른 하나는 참석자라고합니다 이름은 val이고 참석자는 var입니다

그래서이 이름은 JavaScript와 비슷합니다 그래서 나는 다른 문자열을 지명 할 수 없다 니키타가 영원 할거야 참석자는 변경할 수 있습니다 그래서 나는 그것을 인스턴스화하는 배열리스트에 할당한다

하지만 나중에 내 소스 코드에서 할 수있어 그것을 다른 배열 목록에 지정하십시오 그래서 가변 변수입니다 Kotlin은 실제로 Kotlin과 Java의 차이점이 있습니다 프로그래밍 언어가 Kotlin에 추가됨 val은 Kotlin에서 변수를 정의하는 데 선호되는 방법입니다

이 슬라이드에는 몇 가지 다른 구문이 있습니다 새로운 배열리스트를 만들 때 볼 수 있습니다 우리는 새로운 키워드를 부르지 않는다 사실, Kotlin에는 새로운 키워드가 없습니다 클래스를 생성하는 것은 함수를 호출하는 것처럼 보입니다

Kotlin에서, 그리고 이것처럼 보입니다 계속 진행중인 또 다른 일은 질문을 보게 될 것입니다 거기에 표시하십시오 이는 해당 문자열이 null이 될 수 있습니다 Kotlin은 null 가능 유형을 소개합니다

이는 기본적으로 String을 작성한 경우를 의미합니다 물음표 없이는 null이 아닌 문자열이됩니다 그리고 그 문자열은 항상 당신에게 보증 할 수 있습니다 내 코드에서 null이 아니며 널 포인터도 얻지 못한다 예외

그것이 nullable다는 것을 말함으로써, 나는 거기에 null을 저장할 수 있습니다 그리고 내가 역 참조 할 때, 나는 특별한 문법을 ​​사용해야합니다 또는 널 포인터 예외가 발생합니다 내가 이야기하고 싶은 다음 이야기 Kotlin의 데이터 클래스입니다 그것들은 많은 코드를 정의하는 간결한 방법입니다

여기서 내가 정의하는 것은 데이터 클래스 접촉입니다 3 개의 필드가 있습니다 이름, 성 및 이메일이 있습니다 Java 프로그래밍 언어에서 동일한 작업을 수행 할 수 있습니다 나는 String first name, String last name, 및 문자열 전자 메일

그리고 세명의 게터와 세터를 써야합니다 그리고 나서 equals 메서드를 작성해야합니다 그리고 toString 메서드를 작성해야합니다 모든 기능이 자동으로 생성됩니다 나를 위해 데이터 클래스를 사용할 때

이것에 관해 정말로 흥미있는 일부 나는 일반적으로 데이터를위한 클래스 몸체를 제공 할 필요가 없다 수업 내가하고있는 일이 평범한 자바 빈을 정의하는 것이라면 이런 식의 물건, 나 그냥 가면 돼 이름의 값을 선언하십시오 성을 의미하는 불변의 것을 의미합니다

또한 불변 인 것을 의미하고, 그 다음 이메일의 var 그리고 그것은 할당 가능한 필드라는 것을 의미합니다 당신이 바닥에서 보는 것처럼 이메일에 지정할 수 있습니다 이 결론에 대해 생각할 수도 있습니다

나는 현장에 직접 지정하고있다 나는 실제로 세터에게 전화하고있다 그리고 이것은 Kotlin에 대한 멋진 부분입니다 getter와 setter 모두에 대해 암시 적으로 호출되며, C #이나 Swift 같은 언어와 비슷합니다 에서이 구문을 보았습니다

Kotlin에서 흥미로운 한 가지 자바 프로그래밍에 관해서는, 종종 Java에서는 수명주기가 있습니다 Android 라이프 사이클과 관련이 있습니다 따라서 우리는 활동주기가 다릅니다 활동 개체보다 그래서 객체에는 분명히 생성자가 있습니다 그리고 나서 우리는 활동을 시작했습니다

이는 다른 방법입니다 Kotlin은 클래스의 모든 null이 아닌 변수가 필요합니다 constructor의 말미에 의해 초기화된다 예를 들어, 공유 할 때 문제가 될 수 있습니다 생성자가 끝난 후 환경 설정

여기서 우리는 SharedPreferences를 만들 수있는 예제를 볼 수 있습니다 variable null 가능 그리고 우리가 접근 할 때, 우리는 더블 뱅 (double bang)을 사용하거나 확인을 위해 if 체크를해야한다 우리가 액세스 할 때마다, 우리가 널 (null) 변수에 액세스합니다 코 틀린에서 이것을 쓰는 더 좋은 방법은 – 안드로이드에서 우리가 할 일이 많습니다

lateinit을 사용하는 것입니다 그래서 한 lateinit 말한다 – 조금 이상한 구조입니다 그러나 이것이 실제로 의미하는 것은,이 SharedPreferences 내가 액세스 할 때 null이 아니게 될 것입니다 그러나 나는 그것을 끝내겠다고 보장 할 수는 없다 생성자가 끝날 때까지 그래서이 변수에 접근하기 전에 어느 시점에서, 저는 컴파일러에게 약속하지 않을 것입니다

따라서 null 허용 여부 검사를 완화 할 수 있습니다 하지만 그것을 지정하도록 강요하지 않을거야 생성자가 완료되기 전에 해당 필드를 실제로 초기화하지 않은 경우 그것을 액세스하면 다른 런타임 예외가 발생합니다 그래서 그것은 실제로 null 포인터 예외를 만들지 않습니다

여기까지 완전히 가버 리지 만 분명히 문서화되어있다 당신이하려는 일 여기서는 구문에 대한 기본적인 내용을 다루었습니다 코드 랩으로 돌아갈 시간입니다 3 단계를 거치면 방금 전에 말한 몇 가지 단계를 수행하십시오

일부 언어 구문을 사용하십시오 [음악 재생] 그래서 나는 한 쌍의 사람들에게서 한 가지 질문을했다 사실, Kotlin은 실제로 Java로 컴파일하기 전에 바이트 코드로 컴파일합니까? 그리고 답은 Kotlin이 직접 바이트 코드로 컴파일합니다 JVM-6 호환 바이트 코드를 생성하고, 또한 약간의 추가 정보를 추가합니다 바이트 코드로 Kotlin 언어의 일부를 지원한다

구문에 실제로 저장되는 구문 바이트 코드 파일의 헤더에있는 버퍼 따라서 자바에 대한 Kotlin과 같은 바이트 코드는 없습니다 Bytecode에 Kotlin, 바이트 코드에 Java, 그런 다음이 둘을 연결합니다 지금 제가 이야기하고 싶은 것은 Kotlin 뷰 바인딩입니다 Android 확장 플러그인입니다

JetBrains에서 온 것입니다 또한 합성 속성을 사용하여 뷰에 액세스 할 수 있습니다 그래서 우리는 이미 자바에서 이것을하기위한 라이브러리를 가지고 있습니다 프로그래밍 언어 아마 우리 모두는 버터 나이프를 보았을 것입니다

여기서 ID로 찾아보기를 건너 뛸 수 있습니다 이것은 매우 유사한 아이디어입니다 ID로 찾기 창을 건너 뛸 수 있습니다 Kotlin 컴파일러는 컴파일 시간에이를 수행 할 것이며, lazy 할당 및 캐싱을 제공합니다 그래서 저는 앞으로 나아가서 걸어 갈 것입니다

여기 몇 가지 슬라이드에서 뷰 바인딩을 사용하는 방법을 설명합니다 그래서 앱 수준의 Gradle 파일에서 이것들은 4 단계의 단계들입니다 우리는 계속해서 플러그인을 적용합니다 kotlin-android-extensions 그리고 우리가 그것을 할 때, 그것은 가고 있습니다

kotlinx 네임 스페이스에 합성 게터를 생성합니다 그래서 kotlinxandroidsynthetic입니다 그리고 이제 우리는 코드를 작성합니다

mainactivity_contacts가 있습니다 이것이 우리가 정의한 레이아웃 파일입니다 그리고 거기에서 우리는 전망을 얻을 수 있습니다 예를 들어 activity_contacts

xml을 with로 선언 한 경우 플로팅 액션 버튼이 있으며 ID가 있습니다 이것은 꽤 전형적인 코드입니다 수업 시간에 이것을 사용하고 싶을 때, ID로 찾아보기를 사용하는 대신 또는 contacts_activity에 대한 속성을 정의 할 수도 있습니다 나는 그냥 가서 FAB 액세서리를 사용할 수 있습니다 그리고 그것은 종합적으로 추가되었습니다

정적 가져 오기를 수행하면됩니다 ID로 찾기보기를 캐싱 할 것입니다 그래서 내가 FAB에 처음 접근했을 때, 그것을 찾기 위해 뷰 ID를 찾을 것입니다 그리고 나서 나는 그것을 액세스 할 때마다, 같은 인스턴스를 사용합니다 그리고 그것을 해시 맵에 캐시합니다

어제 Kotlin 이야기에서 우리는 많이 이야기했습니다 확장 기능에 대해 그래서 당신이 그것을 보지 못했다면 그것은 YouTube에 올라와 있습니다 어서보세요 오늘, 우리는 우리 자신의 확장의 일부를 정의 할 것입니다

이 코드 랩의 기능 오늘 확장 기능을 활성화하겠습니다 이 고전적인 패턴을 자바에서 보아서 프로그래밍 언어 기본적으로 isTuesday라는 메소드를 추가 할 것입니다 Date 클래스에 추가합니다 그래서 자바에서는 이것을 DateUtils라고 씁니다

우리는 정적 인 방법을 사용합니다 부울을 반환합니다 그것은 화요일이며 유일한 인수로서 날짜를 취합니다 그리고 이것은 멤버 함수처럼 보입니다 당신이 그것에 대해 생각한다면

자바에서 이것을 호출하면 DateUtilsisTuesday, date라고 말하십시오 어색한 구조에 불과합니다 하지만 모든 코드베이스에서 수행 한 작업입니다 그리고 그것은 정말로 잘 작동합니다

따라서 Kotlin은 확장 기능과 확장 기능을 제공합니다 속성을 사용하여 더 나은 구문 지원을 제공합니다 확장 기능은 확장 기능입니다 기존 클래스의 다른 멤버 추가 이미 존재하는 클래스로 마찬가지로, 확장 속성은 getter와 setter를 추가 할 수 있습니다 이미 존재하는 클래스로 여기에서는 정의 및 호출 구문을 볼 수 있습니다

확장 기능 그래서 우리는 함수를 정의하고 있습니다, isTuesday, that Date 클래스의 메서드입니다 그런 다음 인라인 할당을 사용하고 있습니다 to say 하루에 두 번이나 true로 돌아갑니다 형식 유추 때문에 우리는 함수의 반환 유형을 지정해야합니다

그리고 우리가 그것을 부를 때, 우리는 데이트를 말한다 그래서 그것은 클래스의 멤버 메소드처럼 보입니다 그러나 실제로 Date 클래스를 수정하지는 않습니다 따라서 이것이 확장 기능을 이해하는 데 핵심입니다 코 틀린

우리가이 모든 마술을하고있는 것처럼 보입니다 우리는 수업을 열고 방법을 추가하고 있습니다 그러나 우리는 그렇게하지 않습니다 따라서 Date 클래스는 다시 컴파일되지 않습니다 우리는 그것에 방법을 추가하지 않습니다

방금 isTuesday라는 정적 메서드를 정의했습니다 이는 date 매개 변수 인 단일 인수를 취합니다 Kotlin은 약간의 추가 구문을 제공합니다 이런 식으로 부르기 위해서 그래서 우리 코드는 Kotlin에서 이렇게 보입니다

그러나 실제로 우리는 수업을 열지 않았습니다 그리고 그것은 또한 전화가 어떻게 이것에 대한 의미론이 작용합니다 다음으로 얘기하고자하는 것은 람다 표현식입니다 그래서 저는 방금 람다 식을 가지고 있습니다 여기에 화면에

그리고 우리는 구문을 살펴볼 것입니다 읽고 쓰는 법, 쓰는 법 그래서 첫 번째 줄 -이 첫 번째 줄 실제로 자체적으로 모든 것을 컴파일하지는 않지만, 그러나 이야기하는 것이 유용합니다 그것은 람다 식입니다 우리는 외부에 중괄호가 있기 때문에 말할 수 있습니다

가운데에있는 화살 그리고 왼쪽에는 두 개의 인수 a와 b가 있습니다 그리고 오른쪽에는 표현 a plus b가 있습니다 그래서 이것은 두 개의 인수를 취하는 함수입니다 함께 추가합니다

우리가 컴파일하지 않았기 때문에 컴파일되지 않습니다 a와 b에 대한 유형을 제공했습니다 그래서 우리는 다음 라인으로 넘어갈 것입니다 우리는 a를 정수로, b를 정수로 정의했습니다 그래서 우리가 이것에 대해 생각한다면, 우리는 이제 더하기 b라고 말할 수 있습니다

우리는 그 람다의 리턴 타입을 지정할 필요가 없다 Kotlin에서는 정수와 정수가 항상 정수입니다 그런 다음 합계에 할당하고 우리가 유형을 제공 할 필요가없는 것을보십시오, sum은 리터럴 표현식에서 유형을 추론 할 수 있기 때문에 그것은 오른쪽에 있습니다 다음 줄, 세 번째 줄에는 합이 있습니다 여기서 sum 변수 자체에 대한 유형을 정의했습니다

그것은 두 개의 정수를 취하는 모든 함수를 말합니다 정수를 생성합니다 그 문법이 있습니다 괄호 안에는 매개 변수의 유형, 당신은 화살을 넣은 다음 오른쪽에, 함수의 반환 형식을 나열합니다 그런 다음 그것을 객체 리터럴 인 우리의 람다에 할당합니다

우리가 첫 번째 줄에 가지고 있었던 이제 컴파일되는 것을 볼 수 있습니다 타입 유추를 사용할 수 있기 때문에 그 유형을 통해 오른쪽에 매개 변수를 정수 및 정수로 정의했습니다 그리고 이제 a는 정수입니다 왜냐하면 우리는 그것이 있어야하는 맥락에서 그것을 사용했다

그리고 b는 정수입니다 왜냐하면 우리는 그것이 있어야하는 맥락에서 그것을 사용했다 그리고 다시, 우리는 여전히 돌아갈 필요가 없습니다 – 람다의 반환 유형을 말할 필요가 없습니다 그리고 마지막 줄에서 조금 더 보여줍니다 실용적인 람다의 값 notEmpty

따라서 텍스트 뷰를 사용하고 Boolean을 반환합니다 그리고 이것은 흥미로운 부분을 보여줍니다 Kotlin에서 람다 구문의 그래서이 경우에는 실제로는 아니에요 화살표 구문을 제공하거나 매개 변수의 이름을 지정합니다

하나의 매개 변수 λ에 대한 값을이 매개 변수라고합니다 그건 기본적으로입니다 항상 이름을 바꿀 수 있습니다 하지만이 경우에는 그냥 그대로 두겠습니다 그래서, 우리는 it

textisNotEmpty라고 말합니다 그래서 우리가 시작할 때 정말 빛나는 곳입니다 익명의 내부 클래스를 수행합니다 그래서 우리는 자바 프로그래밍 언어로 항상 이것을합니다

우리는 setOnClickListener를합니다 그리고 그 모든 것을 읽으면 매우 길어질 것입니다 그러나 결국에는 onClick 메서드를 재정의합니다 그리고 여기에 쓰고있는 유일한 실제 코드 performAction입니다 그 밖의 모든 것은 실제로 코드가 아닙니다

그것은 나를 위해 생성하는 IDE를 가져야 만하는 물건입니다 그래서 내가 쓰려고하는 코드를 작성할 수 있습니다 Kotlin에서는 람다를 사용하여 말하려고했다 이것이 우리가 할 수있는 일입니다 우리는 fab

setOnClickLIstener, 그리고 나서 우리는 문자 그대로 우리가 말하려고했던 코드를 작성합니다 우리는 그 여분의 것들을 모두 제거 할 수 있습니다 그리고 주변에 머물러 있습니다 형식 유추를 계속 사용합니다 훨씬 더 간결하며 Java 8과 매우 비슷합니다

람다 구문 람다가 정말 강력 해지는 곳 우리가 그들을 더 높은 순서대로 사용하기 시작할 때입니다 우리는 이미 이것의 예를 보았습니다 하지만 다른 함수를 사용하는 함수입니다 그것의 논증으로

그리고 이것은 여러분이 할 수있는 것입니다 Kotlin을 사용하여 코드를 매우 멋지게 만드십시오 읽기 쉽고 매우 표현적입니다 따라서 고차 함수의 고전적인 예 1970 년부터는 필터 방법이 있습니다 따라서 필터 메서드는 목록에 대해 작동합니다

그래서 당신은 목록을 가지고 있습니다 당신은 술어를줍니다 그리고 술어가 사실 일 때마다, 값을 포함하는 새 목록을 생성합니다 필터가 참인 곳 이제이 선언문을 읽으십시오

Kotlin 구문이 많이 표시되기 때문입니다 그래서 그것은 기능입니다 그것은 일반적인 유형 T를 가지고 있으며, 그것은 T의 목록에 대한 확장입니다 그리고 이것은 흥미로운 일입니다 왜냐하면 당신이 정의 할 수 있기 때문입니다

제네릭 형식의 확장 이것은 정말로, 정말로 할 수있는 일입니다 영리한 물건 T 물음표로 정의 할 수도 있습니다 내가 T에 확장을 정의하고 싶다

또는 T의 널값 그런 다음 filter라는 함수를 정의 할 것입니다 하나의 술어를 취합니다 그리고 나서 우리는 그것이 T 형의 1 개의 인수를 취하는 함수 부울을 반환합니다 그리고 마지막으로, 물론, 우리의 기능 T의 목록을 반환합니다

그리고 함수 안에서, 새 배열 목록을 만듭니다 그리고 항목에 대한 술어를 호출합니다 술어가 참일 때마다 새 목록에 추가합니다 그런 다음 새 목록을 반환합니다 그래서 우리가 앞서 가서 이것을 사용하려고 시도한다면, we''d는 listOf를 말한다

그것은 Kotlin의 길이다 정적 목록, 애플, 오렌지, 셀러리, 당근을 선언합니다 그리고 나서 우리는 바구니에 넣을거야 여과기 다시 말하지만, 코드를 단축하는 데 사용합니다

첫 번째 문자가 C이면 우리는 그냥 셀러리와 당근 목록을 생성하려고합니다 특히 그렇게 강하지는 않습니다 우리 모두가 루프를 쓸 수 있다고 생각해 앞으로 나아가서 우리 스스로 할 수 있습니다 그러나 우리는 훨씬 더 표현적인 것을 쓸 수 있습니다

우리가 이와 같은 보편적 인 코드를 시작할 때 이것은 데이터베이스 트랜잭션을 수행하는 방법의 예입니다 [? 방 ?] 거래를 시작해야합니다 실제 데이터베이스를 호출해야합니다

당신이하고 싶은 기능, 그리고 당신 끝내야 해 거래 그리고 당신이 그것을 더 잘하고 싶다면, 당신은 beginTransaction, call을해야합니다 당신이하고 싶은 함수, setTransactionSuccessful, 그런 다음 거래를 끝내십시오 다시 한번, onClickListener와 마찬가지로, 실제로 여기에는 실제 코드가 한 줄만 있습니다

그 밖의 모든 것들은 내가 방금하는 물건입니다 타이핑 및 / 또는 다른 수단을 통한 생성 자바 프로그래밍 언어가 작동하는 방식 때문에, 이것을 단순화하고 그것을 돌리기는 어렵다 추상화 하지만 Kotlin에서 우리는 실제로 꽤 잘 갈 수 있습니다

꽤 멀리 그래서 Kotlin에서 우리는 SQLite 데이터베이스 endTransaction을 할 수 있습니다 그래서 우리는 확장 함수를 할 것입니다 우리 데이터베이스에 그리고 우리는 그 모든 보일러 판을 정확히 놓을 것입니다

같은 방식으로 그래서 beginTransaction, setTransactionSuccessful, 및 endTransaction 하지만 우리는 그 모든 것을 쓰지 않고 우리가 작성하려고하는 모든 코드 라인을 중심으로, 우리는 코드 줄을 지나갈 것입니다 함수 인수에서 람다 (lambda)로 따라서 함수 – 인자를 취하지 않는 함수 값을 반환하지 않습니다

그래서 우리가 그것을 사용할 때, 이것처럼 보입니다, 그렇죠? 그래서 우리는 dbinTransaction을 말하고 우리는 람다를 전달합니다 그리고 나서 우리는 실제로 우리가 작성한 코드만을 씁니다 쓰기를 시도합니다 자, 이건 좀 이상해

우리가 우리의 람다 내부에서 데이터베이스에 액세스 그리고 lambda는 함수 리터럴입니다 그래서 그것에 대해 생각한다면 그것은 의미합니다 나는 끝내기 위해 폐쇄를해야 할 것입니다 해당 데이터베이스 변수

우리가 할 수있는 또 다른 방법은 함수에 데이터베이스를 전달할 수 있습니다 이 경우 함수를 SQLite로 정의합니다 SQLite 데이터베이스를 사용하고 아무 것도 반환하지 않는 함수 그래서 우리가 그렇게한다면 그것은 이렇게 보일 것입니다 db

inTransaction, itdelete 괜찮아요하지만 그건 나는 아직도 조금 이상하다고 생각한다 우리는 더 잘 할 수 있습니다 함수를 정의하는 바로이 구문 우리가 확장 람다라고 부르는 것입니다 확장 기능으로 작동하는 부동 함수입니다 기능

이렇게하면 확장 기능을 호출 할 수 있습니다 SQLite 데이터베이스 유형의 모든 객체에서 이 경우 암시적인 this를 사용합니다 우리의 확장 함수에서 thisfunc를 호출하십시오

그런 다음 다른 코드에서 dbinTransaction이라고 말할 수 있습니다 이제 데이터베이스에서 함수를 호출 할 수 있습니다 나는 그것을 사용하고 싶었다 도메인 별 언어의 시작 부분이 생성됩니다

Kotlin에서는 매우 강력합니다 코드에 대해 언급하고 싶은 것이 있습니다 그래도 우리는 여기에있다 이 코드를 컴파일하면 어떻게 될까요? 그런 다음 디 컴파일하십시오 우리는 이것으로 끝난다

그리고 조금 더러워 보이지만, 정말 중요한 것은 inTransaction을 호출 할 때입니다 새로운 함수 객체를 생성하고, 왜냐하면 매번 인수를 포착해야하기 때문입니다 Kotlin에서 함수를 작성할 때 당신은 람다 (lambda)를 취하는 고성능이 될 것이라고 생각합니다 인라인 키워드를 사용해야합니다 따라서 인라인 키워드를 사용할 수 있습니다

지정시 수행 할 작업 인라인은 실제로 소스 코드를 수행합니다 당신이 그 기능을 부를 때마다 이렇게하면 인라인과는 많이 다른 것입니다 C ++와 같은 다른 언어에서 익숙하다 Kotlin에서 인라인 함수를 호출하면 보장됩니다 – 그것은 힌트와 같지 않다 문자 적 요구 사항입니다

당신은 당신의 기능이 보장됩니다 인라인 함수의 본문 전화 사이트에서 제자리에 떨어 뜨리다 해당 인라인 함수를 호출 할 때마다 자, 이제 코드 랩을 끝내자 그래서 당신이 남긴 모든 조치 그리고 나는 모두에게 물어보고 싶었다

전에 3-5 분 정도 걸릴거야 이 파란색 탭의 피드백 양식을 여기에 작성하십시오 우리는 여러분이 코 틀린에 대해 어떻게 생각하는지 알고 싶습니다 우리가 앞으로 나아갈 것을보고 싶은 곳 그리고 Kotlin 사례 연구에 관심이 있다면, 가서 나하고 말해

나는 걸어 다닐거야 고맙습니다 [박수 갈채] [음악 재생]

빛의 계승자(HEIR OF LIGHT) CBT 플레이영상 모바일 RPG 게임

모바일 게임 소개 채널 뭐시여이겜 입니다 좋아요 한번씩 부탁드려요

이번에 소개할 게임은 게임빌의 '빛의 계승자(HEIR OF LIGHT)' 입니다 첫 시작시 질문지가 몇 개 나오는데 선택에 따라 어떤 영향이 있는지 모르겠네요 고전 RPG 게임 중 이런 질문으로 직업이나 능력치를 정하고 시작했던 게임도 있었었죠 아무튼 시작은 독특하네요 질문 3개 정도에 답하고 나면 이름을 정합니다

이름을 정한 이후 마스터를 선택하죠 계정 레벨이 올라가면 추가로 마스터를 생성할 수 있지만 처음 선택시 정보를 너무 적게 줍니다 최소한 스킬 설명이라도 볼 수 있으면 좋을텐데 일러스트와 이야기만 놓고 고르게 하네요 각 캐릭터의 인게임 모습과 스킬 설명이 도감에 있는데 이 영상 후반에 나옵니다 턴제 RPG에서는 딜러가 중요하다고 생각하므로 원거리 딜러 사이아드를 선택해봤습니다

게임 메인 화면 그래픽이나 일러 퀄리티가 좋군요 게임은 스테이지 방식으로 진행됩니다 스테이지를 선택하는 맵이 좀 독특하긴 하군요 전투에는 4명까지 배치가 가능합니다 마스터 1명과 서번트 3명으로 구성 가능한가 봅니다

서번트 3명은 마스터 클래스에 맞게 기본적으로 주어지는것 같습니다 원거리 딜러인 마스터가 앞에 놓인걸 보면 배치한 위치가 전투에서의 위치는 아닌것 같네요 전투 그래픽도 퀄리티가 괜찮아 보입니다 전투는 리얼타임이며 기본 공격 등 대부분 자동으로 진행됩니다 어그로 개념이 존재하는것 같습니다

눈 표시가 붙은 아군이 대상이란 뜻이군요 전투 화면 전환은 거리에 따라 3단계로만 조절 됩니다 스킬 이외에 따로 조작 가능한 부분은 없어 보이네요 스킬 사용은 하단 스킬 아이콘 터치로 가능합니다 적의 성향에 맞게 적절한 스킬을 사용하는게 중요할것 같습니다

연계기라는 특수 스킬 시스템이 있습니다 마스터와 낙인이 맞는 서번트를 배치하면 해당 낙인 스킬 사용시 연계기 수치가 쌓입니다 연계기 수치가 가득차면 연계기 스킬을 사용할 수 있습니다 적절한 역할 조합과 함께 연계기 조합도 신경써서 배치해야 전투를 유리하게 진행할 수 있겠네요 전투 시작 전에 적이 사용하는 스킬을 확인할 수 있습니다

마지막으로 도감을 확인해보죠 수집형 RPG이다 보니 상당히 다양한 캐릭터가 존재합니다 각 서번트마다 5가지 속성 버전이 존재하네요 처음 선택하는 마스터들의 외형과 스킬을 여기서 확인해 볼 수 있습니다

Introduction to Maps API on Android Wear (100 Days of Google Dev)

HOI LAM : Android Wear는 멋진 제품입니다 신속하고 눈에 잘 띄는 정보 당신이 연결되어있는 동안 현재에 머무를 수있게 해줍니다

자연스럽게 가장 많이 요청한 기능은지도에 위치를 표시하는 것입니다 저는 Hoi Lam이고 최신 Google Play 서비스 업데이트로, Google Maps API가 Android Wear에 도착했습니다 이것은 클래스 매핑 기능이 최고라는 것을 의미합니다 단 몇 줄의 코드 만 남기고 이 Tech Byte에서는 몇 가지 일반적인 사용 방법을 설명합니다 Android Wear에서지도 API에 대한 사례, 이를 구현하는 방법에 대한 첫 걸음을 제공합니다

시작하기 전에 좋은 소식이 있습니다 Android Wear의 Google Maps API Android 휴대 전화 및 태블릿과 동일한 API를 기반으로합니다 결과적으로 Android에서 Google Maps API를 사용한 경우 전에, 집에서 바로 느낄거야 가장 일반적인 사용 사례 중 하나는 단순히지도를 표시하는 것입니다 앱에서 획기적인 마크를 표시해야 할 수도 있습니다

또는 실행중인 경로를 표시 할 수 있습니다 이 경우, Map Fragment 또는 Map View에 사용할 수 있습니다 Google Maps API 키를 신청하십시오 필요한 경우 마커 및 폴리 라인을 추가합니다 이 모든 기능을 사용할 수 있습니다

이미 동일한지도 API를 사용하고 있습니다 Android에서 잘 알고 있지만 단 한 가지주의 사항 만 있습니다 Android Wear가 제스처를 예약합니다 해고를 위해 왼쪽에서 오른쪽으로 스 와이프하는 중 현재 응용 프로그램 주위를 둘러 볼 맵이 필요하지 않은 경우, 이것은 계속 작동 할 것입니다

그러나 주위를 돌아 다니며 이동하려는지도가 필요한 경우, 이 특정 해제 동작을 무시해야합니다 혼란을 줄이고 실제로 사용자가 앱을 나가게하십시오 이렇게하려면 Overly Dismissing을 구현해야합니다 보기, 십자가와 함께이 빨간색 동그라미, 긴 클릭 이벤트에 첨부하십시오 뷰는 닫는 동작을 처리합니다

또 다른 일반적인 사용 사례는지도에서 위치를 선택하는 것입니다 친구 또는 택시가 당신을 거기에서 만날 수 있도록 이를 구현하기 위해 마커를 배치 할 수 있습니다 화면의 한가운데에 놓고 사용자가 주변에서 놀 수있게하십시오 지도

이것은 맵 조각 내에서 선택된 위치를 나타냅니다 요소 그런 다음 Google지도 onCameraChange 리스너를 사용하십시오 사용자가지도 주변에서 이동했는지 여부를 감지합니다 새 위치는 다음을 통해 액세스 할 수 있습니다

cameraPositiontargetlatitude 그리고 경도 그런 다음이 정보를 수신자에게 보낼 수 있습니다 친구 나 택시 운전사가 되십시오

사용 방법을 구현하는 방법에 대한 자세한 기술 정보는 우리가이 기술 바이트에서 설명한 경우, Maps API 블로그 게시물로 이동하십시오 또한 심층적 인 참조 정보 Google 개발자에게 제공됩니다 이 두 번째 링크를 통해 나는 Hoi Lam입니다 Android Wear는 사용자를 위해 설계되었습니다 이동 중에도 연결 상태를 유지할 수 있습니다

Android Wear의 Google지도 API를 사용하면 개발자는 Google지도에 힘 입어 강력한 도구를 갖추고 있습니다 따라서 실제 사용자를 계속 움직여 보겠습니다

New APIs in M for Android for Work (100 Days of Google Dev)

JESSICA : 작년에 Android for Work, 안드로이드를 멋지게 만드는 새로운 방법 직원 및 비즈니스를위한 롤리팝에서는 설탕으로 덮인 노력을했습니다 Android 기기를 관리 대상으로 만들기 배포

이제 IT 관리자는 회사 소유 장치를 안전하게 배포 할 수 있습니다 그들은 또한 자신의 장치 또는 "BYOD"를 가져올 수 있습니다 나는 제시카 야 Android for Work를 어떻게 개선했는지 알려 드리겠습니다 M 릴리스에서는 장치 관리를위한 더 많은 API가 제공되므로, 더 나은, 더 세련된 BYOD 경험, 그리고 완전히 "COSU"라는 장치를 배포하는 새로운 방법 나중에 자세히 설명해 드리지만 앱을 제작하거나 배포하는 경우 비즈니스 용으로이 비디오를보고 싶을 것입니다

여기 당신을위한 간단한 요약 Android for Work에 대해 이미 모르는 사람들 수백만 명의 사람들이 자체 장치를 가져오고 있습니다 직장에 Android Lollipop에서는 안전한 업무용 프로필을 설정할 수 있습니다 IT 관리자가 관리합니다 업무용 프로필에는 별도로 관리합니다

사용자는 회사의 엔터프라이즈 모빌리티를 설치하기 만하면됩니다 관리 앱 및 로그인 만세 또 다른 두문자어 – "EMM" 우리는 위대한 EMM과 제휴했습니다 Android for Work 솔루션을 출시했습니다

우리는 또한 기업을위한 방법을 추가했습니다 기업 소유의 장치를 L 이 모델을 기기 소유자라고합니다 IT 부서가 요구할 때 완벽합니다 전체 장치를 제어 할 수 있습니다

이 모든 것은 직원에게 평소와 같이 꽤 사업 적입니다 일단 그들이 그들의 개인 장치를 등록하면, 워크 벤치 버전의 Play 스토어를 볼 수 있습니다 여기에서 기업용 앱을 다운로드 할 수 있습니다 고용주가 승인 한 개인용 및 업무용 앱을 사용할 수 있습니다 런처에서 나란히

업무용 앱과 알림은 일괄 처리되어 있으므로 즉시 알아볼 수있는 이제 M 릴리스의 새 API로 이동해 보겠습니다 IT 관리자는 모바일 데이터의 양을 관리해야합니다 직장 앱이 사용하고 있습니다 그래서 우리는 작업 프로필에 대한 새로운 네트워크 사용 API를 추가했습니다

IT는 응용 프로그램별로 데이터 사용량을 세분화 할 수도 있습니다 관리자는 엄청난 돈을 쓸 수 있습니다 기업 자원에 대한 액세스를 구성하는 시간 각 장치에 대해 새 API로이 문제를 해결했습니다 IT 승인 앱에서 인증서를 설치할 수 있습니다 이제 사용자는 기업 자격 증명을 한 번만 입력하면됩니다

및 작업 응용 프로그램에 필요한 인증서가 있습니다 리소스에 안전하게 액세스 할 수 있습니다 IT 부서의 업무를보다 쉽게하기 위해 그들은 지금 읽기 전용 Wi-Fi 구성을 추가 할 수 있어야합니다 기업 소유 기기에서 이렇게하면 장치를 확보 할 수 있습니다

번거 로움없이 기업 네트워크에 올라 타라 또는 우발적 인 삭제 또한 지원 요청 량이 줄어 듭니다 일을 결코 사용하지 말아야한다 당신이 알고 사랑하는 장치

그래서 우리는 약간의 개선 작업을했습니다 프로파일을 사용하여 M에서 BYOD 경험을 향상시킬 수 있습니다 첫째, 동일한 기기에 개인용 앱과 업무용 앱이 모두있는 경우, 사용자가 상태 표시 줄에 작업 아이콘을 볼 수 있습니다 그래서 그들은 그들이 일하는 앱에 언제 있는지 알고 있습니다 둘째, 가상 사설망을 설정하는 앱 소비자에게 인기가 높으며 비즈니스에 사용됩니다

IT 부서는 종종 업무용 프로필에 VPN 앱을 배포합니다 기업 서비스에 대한 보안 액세스를 제공합니다 이제 VPN 앱이 통합 설정 제어판에 나타납니다 Google은 사용자 경험을 개선했습니다 따라서 기업 VPN 애플리케이션은 분명합니다

개인적인 것들과 나란히 표시됩니다 마지막으로 연락처 공급자를 개선했습니다 이제 직장 연락처 이름을 시스템 앱에서 사용할 수있게되었습니다 그래서 당신의 상사로부터 신비가 더 이상 전화하지 않습니다 당신은 단지 숫자 대신 사장님의 이름을 보게 될 것입니다

지금까지 우리는 IT 관리자가보다 쉽게 ​​생활 할 수있는 방법을 모색했습니다 사용자에게 더 좋습니다 이제 Android 기기에 흥미로운 새로운 용도에 대해 이야기 해 보겠습니다 비행기에 탑승 해 체크인했는지, 차를 렌트했는지, 또는 주문 된 룸 서비스? 네가 할 수 있다면 좋지 않을까? 터미널에서 안전하게 관리되는 Android 기기에서이를 수행하고, 키오스크 또는 호텔 방에서? 이제 Android for Work를 통해 IT 부서에서 이러한 기기를 관리 할 수 ​​있습니다 우리는 이것을 COSU라고 부릅니다

기업 소유의 단일 사용 장치 NFC 범프와 같은 단일 프로비저닝 단계에서, 이제 IT 부서에서 새 기기를 설정하고 앱에 고정 할 수 있습니다 기기 소유자는 새로운 API를 사용하여 기기에서 앱을 관리 할 수 ​​있습니다 공공 장소에서 이것들을 좋아하십시오 Android 용 Work in M에서 업데이트 한 내용입니다

나는이 일과 관련된 좋은 것들이 당신을 흥분하게 만들길 바래요 우리는 그렇습니다 우리의 일은 당신의 직업을 조금 더 쉽게 만들어주는 것입니다 Android를 직장에서 더욱 맛있게 만들어줍니다 내 이름은 제시카 야

지켜봐 줘서 고마워 나는 그걸로 돌아가는 게 좋을거야 [음악 재생]

Unlocking Location Context with the Android Places API (100 Days of Google Dev)

[음악 재생] 앱을 더 스마트하게 만드시겠습니까? 사용자의 위치 이해하기 도움이 될 수있는 핵심 성분 중 하나입니다 보다 쉽고 직관적 인 사용자 환경을 만들 수 있습니다

나는 제임스 맥길이야, 너에게 보여줄거야 Android 용 Google Places API를 사용하는 방법 지능적으로 앱 동작을 기반으로 사용자의 현재 위치에서 얼마 동안 개발자들은 Android에서 위치 서비스를 사용할 수 있습니다 사용자의 위치를 ​​더 잘 이해할 수 있습니다 그러나 Google 사용자 및 API 두 가지 다른 언어로 말하고 있습니다 위치 API는 위도와 경도를 사용하여 통신합니다

하지만 너와 나는 만날 곳을 이야기 할 때, 우리는 특정 카페 나 레스토랑의 이름을 사용합니다 긴 숫자 Android 용 Google Places API 이 둘 사이의 번역에 필요한 누락 된 키를 제공합니다 언어 및 100 이상의 Google 데이터베이스에서 제공 백만 개 장소 이것을 당신이 이것으로 바꿀 수 있도록

우리가 응용 프로그램을 만들고 있다고 상상해 봅시다 피트니스 팁을 제공하여 사용자의 웰빙을 향상시킬 수 있습니다 그들이 어디에 있든 상관 없습니다 사용자가 앱을 열면 그들에게 가장 유용한 정보를 보여줄 수있다 그 당시와 그 특별한 장소에서

우리는 그들이 어디에 있는지 물어볼 수 있습니다 누가 다른 탭을 필요로하는지 우리의 애플 리케이션을 사용하는 방식으로? Google Places API 사용 현재 장소 가져 오기 방법 우리는 그 프롬프트를 건너 뛰고 자동으로 사용자가있는 장소를 결정하십시오 현재 장소 가져 오기는 장소 목록을 반환합니다 기기의 현재 위치를 기반으로 우도에 따라 정렬됩니다 유사한 기능이 웹을 통해 제공되었지만 몇 시간 동안 Places API를 사용하면 정확도와 정밀도 모두 향상 API를 Android로 가져 오는 과정에서 Google은 API를 깊이 통합함으로써이 목표를 달성했습니다

다양한 센서 사용 가능 Wi-Fi 및 블루투스를 포함한 최신 휴대 기기에서 가능한 장소 목록을 결합하여 앱의 맥락에서이 견적을 향상시킬 수 있습니다 더욱 여기서는 연결된 장소 유형을 사용할 수 있습니다 각 입장은 휘트니스 경기장 만 필터링 할 수 있습니다 공원과 체육관처럼

각 장소와 함께 현재 장소 방법을 얻습니다 우도를 반환합니다 0과 1 사이의 값입니다 장치가 얼마나 가능성이 높은지 나타내는 특정 장소에서 이 값을 앱에서 임계 값으로 사용할 수 있습니다

우리가 정말로 그 위치를 추론 할 수 있도록 말이된다 피트니스 앱의 경우 07 이상일 수 있습니다 체육관이나 공원으로 지정된 장소 매우 강한 신호입니다 사용자에게 그들이 어디에 있는지 묻지 않아도되도록 사용할 수 있습니다

굉장해 Google API 팀은 정확성 향상에 투자합니다 이러한 장소 검색 API 중 따라서 시간이 지남에 따라 첫 번째 장소의 가능성이 증가했다 우리가 더 빨리 거기에 도착할 수 있도록 돕고 싶다면, Place 메서드에서 Report Device를 호출하면됩니다

신호가 강한 경우 사용자가 특정 위치에 있다는 것을 나타냅니다 제출 된 데이터는 익명으로 처리되어 개선됩니다 우리의 세계 모델이지만 검색 할 수는 없다 귀하의 응용 프로그램이나 최종 사용자가 따라서이 데이터에 액세스하는 것이 중요한 경우, 영구 데이터 저장소에도 저장해야합니다 가장 좋은 점은이 기능 무료로 기본으로 제공됩니다

확인 된 개발자의 경우 하루에 최대 150,000 개의 쿼리가 허용됩니다 더 필요해? 걱정 마 이 URL에서 우리와 연락을 취하십시오 또는이 사이트에서 지침을 확인하십시오 개발 프로젝트를 검증하는 방법

Google Places API를 사용하면 의미 론적 위치 정보를 앱에 가져와야합니다 시작하려면 시작하기를 확인하십시오 이 URL의 안내 나는 James McGill이고, 나는 기다릴 수 없다 Android 용 Google Places API로 장소를보고 있습니다

[음악 재생]

Introduction to Android In-App Billing API – The Zen of Monetization #6

Android 앱으로 돈을 벌고 싶습니까? 그러나 일은 복잡합니다 신용 카드와 결제 시스템을 갖춘 [비 일치], 맞습니까? 안녕

나는 네토 마린이고, 네가 이해하도록 돕기 위해 왔어 앱에서 인앱 결제를 사용하고 작성하는 방법, 당신이 돈을 벌기가 더 쉬워 지도록 앱에서 수익을 창출하는 데는 여러 가지 방법이 있습니다 AdMob으로 광고를 게재 할 수 있으며, Freemium 버전에서 업그레이드 제공 프리미엄 기능에 대해 지불하거나 가상 제품을 판매하십시오 또한 앱 또는 서비스에 구독 모델을 사용할 수 있습니다

그리고 이러한 방법 중 일부는 인앱 결제를 사용하여 돈을 수령 할 수 있습니다 인앱 결제는 호스팅되는 서비스입니다 추가 콘텐츠 요금을 청구 할 수있는 Google Play 앱에서 업그레이드 할 수 있습니다 인앱 결제를 앱과 통합 할 때, API를 사용하여 Google에서 제품 세부 정보를 요청할 수 있습니다 인앱 상품에 대한 주문, 배송 정보를 신속하게 검색 할 수 있습니다

사용자의 구매 내역을 기반으로 사용자의 경우 Google Play에서 수표를 제공합니다 사용자가 인앱과 상호 작용하도록하는 외부 인터페이스 직관적이고 원활한 결제 서비스 인앱 결제 API에는 몇 가지 규칙 및 모범 사례 인앱 결제를 사용하는 경우에만 디지털 제품을 판매 할 수 있습니다 예를 들어, 우리는 제품을 말하고 있습니다

동전, 추가 생명, 특별 물품, 또는 추가 수준 광고 기능이없는 버전, 또는 무료 버전에서 사용할 수없는 기능 스트리밍 미디어, [INAUDIBLE] 동영상 또는 기타 미디어 서비스 그러나 다른 제품도 있습니다 인앱 결제에서는 허용되지 않습니다

소매 식료품, 식료품, 의류, 가정 용품 및 전자 제품 세금 및 운송 서비스를 포함한 서비스 수수료, 청소, 음식 배달 및 기타 일회성 회비 또는 회비, 체육관 회원권, [INAUDIBLE], 또는 다른 회계 제품 피어를 포함한 일회성 지불 피어 지불, 온라인 경매 및 기부 또는 전자 청구서 지불 (신용 카드 청구서 포함) [INAUDIBLE] 및 케이블 또는 텔레 커뮤니케이션 서비스 이 정책에 대한 자세한 내용은 우리의 지원 페이지를 확인하십시오

인앱 결제를 구현하는 첫 단계 Google Play 개발자를 사용하여 제품을 정의하는 것입니다 제품 유형, SKU, 가격 등을 포함한 콘솔 버전 3 API는 관리되는 인앱 제품을 지원합니다 및 구독 각 유형에 대한 자세한 내용을 살펴 보겠습니다

관리되는 인앱 상품은 항목입니다 Google Play에서 추적하고 관리합니다 Google Play에서 구매 항목을 저장한다는 의미입니다 각 항목에 대한 정보 이 정보는 모든 Google Play 서비스, 사용자가 애플리케이션을 제거하더라도, 또는 장치를 변경하는 경우 또한 버전 3 API를 사용하면 관리되는 항목, 그들은 여러 번 구입할 수 있습니다

이것은 게임을 구현할 때 유용합니다 예를 들어, 사용자가 통화, 음식, 마법의 물약, [INAUDIBLE] 이 인앱을 프로비저닝해야합니다 제품을 사용자에게 제공합니다 한 번만 구매할 수있는 인앱 제품의 경우, 소비를 구현할 필요가 없습니다 구매 후, 이들 항목 사용자 Google 계정에 영구적으로 연결됩니다

프리미엄 업그레이드 또는 레벨 팩처럼 인앱 결제를 위해 제공되는 다른 유형의 제품 가입입니다 구독을 통해 콘텐츠, 서비스 또는 기능을 판매 할 수 있습니다 자동화 된 결제로 반복되는 일정에 따라 사용자가 앱에서 구독을 구매할 때, Google Play는 모든 체크 아웃 세부 정보를 처리하며, 따라서 어떤 금융 거래도 처리 할 필요가 없습니다 반복 청구, 당신이 선택한 간격으로

매주, 매월, 3 개월, 6 개월, 매년, 그리고 계절 무료 평가판 기간을 설정할 수도 있습니다 사용자가 구독을 시도 할 수있게 해줍니다 콘텐츠를 구매하기 전에 Google Play는 모든 구독 유형에 대한 무료 평가판을 지원합니다 계절 구독을 포함하여 프로모션은 새로운 사용자를 유치하기위한 좋은 방법이며, 잠시 떨어져있을 수도있는 사용자와 소통 할 수 있습니다

버전 3에서는 인앱 결제를 사용할 수 있습니다 제품의 프로모션 코드를 만들고 관리 할 수 ​​있습니다 보시다시피 인앱 결제는 많은 이점을 제공합니다 귀하와 귀하의 사용자를 위해 다음 비디오에서는 우리가 손을 볼 것입니다 Google Play에서 제품을 정의하는 방법을 알려 드리겠습니다

개발자 콘솔을 사용하고 구매 흐름을 구현하십시오 만약 당신이 스스로 탐험을 시작하고 싶다면, 인앱 결제에 대한 설명서 및 가이드를 확인하십시오 API 시청 해 주셔서 감사 드리며 다음 동영상에서 만나실 수 있습니다 안녕