くだすれPython(超初心者用) その36

■ このスレッドは過去ログ倉庫に格納されています
2018/01/01(月) 20:18:42.82ID:iOcRvNll
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。

エラーを解決したいときはエラー表示や環境(バージョン/IDE or command line)を略さずに書き込んで下さい。
騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。
次スレは >>985 辺りで

前スレ
くだすれPython(超初心者用) その35
http://mevius.5ch.net/test/read.cgi/tech/1496411341/
VIPQ2_EXTDAT: checked:default:1000:512:----: EXT was configured
2018/02/01(木) 22:30:13.20ID:tfIWAcyb
>>233
釣り針でっかいなー
2018/02/01(木) 22:53:36.84ID:N3ewwxdm
EUC-JPのオレに謝れ
236デフォルトの名無しさん
垢版 |
2018/02/02(金) 06:57:28.81ID:qMkVbe3j
>>233
テキストファイルが使いにくくなるようにMSやAppleがわざとやってる
237デフォルトの名無しさん
垢版 |
2018/02/02(金) 07:52:54.50ID:sggyuymU
>>231
メモ帳はただちに窓から捨てて秀丸にしなさい
238デフォルトの名無しさん
垢版 |
2018/02/02(金) 07:55:39.00ID:sggyuymU
>>233
システムロケールにcp932じゃなくてcp65001を
239愛知人
垢版 |
2018/02/02(金) 08:25:52.08
>>236
なんのために?
2018/02/02(金) 13:32:28.01ID:uXZkQ4V4
だいぶ改善されてきてはいるがMSは囲い込み体質だから協調より独創
2018/02/02(金) 14:54:42.87ID:IZOEihdO
>>238
そういえば、3.xの途中から、cp65001も定義されたんだよな。
以前はこんなの書いてたっけ…

def cp65001(name):
 if name.lower() == 'cp65001':
  return codecs.lookup('utf_8')
codecs.register(cp65001)
2018/02/02(金) 20:40:37.09ID:woVD/Zi7
>>215
BOMあってもなくても正常に動くようにするにはどうすれば良い?
encoding="utf-8"にutf-8だがBOM付の可能性もあるからよろしくってなんかを指定するとか?
2018/02/02(金) 21:34:09.21ID:0Pcz3PJH
>>242
バイナリとして開いて先頭にBOMがついてるかどうか見てやれば判定できるんじゃね
https://gist.github.com/anonymous/043c64032fd78bc49a6b8ec389cffe1e
こんな感じか
2018/02/02(金) 21:51:51.36ID:kuVTnXto
>>243
わざわざコードまで作ってくれたのか、激感謝だな
結局、encoding=とかでちょいと指定すればOKにならないってことか
winではBOM付はよくあるからいたれりつくせりのPythonだとちょいと指定ば両方対応
できるかなと思ったんだがな.
出来ないとなると、俺判定でBOM付となったらBOM部分のスキップ処理も書かないといけないからな
2018/02/03(土) 00:34:28.67ID:7x/TAIpP
>>243が判定コード書いてくれたんで
>>215をBOMも対応するようにしてみた
utf8_file="leavetime.txt"
for item in open(utf8_file, encoding='utf_8_sig' if contains_bom(utf8_file) else 'utf_8'):
h, m = item.rstrip().split(":")
print(int(h))
print(int(m))
246デフォルトの名無しさん
垢版 |
2018/02/03(土) 05:06:07.81ID:pNC8Ba1v
BOMチェックよりコインチェック
2018/02/03(土) 07:37:05.14ID:t4e4FmlL
Pythonの本はあらかた購入しているのだけど、デコレータがどうしても理解できない
いや説明はわかるのだが、それが何の役に立つのか理解できない
例えば以下のコードを見せられても、それが何?という感想しか出てこない
理解できないものは無視すればいいんだろうけど、Pythonドキュメントのサンプルコードに
デコレータを使っている箇所(@classmethod等)がけっこうあるため、そうも行かない
誰かデコレータについてその存在意義と有用性を教えてくれないか

----------------------
@decorate
def target():
print('running target()')

これは次と等価です

def target():
print('running target()')

target = decorate(target)
----------------------
2018/02/03(土) 09:32:41.09ID:qWVkS+Es
>>247
SQL の update とかで
デコレータ版だとトランザクションや排他処理してくれるってのがあって便利だった
2018/02/03(土) 09:33:58.07ID:qWVkS+Es
少なくとも >>247 の例は悪例だという意見には同意
2018/02/03(土) 12:20:01.23ID:5RbTAhEw
>>247
デコレーターって「高階関数の便利な使い方」って感じのものだから
根本的にはmap関数とか調べたほうがピンとくると思う。

pythonでは「関数を引数にとり、関数を返す関数」っていうのを文法上作ることができて、
「なら関数を受け取って改造して返す関数を作ってもいいよね」っていう発想が生まれて
「これ便利だから簡単に使えるようにしよう」って出来たのが@を使うデコレーター記法。

使い道としては、関数にちょっとした追加機能をつけて改造するようなものが多いと思う。
ログを取ったり、規定の文字数をオーバーしてたらエラーを返すようにしたり、
ただの文字列を返す関数をhtmlタグ付きの文字列を返すように改造したり。
251sage
垢版 |
2018/02/03(土) 20:49:35.33ID:ueJRcD/G
https://qiita.com/yyoshiaki/items/b545676aa1223e82da0e
を読んで以下を試したのですが、
list3, list4の出力が正しい内容として、正規表現を使わずに簡潔に書く方法が
あれば教えてください。
内包表記やスライスの使い方も完全に理解できていない自覚はあるのですが、
list4でfindを2回呼んでいるのが冗長です。

print("文字列より最初の'-1'のみ削除")
list = ['1011-1-11', '1111-1-01', '1112-1-02', '1112-2-02', '1113-1-03', '1114-1-2-1-04', '1115-1-1-05']
print('元データ:\t' + str(list))

list2 = [x.strip('-1') for x in list]
print('strip:(NG)\t' + str(list2))

list3 =[x.replace('-1', '', 1) for x in list]
print('replace:(OK)\t' + str(list3))

#list4 = [x[:x.find('-1')]+x[x.find('-1')+2:] if x.find('-1') >= 0 else x for x in list]
list4 = [x[:x.find('-1')]+x[x.find('-1')+2:] if '-1' in x else x for x in list]
print('find:\t' + str(list4))
2018/02/03(土) 22:00:55.13ID:NG/4jS4k
>>251
result = [i.replace('-1', '', 1) if i.find('-1') == 4 else i for i in list]
-1の前の文字列の長さが変わる場合使えないけど
2018/02/03(土) 23:51:57.78ID:yAjTDr8r
>>252
>-1の前の文字列の長さが変わる場合使えないけど
でも、操作対象は
['1011-1-11', '1111-1-01', '1112-1-02', '1112-2-02', '1113-1-03', '1114-1-2-1-04', '1115-1-1-05']
が全てなんだから、そのコードでOKだろう
254デフォルトの名無しさん
垢版 |
2018/02/04(日) 03:11:04.43ID:jQQPuGSR
>>251
if x.endswith('_1'):
2018/02/04(日) 07:41:23.95ID:ue7FPdZ+
>>247-250
元の関数の機能を、少し変える場合に、便利
256遊園地
垢版 |
2018/02/04(日) 11:48:49.84ID:HO2WZcry
まずww データ変換が違う?んぅんぅううwwww

https://ideone.com/8tsKLz

split('-1') では なくww split('-')

[r.append(i.split('-')) for i in l]
appendは+=でも可能www

何のデータか分かんないからww - 消して良いのか?www
257遊園地
垢版 |
2018/02/04(日) 12:19:09.89ID:HO2WZcry
ってwww 最初の一回だけかwww

 ならww 違うわqwww
258遊園地
垢版 |
2018/02/04(日) 13:49:40.69ID:HO2WZcry
分割したリストの二番目が1なら
処理する


これではwww ダメなの?wwww
259遊園地
垢版 |
2018/02/04(日) 13:51:51.04ID:HO2WZcry
何と言う発想www

自画自賛でwwww受けるwww
260デフォルトの名無しさん
垢版 |
2018/02/04(日) 16:18:25.03ID:HO2WZcry
https://ideone.com/1bTruZ
261遊園地
垢版 |
2018/02/04(日) 17:00:12.78ID:HO2WZcry
正しい内容って何?

データ形式と出力結果だけ頼む
262sage
垢版 |
2018/02/04(日) 22:31:46.18ID:TAiQJbHW
251ですが、言葉足らずでした。
print文のlist3,list4では既に欲しい出力結果が得られていました。
list3のreplace文ではない(正規表現に頼らない)書き方をlist4で模索しての
質問でした。

replace文では第3引数で1を指定することを知って、やっと欲しい結果が得られたの
ですが、それまでは
list3 =[x.replace('-1', '') for x in list]
と書いていて、欲しい結果とはなっていいなかったため、
list4では関数に抜き出して展開(提示して頂いた'-'で要素に分解する方法など)
するまでもなく、python流に内包表記の中で一時変数を使って簡潔な書き方が
あればという質問意図でした。

時系列としては、
 list2とlist3(replace第3引数なし)で結果NG
→list4で何とか結果OKとなる様に書けた
→list3にreplace第3引数を追加して結果OK
→list4がカッコ悪いのでpythonのカッコ良い書き方を質問

以上、お手数をお掛けしました。
263遊園地
垢版 |
2018/02/04(日) 23:52:42.78ID:HO2WZcry
???

 何言ってるのか分からなかったwww

解決したならww おめーーーwww
2018/02/05(月) 01:47:02.01ID:5y/omfnv
幻覚、妄想、発作もちは今回に限らず何言っているのか分からないのが普通ことじゃないのかな
265デフォルトの名無しさん
垢版 |
2018/02/05(月) 23:01:53.13ID:iKZIeQUL
ちょっと何言ってるかわかんないす
2018/02/06(火) 16:18:39.43ID:w6e05o5f
>>247
ダウンロードするときにretryingライブラリを使ったらうまくいってくれた
もっといいやり方があるかもだけど
267デフォルトの名無しさん
垢版 |
2018/02/06(火) 16:26:45.93ID:ynZgc5Qh
https://github.com/oreilly-japan/deep-learning-from-scratch/blob/master/common/functions.py
https://github.com/oreilly-japan/deep-learning-from-scratch/blob/master/common/gradient.py


https://github.com/oreilly-japan/deep-learning-from-scratch/blob/master/ch04/gradient_simplenet.py

これの f という関数が意味不明です。引数の w を利用していません。

詳しい解説をお願いします。
268デフォルトの名無しさん
垢版 |
2018/02/06(火) 16:36:07.12ID:ynZgc5Qh
>>267

このプログラムはひどすぎないですか?
269デフォルトの名無しさん
垢版 |
2018/02/06(火) 16:42:15.85ID:ynZgc5Qh
b = 2

def f(a):
■■return b

print(f(b))


>>371

のプログラムは↑こんな感じのことをやっていますよね。

この著者の頭は大丈夫でしょうか?
270デフォルトの名無しさん
垢版 |
2018/02/06(火) 16:42:40.31ID:ynZgc5Qh
訂正します:

b = 2

def f(a):
■■return b

print(f(b))


>>267

のプログラムは↑こんな感じのことをやっていますよね。

この著者の頭は大丈夫でしょうか?
2018/02/06(火) 16:44:42.99ID:DKsNWAcY
>>267
魚の本のやつでしょ
本文に書いてあるよ
272デフォルトの名無しさん
垢版 |
2018/02/06(火) 16:51:04.93ID:ynZgc5Qh
>>371

よくこんなひどいプログラムを載せて恥ずかしくないですね。

こんな人が『入門Python 3』の監訳者であるというのが不思議です。
273デフォルトの名無しさん
垢版 |
2018/02/06(火) 16:51:37.56ID:ynZgc5Qh
訂正します:

>>267

よくこんなひどいプログラムを載せて恥ずかしくないですね。

こんな人が『入門Python 3』の監訳者であるというのが不思議です。
2018/02/06(火) 17:02:54.20ID:aQqmYZ+Q
その本の著者はどうだかしらんが
お前はキチガイに違いなさそうだ
2018/02/06(火) 17:49:34.62ID:b1TJyJgg
自演の習慣があると行火ミスが増えます(R2=0.99)
2018/02/07(水) 05:20:44.81ID:LQaGrglb
みんなのPython 第4版、2017

これが定番の本。これを使え
277デフォルトの名無しさん
垢版 |
2018/02/07(水) 05:37:58.51ID:Hq6Q+E3d
著者が入門以下
2018/02/07(水) 19:06:24.31ID:x7skM3vd
>>247
Py勉強スレ, http://mevius.5ch.net/test/read.cgi/tech/1513919747/680
にまぁまぁ良い例になりそうなネタがある
def oree(a,b)、def omae(a,b)にデコレータを使ってdef timer(func, *args)機能を追加
https://qiita.com/mtb_beta/items/d257519b018b8cd0cc2e
を参考に
def measure_time(func):
_import time
_import functools
_@functools.wraps(func)
_def wrapper(*args,**kwargs):
__start = time.time()
__r = func(*args)
__end = time.time()
__print(f'{func.__name__} time = {end - start:.5f}, return = {r:.5f}') # python 3.6
_return wrapper

@measure_time
def oree(a,b):
....
@measure_time
def omae(a,b)
279デフォルトの名無しさん
垢版 |
2018/02/08(木) 04:47:54.58ID:xhTdXKdO
なんのためwrapするです?
2018/02/08(木) 06:25:38.08ID:UuuqIveG
関数名読めや
281デフォルトの名無しさん
垢版 |
2018/02/08(木) 06:56:14.40ID:xhTdXKdO
解決
http://www17.atpages.jp/%7Elambda7/py/decorator.html
282デフォルトの名無しさん
垢版 |
2018/02/08(木) 18:01:32.06ID:vNVlPGWC
https://qiita.com/tibigame/items/2b4c6fe48641ec3ec13f
283デフォルトの名無しさん
垢版 |
2018/02/08(木) 20:11:08.54ID:yjGzg9Fl
>>267b

f = lambda w: net.loss(x, t)

この関数にはリターン文がありませんが、
net.loss(x, t)
の値が返るんですか?
284デフォルトの名無しさん
垢版 |
2018/02/08(木) 20:15:26.20ID:yjGzg9Fl
>>283

どうも値が返るようですが、これはなぜでしょうか?

return を省略したときには None が返るのではないんですか?
285デフォルトの名無しさん
垢版 |
2018/02/08(木) 20:16:57.90ID:yjGzg9Fl
ああ、無名関数には return を書かないんですね。
2018/02/08(木) 21:15:32.11ID:ezGGEbZA
Pythonでlambdawww
解けないパズルwwwww
287デフォルトの名無しさん
垢版 |
2018/02/09(金) 06:36:31.08ID:h2mjWzgv
returnを書かないというより書けない
つまりlambda中には文を置けない
式のみ置ける
式だから値を持ってる
288デフォルトの名無しさん
垢版 |
2018/02/09(金) 07:24:07.57ID:mfiNCmZ5
>>287
だからどうした?
聞かれとんのは値が返るのはなぜかやで?わかっとる?
わかっとらんやろお前?
2018/02/09(金) 08:03:11.06ID:lCLVxKV3
>>288
返らない
2018/02/09(金) 09:02:06.00ID:MIi5twlM
構文としてreturnが省略されてるだけで
そんな御大層な話でも無いと思うが
2018/02/09(金) 10:19:15.58ID:YZG1jUng
省略ってことはつけてもいいの?
つけてだめなら省略とは言わないよね?
2018/02/09(金) 11:24:22.50ID:/KPONgsa
ややこしいやっちゃな
293デフォルトの名無しさん
垢版 |
2018/02/09(金) 13:21:49.08ID:SD4e0J5S
返らない、返りたくない
2018/02/09(金) 13:37:06.94ID:MP6Drm/E
不毛地帯
警報レベル7
入スレ規制中
2018/02/09(金) 18:22:32.82ID:IVS/Pe6T
>>291
省略可なら当然OKだろ
普通の関数でもラムダのように実はreturnは省略可なんじゃないのか
2018/02/09(金) 18:33:57.58ID:iqzIZ4Vv
たまに lambda の中で print() 使いたくなるけど OK?
2018/02/09(金) 19:02:34.31ID:IVS/Pe6T
>>296
普通の関数で使えるのが使えないようじゃ、lambdaは超使えないってなるから
当然OKだろ
298デフォルトの名無しさん
垢版 |
2018/02/09(金) 19:05:28.20ID:mfiNCmZ5
>>297
なんでおまえの主観で仕様が決まると思っとんねんw
2018/02/09(金) 19:20:58.54ID:IVS/Pe6T
お前らはpythonの超使えるlambdaを用いたデコレータも書いているだろ
例えば、
@lambda func:
_import time
_import functools
_@functools.wraps(func)
_def wrapper(*args,**kwargs):
__start = time.time()
__r = func(*args)
__end = time.time()
__print(f'{func.__name__} time = {end - start:.5f}, return = {r:.5f}') # python 3.6
_wrapper
def oree(a,b):
....
300遊園地
垢版 |
2018/02/09(金) 19:55:01.65ID:qf0NuhpI
素晴らしいww

 トイレで使った水をお風呂で使う様なlambda使用だwww
301デフォルトの名無しさん
垢版 |
2018/02/09(金) 20:34:37.13ID:5pOE7da0
lambda ってランバダって読んじゃう
302デフォルトの名無しさん
垢版 |
2018/02/09(金) 20:37:47.03ID:tdu0vLnD
うむ
303デフォルトの名無しさん
垢版 |
2018/02/09(金) 21:00:36.12ID:KegDFWCL
https://github.com/oreilly-japan/deep-learning-from-scratch/blob/master/ch04/two_layer_net.py

↑斎藤康毅さんのひどいコードを↓のように変更しました。

https://github.com/for-2ch/for-2ch-codes/blob/master/my_two_layer_net.py

大きな改善ですね。
304愛恥人
垢版 |
2018/02/09(金) 21:26:11.28
自画自賛かよ
305デフォルトの名無しさん
垢版 |
2018/02/09(金) 21:33:25.33ID:tgBeN59M
>>301
そんな貴方はアラフィフ
2018/02/09(金) 21:46:51.59ID:tdu0vLnD
水に浮く物体への浮力を考えたとき
大気圧(1気圧)中の水にういているときと
10気圧中の水に浮いているときとでは
かかる浮力に違いはありますか?
307恥人
垢版 |
2018/02/09(金) 21:56:27.96
物体に働く力は重力と浮力だけで重力が変わらないなら浮力も変わらない
2018/02/09(金) 21:56:49.86ID:vUVRoJHK
>>305
どおっさんが5chには多いからな
どおっさんでこんな底辺の低脳スレって、
なんか発達できなくてアラフィフになって低脳ってことかな
2018/02/09(金) 23:31:09.27ID:CW0CMztN
罵倒も皮肉も語彙は大事だなと思った
310デフォルトの名無しさん
垢版 |
2018/02/09(金) 23:52:45.72ID:mfiNCmZ5
>>309
全然違う
罵倒に大事なのは勢い
皮肉に大事なのは悔しい気持ち

ところでなぜ今このタイミングでその勘違いをしたの?w
2018/02/10(土) 00:01:07.98ID:oEqOo86Y
単芝
2018/02/10(土) 00:16:17.24ID:y7eLjZVR
初心者ではなく、他の言語スレにはないような超初心者用だからな
2018/02/10(土) 04:28:00.01ID:vwdCUs46
namedtupleの第一引数って何のためにあるんでしょか?
ドキュメントによると第一引数はtypenameとあるだけで、その解説がありません
例えば書籍Effective Pythonに出てくる以下のコードでも
カッコの中にある'Grade'は何にも使われていません
一行に同じ名称が二つ出てきて紛らわしいので、使わないなら廃止して欲しいのですが

Grade = collections.namedtuple('Grade', ('score', 'weight'))
314デフォルトの名無しさん
垢版 |
2018/02/10(土) 05:38:30.10ID:1vRRPdai
type(Grade)
2018/02/10(土) 05:48:54.25ID:2RwyNMOA
>>> g = collections.namedtuple('GradeType', ('score', 'weight'))
>>> g(0,1)
GradeType(score=0, weight=1)
>>> type(g(0,1))
<class '__main__.GradeType'>
2018/02/10(土) 11:32:20.77ID:oEqOo86Y
>>313
君の人生を廃止で
2018/02/10(土) 12:45:16.07ID:0GUOwT87
>>313
それサブクラスの名前だから
使われてないんじゃなくてお前がわかってないだけ
2018/02/10(土) 12:53:52.71ID:KvypZuXh
df[“名前”]に名前が(重複あり)
df[“給料”]にint型の数値が入ったdataframeがあります
最終的に{名前:給料の平均値, 名前:給料の平均値...}という辞書にしたい
いまは
names=[i fo i in df[“名前”]]
names=set(names)
score={i:df[df[“名前”]==i]["給料"].mean() for i in names}
でやってます
なんかもっとシンプルだったり高速な手法ってありませんか?
2018/02/10(土) 12:55:28.46ID:KvypZuXh
あ、見ての通り、最終的な辞書型では名前の重複はなしです
2018/02/10(土) 16:17:38.95ID:9Ur4h2hf
>>313は超初心者スレの鑑なかんじだな
普通の初心者なら、なぜ'Grade'が要るのか質問するんだろうが
でも、このスレの超初心者らしくベクトルの方向が素晴らしい
321デフォルトの名無しさん
垢版 |
2018/02/10(土) 19:33:01.04ID:osYRNhtT
>>320
お前も初心者スレの典型的なクズ系初心者なかんじだよw
2018/02/10(土) 20:08:07.65ID:OrjfwwVX
このスレに来るのはほとんどクズ系だろう

>>318
クズ系の超初心者のたまり場では非クズな奴の並みレベルの質問にはなかなか回答がないからな。
非くずが来るまでしばらく待ってね
323遊園地
垢版 |
2018/02/10(土) 23:44:26.98ID:PklGIWAk
>>318
ggって、簡素で良いなら ノ

keys = ['a', 'b', 'c']
values = [10, 20, 30]

dic = dict(zip(keys, values))

print(dic)
324デフォルトの名無しさん
垢版 |
2018/02/10(土) 23:57:42.46ID:RmGdaXa0
クズを罵るレスを機械学習して自動生成、カキコするプログラム、pythonでなら可能ですか?
325デフォルトの名無しさん
垢版 |
2018/02/11(日) 00:07:45.77ID:q9UPBdZm
>>324
まずお前が学習してみたら?…無駄だけどw
326デフォルトの名無しさん
垢版 |
2018/02/11(日) 00:14:48.20ID:ulm0sQ8V
>>325
糞レス即付いてるけど、これがあの釣りというやつなのか?
2018/02/11(日) 00:19:42.80ID:h5lI8K+n
さすが遊園地。遊園地レベルぐらいないと分からないんだろうな
これ何しているのか分からんが
dic = dict(zip(keys, values))
こんなシンプルにできるのか
2018/02/11(日) 00:26:19.10ID:MHMFdyK6
zipするところまではいいがその先は質問文をどう読み取るとその回答になるんだ
329デフォルトの名無しさん
垢版 |
2018/02/11(日) 00:26:32.68ID:q9UPBdZm
>>326
確かにお前のは完全なる糞レスなんだけど
そんなに卑屈にならん方がいいと思うよ
330遊園地
垢版 |
2018/02/11(日) 00:27:16.70ID:RRTIuu7j
くだすれ だったな。


変数(dic) =(は)  辞書型(dict)宣言の

   zip(複数の順序のある要素に並行して同時にアクセス)

 それは、  (keys配列 と values配列) です。
331遊園地
垢版 |
2018/02/11(日) 00:29:39.64ID:RRTIuu7j
zip例

a=[1,2,3]
b=[4,5,6]

print(list(zip(a,b)))
# [(1, 4), (2, 5), (3, 6)]
2018/02/11(日) 00:31:52.21ID:MHMFdyK6
for k, vs in itertools.groupby(sorted(zip(keys, values))):
____vsl = list(vs)
____print(k, sum(vsl) / len(vsl))

バーカ
333遊園地
垢版 |
2018/02/11(日) 00:34:34.34ID:RRTIuu7j
zipは複数の順序ある要素に並行して同時にアクセス

 だから、 リスト(配列)の種類(形式)が違ってても大丈夫


zip例2

a=["1","2","3"]
b=[4,5,6]

print(list(zip(a,b)))
# [('1', 4), ('2', 5), ('3', 6)]


返り値がタプルだからww listにしちゃおうって事が有るwww
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。