• Оффер в слепую - нормальная практика?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Оффер в слепую — нормальная практика?

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

    Когда вас хотят на***ть конечно же.
    Можно ли требовать его подписание до принятия оффера?

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

    Если с самого начала у вас возникли вот такие вопросы к компании - это не красный флаг, это прожектор с фанфарами, что ни в коем случае туда идти нельзя
    Ответ написан
    Комментировать
  • Оффер в слепую - нормальная практика?

    @Drno
    Нет конечно. а то подпишешь оффер с какой нить военной компанией в африке...
    Ответ написан
    9 комментариев
  • Как использовать sqlite python в многопоточности?

    @antares4045
    Коннект надо поднять ОДИН раз в главном потоке а курсоров из него уже можете понаделать на все потоки (вроде). Если не поможет: то только открывать-закрывать подключение для каждой операции, например так: https://qna.habr.com/q/1062578#answer_2040432.

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

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

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

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

    Sqlite это просто файл у вас на диске, и еcли бы не та защита которая вам не даёт создать многопоточную программу, то вам бы казалось, что она вообще не работает: каждый поток видит в базе только то, что сделал в базе он сам, а после перезапуска вы вообще видите в лучшем случае версию базы от потока, закрывшего соединение последним (а то и вообще битый файл).
    Для того, чтобы всякие профессионалы не писали, что "этим вашим sqlite не возможно пользоваться", была встроена защита (куда более адекватный аналог которой есть на всех файлах microsoft office) если хоть кто-то сейчас работает с файлом, то его открывать нельзя и, если не оговорено обратное, падает с ошибкой.

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

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

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

    cursor.execute(clause, props)
    result = cursor.fetchall()

    или что там у вас было пишем

    with sqlite3.connect(`Ваши параметры подключения`, timeout=`Какое-то зверски большое число секунд, которое мы готовы "стоять в очереди"`) as connect: 
      # создаём подключение к базе которое существует только в рамках блока with 
      # то что мы здесь напишем должно отработать максимально быстро
      cursor = connect.cursor()
      cursor.execute(clause, props)
      result = cursor.fetchall()

    В идеале вообще вынесите это в отдельную функцию

    p.s. если вы зашли сюда в поисках истины, то мы продолжили общение тут и в итоге победили.
    Ответ написан
    9 комментариев
  • Что делает этот код на Python?

    NeiroNx
    @NeiroNx
    Программист
    Плохой код. marshal очень зависит от версии.
    Ответ написан
    4 комментария
  • Что делает этот код на Python?

    Steel_Balls
    @Steel_Balls
    Это зловред
    Ответ написан
    Комментировать
  • Где взять задачки для пошаговой прокачки навыков Gitlab-CI?

    @vitaly_il1
    DevOps Consulting
    Советую взять любой проект - реальный на вашей работе, или какой-нибудь open source из github, и настроить базовый CI в Gitlab. Потом добавить какой-нибудь security scanner, static code analyze. Потом подумать как можно улучшить деплой.

    Второй вариант - попробовать использовать Gitlab-CI для автоматизации админских задач - например, человек приходит (уходит) в\из фирму - посылаем извещение в  Slack, посылаем ему док-ты, и т.п.

    См. также https://qna.habr.com/answer?answer_id=1981278
    Ответ написан
    4 комментария
  • Скомпилированный в GCC exe файл вылетает досрочно?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Звучит в точности как симптомы Undefined Behavior. На самом деле программа вылетает из-за, например, доступа к неправильным указателям. Но во время отладки звезды выстраиваются так, что это некорректное действие не приводит к падению программы.

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

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

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

    fenrir1121
    @fenrir1121
    Начни с документации
    INSERT ... ON CONFLICT DO NOTHING
    Ответ написан
    Комментировать
  • Как получить первую дату в этом году в гугл таблицах?

    @ivan-kis86
    =date(year(today());1;1) покажет 01.01.2023
    вот такую формулу можно использовать. только если наступить 2024 год т уже дата будет 01.01.2024
    Ответ написан
    1 комментарий
  • Какую систему биллинга для сервисов на Python или NODE использовать?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    все что касается денег - только с нуля, опираяся на API платежки
    подсматривать в готовое можно, но использовать не советую
    это, конечно, если потом [жопой] за код отвечать, если наваял и отдал - можно и django payments какой нибудь
    Ответ написан
    Комментировать
  • Почему aiohttp web сервер перестает отвечать на запросы?

    @Everything_is_bad
    По логам больше похоже на сетевые проблемы, а так, винда не лучшая ОС для aiohttp
    Ответ написан
    6 комментариев
  • Как удалить много строк (порядка 500.000) из csv файла в Python?

    @deliro
    Просто перепиши в соседний csv файл только те строки, которые должны остаться

    И можно ли это сделать не используя библиотеку csv?

    Так и быть, разрешаю
    Ответ написан
    Комментировать
  • Что вы делали для облагораживания разработки на php?

    p4s8x
    @p4s8x
    1) Тестовый сервер
    Очень часто бывают ситуации, когда разработчик(в частности фрилансер) находится не за своим любимым рабочим местом, а где-то в гостях, в отъезде и т.д.
    Когда появляется необходимость исправить баг или внести какие-либо изменения — разворачивать за чьим-то ноутбуком/стационарником все инструменты, ставить денвер, качать все целиком, разворачивать базу. Значительно проще поставить winscp¬epad++ и внести правки на продакшн. С увеличением частоты таких «правок» код превращается в то, что описано выше.
    Для решения таких проблем в первую очередь введен регламент — запрета вносить правки на продакшн, но! одновременно с этим допускается работа на тестовом сервере! Все правки, мелкие большие с сервера коммитятся в свн(изучить консольные команды svn для разработчика не составляет проблемы… их нужно 2-3 в такой ситуации) и уже только после этого апдейт на продакшене. Для апдейта на продакшене даже сделан www-скрипт, который позволяет делать апдейт без подключения к ssh и т.д.
    Изменения в БД все только через миграции!
    Так что делайте тестовый сервер обязательно! ИМХО необходимая вещь любому проекту.

    2) Трекер! Писать и общаться через трекер воспитывает и клиента и заказчика.
    Мы на томже тестовом развернули редмайн. Позже добавили к нему tikiwiki, в которую пишутся полезные няшечки для других разработчиков и клиента. Трекер также отображает активность разработчиков для клиента. Клиенту приятно посмотреть, что вот была такая ошибка и по её исправлению был сделан такой-то коммит и вон чето поменяли.

    3) Проведение рефакторинга. Очень сложно клиенту объяснить, что это такое и зачем он нужен. Почему он должен платить за «переписывание» кода? Пишите сразу правильно, скажет он. Практика показывает, что всетаки можно доказать клиенту необходимость этого действия.

    4) Автоматические тесты.
    На тестовом сервере далеко не всегда можно увидеть все проблемы- не поломался ли чужой код.
    Использование фреймворков позволяют не разводить тотальную быдлятину и обложить код тестами.
    Ответ написан
    3 комментария
  • Как правильно к переменной задать функцию из PySimpleGUI?

    @maximq
    QA Engineer
    Пробовали искать? по запросу pysimplegui open file dialog очень много подходящих результатов
    https://stackoverflow.com/a/67069467
    https://www.pysimplegui.org/en/latest/#popup_get_file

    text = sg.popup_get_file('Please enter a file name')
    sg.popup('Results', 'The value returned from popup_get_file', text)
    Ответ написан
    Комментировать
  • Использование Linux?

    @rPman
    Первая проблема любого linux - это драйвера, пока производители не пошевелятся, доля этой ос будет не выше 3-5% а пользователи будет играть в рулетку - заведется/не заведется.

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

    Ну и по поводу запуска приложений, библиотеки устанавливать надо и на windows. Если разработчик не позаботился чтобы отметить нужные в зависимостях, ставить из вручную. Те что идут в репозитории обычно корректно настроены.
    Ответ написан
    1 комментарий
  • Есть ли смысл учиться в вузе на заочном, платно, на информатике?

    saboteur_kiev
    @saboteur_kiev Куратор тега IT-образование
    software engineer
    Отвечу так.
    НИКТО не знает будет ли какой-то толк через 4-5 лет даже в самой РФ.

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

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

    Лично я не сталкивался, но я не меняю работу часто, и меня больше брали по рекомендации со стороны.
    Ответ написан
    Комментировать
  • Можно ли как либо защитить php-проект от "угона" другим наёмным программистом (фрилансером)?

    pindschik
    @pindschik
    ФЫВА ОЛДЖ
    Вот уже и пришло на хабр поколение, не читавшее хабр :)
    https://habr.com/ru/articles/142668/
    Ответ написан
    Комментировать
  • Спалят ли HR резюме?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    есть
    поэтому указываешь свой второй номер
    "я сам себе начальник"

    яндекс мало что можеит впечатлить кроме гигантов -конкурентов, а из них, обычно, глупо переводиться в Яндекс
    Ответ написан
    7 комментариев
  • Можно ли выделить ячейки в столбце цветом, в которых совпадает имя и фамилия? А отчества разные или отчества вообще нет?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    Разделите ФИО на 3 части через SPLIT, возьмите первые 2, составьте ФИ. Останется только сделать список уникальных значений и посмотреть на длину начального списка и списка уникальных значений.

    Если нужно готовое решение - пишите в личку
    Ответ написан
    Комментировать