万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

  • ・資産運用おすすめ
    10万円は1000円くらい利益
    資産運用ブログ アセマネ
    • ・寄付お願いします
      YENTEN:YYzNPzdsZWqr5THWAdMrKDj7GT8ietDc2W
      BitZenny:ZfpUbVya8MWQkjjGJMjA7P9pPkqaLnwPWH
      c0ban:8KG95GXdEquNpPW8xJAJf7nn5kbimQ5wj1
      Skycoin:KMqcn7x8REwwzMHPi9fV9fbNwdofYAWKRo

    Kotlinのktorを使う

    Getting Startedを見てみる。 Getting Started · Kotlin/ktor Wiki · GitHub

    importがない・・・。

    https://github.com/Kotlin/ktor

    公式でさえ

    embeddedServer(Netty, 8080) {
        routing {
            get("/") {
                call.respondText("Hello, world!", ContentType.Text.Html)
            }
        }
    }.start(wait = true)

    しかない。 一応これをsrc/main/kotlin/main.ktにでも記載する。

    fun main(args: Array<String>) {
        val server = embeddedServer(Netty, 8080) {
            routing {
                get("/") {
                    call.respondText("Hello, world!", ContentType.Text.Html)
                }
            }
        }
        server.start(wait = true)
    }

    build.gradle

    これの記載は

    buildscript {
    //    ext.kotlin_version = '1.0.3'
    //    ext.ktor_version = '0.3'
    
        ext.kotlin_version = '1.1.3'
        ext.ktor_version = '0.3.2'
    
        repositories {
            mavenCentral()
        }
    
        dependencies {
            classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        }
    }
    
    apply plugin: 'kotlin'
    apply plugin: 'application'
    
    repositories {
        mavenCentral()
        maven { url "https://dl.bintray.com/kotlin/kotlinx" }
        maven { url "https://dl.bintray.com/kotlin/ktor" }
    }
    
    dependencies {
        compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
        compile "org.jetbrains.ktor:ktor-core:$ktor_version"
        compile "org.jetbrains.ktor:ktor-locations:$ktor_version"
        //runtime "org.jetbrains.ktor:ktor-netty:$ktor_version"
        compile "org.jetbrains.ktor:ktor-netty:$ktor_version"
        // いらないかも?(https://mvnrepository.com/artifact/io.netty/netty-all/4.0.4.Final)をみた
        compile group: 'io.netty', name: 'netty-all', version: '4.0.4.Final'
    }
    
    sourceSets {
        main.kotlin.srcDirs += 'src/main/kotlin'
        main.java.srcDirs += 'src/main/java'
    }
    // いらないかも?
    mainClassName = 'org.jetbrains.ktor.netty.DevelopmentHost'

    インポートの記載

    一旦ここを参考にした。 ohtomi.hatenablog.com

    import org.jetbrains.ktor.netty.*
    import org.jetbrains.ktor.netty.embeddedNettyServer // deprecatedなので不要
    import org.jetbrains.ktor.routing.*
    import org.jetbrains.ktor.application.*
    import org.jetbrains.ktor.host.*
    
    import org.jetbrains.ktor.http.* // embeddedServer
    import org.jetbrains.ktor.response.*
    
    fun main(args: Array<String>) {
        val server = embeddedServer(Netty, 8080) {
            routing {
                get("/") {
                    call.respondText("Hello, world!", ContentType.Text.Html)
                }
            }
        }
        server.start(wait = true)
    }

    org.jetbrains.ktor.netty.embeddedNettyServerをインポートするともうdeprecateで古いって言われる。 新しいembeddedServerを使うためimport org.jetbrains.ktor.http.*を使う。

    この辺を見るとimportの参考になる ktor/EmbeddedApplication.kt at 8e14bfa6d032a5ab03fad724dde503d52e1aeccb · Kotlin/ktor · GitHub

    他にもどのメソッドがどこにあるかわからないがこんな感じ? ↓

    routing・・・import org.jetbrains.ktor.routing.*をする。 call・・・・import org.jetbrains.ktor.response.*をする。 Netty・・・・こいつが曲者import org.jetbrains.ktor.netty.*にある。

    build.gradle

    //    ext.kotlin_version = '1.0.3'
    //    ext.ktor_version = '0.3'

    コメントアウトしたのは1.0だとcall.respondTextが使えないとか言われるから。

    build.gradle · master · Artur Bosch / TinboServer · GitLab

    でも正しいバージョンとかわからないので↑を見て。

        ext.kotlin_version = '1.1.3'
        ext.ktor_version = '0.3.2' // 上だと1だけど2でも行けたからそっちにした

    にした。

    Error:(13, 13) Kotlin: 'get(String, suspend PipelineContext<ApplicationCall>.(ApplicationCall) -> Unit): Route' is only available since Kotlin 1.1 and cannot be used in Kotlin 1.0
    Error:(13, 13) Kotlin: The feature "coroutines" is only available since language version 1.1 (see: https://kotlinlang.org/docs/diagnostics/experimental-coroutines)
    Error:(14, 22) Kotlin: 'respondText(String, ContentType): Unit' is only available since Kotlin 1.1 and cannot be used in Kotlin 1.0

    があああ・・とまだいろいろエラーでる。 build.gradleに書いたのは関係ない?

    おそらくIDE自体の設定で、今回のプロジェクトに絞ったのではない設定だと思うが、 「command + ,」での設定(またはバーのIntelliJ IDEA→Prefarences…)。

    f:id:shinriyo:20170521153123p:plain

    ここを1.0から1.1にする。

    しかしこれではだめだった。

    今回のプロジェクト設定もする。 (個別設定があるので先程の手順はいらないかもれない)

    f:id:shinriyo:20170521153653p:plain

    プロジェクト名のあるフォルダを右クリックしてここを選ぶ。(ショートカットは「command + 」) さらにここで自分のtest/test_mainを選んで1.1にする。

    「Use project settings」にチェックでもいいと思う。先程の手順はいらないかもれないって言ったけどこの時なら役立つね。

    これでやっと動いたーーーーーー。 f:id:shinriyo:20170521154554p:plain

    Kotoline

    めんどくさいけどSDKMAN使えば楽。 JVMコマンド。

    SDKMAN

    curl -s "https://get.sdkman.io" | bash

    Kotlin

    sdk install kotlin

    Java

    Java入れてないので・・・

    sdk install java
    Oracle requires that you agree with the Oracle Binary Code License Agreement
    prior to installation. The license agreement can be found at:
    
      http://www.oracle.com/technetwork/java/javase/terms/license/index.html
    
    Do you agree to the terms of this agreement? (Y/n): Y
    
    
    Downloading: java 8u131
    
    In progress...
    
    ###################                                                       27.3%

    Gradle

    Apache AntやApache Mavenのコンセプトに基づくオープンソースビルド自動化システムであり、プロジェクト設定の宣言にはApache Mavenが利用するXML形式ではなくGroovyベースのドメイン固有言語 (DSL) を採用している。

    どっちも使ったことないけどMavenと似たようなやつと思うが、Gradleんがいいっぽいのでそうした。 こいつもsdkコマンドで入るぜ。

    sdk install gradle

    Unity uGUIのRectTransformのpivot

    http://answers.unity3d.com/questions/1007886/how-to-set-the-new-unity-ui-rect-transform-anchor.html

    なので左上にするなら

        public static void SetPivotLeftUp(this RectTransform aRectTransform)
        {
            Vector2 vec2 = Vector2.one;
            vec2.Set(0.0f, 1.0f);
            aRectTransform.anchorMax = vec2;
            aRectTransform.anchorMin = vec2;
            vec2.Set(0.5f, 0.5f);
            aRectTransform.pivot = vec2;
        }

    Google Map iOSのClientParametersRequest failedエラー

    GoogleMapのAPIを使おうと

    developers.google.com

    ここに行って設定したのにも関わらず、、、

    ClientParametersRequest failed, 7 attempts remaining (0 vs 11). Error 

    のエラーがXcodeで出てくる。

    ここ見た。 http://stackoverflow.com/questions/32054346/googlemaps-gmsview-wont-display-in-ios

    このページで console.developers.google.com ↓のを有効にする。 f:id:shinriyo:20170514221025p:plain

    UnityでinterfaceのList

    ReorderableListを使いたいが interfaceはシリアライズにできないので http://answers.unity3d.com/questions/783456/solution-how-to-serialize-interfaces-generics-auto.html

    https://msdn.microsoft.com/en-us/library/system.runtime.serialization.iserializable.getobjectdata(v=vs.110).aspx