• Как работают профайлеры в Ruby и Python?
    0

    В копилку sampling профайлеров для Python: py-spy (https://github.com/benfred/py-spy)
    Нааписан на Rust, работает в отдельном процессе и может подключаться к уже запущенному Python-процессу.

  • Проблемы научных публикаций
    +1

    Я был соавтором нескольких статей в области image processing и neuroscience. В одной статье мне пришлось два раза переписывать свой кусок текста (сжимать), потому что менялся журнал и менялись требования к размеру статьи. В neuroscience (в итоге опубликовали в журнале NeuroImage) соавторы несколько раз изменяли текст, чтобы удовлетворить требования рецензентов.

  • Проблемы научных публикаций
    +2

    Объём статьи и количество иллюстраций так просто не поменяешь. Это надо статью переписывать по сути.

  • Как я исправил зрение
    0

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


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


    За всё время я обращался в 3 клиники и одну гос. больницу. В гос. больницу я пошел первым делом. Там, естественно, не делали никакую томографию и вообще сказали, что это "деструкция стекловидного тела". Было очевидно, что врач вообще некомпетентен.


    Про стресс, тяжести и алкоголь тоже говорили. Мне кажется, что у меня это случилось именно из-за стресса и перенапряжения, тогда приходилось работать ночами.


    Вся эта история (и ваш случай) хорошо показывает, что врачам нельзя доверять на 100% и лучше обойти несколько клиник и врачей.

  • Как я исправил зрение
    0

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


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

  • Стоит ли переходить с Python на Nim ради производительности?
    +1

    И о чём мне должны сказать эти два слова? Вернее, что вы хотите сказать этим? Раскройте мысль чуть более подробно, покажите реальный пример, как бы вы использовали столь интересную особенность языка в своём коде.


    Мне когда-то приходилось иметь дело с кодом, в котором происходило преобразование полей вида fooBar в foo_bar, но всё это делалось на уровне ключей словарей или при динамическом построении объектов, для согласования API, создания фасадов и т. п.


    Я представляю, как бы дико выглядел кейс, в котором есть некая библиотека, у которой сущности именуются в lowerCamelCase, а кто-то у себя в коде работает с ней через snake_case, потому что ему так удобнее, потому что code style и потому что язык это позволяет, так почему бы и нет чёрт возьми. :)

  • Стоит ли переходить с Python на Nim ради производительности?
    +1

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


    https://stackoverflow.com/questions/28078089/is-julia-dynamically-typed

  • Как я исправил зрение
    +1

    Возможно, сетчатка восстановилась сама. Можно сходить сделать когерентную томографию сетчатки, там будет всё видно.


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


    В общем, берегите зрение, нервы и здоровье!

  • Стоит ли переходить с Python на Nim ради производительности?
    +2

    Предложите разумные варианты применения этой фичи.


    Я пока нахожу только неразумные, которые позволяют писать неподдерживаемый код, усложняющий жизнь разработчикам, статическим анализаторам и любому автоматическому и полуавтоматическому инструментарию для работы с кодом.

  • Стоит ли переходить с Python на Nim ради производительности?
    0

    И что вы хотите этим сказать? Вы ставите знак равенства между частичным применением (фиксацией аргументов) и каррированием?


    Кстати, надо заметить, что functools.partial применима не всегда, что становится особенно актуальным с добавлением в язык positional only аргументов, доступных из python-кода. Зафиксировать можно либо позиционные аргументы слева-направо (leftmost), либо keyword-аргументы. Смотрите https://www.python.org/dev/peps/pep-0309/


    Попробуйте сделать функцию pow2 (x^2) с помощью functools.partial из функции pow.

  • Стоит ли переходить с Python на Nim ради производительности?
    0

    Эта статья (оригинал) довольно низкого качества. Плохие бенчмарки, никакого углубления в тему.


    Вот эта статья, на мой взгляд, даёт гораздо более полное представление о том, что такое Nim.

  • Стоит ли переходить с Python на Nim ради производительности?
    +1

    А это не смущает?


    Nim чувствителен только к регистру первого символа.
    То есть, HelloWorld и helloWorld он различает, а helloWorld, helloworld и hello_world — нет.

    Зачем так делать вообще?

  • Стоит ли переходить с Python на Nim ради производительности?
    0

    Это у вас результат преобразования, а где тут сама исходная функция func(arg1, arg2)?


    Суть в том, чтобы получить из func(x, y) с помощью оператора каррирования func(x)(y). Такого из коробки нет.

  • Стоит ли переходить с Python на Nim ради производительности?
    +7

    А почему примеры в этой статье должны быть обязательно в функциональном стиле? Чисто религиозные заморочки?


    рекурсия

    Без оптимизации хвостовой рекурсии


    замыкания, каррирование и т.д. и т.п.

    Где там "каррирование и т.д. и т.п." из коробки? Модуль functools что-ли с "reduce", "partial" и "lru_cache"?


    Есть библиотека toolz там побольше всего. От фанатов для фанатов. С любовью.

  • В России плохо жить, даже если ты разраб. Но я все равно отказываюсь от релокейта
    +1

    Забыл ответить на этот важный пункт вашего "что-то делаю не так".


    За последние 10 лет не дал ни одной взятки ни одному ДПС-нику.

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

  • Генеральный конструктор vs Скрам-мастер
    +2

    Много чего можно рассказать, но что именно вы хотели бы услышать?


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


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


    Касательно аварий и техногенных катастроф. Вот цитата про железнодорожные катастрофы в СССР из одной статьи:


    В целом по имеющейся статистике в период с 1967 по 1977 год ежегодное количество крушений составляло от 63 до 87 случаев, в том числе с пассажирскими поездами от 16 до 30. В 1982–1991 годах ежегодно терпели крушения от 31 до 52 поездов, в том числе от 3 до 9 пассажирских, допускалось же от 31 до 49 аварий, из них с пассажирскими поездами — от 21 до 24.

    О технике безопасности на производстве тоже особо не думали (ударные темпы и планы же). Цитаты из той же статьи:


    В 80-х от несчастных случаев на производстве ежегодно погибало около 15 тыс. человек

    Причем в числе наиболее опасных отраслей по соседству с добычей угля можно было встретить совсем уж неожиданных гостей — например, мукомольная, комбикормовая промышленность и элеваторное хозяйство, пик аварийности которых пришелся на 70-80-е гг. прошлого столетия. Ежегодно происходило по 10-15 взрывов пыли с гибелью людей и разрушительными последствиями, которые удавалось скрывать от статистики. В СССР даже предприятия по хранению и переработке зерна умудрились войти в число наиболее опасных отраслей промышленности страны.

    Статистика производственного травматизма в СССР была недостоверной и фиксировала далеко не все случаи производственного травматизма.
  • В России плохо жить, даже если ты разраб. Но я все равно отказываюсь от релокейта
    +26
    И почему у меня нет знакомых, таскающих с собой гашиш?

    Даже у тех, кто не таскает, он может внезапно найтись в нужном количестве.


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


    Наверное, что-то делаю не так.

    Ёрничайте и бравируйте если хотите, но статистика то печальная.

  • Зачем инженерам тратить время на перформанс
    +2
    Зачем инженерам тратить время на перформанс

    Инженер — личность творческая. Позвольте ему тратить время на перформансы, если от этого не страдает производительность. :)

  • Созвоны не решают никаких проблем. Они нужны только людям, которые не умеют писать код
    +1
    ждешь кучу времени
    ждал ответа от N 5 минут и не получил

    Так кучу времени или 5 минут, или 5 минут — это куча времени? То есть для вас ответ должен быть почти мгновенным, тогда это эффективно для вас.


    Люди, от которых вы ждёте ответа, тоже заняты своими делами, им может быть неудобно отвечать вам в течение 5 минут или они просто не могут сделать это прямо сейчас по разным причинам. Снижает ли требование срочно отвечать на ваши вопросы эффективность их работы?


    Могу поделиться своим опытом. Я работаю удалённо 6 лет, команда полностью распределённая, коммуникации с коллегами в основном асинхронные, в том числе из-за разных континентов и часовых поясов, совещания, конечно, есть, но многочасовых созвонов или созвонов по каждому поводу у нас нет, и это всех устраивает. Никто ни от кого не требует срочно отвечать на сообщения в чате и не страдает от того, что общение в команде в основном асинхронное.

  • Созвоны не решают никаких проблем. Они нужны только людям, которые не умеют писать код
    0

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


    Вот тут, например, автор пишет, что синхронные коммуникации в их компании занимают 25% из всех коммуникаций между сотрудниками.

  • Самый ужасный день в компании Slack
    +10
    Одним из последствий инцидента стало значительное расширение нашего основного уровня веб-приложений.

    Так и не понял смысла этого предложения. Просто набор слов. Переводчик, думаю, тоже не понимает это предложение на русском. :)

  • Созвоны не решают никаких проблем. Они нужны только людям, которые не умеют писать код
    0
    Не нравится — уходи, тебя вообще никто не держит.

    Универсальное "решение" любой проблемы "что-то не нравится — вали отсюда"?
    Человеку за индустрию обидно. То, что он уйдёт из одной, второй, третьей компании ничего не изменит в сломанной системе.

  • Спасибо за собеседование, мы ответим о нашем решении… сейчас
    0
    Иногда собеседование идёт не по плану: диалог не клеится, ответы сухие, спустя час решения нет. Такое бывает: новая обстановка, люди, ответственность времени и атмосфера экзамена.

    Пересмотреть свой подход к собеседованиям — это нормально. Зачем устраивать из собеседования экзамены и создавать напряжённую атмосферу? Сколько уже написано статей, что это плохо работает, это неэффективно и т. д. и т. п. Но всё равно находятся те, кто хочет делать так же как GAFAM. А вы уже догнали по количеству собеседований Яндекс или только в планах?

  • Архитектура Y messenger
    +2
    Мы опубликовали исходный код наших разработок


    Интересно вы ведете разработку. Одним коммитом зафигачили всю кодовую базу? А где история, где до этого вы вели разработку?

  • Microsoft: Rust является 'лучшим шансом' в отрасли программирования безопасных систем
    +9

    А можно озвучить эти самые "принципы инженерного подхода"? Как вообще связаны эти две штуки: "инженерный подход" и "агрессивное продвижение"?


    Инженерную команду Rust сложно назвать зависимой от хайпа, пиара и т. д. Они заворачивают любые RFC, идеи и реализации, которые могут вызывать хоть малейшие проблемы в дизайне языка и совместимости с другими вещами. Они просто планомерно делают своё дело, развивают язык так как считают нужным.


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

  • Как починить все самому, если баг-репорты игнорируются: отлаживаю wkhtmltopdf под Windows
    +5
    Заголовок спойлера

    А как они WebKit обновляют, если там свой форк Qt4 и QtWebKit (зачем, вопрос отдельный), Qt4 официально не поддерживается давно (с 2015).

  • Почему список в кортеже ведет себя странно в Python?
    +5

    Вот что действительно странно:


    >>> a = [1, 2]
    >>> a += {3: 4, 5: 6}
    >>> a
    [1, 2, 3, 5]
    
    >>> a + {3: 4, 5: 6}
    TypeError: can only concatenate list (not "dict") to list

    Не нашел этого в wtfpython :)

  • Питонисты, прекратите использовать квадратные скобки для получения значений из словаря
    0

    Просто переопределили методы __getattr__ и __setattr__, никакой особой магии там нет. Смотрите код: https://github.com/pandas-dev/pandas/blob/6010141a83234652a9a676df38d8d13f183bad2b/pandas/core/generic.py#L5216-L5273


    pandas DataFrame — это не словарь, это очень-очень большой класс с кучей барахла, который мимикрирует под NumPy массив в некоторых операциях с векторизацией и предоставляет ещё кучу всяких методов, в том числе реализацию методов __getitem__ и __setitem__ для поддержки [].


    А про магические методы у классов в Python почитайте эту статью если интересно:
    https://habr.com/ru/post/186608/

  • Питонисты, прекратите использовать квадратные скобки для получения значений из словаря
    0
  • Питонисты, прекратите использовать квадратные скобки для получения значений из словаря
    0

    OrderedDict довольно часто бывает полезным. Почему бы не сделать словарь упорядоченным by design, более того если это достигается бесплатно. В Py36 взяли более эффективную реализацию словаря из PyPy, которая имела такое свойство, затем просто закрепили гарантию упорядоченности ключей на уровне языка. Теперь любая реализация Python должна обеспечивать упорядоченность ключей по добавлению. Не вижу ничего плохого.

  • Питонисты, прекратите использовать квадратные скобки для получения значений из словаря
    +1
    Ключи в словаре не имеют такого явного порядка расположения, который есть у элементов списка

    Эта статья уже устарела. В Python 3.6 порядок ключей по добавлению уже был как побочный эффект реализации, в Python 3.7+ расположение ключей в словаре в порядке добавления закреплено на уровне языка. В Python 3.8 появилась поддержка reversed для словарей.

  • Вставить массив numpy в базу данных MySQL через Python
    0

    Тут, например, действительно рекомендуют хранить в базе бинарные блобы как самое надежное решение:
    https://dba.stackexchange.com/questions/2445/should-binary-files-be-stored-in-the-database


    Но я всё же считаю, что для хранения очень больших объемов данных, особенно многомерных массивов, лучше всего подходит именно HDF5. Этот формат был специально разработан для таких случаев.


    pickle в любом случае лучше не использовать. Сегодня вы используете только python, а завтра вам нужно работать с вашими данными из другого языка. И тут как раз использоваие универсального формата данных, не завязанного ни на Python, ни на NumPy будет лучшим решением.


    Если вам не нужны возможности реляционной базы, а нужно именно хранилище для многомерных массивов, посмотрите в сторону HDF5 или Zarr, возможно, это как раз то, что нужно.

  • Вставить массив numpy в базу данных MySQL через Python
    +3

    Не надо так делать. Используйте подходящие scientific friendly форматы, например, HDF или Zarr. В базе можно хранить пути к этим файлам.


    Более того, завязываясь на pickle вы делаете не language agnostic решение, что очень недальновидно.

  • Что делает Rust универсальным языком программирования
    +1

    Вы про статический анализ в GCC 10? Это пока ещё довольно сырая штука, отлавливает далеко не всё, а на выхлоп по прежнему больно смотреть:


    … Первоначально это было 1187 строк. Я исправлял различные ошибки и реализовывал больше упрощений, чтобы довести его до 170 строк.

    Это по прежнему "костыль" в виде статического анализа, прикрученный сбоку, который будет давать false positive или пропускать ошибки в тех или иных случаях. Более того, мало просто добавить статический анализ в свой workflow, нужно закладывать время программиста на обработку его результатов.


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

  • Что делает Rust универсальным языком программирования
    0
    Когда я вижу библиотеку версии — 0.3, например для MSSQL, я сомневаюсь тащить это в прод.

    Про zerover слышали? Говорят, сейчас модно, а в Rust особенно. :)
    https://0ver.org/

  • Что делает Rust универсальным языком программирования
    +8

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


    Модель владения/заимствования прекрасно работает и отсекает на корню отстрелы ног, рук и других частей тела, которые в C++ делаются на раз-два.


    Если будет время, посмотрите лекции Кладова про Rust, там на простых примерах всё разбирается.


    Начать можно отсюда:
    https://youtu.be/WV-m7xRlXMs?t=1875


    Метка времени по ссылке как раз на моменте, где приводится пример кода на C++ и Rust. В C++ вы получаете UB, в Rust такой код не компилируется с человеческим объяснением в чём программист не прав.


    Это очень круто, когда можно писать код и не становиться с каждым разом всё больше и больше параноиком "а есть ли в моём коде UB и прострелы памяти? А всё ли я делаю правильно и ничего ли не забыл?". Даже опытные разработчики на C++ периодически совершают ошибки и наступают на одни и те же грабли. Rust освобождает от этой боли.

  • Приложение «Социальный мониторинг» было сделано из трекера мусоровозов
    +2
    но не-программистам остаётся увы только страдать

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

  • Основные недостатки языка Python
    0

    Мне нравится как сделано в Rust:


    let b = if ... {
        // ...
        1
    }
    else {
        // ...
        2
    };
    

    Потому что if — это выражение, и оно может возвращать результат вычислений как любое другое выражение при условии, что оно полное (if/elese). По моему, прекрасно.


    Также скоупы тоже могут возвращать результат:


    let a = {
        // ...
        res
    };
  • Основные недостатки языка Python
    +1
    Вообще, сколько от Зена осталось правды?

    Никогда Python не был тем, о чём пишут в его дзене. Что значит "явно"? В Python хватает своих подводных камней, да и вообще сами понятия "явный/неявный" — это как "хороший/плохой" субъективны и относительны, лучше вообще их не употреблять. Всегда можно было сделать что-либо несколькими "правильными" способами. Один "правильный" способ — это миф, непонятно зачем тиражируемый.


    Например, как в Python можно сделать singleton? С помощью декоратора, с помощью метакласса, с помощью объекта класса, с помощью обычного модуля — любой объект модуля есть singleton. И как же в Python правильно сделать singleton? Да как угодно. Только не начинайте, пожалуйста, что singleton сам по себе — это неправильно. :)


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

  • Сооснователь Qiwi предоставит Дурову кредит
    0

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


    Вот тут об этом тоже пишут:


    По отчетам регулятору в рамках судебного разбирательства за два года команда Дурова потратила на разработку TON и на операции мессенджера $405 млн. Все эти деньги в итоге рассосались по активам Дурова. Основная часть средств ушла на поддержание и развитие Telegram, а не на разработку блокчейна TON, так как он не монетизируется и зависит от вливаний Дурова.