Задать вопрос
  • Стоит ли Vim своего внимания для frontend-разработчика?

    @psychedelicGeek
    Любитель программировать
    Я использую Vim как Full Stack разработчик, скажу даже, что я все проекты разрабатываю на нем практически.
    Я подключил плагины, подключил туда YouCompleteMe, LSP и теперь у меня как свой VSCode, сменил оформление vim, подключил git плагин к нему, настроил .vimrc и теперь я не знаю проблем.

    На данный момент мне захотелось что то от себя добавить, и я решил поизучать VimScript.

    Вдобавок к Vim, я использую и Neovim, штука тоже хорошая.

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

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

    Хочу добавить, что я еще и сисадмин, и для меня Vim и Nano это базовые вещи на сервере
    Ответ написан
    3 комментария
  • Стоит ли Vim своего внимания для frontend-разработчика?

    Абсолютное большинство фронтендеров не используют Vim и прекрасно справляются. Те, кто использует, тоже справляются. Десятикратной форы не даёт ни то, ни другое.
    Поэтому, я бы сказал, что энергию лучше направить на что-то более практическое, но если хочется, то попробуйте, конечно.
    Ответ написан
    Комментировать
  • Регистрацию своего VPN в РКН кто делал?

    @TechExpert
    Чё то логика какая-то замкнутая. Вы хотите бороться с проблемами, которые создал ркн, через регистрацию у них? Самоотверженно.
    Ответ написан
    1 комментарий
  • Какие ветки необходимо хранить на удаленном сервере?

    @shushara4241
    Первый вопрос: git - распределенная система контроля версий, предполагающая, что все ветки будут синхронизироваться с остальными участниками. Поэтому бояться хранить в удаленном репозитории какие-то "не те" ветки не стоит, единственное, что нужно обговаривать условия именований (например feature - ветки можно именовать по шаблону feature/{task_id}). Кроме того git flow предполагает наличие feature - веток, release, hotfix etc. поэтому ограничиваться в этом плане не стоит.
    Второй вопрос: это ветки, в которых идет доработка предыдущих релизов. Например, если в версии 3.2.2 нашелся баг, то чтобы пользователи с версией 2.5.5 получили это исправление тоже, коммит с исправлением попадает и в ветку 3.2.х (и выпускается релиз версии 3.2.3) и в ветку 2.5.х (и выпускается релиз версии 2.5.6). Это опционально, кому-то просто удобно разрабатывать так, но вы можете выбрать то, как удобнее именно вам и вашей команде
    Ответ написан
    1 комментарий
  • Какие ветки необходимо хранить на удаленном сервере?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Если проект небольшой, то Gitflow вам, скорее всего, не нужен. Достаточно одной главной ветки (main), куда изменения вносятся через pull request. Для каждой задачи создаёте короткие ветки (например, feature/task-name), работаете в них и после завершения слияния с main удаляете. Саму ветку main закрывайте от прямых изменений. Никто не должен коммитить напрямую в main.

    Что касается веток на сервере: храним как минимум те ветки, с которыми совместно работаем. Иначе как коллеги их получат к себе? Это могут быть главная ветка, стабильные версии или временные ветки задач, если нужно поделиться ими с коллегами. Всё остальное — локально.

    Ветки с номерами версий (например, 2.3.X) используются в крупных проектах для поддержки старых релизов и выпуска патчей. Если у вас нет таких требований, можно обойтись одной актуальной веткой.
    Ответ написан
    1 комментарий
  • Какое качество у репозиториев моих Python проектов на GitHub?

    opium
    @opium
    Просто люблю качественно работать
    Если ты звездный гитхабер то зачем ты ищешь работу
    Если ты хочешь сделать для собеседования то нет смысла тратить на это время
    Ответ написан
    Комментировать
  • Как выучить Python?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    в котором на протяжении всей книги рассказывается, как правильно написать " Hello World ".

    В плане книг советую попробовать "Изучаем Python" (Марк Лутц, 2 тома), но это голая информация.
    Параллельно с чтением нужно активно писать код. Для начала можно решать задачи. Олимпиадные или на сайтах по типу CodeWars.
    Когда они будут решаться легко, выбери какое-нибудь направление (веб-разработка и боты, анализ данных, нейронки, автоматизация) и повторяй цикл - читай учебный материал и пиши код. Главное, чтобы это было осмысленно - если это нейронки то, например, попробуй сделать решалку математических задач, распознающую примеры на фотке, если это веб - можно попробовать повторить уже какой-то проект или "по дружбе" сделать кому-то то, что нужно человеку.
    Ответ написан
    4 комментария
  • Как выучить Python?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
  • Как быть с тестовыми заданиями при трудоустройстве?

    Maksim_64
    @Maksim_64
    Data Analyst
    Был фидбек, не был фидбек, не нужно воспринимать все это на свой счет. Больше, активности. Представь себе, следующую ситуацию, баскетбол. Тебе нужно забить три трех очковых подряд, это не просто. Чем больше попыток, зайти на страйк, тем больше шансы. Рецепт один, больше откликаться, выполнять тестовые задания, пытаться удивить в тестовых заданиях и т.д.

    Твоя цель - оффер, и все посторонние мысли о справедливости, какая компания, какое тестовое и т.д. Они только отвлекают и мешают.
    Ответ написан
    Комментировать
  • Какие существуют методы обхода запрета на удаленку за пределами РФ?

    vpn на уровне роутера в Россию.

    Но вообще такие запреты не на ровном месте делаются, а из-за законов, так что по сути ты ещё и работодателя своего подставляешь так, если всё вскроется.
    Ответ написан
    4 комментария
  • Реально ли иностранцу (гражданину Нидерландов) найти работу в IT в России?

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

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Попробуй GIST индекс
    Ответ написан
    Комментировать
  • Где найти ошибку в коде?

    Vindicar
    @Vindicar
    RTFM!
    Почитай про импорты в питоне, какой-нибудь толковый учебник (типа Лутца).
    Ты делаешь относительный импорт (import .something), но это можно использовать только в крупных модулях проекта, а не в корневых файлах. Импортируй как обычно, без точки.
    Ответ написан
    Комментировать
  • Нужна ли магистратура для перехода в менеджмент?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Занимал руководящие должности ещё до получения вышки. Но есть компании, в которых это невозможно.
    Ответ написан
  • Подойдет ли базовый MacBook Air M1 8/256 для web разработки?

    @Tur8008
    У меня Mac book air 8 256 m1. Занимаюсь веб разработкой. Полностью согласен с автором. 8 Гб некомфортно мало. Память закончится на открытии 2х браузеров, vscode и docker. Повёлся на хайп и советы друга. При этом говорил ему что 8 Гб мне мало, но почему то повёлся на восторженные хвалебные m1. Буду менять. Запомните 8 Гб озу для разработки в 2024 г это несерьёзно!
    Ответ написан
    Комментировать
  • Подойдет ли базовый MacBook Air M1 8/256 для web разработки?

    Не верьте хайповым видео о том, что его вам хватит для разработки. Сама машинка в плане качества и производительности просто прекрасна. Я являюсь владельцем M1 Pro 16/512. Как раз занимаюсь веб-разработкой.
    - Процессор этот смог бы ещё долго быть конкурентным. Тут проблемы нет.
    - Даже маленький размер диска совсем не проблема, потому что можно купить внешний диск, а т.к. у нас Thunderbolt, то вы практически не будете ощущать недостатка скорости. Внутренний SSD состоит из двух чипов, из-за этого диск работает быстрее, чем на M2 Air, где только один чип.
    - Самая главная проблема, которая хоронит этот компьютер для какой-либо серьезной разработки - это память... 8 Гб никуда не годится. Мне 16 впритык, куда уж там 8. Когда вы откроете браузер, IDE, запустите Docker, запустите автоматическую сборку при изменениях файлов и т.д и т.п., а потом включите Activity Monitor, то вы увидите то, что вам не покажут радостные хайпожоры, расхваливающие этот Мак именно как инструмент разработки. Увидите вы жуткий размер swap и график Memory Pressure жёлтого или красного цвета. Это означает, что памяти уже сильно не хватает.

    Поэтому, брать стоит только 16 Гб или больше. Я бы очень посоветовал не брать ноуты на Windows. Это дрянь. Автономность привязывает вас к розетке, с качеством сборки очень трудно угадать, да я бы не взял винбук из-за одного только Маковского трекпада, который является чуть ли не произведением искусства. На винбуках близко таких нет, даже на самых дорогих.

    В каких случаях можно брать M1 Air 8/256?
    Повторюсь, сам компьютер великолепен. Лучше печатной машинки за эти деньги вы не найдете. Он прекрасен. Если у вас уже есть что-то мощнее, то его можно взять именно как печатную машинку, которую везде таскать с собой.
    Но как только вы выйдете за пределы печатной машинки, нехватка памяти будет вас напрягать. Тем более, нельзя говорить ни о какой перспективе.

    PS. Почитайте каменты к моему посту. Возможно, этот вариант подойдёт.
    Ответ написан
    8 комментариев
  • Какой ноутбук выбрать для разработки мобильных приложений?

    @rPman
    Если выбор из двух - то однозначно второй.

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

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

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

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

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

    Монитор - почему я всем говорю, ноутбуки не для работы, только для коротких эпизодов и правок. Если монитор не 24" (именно на такой размер ориентируются подавляющее большинство сред разработки и интерфейсов различных утилит) то придется чем то жертвовать, где то лишние действия (свернуть/показать окно), где то чаще листать по коду, который не влезает в экран. Момент спорный, и многие скажут что хватает и 15" поэтому третьим пунктом поставил, это не так важно как клавиатура и мышка, но недостатки от сюда повышают нагрузку на эти пункты.
    Ответ написан
    1 комментарий
  • Оффер в слепую - нормальная практика?

    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 комментариев