{1, 1, 1}のリスト
using System.Linq; IList hogeList = null; hogeList = Enumerable.Repeat(1,3).ToList();
1
が3
つ
using System.Linq; IList hogeList = null; hogeList = Enumerable.Repeat(1,3).ToList();
1
が3
つ
command
+ ,
Input -> Emulate Numpadを選択。(チェック入れる)
Kotlin ktorのWebでうまく日本語が出ない・・。
call.respondText("へろわ", ContentType.Text.Html)
のように書いてだめだったのでこうしたのに。
import org.jetbrains.ktor.netty.* import org.jetbrains.ktor.routing.* import org.jetbrains.ktor.application.* import org.jetbrains.ktor.host.* import org.jetbrains.ktor.http.* import org.jetbrains.ktor.response.* import java.net.URLEncoder // URLEncoder使うため fun main(args: Array<String>) { val server = embeddedServer(Netty, 8080) { routing { get("/") { val msg = "へろわ" //var en = URLEncoder.encode(msg, Charsets.ISO_8859_1.toString()) var en = URLEncoder.encode(msg, Charsets. UTF_8.toString()) //val en = URLEncoder.encode(msg, Charsets.UTF_8.name()) call.respondText(en, ContentType.Text.Html) } } server.start(wait = true) }
ちなみに、IntelliJ IDEAを使っってる。 この辺の設定はUTF-8なんだけどな。
設定ファイルを一応ヘルプから生成しておいた。
すでにUTF-8なのでCharsets.UTF_8
は不要だと思う運だけどな・・。
ちなみにtoString()
とname()
で結果が変わった。
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) }
これの記載は
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…)。
ここを1.0から1.1にする。
しかしこれではだめだった。
今回のプロジェクト設定もする。 (個別設定があるので先程の手順はいらないかもれない)
プロジェクト名のあるフォルダを右クリックしてここを選ぶ。(ショートカットは「command
+ ↓
」)
さらにここで自分のtest/test_mainを選んで1.1にする。
「Use project settings」にチェックでもいいと思う。先程の手順はいらないかもれないって言ったけどこの時なら役立つね。
これでやっと動いたーーーーーー。