• Зачем в книгах оставляют пустые страницы?

    Издержки печатной верстки:
    • Чтобы набралось число страниц делимое на 4.
    • Чтобы очередная глава началась с правой страницы.
    Ответ написан
    Комментировать
  • Нормально ли для программиста быть трудоголиком, любить рутину, иногда быть уставшим и тупить от этого?

    @majstar_Zubr
    C++, C#, gamedev
    Предлагаю обобщить проблемы в одну и решить её.

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

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

    Мытьё посуды, ремонт чего-то, чтение книги, кода, контрибуция в пет/опенсорс проект, семья - для всего нужно ввести правило, уделять не менее N времени в день/неделю/месяц.

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

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

    Производительность и занятость часто путают с продуктивостью и результативностью, и если вам очевидны симптомы того, что вы часто путаете первое со вторым, то значит пришло время остановится и:

    1) вернуться к азам - перечитать основополагающие для вас книги, например, для меня это Совершенный код, Экстремальное программирование и Тайм-менеджмент для системных администраторов; если есть подозрения, что вместо паттерна вы используете антипаттерн, то пришло время для тотальной работы над ошибками;

    2) начать записывать каждое решение задачи за день, самое важное - указывать время начала и время конца, если вы не ведёте ежедневник (в любом виде, достаточно весьма обобщенного лога деятельности за день);

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

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

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

    Проблема с жадностью выделения времени на оптимизацию работы решается обычным счётчиком 1-2-3. Если вы столкнулись с проблемой третий раз, то вы отдаете себе отчёт, что налицо закономерность, и поскольку математически доказано, что оптимизация сейчас сэкономит время, то вы спокойно в ежедневнике выделяет время на сегодня на оптимизацию.

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

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

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

    Ограничение по вермени - самый мощный инструмент, с помощью которого можно обрести дисциплинированность и решать любые организационные проблемы в личной ежедневной деятельности.
    Ответ написан
    Комментировать
  • Есть ли жизнь в госкорпорациях?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Всегда считал, что как раз в корпорациях хорошо, а работать не надо в стартапчиках, так как там панибратство, бардак, нестабильность и прочий детский сад.
    Ответ написан
    15 комментариев
  • Как пишутся низкоуровневые библиотеки?

    Moskus
    @Moskus
    https://gcc.gnu.org/onlinedocs/libstdc++/libstdc++... и далее - там же. Зачем гадать, если все исходники доступны?
    Ответ написан
    Комментировать
  • Куда поступать на программиста?

    longclaps
    @longclaps
    Будет. Поступайте лучше в MIT или Stanford.
    Ответ написан
    Комментировать
  • Какие есть книги по C++?

    zagayevskiy
    @zagayevskiy
    Android developer at Yandex
    Я тебя расстрою - никакая книга тебе не позволит изучить С++ ОТ и ДО. Нужны года практики, чтобы стать хорошим разработчиком на нём.
    Ответ написан
    2 комментария
  • Сервис для изучения c++ кода (+ еще один вопрос о constexpr в качестве примера)?

    gbg
    @gbg Куратор тега C++
    Любые ответы на любые вопросы
    Вы пытаетесь делать ненужную и бессмысленную работу.
    Первый довод - все компиляторы C++ устроены по разному и от версии к версии их внутренняя кухня сильно меняется. Напоминаю, что у C++ нет даже стабильного ABI

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

    Если внутри constexpr появится что-то не-constexpr, компилятор пошлет вас в баню. И правильно сделает.

    Все гарантии о C++ имеются только в стандарте. Прочие попытки сделать доводы о том, как работает компилятор и как работает бинарник будут скорее всего фантазиями или частными случаями, не применимыми в иных ситуациях или при других настройках оптимизации.
    Ответ написан
    Комментировать
  • Как выучить PostgreSQL?

    Самый простой и дешевый вариант, это просто почитать официальную документацию по PostgreSQL.
    Написана просто и по делу, без воды.
    Ответ написан
    Комментировать
  • Зачем нужны NumPy массивы, если в Python есть свои списки?

    longclaps
    @longclaps
    Тут уместна такая аналогия: вот дерево яблоня (ты ведь смыслишь в деревьях?), к нему привили черенок дерева груша.
    NumPy массивы - это не родные, но отлично привившиеся к питону обёртки над С-массивами, используемыми внутри BLAS-ядра библиотеки NumPy.
    Они, эти массивы, содержат примитивные типы данных языка С - int, double и.т.д.
    Питоновский лист - это массив питоновских объектов. Хоть некоторые из них и называются так же, как примитивные типы данных C (например int), они - другие. У них даже размер в памяти разный - 4 байта для C-int и от 24 байт (а для чисел свыше 2**30 - еще больше) для python-int (ссылка).
    Различия этим не исчерпываются, но и этого достаточно )

    ps обрати внимание на ответ Тимур Барбашов - он врёт, как сивый мерин. Реализация типа list лежит в файле с выразительным именем arraymodule.c.
    Ответ написан
    2 комментария
  • Как правильно делать бекапы Postgresql, который "обитает" в докер контейнере?

    Melkij
    @Melkij
    PostgreSQL DBA
    Для начала понять, нафига вам вообще нужная база в докере. Раз нужны бекапы - то очевидно база нужная. Не раз видел нужные базы без бекапов, а вот настроенных бекапов для ненужных - как-то не припоминаю. А раз нужная база - то зачем здесь докер? Внимательно осмыслить этот вопрос. Если сможете удивить меня - буду весьма благодарен, до сих пор ни один из опрошенных адептов докера с таким простым вопросом не справился.

    Ну а далее определитесь с требованиям к бекапам. Глобально возможности есть две, и обе никак не относятся к тому, где размещены бинарники базы. Можно выполнять вообще с другого хоста по сети.
    Во-первых, можно периодически снимать логический дамп данных с помощью pg_dump или pg_dumpall. Плюс: они компактнее, обычно сильно компактнее, плюс неплохо сжимаются, для форматов custom и directory возможно восстанавливать объекты выборочно, например только одну таблицу. Можно бекапить отдельные базы, исключать из дампа что-нибудь ненужное. Минусы: существенное время восстановления, в частности из-за необходимости построения всех индексов; восстановление возможно только на момент начала снимания дампа.
    Во-вторых, можно снимать бинарную копию и вести журнал WAL. Плюсы - возможность восстановления базы на произвольный момент времени от окончания pg_basebackup и до тех пор пока есть непрерывный архив WAL. Но basebackup занимает ровно столько же места сколько кластер, плюс архив WAL. Бекапить можно только весь кластер целиком. Восстанавливать так же можно только целиком.
    Чтобы не собирать самостоятельно вся обвязку вокруг pg_basebackup, посмотрите pgbackrest, barman. wal-g можно для хранения в s3.

    Вполне осмысленно можно использовать оба способа одновременно, архив wal для point-in-time recovery, а так же например раз в неделю/месяц логический дамп для более долговременного хранения. Бывает порой такое, а "давайте восстановим годовой давности табличку".
    Ответ написан
    Комментировать
  • Дилемма повышать в должности или нет?

    @spaceatmoon
    Под лежащий камень вода не течёт. Вы какую-то странную проблему нашли если честно.

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

    Сделать градации к повышениям, а то иш сразу 40% процентов! Я бы разбил эти сорок процентов минимум на 4 ступени и давал возможность сдавать только раз в 3 месяца. При этом ступень не перескочить. Если не сдал, то накладывается предупреждение, что если не сдадут в следующем, то понизят в градации. И так до конца галерной лестницы. При таком подходе можно платить по миниму, т.е. чуть покрывать инфляцию, как бы рост и как бы нет. Удобно в общем.

    Плюс ввести геймификацию под код-ревью (стукачество) под названием королевской битвой. Чтобы сильно не жестить, можно отдавать премию самого слабого самому сильному. Тут главное предусмотреть возможно засрать самого сильного. Добавить возможность объединяться в группы участников и чувака который сильно засирает команду бить групповым KPI, мол ты парень сильно токсичный. Тогда премия сильного делиться между участниками группы, а если образуется команда, которая специально делает группу ради KPI и премии, то штрафовать антимономольной службой (начальством) и забирать премию себе, т.к. пацаны играют не по правилам.

    Ввести систему "лучший программист" как на производствах. И выдавать 13 зарплату по схеме, где 1 месяц это коэффициент 0.1, т.е. 3 месяца это 0.3, тогда 3 месяца успеха на 25 тысяч рублей это 7500 рублей. Это к примеру.

    Забавных вещей в компании по повышению качества работы можно много ввести и рофлить от лулзов тоже будет много. Дерзайте и успехов на работе. :)
    Ответ написан
    2 комментария
  • Есть ли перспектива создавать сой яп для игр??

    OrlovEvgenii
    @OrlovEvgenii
    golang developer / DevOps
    который будет быстрее всяких C++..

    быстрее всяких C++..

    всяких C++..


    5b9691e4ae14d531041711.jpeg

    Если по делу - нет.
    Ответ написан
    Комментировать
  • Какую версию linux, выбрать для обучения?

    sim3x
    @sim3x
    убунту
    Ответ написан
    Комментировать
  • Что делают программисты на Unity целый день на работе?

    maximpushkarev75
    @maximpushkarev75
    Very bad monkey coder
    Всё так.
    Мы, "типо программисты на Юнити", 80% времени создаем лишь видимость работы - сначала вносим в игру баги, чтобы потом кучу времени потратить на их починку. И так по кругу.
    Ответ написан
    Комментировать
  • Какая из малых операционных систем перспективнее?

    32bit_me
    @32bit_me
    Программист, встраиваемые системы
    У перечисленных ОС никаких реальных перспектив нет. Если вас интересуют ОС, отличные от Unix/Linux, добро пожаловать в мир RTOS. Их много: FreeRTOS, RTEMS, QNX, VxWorks, и ещё десятки, всех размеров и сортов, и они активно используются.
    Ответ написан
    4 комментария
  • Хотите задать вопрос администрации Тостера?

    Adamos
    @Adamos
    Редко задаю вопросы, но в последний раз столкнулся с тем, что сервис требует закончить заголовок вопросительным знаком.
    Имхо, идиотизм и провокация безграмотных конструкций типа "Сделать нужную мне фичу?". Рекомендации - это замечательно, но принудиловка - глупо.
    Ответ написан
    15 комментариев
  • Хотите задать вопрос администрации Тостера?

    devspec
    @devspec
    Помогло? Отметь решением
    Вот тоже не нравится удаление вопросов с пометкой "нельзя дать однозначный ответ".
    Бывает, напишешь текста пару килобайт в попытке помочь человеку, постишь - а вопроса-то уже нет.
    Может, создать отдельный раздел и переносить такие вопросы туда?
    Ответ написан
    1 комментарий
  • Какую базу использовать для локального приложения?

    СУБД SQLite должна подойти.
    Ответ написан
    Комментировать
  • Почему говорят, что postgress лучше для более-менее серьезного проекта чем что-либо иное?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега PostgreSQL
    Седой и строгий
    Этот вопрос на Тостере задают примерно раз в неделю и в Интернете полно сравнений. Например, это или это. Для меня лично самый главный косяк MySQL в том, что в 2018-м году он даже стандарт SQL 92-го года поддерживает не в полном объёме. Или вот косяк из недавнего вопроса - он не запускает триггер на действиях с внешними ключами. И таких косяков просто чудовщное количество. Как только выходишь за рамки чего-то сложнее select * from some_table, начинаешь материть разработчиков ежесекундно. И ещё один факт, мало влияющий на повседневную работу, но достойный упоминания - при проверке статическим анализатором кода нескольких популярных СУДБ, MySQL по количеству ошибок оказался на первом месте с существенным отрывом!
    Ответ написан
    11 комментариев
  • Как избежать увеличения автоинкремента при неуспешном запросе?

    Melkij
    @Melkij
    PostgreSQL DBA
    Никак.
    Сиквент гарантированно уникальный и не транзакционный. Ничего о последовательности выдачи значений и уж тем более без пропусков он не говорит.
    Ответ написан
    Комментировать