JetBrainsが開発した期待の新言語、Androidの公式開発言語にしてサーバーサイドもなんでもいけるKotlinについて語りましょう
※前スレ
https://mevius.5ch.net/test/read.cgi/tech/1531818027/
探検
Kotlin 5
■ このスレッドは過去ログ倉庫に格納されています
2018/12/08(土) 20:29:41.41ID:oXOQORcd
559デフォルトの名無しさん
2019/04/23(火) 17:37:07.37ID:gv0SOq8d >>553
ちょっと試す時とかによく使うよ
ちょっと試す時とかによく使うよ
560デフォルトの名無しさん
2019/04/23(火) 17:41:27.91ID:3Q52IgbA561デフォルトの名無しさん
2019/04/23(火) 18:02:43.25ID:3Q52IgbA >>558
see the hit result of Help>Search(Documentation).
You can retrieve the documents by ctrl-J@macOS as well.
see the hit result of Help>Search(Documentation).
You can retrieve the documents by ctrl-J@macOS as well.
562デフォルトの名無しさん
2019/04/23(火) 19:19:13.65ID:IWDMUBZh >>555
とりあえず変な癖をつける前に『リーダブルコード』を読んでくれ、頼むから
とりあえず変な癖をつける前に『リーダブルコード』を読んでくれ、頼むから
563デフォルトの名無しさん
2019/04/23(火) 19:47:01.75ID:hcUTeQ5O リーダブルコード読みやすいしわかりやすいし為になるし
書いたやつ神
書いたやつ神
564デフォルトの名無しさん
2019/04/23(火) 19:49:26.39ID:3Q52IgbA565デフォルトの名無しさん
2019/04/23(火) 19:52:05.70ID:Ky48Nwl1 >>564
嘘だ
嘘だ
566デフォルトの名無しさん
2019/04/23(火) 20:08:14.43ID:gv0SOq8d >>564
じゃあその本に書いてないことが書かれた本を出してくれ。Kindle版だけでもいいから。
じゃあその本に書いてないことが書かれた本を出してくれ。Kindle版だけでもいいから。
567デフォルトの名無しさん
2019/04/23(火) 20:16:21.90ID:IWDMUBZh >>565
知っていることを再認識させてくれる良書ではある
知っていることを再認識させてくれる良書ではある
568デフォルトの名無しさん
2019/04/23(火) 20:18:24.37ID:IWDMUBZh 何でIDが同じになるんだよ
同じプロバイダーなのか
同じプロバイダーなのか
569デフォルトの名無しさん
2019/04/23(火) 20:22:11.04ID:gv0SOq8d たまーに同じID出ることあるな。ものすごく希だが。
きっと今日は良いことあるよ。あと3時間40分ぐらいで終わるけど。
きっと今日は良いことあるよ。あと3時間40分ぐらいで終わるけど。
570デフォルトの名無しさん
2019/04/23(火) 20:22:12.06ID:3Q52IgbA >>565
嘘じゃない。
ああぁ。俺は間違ってないんだな。という感じ。
まあ、詳細に読んだわけでは無いし、プログラマが知るべき97のこと、って本にも似たような事が書いてある。
Matzも「名前重要」なんて事を、97本に寄稿している。
プログラミング作法、なんかの方がよっぽど良かったな。俺には。
嘘じゃない。
ああぁ。俺は間違ってないんだな。という感じ。
まあ、詳細に読んだわけでは無いし、プログラマが知るべき97のこと、って本にも似たような事が書いてある。
Matzも「名前重要」なんて事を、97本に寄稿している。
プログラミング作法、なんかの方がよっぽど良かったな。俺には。
571デフォルトの名無しさん
2019/04/23(火) 20:24:15.75ID:3Q52IgbA >>569
って事はHash algorithmがpoorってこった。
って事はHash algorithmがpoorってこった。
572デフォルトの名無しさん
2019/04/23(火) 20:25:36.05ID:B8eC+d1i コードコンプリート
573デフォルトの名無しさん
2019/04/23(火) 20:27:52.73ID:3Q52IgbA574デフォルトの名無しさん
2019/04/23(火) 20:29:32.04ID:IWDMUBZh プログラミング作法
プログラム書法
ソフトウェア作法
全てブライアン・カーニハン御年77歳の名著
プログラム書法
ソフトウェア作法
全てブライアン・カーニハン御年77歳の名著
575デフォルトの名無しさん
2019/04/23(火) 20:31:32.66ID:gv0SOq8d576デフォルトの名無しさん
2019/04/23(火) 20:32:56.33ID:3Q52IgbA >>566
じゃぁ、一つ俺の考え方を!
狭いスコープの中を生きる変数は、名前が短くても良い。
e.g. str1 = “OK”
広いスコープの中を生きる変数の名前は、長い名前が必要。
e.g. numberOfBooks = 100
何時いかなる時も、意味ある変数名をつけるのは、俺は反対だ。
変数名を考える事に、時間が惜しい時もある。
じゃぁ、一つ俺の考え方を!
狭いスコープの中を生きる変数は、名前が短くても良い。
e.g. str1 = “OK”
広いスコープの中を生きる変数の名前は、長い名前が必要。
e.g. numberOfBooks = 100
何時いかなる時も、意味ある変数名をつけるのは、俺は反対だ。
変数名を考える事に、時間が惜しい時もある。
577デフォルトの名無しさん
2019/04/23(火) 20:33:50.86ID:PyZ6tY2R 拡張プロパティに値セットする方法ある?
578デフォルトの名無しさん
2019/04/23(火) 20:36:26.55ID:gv0SOq8d やはりプログラミングも茶道とか華道とかと同様にプログラミング道を作ってわびさびが必要な時代が来たのかも知れないな。
579デフォルトの名無しさん
2019/04/23(火) 20:36:27.27ID:IWDMUBZh >>576
そ、ループ変数なんて i, j, k, ....nで良いやん
そ、ループ変数なんて i, j, k, ....nで良いやん
580デフォルトの名無しさん
2019/04/23(火) 20:38:43.46ID:PyZ6tY2R でもkotlinでforとか使わなくね?
581デフォルトの名無しさん
2019/04/23(火) 20:42:02.64ID:gv0SOq8d582デフォルトの名無しさん
2019/04/23(火) 20:54:10.92ID:3Q52IgbA >>581
昔、英語が出来なかった時には、
kabuPrice
とか
kabuka
なんて恥ずかしい名前使ってたけど、
今では、
sharePrice
でないと、code reading時にストレス感じるわぁ。
昔、英語が出来なかった時には、
kabuPrice
とか
kabuka
なんて恥ずかしい名前使ってたけど、
今では、
sharePrice
でないと、code reading時にストレス感じるわぁ。
583デフォルトの名無しさん
2019/04/23(火) 20:57:09.18ID:gv0SOq8d 漢字使え漢字
584デフォルトの名無しさん
2019/04/23(火) 21:02:15.89ID:3Q52IgbA val 感じ = "感じ"
print(感じ)
なんと、warningは出るが、実行可能。
print(感じ)
なんと、warningは出るが、実行可能。
585デフォルトの名無しさん
2019/04/23(火) 21:05:59.98ID:3Q52IgbA Qiita見ながらKotlin修行中だけど、
Jump Command便利そう。
return@forEach
continue@loop
return@loop
とか言うやつ。
これSwiftに欲しい。
Jump Command便利そう。
return@forEach
continue@loop
return@loop
とか言うやつ。
これSwiftに欲しい。
586デフォルトの名無しさん
2019/04/23(火) 21:15:06.63ID:3Q52IgbA そんなことより、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
たったコレだけしか表示されないっす。
Zeal, Velocity, Dashなんかを使ってるの?
Android StudioでAppCompatActivetyを引くと
android.support.v7.app.AppCompatActivity public AppCompatActivity()
Gradle: com.android.support:appcompat-v7:28.0.0@aar
たったコレだけしか表示されないっす。
587デフォルトの名無しさん
2019/04/23(火) 21:32:38.61ID:bGCgvaJg588デフォルトの名無しさん
2019/04/23(火) 21:53:05.69ID:strBUBex >>585
便利な反面1歩間違えると悲惨なコードになりそうだな
便利な反面1歩間違えると悲惨なコードになりそうだな
589デフォルトの名無しさん
2019/04/23(火) 22:46:19.69ID:B8eC+d1i 尻でも触ったのか
590デフォルトの名無しさん
2019/04/23(火) 23:21:01.87ID:IWDMUBZh591デフォルトの名無しさん
2019/04/23(火) 23:23:43.15ID:IWDMUBZh ごめん間違えた、SwiftにあるからKotlinに欲しいって読み違えた
Xamarinのライセンス買ってくる
Xamarinのライセンス買ってくる
592デフォルトの名無しさん
2019/04/24(水) 05:30:04.16ID:BhgQi2cO 悲惨なコードとは?
593デフォルトの名無しさん
2019/04/24(水) 05:38:27.15ID:MHxaAVIF goto文みたいに次にどこに行くのか読みにくいって意味じゃないかな
そんなことはないけどね
そんなことはないけどね
594デフォルトの名無しさん
2019/04/24(水) 05:51:11.02ID:kB2a7+Os 変数名漢字って結構有りだと思う
平均からすれば英語かなり必死に勉強したほうだと思うけど、ネイティブからすれば変な英語使ってるって自覚あるし
ネイティブ的な感覚がないから、命名には常に苦労する
もちろん特定用途でしか使えない手法だけど、やっぱり母国語ってわかりやすいよね
英語圏のやつらにスーパハカーが多いのはそういう理由もあるよな、母国語でプログラムできるのうらやましいわ
平均からすれば英語かなり必死に勉強したほうだと思うけど、ネイティブからすれば変な英語使ってるって自覚あるし
ネイティブ的な感覚がないから、命名には常に苦労する
もちろん特定用途でしか使えない手法だけど、やっぱり母国語ってわかりやすいよね
英語圏のやつらにスーパハカーが多いのはそういう理由もあるよな、母国語でプログラムできるのうらやましいわ
595デフォルトの名無しさん
2019/04/24(水) 07:33:38.62ID:ZqBzQREh596デフォルトの名無しさん
2019/04/24(水) 11:18:15.23ID:ZqBzQREh Constructorの書き方がムズイ。
primery, secondary constructorとか、Swiftには無いし。
Kotlinスタートブック、はしばらく様子見。今の所買わない方向で…
だって、2016年の本って、情報が古そうだし。
primery, secondary constructorとか、Swiftには無いし。
Kotlinスタートブック、はしばらく様子見。今の所買わない方向で…
だって、2016年の本って、情報が古そうだし。
597デフォルトの名無しさん
2019/04/24(水) 12:11:30.51ID:f6AiwYyw そのうち在日ユダヤが「日本人にベーグル盗まれた」なんて狂言やりそう
598デフォルトの名無しさん
2019/04/24(水) 12:20:40.85ID:ymPUK1bE >>594
日本語固有のややこしい漢字の名称を無理やり英語にするよりはそのまま使った方が可読性もはるかにいいわな
何か不都合が起きたらIDEでリネームすりゃいいだけの話だから、全然ありだと思う
俺はテストケース名は日本語がんがん使う
日本語固有のややこしい漢字の名称を無理やり英語にするよりはそのまま使った方が可読性もはるかにいいわな
何か不都合が起きたらIDEでリネームすりゃいいだけの話だから、全然ありだと思う
俺はテストケース名は日本語がんがん使う
599デフォルトの名無しさん
2019/04/24(水) 12:48:24.16ID:CTi91KC0 >>596
Swiftの designated initializer ≒ Kotlinの primary constructor
Swiftの convenience initializer ≒ Kotlinの secondary constructor
Swiftの designated initializer ≒ Kotlinの primary constructor
Swiftの convenience initializer ≒ Kotlinの secondary constructor
600デフォルトの名無しさん
2019/04/24(水) 13:08:03.94ID:CTi91KC0 >>599の具体例
Swift
https://ideone.com/48Boj1
Kotlin 比較用
https://ideone.com/ovwjrs
Kotlin 短縮
https://ideone.com/IcR8Wo
Swift
https://ideone.com/48Boj1
Kotlin 比較用
https://ideone.com/ovwjrs
Kotlin 短縮
https://ideone.com/IcR8Wo
601デフォルトの名無しさん
2019/04/24(水) 13:28:15.20ID:CQvKnKTI >>577だけどこれ無理っぽいな
602デフォルトの名無しさん
2019/04/24(水) 14:01:42.54ID:CTi91KC0 >>577
勧めるものじゃないけど、一応疑似的にならば
https://ideone.com/7lTdsi
class A {}
private val xname = WeakHashMap<Any,String?>()
var A.name: String?
get() = xname[this]
set(v:String?) { xname[this] = v }
勧めるものじゃないけど、一応疑似的にならば
https://ideone.com/7lTdsi
class A {}
private val xname = WeakHashMap<Any,String?>()
var A.name: String?
get() = xname[this]
set(v:String?) { xname[this] = v }
603デフォルトの名無しさん
2019/04/24(水) 14:14:45.53ID:ZqBzQREh >>599
thx
thx
604デフォルトの名無しさん
2019/04/24(水) 14:19:09.62ID:ZqBzQREh605デフォルトの名無しさん
2019/04/24(水) 14:22:08.49ID:ZqBzQREh >>604
fun mainの外でthisは何を指してるのだ?
fun mainの外でthisは何を指してるのだ?
606デフォルトの名無しさん
2019/04/24(水) 14:28:29.52ID:ZqBzQREh >>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) {}
}
>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) {}
}
607デフォルトの名無しさん
2019/04/24(水) 14:55:22.29ID:CTi91KC0 >>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対象になって消える
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対象になって消える
608デフォルトの名無しさん
2019/04/24(水) 15:34:34.20ID:ZqBzQREh609デフォルトの名無しさん
2019/04/24(水) 15:49:00.84ID:ZqBzQREh >>608
特異メソッドとは違うみたい。
Rubyのクラスの再オープン、オープンクラス、monkey patching
とか言う邪悪なテクみたい。
Dateクラスに本来備わってないyesterday, tomorrowとかいうpropertyを追加したりできる。
特異メソッドとは違うみたい。
Rubyのクラスの再オープン、オープンクラス、monkey patching
とか言う邪悪なテクみたい。
Dateクラスに本来備わってないyesterday, tomorrowとかいうpropertyを追加したりできる。
610デフォルトの名無しさん
2019/04/24(水) 15:52:13.17ID:ZqBzQREh うぅーん。
top level でthisが何を指しているのか?
よく解らん。
top level でthisが何を指しているのか?
よく解らん。
611デフォルトの名無しさん
2019/04/24(水) 15:52:31.03ID:CTi91KC0 連投せずググりなさい
612デフォルトの名無しさん
2019/04/24(水) 15:56:37.35ID:ZqBzQREh >>610
きっとthisは、nameプロパティーが呼ばれるまで定まらなくて、nameプロパティーのレシーバー(a1, a2)の事なんだ。
と言う事にしておこう。
拡張関数、拡張プロパティー、が必要になった時のメモ
Kotlinの拡張関数と拡張プロパティについて
https://qiita.com/RyotaMurohoshi/items/4b958af1d23da6d91a61
きっとthisは、nameプロパティーが呼ばれるまで定まらなくて、nameプロパティーのレシーバー(a1, a2)の事なんだ。
と言う事にしておこう。
拡張関数、拡張プロパティー、が必要になった時のメモ
Kotlinの拡張関数と拡張プロパティについて
https://qiita.com/RyotaMurohoshi/items/4b958af1d23da6d91a61
613デフォルトの名無しさん
2019/04/24(水) 17:00:48.57ID:HA70GdMc >ID:ZqBzQREh
日記は自分のブログでやってくれ
日記は自分のブログでやってくれ
614デフォルトの名無しさん
2019/04/24(水) 17:06:36.37ID:ymPUK1bE 散々言われてるみたいだけどまずとりあえずググる習慣をつけなさい
君はしなくていい回り道が多すぎる
君はしなくていい回り道が多すぎる
615デフォルトの名無しさん
2019/04/24(水) 20:05:15.35ID:CQvKnKTI616デフォルトの名無しさん
2019/04/24(水) 20:26:09.12ID:ZqBzQREh617デフォルトの名無しさん
2019/04/24(水) 20:28:11.81ID:Hf91oH+Q >>614
君も謝る羽目になるよ
君も謝る羽目になるよ
618デフォルトの名無しさん
2019/04/24(水) 20:45:23.71ID:ZqBzQREh なんと、キーワードになっている識別子もエスケープ可能!
例:isと言う名前のメソッドも呼び出せる。
foo.`is`(bar)
こんな感じ!
例:isと言う名前のメソッドも呼び出せる。
foo.`is`(bar)
こんな感じ!
619デフォルトの名無しさん
2019/04/24(水) 20:49:33.98ID:ZqBzQREh Qiitaの30分で…の記事、走り読みした。約8hr位要した。
Vim内でチョコチョコ試運転しながら、走り読み。
お疲れ様でした。▶俺
Vim内でチョコチョコ試運転しながら、走り読み。
お疲れ様でした。▶俺
620デフォルトの名無しさん
2019/04/24(水) 20:52:35.15ID:ZqBzQREh レシーバー付き関数リテラル、がよく解らんかった。
クラス移譲、プロパティー移譲
byとか使う奴。こんなのSwiftには無かったなぁ。
クラス移譲、プロパティー移譲
byとか使う奴。こんなのSwiftには無かったなぁ。
621デフォルトの名無しさん
2019/04/24(水) 21:03:15.80ID:kFXKi6KY622デフォルトの名無しさん
2019/04/24(水) 21:13:18.43ID:kFXKi6KY Kotlin は、swift とは似ていない
Kotlin は、Groovy を静的にしたもの。
つまり、Ruby, JavaScript の系統
オブジェクト指向・関数型のミックス
Kotlin は、Groovy を静的にしたもの。
つまり、Ruby, JavaScript の系統
オブジェクト指向・関数型のミックス
623デフォルトの名無しさん
2019/04/24(水) 22:03:35.37ID:JvprRVGM Swift程の糞はない
624デフォルトの名無しさん
2019/04/25(木) 06:51:51.77ID:BgXoud3L >>621
赤ベコ本の事ね。
赤ベコ本の事ね。
625デフォルトの名無しさん
2019/04/25(木) 09:50:10.40ID:P7ID4Nfd626デフォルトの名無しさん
2019/04/25(木) 11:34:43.93ID:ap5qFTOn > 読みやすい
> if (length > 10 )
>
> 読みにくい
> if (10 < length)
その主観は慣れによる、俺にとっては前者の方が読みにくい
うちでは「物差しの向きに一貫性を持たせる」という指針でやっている
その上で統一のため原則として「小さい方を左に書く」
よって >, >= を使わない
if (10 <= length && length < 100)
まぁRangeやRectでメソッドでの判定をすることも多く
そういう場合は左がどうこうというのは無いが
> if (length > 10 )
>
> 読みにくい
> if (10 < length)
その主観は慣れによる、俺にとっては前者の方が読みにくい
うちでは「物差しの向きに一貫性を持たせる」という指針でやっている
その上で統一のため原則として「小さい方を左に書く」
よって >, >= を使わない
if (10 <= length && length < 100)
まぁRangeやRectでメソッドでの判定をすることも多く
そういう場合は左がどうこうというのは無いが
627デフォルトの名無しさん
2019/04/25(木) 11:52:49.98ID:8pGnANx9 >>626
>if (10 <= length && length < 100)
if (length >= 10 && length < 100)
たまに、こう書くヤツが居るが殺意を覚える
一般的には可変値が左だと思う
>if (10 <= length && length < 100)
if (length >= 10 && length < 100)
たまに、こう書くヤツが居るが殺意を覚える
一般的には可変値が左だと思う
628デフォルトの名無しさん
2019/04/25(木) 12:18:15.49ID:NAVagSqc 俺も可変値が左だと思うけど、統一された指針が既にあるならそれを貫いたほうがいい
一貫性はとても大事
一貫性はとても大事
629デフォルトの名無しさん
2019/04/25(木) 12:32:09.35ID:wpotMNKo 小さい方を左に書く。
頭の中では、大小は、左右で考えているから
横書きと同じ感覚。
左上がスタート地点
洋画ではそう。左上に赤色を配置する。
そこが目線のスタート地点。
そこから時計回りに目線が、渦の中心へと向かっていく
頭の中では、大小は、左右で考えているから
横書きと同じ感覚。
左上がスタート地点
洋画ではそう。左上に赤色を配置する。
そこが目線のスタート地点。
そこから時計回りに目線が、渦の中心へと向かっていく
630デフォルトの名無しさん
2019/04/25(木) 12:41:16.64ID:NQvr5Lbg >>626
普通、言葉で考えると「lengthは10以上100未満?」て聞くじゃん。
「10は〜100は〜?」みたいな聞き方しないよね。
主語と動詞を逆にしちゃいけないと思う。
CやC++の頃は
if (length == 10) としたかったところをコーディングミスで
if (length = 10) にしてバグるのを防ぐ為に逆向きにしてた人を見受けたけど、いまどきはIDEがエラー出してくれるからねえ。
普通、言葉で考えると「lengthは10以上100未満?」て聞くじゃん。
「10は〜100は〜?」みたいな聞き方しないよね。
主語と動詞を逆にしちゃいけないと思う。
CやC++の頃は
if (length == 10) としたかったところをコーディングミスで
if (length = 10) にしてバグるのを防ぐ為に逆向きにしてた人を見受けたけど、いまどきはIDEがエラー出してくれるからねえ。
631デフォルトの名無しさん
2019/04/25(木) 12:49:03.99ID:M77Bu+mz IDEなくてもコンパイル時になんか出る。
632デフォルトの名無しさん
2019/04/25(木) 12:54:48.89ID:P7ID4Nfd >630
なるほど、確かにバグ防止で逆向きにも一理ある
面白いこと考えるね
なるほど、確かにバグ防止で逆向きにも一理ある
面白いこと考えるね
633デフォルトの名無しさん
2019/04/25(木) 13:03:38.24ID:myBoG5tn >>632
ヨーダ記法って言うやつ
ヨーダ記法って言うやつ
634デフォルトの名無しさん
2019/04/25(木) 13:14:11.32ID:wpotMNKo C言語では、左に代入できないものを書いていた
比較演算子と間違えて、代入演算子を使うと、コンパイルエラー
比較演算子と間違えて、代入演算子を使うと、コンパイルエラー
635デフォルトの名無しさん
2019/04/25(木) 13:15:44.93ID:D7t01tqT ヨーダ記法が可読性低いってのは散々言われてる
結局流行ってないしやらなくていい
結局流行ってないしやらなくていい
636デフォルトの名無しさん
2019/04/25(木) 13:44:40.50ID:nzEkPIBs 老害ってことや
637デフォルトの名無しさん
2019/04/25(木) 14:11:29.90ID:MiLFxbr9 老害にだけは成りたく無いと思ってました
638デフォルトの名無しさん
2019/04/25(木) 14:21:07.30ID:ap5qFTOn >>630
> 言葉で考えると「lengthは10以上100未満?」て聞くじゃん
なるほど、改めて思い起こすと言葉以上に図や式で考えているな
そういう資料を読み書きすることが多いからかもしれないが
10 length 100
--|----^----------|--
10 ≦ length < 100
他所のだけどイメージ
https://i.imgur.com/d5iRSb2.jpg
> 言葉で考えると「lengthは10以上100未満?」て聞くじゃん
なるほど、改めて思い起こすと言葉以上に図や式で考えているな
そういう資料を読み書きすることが多いからかもしれないが
10 length 100
--|----^----------|--
10 ≦ length < 100
他所のだけどイメージ
https://i.imgur.com/d5iRSb2.jpg
639デフォルトの名無しさん
2019/04/25(木) 21:25:32.13ID:BgXoud3L 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ファイルの作り方を学ぶべきか?
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ファイルの作り方を学ぶべきか?
640デフォルトの名無しさん
2019/04/25(木) 21:29:50.40ID:BgXoud3L あのぉー、Kotlinでスクレイピングしたいんですけど、
Jsoupがbest practice?
https://github.com/jhy/jsoup
実は、Javaも初心者なので、Kotlinへのmigrationでヘトヘト!
Jsoupがbest practice?
https://github.com/jhy/jsoup
実は、Javaも初心者なので、Kotlinへのmigrationでヘトヘト!
641デフォルトの名無しさん
2019/04/25(木) 22:45:02.30ID:k8swiVaB >>640
どんなサイトをスクレイピングしたいのかによるけど、javascriptをガンガン使ってるようなサイトならSeleniumが鉄板だと思うよ。
Jsoupでもjsを実行させられるらいしけど、とても辛いと聞いたことがある。基本的には静的なhtmlを扱うためのライブラリ。
どんなサイトをスクレイピングしたいのかによるけど、javascriptをガンガン使ってるようなサイトならSeleniumが鉄板だと思うよ。
Jsoupでもjsを実行させられるらいしけど、とても辛いと聞いたことがある。基本的には静的なhtmlを扱うためのライブラリ。
642デフォルトの名無しさん
2019/04/26(金) 09:47:20.98ID:MEdB7GvY >>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
~
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
~
643デフォルトの名無しさん
2019/04/26(金) 09:49:24.06ID:an8vMEsm >>642
makeが何かをわかっていたらそんな質問はしない
makeが何かをわかっていたらそんな質問はしない
644デフォルトの名無しさん
2019/04/26(金) 10:03:32.40ID:3DaeQ571645デフォルトの名無しさん
2019/04/26(金) 10:43:09.29ID:v018QqLA >>644
Selenium自体はテストとは無関係だよ、ただ用途としてテストツールと組み合わされることが多いだけ。
最近のサイトはReactとかで動的にガンガン組み立てられるからスクレイピングもSelenium使っておいた方が無難。
Selenium自体はテストとは無関係だよ、ただ用途としてテストツールと組み合わされることが多いだけ。
最近のサイトはReactとかで動的にガンガン組み立てられるからスクレイピングもSelenium使っておいた方が無難。
646デフォルトの名無しさん
2019/04/26(金) 13:23:49.21ID:A/WNBxWE Ruby, Nokogiri, Selenium WebDriver を使えば?
CSS Selector, XPath で、要素を指定する
driver.execute_script で、JavaScript のソースコードも実行できる
CSS Selector, XPath で、要素を指定する
driver.execute_script で、JavaScript のソースコードも実行できる
647デフォルトの名無しさん
2019/04/26(金) 14:28:56.17ID:5b9msznW Kotlin勉強してるって言ってるんだから別にRubyじゃなくていいだろ
648デフォルトの名無しさん
2019/04/26(金) 14:34:22.95ID:an8vMEsm NokogiriでXPathとCSSセレクタ使うならべつにこっちでも同じだと思うよ
649デフォルトの名無しさん
2019/04/26(金) 17:19:57.29ID:MEdB7GvY JsoupはNokogiriと違ってXPathを使ってDOMの操作ができない。
けど、使い方はNokogiriとよく似てる。
Androidアプリにスクレイピング機能を実装したいので、Ruby使えば?は却下!
けど、使い方はNokogiriとよく似てる。
Androidアプリにスクレイピング機能を実装したいので、Ruby使えば?は却下!
650デフォルトの名無しさん
2019/04/26(金) 17:21:05.67ID:MEdB7GvY ところでJsoupの名前の由来って何?
Java soup = Javaのスープ
変な名前。
Java soup = Javaのスープ
変な名前。
651デフォルトの名無しさん
2019/04/26(金) 17:57:42.91ID:TC/HkfSU いちいち聞かずに勉強しろと延々言われているのに守らないからそういうちぐはぐな恥を晒して支持を減らすことになる(君はすでに識別されている)
どうせPythonのBeautifulSoupのことも知らないしタグスープという言葉も知らんのだろう
…あ、後者は別に知らんでいいわ、知らない人が多いし正式な用語というわけでもないから
どうせPythonのBeautifulSoupのことも知らないしタグスープという言葉も知らんのだろう
…あ、後者は別に知らんでいいわ、知らない人が多いし正式な用語というわけでもないから
652デフォルトの名無しさん
2019/04/26(金) 18:12:21.37ID:tgodpZ2Y ごった煮
653デフォルトの名無しさん
2019/04/26(金) 20:00:10.59ID:ErNxnYz2654デフォルトの名無しさん
2019/04/26(金) 20:32:30.11ID:MEdB7GvY655デフォルトの名無しさん
2019/04/26(金) 21:06:34.41ID:XuSZUgKR 個人の試行錯誤の実況でスレが消費されてくより過疎ってた方がマシ
656デフォルトの名無しさん
2019/04/27(土) 09:33:03.49ID:2kV59Ab3 スレの消費はどうでもいいんだけど、試行錯誤の記録はqiitaなりブログなり自分で管理できるところに残しておいた方が後々良いと思うんだよね
657デフォルトの名無しさん
2019/04/27(土) 09:47:43.31ID:X+HWf3Sy >>516
fragmentは再利用されるからlateinit var
fragmentは再利用されるからlateinit var
658デフォルトの名無しさん
2019/05/08(水) 08:51:45.05ID:7421dKds Google、Androidにおける「Kotlinファースト」強化を表明。Google I/O 2019
https://www.publickey1.jp/blog/19/googleandroidkotlingoogle_io_2019.html
https://www.publickey1.jp/blog/19/googleandroidkotlingoogle_io_2019.html
659デフォルトの名無しさん
2019/05/08(水) 09:08:00.50ID:1o0ZoV2Z■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国「日本で中国人への犯罪が多発」 日本側の否定に「先週も5人逮捕」と反論 [夜のけいちゃん★]
- 円安で増加の風俗目的の中国人インバウンド 客に処罰規定なし、悲しき売春観光大国の現状 [蚤の市★]
- 【文春】元TOKIO・国分太一(51)「女性スタッフ2名への“わいせつ事案”」日テレ事情聴取の全貌が分かった! ★6 [Ailuropoda melanoleuca★]
- 【サッカー】UEFA-CL第5節 アーセナル×バイエルン、PSG×トッテナム、リバプール×PSV、オリンピアコス×レアル [久太郎★]
- 首相、台湾有事答弁で釈明に終始 政治とカネには「そんなことより」 [蚤の市★]
- 【金沢地裁】「風俗嬢に着せようと」南砺の高校で女子バレー部のユニホームを窃盗した男が説明 検察側、拘禁刑4年を求刑 [nita★]
- 【ヤバい】 政府「所得税を上げる。 5兆4000億円の税収になる」 予算案を発表😨😱😭 [485983549]
- お前らチー牛ってなんで憎くて嫌いな奴を殺害しないの?ビビって出来ないならいい加減その性格直そうよ
- 【高市 朝8時】 肥満の全裸 、 公園に発生 [485983549]
- 【高市悲報】中国「ふにゃふにゃ言いながら、時が自然に解決するのを期待する—そんなジャップ流は決して通用しない」 [115996789]
- 百田尚樹「日本は税金が高すぎる。私はそれほど大金持ちではないが、毎年収入の55%を納税している。江戸時代の農民以下の扱いだ」 [309323212]
- 【悲報】撮り鉄が線路脇で撮影→運転手が降りて退去を促すもゴネて動かず電車が遅延→どっちが悪いか意見が真っ二つに [802034645]
