Best viewed with LeechCraft on Microsoft Linux. Войти !bnw Сегодня Клубы

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

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

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

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

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

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

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

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

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

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

#A9QJJ9/GSL / @ninesigns --> #A9QJJ9/I4R / 3027 дней назад

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

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

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

#A9QJJ9/AJS / @ninesigns --> #A9QJJ9/4QV / 3027 дней назад
@ninesigns можно написать не программу
#A9QJJ9/0M9 / @n --> #A9QJJ9/AJS / 3027 дней назад
@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 / 3027 дней назад

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

#A9QJJ9/1YB / @ninesigns --> #A9QJJ9/0M9 / 3027 дней назад

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

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

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

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

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

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

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

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

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

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

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

вин

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

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

пук

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

триплвин

Съеби.

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

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

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

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

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

#A9QJJ9/770 / @ninesigns --> #A9QJJ9/NHH / 3027 дней назад

@ninesigns Elm обв

#A9QJJ9/P73 / @anonymous --> #A9QJJ9/WCX / 3027 дней назад

@anonymous норм

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

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

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

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

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

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

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

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

#A9QJJ9/Q15 / @ninesigns --> #A9QJJ9/VWB / 3027 дней назад

@anonymous oche tolsto

#A9QJJ9/0R5 / @anonymous --> #A9QJJ9/8PB / 3027 дней назад
@anonymous что не так? перепутать аргументы с человеческим автодополнением может только слепой
#A9QJJ9/0SN / @anonymous --> #A9QJJ9/0R5 / 3027 дней назад
@lexszero > даже В петушоне вообще охуенно с аргументами, именованные, значения по умолчанию, *, **, аннотации, вот это всё.
#A9QJJ9/RB9 / @anonymous --> #A9QJJ9/G5V / 3027 дней назад
% 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 / 3027 дней назад
@l29ah Казалось бы, причем тут ADT, когда тут обыкновенная структура?
#A9QJJ9/M2A / @komar --> #A9QJJ9/TPJ / 3027 дней назад
@anonymous обосрался
#A9QJJ9/QB2 / @komar --> #A9QJJ9/O8K / 3027 дней назад
@komar че
#A9QJJ9/7H2 / @l29ah --> #A9QJJ9/M2A / 3027 дней назад
@komar Блджад, забери свой камл и уходи.
#A9QJJ9/Q93 / @je --> #A9QJJ9/IFB / 3027 дней назад
@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 / 3027 дней назад
@l29ah Хаскел это по-нашенски, ня.
#A9QJJ9/U49 / @je --> #A9QJJ9/W2I / 3027 дней назад

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

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

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

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

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

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

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

#A9QJJ9/UKM / @ninesigns --> #A9QJJ9/RO7 / 3027 дней назад

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

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

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

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

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

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

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

#A9QJJ9/MLP / @ninesigns --> #A9QJJ9/RMS / 3027 дней назад

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

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

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

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

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

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

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

#A9QJJ9/8RC / @ninesigns --> #A9QJJ9/U5Z / 3027 дней назад

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

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

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

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

#A9QJJ9/758 / @ninesigns --> #A9QJJ9/2OQ / 3027 дней назад

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

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

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

#A9QJJ9/QFW / @ninesigns --> #A9QJJ9/0CN / 3027 дней назад
@ninesigns Скриптопараша нужна, фанбои которые на ней ебашат сложную логику - нет.
#A9QJJ9/TJT / @l29ah --> #A9QJJ9/QFW / 3027 дней назад
@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 / 3027 дней назад
@ninesigns Хаскель — дерьмо собачье.
#A9QJJ9/9S0 / @komar --> #A9QJJ9/QFW / 3027 дней назад

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

#A9QJJ9/RIJ / @lexszero --> #A9QJJ9/758 / 3027 дней назад

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

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

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

#A9QJJ9/QEN / @minoru --> #A9QJJ9/0VE / 3027 дней назад
@minoru ImplicitParams
#A9QJJ9/IJS / @l29ah --> #A9QJJ9/QEN / 3027 дней назад

@l29ah Спасибо.

#A9QJJ9/Z4U / @minoru --> #A9QJJ9/IJS / 3027 дней назад
#A9QJJ9/NWL / @krkm --> #A9QJJ9/OTO / 3026 дней назад

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 / 3026 дней назад

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

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

@komar это Idris

#A9QJJ9/YHB / @ninesigns --> #A9QJJ9/V4W / 3026 дней назад

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

#A9QJJ9/J6U / @lexszero --> #A9QJJ9/9F7 / 3026 дней назад

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

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

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

#A9QJJ9/Z0L / @ulidtko --> #A9QJJ9/FTO / 3026 дней назад

@ninesigns

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

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

#A9QJJ9/7IT / @ulidtko --> #A9QJJ9/FTO / 3026 дней назад

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

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

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

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

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

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