- 1
IT Оффтоп #93
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
IT Оффтоп #93
#63: https://govnokod.ru/27004 https://govnokod.xyz/_27004
#64: https://govnokod.ru/27020 https://govnokod.xyz/_27020
#65: https://govnokod.ru/27027 https://govnokod.xyz/_27027
#66: https://govnokod.ru/27040 https://govnokod.xyz/_27040
#67: https://govnokod.ru/27049 https://govnokod.xyz/_27049
#68: https://govnokod.ru/27061 https://govnokod.xyz/_27061
#69: https://govnokod.ru/27071 https://govnokod.xyz/_27071
#70: https://govnokod.ru/27097 https://govnokod.xyz/_27097
#71: https://govnokod.ru/27115 https://govnokod.xyz/_27115
#72: https://govnokod.ru/27120 https://govnokod.xyz/_27120
#73: https://govnokod.ru/27136 https://govnokod.xyz/_27136
#74: https://govnokod.ru/27160 https://govnokod.xyz/_27160
#75: https://govnokod.ru/27166 https://govnokod.xyz/_27166
#76: https://govnokod.ru/27168 https://govnokod.xyz/_27168
#77: https://govnokod.ru/27186 https://govnokod.xyz/_27186
#78: https://govnokod.ru/27219 https://govnokod.xyz/_27219
#79: https://govnokod.ru/27254 https://govnokod.xyz/_27254
#80: https://govnokod.ru/27270 https://govnokod.xyz/_27270
#81: https://govnokod.ru/27280 https://govnokod.xyz/_27280
#82: https://govnokod.ru/27284 https://govnokod.xyz/_27284
#83: https://govnokod.ru/27296 https://govnokod.xyz/_27296
#84: https://govnokod.ru/27336 https://govnokod.xyz/_27336
#85: https://govnokod.ru/27381 https://govnokod.xyz/_27381
#86: https://govnokod.ru/27405 https://govnokod.xyz/_27405
#87: https://govnokod.ru/27429 https://govnokod.xyz/_27429
#88: https://govnokod.ru/27432 https://govnokod.xyz/_27432
#89: https://govnokod.ru/27435 https://govnokod.xyz/_27435
#90: https://govnokod.ru/27439 https://govnokod.xyz/_27439
#91: https://govnokod.ru/27449 https://govnokod.xyz/_27449
#92: https://govnokod.ru/27460 https://govnokod.xyz/_27460
nepeKamHblu_nemyx # 0
Этот оффтоп сгенерирован автоматически.
Индекс оффтопов: https://index.gcode.space/.
Зеркала Говнокода и полезные ресурсы:
* https://govnokod.xyz/ (альтернативный Говнокод)
* https://gcode.space/ (read-only зеркало Говнокода)
* https://t.me/GovnokodBot (Говнокод-бот в «Telegram»)
* https://t.me/GovnokodChannel (Тематический канал в «Telegram»)
* https://vorec.space/ (глоссарий Говнокода)
* https://app.element.io/#/room/#govnokod:matrix.org (резервный чат)
Примечание: автоматические перекаты в настоящее время осуществляются только с аккаунта nepeKamHblu_nemyx.
Остерегайтесь подделок. Берегите себя и своих близких. Кок!
TOPT # 0 ⇈
JloJle4Ka # 0 ⇈
TOPT # 0
Ну как, сделали бэкапы?
bormand # 0 ⇈
TOPT # 0 ⇈
bormand # 0 ⇈
TOPT # 0 ⇈
JloJle4Ka # 0 ⇈
TOPT # 0 ⇈
bormand # 0 ⇈
JloJle4Ka # 0 ⇈
JloJle4Ka # 0 ⇈
TOPT # 0 ⇈
bormand # 0 ⇈
gologub # 0 ⇈
> произошла утечка поролей!
ох уж эти новости для русни
JloJle4Ka # 0
bormand # 0 ⇈
JloJle4Ka # 0 ⇈
j123123 # 0
> Вопрос: Где вы храните ваши заметки и полезные куски кода?
> Половину своих сниппетов храню на govnokod.ru, а вторую — в Gist.
Какой govnoGist )))
j123123 # 0 ⇈
https://stackoverflow.com/cv/madhead
Software Engineer
Siarhei Krukau
Minsk, Belarus
madhead_
github.com/madhead
https://madhead.me
Last seen on Stack Overflow today
bormand # 0 ⇈
PolinaAksenova # 0 ⇈
j123123 # 0 ⇈
bormand # 0 ⇈
j123123 # 0 ⇈
MAKAKA # 0 ⇈
зачем, если есть говнокод.ру?
> Членство в Клубе платное.
сук, до такого даже швабр не додумался.
Отныне членство на ГК платное
Платить мне
Кошелек скину в личку
bormand # 0 ⇈
TOPT # 0 ⇈
bormand # 0 ⇈
На форумах обычно темы придерживаются, это не гк.
3oJIoTou_xyu # 0 ⇈
MAKAKA # 0 ⇈
Во-первых не в Интернете. Дайлапиться не обязательно, достаточно сделать оверлейную сеть поверх Инета
Во-вторых не в вебе, а по юзнетовскому проту как минимум
Вот тогда там точно ванаби не будет
gologub # 0 ⇈
MAKAKA # 0 ⇈
gologub # 0 ⇈
nuTepcKuu_nemyx # 0 ⇈
inkanusinho # 0 ⇈
MAKAKA # 0 ⇈
вот тут почитай
https://www.postgresql.org/docs/13/textsearch-indexes.html
inkanusinho # 0 ⇈
guest # 0 ⇈
TOPT # 0
Хачу такую
TOPT # 0 ⇈
bootcamp_dropout # 0 ⇈
3oJIoTou_xyu # 0 ⇈
nuTepcKuu_nemyx # 0 ⇈
TOPT # 0 ⇈
DypHuu_niBEHb # 0 ⇈
nuTepcKuu_nemyx # 0 ⇈
DypHuu_niBEHb # 0 ⇈
nuTepcKuu_nemyx # 0 ⇈
bormand # 0 ⇈
Тяны тоже. Вот посмотри на тиндере -- мужа нет, а дети есть.
Desktop # 0 ⇈
nuTepcKuu_nemyx # 0 ⇈
MAKAKA # 0 ⇈
DypHuu_niBEHb # 0 ⇈
Никогда их не ешь
bormand # 0 ⇈
TOPT # 0 ⇈
JloJle4Ka # 0 ⇈
gologub # 0 ⇈
DypHuu_niBEHb # 0 ⇈
Звучит как "в убунту есть приложение, чтобы искать текст в файле"
xeyesам лет больше, чем тебе)
Copied from the NeWS version written (apparently) by Jeremy Huxtable as seen at SIGGRAPH '88
Desktop # 0 ⇈
guest # 0 ⇈
DypHuu_niBEHb # 0 ⇈
http://sortoved.ru/kartofel/sort-kartofelya-sineglazka.html
ямочки на том месте, где были глазки
видишь?
gologub # 0 ⇈
https://www.youtube.com/watch?v=ZmV6SrjGWdk
TOPT # 0 ⇈
bormand # 0 ⇈
JloJle4Ka # 0 ⇈
nuTepcKuu_nemyx # 0 ⇈
[email protected] # 0 ⇈
bormand # 0 ⇈
[email protected] # 0 ⇈
Вы больше не можете отправлять сообщения этой тян.
> В картохе одни углеводы поди?
90% углеводов, да. Много крахмала.
TOPT # 0 ⇈
JloJle4Ka # 0 ⇈
TOPT # 0 ⇈
PolinaAksenova # 0 ⇈
nad) ^eint. ©pclnionn {bx\ Ju Tange, üloss. med. et iiifim. Latin. 8. v.) anflcljäd)»
fift^en llripiuii,!^ fetin mu" ctncn Wiirtel ober eine ®rf)uur jum i*lb^iü)lcii bcr ©ebefe
bebcutcn. ^ad Üue Dianu iuuii)e ^ucc)t m btx ^toeiten ^äljte be« 11. Olal)ct)unb€ttd
oü Mdifsniift tocDMnbt, bni ober ojl im 18. dal|ci|itiiM tedfl in Gf^hwiiQ; itftili
enip^oni bc Swbvne (nm 1225J (<U sfpt don. «p. «oU in Eofawdi Soriptt. Pnad*
I, 189) tticbtt^ottat c8 anMc^ttgc @etkii SO»
DypHuu_niBEHb # 0 ⇈
guest # 0 ⇈
JloJle4Ka # 0 ⇈
guest # 0 ⇈
JloJle4Ka # 0 ⇈
public poll
Обзор отличного примера интерактивной документации (какого — секрет). – 14
??????? 67%
@katerina308, @etkee, @factorized, @exebeeche, @annacraneo, @anasta_ste, @DarthVader, @OlgaRevyakina, @SvetlanaNudel, @den317, @woooooowmen, @aselivanava, @slavachernikoff, @arvikon
Как добавлять диаграммы, в том числе UML, в документацию на Sphinx. – 4
?? 19%
@yeugene, @Lananovikova, @PavelAlferov, @maxlapshin
Память переводов: зачем нужна и как устроена. – 2
? 10%
@i_tsupko, @vodnicear
Как использовать ссылки в форматах разметки, чтобы они не сломались при переводе. – 1
? 5%
@Dark_soul_Mike
? 21 people voted so far.
DypHuu_niBEHb # 0 ⇈
MAKAKA # 0 ⇈
guest # 0 ⇈
nuTepcKuu_nemyx # 0 ⇈
gologub # 0
10
Code
Issues
Pull requests
Chrome extension to turn unnecessarily gendered words into their neutral alternatives across the web.
bormand # 0 ⇈
bormand # 0 ⇈
"Male" -> ""
Заебись коннекторы на али покупать с этим плагином.
MAKAKA # 0 ⇈
MAKAKA # 0 ⇈
вроде JS, а всё равно пэхапэ
Кстати, какого пола Софи?
https://github.com/amity
bootcamp_dropout # 0 ⇈
Все понятно, сексист
Знаю гендер только этой Софи https://github.com/sophiebits
guest # 0 ⇈
bootcamp_dropout # 0 ⇈
guest # 0 ⇈
bootcamp_dropout # 0 ⇈
JloJle4Ka # 0 ⇈
YpaHeLI_ # 0 ⇈
bormand # 0 ⇈
Не всё так просто... Настоящие пидорасы TS'ок за своих не признают: ну не будет же мужик косплеить бабу.
bormand # 0 ⇈
А есть разница? Да и скрипт всё равно сотрёт эту инфу.
CHayT # 0 ⇈
gologub # 0
bormand # 0 ⇈
gologub # 0 ⇈
acher.mp4
gologub # 0 ⇈
JloJle4Ka # 0 ⇈
gologub # 0 ⇈
ваще серил неровный, поэтому всё еще может вернуться в зад
guest # 0
JloJle4Ka # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
JloJle4Ka # 0 ⇈
gologub # 0 ⇈
guest # 0
Парламент Республики Сальвадор принял закон, признающий криптовалюту биткоин легальным платежным средством в этой стране.
Закон вступит в силу через 90 дней.
https://finance.liga.net/cryptoeconomics/novosti/salvador-stal-pervoy-v-mire-stranoy-kotoraya-legalizovala-bitkoiny
MAKAKA # 0 ⇈
да много как!
MAKAKA # 0
JloJle4Ka # 0 ⇈
bormand # 0 ⇈
booratihno # 0 ⇈
YpaHeLI_ # 0
JloJle4Ka # 0 ⇈
PolinaAksenova # 0
В современном мире ООП стало неотъемлемой частью разработки. Многие популярные языки, такие как Pyhon, Jaba, Hashkell, GOO и C== поддерживают данную парадигму.
booratihno # 0 ⇈
JloJle4Ka # 0 ⇈
***
В этой статье я постараюсь раскрыть смысл таких архитектурных конструкций, как абстрактный синглтон и фабрика абстрактных синглтонов.
***
Великая статья...
[email protected] # 0 ⇈
Не понимает Хабр ничего в хороших статьях.
gologub # 0 ⇈
JloJle4Ka # 0
Desktop # 0 ⇈
Desktop # 0 ⇈
- так ты кочан не пополоскаешь, сынок
JloJle4Ka # 0 ⇈
DypHuu_niBEHb # 0 ⇈
https://www.youtube.com/watch?v=uyJTeCnvIFs
nuTepcKuu_nemyx # 0 ⇈
Поставил минус.
Desktop # 0 ⇈
DypHuu_niBEHb # 0
как вам сборка Dragonized BlackArch? Не нужно мучительно долго устанавливать BlackArch из командной строки, размечать диск, ставить графический интерфейс, сама мысль об этом отпугивает юных хакеров
В процессе, читал про новую крутую систему BTRFS, которая сжимает данные, а значит мой SSD прослужит дольше
Ну а что же там с хакерским софтом? А вот, что - очередной фигвам, из двух предустановленных программ запустилось 0! Здесь должен быть смайлик краснокожей раздраженной мордашки. Понесло меня на форум к ним обратно - создал ветку, почему на Garuda KDE BlackArch Edition ничего из меню BlackArch - не запускается. Гости форума пытались как-то помочь, а вот модераторы, они же разработчики стали посылать меня на другие форумы Arch, BlackArch, лепить какие-то отмазки, учить жизни...
----------
какой хакер )))
bormand # 0 ⇈
Их отпугивает сама мысль о том, что не нужно мучительно долго устанавливать?
JloJle4Ka # 0 ⇈
А бывают Debian подобные Gnome?
Хочу, чтобы этого чувака навсегда забанили на хабре, да и в интернете.
bormand # 0 ⇈
JloJle4Ka # 0 ⇈
DypHuu_niBEHb # 0 ⇈
Чувак решил её поставить, и хотел чтобы там сразу была кнопка "сломать соседский wifi и страничку вконтакте" или что-то такое, а оно не работает
JloJle4Ka # 0 ⇈
DypHuu_niBEHb # 0 ⇈
а если она незаработает, то можно пойти на форум и на русском языке поругать разрабов?
JloJle4Ka # 0 ⇈
Kali Linux — GNU/Linux-LiveCD, возникший как результат слияния WHAX и Auditor Security Collection. Проект создали Мати Ахарони (Mati Aharoni) и Макс Мозер (Max Moser). Предназначен прежде всего для проведения тестов на безопасность. Наследник развивавшегося до 2013 года на базе Knoppix дистрибутива BackTrack.
> а если она незаработает, то можно пойти на форум и на русском языке поругать разрабов?
The Kali Linux forums are meant to provide a place for the Kali community to converse and ask questions about the distribution. Due to the size of our community and complexity of Kali, we need to ensure Kali community members use these forums in a productive way which will also benefit others. For this reason we have set up some strict rules and regulations for posting in our forums. Please read these rules carefully before posting. Ignoring these rules will result in infractions and possible removal of your forum account. Any post not conforming to these rules will be deleted without notice.
1. Search for a solution before you post.
Before you post to our forums, try to search for the solution yourself. Start by searching the Official Kali documentation site, then the Kali forums. If nothing comes up, try Google next. If you still haven't come up with a solution, go ahead and post your question in the relevant forums. In most cases, the time you wait for your thread to be moderated and answered will be longer than the time it will take you to find a solution by searching.
gologub # 0 ⇈
Desktop # 0 ⇈
DypHuu_niBEHb # 0
[quote]
Есть некая электронная книга, которую одновременно читает неограниченное количество читателей. Нужно сделать так, чтобы заданный читатель в любой момент мог проверить, какая доля пользователей прочитала меньшую часть книги, чем он . Предложено наивное решение хранить в map<int,int> в качестве ключа номера страниц, в качестве значения- количество прочитавших их пользователей. Конечно, при таком подходе программа медленно работает с большими тестами потому, что количество итераций по контейнеру map равняется числу прочитанных пользователем страниц. То есть, если пользователь прочел 1000 страниц из 1000 возможных, то в цикле нужно будет сделать 1000 итераций, и это сильно замедляет программу.
[/quote]
https://habr.com/ru/sandbox/155012/
Ничего не понимаю. Ключи в map сортированые (там индейско-нигретянское дерево под капотом поди), значит если ты прочитал 42 страницы, то тебе нужно проитерироваться до ключа 42 и проссумировать пользователей, не?
Это всё конечно не потокобезопасно, но и в его решении про потоки ничево нет
bormand # 0 ⇈
DypHuu_niBEHb # 0 ⇈
Но я не понял формулировки!
"1000 итераций" звучит как "тысячу раз пройти всю коллекцию целиком", как если бы ключи были несортированы (как ``HashMap`` в джаве), хотя и тогда хватило бы одной итерации (просто полной)
bormand # 0 ⇈
В первой мапе храним сколько страниц какой юзер прочитал.
Во второй мапе храним сколько юзеров прочитало такое количество страниц.
Запрос за O(log(N)), обновление за O(log(N)).
Нафиг там что-то обходить циклом?
guest # 0 ⇈
bormand # 0 ⇈
DypHuu_niBEHb # 0 ⇈
guest # 0 ⇈
JloJle4Ka # 0 ⇈
DypHuu_niBEHb # 0 ⇈
JloJle4Ka # 0 ⇈
bormand # 0 ⇈
Нет конечно. Там поди жить на работе нужно будет и на энергетиках сидеть. Или это тупо наебалово.
guest # 0 ⇈
bormand # 0 ⇈
Никто не будет платить 3 ляма в месяц "обычному разработчику без рвания жопы".
guest # 0 ⇈
bormand # 0 ⇈
Да простит меня д++.
guest # 0 ⇈
PolinaAksenova # 0 ⇈
DypHuu_niBEHb # 0 ⇈
у нас стрессов еще меньше, чем у инью
я гарантирую
bormand # 0 ⇈
DypHuu_niBEHb # 0 ⇈
Сиди себе с ноутом, да кодируй
guest # 0 ⇈
bormand # 0 ⇈
DypHuu_niBEHb # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
Может у него начальница - жирная баба альфачка, от этого и стрессует, боится что изнасилует?
bormand # 0 ⇈
MAKAKA # 0 ⇈
bormand # 0 ⇈
MAKAKA # 0 ⇈
Вот это же явно его фантазия ))
> Может у него начальница - жирная баба альфачка, от этого и стрессует, боится что изнасилует?
Или это прравда?
bormand # 0 ⇈
MAKAKA # 0 ⇈
bormand # 0 ⇈
На ниибаца эксперта в их области я явно не тяну, так что скорее всего первое.
Никто не будет платить деньги просто так.
Desktop # 0 ⇈
В IT много дурных денег, непонятно, почему ты думаешь, что их не будут платить именно тебе
guest # 0 ⇈
MAKAKA # 0 ⇈
Борманд считает, что он недостаточно крутой для "таких больших денег".
А Ротоёб, я уверен, считает себя профессионалом во всем, что связано, например, с веб разработкой
Desktop # 0 ⇈
[email protected] # 0 ⇈
Рублей
Desktop # 0 ⇈
guest # 0 ⇈
MAKAKA # 0 ⇈
не надо так делать, иначе можно случайно сравнить себя с тем студентом, который какое-то говно на пхп говнокодил для института своего
там еще можно было вроде фотку свою выложить и инфу о себе и список друзей
guest # 0 ⇈
bormand # 0 ⇈
Хуйня конечно по сравнению с остановкой фейсбука на минуту, но все же.
guest # 0 ⇈
MAKAKA # 0 ⇈
А разработчик прошивок сетевого оборудования не стресует, что оно пизднется оставив без Интернета пару бизнес-центров посреди дня, или откроет дырень, через которую в эти центры придет шифровальщик?
А разработчик баз данных не стресует, что у него может быть бага, херящая данные?
guest # 0 ⇈
bormand # 0 ⇈
Угу, скорее оставят чистить вилкой )))
[email protected] # 0 ⇈
MAKAKA # 0 ⇈
попробуй взять весь доступный тебе код и все доступные тебе данные, и выложить их на reddit
guest # 0 ⇈
bormand # 0 ⇈
Да легко! Не в ту репу ремоут добавишь и пушнешь. Гит такой гит.
MAKAKA # 0 ⇈
А если ты полезешь чужие коммиты ребейзить и форспушить, так форспуш нужно запрещать на всем, кроме личных бранчей
bormand # 0 ⇈
MAKAKA # 0 ⇈
А если не замтеишь, то да: Жопа
У меня вот разные ключи для нашего сервера и для гитхаба
bormand # 0 ⇈
Разве что разные пароли на ключах могут остановить и заставить задуматься.
MAKAKA # 0 ⇈
"Enter passphrase for /home/MAKAKA/.ssh/github.key"
и я пойму, что что-то не так
bormand # 0 ⇈
MAKAKA # 0 ⇈
Будет merge commit с двумя предками (ветка ремоута и моя ветка) либо мне нужно поребейзнуть свой самый первый коммит поверх последнего коммита ремоута?
bormand # 0 ⇈
А вот если там в репе main а у тебя master -- то норм залетит как новая ветка)
MAKAKA # 0 ⇈
>unrelated history
Пишут, что до 2.9 был обычный merge commit
Потом питухи смекнули, что фича эта опасная, и сделали так
--allow-unrelated-histories
MAKAKA # 0 ⇈
Увольнять нужно если:
* От него мало толку, потому что он тупой
* От него мало толку, потому что он ленивый
* От него мало толку, потому что ему совершенно похуй на работу
* Он очень-очень токсичный, и на просьбу тестировщицы "посмотри этот баг, пожалуйста" отвечает "посмотрел тебе за щеку, проверь"
gologub # 0 ⇈
> цы
какой инклюжон )))
bormand # 0 ⇈
Лучше на ГК. Посмеёмся вместе.
guest # 0 ⇈
Desktop # 0 ⇈
gologub # 0 ⇈
defecate-plusplus # 0 ⇈
в наши годы уже вредно стрессовать
guest # 0 ⇈
CHayT # 0 ⇈
CHayT # 0 ⇈
guest # 0 ⇈
PolinaAksenova # 0 ⇈
guest # 0 ⇈
uwu # 0 ⇈
JloJle4Ka # 0 ⇈
guest # 0 ⇈
CHayT # 0 ⇈
guest # 0 ⇈
bootcamp_dropout # 0 ⇈
PolinaAksenova # 0 ⇈
owo # 0 ⇈
PolinaAksenova # 0 ⇈
CHayT # 0 ⇈
3_dar # 0 ⇈
bootcamp_dropout # 0 ⇈
Desktop # 0 ⇈
guest # 0 ⇈
gologub # 0 ⇈
по таймингу подходит
Desktop # 0 ⇈
defecate-plusplus # 0 ⇈
плюсанул твою картинку
guest # 0 ⇈
defecate-plusplus # 0 ⇈
не твоя вот и бесишься
guest # 0 ⇈
defecate-plusplus # 0 ⇈
guest # 0 ⇈
defecate-plusplus # 0 ⇈
typescript, react
flutter
postgres, clickhouse
kafka
guest # 0 ⇈
ого, это где на Dartе пишут?
defecate-plusplus # 0 ⇈
из всех сортов говна на этот раз решили употреблять именно его
guest # 0 ⇈
Я почему-то думал, что он мёртв. А если не мёртв, то зачем вообще гуглу Котлин для андроида например, если у гугла свой язык есть?
defecate-plusplus # 0 ⇈
ну говорят, что даже тайпскрипт лучше, но что поделать, не ксамарин же брать
так-то он подебил в праймериз вариант писать натив под несколько платформ с одинаковой рожей и функционалом
а пока рано делать выводы, время покажет насколько сильно мы ошибались
guest # 0 ⇈
>писать натив под несколько платформ
пора уже пилить транслятор из котлина в свифт (или наоборот) и из андроиндных компонентов в UIKit
defecate-plusplus # 0 ⇈
у нас есть здоровенный живой проект, где мобила на ксамарин
там только в фигме четыре сотни макетов состояний
never again
все с содроганием ждут момента, когда заказчик придет и скажет "давайте дальше развивать", а нам придется переписывать всё к хуям на более адекватную платформу
возможно, в то время надо было сразу брать котёл и не ебать себе мозги с C#
guest # 0 ⇈
j123123 # 0 ⇈
А чем плох этот тайпскрипт, кроме того факта, что это костыль для джаваскрипта, сделанный чтоб в жс оттранслировать и потом в браузере работало?
bormand # 0 ⇈
j123123 # 0 ⇈
А нужно ли задрачиваться с этими теориями типов? На мой скромный взгляд, типы не должны быть какой-то динамической парашей, как в каком-нибудь там жабаскрипте или питухоне, когда некое говно там само во что-то неявно кастуется хуй пойми по каким ебанутым правилам и хуй пойми как работает, но и не должно быть какой-то переусложненной питушней для ма-те-матиков со всякими там катаморфизмами и прочей такой питушней. Не, может быть я не секу фишку, и сложная заебаная система типов со всяким там Хиндли-Милнером это заебись, но вот динамическая типохуйня как в жс это явное днище. И вообще, лучше пусть у меня будут встроенные в язык гомоиконы, на которых я свою типизационную питушню могу описать так, как мне надо для конкретной предметной области.
Я под контроллеры отлично пишу без всех этих параморфизмов и катаморфизмов, например. https://i.imgur.com/HopNrVI.jpg
MAKAKA # 0 ⇈
Её можно отключить, но ты не обязан
j123123 # 0 ⇈
bormand # 0 ⇈
В какой-то мере это можно делать в Coq -- придумать свой DSL, описать его синтаксис, сёмантику и типизацию и рассуждать над прогами на нём.
К примеру, можно доказать, что правильно типизированные проги на твоём DSL всегда завершаются или хотя бы не "падают" (могут выполнить ещё один шаг).
guest # 0 ⇈
j123123 # 0 ⇈
Это почему же? На крестовой шаблонопараше (котороая достаточно хуево для этого подходит, к.м.к.) кто-то же пишет ебанутую километровую нечитаемую метушню зачем-то.
Свиньи же жрут говно своё… сердце ихнее даже человеку пересаживают.
> А ты всё равно в итоге обосрёшь "у меня в Си этого нету, именно поэтому я за Си".
Про "В X этого нету, именно поэтому я за X" - это вообще-то локальный мемчик говнокода, его ротоёб изобрел. Нет, я не считаю, что если чего-то нет в Си, то это вообще нахуй не нужно. Но я против того говна, которое укуренные стандартизаторы понапридумывали в крестопарашном стандарте. Я считаю что язык программирования не должен в себе содержать кучу ебанутых неочевидных правил о всякой хуйне, которые не осиливают корректно имплементнуть даже создатели компиляторов (а обычный рядовой говнокодер и подавно в этом пиздеце не разберется). Язык должен быть легко настраиваем и расширяем, и должна быть возможность создавать универсальные языковые расширители (в т.ч. синтаксис добавлять/менять, в т.ч. domain-specific оптимизации для определенных типов, которые можно было бы разрешать для определенных участков кода). В общем я за универсализм, а не за захардкоженную хуйню принятую говнокомитетом. Язык должен быть настраиваемым и программируемым.
bootcamp_dropout # 0 ⇈
нахуя?
j123123 # 0 ⇈
А знаете как это делается в крестах? Я вот смотрю на код из https://github.com/hanickadot/compile-time-regular-expressions/ и это просто СРАНЫЙ ЕБАНЫЙ ПИЗДЕЦ НАХУЙ. https://www.youtube.com/watch?v=r_ZASJFQGQI я даже видео посмотрел про то, как эта хрень работает. Через шаблонопоебень с констэкспрами описывать LL(1) парсер, пиздец-пиздец-пиздец
bootcamp_dropout # 0 ⇈
bormand # 0 ⇈
Да, переписать на пёрл, потому что регулярки понадобились...
> написать интерпретатор своего языка
А это тупо дорого. Да и сочинять новый язык ради конпеляции сраных регулярок в компайлтайме -- ну такое.
j123123 # 0 ⇈
bormand # 0 ⇈
З.Ы. Заебали уже переставлять куски Алгола 68 в другом порядке и плодить языки из-за того, что одна конкретная фича в существующих не понравилась...
bootcamp_dropout # 0 ⇈
регулярки есть в любом популярном языке
>А это тупо дорого. Да и сочинять новый язык ради конпеляции сраных регулярок в компайлтайме -- ну такое
а разрабатывать на какой-то неведомой хуйне и держать штат расширятелей дешево?
bormand # 0 ⇈
Они рантаймовые. А в конпелируемом языке хотелось бы, чтобы их конпелировал сам конпелятор. В конце-концов у него уже есть всё для генерации хорошего, быстрого кода.
Остаётся только сконвертить регулярку в эквивалентный код и скормить её конпелятору. И вот этот этап на крестах хоть и работает, но выглядит как ЁБАНЫЙ НАХУЙ СУКА ПИЗДЕЦ. Причём далеко не потому что переписать регулярку на сишку/кресты прям сложная и неразрешимая задача.
bootcamp_dropout # 0 ⇈
bormand # 0 ⇈
Чтобы конкретные кейсы, которые я юзаю в горячих точках кода, работали быстрее и весили меньше.
> не раздует размер бинаря
Сложно сказать. Где-то раздует, где-то наоборот меньше будет.
Можешь юзать эту оптимизацию только в важных местах, а в остальных вызывать старый добрый рантаймовый движок.
Это как раз к вопросу о том, что "новый язык" тут не нужен, просто небольшая надстройка к старому, которая даже синтаксис не меняет.
З.Ы. А нахуя вообще конпелировать код? Это же раздувает размер бинаря, лол.
bootcamp_dropout # 0 ⇈
но это выглядит как не очень частая ситуация чтобы ради нее городить новые технологии и языки а не дрочиться с плюсами?
bormand # 0 ⇈
Именно! В том и суть Универсального Языка j123123, что больше не надо плодить новые технологии и языки, а можно просто скачать из репы либу, которая реализует нужную фичу.
З.Ы. На "D", к примеру, такие регулярки можно сделать в виде либы. Без внешних генераторов, новых языков и дрочева с шаблонной магией. И это круто.
bootcamp_dropout # 0 ⇈
bormand # 0 ⇈
Да не сказать, что прям редко...
В конце-концов DSL'и и генераторы кода часто пишут под любой язык, метушню в крестах развивают, языки в духе D придумывают. Т.е. желание пометушить на практике встречается довольно часто.
PolinaAksenova # 0 ⇈
А почему няльзя скомпилировать регулярки один раз, при запуске приложения? В питоне для этого есть re.compile(), няпример.
bormand # 0 ⇈
Потому что при этом придётся задублировать большой кусок оптимизатора, который уже есть в конпеляторе, да ещё и затащить его в рантайм?
Ну т.е. я могу сделать это с помощью llvm, к примеру. Но в какой-нибудь контроллер это уже не засунуть. Да и запускаться будет долго.
В итоге такие задачки обычно решаются тупо внешним генератором, хоть это и неудобно.
MAKAKA # 0 ⇈
Так есть же генераторы лексеров.
Регулярка -> [неважночто] --> бинарь
MAKAKA # 0 ⇈
В "языке" они есть разве что в Perl, Ruby и JavaScript.
В остальных они есть в библиотеке, и не всегда в стандартной (в сишке нет)
PolinaAksenova # 0 ⇈
MAKAKA # 0 ⇈
Но может я и зря доебался. Тогда мой коммент можно удалить вплоть до первой скобки
PolinaAksenova # 0 ⇈
> в т.ч. синтаксис добавлять/менять, в т.ч. domain-specific оптимизации для определенных типов, которые можно было бы разрешать для определенных участков кода
Взаимоисключающие параграфы. Рядовой Говнокодер в такой хардкорной метушне уж точня ня разберётся, то есть самостоятельня расширять Универсальный Язык он ня сможет. Следовательня, рядовому Говнокодеру придётся использовать какие-то сторонние либы для Универсального Языка, в котором что будет? Правильня, куча няканутых неочевидных правил о всякой някне. Ergo, рядовому Говнокодеру такой язык будет совершенно ня нужен.
j123123 # 0 ⇈
Так пусть и не расширяет.
> Следовательня, рядовому Говнокодеру придётся использовать какие-то сторонние либы для Универсального Языка, в котором что будет? Правильня, куча няканутых неочевидных правил о всякой някне.
Пусть выбирает сторонние либы без кучи "няканутых неочевидных правил о всякой някне". Или пусть пишет без либ. Свобода.
А тому, кто достаточно хорошо разбирается и имеет нужные скилы чтоб писать всякую метушню, будет явно проще делать это на языке, который под это хорошо приспособлен, чем делать это на сраной смеси препроцессора, шаблонов и констэкспров с кодогенерацией в придачу
PolinaAksenova # 0 ⇈
А почему ты считаешь, что они вообще будут?
> А тому, кто достаточно хорошо разбирается и имеет нужные скилы чтоб писать всякую метушню, будет явно проще делать это на языке, который под это хорошо приспособлен, чем делать это на сраной смеси препроцессора, шаблонов и констэкспров с кодогенерацией в придачу
Ну то есть этот Универсальный Язык будет точня таким же элитарным узкоспециализированным инструментом для кучки гиков, как, няпример, Хаскелль — при условии, что хотя бы кучка гиков няйдётся. Ну ладня, не самая плохая ниша.
Desktop # 0 ⇈
j123123 # 0 ⇈
Надо чтоб без обязательного GC в рантайме
bormand # 0 ⇈
А что мешает на лиспе сделать свой конпелируемый DSL, в котором нет GC в рантайме? А GC в компайлайме это ведь наоборот круто и удобно.
j123123 # 0 ⇈
А зачем тогда сам LISP? Ну т.е. я понимаю, если бы у меня был некий компилятор некоего легко расширяемого языка с гомоиконами и без обязательного GC, и этот язык я расширил некими регекспами. Но если я пишу свой компилятор, зачем мне именно LISP? Рантайм лиспа использоваться в итоговой скомпилированной программе не будет.
bormand # 0 ⇈
Потому что он уже есть. Сделаешь себе на нём легко расширяемый конпелируемый язык с гомоиконным s-exp синтаксисом. И можно будет расширять этот язык как на лиспе так и на нём самом.
j123123 # 0 ⇈
Зачем именно LISP? Почему не Python например? Почему не Си? Ведь совершенно очевидно, что компилятор этого суперохуенного ЯП должен быть написан сам на себе, так что надо чтоб раскрутка компилятора (бутстрапинг), т.е. на некоем языке (A) реализуем интерпретатор сабсета соотв. языка (B_subs), им запускаем(интерпретируем) код более полноценного компилятора, написанного на этом сабсете, но который уже реализует язык полностью (B) и потом компилятор сам себя должен собрать. И какой профит мне тут даст использование LISP-а в качестве языка для реализации интерпретатора подмножества окончательного языка?
PolinaAksenova # 0 ⇈
Потому что из перечисленных языков только LISP — по-нястоящему гомоиконен?
> Ведь совершенно очевидно, что компилятор этого суперняшного ЯП должен быть написан сам на себе
Зачем? Какой профит от раскрутки есть в современном мире, кроме как демонстрация "смарите, как могу"?
j123123 # 0 ⇈
Если компилятор сам на себе написан, это значит что автоматически есть очень большая и сложная программа, написанная на этом языке, компилируя которую можно проверять всякие баги в самом же компиляторе. Когда программ на новом языке еще относительно мало, компилятор языка на нем же и написанный отлично выполняет тестирующую функцию для самого же себя.
Ну и еще самодостаточность. Не требуется держать никаких интерпретаторов и/или компиляторов лиспа или какого-то иного языка, чтобы этот компилятор запустить
PolinaAksenova # 0 ⇈
В тёмные времена, когда автотесты ещё ня изобрели, это, возможня и имело знячение. Но сейчас такой подход — довольня бессмысленное занятие, поскольку качество отлова багов таким способом ниже плинтуса. Даже баняльные юнит-тесты справятся лучше.
> Ну и еще самодостаточность
А это и есть "смарите, как могу". Чистое упражнение для ума, ня более.
j123123 # 0 ⇈
Автотесты и юнит-тесты надо специально писать, а тут автоматически будет достаточно сложная и большая программа, на которой можно что-то тестить.
> А это и есть "смарите, как могу". Чистое упражнение для ума, ня более.
На самом деле - нет. Взять например SBCL - перенос его на другую платформу - задача далеко не тривиальная. https://www.youtube.com/watch?v=h4OPD4v9YY8 например
Если компилятор языка будет написан на другом языке, и если надо чтоб компилятор языка запускался на другой архитектуре и компилил код под нее, надо не просто написать в самом компиляторе поддержку компиляции под эту вот архитектуру, надо еще и этот другой язык (на котором компилятор написан) научить компилировать под эту другую архитектуру, и это было б нахуй не нужно делать, если бы компилятор языка сам на себе был написан. Если б компилятор языка X был на X же и написан, достаточно было бы добавить поддержку архитектуры X в сам компилятор, и кросскомпильнуть его в ту архитектуру им же!
PolinaAksenova # 0 ⇈
В том-то и дело, что "протестировать" таким способом ты можешь максимум то, что компилятор ня падает. А вот если в нём завёлся баг, который просто искажает генярируемый код — ты можешь получить целую серию някорректных версий компиляторов, и потом будешь судорожно искать, ня какую версию нядо откатываться, чтобы получить корректный компилятор.
> на другой архитектуре и компилил код под нее
С другой стороны, компилятор ня сишке будет работать где угодня, и для добавления поддержки компиляции в новую платформу действительня достаточня добавить правила генерации её нативного кода.
j123123 # 0 ⇈
git-bisect
j123123 # 0 ⇈
Тут есть один интересный ньюанс. Сейчас поясню.
Вот берем мы бинарь компилятора версии 0.1 (в котором бага нет), и им компилируем из сорцов компилятор версии 0.2 (в котором бага есть) - получаем "0.1->0.2". Потом бинарем компилятора "0.1->0.2" компилируем опять компилятор 0.2. Получаем "0.1->0.2->0.2". Потом этим же бинарем компилируем опять компилятор 0.2. Получаем "0.1->0.2->0.2->0.2". А потом тупо сравниваем "0.1->0.2->0.2" и "0.1->0.2->0.2->0.2" - они должны быть одинаковы. Если они не одинаковы, это очевидно баг.
https://en.wikipedia.org/wiki/Bootstrapping_(compilers)#Process
bormand # 0 ⇈
А если они одинаково забагованы? 🙂
j123123 # 0 ⇈
Т.е. если внесенный баг из категории "misscompilation" не срабатывает на кодовой базе самого компилятора? Ну тогда ждем появления такого кода, где этот баг реально проявится, и тогда находим бисекцией тот коммит, начиная с которого этот баг начал проявлять себя. И добавляем такой код в набор тестов. В GCC это именно так делают.
bormand # 0 ⇈
Почему не срабатывает? Может это такой fixed point, хуёвый конпелятор порождающий другой хуёвый конпелятор с багом в том же месте. Просто баг не настолько фатальный, чтобы совсем всё распидорасить.
А с "0.1->0.2" ты сравнить не можешь т.к. у 0.1 кодовая база другая, выхлоп может быть совсем другим.
j123123 # 0 ⇈
Тогда хуевым компилятором можно собрать чуть более древний компилятор, а потом получившимся собрать опять древний. Т.е. "0.2->0.1->0.1". И сравнить его с "0.1->0.1" и/или "0.1->0.1->0.1". Они должны быть одинаковыми.
bormand # 0 ⇈
Но у древнего конпелятора другие исходники, которые могут не триггерить багу из 0.2?
Короче х.з., сомнительная проверка какая-то.
j123123 # 0 ⇈
И что? Если так подумать, бага может вообще не триггериться ни на какой версии исходников компилятора.
А вообще, как должно (не) повезти, чтобы возник такой баг компилятора, который бы реально проявлялся при компилировании самого себя, сам себя не меняет при перекомпилировании компилятора самим собой и устойчиво сохраняется? И при этом не ломал бы компиляцию старых версий компилятора при сравнении "0.2->0.1->0.1" и "0.1->0.1->0.1"?
> Короче х.з., сомнительная проверка какая-то.
Не более сомнительная, чем какие-нибудь юнит-тесты, которые проверяют только какие-то частные случаи. Это вполне успешно практикуется в том же GCC и Clang/LLVM
PolinaAksenova # 0 ⇈
Помимо модульных тестов, существуют ещё интеграционные, функционяльные, системные, e2e и прочая, и прочая.
Такая "проверка раскруткой", кстати, ни что иное как частный случай интеграционного тестирования.
j123123 # 0 ⇈
PolinaAksenova # 0 ⇈
Пользователям языка от этого ни жарко, ни холодня.
> Показать преимущества этого языка для написания компиляторов
Возможня, но, опять же, вряд ли авторы компиляторов будут составлять существенную часть пользователей языка. Хотя, конячно, если язык ориентирован ня создание компиляторов — тогда да, это работает.
> формально доказывать корректность каких-то там оптимзиаций
Доказывать инструментом корректность самого инструмента — бессмысленное действие.
j123123 # 0 ⇈
Я так не думаю. Метаматематики с тобой бы не согласились.
bormand # 0 ⇈
Не совсем. Доказывать что-то про текущую версию инструмента им же самим, конечно, бессмысленно. Но доказательство корректности текущей версии при помощи предыдущей имеет смысл. Тем самым мы получаем импликацию: если прошлая версия была заебись, значит и эта тоже. Мы не внесли каких-то новых проблем.
gologub # 0 ⇈
bormand # 0 ⇈
Ну откатишься на неё, пофиксишь багу и перепруфаешь все остальные по цепочке...
gologub # 0 ⇈
но ведь её надо сначала задетектить поломав такую красивую круговую поруку
MAKAKA # 0 ⇈
какая индукция ))
bormand # 0 ⇈
Ну да. Осталась тривиальная задача -- доказать начало цепочки. Но... нечем.
Тлен и безысходность.
bormand # 0 ⇈
Если я всё правильно понимаю, в Coq это примерно так и работает.
Когда ты вводишь новую теорему, у тебя появляется новая вселенная, в которой она верна. Но пруфнуть эту теорему ты должен в старой. И никак не няооборот.
Иначе ты напишешь, что теорема верна потому что она верна. А это очевидно хуй-ня.
j123123 # 0 ⇈
Это тогда аксиома.
bormand # 0 ⇈
Не совсем. Аксиома -- это скорее такой аргумент с невидимым пруфом, который нам передали извне. Поэтому всё, что мы с её использованием надоказываем, окажется зависимым от истинности этого аргумента. Т.е. это опять всего лишь импликация, а не истина на ровном месте.
j123123 # 0 ⇈
So then Mike did the virtual machine in C and I did the compiler in Prolog. Then the compiler compiled itself and produced byte-code and you put it in the machine and then we changed the grammar and the syntax and compiled the compiler in itself and came out with an image that would bootstrap and then we’re flying. We’ve lost our Prolog roots and we’re now a language.
перевод:
И тогда Майк сделал виртуальную машину на C, а я написал компилятор на Прологе. Затем компилятор скомпилировал самого себя и получился байт-код, который мы запустили в машину, а затем мы изменили грамматику и синтаксис и снова скомпилировали компилятор самим собой, и получился образ, который бутстрапился, короче мы взлетели. Забыли свои прологовские корни и сделали новый язык.
Desktop # 0 ⇈
MAKAKA # 0 ⇈
Desktop # 0 ⇈
то-то сайтец подлагивает
npopa6 # 0 ⇈
cKpuna4 # 0 ⇈
npopa6 # 0 ⇈
guest # 0 ⇈
За сколько *x от твоей ЗП готов?
DypHuu_niBEHb # 0 ⇈
https://www.levels.fyi/company/Google/salaries/Software-Engineer/L6/
но тут надо конечно налоги считать и стоимость жилья
CHayT # 0 ⇈
Иноземные няшки воздвигают дома
Наркоманы, пыхорасы, джависты и менты
Сюда стекается дерьмо со всей огромной страны
И в клоаке этой жить соглашусь хрена с два
Я ненавижу этот грёбаный город Москва
Desktop # 0 ⇈
bormand # 0 ⇈
А в нерезиновке можно жить только на съёмной хате около работы, по ощущениям.
bormand # 0 ⇈
С другой стороны, в москве можно стать няшкой. Так что плюсы таки есть, да.
Desktop # 0 ⇈
PolinaAksenova # 0 ⇈
Запрос за O(1), обнявление за O(1).
DypHuu_niBEHb # 0 ⇈
bormand # 0 ⇈
[email protected] # 0 ⇈
bormand # 0 ⇈
DypHuu_niBEHb # 0 ⇈
bormand # 0 ⇈
Desktop # 0 ⇈
bormand # 0 ⇈
Конкуренция за строки должна быть небольшой, юзеры всё-таки не синхронно книгу читают.
Desktop # 0 ⇈
bormand # 0 ⇈
Desktop # 0 ⇈
DypHuu_niBEHb # 0 ⇈
Desktop # 0 ⇈
DypHuu_niBEHb # 0 ⇈
Desktop # 0 ⇈
DypHuu_niBEHb # 0 ⇈
а если книга одна и в ней тысяча страниц и тысяча пользователей, то вообще заебись же
файлик можно ммапнуть на память вероятно, и потечь
ну правда его наверное нужно фсинкать на случай дизастера
Desktop # 0 ⇈
DypHuu_niBEHb # 0 ⇈
Но если у нас одна книга, то нам нужно просто сериализовать массив интов (и тут его логично ммапнуть)
А вот если несколько, то да
bormand # 0 ⇈
И получить пиздец с консистентностью "базы" потом, если она в одну страничку не влезает...
Либо только в памяти, либо нормальную базу брать, имхо. Пилить что-то среднее будет дорого, долго и велосипедно.
DypHuu_niBEHb # 0 ⇈
Если же ты боишься дизазстера, то вообще всю архитектуру нужно переделывать, иначе можно проебать факт чтения кем-то страницы
>Либо в памяти
ну тогда сбрасывать в файл переодически
bormand # 0 ⇈
А как можно его не бояться? Ты на 100% уверен, что твоя прога не крашнется, диск не посыпется и ось в ребут не уйдёт?
DypHuu_niBEHb # 0 ⇈
ну например можно писать не продакшен-реди код)
>Ты на 100% уверен
разумеется, нет) Но база только лишь сможет гарантировать тебе консистентность, а факт чтения страницы ты всё равно проибешь
bormand # 0 ⇈
А нахуя тогда mmap? Десяток-другой тысяч книг в оперативку вполне влезут. При остановке сервера скинешь их на диск да и всё.
DypHuu_niBEHb # 0 ⇈
чтобы автоматом записать массив на диск, удобно, ну)
bormand # 0 ⇈
Desktop # 0 ⇈
bormand # 0 ⇈
Desktop # 0 ⇈
bormand # 0 ⇈
Desktop # 0 ⇈
bormand # 0 ⇈
Desktop # 0 ⇈
bormand # 0 ⇈
За счёт того, что это гринтреды, которые переключаются в юзермоде. Но при этом в эрланге всё иммутабельное, так что они друг другу ничего поднасрать не могут и ты можешь считать их процессами.
Desktop # 0 ⇈
bormand # 0 ⇈
gologub # 0 ⇈
DypHuu_niBEHb # 0 ⇈
да?
bormand # 0 ⇈
А вот я не помню, умеет ли BEAM в SMP. Вполне возможно, что ты должен юзать горизонтальное масштабирование и поднять 32 ноды на такой тачке, раскидав свои 100500 процессов по ним.
Ждём экспертный ответ от Снаута.
DypHuu_niBEHb # 0 ⇈
CHayT # 0 ⇈
DypHuu_niBEHb # 0 ⇈
Пусть она хранит информацию во флеше, например
А к ней поступает команда INC [cellname], и она атомарна команда эта.
У железки своя батарейка и свой процесарь, и она даже в случае краха компа всё равно команду выполнит
bormand # 0 ⇈
Эта железка называется ЭКЛЗ.
CHayT # 0 ⇈
Табличку можно сделать public и срать в неё откуда угодно как в глобалку. Какая функциональщина )))
bormand # 0 ⇈
Тогда масштабироваться хуже будет? А так я могу книги по нодам раскидать и нагрузка размажется по ним.
CHayT # 0 ⇈
bormand # 0 ⇈
Не проебу! Я просто не покажу юзеру следующую пока коммит о текущей не пройдёт.
DypHuu_niBEHb # 0 ⇈
то есть листание книги у тебя будет в той же транзакции?
bormand # 0 ⇈
А как ещё гарантировать "непроёб страницы" (не то чтобы это было важно)?
DypHuu_niBEHb # 0 ⇈
У факта GUID
ОС подымается, читатель говорит: Я прочел страницу 8, во GUID
ты проверяешь, что ты этот GUID уже обработал, и ничего не делаешь
А иначе увеличиваешь нужную ячейку
DypHuu_niBEHb # 0 ⇈
https://perldoc.perl.org/Tie::File
все скаляры хранит как строки (даже если это числа) и пустые места сжимать не умееет
[email protected] # 0 ⇈
Desktop # 0 ⇈
PolinaAksenova # 0 ⇈
guest # 0 ⇈
Полина реально показала только что зачем программисту матан и вышка
Оказывается, это не легенды
Desktop # 0 ⇈
но я б конечно долго думал над элегантным решением. то ли туп, то ли mvc мозги разъел
bormand # 0 ⇈
Полина первая успела (
PolinaAksenova # 0 ⇈
DypHuu_niBEHb # 0 ⇈
PolinaAksenova # 0 ⇈
Но это всё равно currentPage лишних итераций, плюс някладные расходы ня дерево (оно сильно ня дешёвое). Проще прямо тут заменить мапу на МАССИВ без частных сумм — асимптотика ня изменится, реальняя производительность повысится.
DypHuu_niBEHb # 0 ⇈
Просто он умудрился даже дерево через жопу обойти)
зы: А вообще прикольная задача на мидловое собеседование.
Desktop # 0 ⇈
DypHuu_niBEHb # 0 ⇈
bormand # 0 ⇈
DypHuu_niBEHb # 0 ⇈
Desktop # 0 ⇈
CHayT # 0 ⇈
DypHuu_niBEHb # 0 ⇈
bormand # 0 ⇈
Desktop # 0 ⇈
JloJle4Ka # 0 ⇈
Desktop # 0 ⇈
JloJle4Ka # 0 ⇈
В каком формате? Что за книга? Сколько в ней страниц?
> которую одновременно читает неограниченное количество читателей
То есть, читателей может быть и отрицательное количество? А может быть больше, чем население земли?
> Нужно сделать так
Кому нужно? Мне вот не нужно.
> чтобы заданный читатель в любой момент мог проверить, какая доля пользователей прочитала меньшую часть книги, чем он
Я всегда говорил, что книги – это способ самоутверждения для быдла. Вот они уже соревнуются, кто больше книг прочитал.
> Предложено наивное решение хранить в map<int,int>
Кем предложено? Вот пусть тот, кто предлагал, и пердолится.
> то в цикле нужно будет сделать 1000 итераций
Подключи тарифный план помощнее в AWS, в чём проблема?
DypHuu_niBEHb # 0
https://habr.com/ru/sandbox/151066/
Одна из таких мелочей и удобств является составление или подготовка выражения SQL для дальнейшей отправки на выполнения данного выражения в качестве запроса (почти в каждом любом моем проекте такое встречается)
Смотрите. Существует достаточно простое действия сложения строк - конкатенация. Например
Поэтому было решено использовать метод, который был давно реализов в Си через println
Чтобы узнать как с помощью функции ``printf`` реализовать функцию ``printf`` нажмите по ссылке
https://habr.com/ru/sandbox/151066/
Отдельный лайк автору за использование ООП
https://github.com/c-e-dev/StringFormatting/blob/main/include/StringFormatting.h
bormand # 0 ⇈
DypHuu_niBEHb # 0 ⇈
там сначала считается сколько нужно места (vsnprintf получает указатель на NULL), а потом создается вектор чаров, и снова вызывается vsnprintf уже с ним
bormand # 0 ⇈
DypHuu_niBEHb # 0 ⇈
bormand # 0 ⇈
Desktop # 0 ⇈
В чем разница между C и C++?
Разработал Деннис Ричи в 1969г. в Лабаратории Белла.
vs
Разработал Бьярне Страуструп в 1979г.
------------
32 ключевых слова
vs
52 ключевых слова
------------
Используются scanf() и printf().
vs
Используются cout и cin.
Орфография сохранена.
bormand # 0 ⇈
Desktop # 0 ⇈
DypHuu_niBEHb # 0 ⇈
Desktop # 0 ⇈
bormand # 0 ⇈
Desktop # 0 ⇈
bormand # 0 ⇈
Ну можно и так, кстати. Каждой возможной программе присвоить номер и настучать нужное количество.
Desktop # 0 ⇈
DypHuu_niBEHb # 0 ⇈
-------
Поскольку C не поддерживает инкапсуляцию, то данные могут редактироваться внешним кодом.
В случае с C++ инкапсуляция скрывает данные, чтобы гарантировать, что структуры данных и операторы используются по назначению.
-------
лол, про опак поинтеры не слышали
или вот
-------
Особенности
Не поддерживает перегрузку функций и операторов.
-------
ну и конечно: ПАМЯТЬ
> Для этих же операций используются операторы new и delete.
-
Спасибо, хабрик
Теперь я знаю ключевые отличия си от си плюс плюс
DypHuu_niBEHb # 0
заголовок и правда про HTML
Desktop # 0 ⇈
DypHuu_niBEHb # 0 ⇈
и код как из учебника по JS за 2005-й год
Desktop # 0 ⇈
DypHuu_niBEHb # 0
https://habr.com/en/sandbox/145190/
Desktop # 0 ⇈
bormand # 0 ⇈
Desktop # 0 ⇈
Или ты про ГК?
guest # 0
DypHuu_niBEHb # 0 ⇈
guest # 0
Завязались на ``whereis``, и соснули на alpine. Нет glibc -- нет и gnu coreutils
Взяли сначала ``type``, а после и вовсе ``command -v``.
gologub # 0 ⇈
npopa6 # 0 ⇈
PolinaAksenova # 0
A tempwate pawametew pack iws a tempwate pawametew thawt accepts zewo ow mowe tempwate awguments (non-types, types, ow tempwates). A function pawametew pack iws a function pawametew thawt accepts zewo ow mowe function awguments.
a tempwate with at weast owne pawametew pack iws cawwed a vawiadic tempwate.
bormand # 0 ⇈
npopa6 # 0 ⇈
YpaHeLI_ # 0
По-моему неплохо, этим механизмом они шарятся в оперативке, но ведь dll нужна для хранения кода, а не данных.
bormand # 0 ⇈
Там можно делать dll'ки чисто с ресурсами, вообще без кода... В принципе, этот механизм имеет смысл, чтобы не городить новый контейнер для ресурсов.
gologub # 0 ⇈
с чего бы вдруг такое утверждение?
когда-то давно можно было даже объявить глобальную беременую и её экпортировать (емнип с некоторым количеством ротоебства) для взаимодействия между задачами
bormand # 0 ⇈
gologub # 0 ⇈
bormand # 0 ⇈
gologub # 0 ⇈
вручную-то это элементарно сделать
но перепоручить работу всегда приятно
bormand # 0 ⇈
gologub # 0 ⇈
раз Чен ругает, значит оно точно работает
https://devblogs.microsoft.com/oldnewthing/20040804-00/?p=38253
DypHuu_niBEHb # 0 ⇈
https://docs.microsoft.com/en-us/windows/win32/memory/creating-named-shared-memory
YpaHeLI_ # 0 ⇈
Ну потому что она динамически линкуемая библиотека, как следует из названия, а линковка - это связывание символов программы в один файл.
Символ ведь не ресурс.
PolinaAksenova # 0 ⇈
guest # 0 ⇈
[email protected] # 0 ⇈
guest # 0 ⇈
Это на предложение погулять сходить?
bormand # 0 ⇈
bormand # 0 ⇈
DypHuu_niBEHb # 0 ⇈
там в либу имопртится "MSCoree.dll" вроде, и дальше точка входа.
Правда что будет после проппуска через ngen.exe я не знаю, а проверять лень
npopa6 # 0 ⇈
Оставшаяся часть секции .text — чистые данные. Похожая структура была у экзешников, скомпилированных Вижуал Бейсиком: там единственная инструкция грузила VBRUN, а библиотека VBRUN уже исполняла байткод.
Если пропустить через ngen, будет не лучше: появится файл с расширением .ni.exe, который вообще не содержит точки входа (поскольку он запрятан в скрытую директорию assembly, рядовой пользователь его вряд ли попытается запустить). У .ni.exe секция .text состоит из фрагментов нативного кода, оформленных как функции, перемежающихся данными (описаниями объектов, как в исходном, ненативном дотнетовском экзешнике). Т. е. фактически «нативный образ» — это не экзешник, а библиотека, дополненная метаданными.
DypHuu_niBEHb # 0 ⇈
Зато в .net у нас обычный EXEшник, который можно запускать, и все PE заголовки у него есть.
https://i.postimg.cc/bvmJwXym/image.png
Вот с джавкой из коробки не так
Прыщи умеют от так
https://www.kernel.org/doc/html/latest/admin-guide/java.html
а винда нет
bormand # 0 ⇈
Да в прыщах можно вообще шабангом запустить без всяких трюков с ядром... У zip'а же хедер в конце.
DypHuu_niBEHb # 0 ⇈
bormand # 0 ⇈
DypHuu_niBEHb # 0 ⇈
bormand # 0 ⇈
Я думаю да, а в чём проблема? Если стандартную либу в сам джар загнать, может быть даже получится упихать всю jvm в один файл...
npopa6 # 0 ⇈
Так вот существуют уже готовые решения вроде jar2exe, которые компонуют jar с PE, который ищет JVM и запускает её.
MAKAKA # 0 ⇈
а бывает даже так
https://twitter.com/David3141593/status/1057042085029822464
npopa6 # 0 ⇈
Получилось не с первого раза. Твиттор настойчиво предлагал скачать webp, а он без архива. Когда я явно указал jpg в ссылке, всё получилось.
Я знаю, что Твиттер, Инстаграм и некоторые соцсети чистят вилкой все «лишние» заголовки вроде EXIF, XMP, а также удаляют мусор из конца, так что лурковские рарджпеги не работают. Тут автор, видимо, встроил zip в основной поток данных картинки. Если запросить оригинал без ресайза (удалить параметр name из твитторского URL), то zip сохраняется неповреждённым, и архиватор его находит даже посреди картинки.
MAKAKA # 0 ⇈
npopa6 # 0 ⇈
Появилась идея: в mpg- и mp3-файлах очень много неиспользуемого пространства. Поток MPEG состоит из блоков, выровненных до определённого размера (вероятно, это нужно для возможности быстрой перемотки). Поскольку степень зожатия непредсказуема (она зависит от зожимаемых данных), в разных блоках разное количество реально используемого места, а остаток добивается нулями.
Так вот в эти паддинги можно поместить заголовки зип-файла, в которых хранить части многотомного архива.
npopa6 # 0 ⇈
С адским quality=1 рожа Шекспира превратилась в картинку 8×8 пикселей (как обычно на телевидении скрывают лица). Размер файла уменьшился с 1986 КБ до 1984 КБ (т. е. совсем незаметно), архив сохранился.
npopa6 # 0 ⇈
guest # 0 ⇈
https://www.youtube.com/watch?v=D1jObjIhQ7U
?
npopa6 # 0 ⇈
gologub # 0 ⇈
да и собственно в итоговом результате получилось 2 COFF секции, так что эта линьковка определенно закончилась частичным успехом как выражается Роскосый
booratihno # 0 ⇈
>dll нужна для хранения кода, а не данных.
а где же хранится
static int foo[1024]{1,2,3,4,..
?
YpaHeLI_ # 0 ⇈
bormand # 0 ⇈
Да ещё и с какой-никакой локализацией, динамической подкачкой и даже подписью.
Плюс многие из этих дллок сами юзают свои ресурсы, а не просто хранят.
nuTepcKuu_nemyx # 0 ⇈
Desktop # 0 ⇈
nuTepcKuu_nemyx # 0 ⇈
Desktop # 0 ⇈
потому и спрашиваю
nuTepcKuu_nemyx # 0 ⇈
Desktop # 0 ⇈
nuTepcKuu_nemyx # 0 ⇈
Desktop # 0 ⇈
ок, спасибо
gologub # 0 ⇈
Desktop # 0 ⇈
залип
но уже отлип
PolinaAksenova # 0
> Рецепты счастья: как поддерживать корпоративный дух в непростое время
> Что делать, чтобы все было хорошо?
> Как показала практика, отлично работает взаимодействие сотрудников друг с другом через соцсети, общие группы мессенджеров.
> Вот несколько советов о том, как это может и должно работать. Основная задача по объединению сотрудников в единое целое лежит на лидере команды, поэтому и советы даны именно для него:
> Несколько раз в неделю необходимо организовывать созвон с каждым сотрудником (для маленьких учреждений) или с подгруппами, выполняющими часть задачи.
А у вас есть КОРПОРАТИВНЫЙ ДУХ?
bormand # 0 ⇈
Которого дрючат корпоративные дембели?
Desktop # 0 ⇈
JloJle4Ka # 0 ⇈
nuTepcKuu_nemyx # 0 ⇈
nuTepcKuu_nemyx # 0 ⇈
bormand # 0 ⇈
Чтобы показывать всем, какая же охуенная семья. А потом пиздиться на кухне и разбегаться по углам.
DypHuu_niBEHb # 0 ⇈
bormand # 0 ⇈
guest # 0 ⇈
DypHuu_niBEHb # 0 ⇈
Вот тут ему пол годика, вот тут он голенький на горшке сидит
guest # 0 ⇈
Desktop # 0 ⇈
Desktop # 0 ⇈
или ты про детей?
DypHuu_niBEHb # 0 ⇈
gologub # 0 ⇈
если не посрать, а растрясти, то по идее должно продолжиться извлечение полезных веществ
Desktop # 0 ⇈
Desktop # 0 ⇈
CHayT # 0 ⇈
Desktop # 0 ⇈
DypHuu_niBEHb # 0 ⇈
Пиво пить они практически не ходят, к сожалению
gologub # 0 ⇈
DypHuu_niBEHb # 0 ⇈
gologub # 0 ⇈
https://foreignpolicy.com/wp-content/uploads/2018/12/GettyImages-668015204.jpg
Desktop # 0 ⇈
Desktop # 0 ⇈
и на велосипеде, потому что электросамокаты закэнселили?
сука, как они меня бесят, ажтрисёт!!!11
DypHuu_niBEHb # 0 ⇈
Коллеги обычно обсуждают какую-то малоинтересную фигню, и делают какие-то малоинтересные мне вещи.
DypHuu_niBEHb # 0 ⇈
ПОШЛИ НАХУЙ!1111
извините
вырвалось
guest # 0 ⇈
Desktop # 0 ⇈
DypHuu_niBEHb # 0 ⇈
121 — Код ГИБДД-ГАИ Чувашской республики.
Школа № 121 (Челябинск).
Школа № 121 (Одесса).
Mazda 121 — японский легковой автомобиль.
Дискавери STS-121 — космический полёт MTKK «Дискавери» по программе «Спэйс Шаттл».
Спецназ: штурмовая бригада 121 (Combat Task Force 121) — компьютерная игра фирмы Direct Action Games.
121 статья — статья УК РСФСР 1960 года, преследующая гомосексуальность; в нынешней редакции УК — «Заражение венерической болезнью».
------
что именно ты имел ввиду?
Desktop # 0 ⇈
DypHuu_niBEHb # 0 ⇈
bormand # 0 ⇈
Desktop # 0 ⇈
Desktop # 0 ⇈
- ТОРТомобиль
bormand # 0 ⇈
Хм, умышленное надеюсь, если заранее знал и где-нибудь на учёте состоял? Или даже случайное?
DypHuu_niBEHb # 0 ⇈
А почему ты спрашиваешь? Есть повод волноваться?
bormand # 0 ⇈
DypHuu_niBEHb # 0 ⇈
Desktop # 0 ⇈
DypHuu_niBEHb # 0 ⇈
Савонарола? Или хотя бы Саванарыло?
Нет! Просто старая глупая гувернантка, та самая, которая никогда не выходила на улицу, потому что там можно встретить мужчин. А мужчины — это неприлично.
— Что ж тут неприличного? — говорили ей. — Ведь они ходят одетые.
— А под одеждой они все-таки голые! — отвечала гувернантка. — Нет, вы меня не собьете!
Desktop # 0 ⇈
– Как я тебя изнасилую, если я во дворе, а ты на седьмом этаже?
– А я к Вам спущусь...
bormand # 0 ⇈
Заразиться и сесть. У меня же +10 к удаче.
Desktop # 0 ⇈
MAKAKA # 0 ⇈
Steve_Brown # 0 ⇈
- Вот ни с кем и не работайтеебитесь.
Desktop # 0 ⇈
Desktop # 0 ⇈
gologub # 0 ⇈
JloJle4Ka # 0
Лично мое мнение — рынок формирует спрос на разные специальности, в том числе и на специалистов 1С. А как они будут называться — это не важно.
guest # 0
JloJle4Ka # 0 ⇈
bormand # 0 ⇈
Desktop # 0 ⇈
- hormand, ты?
JloJle4Ka # 0 ⇈
Вообще-то, всё что угодно либо уже было в Симпсонах, либо высказывалось древними философами, либо и то, и другое.
DypHuu_niBEHb # 0 ⇈
guest # 0 ⇈
bootcamp_dropout # 0 ⇈
CHayT # 0 ⇈
bootcamp_dropout # 0 ⇈
Desktop # 0 ⇈
bormand # 0 ⇈
Desktop # 0 ⇈
bormand # 0 ⇈
Desktop # 0 ⇈
- это ты щас к дефекейту собес проходишь?
guest # 0 ⇈
gologub # 0 ⇈
PolinaAksenova # 0 ⇈
DypHuu_niBEHb # 0 ⇈
Вуз учит учиться а не программировать. Программировать или управлять теми кто программирует выбирает уже сам человек.
Sergey Ivanov
Был бы ютуб в 97г....
Только скудная информация и книги.
Dmitry Semenikhin
ну да. html программированию в вузах не учат
--------
Серебряное место:
Mikhail Personazh
ВУЗ молодец дал основу понимания как оно работает, но больше всего мне помогла дипломная работа, которая помогла понять ООП, потому что требованием в месте прохождения дипломной практики был язык Jav
Платиновое место:
Danon DanON replied to Mikhail
Михаил, информатики у нас ваще не было
Desktop # 0 ⇈
- то superhackkiller1997 никогда бы не появился на свет, потому что его родители вместо поступательных движений залипали бы на котиков
DypHuu_niBEHb # 0 ⇈
Desktop # 0 ⇈
и некому было бы копипастить нам новости с брейтбарта
gologub # 0 ⇈
но сегодня удивительно напоминают соловьиный помёт
самое интересное - как в Америке борются с Lua
https://www.youtube.com/watch?v=j-Fqab_r7Kg
смотрите, пока угнетенные вонь не подняли и клип не удалили
DypHuu_niBEHb # 0
nepeKamHblu_nemyx # 0
https://govnokod.ru/27466
https://govnokod.xyz/_27466/
MAKAKA # 0
https://thepostmillennial.com/watch-cnns-ana-navarro-defends-the-return-of-workplace-masturbator-toobin-he-was-sexually-harassing-himself/
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0
OqpqpTOnHblu_nemyx # 0