Задать вопрос
  • Backend C# без JS не востребован?

    @mletov
    Если хотите чтобы работодатель принял вас таким, какой вы есть, исключительно как бэкендера, то нужно быть очень крутым бэкендером: помимо самого шарпа знать docker, kubernetes, иметь хороший опыт написания многопоточных приложений, опыт работы с утечками памяти, навык написания сложных SQL запросов и их оптимизации, опыт работы с нерелеационными БД и т д. В большинстве случаев проще вдовесок к среднему знанию шарпа освоить на среднем уровне условный Angular и идти в фулстеки, чем продемонстрировать на собесе хороший сеньерский уровень как бэкендеру.
    Ответ написан
    3 комментария
  • Что значит Junior/Middle+?

    Annikangl
    @Annikangl
    Backend developer (PHP)
    Я считаю себя разработчиком уровня Junior+ или же Strong Junior. В это понятие лично я вкладываю, то что в отличии от совсем новичкой я способен писать код и стараюсь писать его грамотно, с соблюдением некоторых принципов и паттернов. Также, в отличии от времен когда я был совсем зеленым, у меня пропал страх *нерешаемых задач*. Теперь я понимаю, что нет нерешаемых задач, а есть многосоставные и сложные задачи, но не нерешаемые.

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

    @tukreb
    Потому что SEQUENCE не для PostgreSQL, а для MySQL и его клонов.
    Для PostgreSQL нужно использовать IDENTITY

    /**
         * @ORM\Column(name="id", type="integer", nullable=false)
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="IDENTITY")
         */
        private int $id;

    А если вам нужно установить какое то правило например начинать с 100, то вообще нужно NONE

    /**
         * @ORM\Column(type="id")
         * @ORM\GeneratedValue(strategy="NONE")
         * @ORM\SequenceGenerator(sequenceName="custom_seq", initialValue=100)
         * @ORM\Id
         */
        private int $id;
    Ответ написан
    1 комментарий
  • COPY в Postgresql?

    @galaxy
    Слейте все в один файл.
    Под *nix одной командой:
    tail -qn +2 files/*.txt > data.csv
    (если все файлы в одной папке files)

    Ну либо берете список файлов (из вывода dir / ls) и, допустим, в продвинутом текстовом редакторе дописываете к каждому названию куски команды COPY. Получится один большой скрипт
    Ответ написан
    1 комментарий
  • Путь до junior developer (java/kotlin). Сколько времени потребуется?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день.
    Расскажу про свой путь становления разработчиком и может быть это натолкнет вас на некоторые мысли и возможно, даже поможет принять решение.

    Лет 10 назад изучал html, css, php, SQL, как хобби.

    Аналогично. Правда, это было 13 лет назад. Я тогда забил на РНР. Первый сайт вообще поднял на Microsoft FrontPage, затем уже пошли различные CMS (Joomla, WP, Drupal). Окончил вуз по другой специальности. 3-4 года фрилансил как ВП разработчик, но в определенный момент надоело клепать сайты и захотелось чего-то большего. Тогда я владел рнр, js на определенном уровне, но писать на нем не было желания. Выбор пал на Java. Начал изучать самостоятельно с 2018 года (писал парсеры, приложения на JavaFX, пару приложений для андроид и т.д.). Но с учетом моей любви к вебу и к энтерпрайз, то в 2020 году прошел 6-мксячный курс по Java Core & Java Enterprise. Сам много чего изучал. Читал книги, брал курсы на udemy, изучал чужой код на гитхаб, брал мелкие, простые заказы, писал пет проекты и т.д.

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

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

    Путь до junior developer (java/kotlin). Сколько времени потребуется?

    В первую очередь, зависит от вас. На курсах преподаватель может впихнуть в вас весь учебник, но не факт, что вы его запомните. Но минимальное время наверное, 6 мес. Как правило, курс Java Core занимает примерно 3 месяца и Android API занимает тоже 3-4 месяца. Этого времени достаточно для того, чтобы вы устроились в качестве trainee || junior.

    Вот, полезные ссылки, которые помогут вам в достижении ваших целей:
    https://www.hackerrank.com/
    https://refactoring.guru/
    https://www.baeldung.com/
    https://www.it-academy.by/
    tutorials.jenkov.com
    https://www.tutorialspoint.com/java/index.htm
    https://vladmihalcea.com
    https://github.com/enhorse/java-interview
    гугл

    Не забываем про учебники:
    Java head first (хотя его я не очень люблю)
    Г. Шилдт - Полное руководство по Java
    Р. Лафоре - Алгоритмы и структуры данных Java
    Б. Эккель - Философия Java
    Р-Г. Урма - Современный язык Java.
    Б. Гетц - Java Concurrency на практике
    и др.
    Ответ написан
    2 комментария
  • Можно код-ревью проекта на C# с юнит тестами?

    Сначала замечания по реализации:

    1. Раз уж мы делаем свой аналог List - тогда есть смысл вынести его в библиотеку, а не с Exe.
    TargetFramework стоит делать чуть более новым. Сейчас LTS - .NET 6 (но это не так уж и критично)

    2. Почему List Только для char реализован? Почему не сделать его обобщённым?

    3. Почему List не реализовывает стандартные интерфейсы? Тот же IEnumerable<T> хотябы.

    4. PrintForward - явно какой-то лишний метод. Список не должен отвечать за вывод в консоль.

    5. Публичный сеттер в Node выглядит как что-то опасное. Так можно изменить Next или Previous - лист изменится, вплоть до изменения количества элементов, но значение Count в самом листе не изменится, от чего всё поломается.

    А вот тесты наоборот выглядят вполне неплохо, но надо бы покрытие посмотреть.
    Ответ написан
    3 комментария
  • Как агрегировать записи одной таблицы в PostgreSQL?

    rozhnev
    @rozhnev
    Fullstack programmer, DBA, медленно, дорого
    Простой запрос с суммой и группировкой
    select 
    	box_id, max(name), max(another_name), "product", 
    	sum(coalesce(incoming::numeric, 0)) "incoming",
    	sum(coalesce(output::numeric, 0)) "output",
    	sum(coalesce(incoming::numeric, 0)) - sum(coalesce(output::numeric, 0)) "balance"
    from table1
    group by product, box_id
    order by box_id;


    PostgreSQL live
    Ответ написан
    4 комментария
  • Как реализуется внедрение 1С?

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

    Ваши представления о установке/внедрении 1С катастрофически поверхностны и наивны.
    Разница между "Установкой 1С" и "Внедрением 1С" примерно такая же, как между научиться заводить машину и научиться на ней ездить.
    У франчей установкой и внедрением, как правило, занимаются разные специалисты, т.к. это совершенно разные области знаний и уровень владения. Установкой занимается специалист с навыками администрирования, а для внедрения нужно отлично знать внедряемую конфигурацию, предметную область, а также все инструменты языка 1С и механизмы платформы.
    Если база файловая, то для установки там нужно пару раз setup.exe, несколько раз кликнуть мышкой и через 10 мин. программа готова к работе.
    Если база серверная, то времени уйдёт немного больше, но опытный админ установит и всё развернет за пару-тройку часов.
    Внедрением же можно заниматься месяцами и даже годами, в зависимости от внедряемого продукта 1С и автоматизируемых задач.

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

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

    это "Внедрение" или именно "Установка" 1С.

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

    anthtml
    @anthtml
    Системный администратор программист радиолюбитель
    Установка 1С это практически = Установка винды. "далее->далее->готово"
    Внедрение 1С это:
    1. Выслушивание хотелок заказчика
    2. Изучение существующих техпроцессов заказчика
    3. Предварительный подбор конфигурации
    4. Предварительный подбор технических требований и (при необходимости) оборудования для информационной системы.
    5. Обсуждение с заказчиком предполагаемого результата и затрат на его реализацию
    6. (В случае необходимости) доработки выбранной конфигурации под нужды заказчика
    7. (В случае необходимости) составление ТЗ или работы по доработке информационной системы заказчика для возможности взаимодействия с внедряемой системой
    8. Непосредственно установка
    9. Ввод первичной информации (общие данные, номенклатура, остатки и т.д.). Вот здесь варианты: можно импортировать из иных имеющихся систем, можно вбивать ручками (своих работников или заказчика), касательно Аптеки, там для начала может хватить и типовой номенклатуры.
    10. Тестирование системы
    11. Обучение персонала заказчика работе с системой
    12. Краткосрочный контроль за начальным ходом эксплуатации и исправление выявленных багов
    Данный список далеко не полный, естественно этим может, будет, заниматься не один (десяток) человек
    Ответ написан
    Комментировать
  • Как реализуется внедрение 1С?

    besogonskiy
    @besogonskiy
    работаю php laravel разработчиком.
    Если вы Битрикс 1с специалист и не знаете 1с, то термин "внедрение 1с" будет слишким широким для вас. 1с поделена на несколько ниш. Специалисты 1с как правило охватывают пару-тройку из этотого. речь идет о конфигурациях 1с. Кто то умеет торговлю внедрять, (УТ11. УТ10.3), кто то ERP2, кто то Зарплату (ЗУП), кто то всего понемножку. чтобы внедрить 1с недостаточно просто скачать инсталляшку и установить. Там надо еще помогать клиенту настраивать учет. множество настроек. Когда надо внедрить 1с, то клиент обращается к 1с франчайзи компаниям и обрисовывет свою задачу. Под его нужды продежкт менеджер или кто-нибудь еще выбирает конфигурацию 1с и назначает нужных специалистов под нее. Ну и оговариваются моменты синхронизации 1с с имеющимися сервисами или системами клиента. а всё знают только очень опытные специалисты, которые поработали в разных местах в том числе и в разных франчайзях. Они исходя из своих знаний могут вам порекомендовать что то. но внедрять лучше если будет узкоспециализированный специалист каждый вид конфигурации 1с. Таких и отправляют. Под бухгалтерию один, под зарплату другой, под производство третий.

    При этом нужно иметь ввиду, что внедрение подразумевает в себе не только настройки параметров 1с через дружественное меню, но и доработки под нужды клиента. И если программист 1с не владеет в совершенстве конкретной конфигурацией (так называются программы написанные под 1с) то он может понаписать доп функционала, а потом выяснится что там уже такое предусмотрено и можно было бы потратить один час чтобы все настроить и дописать пару строк кода. 1с это целое направление где на каждое поднаправление свой специалист.
    Ответ написан
    Комментировать
  • Список технологий необходимых для backend php developer?

    @Vitsliputsli
    Технологий слишком много, и у разных компаний может быть совсем разный стек. Кто пишет сайты - обязательно фреймворки, а где-то их не будет. Где-то будут требовать знание Vertica или Clickhouse, а много где вообще ни разу не услышите этих слов. Кто-то захочет еще и знание Go, а где-то очень желателен будет React и пофиг что это не backend.
    Но есть и общие моменты, очевидно знание git, PSR, composer, xdebug, для мидла должны быть не "навыки ООП", а отличное знание и понимание (в том числе SOLID, GRASP), оценка сложности алгоритмов, sql с пониманием работы индексов (разумеется нормализация, транзакционность, уровни изолированности, ACID), знание того же самого PHP (начиная с того, где и когда применяем Exception заканчивая SPL, Reflection, даже если никогда к ним не обращались, нужно знать, что они есть, когда возникнет необходимость), способы защиты от уязвимостей, сложности параллелизма (та же самя "гонка"), типы данных и что они из себя представляют (начиная с банального почему деньги не храним в float и т.п.). К примеру, вы можете не использовать ORM, но должны знать какие они бывают и доказать почему собственно вы их не использовали в конкретной задаче. Тоже самое trait, clojure и т.д. И много еще чего. Вплоть до провакационых вопросов "есть ли в php перегрузка?".
    Это часть базисных вещей, на которые накладывается специфика работы со своими технологиями.
    Ответ написан
    Комментировать
  • Как убрать readonly в Postgresql?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Postgresql вам редактировать и не препятствует. Раз вы смогли сделать create table - значит база не в read only режиме. Напишите соответствующий update и выполните.

    А вот вашему GUI клиенту скорей всего не нравится отсутствие primary key.
    Ответ написан
    Комментировать
  • Какой объем знаний и навыков нужно для того чтобы стать middle Rust разработчиком?

    vabka
    @vabka Куратор тега Rust
    Сейчас редко нанимают чистых растаманов, тк язык молодой.
    Обычно нанимают тех, кто переходит с других, более традиционных языков.
    Так что тебе сначала надо стать мидлом/сеньором в C++/Java/C#/C а потом дотянуть знания раста, чтобы уметь на нём решать задачи, аналогичные тем, которые ты решаешь с основным языком.

    Ну и соответствующий коммерческий опыт ~5 лет.
    Учитывай ещё и специфику Rust-проектов: это что-то новое, что требует безопасности и эффективности, где нельзя/нежелательно/невозможно использовать "Традиционные" языки.
    Так что и уровень ответственности и требуемых знаний будет выше, чем на аналогичную, например Java-позицию.
    Ответ написан
    1 комментарий
  • Как выжить IT-отделу в нынешних условиях?

    alexgp13
    @alexgp13
    Руководитель ИТ-проектов
    Пока ничего принципиально не изменится, будет переориентирование на Китай (собстенно, уже давно происходит). Будет некоторый дефицит серверного оборудования, но в большинстве фирм сейчас сервеные мощности в избытке, а пока проявятся проблемы, возможно, что то и поменяется.
    Возможно, есть смысл закупить какие то расходники (диски для хранилищ, картриджи, барабаны для принтеров).
    По ноутбукам и ПК никаких санкций еще не вводилось, будет просто рост цен в соответствии с курсом доллара/юаня.
    Критичные для работы бизнеса сервисы, наверное, есть смысл перетащить из иностранных дата-центров в РФ.
    Еще стоит приготовиться к росту зарплат, так как ИТ-специалисты сейчас востребованы и в условиях быстрого роста цен могут внимательнее смотреть на рынок.
    Вероятно, имеет смысл посмотреть на аналоги ПО, производители которого либо присоединились к санкциям, либо приостановили работу с Россией - Microsoft, Oracle, SAP, Adobe, Autodesk и т.п. Правда, наверное, не стоит сразу бросаться менять это ПО, но аналоги лучше изучить.

    p.s. все вышесказанное - просто мнение, не претендующее на абсолютную истину.
    Ответ написан
    Комментировать
  • Удалённая работа в зарубежной компании — какие есть подводные камни?

    gdt
    @gdt
    Программист
    Работаю удалённо, получаю в валюте, всё ок. Если компания грамотная - то даже в текущей ситуации (пока что) все проблемы можно решить. Проблемы с получением валюты есть только у тех банков, которые попали под санкции, в других банках всё работает. Конечно, на работу людей из РФ сейчас стали принимать гораздо меньше из-за рисков (понятно каких я надеюсь), но в целом всё ещё предлагают - с начала марта 2-3 предложения получил, из которых одно достойное (не хуже, чем у меня сейчас).
    Как говорится, стучите - и вам откроют, дорогу осилит идущий и тд и тп. Не слушайте никого, во всем мире полно как идиотов, так и вполне адекватных людей, которые будут к вам относится нормально вне зависимости от национальность.

    Как происходит перевод оклада.
    Чаще всего оформиться в штат в зарубежную компанию сложно, поэтому открывается ИП, и заключается контракт на услуги консультанта. В банке создаете валютную сделку, туда прикрепляете контракт (как основание для получения денег). Затем раз в учетный период (месяц) вы выставляете счет своей компании, в котором прописываете сумму, оговорённую в контракте, этот счёт отправляете в компанию и в банк. Компания отправляет деньги, они идут обычно несколько дней, когда доходят - вы получаете уведомление от банка, что на ваш транзитный счёт упала валюта. Тут начинается валютный контроль - специально обученные люди смотрят ваш контракт, инвойс (счёт) и перевод, если всё совпадает - получаете свою валюту (с новыми правилами 80% сразу превращаются в рубли). Не совпадает - пишут чего не хватает, компания делает доп документы, отправляете в банк, всё получается.

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

    P. S. По упрощенке ИП платит 6% налога + 1% на сумму свыше 300000р (есть ещё другие обязательные взносы, но они идут в вычет, если всё вовремя платить, так что всё равно выходит 6%). В РФ в ФОТ штатских сотрудников отчисления занимают больше 30%.
    Ответ написан
    2 комментария
  • Почему в Symfony не работают атрибуты?

    17_planet
    @17_planet
    Full Stack Developer, web-studio in Odessa
    Атрибуты это PHP . У вас должна быть версия 8.0 или выше.
    Ответ написан
    Комментировать
  • Golang jetbrains не читает БД в sql?

    @galaxy
    Если я правильно понял вопрос (а это непросто), то потому что язык SQL - нечувствителен к регистру, т.е. следующие запросы эквивалентны:
    select * from Groups;
    select * from groups;
    select * from GROUPS;
    SELECT * FROM groups;
    SeLeCt * FrOm GrOuPs;


    Если вы берете название таблицы/колонки (или иного объекта БД) в кавычки, он становится (по крайней мере, согласно SQL стандарту) case-sensitive, т.е. "group"/"Groups"/"gRoUps" - будут разными идентификаторами (например, все три такие таблицы могут существовать в БД одновременно).
    Если кавычек нет, идентификаторы по стандарту сравниваются после приведения к upper-case. В Postgres это немного не так: там идентификаторы без кавычек приводятся к lower-case.

    Т.е. другими словами, запрос create table Groups ... создаст в Postgres таблицу с именем groups. Запрос select * from GrOupS; будет также искать таблицу с именем groups.
    При использовании кавычек запрос create table "Groups" ... создаст таблицу с именем Groups. Запрос select * from "GrOupS"; будет также искать таблицу с именем GrOupS.
    spoiler
    Речь выше только про Postgresql. Другие СУБД могут вести (и ведут) себя по-другому. Так, в mysql поведение идентификаторов зависит от ОС (точнее, от того, case sensitive/insensitive ее файловая система) и от конфигурации БД.


    Обычно это не вызывает проблем, пока вы не начинаете использовать закавыченные и незакавыченные идентификаторы одновременно. Например, что скорее всего имеет место в вашем случае, таблица создается запросом
    create table Groups ...
    -- реальное имя таблицы - groups

    Когда же вы делаете запрос select * from "Groups", обращение идет к несуществующей таблице Groups.

    В общем, разберитесь, какое название у таблицы в БД (в psql команда \dt, или смотрите свойства таблицы в своей среде). Если оно не lower-case, используйте кавычки с точным названием (например, select * from "GROUPS"), в противном случае лучше обходиться вообще без кавычек.
    Ответ написан
    Комментировать
  • Выгорание. Как не сойти с ума?

    alexgp13
    @alexgp13
    Руководитель ИТ-проектов
    Ни слова о себе, своих интересах, названии "большого города"...
    Скажу про Москву - в общественных пространствах постоянно проходят разные (в том числе полностью бесплатные) мероприятия, выставки и т.п.
    Друзей, конечно, за год завести сложно, но знакомых, с которыми легко выбраться на мероприятия - легко. Поверьте, у Вас половина коллег, скорее всего, такие же как Вы и с удовольствием составят компанию как в баре, так и в парке.
    Театр, кино, шоу, спортивные мероприятия.
    В конце концов сетевые и простые игры.
    Берите себя за шкирку и выходите из дома. Вначале будет сложно, потом быстро втянетесь.
    Ответ написан
    2 комментария
  • Как получить данные из postgresql в python?

    shabelski89
    @shabelski89
    engineer
    На скорую руку
    import psycopg2
    from datetime import datetime, timedelta
    from pprint import pprint
    
    
    def get_dt(dt: str):
        return datetime.strptime(dt, '%Y%m%d')
    
    
    def get_dt_delta(dt: datetime, s=1, e=4):
        return dt - timedelta(days=s), dt + timedelta(days=e)
    
    
    def execute(config, sql, param=None, select_mode=True):
        connection = None
        try:
            connection = psycopg2.connect(**config)
            cursor = connection.cursor()
            if param:
                cursor.execute(sql, param)
            else:
                cursor.execute(sql)
            if select_mode:
                return cursor.fetchall()
        except Exception as E:
            print(E)
        finally:
            connection.close()
    
    
    def get_devices():
        devices_q = "SELECT * from devices LEFT JOIN devatt on devices.dev = devatt.dev " \
                    "WHERE devatt.att = 'otherinfo' AND devatt.value like '0%'"
        return [x[0] for x in execute(cfg, devices_q)]
    
    
    def generate_rep(devs, period):
        r = {}
        period_dt = get_dt(period)
        period_s, period_e = get_dt_delta(period_dt)
        for dev in devs:
            q = 'SELECT * from rawdata where deveui = %s and time between %s AND %s ORDER BY id DESC'
            rawdata = execute(config=cfg, sql=q, param=(dev, period_s, period_e))
            r[dev] = rawdata
        return r
    
    
    if __name__ == "__main__":
        cfg = dict(user="pguser", password="localpass", host="127.0.0.1", port="5432", database="wan_server")
        devices = get_devices()
        date = '20220308'
        result = generate_rep(devs=devices, period=date)
        pprint(result)


    1. смотрите как правильно работать с датой и временем
    2. не используйте интерполяцию в sql запросе
    Ответ написан
    1 комментарий
  • Как обходить блокировки при использовании ms sql?

    @Drno
    Арендуете VPS в европе или америк
    Ставите там ВПН сервер
    Подключаете к нему ВПн клиентом сервер с SQL
    Разрешаете принимать запросы SQL от ВПН сервака
    Естесвенно не забываем перенаправить доменное имя на новый IP или создать еще одно доменное имя и прописать их 2шт в программе юзера
    Ответ написан
    2 комментария