19/02/20 15:54:05.41 agArr1lp.net
ダー子
338:デフォルトの名無しさん
19/02/20 16:09:47.41 xuurx1V0.net
>>331
URLリンク(9to5google.com)
つまりJavaもKotlin/JVMも使える
339:デフォルトの名無しさん
19/02/20 17:27:44.53 9tgV50SM.net
Dream → Nightmare
340:デフォルトの名無しさん
19/02/20 19:05:59.81 v7iPz90J.net
夢は見るもの
目標は叶えるもの
341:デフォルトの名無しさん
19/02/20 19:45:33.26 TCqLAjvR.net
夢を見る島
342:デフォルトの名無しさん
19/02/20 21:47:37.37 sBZRwN3G.net
>>337
小鳥ん島
>>336
揚げ足鳥で悪いが、目標は達成するものだと思う。
343:デフォルトの名無しさん
19/02/22 04:03:22.89 DtR1+6r8.net
>>334
まじかよダートいらねーじゃん
344:デフォルトの名無しさん
19/02/23 12:08:36.03 9pS68leH.net
Котлин
345:デフォルトの名無しさん
19/02/24 12:59:23.23 pmK9w2Lp.net
ランキング画面を作っていてRecyclerViewの項目のソートをしたいんですが、
Cellectionをお気に入り数の降順でソートした上で、
タイトルとサブタイトルの昇順にソートするにはどうしたらいいですか
以下でお気に入り数の降順でソートするところまではできたんですが。
RankingDatas.sortedByDescending { it.bookMarkCount }
346:デフォルトの名無しさん
19/02/24 17:16:45.57 DytDvOjA.net
俺だったらデータを抜いてくる時点でソートをかけて抜いてくる。
347:デフォルトの名無しさん
19/02/24 17:28:12.24 pmK9w2Lp.net
APIレスポンスはそうして返してるんですが、
ローカルでお気に入りオンオフしてランキング順位が変わった場合に
再度APIを叩いてデータを取り直すのも微妙なので
その場合はローカルでソートして
順番を入れ替えたいという感じです
348:デフォルトの名無しさん
19/02/24 18:25:01.14 nlMNXQkf.net
ドキュメントにこう書いてあるからascendingとdescendingを順次呼び出せばいいんじゃない?
The sort is stable. It means that equal elements preserve their order relative to each other after sorting.
呼び出す順序はソート優先順位の逆順で
349:デフォルトの名無しさん
19/02/24 20:05:27.33 pmK9w2Lp.net
rankingDatas.sortedByDescending { it.bookMarkCount }.sortedBy { it.title }.sortedBy { it.subTitle }
やってみましたが、途中の結果は捨てられて単に subTitle の降順になるようです
350:デフォルトの名無しさん
19/02/24 20:26:13.24 pmK9w2Lp.net
昇順か
351:デフォルトの名無しさん
19/02/24 21:01:47.88 DSwgvg4z.net
sortedWithつかえ
352:デフォルトの名無しさん
19/02/24 21:07:06.34 pmK9w2Lp.net
できましたありがとうございました
353:デフォルトの名無しさん
19/02/25 01:07:00.43 EPSsIluE.net
呼び出す順序はソート優先順位の逆順でと言ったのに伝わらなかったか
354:デフォルトの名無しさん
19/02/25 05:33:03.93 D5d9E5fI.net
「kotlin sort multiple fields」で検索!
355:デフォルトの名無しさん
19/02/26 03:00:37.89 lsok3PaS.net
こういうことしたかったのか?
URLリンク(code.i-harness.com)
356:デフォルトの名無しさん
19/02/26 06:27:00.41 oQJIDyJZ.net
久しぶりに触ったらcoroutineがだいぶ変わってるらしくて以前からとりあえず動くけどよく分かってない状態だったのにもう全然分からないよ……(´・ω・`)
357:デフォルトの名無しさん
19/02/26 07:07:49.29 UAPWfCGq.net
>>352
とりあえず前知識として「コールバック地獄」について知っておくといいかも
358:デフォルトの名無しさん
19/02/26 08:39:12.02 5k0N70Wq.net
coroutine登場人物多すぎ
359:デフォルトの名無しさん
19/02/26 09:55:03.32 E0EMtjG2.net
え?子ルーチンそんなに変わったの?
360:デフォルトの名無しさん
19/02/26 10:37:15.60 UAPWfCGq.net
experimental中は色々変わったけど正式版以降の使い方は基本的に変わってないよ
URLリンク(github.com)
361:デフォルトの名無しさん
19/02/26 12:06:54.02 5MxkS3P7.net
>>351
のリンク先で、数値なら、- で降順にできるのか?
list.sortedWith(compareBy({ -it.age }, { it.name }, { it.address }))
Ruby なら、
arr2 = arr.sort_by { |a| [ -a[:score], a[:room] ] }
362:デフォルトの名無しさん
19/02/26 18:17:15.84 k06atLuF.net
>>357
できる。
363:デフォルトの名無しさん
19/02/28 03:26:51.88 oRFlldUh.net
ま、しかし、複数項目で昇順降順が混在する場合は自分で Comparator 作っちゃった方が楽かもね。
364:デフォルトの名無しさん
19/02/28 07:06:25.14 Lh1ejLNL.net
いやいや rankingDatas.sortedBy { it.subTitle }.sortedBy { it.title }.sortedByDescending { it.bookMarkCount } でいいじゃん
365:デフォルトの名無しさん
19/02/28 09:12:21.78 sPMvbV7g.net
直感的でない
366:デフォルトの名無しさん
19/02/28 09:15:13.48 UGZ/YaG8.net
>>360
処理時間3倍かかるよそれ
367:デフォルトの名無しさん
19/02/28 10:37:24.91 o8LdAn98.net
>>362
10万件ソートするなら使えないし、1000件しかソートしないなら問題ない
ランキングならたいした件数ないんじゃない
368:デフォルトの名無しさん
19/02/28 13:05:23.62 oAFMMcaR.net
>>360
それって2番目の並べ替えで1番目の並べ替えの順序が変わらないことは保証されてるの?
369:デフォルトの名無しさん
19/02/28 13:16:03.81 TwQuwGRl.net
stable sortだから保証されてる
370:デフォルトの名無しさん
19/02/28 15:53:56.89 sPMvbV7g.net
mutableLivedataを外部に公開したら良くないってことで
別途livedataを作ってそいつに参照を持たせて
外部にはlivedataだけ公開するっていうのを
全部のmutableLivedataに対して行うの面倒臭いんですが
なにかいい方法ないですか
371:デフォルトの名無しさん
19/02/28 19:05:52.26 TwQuwGRl.net
よく知らないけどmutableLivedataをコンストラクタで貰って
それを元にlivedataを作って両方保持するクラスでも作って包めばいいんじゃないの
372:デフォルトの名無しさん
19/03/01 01:02:08.44 8x0yRf06.net
それで何か解決するんですかね
結局view側からmutableLivedataに
アクセスできるんじゃないですかね
373:デフォルトの名無しさん
19/03/01 06:35:34.41 eJTnddJA.net
本当にやり方が思いつかないならもうちょっと経験値の高い先輩なりに相談してみよう
374:デフォルトの名無しさん
19/03/01 08:39:12.55 8x0yRf06.net
分からないならレスしないでください。うざいだけです
375:デフォルトの名無しさん
19/03/01 09:24:26.88 ajbNVKsu.net
動かしてないけどこんな感じ
import android.arch.lifecycle.*
import kotlin.reflect.KProperty
//保持用
fun <T> unmodifiableLiveData(d:LiveData<T>): LiveData<T> = Transformations.map(d){it}
class MutLiveWrap<T>(val lv:MutableLiveData<T>) {
val readonlyLv = unmodifiableLiveData(lv)
operator fun getValue(thisRef: Any?, property: KProperty<*>) = readonlyLv
}
val <T> MutableLiveData<T>.wrap get() = MutLiveWrap<T>(this)
//使用
class Test {
private val aWr = MutableLiveData<Int>().wrap
val a by aWr
fun f(){
val mutLv: MutableLiveData<Int> = this.aWr.lv
val roLv : LiveData<Int> = this.a
}
}
376:デフォルトの名無しさん
19/03/01 11:13:31.72 PhmT31GH.net
>>370
分かりません。
377:デフォルトの名無しさん
19/03/01 11:44:05.14 AdJjcFYH.net
>>370
技術力がないだけじゃなくて人間とし�
378:トも終わってるのな
379:デフォルトの名無しさん
19/03/01 12:41:01.41 yZJ4Zkhu.net
荒らしに返事するな!
そいつは前からいる、荒らしだろ。
相手をすると、この板に居つくだけ!
380:デフォルトの名無しさん
19/03/01 12:57:49.73 PhmT31GH.net
ま、しかし、このスレの場合は日頃は過疎ってるのでたまに荒しが来てくれた方がスレが活性化して落ちる心配がなくなるなw
381:デフォルトの名無しさん
19/03/01 16:06:36.33 XD1TRf4c.net
developer.android.comの最近のページはコードサンプルがKotlinとJava両方載ってるんだね
タブで切り替えるんだけど最初に表示されてるのはKotlin
382:デフォルトの名無しさん
19/03/01 16:54:26.44 ae30enpy.net
俺も動かしてないけどつくってみた
import androidx.annotation.MainThread
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.Observer
private class ReadOnlyLiveData<T>(private val liveData: LiveData<T>) : LiveData<T>() {
override fun setValue(value: T) { TODO("この関数を呼び出したとき、リードオンリーだから使えないよって教える。") }
override fun postValue(value: T) { TODO("この関数を呼び出したとき、リードオンリーだから使えないよって教える。") }
@MainThread override fun observe(owner: LifecycleOwner, observer: Observer<in T>) { liveData.observe(owner, observer) }
@MainThread override fun observeForever(observer: Observer<in T>) { liveData.observeForever(observer) }
@MainThread override fun removeObserver(observer: Observer<in T>) { liveData.removeObserver(observer) }
@MainThread override fun removeObservers(owner: LifecycleOwner) { liveData.removeObservers(owner) }
override fun getValue(): T? = liveData.value
@SuppressWarnings("WeakerAccess") override fun hasObservers(): Boolean = liveData.hasObservers()
@SuppressWarnings("WeakerAccess") override fun hasActiveObservers(): Boolean = liveData.hasActiveObservers()
}
fun <T> LiveData<T>.readOnly(): LiveData<T> {
if (this is ReadOnlyLiveData<T>) return this // もうすでにリードオンリー
return ReadOnlyLiveData(this)
}
383:デフォルトの名無しさん
19/03/02 06:14:14.54 qFBH5IQH.net
>>357
降順と昇順が混在する場合は compareBy または compareByDescending で Comparator 作って
それに対して thenBy または thenByDescending で追加させて行く方が楽だし速いと思う。
384:デフォルトの名無しさん
19/03/04 16:04:14.52 /4qbaGVQ.net
AnkoでBottom Sheetって使えますか?
385:デフォルトの名無しさん
19/03/08 09:22:28.79 Yj0eRJ2i.net
なんか面白い話題ないんかな。。
386:デフォルトの名無しさん
19/03/08 10:46:41.80 pv8HlopZ.net
君が面白くなりなさい。
387:デフォルトの名無しさん
19/03/08 13:24:56.87 AzqZJLRD.net
springがフルkotlinになるのはいつ?
388:デフォルトの名無しさん
19/03/08 18:01:21.77 rmua+rZ/.net
Exposed1.0が出るのはいつ?
389:デフォルトの名無しさん
19/03/10 12:52:23.09 t+kr7Jdy.net
sequenceってジェネレーターみたいなもの?
390:デフォルトの名無しさん
19/03/10 13:42:04.30 56gRJqyl.net
>>384
SequenceはIterableとほぼ同じ
違いは
Sequence: 遅延評価する (なのでジェネレーターも含む)
Iterable: 基本的には遅延評価でない (通常、実体はコレクション)
拡張関数も別れていて、例えば
Sequenceのmap は遅延評価するSequenceを返す
Iterableのmap はその場で全要素を処理してListを返す
391:デフォルトの名無しさん
19/03/11 00:27:22.19 +Nlo5Elt.net
ずばり説明が書いてあるページを発見した。
KotlinのListとSequenceって何が違うの?
URLリンク(qiita.com)
392:デフォルトの名無しさん
19/03/11 07:22:41.11 0boP2QX3.net
うんこは最後に出す方法
393:デフォルトの名無しさん
19/03/11 17:24:32.47 2ppgAkG/.net
げ、知らなかった。
ずっとIterableがStreamの代わりだとばかり。
PythonのSequenceと混同してた。
ならば、Iterableをあそこまでゴージャスにする必要があったのか?
394:デフォルトの名無しさん
19/03/11 18:33:50.09 JQuKUcCl.net
誰かの趣味だよきっと
395:デフォルトの名無しさん
19/03/11 18:35:48.60 oxE6wZ/Z.net
>>388
典型的なコレクション操作では遅延評価せずその場で全処理する方が早いため
意味付けが違うだけで、SequenceとIterableは同じ拡張関数を持ってるくらいの認識でOK
分かりやすさのため、あえて使い分けを用意しなかった
Javaの割り切り方もありだとは思うけどね
396:デフォルトの名無しさん
19/03/11 21:05:48.78 MDT71nit.net
SequenceはJava8のStreamと類似で、KotlinであえてStreamを使うべき機会はほとんどないからSequenceを使っておけば良いってことかな
397:デフォルトの名無しさん
19/03/11 23:18:53.36 +cXkYAGY.net
そしてSequenceって変数にぶち込んで使いまわせなかったっけ?
398:デフォルトの名無しさん
19/03/12 01:11:15.05 WllyGH1o.net
partitionのSequence版が無くて自作したわ
groupingByも遅延評価だけど使い方がむずい(毎回リファレンス読み直す)
399:デフォルトの名無しさん
19/03/12 08:13:05.73 z/76z4zm.net
>>391
pararellがないな。
はっきり並列化できる処理なら、Streamの方がJavaの言い回しを考慮した上でも直感的にかける。
400:デフォルトの名無しさん
19/03/12 12:54:36.68 6Uu2j9Xc.net
kotlin推しがgoを推薦
URLリンク(www.youtube.com)
401:デフォルトの名無しさん
19/03/12 14:55:36.01 7iAawGvK.net
python,go,kotlin全部推してるやん
402:デフォルトの名無しさん
19/03/12 15:14:48.22 iD2RJper.net
>>396
このレスは板内爆撃
本人かシンパかアンチか荒らしかいまいち判別できないので放置でよいよ
403:デフォルトの名無しさん
19/03/12 15:56:40.12 7iAawGvK.net
>>397
そうか。すまん
404:デフォルトの名無しさん
19/03/16 11:53:34.93 28C0KCt9.net
そもそもなんの権威でもないやろこの人
405:デフォルトの名無しさん
19/03/16 13:53:25.25 jFsymRCD.net
坊やだからさ
406:デフォルトの名無しさん
19/03/16 16:06:54.74 ksQagb59.net
俺が Kotlin 押しビデオ作って公開すればいいのか?
しかし Kotlin 初心者なので「いいですよ~。最高ですよ~」などと情緒に訴えて見ている側を洗脳しようとすることぐらいしかできない。
407:デフォルトの名無しさん
19/03/16 16:14:10.50 YxxaJZky.net
>>401
ジャップに布教するなら、みんな使ってますよ~乗り遅れますよ~仲間外れですよ~だけでいいよ
初心者のお前でも、有名企業でのKotlin採用事例を集めて紹介するくらいはできるだろう?
408:デフォルトの名無しさん
19/03/16 16:20:48.33 28C0KCt9.net
まぁでも、kotlin go あたりが推奨されるのはわかるけどな
今更phpとかおすよりかは説得力ある
409:デフォルトの名無しさん
19/03/16 17:20:10.49 ksQagb59.net
>>402
ああ。そうだな。
後は学生向けにこれさえできれば楽々就職みたいに言うと。
410:デフォルトの名無しさん
19/03/16 17:27:02.08 ksQagb59.net
やっぱこれも必要だろうな。
URLリンク(imgur.com)
411:デフォルトの名無しさん
19/03/16 17:28:59.66 ksQagb59.net
既にどこの国の誰だか知らんが絵を作っている人はいた。
URLリンク(imgur.com)
412:デフォルトの名無しさん
19/03/17 18:08:41.49 fOPvRjrc.net
PreferenceFragmentが非推奨になる
↓
代わりにandroidx.preference liblary使えって言われる
↓
日本語のガイドに説明なし
適当すぎんだろイライラ
413:デフォルトの名無しさん
19/03/17 21:15:53.12 t+AGMGYK.net
あんま関係ないけどmavenのkotlinプラグインで増分コンパイルされないのって仕様?
414:デフォルトの名無しさん
19/03/18 09:41:08.53 7YQXcQeA.net
>>407
ドキュメント読めば書いてあるし問題なくね?
415:デフォルトの名無しさん
19/03/18 17:50:47.00 VkTfSOi0.net
>>407
本気で言うけど、公式ドキュメント程度の英語は頑張って読んだ方がいいと思うよ。
416:デフォルトの名無しさん
19/03/18 19:24:24.40 6b7FslP4.net
まぁAndroidの公式リファレンスは言語切替をシステム化してるから
ドキュメントのバージョンが不一致なら警告表示するくらいすればいいのにとは思う
iOSの方は英語以外バッサリ切り捨ててる(最新は英語読めと明示してある)から
中途半端に惑わされることは無い
417:デフォルトの名無しさん
19/03/18 20:47:50.90 1gtRswz3.net
いつの間にかこんな入門書出てたよ。既にKindle版もある。
Kotlinプログラミング
URLリンク(www.amazon.co.jp)
418:デフォルトの名無しさん
19/03/19 03:22:14.95 j5JxWPYN.net
もっと可愛い名前にすれば良かったのに
swiftみたいな
419:デフォルトの名無しさん
19/03/19 03:33:14.71 EnTGEExM.net
古都リンちゃん
420:デフォルトの名無しさん
19/03/19 10:04:27.55 InXhSaoV.net
>>409
日本語でしか表示されないんだが
421:デフォルトの名無しさん
19/03/19 10:51:32.88 STa9vfc0.net
>>415
ページ一番下に言語切替がある
リファレンスページでは正常に切り替わらないことがあるからトップページで切り換えた方がいい
URLリンク(developer.android.com)
もしくはURLに言語を英語にする「?hl=en」を付ける
URLリンク(developer.android.com)
日本語の方はAndroidXの記述が無いな
URLリンク(developer.android.com)
422:デフォルトの名無しさん
19/03/19 12:07:55.88 t/u/FScK.net
Androidは公式で日本語ドキュメントあるのか
Kotlinのドキュメントは有志がやってたけどもうメンテしてないよな
423:デフォルトの名無しさん
19/03/19 12:30:24.38 BI7+7Q7/.net
君がやってくれ。たのんだぞ。
424:デフォルトの名無しさん
19/03/19 14:20:51.95 3khslMEX.net
Kotlin in actionとどっちの方がいいんだ
425:デフォルトの名無しさん
19/03/19 15:10:03.68 TG1sbbZQ.net
>>416
丁寧にすまんな……
426:デフォルトの名無しさん
19/03/19 17:12:09.49 7p2/yAlP.net
>>417
公式日本語ドキュメントは更新が遅いから読まない方がいいぞ
427:デフォルトの名無しさん
19/03/19 17:54:02.89 qahjbQKM.net
kotlin native応援してるんだけど何が一番貢献になるんやろか?
翻訳とか細かなライブラリ作ったりくらいなら時間かければできそうなんやけど、難しいことはできん。
やっぱ募金とかなんか?
428:デフォルトの名無しさん
19/03/19 18:07:06.75 VCt0hAH/.net
>>422
まずはなんとかしてVSCodeを潰そう
このままだとJetBrains無くなるよ
429:デフォルトの名無しさん
19/03/19 18:12:21.52 STa9vfc0.net
>>422
とりあえず公式リポジトリのスターとfork数増やして
kotlin nativeであることをアピールしたライブラリ作ればいいのでは
ただ、現時点ではパフォーマンスが残念だからお勧めしない
出来ることが違うとはいえ、ロジック部分は
JVMどころかKotlin/JS経由のnodeで動かすのより7~10倍くらい遅い
まだコンパイラの最適化をやってないのは救いだけど
俺はARC with cycle collectorがスループット下げてる可能性を気にしてる
もしそうなら最適化やっても思うほど改善しないんじゃないかと
430:デフォルトの名無しさん
19/03/20 08:09:47.58 vnEhpOgU.net
JSとかnativeとかどうでもええ。
いろいろ変更予定のあるJVMとAndroid対応だけしっかりやれや。
431:デフォルトの名無しさん
19/03/20 09:36:36.87 bT3jH/zR.net
JetBrainsの業績そんなに悪くないしむしろ伸びてるはずだけど
432:デフォルトの名無しさん
19/03/20 13:58:35.52 uYHRW+dq.net
とりあえずgitとintellijの更新はしとく。
作るとしたら何系のライブラリがいいと思う?
433:デフォルトの名無しさん
19/03/20 14:21:09.73 wkbxcvwm.net
>>427
自分で使うやつ
より正確に言うとプルリクエストが来たときに議論できる程度に思い入れのあるやつ
使いもしないのに聞きかじりで作るのはやめておいたほうがいい
434:デフォルトの名無しさん
19/03/20 15:39:59.54 uYHRW+dq.net
なるほど。何に思い入れがあったか思い出してくるわ。
ありがと
435:デフォルトの名無しさん
19/03/20 17:00:17.12 BuSIOCAA.net
むしろMicrosoftのほうが糞
436:デフォルトの名無しさん
19/03/20 20:08:58.41 TxjggMxz.net
>>423
ならライセンス買おうよ。
437:デフォルトの名無しさん
19/03/20 20:09:44.23 kvLAmSD0.net
そういえばXamarinネタ見なくなったな
438:デフォルトの名無しさん
19/03/20 21:34:30.03 /gKFWWq8.net
>>432
まあ知ってる人はごくわずかだから話題にしたくても出来る人はいないだろう。
439:デフォルトの名無しさん
19/03/22 15:40:33.53 L3xU9+dS.net
即荒しが何か書いてスレが活性化するかと思ったら完全に無反応。本当に少数なったのだな。合掌。
440:デフォルトの名無しさん
19/03/23 14:14:54.18 Bvojjkpo.net
Kotlin そのものの質問ではないがこのスレの方が分かる人が多いような気がするのでここに書き込む。
IntelliJ IDEA で Kotlin のプロジェクトを作ってその src フォルダで ~.kt を一つ作ってそこに main() が
あるだけなら良いんだけど、もう一つ ~.kt を作ってそこにも main() を作って、それぞれを別々に動かす
ということはできないのかな? どうやらそのままではできないようで、そのままやろうとすると個別にコンパイル
しようとしても同じ関数があると衝突してエラーになる。(最初に登録した方のソースは大丈夫。2番目に
登録した方の ~.kt ファイルのコンパイルでエラー)。
こういう使い方は想定されていないんだろうか? しかしこれができないと小さいプログラムが沢山あるような
プロジェクトは作れなくて個別に沢山のプロジェクトを作らねばならなくなる。仮にそういう風にしかできない
んだとしてもそれならばプロジェクトを束ねるようなその上位の何かは作れないのか?でないと同じ階層に
プロジェクトが沢山作られてしまい非常に使い辛い。
441:デフォルトの名無しさん
19/03/23 15:19:26.37 HXMNak6o.net
>>435
トップレベルのmain()が名前空間で衝突しているからコンパイルエラーになると思われる。
class MyApp {
companion object {
@JvmStatic fun main(args: Array<String>) {
のような書き出しでエントリーポイントを作ることも出来ますが、そういった方法では解決できませんでしょうか。
442:デフォルトの名無しさん
19/03/23 15:24:44.47 UK/ZLX81.net
>>435
A.kt に書けば AKt.class が、B.kt に書けば BKt.class が生成されるので
JvmNameとかpackage指定と合わないフォルダ下で名前衝突させたりしない限り
普通は衝突しないはずだけど
443:デフォルトの名無しさん
19/03/23 15:28:37.98 Bvojjkpo.net
>>436
どうもありがとう。
同じ関数がなければ main() がファイルごとにあっても大丈夫なことがわかった。
実行する時は main() の行頭の左側に出ている ? マークをマウスでクリックして実行またはデバッグすれば実行できた。
444:デフォルトの名無しさん
19/03/23 15:29:46.08 Bvojjkpo.net
>>437
ああ。package 付ける方法もあるな。試してないけどそれでもできそう。
445:デフォルトの名無しさん
19/03/23 15:34:11.63 Bvojjkpo.net
>>437
どうもありがとう。
できたよ。違う package にしておけば同じ関数があってもうまく行く(名前衝突しないんだから当然と言えば当然か)。
446:デフォルトの名無しさん
19/03/23 15:38:27.73 UK/ZLX81.net
いや、437はpackageが同じでもファイル名が別なら衝突しないという話だよ
447:デフォルトの名無しさん
19/03/23 18:56:11.23 Bvojjkpo.net
>>441
package が同じというのは2ファイルが package 指定なしの時と同じだよね?
それだとダメだったんだよね。IntelliJ がどういう風にコンパイルしているかの問題だろうけど。
448:デフォルトの名無しさん
19/03/23 18:58:25.76 z3jdsP7r.net
さすがにスレチ
449:デフォルトの名無しさん
19/03/23 19:07:58.43
450:Bvojjkpo.net
451:デフォルトの名無しさん
19/03/23 19:29:18.72 UK/ZLX81.net
>>442
>同じだよね?
同じ
ほんとにmainが衝突してる?
main以外のトップレベル関数が衝突してるだけか、
もしくはかなり古いKotlinコンパイラ(プラグイン)を使ってない?
>>443
これはKotlinコンパイラの仕様だから別にスレチではないよ
452:デフォルトの名無しさん
19/03/23 20:07:45.61 UK/ZLX81.net
>>442
ああごめん435読み直したら、衝突したのはmainじゃなくて「同じ関数」なのね
対応方法としてはmain以外をprivate funにする,
classまたはcompanion objectまたはobjectに入れる
A.kt, B.kt
-----
fun main(){
a()
f.a2()
}
private fun a(){}
private val f = object {
fun a2(){}
}
453:442
19/03/24 03:29:22.97 ynFGlX0q.net
>>446
どうもありがとう。
確かに private でも名前外に出さないからできるね。
454:デフォルトの名無しさん
19/03/26 10:19:16.34 E1WCPVyW.net
Kotlin/Nativeが遅い原因を逆アセンブルして調べてたらこの記事にたどり着いた
URLリンク(soywiz.com)
UpdateReturnRefやLeaveFrameのコストが重すぎる
1.3.20時点ではリリースビルドでも最適化はされていない
455:デフォルトの名無しさん
19/03/26 19:23:47.37 NbUyZWCM.net
誰でも頭が良くなる、プログラムが書けるようになる方法が発見される 56097
URLリンク(you-can-program.hatenablog.jp)
456:デフォルトの名無しさん
19/03/26 21:38:27.76 PDyA3k9g.net
>>449
そのためにわざわざ眼鏡買うのバカらしいから君ちょっと自分で試してみなさい。
それともブログ書いた本人だから試し済みか?
457:デフォルトの名無しさん
19/03/26 21:40:50.59 PDyA3k9g.net
ていうか既にプログラム書ける人ばかり来てるであろうスレでそんなの書かれても効果を実感できるやつはほとんど居ないだろうなあ。
458:デフォルトの名無しさん
19/03/26 21:53:14.49 hJyrjtJ9.net
>>450
>>397
459:デフォルトの名無しさん
19/03/29 20:35:19.53 abJt4WgD.net
今日Kotlin入門しサクッと文法をやった程度のものですがAndroidプログラミングの学習リソースを探しています
JavaでのAndroidプログラミング経験はありません
460:デフォルトの名無しさん
19/03/29 20:41:29.42 KqjpTu4V.net
今日やっていきなりかよ!
もうちょっとKotlin単体で粘れよ!他にやることあるだろ!
461:デフォルトの名無しさん
19/03/29 21:25:55.21 Jv6E4VJb.net
>>454
>>453はXamarinのAndroid開発のエキスパートかもしれん...
462:デフォルトの名無しさん
19/03/29 21:34:48.88 wVkKBlg0.net
>>453
Activityとは何か?と考えることにひたすら時間を費やす。
使用言語にかかわらずandroid開発はそれがすべて。
463:デフォルトの名無しさん
19/03/30 06:03:17.66 145z6i/c.net
ぼくなんかJavaちょっとかじっただけでAndroidに挑戦しちゃったわ
あの時はActivityがクラスな事すら分からずにテキスト見てその通り書いてたな……😅
464:デフォルトの名無しさん
19/03/30 13:35:02.89 M1S6T7Ca.net
Rってなんですか?とか<T>ってなんですか?とかでぜひ挫折して欲しい
465:デフォルトの名無しさん
19/03/30 15:12:50.70 b12H3n9S.net
挫折するような人はRとは?とか<T>とは?なんてこと考えたりしない
466:デフォルトの名無しさん
19/03/30 15:38:23.64 bfZyzxOj.net
>>453
「Android Hello World」でググる
何はともあれ、まず動かすのが最速の学習
467:デフォルトの名無しさん
19/03/30 20:04:51.02 5DG6z16F.net
RもTも知らんけど、コピペで動いてるからそれでいい
適当にやれば動く
Rが赤いときは、大抵xmlの打ち間違い
T?知らん
468:デフォルトの名無しさん
19/04/01 00:45
469::49.25 ID:Th3XB2nz.net
470:デフォルトの名無しさん
19/04/01 01:50:31.93 //wZRuJn.net
reifiedつよいよな
471:デフォルトの名無しさん
19/04/01 09:38:57.10 Fy4OwQz+.net
発音が難しいよね
472:デフォルトの名無しさん
19/04/01 16:18:36.04 yssFrFp/.net
コトリンのジェネリクスのTってC#のdefaut(T)みたいなのある?
473:デフォルトの名無しさん
19/04/01 17:10:11.92 Tc5+6fel.net
俺はC#を知らない
474:デフォルトの名無しさん
19/04/01 18:32:35.54 //wZRuJn.net
ない
csはint x=defaultってかけるみたいだけどkotlinは明示的に0で初期化しなきゃいけない
他の型でも同じ
475:デフォルトの名無しさん
19/04/01 19:41:02.24 no59bRT+.net
C#のdefaultは単なるシンタックスシュガーじゃなくて、実行時に型引数に応じた適切な値を生成してくれる機能
JavaやKotlinのハリボテジェネリクスでは原理的に不可能
476:デフォルトの名無しさん
19/04/01 21:02:06.63 jyzymMUT.net
やりたくなったことは何度かある
477:デフォルトの名無しさん
19/04/02 01:27:31.42 imTVpGqL.net
default(T)ないのか・・・
こうしてみたけど何か改良点ある?
例外時にnullも返せないし例外時に返すためだけに引数にt入れてるんだが・・・
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
import com.fasterxml.jackson.module.kotlin.readValue
class SJson {
companion object {
inline fun <reified T> toObject(json: String, t: T): T {
val mapper = jacksonObjectMapper()
try {
val obj = mapper.readValue<T>(json)
return obj
} catch (e: Exception) {
SLog.e(e.message.toString())
return t
}
}
}
}
478:デフォルトの名無しさん
19/04/02 07:53:18.35 JAcM/MrS.net
>>470
単にnullを返したいということなら戻り値を T? にすればいい
479:デフォルトの名無しさん
19/04/02 08:46:54.35 e4jQj1uZ.net
ObjectMapper って使い回してよかったと思う
480:デフォルトの名無しさん
19/04/02 09:36:52.02 imTVpGqL.net
>>471
T?にしたらnull返せたわサンクス
>>472
なるほどね
481:デフォルトの名無しさん
19/04/12 13:13:10.63 EBXnKzt9.net
Kotlin 1.3.30 released
URLリンク(blog.jetbrains.com)
KAPT関連の機能追加など
符号無し整数配列の機能追加など
Kotlin/Native
mingw_x86サポート
CocoaPodsとの実験的統合機能
C相互運用改善
他
482:デフォルトの名無しさん
19/04/12 23:07:21.58 JX4xskgO.net
githubのrelease読んだけどめちゃくちゃ多かったな
483:デフォルトの名無しさん
19/04/13 02:06:40.85 hw3Eyeqa.net
ここからだとまだ 1.3.21 のままだね。
URLリンク(kotlinlang.org)
IntelliJ だと 1.3.30 にアップデートできたけど。
484:デフォルトの名無しさん
19/04/13 02:22:02.28 hw3Eyeqa.net
あれ? UInt 型の変数を String.format() で指定する時はどうするのかな?
%d は駄目だし。toString() してから %s 使えってか?
485:デフォルトの名無しさん
19/04/13 09:53:18.70 oqNH9LQH.net
>>477
そのまま%sでも使えるけどString.formatはそもそもKotlinでなく
Javaの機能(=Kotlin/JVM以外で使用不可)なので
単純な書式ならString Template使った方がいいよ
val n = 100u
println( "n=${n}" )
486:デフォルトの名無しさん
19/04/14 20:07:14.86 JuY/4ckm.net
UInt に関しては toLong() しちゃえば良いだけだと後で気づいたが、ULong の方はどうもならんね。
ULong.MAX_VALUE と Long.MAX_VALUE は10進数だと20桁と19桁で1桁違うので桁を考慮したフォーマットはこれを考慮する必要がある。
%20d とか %020d と書いても ULong については分かってくれないので自作する必要がある。
487:デフォルトの名無しさん
19/04/15 01:34:29.54 PzbTbQ3M.net
C#みたく${}内でフォーマットが使えれば一番なんだけどね…
488:デフォルトの名無しさん
19/04/15 17:43:26.97 3BglWTch.net
要望出せばそのうち出来るようになりそう
489:デフォルトの名無しさん
19/04/19 12:18:20.68 je8e8yU3.net
OracleJDK有料化でますますKotlin人口が増えるな
490:デフォルトの名無しさん
19/04/19 13:16:58.17 oa1dttvK.net
たしかASにjavaからkotlin変換がなかったっけ
あれで全て解決するような気がするんだけど
491:デフォルトの名無しさん
19/04/19 14:47:33.44 Z5+6w9VM.net
jdk有料化とかで騒いでいる奴いるけど
彼らにとってoraclejdkが唯一のjdkなのかな
492:デフォルトの名無しさん
19/04/19 14:57:46.07 /crv8Bf3.net
>>484
そうだよ
ついでに世界は五分前に始まった
493:デフォルトの名無しさん
19/04/19 17:40:48.18 xQzUZ1Zh.net
JDK有償化の話は何ら騒ぐようなことじゃなかったのに
Oracleの説明が手抜きだったからああなった
あとOpenJDK公式サイトの構成が酷く大部分がメンテされてないもの原因の一つ
例えば Groups > Adoption > Wiki > Adopt OpenJDK
494:デフォルトの名無しさん
19/04/19 17:46:39.55 xQzUZ1Zh.net
サイト管理者が違うんだろうけど
AdoptOpenJDKへのリンクをトップに置いとけばいいのに
OpenJDKのビルドインフラのメンバーが運用してるんだから
495:デフォルトの名無しさん
19/04/19 21:41:56.97 oXduz3ip.net
うちはAWSのやつに順次置き換えてるわ、名前が覚えにくいけど
496:デフォルトの名無しさん
19/04/19 21:50:42.00 aAzLpfHC.net
なによりJakartaEEが無能すぎる
497:デフォルトの名無しさん
19/04/19 22:34:55.70 hY3XsNGB.net
そこでjblendですよ
498:デフォルトの名無しさん
19/04/20 09:53:47.54 IaSD8GNU.net
>>453
おぉー同士。
当方、Visual Basicアプリ、iOSアプリの経験はあるが、Android経験ゼロです。
どうやらAndroidManifest.xmlに記載のActivityがプログラムのエントリーポイントだと解った所。
iOSとの比較で言えば、
Activity = ViewController,
wedgit = View,
Fragment = Container ViewController
AppDelegate = Application
って感じらしい。
499:デフォルトの名無しさん
19/04/20 11:40:44.23 IaSD8GNU.net
>>491
ちょいと違うかも!
Fragment = custom wedgit(user defined wedgit)
みたいだな。
さて、Java, Kotlin初心者なので、両者のコードの対応表が欲しいところだ。
500:デフォルトの名無しさん
19/04/20 11:43:32.64 IaSD8GNU.net
>>492
>Java, Kotlin
Overview of Kotlin and Comparison Between Kotlin and Java
URLリンク(www.xenonstack.com)
501:デフォルトの名無しさん
19/04/20 13:32:39.16 IaSD8GNU.net
>>493
JavaとKotlinの比較
URLリンク(xenos.world)
502:デフォルトの名無しさん
19/04/21 13:29:56.22 9kZK6Cbt.net
macOS Mojave 10.14.2
Android Studio 3.4
環境でBasic Activity Project作ってHello World表示するまで、かれこれ2hr費やした。
ハマりポイント
1. Gradle project sync failed. Basic functionality will not work properly.▶resolved with installing JDK 8u212
2. No Module Specified▶ガチャガチャやって解決。
503:デフォルトの名無しさん
19/04/21 13:36:48.96 9kZK6Cbt.net
ところでGradleって何だ?
daemonとして動いてファイルの変更を監視するmakeコマンドみたいなものか?
今、Gradle sync failed問題で困ってる。
新しくプロジェクト作ったら、Gradle sync failedってエラー吐いて、新規にapkってかModuleを作れない。なぜ??
504:デフォルトの名無しさん
19/04/21 13:52:47.18 qy+VhZ5w.net
>>496
何かというのはググってどうぞ
Gradle sync failed は Android Studio側の問題 (おそらくbuild.gradle生成処理の問題)
必要なライブラリのダウンロードが終わってないと発生するような印象
Android Studioを再起動してプロジェクトを新規作成しなおすとエラーが無くなったりする
505:デフォルトの名無しさん
19/04/21 14:11:36.76 Jrx6sgEL.net
gradle嫌い。
完全オフラインで開発作業したいのに、
ちょっとした事でネットアクセスを要求してくる。
506:デフォルトの名無しさん
19/04/21 14:14:25.40 RKX/L/5n.net
GradleKotlinDSL使ってるけど情報少なすぎてハマるからオススメしない
507:デフォルトの名無しさん
19/04/21 15:35:20.45 9kZK6Cbt.net
>>497
AndroidStudio3.4(17 April 2019)には問題ありと判断して、3.2へdegradeしてみた。
Gradle sync failed issueは初回Studio起動時に発生するも、指示に従って、build toolの最新版をinstallしてみた。
その後は3.2では問題発生せず!
ちなみに3.3はArchiveに発見できず。September 2018のAndroidStudioだが、まあ、良いんじゃ無いかぁ。
508:デフォルトの名無しさん
19/04/21 15:53:07.87 9kZK6Cbt.net
くっそ!
AndroidStudio3.3は、English pageにあるのかぁ。
日本語ページに無いなんて!
どうやら、日本は置いてけぼりって事だ。
509:デフォルトの名無しさん
19/04/21 16:45:42.90 9kZK6Cbt.net
AndroidStudio3.4
AndroidStudio3.2
AndroidStudio3.3.2
の順で試してみた。Mojave 10.14.3で。
Gradle sync failedが発生しないのは、3.2だった。
3.3.2, 3.4は発生する。
何をやっているかと言うと、
AndoroidStudioをinstallした直後に、新規プロジェクト(Basic Activity)を作った直後の挙動を調査しているのだ。
プロジェクト作成直後にGradle sync failedってよろしく無いよねぇ。
AndroidStudioをrestartしてもこの症状は解消しない。
510:デフォルトの名無しさん
19/04/21 16:51:51.27 qy+VhZ5w.net
>>502
3.3以降で、エラーになったプロジェクトを捨てて
再度新たにプロジェクトを作っても発生する?
511:デフォルトの名無しさん
19/04/21 17:41:08.01 9kZK6Cbt.net
>>503
します。ただし、3.4の場合、何かのひょうしに解決されて、Gradle sync failedってのが出なくなります。
idea.logファイルに記録されてるWarningはこんな感じ。
WARN - n.GradleOrderEnumeratorHandler - Root project path of the Gradle project not found for Module: 'App03'
512:デフォルトの名無しさん
19/04/21 18:18:34.43 2Pn5K2oC.net
そのへんのエラーは冗談比喩抜きで「起動しっぱなしで放っておいたら数日後に直る」経験しかない
まあどっかの何かが新しい何かに何かしてなくて放置してると何かが何かなって何かするんだと思う
513:デフォルトの名無しさん
19/04/21 18:20:30.52 9kZK6Cbt.net
>>504
>Root project path of the Gradle project not found
解決か?
~/Library/Preferences/AndroidStudio3.4/
~/Library/Preferences/AndroidStudio3.3/
を消してやると、Gradle Sync failed Issue解決!か?
今の所、上手く動いてる.
次は、Command Lineでkotlincコマンドを実行したいのだが、AndroidStudioをinstallしただけではダメなのだろうか?
In Android Studio download page, the basic Android tools below are included in Android Studio.
らしいのだが?
514:デフォルトの名無しさん
19/04/21 18:36:10.73 9kZK6Cbt.net
試しに、
URLリンク(developer.android.com)
ここからサンプルプロジェクトをdownloadしてみた。
なんと、AndroidStudio付属のGradleとは異なるバージョンのGradleのinstallが始まった。
サンプルプロジェクト毎にTarget API Levelが異なるために、それ用のGradleがinstallされるみたい。
AndroidStudio3.2, 3.3.2, 3.4をinstallしたが、しばらく3.4を使ってみる。
515:デフォルトの名無しさん
19/04/21 18:38:19.48 9kZK6Cbt.net
>>505
Gradle daemon(プロセス名java)をkillしてやれば、Sync failed Issueは解決するのかも!
516:デフォルトの名無しさん
19/04/21 18:48:08.38 2Pn5K2oC.net
すまん触った
517:デフォルトの名無しさん
19/04/21 19:56:32.73 9kZK6Cbt.net
developer.android.comからサンプルをdownloadして動かしてたら、Gradle daemonが3つも動いてる事になった。
各々違うVersionのGradleらしい。
どうやら、androidの開発環境の歴史的変遷から、ややこしい事になってるみたいだ。
build.gradle(Module:app)とbuild.gradle(Project: kotlinApp)の2つあったり。
518:デフォルトの名無しさん
19/04/21 21:42:46.66 ePLxajCC.net
連投しているところ悪いけど、その手の日記ならQiitaにでも書いておいてほしい。
ていうか書くまでもなくそこに答えが書いてある。
519:デフォルトの名無しさん
19/04/21 22:54:30.74 JMkKpOJG.net
まずはAndroid関係ないシンプルなGradleプロジェクトを作ってみることをお勧めする。基礎知識が欠落しすぎてて余計な回り道しかしてない。
よほど込み入ったことをしない限りそんなに複雑なものではないから。
少なくとも歴史上生まれてきた数々のビルドツールの中では1番マシ。
520:デフォルトの名無しさん
19/04/21 22:54:39.59 8IQ6w5E8.net
.gladleのキャッシュとかいろいろあるけどねえ
ガチャガチャやってりゃ直るからgladleは優しいよな
521:デフォルトの名無しさん
19/04/21 22:55:48.78 JMkKpOJG.net
それ。ぶっ壊れたと思っても適当になんかしてりゃ直ってくれるから優秀。
522:デフォルトの名無しさん
19/04/21 23:56:09.92 +YkyhY+W.net
まったく毎度毎度グーグルの仕事はほんんんんと雑だな
523:デフォルトの名無しさん
19/04/22 00:58:40.19 47gIWCEb.net
fragmentのbindingってlateinitでvarにするのとby lazyでvalにするのとどっちが正解ですか
524:デフォルトの名無しさん
19/04/22 03:51:49.53 SyBBal55.net
>>509
はい
525:デフォルトの名無しさん
19/04/22 10:56:56.63 QiOq/xsC.net
>>512
thx
found great articles in Qiita concerning Gradle build tool.
526:デフォルトの名無しさん
19/04/22 12:17:09.85 iCdpr57v.net
JVMが有償化したらおまえら阿鼻叫喚
527:デフォルトの名無しさん
19/04/22 12:49:18.33 +g+F61Q1.net
1年くらい前は確かに阿鼻叫喚だったけど今となってはもう誰も問題だと思ってない
528:デフォルトの名無しさん
19/04/22 13:54:04.36 5CpOs8vM.net
>>519
JVM, JRE, JDKが今どんな状況か分かってなさそう
529:デフォルトの名無しさん
19/04/22 14:54:26.97 3J9RCiSz.net
>>521
詳しく頼む
530:デフォルトの名無しさん
19/04/22 16:23:17.22 QiOq/xsC.net
>>522
Android Studio 3.4
Build #AI-183.5429.30.34.5452501, built on April 10, 2019
JRE: 1.8.0_152-release-1343-b01 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
macOS 10.14.3
これでどう?
531:デフォルトの名無しさん
19/04/22 16:29:37.09 QiOq/xsC.net
俺、AndroidStudio3.4をinstallしてからGradle sync failed問題を解決しようとして、Oracle JDK8u212ってのをinstallしちまった。
AndroidStudio3.4にはOpenJDKってのが入ってるのか?
Oracle JDK8u212ってのはuninstallしても良いのか?
ちなみに、Command Lineでjava -vすると
>java -version
java version "1.8.0_212"
Java(TM) SE Runtime Environment (build 1.8.0_212-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.212-b10, mixed mode)
532:デフォルトの名無しさん
19/04/22 16:34:09.84 952sQ1R
533:S.net
534:デフォルトの名無しさん
19/04/22 16:35:59.31 QiOq/xsC.net
ちなみにgradleってファイル名のbash scriptがAndroidStudio3.4には入っていて、
1. $JAVA_HOME
2. which java
上記からjavaコマンドの場所を検索してgradle-launcher-5.1.1.jarを動かしてるみたいなんだけど。
535:デフォルトの名無しさん
19/04/22 16:37:13.18 952sQ1RS.net
で、何がわからなくて何が聞きたいの?
536:デフォルトの名無しさん
19/04/22 16:40:22.54 QiOq/xsC.net
>>525
なるほど!
ってことは、Oracle版JDKはuninstallしてもOK?
以下のフォルダをごそっと削除してしまいたいんだけど。
> /usr/libexec/java_home
/Library/Java/JavaVirtualMachines/jdk1.8.0_212.jdk/Contents/Home
537:デフォルトの名無しさん
19/04/22 16:49:59.02 952sQ1RS.net
>>528
Android Studioを動かすだけなら消しちゃって大丈夫。
そのパソコンで他にjavaに依存している何かを動かしてるなら消しちゃダメ。
538:デフォルトの名無しさん
19/04/22 18:10:15.79 QiOq/xsC.net
>>529
thx
javaに依存してる何かは、無いです。
kotlinc(Kotlin Compiler)コマンドを使いたいので
>brew install kotlin
ってコマンドを打とうとしてます。
kotlinがJREを必要とするなら、JREも同時にbrewがinstallするでしょう。
だったら、消さずに残すのが良いでしょうか?
539:デフォルトの名無しさん
19/04/22 19:06:49.70 R7Rys8j6.net
幼稚園児が増える季節か
540:デフォルトの名無しさん
19/04/22 19:49:54.02 BvK+7rjz.net
この前も別の初心者がkotlincで詰まってたんだけど、どこかの有名な入門サイトがコマンドライン推奨でもしてるの?
正直kotlin書くならIDE前提だろうからコマンドラインでコンパイラの使い方を覚える必要なんて全くないと思うんだが。
541:デフォルトの名無しさん
19/04/22 20:19:08.99 SyBBal55.net
>>532
同じ人なのでは
n=1
542:デフォルトの名無しさん
19/04/22 20:20:41.47 47gIWCEb.net
dagger
543:デフォルトの名無しさん
19/04/22 20:31:59.51 QiOq/xsC.net
>>532
うっそーん。
コマンドラインでチョコっと、コードを試したいってこと無い?
IDEよりVimが好きな俺だけか?
ようやく、Quickrun.vimが動くようになって、今コレ読んでるところ。
はじめてのKotlin。Javaと比較してみた
URLリンク(qiita.com)
30分で覚えるKotlin文法
URLリンク(qiita.com)
544:デフォルトの名無しさん
19/04/22 20:41:55.57 47gIWCEb.net
それならブラウザ上で実行できるplayground的なものが公式にあったはず
545:デフォルトの名無しさん
19/04/22 20:49:23.39 952sQ1RS.net
ちょっと書いてちょっと動かすにしてもIntelliJでRunした方がいいしな、デバッガが超優秀だし
Vimで書いてコマンドラインで実行ってのは確かに昔Javaを勉強した頃はやったけど、
今となっては出汁をとるのに鰹節を削るところから始めるような古めかしさを感じる
546:デフォルトの名無しさん
19/04/22 20:51:00.58 952sQ1RS.net
まあ好みだからそれがやりたいなら良いとは思うよ
仕事で新人がそんなことで詰まってたらやんわり注意するかもしれんけど
547:デフォルトの名無しさん
19/04/22 20:51:15.45 MftVaIwk.net
そういうときはREPL使ってる
548:デフォルトの名無しさん
19/04/22 21:14:37.90 j5GMJ/X8.net
単一ファイルを少し変更したいときはエディタ。
それ以外はIDEを使う
549:デフォルトの名無しさん
19/04/22 21:42:39.28 QiOq/xsC.net
>>537
三大Java IDEは気にはなってるけど、今の所リソース食いそうで躊躇してます。
今の所、Referenceの検索容易性から俺にはVimかなぁ。
デバッグ環境はpoorかな。
550:print文を埋め込むしか、今の所は手が無しかな。 デバッグが必要ならAndroidStudio起動して、なおかつKotlin Scriptに変換して動かす事にします。 ScriptじゃないKotlinコードをAndroidStudioで動かす事は出来ないのかな?よく解らん。 Xcodeならplayground作れるんだが。
551:デフォルトの名無しさん
19/04/22 21:53:50.10 BvK+7rjz.net
君、謎の行動力がありそうでそれはいいんだけど、
本当に何から何まで無駄なことばっかりやってるからまず最初に調べる癖をつけたほうがいい
この世界は一にも二にもまずは調べることが何より大事
552:デフォルトの名無しさん
19/04/22 22:12:50.79 5CpOs8vM.net
KotlinやるならIntelliJ一択
あとガワが違うだけでAndroid Studioの中身はIntelliJ
※Android以外のプロジェクト作成など、一部の機能を非表示にしている
553:デフォルトの名無しさん
19/04/22 22:19:17.89 BvK+7rjz.net
Kotlin勉強したいならIntelliJの無償版使うのが1番おすすめだねえ
ちなみにAndroid Studio動かすのと消費するリソースは同じ、何せほぼ同じものだし
554:デフォルトの名無しさん
19/04/22 22:23:01.40 5CpOs8vM.net
>>522
・JVMはJREの一部、JREはJDKの一部
・Java9以降「システムへの単一JREのインストール」は無くなっており、
JDKから各アプリの同梱用JREを生成する (jdeps/jlink)
・OracleJDKに含まれるJVMは既に有償化されている
・OpenJDKに含まれるJVMは今後も有償化されることは無い
555:デフォルトの名無しさん
19/04/22 23:33:08.26 2FYuav9u.net
>>545
ありがとう
十分に理解できました
556:デフォルトの名無しさん
19/04/23 12:05:16.04 3Q52IgbA.net
>>535
>はじめてのKotlin。Javaと比較してみた
>URLリンク(qiita.com)
>
>30分で覚えるKotlin文法
>URLリンク(qiita.com)
もういっちょ!
Kotlinまとめ - 文法詳解 - クラスとそのメンバ
URLリンク(qiita.com)
557:デフォルトの名無しさん
19/04/23 13:16:20.26 gv0SOq8d.net
>>535
ある。ちょこっとする時は例えWindowsで IntelliJ 起動中でも Linux サーバ側でREPLやるな。
なんでかというと IntelliJ のREPLのウインドウはなんか出力がすぐ出なかったりでおかしいから。
その他短すぎるプログラムのためにわざわざプロジェクト作ったり packge 作るのもアホらしい時とか。
558:デフォルトの名無しさん
19/04/23 14:13:43.00 3Q52IgbA.net
Android Studio残念ポイント!
1. Android Projectしか開くことができない。
2. Hello Worldするhello.ktを開くことができない。
なんで?そう言う時は、IntelliJ使えってことか?▶なんだろうなぁ。
559:デフォルトの名無しさん
19/04/23 14:52:10.33 67h9+wNp.net
>>548,549
JUnit使う手がある。
しかも、main毎にファイル分けるとかしなくていいし。
560:デフォルトの名無しさん
19/04/23 14:54:14.57 TrDrz5+t.net
>>548
IntelliJのあれはまともに動いてないんじゃないかとずっと思ってる
まともに使えてる人いるのだろうか…?
561:デフォルトの名無しさん
19/04/23 15:47:52.74 KnPjeA9Q.net
Intの変数名をintってするのってまずい?
val int : Int = 0
こういうの
562:デフォルトの名無しさん
19/04/23 15:52:03.96 3Q52IgbA.net
>>548
REPLねぇ。
Ruby, JavaScript(Node.js), SwiftのREPL環境を使ったことあるけど、Reflection機能が充実している言語(ruby)以外、イマイチだなぁ。
コードの編集も不自由だし。
あんた、本当にLinux側でREPLする事あるの?
563:デフォルトの名無しさん
19/04/23 15:54:20.98 3Q52IgbA.net
>>552
怖いなぁ。そのコード。
俺、さっき、setNameってメソッドを作ったら、clashしてるって怒られた。
clash = conflict って意味らしい。
java.lang.StringのsetNameメソッドとコンフリクトしてるから、コンパイルしないんだって。
564:デフォルトの名無しさん
19/04/23 16:06:01.49 KnPjeA9Q.net
565:そういうことあるのか でもIntがintじゃないのってintを変数名で使ってもいいよっていう意思を感じるんだよなあ val hoge : Hoge ってすることを考えると val int : Int も自然な気がする
566:デフォルトの名無しさん
19/04/23 16:09:50.49 KnPjeA9Q.net
ああでもjavaは予約語でintだめなのか
やっぱりやめておこう
567:デフォルトの名無しさん
19/04/23 16:25:21.03 xD8uuYM0.net
そもそも逆コンパイルしたソースじゃないんだから
意味のある変数名付けなよ
568:デフォルトの名無しさん
19/04/23 16:31:00.98 3Q52IgbA.net
macOS10.14.3
AndroidStudio3.4
環境です。API Referenceを参照するには、どうすれば?
Command-Jで起動するかと思いきや?何も起こらないっす。
Webサイトへ行かないとダメなのかな?
569:デフォルトの名無しさん
19/04/23 17:37:07.37 gv0SOq8d.net
>>553
ちょっと試す時とかによく使うよ
570:デフォルトの名無しさん
19/04/23 17:41:27.91 3Q52IgbA.net
>>559
thx
そっすか。
571:デフォルトの名無しさん
19/04/23 18:02:43.25 3Q52IgbA.net
>>558
see the hit result of Help>Search(Documentation).
You can retrieve the documents by ctrl-J@macOS as well.
572:デフォルトの名無しさん
19/04/23 19:19:13.65 IWDMUBZh.net
>>555
とりあえず変な癖をつける前に『リーダブルコード』を読んでくれ、頼むから
573:デフォルトの名無しさん
19/04/23 19:47:01.75 hcUTeQ5O.net
リーダブルコード読みやすいしわかりやすいし為になるし
書いたやつ神
574:デフォルトの名無しさん
19/04/23 19:49:26.39 3Q52IgbA.net
>>562
>リーダブルコード
この本そんなに良い本なのか?
ペラペラ見たことあるけど、すでに知ってること、というか、実践していることしか書いてなかった。
575:デフォルトの名無しさん
19/04/23 19:52:05.70 Ky48Nwl1.net
>>564
嘘だ
576:デフォルトの名無しさん
19/04/23 20:08:14.43 gv0SOq8d.net
>>564
じゃあその本に書いてないことが書かれた本を出してくれ。Kindle版だけでもいいから。
577:デフォルトの名無しさん
19/04/23 20:16:21.90 IWDMUBZh.net
>>565
知っていることを再認識させてくれる良書ではある
578:デフォルトの名無しさん
19/04/23 20:18:24.37 IWDMUBZh.net
何でIDが同じになるんだよ
同じプロバイダーなのか
579:デフォルトの名無しさん
19/04/23 20:22:11.04 gv0SOq8d.net
たまーに同じID出ることあるな。ものすごく希だが。
きっと今日は良いことあるよ。あと3時間40分ぐらいで終わるけど。
580:デフォルトの名無しさん
19/04/23 20:22:12.06 3Q52IgbA.net
>>565
嘘じゃない。
ああぁ。俺は間違ってないんだな。という感じ。
まあ、詳細に読んだわけでは無いし、プログラマが知るべき97のこと、って本にも似たような事が書いてある。
Matzも「名前重要」なんて事を、97本に寄稿している。
プログラミング作法、なんかの方がよっぽど良かったな。俺には。
581:デフォルトの名無しさん
19/04/23 20:24:15.75 3Q52IgbA.net
>>569
って事はHash algorithmがpoorってこった。
582:デフォルトの名無しさん
19/04/23 20:25:36.05 B8eC+d1i.net
コードコンプリート
583:デフォルトの名無しさん
19/04/23 20:27:52.73 3Q52IgbA.net
>>570
>Matzも「名前重要」
私の設計上の座右の銘は「名前重要」です。あらゆる機能をデザインする時に、私はその名前にもっともこだわります。
courtesy of Matz
584:デフォルトの名無しさん
19/04/23 20:29:32.04 IWDMUBZh.net
プログラミング作法
プログラム書法
ソフトウェア作法
全てブライアン・カーニハン御年77歳の名著
585:デフォルトの名無しさん
19/04/23 20:31:32.66 gv0SOq8d.net
>>571
まあそういうことだな。
こんな掲示板でrichにしてどうするって感じはするが。
586:デフォルトの名無しさん
19/04/23 20:32:56.33 3Q52IgbA.net
>>566
じゃぁ、一つ俺の考え方を!
狭いスコープの中を生きる変数は、名前が短くても良い。
e.g. str1 = “OK”
広いスコープの中を生きる変数の名前は、長い名前が必要。
e.g. numberOfBooks = 100
何時いかなる時も、意味ある変数名をつけるのは、俺は反対だ。
変数名を考える事に、時間が惜しい時もある。
587:デフォルトの名無しさん
19/04/23 20:33:50.86 PyZ6tY2R.net
拡張プロパティに値セットする方法ある?
588:デフォルトの名無しさん
19/04/23 20:36:26.55 gv0SOq8d.net
やはりプログラミングも茶道とか華道とかと同様にプログラミング道を作ってわびさびが必要な時代が来たのかも知れないな。
589:デフォルトの名無しさん
19/04/23 20:36:27.27 IWDMUBZh.net
>>576
そ、ループ変数なんて i, j, k, ....nで良いやん
590:デフォルトの名無しさん
19/04/23 20:38:43.46 PyZ6tY2R.net
でもkotlinでforとか使わなくね?
591:デフォルトの名無しさん
19/04/23 20:42:02.64 gv0SOq8d.net
>>576
変数名を日本語にすれば良い。
ソース丸ごと世界に公開する予定がないならその方が分かりやすくて良い。
日本語知らないやつには難読化して軽くプロテクトが掛かった状態にもなる。
592:デフォルトの名無しさん
19/04/23 20:54:10.92 3Q52IgbA.net
>>581
昔、英語が出来なかった時には、
kabuPrice
とか
kabuka
なんて恥ずかしい名前使ってたけど、
今では、
sharePrice
でないと、code reading時にストレス感じるわぁ。
593:デフォルトの名無しさん
19/04/23 20:57:09.18 gv0SOq8d.net
漢字使え漢字
594:デフォルトの名無しさん
19/04/23 21:02:15.89 3Q52IgbA.net
val 感じ = "感じ"
print(感じ)
なんと、warningは出るが、実行可能。
595:デフォルトの名無しさん
19/04/23 21:05:59.98 3Q52IgbA.net
Qiita見ながらKotlin修行中だけど、
Jump Command便利そう。
return@forEach
continue@loop
return@loop
とか言うやつ。
これSwiftに欲しい。
596:デフォルトの名無しさん
19/04/23 21:15:06.63 3Q52IgbA.net
そんなことより、API referenceってかDocumentをofflineで見る手段、どうしてる?
Zeal, Velocity, Dashなんかを使ってるの?
Android StudioでAppCompatActivetyを引くと
android.support.v7.app.AppCompatActivity public AppCompatActivity()
Gradle: com.android.support:appcompat-v7:28.0.0@aar
たったコレだけしか表示されないっす。
597:デフォルトの名無しさん
19/04/23 21:32:38.61 bGCgvaJg.net
>>517
俺も謝っておく
触ったすまん
598:デフォルトの名無しさん
19/04/23 21:53:05.69 strBUBex.net
>>585
便利な反面1歩間違えると悲惨なコードになりそうだな
599:デフォルトの名無しさん
19/04/23 22:46:19.69 B8eC+d1i.net
尻でも触ったのか
600:デフォルトの名無しさん
19/04/23 23:21:01.87 IWDMUBZh.net
>>585
Kotlinにあるでしょそれ
URLリンク(kotlinlang.org)
601:デフォルトの名無しさん
19/04/23 23:23:43.15 IWDMUBZh.net
ごめん間違えた、SwiftにあるからKotlinに欲しいって読み違えた
Xamarinのライセンス買ってくる
602:デフォルトの名無しさん
19/04/24 05:30:04.16 BhgQi2cO.net
悲惨なコードとは?
603:デフォルトの名無しさん
19/04/24 05:38:27.15 MHxaAVIF.net
goto文みたいに次にどこに行くのか読みにくいって意味じゃないかな
そんなことはないけどね
604:デフォルトの名無しさん
19/04/24 05:51:11.02 kB2a7+Os.net
変数名漢字って結構有りだと思う
平均からすれば英語かなり必死に勉強したほうだと思うけど、ネイティブからすれば変な英語使ってるって自覚あるし
ネイティブ的な感覚がないから、命名には常に苦労する
もちろん特定用途でしか使えない手法だけど、やっぱり母国語ってわかりやすいよね
英語圏のやつらにスーパハカーが多いのはそういう理由もあるよな、母国語でプログラムできるのうらやましいわ
605:デフォルトの名無しさん
19/04/24 07:33:38.62 ZqBzQREh.net
>>594
英語人口20億、英語母語5億
くらいじゃない?
チェコ、ロシア、ルクセンブルグにHacker多い印象が俺にはある。
606:デフォルトの名無しさん
19/04/24 11:18:15.23 ZqBzQREh.net
Constructorの書き方がムズイ。
primery, secondary constructorとか、Swiftには無いし。
Kotlinスタートブック、はしばらく様子見。今の所買わない方向で…
だって、2016年の本って、情報が古そうだし。
607:デフォルトの名無しさん
19/04/24 12:11:30.51 f6AiwYyw.net
そのうち在日ユダヤが「日本人にベーグル盗まれた」なんて狂言やりそう
608:デフォルトの名無しさん
19/04/24 12:20:40.85 ymPUK1bE.net
>>594
日本語固有のややこしい漢字の名称を無理やり英語にするよりはそのまま使った方が可読性もはるかにいいわな
何か不都合が起きたらIDEでリネームすりゃいいだけの話だから、全然ありだと思う
俺はテストケース名は日本語がんがん使う
609:デフォルトの名無しさん
19/04/24 12:48:24.16 CTi91KC0.net
>>596
Swiftの designated initializer ≒ Kotlinの primary constructor
Swiftの convenience initializer ≒ Kotlinの secondary constructor
610:デフォルトの名無しさん
19/04/24 13:08:03.94 CTi91KC0.net
>>599の具体例
Swift
URLリンク(ideone.com)
Kotlin 比較用
URLリンク(ideone.com)
Kotlin 短縮
URLリンク(ideone.com)
611:デフォルトの名無しさん
19/04/24 13:28:15.20 CQvKnKTI.net
>>577だけどこれ無理っぽいな
612:デフォルトの名無しさん
19/04/24 14:01:42.54 CTi91KC0.net
>>577
勧めるものじゃないけど、一応疑似的にならば
URLリンク(ideone.com)
class A {}
private val xname = WeakHashMap<Any,String?>()
var A.name: String?
get() = xname[this]
set(v:String?) { xname[this] = v }
613:デフォルトの名無しさん
19/04/24 14:14:45.53 ZqBzQREh.net
>>599
thx
614:デフォルトの名無しさん
19/04/24 14:19:09.62 ZqBzQREh.net
>>602
Kotlin day3の俺には、なぜAのインスタンスがnameプロパティを持つのか?
良く解らん。
Rubyみたいに、Aを再オープンしてるのか?
615:デフォルトの名無しさん
19/04/24 14:22:08.49 ZqBzQREh.net
>>604
fun mainの外でthisは何を指してるのだ?
616:デフォルトの名無しさん
19/04/24 14:28:29.52 ZqBzQREh.net
>>605
>fun mainの外でthis
ってのはMainKtのインスタンスってことか?
うぅーん。後で確認。
fun main(args: Array<String>) {}
in a file called Main.kt will compile to something like:
public class MainKt {
public static void main(String[] args) {}
}
617:デフォルトの名無しさん
19/04/24 14:55:22.29 CTi91KC0.net
>>604
602は拡張プロパティとシングルトンのWeakHashMapを利用している
詳細はgoogleで
拡張プロパティ:
見た目はプロパティだが実際のところ
staticメソッドのシンタックスシュガー
fun A_name_get(thisObj: A): String? {
return xname.get(thisObj)
}
println( a.name )
↓
println( A_name_get(a) )
WeakHashMap:
キーがGC対象となるのを阻害しないMap
aとnameの関連付けはここに入っている
aがへの参照が無くなったら、nameへの関連付けもCG対象になって消える
618:デフォルトの名無しさん
19/04/24 15:34:34.20 ZqBzQREh.net
>>607
>拡張プロパティ
気になる!
Rubyの特異メソッドみたいなもんか?
特異メソッド:クラスに住んでるメソッドとは異なり、オブジェクトに住んでるソレ!
619:デフォルトの名無しさん
19/04/24 15:49:00.84 ZqBzQREh.net
>>608
特異メソッドとは違うみたい。
Rubyのクラスの再オープン、オープンクラス、monkey patching
とか言う邪悪なテクみたい。
Dateクラスに本来備わってないyesterday, tomorrowとかいうpropertyを追加したりできる。
620:デフォルトの名無しさん
19/04/24 15:52:13.17 ZqBzQREh.net
うぅーん。
top level でthisが何を指しているのか?
よく解らん。
621:デフォルトの名無しさん
19/04/24 15:52:31.03 CTi91KC0.net
連投せずググりなさい
622:デフォルトの名無しさん
19/04/24 15:56:37.35 ZqBzQREh.net
>>610
きっとthisは、nameプロパティーが呼ばれるまで定まらなくて、nameプロパティーのレシーバー(a1, a2)の事なんだ。
と言う事にしておこう。
拡張関数、拡張プロパティー、が必要になった時のメモ
Kotlinの拡張関数と拡張プロパティについて
URLリンク(qiita.com)
623:デフォルトの名無しさん
19/04/24 17:00:48.57 HA70GdMc.net
>ID:ZqBzQREh
日記は自分のブログでやってくれ
624:デフォルトの名無しさん
19/04/24 17:06:36.37 ymPUK1bE.net
散々言われてるみたいだけどまずとりあえずググる習慣をつけなさい
君はしなくていい回り道が多すぎる
625:デフォルトの名無しさん
19/04/24 20:05:15.35 CQvKnKTI.net
>>602
なるほど外のmapに入れられたのか、盲点だった
それとweakhashmapなんてあったのか初めて見たわ
626:デフォルトの名無しさん
19/04/24 20:26:09.12 ZqBzQREh.net
>>547
30分で…の記事、2日かけてようやくinfix記法のところまで読めた。
多分費やした時間は6hr以上。
全然30分じゃない。
627:デフォルトの名無しさん
19/04/24 20:28:11.81 Hf91oH+Q.net
>>614
君も謝る羽目になるよ
628:デフォルトの名無しさん
19/04/24 20:45:23.71 ZqBzQREh.net
なんと、キーワードになっている識別子もエスケープ可能!
例:isと言う名前のメソッドも呼び出せる。
foo.`is`(bar)
こんな感じ!
629:デフォルトの名無しさん
19/04/24 20:49:33.98 ZqBzQREh.net
Qiitaの30分で…の記事、走り読みした。約8hr位要した。
Vim内でチョコチョコ試運転しながら、走り読み。
お疲れ様でした。▶俺
630:デフォルトの名無しさん
19/04/24 20:52:35.15 ZqBzQREh.net
レシーバー付き関数リテラル、がよく解らんかった。
クラス移譲、プロパティー移譲
byとか使う奴。こんなのSwiftには無かったなぁ。
631:デフォルトの名無しさん
19/04/24 21:03:15.80 kFXKi6KY.net
>>596
Kotlinスタートブック -新しいAndroidプログラミング、長澤 太郎、2016
太郎本を買っていない香具師は、モグリ!
632:デフォルトの名無しさん
19/04/24 21:13:18.43 kFXKi6KY.net
Kotlin は、swift とは似ていない
Kotlin は、Groovy を静的にしたもの。
つまり、Ruby, JavaScript の系統
オブジェクト指向・関数型のミックス
633:デフォルトの名無しさん
19/04/24 22:03:35.37 JvprRVGM.net
Swift程の糞はない
634:デフォルトの名無しさん
19/04/25 06:51:51.77 BgXoud3L.net
>>621
赤ベコ本の事ね。
635:デフォルトの名無しさん
19/04/25 09:50:10.40 P7ID4Nfd.net
リーダブルコード要約
URLリンク(gist.github.com)
初心に戻る良著
最近省略して書いてたから反省してる
636:デフォルトの名無しさん
19/04/25 11:34:43.93 ap5qFTOn.net
> 読みやすい
> if (length > 10 )
>
> 読みにくい
> if (10 < length)
その主観は慣れによる、俺にとっては前者の方が読みにくい
うちでは「物差しの向きに一貫性を持たせる」という指針でやっている
その上で統一のため原則として「小さい方を左に書く」
よって >, >= を使わない
if (10 <= length && length < 100)
まぁRangeやRectでメソッドでの判定をすることも多く
そういう場合は左がどうこうというのは無いが
637:デフォルトの名無しさん
19/04/25 11:52:49.98 8pGnANx9.net
>>626
>if (10 <= length && length < 100)
if (length >= 10 && length < 100)
たまに、こう書くヤツが居るが殺意を覚える
一般的には可変値が左だと思う
638:デフォルトの名無しさん
19/04/25 12:18:15.49 NAVagSqc.net
俺も可変値が左だと思うけど、統一された指針が既にあるならそれを貫いたほうがいい
一貫性はとても大事
639:デフォルトの名無しさん
19/04/25 12:32:09.35 wpotMNKo.net
小さい方を左に書く。
頭の中では、大小は、左右で考えているから
横書きと同じ感覚。
左上がスタート地点
洋画ではそう。左上に赤色を配置する。
そこが目線のスタート地点。
そこから時計回りに目線が、渦の中心へと向かっていく
640:デフォルトの名無しさん
19/04/25 12:41:16.64 NQvr5Lbg.net
>>626
普通、言葉で考えると「lengthは10以上100未満?」て聞くじゃん。
「10は~100は~?」みたいな聞き方しないよね。
主語と動詞を逆にしちゃいけないと思う。
CやC++の頃は
if (length == 10) としたかったところをコーディングミスで
if (length = 10) にしてバグるのを防ぐ為に逆向きにしてた人を見受けたけど、いまどきはIDEがエラー出してくれるからねえ。
641:デフォルトの名無しさん
19/04/25 12:49:03.99 M77Bu+mz.net
IDEなくてもコンパイル時になんか出る。
642:デフォルトの名無しさん
19/04/25 12:54:48.89 P7ID4Nfd.net
>630
なるほど、確かにバグ防止で逆向きにも一理ある
面白いこと考えるね
643:デフォルトの名無しさん
19/04/25 13:03:38.24 myBoG5tn.net
>>632
ヨーダ記法って言うやつ
644:デフォルトの名無しさん
19/04/25 13:14:11.32 wpotMNKo.net
C言語では、左に代入できないものを書いていた
比較演算子と間違えて、代入演算子を使うと、コンパイルエラー
645:デフォルトの名無しさん
19/04/25 13:15:44.93 D7t01tqT.net
ヨーダ記法が可読性低いってのは散々言われてる
結局流行ってないしやらなくていい
646:デフォルトの名無しさん
19/04/25 13:44:40.50 nzEkPIBs.net
老害ってことや
647:デフォルトの名無しさん
19/04/25 14:11:29.90 MiLFxbr9.net
老害にだけは成りたく無いと思ってました
648:デフォルトの名無しさん
19/04/25 14:21:07.30 ap5qFTOn.net
>>630
> 言葉で考えると「lengthは10以上100未満?」て聞くじゃん
なるほど、改めて思い起こすと言葉以上に図や式で考えているな
そういう資料を読み書きすることが多いからかもしれないが
10 length 100
--|----^----------|--
10 ≦ length < 100
他所のだけどイメージ
URLリンク(i.imgur.com)
649:デフォルトの名無しさん
19/04/25 21:25:32.13 BgXoud3L.net
kotlin day4
kotlinc, kotlinコマンドの-classpathオプションの使い方でハマった。
>kotlin -cp jsoup-1.11.3.jar JsoupKt
error: could not find or load main class JsoupKt
こちらが正解
kotlin -cp .:jsoup-1.11.3.jar JsoupKt
なんか、変な仕様。そろそろbuild.gradleファイルの作り方を学ぶべきか?
650:デフォルトの名無しさん
19/04/25 21:29:50.40 BgXoud3L.net
あのぉー、Kotlinでスクレイピングしたいんですけど、
Jsoupがbest practice?
URLリンク(github.com)
実は、Javaも初心者なので、Kotlinへのmigrationでヘトヘト!
651:デフォルトの名無しさん
19/04/25 22:45:02.30 k8swiVaB.net
>>640
どんなサイトをスクレイピングしたいのかによるけど、javascriptをガンガン使ってるようなサイトならSeleniumが鉄板だと思うよ。
Jsoupでもjsを実行させられるらいしけど、とても辛いと聞いたことがある。基本的には静的なhtmlを扱うためのライブラリ。
652:デフォルトの名無しさん
19/04/26 09:47:20.98 MEdB7GvY.net
>>641
thx
Kotlin day5
コマンドラインで、jsoupでスクレーピングするソースを作成できた。
昔を思い出して、実行にはMakefile作成して行った。
Makefile内で文字列操作(大文字小文字変換とか、文字列連結)とかできるかな?
Makefileはこんな感じ!
CC := kotlin
CFLAGS1 := -cp jsoup-1.11.3.jar -include-runtime
CFLAGS2 := -cp .:jsoup-1.11.3.jar
SRC := jsoup
all: go
go:
$(CC)c $(SRC).kt $(CFLAGS1)
$(CC) $(CFLAGS2) JsoupKt
~
653:デフォルトの名無しさん
19/04/26 09:49:24.06 an8vMEsm.net
>>642
makeが何かをわかっていたらそんな質問はしない
654:デフォルトの名無しさん
19/04/26 10:03:32.40 3DaeQ571.net
>>641
Seleniumってテストツールだと思ってたが、そんな使い方があるのか。
目からうろこが1000枚くらい落ちた。
655:デフォルトの名無しさん
19/04/26 10:43:09.29 v018QqLA.net
>>644
Selenium自体はテストとは無関係だよ、ただ用途としてテストツールと組み合わされることが多いだけ。
最近のサイトはReactとかで動的にガンガン組み立てられるからスクレイピングもSelenium使っておいた方が無難。
656:デフォルトの名無しさん
19/04/26 13:23:49.21 A/WNBxWE.net
Ruby, Nokogiri, Selenium WebDriver を使えば?
CSS Selector, XPath で、要素を指定する
driver.execute_script で、JavaScript のソースコードも実行できる
657:デフォルトの名無しさん
19/04/26 14:28:56.17 5b9msznW.net
Kotlin勉強してるって言ってるんだから別にRubyじゃなくていいだろ
658:デフォルトの名無しさん
19/04/26 14:34:22.95 an8vMEsm.net
NokogiriでXPathとCSSセレクタ使うならべつにこっちでも同じだと思うよ
659:デフォルトの名無しさん
19/04/26 17:19:57.29 MEdB7GvY.net
JsoupはNokogiriと違ってXPathを使ってDOMの操作ができない。
けど、使い方はNokogiriとよく似てる。
Androidアプリにスクレイピング機能を実装したいので、Ruby使えば?は却下!
660:デフォルトの名無しさん
19/04/26 17:21:05.67 MEdB7GvY.net
ところでJsoupの名前の由来って何?
Java soup = Javaのスープ
変な名前。
661:デフォルトの名無しさん
19/04/26 17:57:42.91 TC/HkfSU
662:.net
663:デフォルトの名無しさん
19/04/26 18:12:21.37 tgodpZ2Y.net
ごった煮
664:デフォルトの名無しさん
19/04/26 20:00:10.59 ErNxnYz2.net
>>651
まあまあまぁまァ、落ち着けよ
このスレのレベルはピンキリさ
665:デフォルトの名無しさん
19/04/26 20:32:30.11 MEdB7GvY.net
>>651
thx.
That is originated in “soup HTML document up beautifully”, it seems.
666:デフォルトの名無しさん
19/04/26 21:06:34.41 XuSZUgKR.net
個人の試行錯誤の実況でスレが消費されてくより過疎ってた方がマシ
667:デフォルトの名無しさん
19/04/27 09:33:03.49 2kV59Ab3.net
スレの消費はどうでもいいんだけど、試行錯誤の記録はqiitaなりブログなり自分で管理できるところに残しておいた方が後々良いと思うんだよね
668:デフォルトの名無しさん
19/04/27 09:47:43.31 X+HWf3Sy.net
>>516
fragmentは再利用されるからlateinit var
669:デフォルトの名無しさん
19/05/08 08:51:45.05 7421dKds.net
Google、Androidにおける「Kotlinファースト」強化を表明。Google I/O 2019
URLリンク(www.publickey1.jp)
670:デフォルトの名無しさん
19/05/08 09:08:00.50 1o0ZoV2Z.net
>>658
わかったからFlutterで(を?)使えるようにしてくれ
現時点で構造的に対応超絶困難だ
マテリアルデザインの普及にも役立つだろ
671:デフォルトの名無しさん
19/05/08 19:13:02.95 PdqlbBMH.net
kotlin day17、object式
クラスAをインターフェースBによって僅かに修正したクラスCのインスタンスが必要となった時に、サブクラスCを宣言せずにそのインスタンスabを生成できる。
```kt
open class A(x: Int) {
public open val y: Int = x
}
interface B {...}
val ab: A = object : A(1), B {
override val y = 15
}
```
672:デフォルトの名無しさん
19/05/08 21:35:17.96 1/kiWGBR.net
前スレでも書いたがKotlin/JSに続く、Kotlin/Dartトランスパイラをだな・・
まぁやれるとしたらJB側だからリソース的に無理なんだけどな
673:デフォルトの名無しさん
19/05/09 00:39:13.38 62rwCBNY.net
>>661
Flutterが目当てなら、必ずしもDartを介することはないのでは?
674:デフォルトの名無しさん
19/05/09 07:27:30.06 bwcjejUH.net
どういう意味?
675:デフォルトの名無しさん
19/05/09 07:28:01.24 bwcjejUH.net
ああ、ごめん分かったよく読んでなかった
676:デフォルトの名無しさん
19/05/09 07:49:34.83 p+Gqts9i.net
>>662
少なくともDart Kernel binaryを生成出来ないとFlutterのホットリロードが使えない
Kernel binaryの仕様はDart自体より安定してない
URLリンク(flutter.dev)
URLリンク(mrale.ph)
Flutterのクロスプラットフォーム性や開発時の機能などの結構な割合を
Dart自体の機能により実現しているのでその辺の仕組みに乗っかれないと逆に厳しいと思うぞ
677:デフォルトの名無しさん
19/05/09 09:45:14.22 Gvcl+e3N.net
flutterも最初素晴らしいと触ってたけど、dartの糞さに嫌気さしてさわるのやめたな。つか、flutterは致命的な問題もあるしな
678:デフォルトの名無しさん
19/05/09 13:10:55.61 fgBYrKh8.net
kotlinのgraphqlライブラリ微妙だからscalaのsangria使えないかなー
sangriaどころかscala触ったことないけど
679:デフォルトの名無しさん
19/05/09 15:52:18.57 drrQ8Z5A.net
>>666
どんな問題?
680:デフォルトの名無しさん
19/05/09 20:53:25.89 Gvcl+e3N.net
モバイルアプリはメモリ不足によってプロセスキルされ、キル前の状態に戻すために復元の仕組みが用意されてるがflutterではどうすればいいの?問題。
例えばandroidならonSaveInstanceStateがあるが、flutterではどうすれば?
flutterは1つのActivity上でページ遷移してるが、ページ毎に状態保存、復元は?
URLリンク(github.com)
681:デフォルトの名無しさん
19/05/09 20:58:48.44 Gvcl+e3N.net
モバイルアプリ開発したことあれば必ずプロセスキルの問題に出くわすと思うんだがflutterの開発チームはこれ放置してるという。普通flutterの設計段階でこの事考慮すべきだが全く考慮してなさそうというあほっぷり。
682:デフォルトの名無しさん
19/05/09 23:07:11.65 p+GF1Adw.net
地方都市だけど最近Android本が本屋に数冊しかない
他言語は田舎のわりにはけっこう置いてるんだけど
Kotlin移行の影響なのかも
683:デフォルトの名無しさん
19/05/10 00:21:35.88 JD2pFQw6.net
>>670
flutter詳しくは知らんが、もしそれが本当ならモバイル用途としてはたしかに致命的欠陥だな
後付けでflutterのフレームワークの中で強引に全部保存復帰するようにするから気にするな、みたいなこと
考えてるとしたらヤバイ
そういうことができないモバイルだからステートの保存と復帰はアプリに投げるように作ってあるのに・・
684:デフォルトの名無しさん
19/05/10 03:07:44.06 +vHN15fT.net
>>671
Amazon使いなさい。
685:デフォルトの名無しさん
19/05/10 10:49:17.54 pdzLc3IS.net
Kotlin/Everywhere
URLリンク(blog.jetbrains.com)
・イベントは主に5月のGoogle I/Oと12月上旬のKotlinConfの間に行われる
・イベント予定は以下の地図に表示される(今後追加されていく)
URLリンク(events.withgoogle.com)
686:デフォルトの名無しさん
19/05/10 16:19:08.62 54LLglmL.net
>>671
同志
Android関連本、俺のところも本屋には少ない。
大阪に隣接の県の県庁所在地なんだけど。
大阪のデカイ本屋へは往復2,000円掛かっちまう。
687:デフォルトの名無しさん
19/05/10 19:41:51.78 iG629wI3.net
>>675
奈良市かな?
688:デフォルトの名無しさん
19/05/10 21:37:10.49 shkkgOQu.net
>>675
Kindleおすすめ
マルチディスプレイで勉強捗る
689:デフォルトの名無しさん
19/05/10 21:56:19.96 54LLglmL.net
>>677
Kindleも試したけど、俺、紙の本派なんだよねぇ。
書き込みできるのが紙の本がありがたい。
KindleのためにiPad Pro 12inchも買ったけどやっぱり紙が良いんだよねぇ。
俺って、変かなぁ。
690:デフォルトの名無しさん
19/05/10 22:08:26.51 3MWdvG+0.net
紙の解像度にはまだまだ電子書籍は敵わない
紙の優位性はあるから書見台(ブックスタンド)とか使え、そしてやっぱイマイチだってしまい込むんだ
印刷したデータは死んだデータだってのは、まあ、その通りなんだけども
691:デフォルトの名無しさん
19/05/10 23:11:37.34 msYu7Wbl.net
ktorでhttpsやろうとしてサンプル試してみたけどなんかダメだな
692:デフォルトの名無しさん
19/05/11 01:07:57.25 i9FGZXUp.net
>>673
Amazonも楽天も使ってるよ
ただ本屋に置いてない状況を見ると
Android開発の人気無くなってきてるのかなと思って
本屋は内容確認できる長所あるし
もう少し置いてほしいところ
693:デフォルトの名無しさん
19/05/11 06:20:49.01 J+BhWrkd.net
>>680
オレオレ認証局だけど出来たよ。Let'sEncryptのところでなければ答えられるかも。
>>681
Android開発者が紙の本からKindleに移住している可能性も。
といいつつ自分はPC本は紙派。読んだ後確認する時にこのあたりかなとパラパラとめくりながら探せるので。
694:デフォルトの名無しさん
19/05/11 07:17:10.19 g6fo75+g.net
[改訂新版]Android SDKポケットリファレンス
これのKindle版って、サンプルコード見やすいですか?
[改訂新版]Swiftポケットリファレンス、こいつのKindle版掲載のサンプルコードは、文字の拡大縮小も可能で、Goodなんだけど。
Kindle Paper Whiteで閲覧します。iPad Pro 12inchもあるけど。