• Когда лучше использовать MongoDB?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега PostgreSQL
    Седой и строгий
    Когда у всего коллектива напомажены бороды и подвёрнуты штанишки, а у компании нет будущего.
    Ответ написан
  • Что хотят тимлиды от новобранцев?

    BojackHorseman
    @BojackHorseman
    ...в творческом отпуске...
    хотят минимизировать время вхождения в проект.

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

    Как они определяют, этот разработчик достиг уровня миддл в их глазах или нет?

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

    стараются понять, соответствует ли человек этому самому пресловутому порогу вхождения. естественно, чисто субъективно. потому что любой синтетический тест остается синтетическим тестом. даже техническое собеседование.
    Ответ написан
  • Зачем в книгах оставляют пустые страницы?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    @Sha644
    Много текста
    technical

    systemd appropriates the cgroup tree and takes control of it and completely messes with any other user of the cgroup tree and really wants them all to go through systemd, systemd was wirtten basically on the assumption that nothing but systemd would be using cgroups and they even tried to lobby to make cgroups a private prioperty of systemd in the kernel but that went no-where.

    systemd's usage of cgroups for process tracking is a fundamentally broken concept, cgroups were never meant for this and it's a good way to fuck resource usage up

    systemd has a hard dependency on glibc for really no good reason

    systemd relies on DBus for IPC, as the name 'Desktop bus' implies DBus was never written with this in mind and it shows. DBus was written to facilitate IPC within a single desktop session, not as a transport during early boot. This is why systemd wanted to push kdbus heavily beause kdbus solved some of the problems inherent to DBus being used as IPC during early boot.

    systemd's security and general code quality practices are less than stellar, a lot of security bugs pop up in systemd due to its insistence of putting quite a bit of code in pid1 and quickly adding new features and quickly changing things.

    political

    systemd creates dependencies and is a dependency of things for political reasons in order to encourage people to pick these things. This is not conjecture, Lennart has admitted multiple times that he creates dependencies to 'gently push' everyone to the same configuration

    systemd is monolithic for its own sake. It's basically product tying to encourage people to pick an all-or-none deal to again gently push towards this consistency

    personal

    Lennart Poettering, the face of systemd and its lead dev is the biggest primadonna FOSS has ever known who continues to shift blame and demand that entire world adapt to his designs.
    (с)/u/jij_je_walkman_terug
    Ответ написан
  • Как выучить 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.
    Ответ написан
  • Как правильно делать бекапы 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
    https://p1d1.blogspot.com
    Под лежащий камень вода не течёт. Вы какую-то странную проблему нашли если честно.

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

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

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

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

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

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

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

    всяких C++..


    5b9691e4ae14d531041711.jpeg

    Если по делу - нет.
    Ответ написан
  • Информация в книге успела устареть?

    Порядок вычисления выражений вида n=(--i)*(i--); в стандарте не определён, и здесь возникает UB (undefined behavior) — неопределённое поведение. В разных компиляторах или на разных платформах результат может отличаться, а потому так писать нельзя!
    Ответ написан
  • Что делают программисты на Unity целый день на работе?

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

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

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