したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

コンソールの2chブラウザを作るスレッド

1ひきぷろ ◆SVQfrniSJY:2017/03/17(金) 16:43:28 ID:???0
コンソールの2chブラウザを作ってみよー

wiki
https://www54.atwiki.jp/projecthikky/pages/104.html

71(-_-)さん:2017/03/25(土) 23:17:44 ID:???0
>>70
あくまで暫定
データをどう保持するか、とか、全体の処理の流れが十分に決まってないから
決まっていくたびに再定義したほうがよさそう

72(-_-)さん:2017/03/26(日) 04:13:15 ID:???0
ま、ここまでのほとんどのが暫定ではあるけど

73(-_-)さん:2017/03/26(日) 04:18:50 ID:???0
スライスのappendで自動拡張されるときで新しいメモリが確保されたときシャローコピーが発生するわけで
[]Threadや[]Responseのシャローコピーが発生するのは高コストだから
[]*Threadや[]*Responseに書き換える必要があるのかもな

74(-_-)さん:2017/03/26(日) 04:21:37 ID:???0
>>70は関数で定義してしまっているけどメソッドという形での定義でもよさそうだな
func SaveThreadList(Board) は func (*Board)Save() とか
func MergeTreadList(Board,[]Thread) Boardは func (*Board)Merge([]*Tread) Board とか

75(-_-)さん:2017/03/26(日) 04:25:13 ID:???0
一応説明捕捉するとMerge系のはBoardやThreadをイミュータブルな型としてみなして更新データを返却するというイメージね
ミュータブルで直接更新でもいいのかもしれないけど

76ひきぷろ ◆SVQfrniSJY:2017/03/27(月) 17:08:31 ID:???0
projecthikky @ ウィキ - ヒッキー共同開発に関するページ/2chブラウザ
https://www54.atwiki.jp/projecthikky/pages/104.html

ちょっとだけ追記してみた

77(-_-)さん:2017/03/27(月) 22:40:13 ID:???0
>>76
乙です

78(-_-)さん:2017/03/28(火) 16:31:13 ID:???0
アプリ起動

前回終了時の状態の読込(保存してあるデータの読込)

画面に表示

ユーザからの入力待ち

ユーザの入力

処理

79(-_-)さん:2017/03/29(水) 23:06:01 ID:???0
[アプリ起動]

[前処理]

[画面表示] ←┐ループ
↓       │
[入力待ち]   │
↓       │
[要求された処理]┘

80(-_-)さん:2017/03/30(木) 07:02:35 ID:???0
[前処理]は
初回起動時は板一覧の取得とか
次回以降は保存されてる板一覧とかの読み込みとか

81(-_-)さん:2017/03/30(木) 19:23:59 ID:???0
マルチスレッドにするなら
{{メインスレッド}}
[アプリ起動]

[前処理]

[各スレッド起動]

[画面表示スレッドに表示リクエスト]

[入力待ち]←───┐
↓          │
[要求に応じた処理]┘(アプリ終了以外の処理)
↓(アプリ終了の要求なら)
[後処理]

[アプリ終了]


{{画面表示スレッド}}
[リクエスト待ち]←┐
↓          │
[画面表示]────┘


{{ダウンロードスレッド}}
[リクエスト待ち]←──────────────────┐ 無限ループ
↓                             │
[指定ファイルをダウンロード]               │
↓                             │
[1つのダウンロードが終わったことを表示するよう      │
 画面表示スレッドにリクエスト]              │
↓                             │
[ファイルを処理する関数を実行する新規スレッドを立てる]┘


{{各ファイルを処理する関数のスレッド}}
[ファイルからデータ抽出]

[現在のデータと新規のデータを統合(マージ)]

[ファイルへの保存]

[更新したデータを表示可能だと画面表示スレッドにリクエスト]

[このスレッドの終了]

82(-_-)さん:2017/03/30(木) 19:28:42 ID:???0
[前処理]は>>80と同じ

[後処理]は
起動中のスレッドの終了とか
アプリの状態の保存とか

[要求に応じた処理]は
・板一覧の表示を要求
・板を選択してスレ一覧を表示の要求(ダウンロードやファイルからの読み込み)
・開いてるスレ一覧の更新の要求
・スレを選択してレスを表示の要求(ダウンロードやファイルからの読み込み)
・開いてるスレの更新の要求(新着レスのダウンロード)
そして
・アプリの終了

83(-_-)さん:2017/04/01(土) 03:51:12 ID:???0
2chのスレのhtmlのフォーマット変わった?
前はdl,dt,ddあたりのタグでレスが列挙されてた気がしたけど
今見たらdivでレスが括られてた

84(-_-)さん:2017/04/01(土) 03:57:49 ID:???0
古い2chまんまの仕様だと言われる2ch.scはdl,dt,ddの構成
http://ikura.2ch.sc/test/read.cgi/hikky/1489179773/l50

同じく2ch型を謳うしたらばもdl,dt,ddの構成(ただし文字コードがEUC-JP)
http://jbbs.shitaraba.net/bbs/read.cgi/computer/44607/1489736608/l50

しかし肝心の2ch.netがdivになってる(しかも改行とかが詰められて圧縮されてる)
http://hanabi.2ch.net/test/read.cgi/hikky/1489179773/l50

85(-_-)さん:2017/04/01(土) 03:59:29 ID:???0
まぁもともとscへのコピー対策でクローリング対策やスクレイピング対策をされてるだろうから
html文書の構成がちょくちょく変わる可能性あるね(APIじゃないと厳しいところあるのかも)

86(-_-)さん:2017/04/04(火) 17:45:17 ID:???0
> ダウンロードについては、HTTPのIf-Modified-Sinceヘッダをうまく扱えれば
> 本文のダウンロード処理を減らすことができそう

これって静的コンテンツ以外でも使えたんだっけ?
スレってサーバ側のスクリプト(read.cgi)で動的生成だろうから
read.cgiがそのヘッダをどう取り扱っているか調べないといけないね

87(-_-)さん:2017/04/04(火) 17:48:23 ID:???0
以前のdat形式は静的コンテンツだったからそのヘッダを使うことが推奨されていたのだけれど

88(-_-)さん:2017/04/04(火) 21:36:23 ID:???0
板一覧とスレ一覧は静的か
過疎板でなけりゃスレ一覧は更新頻度高いから確認する意味なさそうだけど

89ひきぷろ ◆SVQfrniSJY:2017/04/05(水) 02:00:46 ID:???0
もう調べ終わった後かもしれないけど、
動的生成のページは、If-Modified-Since対応をあえて書いてる場合しか
HTTPステータスで304とか返してくれなさそうだよね。

転送容量を減らすという機能でいうと、
2chはURLのスレIDの後に "/100-" とか書くと、途中のレスから読める機能があったよね。

90(-_-)さん:2017/08/18(金) 19:09:04 ID:RqcRcy1I0
itestのAPIを使ったらどう?
認証ないから不正アクセスじゃないし、スクレイピングでもない

91(-_-)さん:2017/10/02(月) 14:31:15 ID:xWRj2EwM0
2chは5chに変わったそうですよ

92(-_-)さん:2020/01/14(火) 19:42:45 ID:QlE6dbBA0
少し挙動が怪しいですがこうなりました

https://ux.getuploader.com/hikkyp/download/41


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板