[過去ログ] Go language part 3 (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
553
(1): デフォルトの名無しさん [sage] 2020/05/19(火) 00:48:43.53 ID:uas/zK5F(1/19) AAS
archive/zip パッケージの仕様なのか、zip 自体の仕様なのかわからんけど
まーた穴に嵌まった

zip内のトップディレクトリにファイルがある
file1.txt
sub/file2.txt
という構成だったときには
sub/
というzipエントリもReadCloser.File配列に入ってくるのに

トップにファイルがなくて
sub/file2.txt
というように、サブディレクトリ以下にしかファイルが無かったときには
sub/
が入ってきてない(もしくは入らないzipがある)

orz
554: デフォルトの名無しさん [] 2020/05/19(火) 00:49:54.57 ID:uas/zK5F(2/19) AAS
package main

import (
"archive/zip"
"fmt"
)

func main() {
list("jquery-ui-1.12.1.zip")
list("ant-1.10.7-javadoc.jar")
}

func list(name string) {
fmt.Println("----- " + name)
if f, err := zip.OpenReader(name); err == nil {
defer f.Close()
for _, fi := range f.File {
fmt.Println(fi.Name)
}
}
}
555: デフォルトの名無しさん [] 2020/05/19(火) 00:52:26.39 ID:uas/zK5F(3/19) AAS
実行例

----- jquery-ui-1.12.1.zip
jquery-ui-1.12.1/jquery-ui.theme.css
・・・

----- ant-1.10.7-javadoc.jar
META-INF/
・・・
557: デフォルトの名無しさん [sage] 2020/05/19(火) 07:27:40.15 ID:uas/zK5F(4/19) AAS
想像に過ぎないんだけど、
[]が後置だとmapも
map[keyType]valueTypeはvalueType[keyType]mapとなるはず
そしてmapをvalueとして持つmap
map[keyType]map[keyType]valueTypeはvalueType[keyType]map[keyType]map
なんか見辛いような、そうでもないような

そもそもmapって、なんで付けなきゃならないんだろ?
keyType付いてたら文脈で分かりそう
連想配列って元からそうだよな
558: デフォルトの名無しさん [sage] 2020/05/19(火) 09:57:39.34 ID:uas/zK5F(5/19) AAS
>>553
zip自体の仕様みたい
仕方ないからサブディレクトリのファイルが出てきたときに、省略されたディレクトリのエントリもあった事にしてモデルに登録した
559: デフォルトの名無しさん [sage] 2020/05/19(火) 15:39:15.28 ID:uas/zK5F(6/19) AAS
サーバで http.ResponseWriter への書き込みが WSAECONNABORTED (10053) でエラーになっているとき
http.server.go#1905 で return してるため、1907のc.setState で StateIdle がセットされない
そのため、http.Server の ConnState ハンドラでコネクション数を勘定してると数が合わなくなる

という罠に嵌まった
どうしよう……エラーを検知した時に勘定している数をデクリメントするか?
だって、 return の判定で使われてる shouldReuseConnection って隠蔽されてるから
561: デフォルトの名無しさん [sage] 2020/05/19(火) 15:46:50.47 ID:uas/zK5F(7/19) AAS
テストでの罠検出には定評のある人材だから
すごかろう(やけくそ)
563: デフォルトの名無しさん [sage] 2020/05/19(火) 15:57:44.45 ID:uas/zK5F(8/19) AAS
そもそも、問題のレスポンスでは20MBくらいのmpgファイルがリクエストされてるんだけど
こういったデカイ応答を返す場合って自分が知らない注意点がある?

Content-Length はファイルサイズ(21614145)
Content-Type は application/octet-stream
で送ってる
ブラウザでは動画はちゃんと出てる
564: デフォルトの名無しさん [sage] 2020/05/19(火) 16:05:09.36 ID:uas/zK5F(9/19) AAS
ブラウザ側では数十msで受信してるから、タイムアウトじゃない
565: デフォルトの名無しさん [sage] 2020/05/19(火) 16:16:50.77 ID:uas/zK5F(10/19) AAS
う、もしかすると送信するストリームが Content-Length よりも長いという可能性もあるのか
それでブラウザ側から終わった!と切断されてる可能性
面倒極まりないな
566: デフォルトの名無しさん [sage] 2020/05/19(火) 16:50:34.24 ID:uas/zK5F(11/19) AAS
深く考えずに
レスポンスの書き込みに失敗したらコネクション数をデクリメントする
ことにした

コネクション数が0になるまではWaitGroup.Waitで待ってる作りにしてたんで
568: デフォルトの名無しさん [sage] 2020/05/19(火) 17:35:35.62 ID:uas/zK5F(12/19) AAS
>>567
567(5): デフォルトの名無しさん [] 2020/05/19(火) 17:19:44.24 ID:h69Ba80R(1) AAS
普通は適当なサイズに分けてチャンクで送る
ResponseWriter の実体って、 chunkWriter ってstruct だから自動的にチャンクで送られるんじゃないの?
569: デフォルトの名無しさん [sage] 2020/05/19(火) 17:38:29.19 ID:uas/zK5F(13/19) AAS
>>567
うわ、Headerでなんか設定しないと駄目なのか
570: デフォルトの名無しさん [sage] 2020/05/19(火) 17:57:05.30 ID:uas/zK5F(14/19) AAS
>>567
うーん、HTTP1.1だとTransfer-Encodingにidentityを指定していない場合は強制的にchunkで送られるんじゃないか疑惑
Content-Length不要のお知らせ?
571: デフォルトの名無しさん [sage] 2020/05/19(火) 18:02:54.20 ID:uas/zK5F(15/19) AAS
>>567
ブラウザでヘッダ見れた
チャンクになってないっぽい
調べてみる
ありがとう
573: デフォルトの名無しさん [sage] 2020/05/19(火) 18:33:39.64 ID:uas/zK5F(16/19) AAS
呼び出し順序に則って作らなければ動かないフレームワークってのは
屑って言うんじゃないの?
574: デフォルトの名無しさん [sage] 2020/05/19(火) 18:35:39.76 ID:uas/zK5F(17/19) AAS
いや、呼び出し順序に従わない場合はエラーにする
ならば仕方ないよそりゃ
OpenしないでReadできないのはおかしい、とか言わないから
575: デフォルトの名無しさん [sage] 2020/05/19(火) 18:38:32.19 ID:uas/zK5F(18/19) AAS
明記しない制約は常識とは言わないから
576: デフォルトの名無しさん [sage] 2020/05/19(火) 21:21:52.33 ID:uas/zK5F(19/19) AAS
>>567
Content-Length不要…以前の、設定しなけりゃチャンク送信!
orz

ちなみに、レスポンス書き込みがエラーになるブラウザはChromeとEdge
Firefoxだとエラーにならないのは何故だろう
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.055s