« first day (521 days earlier)      last day (2789 days later) » 

avp
12:01 AM
@strangeqargo ага, и у нас (в АСУХИМПЛАСТ, где я начинал после института) в начале 80-х тоже была своя самописная СУБД
 
 
4 hours later…
4:17 AM
0
Q: Метки «Jade» и «Pug»

Саша ЧерныхПрепроцессор HTML jade теперь называется Pug. В связи с этим предлагаю сделать метку pug основной, jade её синонимом. Есть другой JADE — Java Agent DEvelopment framework — но по нему вопросов я не нашёл, поэтому полагаю, что занимать метку jade для вопросов, которые неизвестно, будут ли ещё на с...

 
 
1 hour later…
5:21 AM
когда уже в джаву добавят именованные импорты ><
 
 
2 hours later…
7:13 AM
@DmitryKozlov то есть делается две разные разметки и они друг друга заменяют, срываясь и наоборот появляясь? Я блин пару часов назад об этом спрашивал и мне сказали что нужно стили переопределять.. Да ЭТО ЖЕ ВЫ И БЫЛИ!) Так как нужно делать? — Ivan Petrov Aug 22 at 16:48
> минусуют убогие задроты которые даже не понимают о чем вопрос и именно это их задевает до такой степени, что у них начинается желочный позыв, который возможно только в виде минуса выразить. Да? Подрочите! – Ivan Petrov 11 часов назад
что-то пользователь, не очень адекватен
 
@Grundy а это где? где мне поставить минус и пойти подр**ить?
3
 
@АлексейШиманский он удалил вопрос:)
тут выше есть ссылка на него:)
 
@Grundy жаль) придется сегодня без самоудовлетворения)
@Grundy хотя флагнуть оказывается можно и удаленные комменты в удаленном вопросе)
> Идет третий вечер моего погружения в rxjs и честно признаюсь я не могу найти ответы даже на самые просты вопросы. А те ответы что я нахожу, мне кажется что они в корне не правильны
 
@АлексейШиманский да?:)
 
Как он определил что неверны на третий день погружения? О_о
 
7:24 AM
@АлексейШиманский ну если не совпадает с его мнением очевидно неправильные:)
 
@Grundy ему стоило бы просто написать свою библиотеку и не мучиться)
 
 
5 hours later…
12:05 PM
@Grundy о, опять он. Особо уверенный в себе субъект, не понимающий, что он не понимает, что требует тыкать его носом прямо в решение, чтобы он остыл. По заявлениям "вы бот" ещё и vas'а напоминает.
 
@D-side vas, это который shatal? :)
 
@Grundy да, он. shatal это его прошлое имя, AFAIK.
 
@D-side не исключено, кстати :-)
 
@Grundy уга-а-ар. А ещё недавно он так радовался тому, что он ошибался на счёт rx и он видимо просто не умеет им пользоваться. Тот закрытый вопрос с дискуссией он стёр и... пошёл создавать другой, с примерно той же окраской? Похож на скучного тролля, рассчитывающего на недоступность удалённых вопросов.
 
читаю Category: The Essence of Composition и пугаюсь кода, который написал по заданиям pastebin.com/nenhfL6D
 
 
1 hour later…
1:16 PM
Алексей, вы - гений! Еще раз благодарю вас за правку кода. Если я могу вас как-то отблагодарить, скажем, бросить вам платеж на телефон или на электронный кошелек, то сообщите мне. — Anastasia 26 mins ago
Дать ей ссылку чтоль на кошелек с WM где я собираю на клавиатуру? xD
4
 
@АлексейШиманский у девушки явно талант менеджера пропадает )
 
@VladimirGamalian всё таки не хватает тут опции: задать вопрос за 50-100-150-и т.д рублей. Ну и за ответ деньги идут ответчику на кошелек)
 
@АлексейШиманский можно извратиться, и в ответ вставить картинку заблёреную, типа с ответом, и ссылку на оплату, кстати похожий где-то сайт такой всплывает время от времени в гугле
 
1:34 PM
@VladimirGamalian думаю за такое меня тут просто забанят)
 
я бы кстати пару сотен us долларов подбросил бы за ru.stackoverflow.com/questions/559783/…
 
2:13 PM
@VladimirGamalian а логи и dmesg ничего не говорят в момент прерывания звука?
 
3:10 PM
в тредике где "с чего начинать изучение c++" раздал минусов всем, кто посоветовал с C начинать
 
@strangeqargo правильно
 
@strangeqargo признаться до dmesg не добрался
 
@VladimirGamalian обычно в случае таких остановок можно заметить какую-нибудь фигню подозрительную в логах. забавно, конечно, что только на liveusb. но, кстати, вполне возможно, что на liveusb просто место в логах кончается, например, если аудиосистема что-нибудь логирует
 
@strangeqargo попробую посмотреть. Попка в том, что проявляется не сразу, и каждый пук - это на ночь оставлять включенным комп, чтобы к утру увидеть результат.
 
3:27 PM
@VladimirGamalian я вообще комп не выключаю. зачем? может у меня качается что-нибудь или там тор-узел развернут.
@VladimirGamalian а вот забавно было бы проверить, будет ли такой же баг, если загрузить virtualbox с live usb, если баг возникнет - значит это или недостаток места / софтверный баг, если не возникнет - значит это хардверный баг.
 
@strangeqargo так-то да, но флешка загрузочная, тут или ruso, или liveusb )
@strangeqargo да, была идея, пробовал на virtual box, но пока не вышло образ как флешку смонтировать, по гуглу что-то вроде sudo VBoxManage internalcommands createrawvmdk, но пока не удалось завести
 
а сделать через гуй пустую вм под ubuntu, а потом уже загрузить с флэшки?
 
@strangeqargo на этом этапе и проблема, т.е. есть dd образ, сделать из него файл виртуального жесткого диска, чтобы подключить к виртуальной машине, не выходит пока что
 
подключаешь usb-iso через гуй, в настройках машины расшариваешь папку с твоим приложением с хостовой машины или забираешь его каким-нибудь wget-ом, запускаешь и ждешь
(ну или я чего-то не понял)
 
@strangeqargo типа как iso подключить к cdrom виртуальному?
 
3:36 PM
@VladimirGamalian ну да
@VladimirGamalian машина с него и загрузится
@VladimirGamalian там можно и USB controller добавить (и в него образ флэшки запихнуть)
@VladimirGamalian в gui это правый клик по пустой области в списке контроллеров/дисков -> add USB controller
 
@strangeqargo точно, надо пробовать. А то че то шел пока по пути создания vmdk файла (вирт. жесткого диска).
 
@VladimirGamalian по идее, можно образ usb спокойно монитровать как cd образ, там разницы не должно быть
эксепшены я там зря заюзал, конечно, но это к задаче не относится напрямую
 
@strangeqargo образ флешки не хочет как cd монтировать (( тоже и если к USB контроллеру (вновь добавленному). Попробую с обычного ISO загрузится и сбросить приложение рсинком
 
@VladimirGamalian хм, как же я тогда грузился с флэшки тыщу раз. проверь в биосе настройку бут девайса
отойду, приду минут через 15, попробую сам загрузиться
 
4:16 PM
при загрузке жмешь f12 и выбираешь boot device cdrom
@VladimirGamalian тыц
 
@strangeqargo да, с iso проходит, а мой образ не хочет принимать
@strangeqargo но в принципе уже с iso загрузил и перекинул тестовую программу, запустил, завтра видно будет
 
@VladimirGamalian так тебе твой образ и не нужен, тебе всего лишь нужно загрузить свою программу в live cd инсталляцию и запустить ее там
расшарив папку с хоста или локального веб-сервера
 
@strangeqargo ага. Хотел изначально для чистоты эксперимента сэмулировать liveUSB флешку
@strangeqargo расшарить - это установка guest additions/пересборка модулей ядра, вдруг повлияет на багу, поэтому просто подмонтировал обычную флешку и скопировал с неё
 
@VladimirGamalian ну или так, да
теперь tail -f /var/log/syslog и наслаждайся
 
@strangeqargo наверное есть смысл наплодить теперь дубликатов виртуальной машины чтобы толпой работали.
@strangeqargo с другой стороны, если там негде рандому взяться, то может и не имеет смысла
 
4:23 PM
или dmesg --follow > mydmesg.log
@VladimirGamalian да я думаю, достаточно просто проверить что не вырубается на первый раз, если дубликатов наплодишь, то у тебя кстати будет еще проблема, что толпа виртуалок пишет в реальное аудио-устройство
 
@strangeqargo пожалуй да, ну тогда остается теперь в доту рубится
@strangeqargo мой dmesg не знает про --follow
 
хм, на 16.04 знает
 
@strangeqargo ну по идее можно же постфактум посмотреть уже логи?
 
dmesg это кольцевой буфер ядра, т.е. он выводит какой-то ограниченный набор сообщений от драйверов, насколько я понимаю
поэтому можно пропустить сообщения :)
 
@strangeqargo чъорт
 
4:28 PM
и я не в курсе, валятся ли они в /var/log/syslog
 
avp
@strangeqargo А сами Си до крестов не пробовали?
 
@avp тоже за, чтобы все таки прошлись по C перед плюсами, а то потом начинаются вместо свободных функций классы со одним статическим методом (особенно когда с шарпа люди приходят)
 
@avp нет, читал про них, примерно понимал о чем там, но никогда всерьез не занимался и не пробовал, уже после того как более-менее с крестами познакомился, посмотрел на голые сишные либы и ужаснулся.
@VladimirGamalian надо не с шарпа переходить или с сей, а учить плюсы. хороших учебников уйма, жаль, что свежие версии доступны только на инглеше, в основном
изнанку тоже надо знать и уметь применять, но важно не привыкать использовать лоу-левел в высокоуровневых проектах
точно так же, как вам не нужно знать, когда вы на питоне кодите, как внутри устроен какой-нибудь dict или list
 
@strangeqargo может тогда плюсы и ненужны, если задача высокоуровневая? На том же питоне будет быстрее и проще наверняка. Или даже (теперь уже) на javascript.
 
@VladimirGamalian плюсы вполне себе высокоуровневый язык с поддержкой, кажется, всех парадигм, которые от высокоуровневых языков требуются. только они быстрее и строже.
чем слаботипизированные языки
а метапрограммирование на шаблонах есть только в плюсах и D
 
4:41 PM
Теперь у меня есть надёжный критерий, не слишком ли длинный ответ я написал. Мой второй монитор:
 
@VladimirGamalian то, что железо доросло до такого увроня, что языки прототипирования можно использовать в слабонагруженных проектах - не означает, что надо использовать их для всех случаев
@D-side нормально, я тоже люблю длинные, развернутые ответы. используй стаковерфлоу как бложек, потом можно будет записи перенести :)
 
@strangeqargo для новичка не очевидно что в плюсах высокоуровневое, а что нет. И там, где надо пользоваться автоматичски выделяемой памятью или готовыми контейнерами начинаются new/delete/указатели/утечки
 
@VladimirGamalian вот поэтому и надо начинать с нормальных современных книг по плюсам, где new/delete не рекомендуется использовать кроме как для определенных случаев, а не с книг по сям, которые учат сначала mallloc/free, а потом new/delete
 
@strangeqargo да, с этой стороны если смотреть, наверное только вред от сей ) С другой стороны, если человек взял плюсы, наверное ему все таки нужно было как-то памятью манипулировать. И выучить new/delete все равно придется.
 
@VladimirGamalian потом, когда освоишь более высокий уровень абстракции, изучить c - полезно, и наверное даже, обязательно. тут вопрос не в том, как мы, видимо, соглашаемся, какой язык изучать сначала, а какие привычки и стиль кодинга нужно получить, чтобы не писать лапшекод с багами
@VladimirGamalian недавно писал аукцион баннеров для тренировки, потом посмотрел ради интереса, не увидел там ни одного голого указателя, ни одного new/malloc только unique_ptr
@VladimirGamalian более того, GSL кажется, пытается избавиться от unique_ptr вообще - в смысле спрятать детали реализации под семантикой владения/разделения.
 
4:50 PM
@strangeqargo не, там другая цель - избавиться от T*
3
 
@Abyx вот мне надо будет подробно вчитаться видимо, и начать применять. в твитторах там некоторые спецы ругаются мол слишком большой стал core guidelines, аж 430 страниц, но у меня такое ощущение, что страуструп хочет сделать последнее большое усилие перед увольнением чтобы улучшить язык
*перед уходом на пенсию
 
@strangeqargo он большой, но там всё по делу, и только самые простые вещи
это такой аналог книжки С++ 101
 
@Abyx ну не совсем 101, скорее.. улучшенный 101 для нового C++, там все-таки много предлагается новшеств и изменений стиля кода, и та же либа под это заточенная, которую, надеюсь, протащат в стандарты
все-таки, конечно, разница в самом процессе разработке языков, допустим, типа php/python/c++/java очень интересная
в с++ - много компаний и комитет, в java - в основном - одна компания-хозяин, в php - основатель, потом толпа любителей + компания, в python - диктатор
 
avp
5:06 PM
@strangeqargo а может лучше наоборот? Мне один парень рассказывал, что пока их не стали учить ассемблеру, он так и не мог постичь, как же все-таки писать на фортране, который изучал до этого. А потом, говорит, как пелена с глаз упала.
 
@avp может у него просто не было в принципе понятия как на низком уровне машина работает? ну там, биты-байты-регистры-память? у многих этого нет и с сями и с плюсами и с пыхами тем более, сплошная магия
@avp но это основы, которые надо знать, не важно, какой язык ты учишь
 
@strangeqargo некоторые не знают даже принципов p-n переходов, а вы говорите биты-байты )
 
@avp ну т.е. можно изучать асм, а потом c++, но изучать c, а потом с++ и опираться на с - в с++ плохо, потому, что плохие кодерские привычки возникают, вместо изучения мощи языка
 
А хуже всего, что некоторые кодеры до сих пор думают, что электроны в электрической цепи двигаются от плюса к минусу.
 
@avp а asm и c++ настолько разные языки, что просто не будет пересечения по практике, трудно будет (хотя и возможно) сформировать плохой стиль кодинга
 
avp
5:11 PM
@strangeqargo конечно не было. Понимание машины приходит с ассемблером (но можно и с Си, потом ассемблер (наверное, сам-то я так не пробовал) легче пойдет)
 
@VladimirGamalian тот момент, когда сарказм не сарказм
коптишь бабу, спишь с ней.
 
@strangeqargo что с этим человеком? у него волчанка?
 
@VladimirGamalian это главный в каком-то племени демонстрирует мумию, с которой спит. типа как waifu-подушка, только круче
@VladimirGamalian huffingtonpost.com/entry/… вот статья
 
@strangeqargo это счас вместо чубакки типа модно?
 
@VladimirGamalian ну тип если вэйпишь то можно друга так укатать
 
avp
5:22 PM
@strangeqargo вот интересные материалы 250bpm.com/blog:4 и часть 2 250bpm.com/blog:8 от вроде бы серьезного чела на тему Си и С++
 
@avp да, я читал.
@avp там такой флэймвор развернулся. но я не могу высказаться на эту тему авторитетно, поскольку не читал исходники zmq. возможно, автор переходил с сей на плюсы, написал криво и сожалеет теперь. возможно, что если бы он написал это на сях - поддерживать было бы очень трудно.
 
avp
@strangeqargo обратили внимание на Now, almost 5 years later, I would like to publicly admit that using C++ was a poor choice and explain why I believe it is so. 5 лет, это немало (многие все же понимают быстрее, хотя иным этого не постичь никогда)
 
@avp да и писал на с++98 (поскольку либу начали делать в 2007 году), а не на c++11
 
Торвальдс тоже хейтил когда объяснял почему git на си писал
 
@VladimirGamalian ну, мы тут будем обсуждать с чего лучше начинать с++ изучать, или какой язык лучше?)
 
avp
5:27 PM
@strangeqargo imho это принципиально ничего не меняет. 11 и 14 судорожные попытки оживить любимое чадо, которое изначально было обречено.
 
@avp это очень разные языки
>C++ exceptions just didn't fill the bill. They are great for guaranteeing that program doesn't fail — just wrap the main function in try/catch block and you can handle all the errors in a single place.
(схватился за голову)
 
@strangeqargo кстати, не в курсе, были какие-то инициативы от Страуструпа, по созданию style чекера для гайдлайнов, типа как Pycharm например по PEP8 анализирует исходники, есть ли что-то уже для студии/clion/qtcreator ?
 
avp
@strangeqargo их вообще не должно быть. Нужен новый, с реальной поддержкой компилятором (а не темплейтами в инклюдах) конструируемых пользователем типов (но, это уже AI)
 
@avp ну т.е. ты согласен с чуваком, что эксепшены не нужны, а лучше все возвращать по кодам ошибок
 
на самом деле будущее за Result<T>
 
5:32 PM
@VladimirGamalian вот про это не в курсе, у clion есть свой анализатор, для студии есть ReSharper (от тех же JetBrains)
 
@strangeqargo ну исключения же тяжелые, миллионы гоферов не могут ошибаться
 
@VladimirGamalian гоферы не аргумент
у них было тяжелое детство
 
@strangeqargo понял, спасибо, не, я именно, что хотел чтобы по github.com/isocpp/CppCoreGuidelines
 
@VladimirGamalian стат. анализатор студии умеет в GSL
 
avp
@strangeqargo иногда они кажутся привлекательными, правда это может нормально работать только на уровне курсовых работ.
 
5:33 PM
@VladimirGamalian clang.llvm.org/extra/clang-tidy есть
 
@avp это не так. в C# и Java исключения работают в любых проектах
 
две тулзы найдены
 
ээ...
 
avp
@Abyx только от этих проектов наш админ почему-то всегда стонет...
 
Но они же по своим соображениям чекают
 
5:35 PM
@VladimirGamalian "clang-tidy: cppcoreguidelines - Checks related to C++ Core Guidelines."
 
@strangeqargo да, да, крутяк, ща попробую
 
google- Checks related to the Google coding conventions. (будь они прокляты)
 
@avp но при чем тут исключения?
 
@VladimirGamalian Звук под убунтой — это боль, да.
 
@VladD попробовать перейти на федору?
@VladD или федора уже канула в лету
 
5:46 PM
@VladimirGamalian Я её не пробовал. Но мне приходилось администрировать Убунту удалённо, это занятие не для тех, кто не умеет находить ответ на 15-ой странице гугловывода.
 
@VladD мне казалось что это самый попсовый дистрибутив, и уже на кучу ламерских вопросов есть горы ответов на всяких askubuntu.com
 
@VladimirGamalian Ага, за исключением тех случаев, когда все рецепты не помогают :-\
То есть если аппаратура взлетает сразу, то она таки да хорошо работает. Но если взлетает как-то не так...
 
@VladD для меня этот баг уже как родной, в первый раз мы с ним познакомились в ubuntu10.04, шесть лет назад. Тогда ещё был первый SDL. Год за годом, была надежда, что ну вот еще один релиз, и все исправится. Теперь смысл моей жизни - найти источник проблемы.
 
@VladD ни разу не было проблем, которые бы не решались после небольшого гуглинга. лет пять на убунте сижу, на куче разных компов. у коллег на работе тоже много убунт
 
@strangeqargo Везёт вам с железом.
@VladimirGamalian А если открыть баг? У них же вроде открытая багзилла?
 
5:51 PM
@VladimirGamalian у тебя какое-то приложение, которое обязательно должно с livecd работать?
 
@VladD нужно собрать больше информации, пока сам не понимаю на что грешить
@VladD наверное стоит, хотя опыт отрицательный с аскубунтой, за этот вопрос получил перекати поле: askubuntu.com/questions/812975/…
 
@VladimirGamalian А если спросить на askubuntu.com, куда стоит копать, чтобы выдать нормальную отладочную информацию?
 
@VladimirGamalian ты не думал, что можно например, раз в n минут переинициализировать аудио-устройство не выходя из приложения, раз уж оно без звука никак?
 
@strangeqargo есть сейчас костыль - запускается на каждый звук процесс и убивается в конце, но это же не по спартански
 
@VladimirGamalian Ну, монга — это кагбе не юзер-левел-штука. А вот проблемы со звуком были, думаю, у многих.
 
5:56 PM
@VladD верно, попробую спросить там
 
ггосподи, ужас какой instagram.com/p/BJ4_T2DhY1w/?hl=ru
 
@strangeqargo подписан на Кадырова? )
 
@VladimirGamalian не, в ленте твиттера от лентача встретилось
 
avp
@Abyx все деструкторы должны быть очень хорошо согласованы, т.о. реальный проект усложняется, а когда он растет и меняется разными людьми возникают проблемы. Т.е. в идеале все это должно работать, а вот в нашей жизни...
 
@avp всмысле "согласованы"?
 
6:05 PM
@avp raii никто не отменял же, чего их согласовывать?
в сях, конечно, надо согласовывать, если взяться за извращение типа gobject от gtk
@Abyx "We Do Not Jump" - это политическое высказвание?
 
@strangeqargo да
 
avp
@Abyx в смысле, все ресурсы при исключении должны освобождаться в правильном порядке. А если таймаут? А если он должен обрабатываться callback? С сетью это частенько бывает.
 
@Abyx жаль :-)
 
avp
@strangeqargo это в теории.
 
@strangeqargo почему же
 
6:10 PM
@avp в raii все конструкторы и деструкторы будут вызваны в нужном порядке, в чистом C у тебя на руках будет чехарда функций и указателей
 
@avp для этого есть всякие WeakPtr. Т.е. нет никакой проблемы, всё решаемо. И не очень понятно как освобождение объектов связано с исключениями
 
@Abyx ну, если мы говорим о "кто не скачет", то я не на стороне нынешней власти и нынешних наших москвичей не прыгающих.
 
@strangeqargo это скорее осуждение тех кто скакал и доскакался
 
avp
@strangeqargo raii это все же просто концепция, типа "лучше быть здоровым и богатым..."
 
@Abyx мы видимо получаем новости из совсем разных источников.
 
6:13 PM
наверное
 
@Abyx я надеюсь, вы не за закон яровой?)
 
@strangeqargo нет, я его даже не читал
ну и вообще, vpn и криптография спасут мир
 
@Abyx за vpn в одной стране уже штрафуют на некислую сумму
 
пока разрешены, конечно
 
avp
@Abyx с исключениями? Напрямую. Уходим по исключению из области существования объекта, вызывается деструктор. В теории все ОК. На практике объект может быть "недоинициализирован" и деструктор делает какую-то фигню.
 
6:16 PM
@avp не должно такого быть. если используются исключения - то не нужна двойная инициализация, все объекты всегда полностью инициализированы.
 
инвариант
"либераст и ватник - не пара, не пара. но в этом чате... "
 
avp
@Abyx при правильном дизайне да. Не всегда он оказывается таким. Часто -- "хотели как лучше, а получилось ...". Отсутствие исключений позволяет исправлять такие ошибки (я рассматриваю N-ю модификацию программы) меньшей кровью.
 
@avp наоборот, отсутствие исключений заставляет усложнять код и вносить множество ошибок в других местах. Так же самая ошибка с нарушением инварианта может быть сделана и без исключений
 
avp
@Abyx ошибки могут быть всюду. А что сложнее? Наверное зависит от конкретных элементов пары: программист-программа.
@Abyx кстати, может путаю, но что-то вспомнилось, будто гугл в своих правилах кодирования скорее советует избегать исключений (во, как обтекаемо я написал! -)).
 
@avp сложнее - это написание кода для фабрик или двойной инициализации и пробрасывания ошибок
@avp у гугла запрещены исключения вообще
 
avp
6:28 PM
@Abyx даже так.
Наверное не зря?
 
@avp для них - не зря.
 
У исключений есть одна приятная особенность - их можно не использовать, если хочется кодами возврата пользоваться.
 
avp
@VladimirGamalian супер!
 
У них много легаси кода, в который невозможно добавить исключения не сломав его, и некоторые программисты в гугле просто неосилии исключения, как и другие запрещенные там фичи языка
 
@Abyx ну и да, кодеров там берут пачками
 
6:32 PM
Кстати, как проявляется использование исключений в коде для конечного пользователя?
 
avp
@strangeqargo почитаю (но это же boost programmer)
 
@VladimirGamalian никак
 
@Abyx т.е. упрощая язык можно не загружать лишними сущностями программистов и получать тот же результат? (что наглядно Go от того же Google показывает)
 
@VladimirGamalian ты какого конечного пользователя имеешь в виду? пользователя-программиста библиотеки? ему будет легче жить от эксепшенов, не разгадывая твои коды ошибок
@VladimirGamalian пользователь приложения ничего не увидит
 
@strangeqargo ну для библиотеки исключения так вообще сразу ограничат использование только плюсами, а писали бы без них, легко бы сбиндили ещё к десятку языков
 
6:38 PM
@VladimirGamalian Go отвратителен.
3
 
@Abyx мне тоже не нравился долгое время
 
in Go/Golang on Stack Overflow Chat, Aug 22 at 18:23, by Abyx
x, err = h()
if err != nil {
  return
}

y, err = g(x)
if err != nil {
  return
}

err = f(y)
if err != nil {
  return
}
типичный го код
 
@Abyx это от лукавого
 
go это как современный php
 
@Abyx поставьте _ и проверьте в конце например
 
6:40 PM
или там обновленный бейсик
 
@VladimirGamalian от какого лукавого? я постоянно это пишу
 
точнее, go это как старый php
гугловцам нужна была армия кодеров с низким порогом вхождения, они ее получили
 
@Abyx к тому, что раз вы проверяете код вовзрата значит вы именно это и хотите сделать, и значит проверка не лишняя
 
@VladimirGamalian конечно не лишняя, без нее никак
 
avp
@VladimirGamalian ему надо писать try ... catch в нужном месте.
 
6:42 PM
@avp в одном нужном месте
 
@Abyx и какой тип исключений в этом нужном месте вы будете перехватывать?
 
@VladimirGamalian error
такой же как и тип ошибок, что за странный вопрос
 
@Abyx т.е. вызывая функцию, код который вы привели выше, вы будете оборачивать вызов в try/catch(error) ? Во всех ДВАДЦАТИ местах её вызова )
 
avp
@Abyx главное сразу попасть в это место.
 
@VladimirGamalian я буду писать f(g(h()))
 
6:44 PM
@Abyx я же поэтому на вызове концентрирую внимание
 
гхм
отличие исключений от возврата ошибок только в синтаксическом механизме переноса ошибки от места где она возникла, до места где ее обработали
проблема с возвратом ошибок в том что это надо писать руками, по всему стеку вызовов
тогда как для исключений это делает компилятор
вот и вся разница
 
@Abyx с try/catch в этом плане получше. Но похуже на счет вариантов действий в зависимости от места исключения. Т.е. придется какие-то флажки вводить, либо дополнительные try/catch с пробросом уже дополненого исключения
 
try/catch вообще можно не писать
 
@Abyx вот это уже по нашему )
 
т.е. try-catch может быть внутри библиотеки, а оттуда можно получать исключение ввиде ошибки
вообще исключения и ошибки можно преобразовывать друг в друга, т.е. всегда можно написать try { f(); return nil; } catch(exc) { return exc; } или наоборот throw err;
 
6:54 PM
Мда. Поставил Windows 10 Anniversary update. Фейл на первом же кадре после его установки:
 
впрочем это всё прошлый век, наука давно уже придумала Result<T, E> и прочие монадические штуки
 
Ещё один минус, как правильно заметил @avp, это потеря уверенности, что твой код будет выполнен в определенном порядке, а не прервется на каком-то исключении внутри вызванной функции (особенно чужой и в большом проекте).
 
@D-side У меня не было такого фейла. :)
 
@Abyx где почитать применительно к плюсам? (ну кроме Bartosz Milewski)
 
@D-side я поставил ещё 2 августа апдейт...
Всем вечер добрый...
 
6:55 PM
@intro94 вечер в чятик, посоны
 
@strangeqargo optional тоже (иногда) удобен как возврат
 
@VladimirGamalian всматриваюсь в туда тоже, да
 
A K
@D-side МОЙ БРАТ УМЕР ОТ ПЕРЕДОЗИРОВКИ ЭТОЙ ДРЯНИ!!!1
 
пойду пройду немножко Icewind Dale
 
Ребят, вот кто подскажет? Надо на сервер отправлять через HTML-форму файл, и принимать его с помощью PHP. Всю логику сделал, всё работает, но с одним жирным НО. Файлы больше 2-ух метров не заливаются. Полез я в php.ini, увеличил post_max_size до 300М и upload_max_filesize до 100М. Ребутнул httpd, даже сервер ребутал - хоть бы хны. Файлы больше двух метров идут лесом.
 
7:00 PM
 
A K
@intro94 А перед апачем стоит nginx и в нём никто не удосужился настройку произвести? А в нём как раз лимит 2 М
 
но в плюсах это всёравно не взлетит, сахар нужен
 
@AK Фак. Про него совсем забыл.... Бьюсь головой об стену
Я ещё думал, что же я упустил...
 
A K
@intro94 Хм. Не бывает магии на свете...
(вспоминает третий закон Кларка)
 
@AK Совсем заработался я... Вот что значит работать неделю без выходных... Ладно, завтра выходной, а в понедельник выставлю конфиг nginx-а и опять продолжу писать скрипт...
Хорошо, что руководство не смыслит в PHP и линях - косяки не сразу заметны, и я могу их спокойно решать спустя время... :)
@AK в чём прикол, так в том, что я сам лично ставил nginx перед апачем. И забыл про него... Спасибо вам за напоминание. :)
Так, пойду гляну анимеху, и отсыпаться. Всем спокойной ночи. :)
 
 
1 hour later…
8:14 PM
@Abyx А чем он вам не нравится? Я на него не смотрел плотно, но асинхронность там, кажется, неплоха.
Я не для спора, мне интересны мнения людей о языках.
 
@VladD подходом к обработке ошибок, в частности
асинхронность - ок, поэтому и используем
 
@Abyx а, через коды ошибок? да, пахнет суровой древностью
@Abyx Ну, это же сахар на if result is error than error else f(result). То есть те же коды возврата. Мне это кажется страшно неэффективным.
 
@VladD в каком плане неэффективным? синтаксически - всё норм. В плане производительности - аналогично кодам ошибок
 
@Abyx Вот если C# добавит в язык producer/consumer (== go channels), будет совсем-совсем не хуже.
 
@VladD да не нужно это в языке. разве что select
 
8:22 PM
@Abyx Синтаксически — да (если система типов языка настолько богата, чтоб поддерживает автоподнятие функций). Но ведь реальный код будет протаскивать проверку ошибки на каждой операции. В отличие от этого исключения — это сразу нелокальный переход.
@Abyx Это и так есть в библиотеках, а select обсуждался roslyn team (но не придумали, что делать с невыигравшими тасками).
@Abyx То есть да, и коды ошибок кажутся мне неэффективными.
VERIFYCHECKEDCALL(hr, m_pUnk->QueryInterface(&pService));
VERIFYCHECKEDCALL(hr, pService->GetEndpoint(m_bstrEndpointName, &pEndpoint));
VERIFYCHECKEDCALL(hr, pEndpoint->BindListener(m_bstrEventName, this));
украл, выпил — в тюрьму
романтика!
 
8:49 PM
@VladD в плюсах тут можно написать hr = pService->GetEndpoint(m_bstrEndpointName, &pEndpoint) где hr бросает исключение при присваивании ошибки
 
@Abyx Угу, плюсы любят перегрузить какой-нибудь operator ,, в качестве замены метапрограммирования.
или перегрузить присваивание
 
лучше уж так чем такие макросы
 
@Abyx ну, этот макрос делает не совсем то
а наподобие такого:
if (SUCCEEDED(hr))
    hr = (pService->GetEndpoint(m_bstrEndpointName, &pEndpoint))
то есть это не ранний выход
 
жуть
 
@Abyx Вот из-за этого я люблю исключения :-)
 
9:02 PM
все же я не вижу проблем с монадами с автоматическим лифтингом. if дешев.
всегда можно обработать как обычную ошибку, без try {} catch {}
 
@Abyx Ну, как бы это увеличение вдвое количества кода. И динамическая проверка типа на каждом шаге (если Option не реализован как tagged union), что тоже не ускоряет программу.
 
да, нужен tagged union
 
ну и ифы сильно штрафуют предсказатель ветвления (который branch predictor), разве нет?
 
@VladD нет, не очень. процессор знает про разные вероятности переходов
(я забыл, то ли там нужен префикс у jxx, то ли проц всегда считает что без перехода чаще)
 
@Abyx ну ему можно указать optimistic path, да
не помню, как именно
 
9:10 PM
rapidjson кстати, точно так же как ядро линуксов использует макросы типа unlikely для оптимизации
 
угу, зачем нам это помнить
 
пусть компилятор занимается оценкой вероятностей, у него голова большая эвристики хорошие.
 
 
1 hour later…
10:33 PM
У меня к вас вопрос воспитательного характера, вы специально заложили в коде парочку мощных несовершенств, чтобы ТСу было что объяснять тем, кто ему эту задачу дал? :) — D-side 12 secs ago
...опечатку уже пофиксил, не обращайте внимания :)
 
avp
@Abyx процессор на самом деле ведет статистику и делает (не делает) переход по ней, а если не угадал, тогда приходится откатываться и это останавливает конвейер. А likely (если проц это позволяет) говорит, не надо тут твоей статистики -- иди сразу вот туда.
 

« first day (521 days earlier)      last day (2789 days later) »