Два года в /fg/. Войти !bnw Сегодня Клубы

Один из главных отососов в современных языках программирования - это отсутсвие во многих из них поддержки keyword arguments.

Эта хуйня существенно повышает читаемость и, как следствие, качество кода.

В некоторых ЯП, в которых есть встроеные литералы для словарей проблема может решаться ими.
В остальных - это мрак, отсос и говно.

Как ни странно, божественная статическая типизация тут не роляет совершенно. Ведь очень легко перепутать аргументы с одинаковыми типами местами и потом долго ломать голову какого Х не работает. В случае keyword args достаточно поверхностного осмотра кода, чтобы понять что не так.

Рекомендовали: @krkm
#A9QJJ9 / @ninesigns / 3253 дня назад

Не нужно. Есть же ADT. Или ты путаешь местами аргументы у (**)?
#A9QJJ9/I4R / @l29ah / 3253 дня назад

Как ни странно, божественная статическая типизация тут не роляет совершенно. Ведь очень легко перепутать аргументы с одинаковыми типами местами

В идеальном строгом статически типизированном коде аргументов с одинаковыми типами не должно быть, очевидно же.

#A9QJJ9/O8K / @anonymous / 3253 дня назад
чё? есть же прекрасный #define
#A9QJJ9/3LI / @n / 3253 дня назад
@n Уёбывай.
#A9QJJ9/NS2 / @l29ah --> #A9QJJ9/3LI / 3253 дня назад
нужно только если супехдохуя параметров у функции, во всех остальных случаях от "перепутать аргументы с одинаковыми типами местами" не спасёт потому что не будет использовано есть в петухоне, вба, джабба-скрипте
#A9QJJ9/QKQ / @mugiseyebrows / 3253 дня назад
@l29ah #define l29ah cocy_xyu
#A9QJJ9/L53 / @n --> #A9QJJ9/NS2 / 3253 дня назад

@l29ah если конструктор ADT принимает аргументы с одинаковыми типами тыо ты back at the square one

#A9QJJ9/GSL / @ninesigns --> #A9QJJ9/I4R / 3253 дня назад

даже в петушоне есть.

#A9QJJ9/G5V / @lexszero / 3253 дня назад
@mugiseyebrows не языки программирования
#A9QJJ9/4QV / @n --> #A9QJJ9/QKQ / 3253 дня назад

@n на "не языке программирования" можно написать программу?

#A9QJJ9/AJS / @ninesigns --> #A9QJJ9/4QV / 3253 дня назад
@ninesigns можно написать не программу
#A9QJJ9/0M9 / @n --> #A9QJJ9/AJS / 3253 дня назад
@ninesigns λ> data Loh = Loh {hui::Int, pzd::Int} deriving Show λ> Loh {pzd = 14, hui = 88} Loh {hui = 88, pzd = 14} Я спасён сука. Вообще решается ADT-обёртками.
#A9QJJ9/TPJ / @l29ah --> #A9QJJ9/GSL / 3253 дня назад

@n что такое "не программа" и как отличить ее от программы?

#A9QJJ9/1YB / @ninesigns --> #A9QJJ9/0M9 / 3253 дня назад

@l29ah охуенно, плодить record-типы под каждый кусок говна, который можно вызвать.

бурные овации в зале.

#A9QJJ9/TOA / @ninesigns --> #A9QJJ9/TPJ / 3253 дня назад
@ninesigns эксель настолько охуенен что программы не нужны свободно, расширяемо, абстрактно // лайк если компилировал линейную интерполяцию вместе с данными в чистую функцию экселя
#A9QJJ9/3YK / @mugiseyebrows --> #A9QJJ9/AJS / 3253 дня назад
@ninesigns Не каждый, а только тот где ты можешь обосраться. Ты так и не ответил, (**) у тебя вызывает проблемы или че.
#A9QJJ9/S6X / @l29ah --> #A9QJJ9/TOA / 3253 дня назад

@l29ah что такое (**) ?

#A9QJJ9/1LM / @ninesigns --> #A9QJJ9/S6X / 3253 дня назад
@ninesigns λ> 2**16 65536.0
#A9QJJ9/FU3 / @l29ah --> #A9QJJ9/1LM / 3253 дня назад

@l29ah нет, мне похуй на мюслекалькуляторы.
вот пример из реально жизни:

krkm> я щас 4 часа дебажил жаваскрипты, а оказалось я порядок аргументов в
колбеке своей же поеботы перепуал. мам, я достаточно опущенный?

#A9QJJ9/WU6 / @ninesigns --> #A9QJJ9/FU3 / 3253 дня назад
@ninesigns не программа не работает нихуя
#A9QJJ9/IDZ / @n --> #A9QJJ9/1YB / 3253 дня назад

@n вебморда гмыла работает

#A9QJJ9/0O4 / @ninesigns --> #A9QJJ9/IDZ / 3253 дня назад
@ninesigns > жаваскрипты вин > сам отстрелил себе ногу хуёвым дизайном даблвин > поддержка языком именованных аргументов никак не спасла триплвин Съеби.
#A9QJJ9/OTO / @l29ah --> #A9QJJ9/WU6 / 3253 дня назад

@l29ah > > жаваскрипты

вин

предложи клиент-сайд язык для веба

сам отстрелил себе ногу хуёвым дизайном
даблвин

пук

поддержка языком именованных аргументов никак не спасла

триплвин

Съеби.

в JS нет именованых аргументов

#A9QJJ9/WCX / @ninesigns --> #A9QJJ9/OTO / 3253 дня назад
@ninesigns в жс нет именованых аргументов, но каждая вторая либа пуляет из функции в функцию словари, что почти тоже самое
#A9QJJ9/L23 / @mugiseyebrows --> #A9QJJ9/WCX / 3253 дня назад
@ninesigns Хаскель. пук выше сказали шо есть, сорь
#A9QJJ9/SV8 / @l29ah --> #A9QJJ9/WCX / 3253 дня назад

@l29ah покажи примеры клиентсайд веб приложений, исполненых на хаскеле
пук
погугли, долбоеб

#A9QJJ9/40S / @ninesigns --> #A9QJJ9/SV8 / 3253 дня назад
Питон и голанг поддерживает, на остальное пахуй.
#A9QJJ9/C6A / @je / 3253 дня назад
@ninesigns ещё скажи что фейсбук работает
#A9QJJ9/NHH / @n --> #A9QJJ9/0O4 / 3253 дня назад

@n не перескакивай.
давай список багов гмыла, которые делают его неюзабельным.

#A9QJJ9/770 / @ninesigns --> #A9QJJ9/NHH / 3253 дня назад

@ninesigns Elm обв

#A9QJJ9/P73 / @anonymous --> #A9QJJ9/WCX / 3253 дня назад

@anonymous норм

#A9QJJ9/J2T / @ninesigns --> #A9QJJ9/P73 / 3253 дня назад
@ninesigns Погугли, долбоёб. Пук.
#A9QJJ9/3FW / @l29ah --> #A9QJJ9/40S / 3253 дня назад

@l29ah burden of proof. съеби, ты бесполезен.

#A9QJJ9/TBI / @ninesigns --> #A9QJJ9/3FW / 3253 дня назад
@ninesigns Будто мне это нужно всё, лал.
#A9QJJ9/CGP / @l29ah --> #A9QJJ9/TBI / 3253 дня назад

@mugiseyebrows аргумент уровня "долбоеб будет писать на любом языке как на фортране"

#A9QJJ9/C0A / @ninesigns --> #A9QJJ9/QKQ / 3253 дня назад
> перепутал порядок аргументов > нет/не юзает IDE / умный блокнот типа Visual Studio Code ссзб
#A9QJJ9/8PB / @anonymous / 3253 дня назад
@ninesigns долбоёб будет применять именованые параметры в функции с двумя аргументами (писать в два раза больше букв)
#A9QJJ9/SA5 / @mugiseyebrows --> #A9QJJ9/C0A / 3253 дня назад
@ninesigns она на жабе написана, тупой штоле
#A9QJJ9/VWB / @anonymous --> #A9QJJ9/0O4 / 3253 дня назад
@mugiseyebrows Всегда использую это, в динамической типизации без этого вообще черт ногу сломит
#A9QJJ9/V7J / @je --> #A9QJJ9/SA5 / 3253 дня назад
@je distinguish(pupsen=1,vupsen=2)
#A9QJJ9/YS6 / @mugiseyebrows --> #A9QJJ9/V7J / 3253 дня назад

@mugiseyebrows сокращать объем кода надо правильными абосракциями (например макросами), а не экономить на спичках типа имен переменных или вызовых функций.

#A9QJJ9/ALC / @ninesigns --> #A9QJJ9/SA5 / 3253 дня назад
@ninesigns это пример того как кто-то не видит дальше залупы собственного носа и запрещает всё подряд. в данном случае проблема не в том что можно перепутать аргументы местами, а в том что эта ошибка может протечь слишком далеко и поэтому её хуй поймаешь. очень типично для скриптопараши.
#A9QJJ9/TMM / @anonymous --> #A9QJJ9/WU6 / 3253 дня назад
@ninesigns Это, тем более любой вменяемый редактор комплитит.
#A9QJJ9/OU5 / @je --> #A9QJJ9/ALC / 3253 дня назад
@ninesigns сорь, пишу только программы в 140 символов, чтобы интерпретатор заинлайнил
#A9QJJ9/86J / @mugiseyebrows --> #A9QJJ9/ALC / 3253 дня назад
@mugiseyebrows Скажи еще заволатайтил. Интерпретатор.
#A9QJJ9/LJ9 / @je --> #A9QJJ9/86J / 3253 дня назад

@anonymous то есть, с noscript будет работать?

#A9QJJ9/Q15 / @ninesigns --> #A9QJJ9/VWB / 3253 дня назад

@anonymous oche tolsto

#A9QJJ9/0R5 / @anonymous --> #A9QJJ9/8PB / 3253 дня назад
@anonymous что не так? перепутать аргументы с человеческим автодополнением может только слепой
#A9QJJ9/0SN / @anonymous --> #A9QJJ9/0R5 / 3253 дня назад
@lexszero > даже В петушоне вообще охуенно с аргументами, именованные, значения по умолчанию, *, **, аннотации, вот это всё.
#A9QJJ9/RB9 / @anonymous --> #A9QJJ9/G5V / 3253 дня назад
% ocaml OCaml version 4.01.0 # let f ~x ~y = x - y;; val f : x:int -> y:int -> int = <fun> # f ~y:1 ~x:2;; - : int = 1 хз че за отсос
#A9QJJ9/IFB / @komar / 3253 дня назад
@l29ah Казалось бы, причем тут ADT, когда тут обыкновенная структура?
#A9QJJ9/M2A / @komar --> #A9QJJ9/TPJ / 3253 дня назад
@anonymous обосрался
#A9QJJ9/QB2 / @komar --> #A9QJJ9/O8K / 3253 дня назад
@komar че
#A9QJJ9/7H2 / @l29ah --> #A9QJJ9/M2A / 3253 дня назад
@komar Блджад, забери свой камл и уходи.
#A9QJJ9/Q93 / @je --> #A9QJJ9/IFB / 3253 дня назад
@je GHCi, version 7.10.2: http://www.haskell.org/ghc/ :? for help λ> let pook = 1 + ?puk `div` ?perd :: (?puk :: Int, ?perd :: Int) => Int λ> let ?puk = 10; ?perd = 5 in pook 3
#A9QJJ9/W2I / @l29ah --> #A9QJJ9/Q93 / 3253 дня назад
@l29ah Хаскел это по-нашенски, ня.
#A9QJJ9/U49 / @je --> #A9QJJ9/W2I / 3253 дня назад

@je > по-нашенски
"вы" - это кто?

#A9QJJ9/PBR / @ninesigns --> #A9QJJ9/U49 / 3253 дня назад
> Ведь очень легко перепутать аргументы с одинаковыми типами местами и потом долго ломать голову какого Х не работает Прост нужно запретить на уровне типчиков функции с аргументами одинаковых типов.
#A9QJJ9/RO7 / @kuzy000 / 3253 дня назад
@kuzy000 перепись долбоебов в этом итт треде
#A9QJJ9/AIH / @komar --> #A9QJJ9/RO7 / 3253 дня назад
@komar Как решается описанная проблема в мире рельсопетухов?
#A9QJJ9/GBB / @l29ah --> #A9QJJ9/AIH / 3253 дня назад
@l29ah Поменяли кавычки на `:`.
#A9QJJ9/CQB / @kuzy000 --> #A9QJJ9/GBB / 3253 дня назад
@l29ah Эти уебаны передают хэши в функции ололо.
#A9QJJ9/83F / @je --> #A9QJJ9/GBB / 3253 дня назад
#A9QJJ9/EAO / @komar --> #A9QJJ9/CQB / 3253 дня назад
@l29ah В мире рельсопетухов все есть хеш, и даже небо, и даже Аллах.
#A9QJJ9/E8O / @komar --> #A9QJJ9/GBB / 3253 дня назад
@komar Вы йобнутые прост, дали вам питухон с десятком фреймворков, нет буду говно жрать и слоупочить руби.
#A9QJJ9/QUB / @je --> #A9QJJ9/E8O / 3253 дня назад
@je mfw всерьёз обсуждают сорта скриптопараши
#A9QJJ9/7JF / @l29ah --> #A9QJJ9/QUB / 3253 дня назад
@ninesigns биткойн-майнер юзает меньше ресурсов чем это говно которое нихуя не делает
#A9QJJ9/F6I / @n --> #A9QJJ9/770 / 3253 дня назад
@l29ah this
#A9QJJ9/A1Z / @komar --> #A9QJJ9/7JF / 3253 дня назад

Один из главных отососов в современных языках программирования - это идиоты, на них программирующие.

#A9QJJ9/ZF4 / @lexszero / 3253 дня назад
@lexszero именно. C - язык программирования, осталтное костыли для слабоумных
#A9QJJ9/2HY / @n --> #A9QJJ9/ZF4 / 3253 дня назад
@n ну ладно, C++ ещё
#A9QJJ9/OFP / @n --> #A9QJJ9/2HY / 3253 дня назад
#A9QJJ9/N9B / @postman --> #A9QJJ9/WU6 / 3253 дня назад
@postman а ты еще кто такой
#A9QJJ9/BNV / @anonymous --> #A9QJJ9/N9B / 3253 дня назад

@n на bnw есть хоть один человек, считающий что твое мнение о языках программирования заслуживает хоть капли внимания?

#A9QJJ9/4WQ / @ninesigns --> #A9QJJ9/2HY / 3253 дня назад
@anonymous Твой папа.
#A9QJJ9/N0E / @postman --> #A9QJJ9/BNV / 3253 дня назад

@kuzy000 Вы, наверное, из России?

#A9QJJ9/UKM / @ninesigns --> #A9QJJ9/RO7 / 3253 дня назад

@n > подменил понятия "не работает" -> "жрет ресурсы"

bnw
надеется что не заметят

мысленно поссал тебе в ебло

#A9QJJ9/J0M / @ninesigns --> #A9QJJ9/F6I / 3253 дня назад
@ninesigns Ладно-ладно, нужно, просто, что бы не было спроса на такие функции.
#A9QJJ9/HUD / @kuzy000 --> #A9QJJ9/UKM / 3253 дня назад
@ninesigns 20 fps
#A9QJJ9/RMS / @kuzy000 --> #A9QJJ9/J0M / 3253 дня назад

@l29ah у тебя в примере не ADT.
кстати в хаскеле можно на ходу передать в функцию свой record type?

#A9QJJ9/PYC / @ninesigns --> #A9QJJ9/7H2 / 3253 дня назад
@ninesigns Не понял вопроса, нарисуй пример на псевдокоде.
#A9QJJ9/GT8 / @l29ah --> #A9QJJ9/PYC / 3253 дня назад

@kuzy000 20 fps для почтового клиента - приемлемо

#A9QJJ9/MLP / @ninesigns --> #A9QJJ9/RMS / 3253 дня назад

@l29ah func ({huy = 10, pizda = "pizda"})

#A9QJJ9/EPC / @ninesigns --> #A9QJJ9/GT8 / 3253 дня назад
@kuzy000 Как ты измерил? // RMS не одобряет твой камент
#A9QJJ9/3ZK / @l29ah --> #A9QJJ9/RMS / 3253 дня назад
@ninesigns f $ Foo {huy=10;pizda="pizda"}
#A9QJJ9/BAN / @l29ah --> #A9QJJ9/EPC / 3253 дня назад

@l29ah хуйта.
зачем Foo писать если по сигнатуре и так понятно?

#A9QJJ9/55F / @ninesigns --> #A9QJJ9/BAN / 3253 дня назад
@ninesigns Затем что это конструктор типа, а их у типа может быть несколько.
#A9QJJ9/SQZ / @l29ah --> #A9QJJ9/55F / 3253 дня назад

@l29ah для record types может быть несколько конструкторов? нахуя?

#A9QJJ9/S2Q / @ninesigns --> #A9QJJ9/SQZ / 3253 дня назад
@l29ah Записи это всего лишь синтаксисический сахар вокруг ADT.
#A9QJJ9/U5Z / @l29ah --> #A9QJJ9/KQN / 3253 дня назад

@l29ah ясно понятно, короче в хаскель хуже даже питошона в том что касается keyword arguments

#A9QJJ9/8RC / @ninesigns --> #A9QJJ9/U5Z / 3253 дня назад

@ninesigns можно сахар на TH наговнить наверное :3

#A9QJJ9/0C7 / @lexszero --> #A9QJJ9/8RC / 3253 дня назад
@ninesigns Потому что нахуй они нужны со статической типизацией, RWST и вменяемой декомпозицией?
#A9QJJ9/2OQ / @l29ah --> #A9QJJ9/8RC / 3253 дня назад
@ninesigns Ничье мнение на BNW не заслуживает внимания. У постояльцев BNW три нейрона в межушном нервном узле, и все, что они говорят, предсказуемо до полного опизденения от скуки. Их пиздеж можно воспринимать просто как объективную реальность. «Ниндзя будет рекомендовать эродин для поездок по бездорожью», «лях будет рекомендовать кроссовки для зимних походов», вот как-то так.
#A9QJJ9/0GA / @komar --> #A9QJJ9/4WQ / 3253 дня назад
@ninesigns Блядь, не сравнивай, пожалуйста, скриптопарашу, где в рантайме можно поменять черта лысого, и нормальный язык с нормальным компилятором. Второй следать на пару порядков сложнее.
#A9QJJ9/0CN / @komar --> #A9QJJ9/8RC / 3253 дня назад

@l29ah как мы видим, твоя статическая типизация никаким хуем не позволила написать так:
func ({hui=10, pizda=11})

если я хочу писать в таком стиле то мне на каждую функцию придется высирать свой record type и указывать его type constructor в месте выхова.

#A9QJJ9/758 / @ninesigns --> #A9QJJ9/2OQ / 3253 дня назад

@komar комар будет рекомендовать ботинки из декатлона для высокогорных восхождений

#A9QJJ9/96S / @lexszero --> #A9QJJ9/0GA / 3253 дня назад
@lexszero Я разве тебе не говорил, что следующей моей покупкой будут пластиковые ботинки?
#A9QJJ9/C2A / @komar --> #A9QJJ9/96S / 3253 дня назад

@komar ну бля сорь, скриптопараша тоже нужна, иначе все давно бы уже обмазывались одним единственным божественным хаскелем

#A9QJJ9/QFW / @ninesigns --> #A9QJJ9/0CN / 3253 дня назад
@ninesigns Скриптопараша нужна, фанбои которые на ней ебашат сложную логику - нет.
#A9QJJ9/TJT / @l29ah --> #A9QJJ9/QFW / 3253 дня назад
@ninesigns # let f o = o#x + o#y;; val f : < x : int; y : int; .. > -> int = <fun> # f (object method x = 1 method y = 2 end);; - : int = 3
#A9QJJ9/VC1 / @komar --> #A9QJJ9/758 / 3253 дня назад
@ninesigns Хаскель — дерьмо собачье.
#A9QJJ9/9S0 / @komar --> #A9QJJ9/QFW / 3253 дня назад

@ninesigns если я хочу писать в таком стиле на петушоне, мне надо на каждую функцию высирать def func(hui, pizda)
обмажься cpp если лень буквы набирать.

#A9QJJ9/RIJ / @lexszero --> #A9QJJ9/758 / 3253 дня назад

@l29ah Ты расширение какое-то заюзал?

#A9QJJ9/YCU / @minoru --> #A9QJJ9/W2I / 3253 дня назад
@minoru Да. Никто в здравом уме эту наркоманию в стандарт не включит.
#A9QJJ9/0VE / @l29ah --> #A9QJJ9/YCU / 3253 дня назад

@l29ah А называется как?

#A9QJJ9/QEN / @minoru --> #A9QJJ9/0VE / 3253 дня назад
@minoru ImplicitParams
#A9QJJ9/IJS / @l29ah --> #A9QJJ9/QEN / 3253 дня назад

@l29ah Спасибо.

#A9QJJ9/Z4U / @minoru --> #A9QJJ9/IJS / 3253 дня назад
#A9QJJ9/NWL / @krkm --> #A9QJJ9/OTO / 3252 дня назад

https://eb.host.cs.st-andrews.ac.uk/drafts/eff-tutorial.pdf#31

I wrote down a set of likely rules making any assumptions explicit in the state transitions for MysteryRules. Then, when implementing

game at first, any incorrect assumption was caught as a type error. The following errors were caught during development:

  • Not realising that allowing NewWord to be an arbitrary string would mean that game would have to deal with a zero-length word as a starting state.

  • Forgetting to check whether a game was won before recursively calling processGuess, thus accidentally continuing a finished game.

  • Accidentally checking the number of missing letters, rather than the number of remaining guesses, when checking if a game was lost.

These are, of course, simple errors, but were caught by the type checker before any testing of the game.


ошибка тайпчекера из-за два интов перепутаных местами

Как ни странно, божественная статическая типизация тут не роляет совершенно.

тред не читал (и не собираюсь); ссал в карман ОПу-долбоебу за неуважение к науке

#A9QJJ9/9F7 / @ulidtko / 3252 дня назад

@ulidtko поясните свой пук, пожалуйста.

#A9QJJ9/FTO / @ninesigns --> #A9QJJ9/9F7 / 3252 дня назад
@ninesigns хаскель блядь идеальный сука пидор тупой штоле
#A9QJJ9/V4W / @komar --> #A9QJJ9/FTO / 3252 дня назад

@komar это Idris

#A9QJJ9/YHB / @ninesigns --> #A9QJJ9/V4W / 3252 дня назад

@ulidtko ну еба, newtype'ишь свои инты и профит. правда, придется прописывать для этих типов небо и аллаха.

#A9QJJ9/J6U / @lexszero --> #A9QJJ9/9F7 / 3252 дня назад

@ninesigns ты слепой блядь или что?

бумагу открой, там Эдвин Брейди сделал всё по науке, именно так как ты просил (перепутал переменные — ошибка типов, поменял как правильно — ОК)

пересказывать весь контент оттуда пусть кто-то другой станет

#A9QJJ9/Z0L / @ulidtko --> #A9QJJ9/FTO / 3252 дня назад

@ninesigns

case g of
Z => Lost
(S k) => game

здесь изначально было case w of ..., и это ошибка. И g, и w имеют тип Nat.

#A9QJJ9/7IT / @ulidtko --> #A9QJJ9/FTO / 3252 дня назад

@lexszero не, это хуйня. Придётся синтаксический мёд лить бочками, чтобы хоть кто-то так делал.

Алсо жажду спалить годноту (всего ★119), но оно канеш так себе, на любителя.

#A9QJJ9/NIT / @ulidtko --> #A9QJJ9/J6U / 3252 дня назад
@krkm Хули ты ебло своё припёр, иди чисти жаваскрипт вилкой.
#A9QJJ9/RGQ / @l29ah --> #A9QJJ9/NWL / 3252 дня назад
@ninesigns ну, ты же отвечаешь
#A9QJJ9/03C / @n --> #A9QJJ9/4WQ / 3251 день назад
@ninesigns может, и коробка едет? чего мелочиться.
#A9QJJ9/D83 / @n --> #A9QJJ9/J0M / 3251 день назад
@ninesigns форекс трейдер нассыт тебе в анус за такое
#A9QJJ9/FN7 / @n --> #A9QJJ9/MLP / 3251 день назад
@komar нормально едет по бездорожью, кстати - https://youtu.be/smeU6mS8KAw?t=1h3m3s
#A9QJJ9/VAF / @n --> #A9QJJ9/0GA / 3251 день назад

@n слабо прикрытая попытка перевести ветку в привычное поле хрустодемагогии. незачет // пошел нахуй

#A9QJJ9/X44 / @ninesigns --> #A9QJJ9/D83 / 3251 день назад
@ninesigns ты сначала ездить научись, а потом я с тобой разговаривать буду. и электровелосипед свой смени на что-нибудь мужское
#A9QJJ9/1Z7 / @n --> #A9QJJ9/X44 / 3251 день назад
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

Цоперайт © 2010-2016 @stiletto.