Pull to refresh
19
0
Send message

Раньше у вас было написано:


Хочу рассказать об одном интересном решении для работы с небольшими графами (несколько сотен или тысяч вершин с несколькими ребрами каждый)

Мизерные графы, а экономите на спичках.


дополнительный расход на переменную для подсчета ссылок

Такая реализация приводит к тому, что впустую расходуется указатель у ориентированных ребер, но сэкономить, к сожалению, не получится

Нет, ну вы серьёзно? Графы могут хранить в свойствах рёбер и вершин кучу данных, а вы на указателях экономите.

Выученная беспомощность — это как раз верить, что на выборах в авторитарной стране можно сменить власть и изменить политический режим. Нет, нельзя, независимо от того, какая системная партия там победит, сколько бюджетников проголосуют назло и т. п. Результаты всё равно фальсифицируют, а в думе будут сидеть те кто надо, а те, кто представляют хоть малейшую угрозу будут отсеяны множеством фильтров, как "законными" (в рамках тех законов и правил, что напридумывали для отсева), так и по силовому давлению. Всех неугодных, неудобных и опасных купят, посадят, выдавят за границу или просто убьют.


сегодня мы уже ЗНАЕМ, что мы УЖЕ победили

Да-да, белорусы тоже знали, что они "уже победили", и что дальше то? Диктатор как был у власти так и остался, репрессии как были, так и есть и нарастают. Протест подавлен, "невероятные" продолжают верить, что они победили, ставят друг другу лайки в интернете, банят "дизморальщиков" и "агентов КГБ".


У вас ещё более наивная вера в "ненасильственное сопротивление" и "мирный (письфул) протест"

Нет, на самом деле у меня нет такой веры, просто силовое сопротивление и баррикады я себе ещё более слабо представляю, чем ненасильственную борьбу в текущих реалиях. Также есть мнение (разных профессоров, социологов, политологов, исследователей революций и др), что ненасильственное сопротивление более эффективно чем силовое, потому что у диктатуры практически всегда силовое преимущество и превосходство.

КПРФ победили на выборах

Допустим, но что изменилось от этого? "Новые люди" тоже прошли в Госдуму, но что с того? Что такое КПРФ и чем эта партия занимается последние 25 лет? По сути торгуется за место под солнцем не составляя политической конкуренции. Депутаты от КПРФ голосовали за все последние репрессивные законы, они поддерживали прессинг ФБК, они поддерживали преследование Навального. Зюганов не пошёл на митинг после выборов, а пошёл к Путину на встречу, как обычно торговаться и выбивать для себя бенифиты.


КПРФ — это чисто системная партия, она не борется за власть и не пытается выйти за рамки дозволенного, их цель — это создавать видимость многопартийности при этом получая блага от власть имущих.


Есть партии, нет партий, принципиально ничего не меняется, текущему политическому режиму, власти и порядку вещей ничего не угрожает. Это главное.

У pytest философия — это тесты без бойлерплейта. Фикстуры — мощная штука, но "магии" и неявности действительно многовато. IDE вроде PyCharm-а умеет работать с pytest, можно перескакивать на определение функций-фикстур, она знает о том, что фикстуры возвращают и т.п. Но в целом я согласен, что pytest в своём стремлении к минимизации написания кода-обвязки, сам по себе очень магический и неявный. Но лично мне он нравится сильно больше чем unittest — вербозный, монстроузный, перетянутый как есть из Java.


А если нужно запустить фикстуру в теле теста, нужно городить огород.

Ну не особо то и огород, по сути просто фикстура, возвращающая callable и всё.

Выше я написал, что исход наращивания репрессий неоднозначен. Репрессии могут задавить сопротивление, а могут спровоцировать протестный взрыв, после чего люди перестают бояться репрессий, а сопротивление становится массовым и повсеместным.


Опыт середины XX века показывает, что российское государство можно превратить в тотальный гулаг и ничего за это не будет

Да, к сожалению, это так. В России всё реально плохо. И печально то, что люди искренне верят, что можно что-то изменить просто подмечая и возмущаясь фальсификациям очередных "выборов" и требовать от власти выборов честных и открытых. Это, очевидно, фантастика. Это примерно то же самое, что требовать у людоеда не есть тебя, взывая к его разуму, совести, человечности и вообще тому, что каннибализм запрещён во всём цивилизованном мире.

Если сопротивление будет решительным, системным и постоянным, будет набирать общественную массу, многое может измениться. Пока на "нелегальные" митинги выходит тысяча человек, пропаганда, разгоны, запугивание и точечные репрессии отлично работают, если на них начинают выходить сотни тысяч, миллион… Люди выходят, выдвигают политические требования и никуда не уходят, вот тогда власть диктатуры начинает слабеть. У режима не остаётся никаких рычагов влияния и контроля общества при нелегитимной власти, люди просто неповинуются репрессивным законам, не выполняют приказы, не сотрудничают, бастуют, совершают диверсии и т.д. И это происходит постоянно и повсеместно. У диктатуры остаётся только один путь: раскручивать маховик репрессий. А вот тут уже совсем неочевидно, смогут ли репрессии подавить сопротивление или напротив вызовут ещё более многолюдные и решительные протесты.


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

Механизм довольно простой. Не все законы одинаково полезны. А как отменить закон, который отменять не собираются? Очевидно, считать этот закон незаконным. Если люди начинают массово и демонстративно нарушать законы, которые они считают неприемлемыми для себя, такие законы де-факто теряют силу и не работают.


Но, честно говоря, я не вижу сейчас в России хоть какого-то массового протестного движения и решимости отстаивать свои права и чем-то жертвовать в борьбе за смену политического режима.

Что имеется в виду под "технически"? Что такое гражданское неповиновение несложно нагуглить, примеры конкретных действий тоже. Самый простой пример: проведение митингов без согласования с властями после того как власти запретили проводить несогласованные митинги и собрания.


Примеры из истории: чернокожие демонстративно садятся на лавочки "только для белых", индейцы ловят рыбу там где власти запретили её ловить.

отсутствие общественного резонанса

Последний заметный общественный резонанс был в 2011-2013 годах. Тогда выборы провели с не менее циничными и наглыми фальсификациями чем все последующие, но людей тогда это возмутило, что привело к заметному протестному движению. Что произошло потом всем хорошо известно.


Проблема не в отсутствии резонанса, резонанс даже может случиться снова. Вопрос в том, что будет итогами этого резонанса. Проблема в том, что люди принимают такое положение дел и согласны с этим. Все знают, что выборов по сути нет, что сильных и мало-мальски опасных режиму кандидатов отсеивают, преследуют, выдавливают из страны, что каждый раз творится произвол и беспредел. Политическое поле зачищено до стерильного состояния. Но люди продолжают верить, что выборы что-то значат, что через них можно что-то изменить. Вот эту иллюзию нужно исключать из массового сознания. Чем больше людей осознают, что изменить что-то в рамках существующей системы невозможно, тем скорее наступит делегитимизация. А нелегитимный режим не может существовать долго и стабильно, репрессии неэффективны на дистанции, никакие механизмы удержания власти не работают без поддержки и сотрудничества со стороны населения. Общество, не сотрудничающее с режимом, не принимающее его правила игры, находится в состоянии гражданского неповиновения и это одна из форм ненасильственной борьбы, когда в рамках правового поля решительно невозможно что-то изменить.

Вот уже неделю не утихают обсуждения, споры и возмущения вокруг "выборов", фальсификаций и электронного голосования. Словно никогда такого не было и вот опять. Люди как будто только что родились, словно не было 25 лет с ненастоящими выборами, на которых невозможно поменять власть. Искренние возмущения и удивления со всех сторон. Всё как в первый раз.


Как можно не понимать простой и очевидной вещи: невозможно легальным путем через выборы или как угодно ещё в текущем политическом поле сменить правящий авторитарный режим. Потому что это поле и эти "выборы" заточены на то, чтобы его нельзя было сменить. Никак вообще. Эта система выстраивалась годами. Режим легитимен пока остальные принимают эти правила, сотрудничают и играют в эту игру. И никакое "умное голосование" тут не поможет. Нет никаких выборов. И это происходит раз за разом и каждый раз одно и то же. Общество ничему не учится и всё ещё верит, что надо просто умно проголосовать и всё получится, всё как-то изменится. Не получится и не изменится. Может быть уже хватит жить в иллюзиях?

к сожалению, живых альтернаив я пока не встречал

fsspec вполне себе живая альтернатива.

Qbs — Доступность, бесплатность, простота, модерн и удобство (да и вообще, няшка).

Оно ещё развивается?


Потому как ещё в 2018 официально решили отказаться от её поддержки внутри The Qt Company:


We have decided to deprecate Qbs and redirect our resources to increase support for CMake. Qbs will remain supported until the end of 2019 with the last planned release in April 2019, together with Qt Creator 4.9. Qbs is available under both commercial and open-source licenses, and we are happy to continue providing the infrastructure for further development by the Qt Project community.

https://www.qt.io/blog/2018/10/29/deprecation-of-qbs

Не так же. Сейчас используют тот же pytz, который де-факто стандарт и обновляется сам по себе независимо от релизного цикла Python.


Они вообще забавные ребята. "Давайте выпилим из stdlib всякий хлам, чтобы не зависеть от релизов", и тут же: "а давайте часовые пояса добавим в stdlib". Где тут логика? Не понятно.

Так я и создал два тулчейна и два профиля. Но в конфигурациях сборки, которые генерируются для таких настроек каждый executable надо собирать отдельно.


Заголовок спойлера




Вот спасибо! Build all in… — это то, что нужно! Build Project у меня недоступно, но Build all вполне достаточно сейчас.


  • Build Project (соберет вообще все)
  • Build all in (соберет все в выбранной конфигурации)
    Они в меню Build живут.

У меня есть Qt CMake-based проект. CMake проект состоит из CMake-подпроектов, где есть несколько исполняемых файлов и несколько библиотек. Проект надо собирать для x86 и x86_64. Я попробовал настроить проект в CLion — замучился с вашими конфигурациями сборки. Вроде бы всё довольно гибко сделано, но на каждый "чих" надо вручную создавать Toolchains и CMake профили. И я не могу взять и собрать все мои подпроекты за раз для x86 и/или x64, каждый подпроект с исполняемым файлом надо собирать отдельно, выбирая соответствующую конфигурацию сборки из списка тех, что он там насоздавал.


В QtCreator как-то всё сильно проще сейчас происходит. Ладно, Qt он сам находит и настраивает конфигурации тулчейнов для него, потому что он под Qt заточен, но там не надо каждый подпроект собирать отдельно, само всё как надо конфигурируется и собирается сразу. Есть две платформы: x86, x64 и в каждой автоматически настроились Release/Debug таргеты и всё. Выбираешь что нужно, делаешь сборку и все подпроекты со всеми библиотеками собираются. В CLion же надо каждый раз тыкать и выбирать что я хочу собрать, какой подпроект с executable в какой конфигуцрации под какую платформу. Сильно напряжно. Можно это как-то упростить?


Ну и запуск, по умолчанию, он, конечно же не работает, потому что никаких Qt библиотек не находит. Но это понятно почему.


Не планируется вообще сделать какой-то плагин для Qt, чтобы он максимально автоматизировано настраивал окружение для работы с Qt-проектами?


В QtCreator вот так само всё настроилось

Разработчик на питоне принципиально не может столкнуться с задачами требующими хоть минимального понимания структур данных и алгоритмов — да? ...

Конечно может, от языка это не зависит. Но от языка зависит предметная область и то, чем придется заниматься. А заниматься решением задач на строки без готовых библиотек точно не придется никому из перечисленных в 99% случаев. Верстальщика надо спрашивать об одном, инженера по devops о другом, а С++ разработчика в команду ClickHouse о третьем. Невозможно унифицировать этот процесс до одинаковых собеседований для всех подряд под одну гребёнку. Оно не будет работать. Но о чём говорить если:


Может потому что компании лень плодить 100500 видов интервью

Пока у крупных и известных компаний километровые очереди из кандидатов на входе, им не о чём переживать, можно иметь КПД найма 10% и будет приемлемо.


Недавно мой товарищ собеседовался в Яндекс на позицию ML исследователя. Его завалили задачами на деревья и строки. Только один собеседующий попросил разобрать архитектуру нейросетки.


Вот такого быть не должно, я считаю.


Я не о том говорю, что не надо давать задачи или надо давать тривиальные задачи или проводить собеседования без проверки проф. скиллов. Просто не должно быть такого перекоса как сейчас, что задачи академичны и к ним надо специально готовиться пол года, словно ты готовишься к поступлению в университет и решаешь книжку с задачами по математике. Пусть даже задачи не такие страшные как их малюют, но сама культура, которая сложилась в проф. среде, вот такие статьи как эта, в которых пишут, что к собесам надо готовиться по пол года, их же много, такие статьи появляются постоянно. Ведь это же и есть читерство по сути. Решая несколько месяцев задачи для собеса ты умнее не становишься, ты просто обучаешься решать такие задачи, мозг начинает делать это хорошо и быстро, но опыта решения проблем реального мира это не добавляет.


Задание за какого-нибудь китайца сдает его друг-программист и кратко объясняет, какие ключевые слова потом говорить

Такого ни разу не встречал. Мне кажется, достаточно легко вывести человека на чистую воду.

То, что вы говорите — это вроде всё правильно. То есть вы говорите правильные слова, но на деле получаются перегибы. Ну вот взять хотя бы эту статью про собеседование в Яндекс. Зачем это всё? Что это проверяет, какие навыки и знания? Как это прогнозирует, что кандидат подходит? Яндекс устраивает такой цирк для любой вообще вакансии, Python, JS, C++, ML, DevOps, да без разницы, вот тебе несколько собесов с задачками на строки и массивы — решай. Нафига это всё?


Если вам не нравится парное программирование, можно дать тестовое задание, чтобы посмотреть на реальный код. Да, я знаю, что тестовые задания многих возмущают, но это хоть как-то работает, не смотря на критику. Потому что тестовое будет ближе к предметной области реальной работы, его можно обсуждать, можно улучшать, по нему хоть что-то можно понять о профессиональных скиллах кандидата.


Парное программирование тоже можно устраивать по-разному. Необязательно все 5 собеседующих должны одновременно что-то требовать от кандидата, каждый из них может предложить задачу/код, который можно интерактивно разобрать с кандидатом. В моей практике и я сам собеседовал и меня собеседовали, в том числе с online-программированием, разборами тестового, проектированием архитектуры, просто разговорами "за жизнь" и т.п. Есть опыт как токсичных, так и не токсичных собесов. Для себя я сделал вывод, что собеседования — это не экзамены, к ним не нужно специально готовиться пол года, твоих существующих проф. знаний и уровня либо достаточно, либо недостаточно. Если компания требует от меня overfitting на олимпиадные задачи для прохождения собеса, мне с ней скорее всего не по пути. Я не буду доказывать, что достоин чести работать в этой компании.

Проблема этой анимации в том, что она работает не так предсказуемо и нужна слишком большая точность при перетаскивании. Соседние вкладки начинают реагировать слишком поздно, чуть не там отпустил мышь и произошла группировка вместо перетаскивания вкладки, сама вкладка, которую вы тащите превращается в полупрозрачный текст-подсказку. Это как на винде когда-то была опция для слабых компьютеров "не показывать содержимое окна при перетаскивании", вот у вас примерно то же самое. Почему нельзя "по-человечески" сделать как в других браузерах: chrome, edge, firefox?

Планируется анимация перетаскивания вкладок? Чтобы, когда хватаешь вкладку мышкой и тащишь, она плавно перемещалась вслед за указателем мышки и все остальные события также происходили бы с плавной анимацией. Сейчас перетаскивание вкладки — это каждый раз мучение, она то сгруппируется с другой, то перетащится куда не надо, то превратится в новое окно, потому что событие происходит уже по факту без всякой визуальной обратной связи в процессе из-за чего страдает точность и предсказуемость. Плавная анимация при интерактивности в интерфейсе добавляет контроля за происходящим. Это же азы usability. Во всех браузерах мне известных реализовано плавное перетаскивание вкладок, а у вас его нет. Не понятно почему.

И часто у вас там программисты замеряют время работы каждого куска и знают точно, что вот в том списке не больше 10-ти элементов всегда?

Преждевременной оптимизацией точно никто не занимается, но и откровенно неэффективный код стараются не писать. Это то, что лежит на поверхности. Не надо быть семь пядей во лбу, чтобы это понимать.


Практически любой программный продукт проходит этап профилирования и оптимизации по производительности. Тут тоже не боги горшки обжигают, профилированием так или иначе занимаются все разработчики, это такая же рутина как написание и отладка кода.


Текущие интервью проверят по крайней мере умение писать поддерживаемый код (хотя бы 10-15 строчек на интервью), хорошую соображалку и знание алгоритмов.

Умение писать поддерживаемый код можно проверять по разному, алгоритмические задачи на время как на олимпиаде по программированию это умение как раз не проверяют. Если у человека есть open source проекты, можно посмотреть в их код и поспрашивать по ним, можно устроить сессию парного программирования и поработать с человеком в паре над кусочком какой-то реальной задачи. Это будет эффективнее и менее стрессово чем устраивать 5 этапов изнурительных многочасовых алгоритмических собеседований. Но это сложно для самих собеседующих, им нужно лучше готовиться, разбираться в чьём-то коде, придумывать задачи для парного программирования и т. д. Проще ехать по накатанной, выспрашивать и требовать у людей академических знаний, потому что это просто. Сам прорешал сотню другую задачек с leetcode или hackerrank и гоняй всех хоть до посинения. И при этом делать вид, что это реально проверяет профессионализм, умение мыслить и быстро решать рабочие задачи.

Если программа работает приемлемое/разумное время на том количестве данных, какое у вас есть, то решается, а если нет, то не решается. Вы можете вообще использовать полный перебор и факториальную сложность, если вас это устраивает.


Такие вещи мало-мальски опытный разработчик видит и понимает. Для этого не надо хранить в собственной памяти информацию о решении сотен алгоритмических задач с какого-нибудь leetcode и уметь решать похожие за 15 минут в условиях повышенного стресса. Достаточно возможностей собственного мозга, релевантного опыта и иногда инженерного образования. Когда появится необходимость включить голову и решить задачу, он её решит. Ну или не решит, что тоже возможно, но это мало коррелирует с умением решать оторванные от жизни задачи с leetcode и проходить алгоритмические собеседования у доски. Так же как и яркое олимпиадное прошлое и победы в ICPC не гарантируют, что человек способен работать над сложными программными продуктами, писать поддерживаемый код, документировать свою работу, выбирать правильные архитектурные и инженерные решения и т. д.

Information

Rating
3,578-th
Location
Россия
Registered
Activity