• На чём писать клиентское приложение с GUI?

    vabka
    @vabka
    Токсичный шарпист
    Можно посмотреть в сторону PWA и кэшировать данные в local storage или на диск.
    Ответ написан
    Комментировать
  • Как переписать код на более современный JS?

    @historydev Куратор тега JavaScript
    Острая аллергия на анимешников
    Всё с этим кодом в плане "современности" нормально.
    А вот в плане читаемости и переиспользования - нет.

    Можно например вот так переписать:

    const menu = document.querySelector('.burger-menu');
    const menuList = document.querySelector('.menu__list');
    const activateMenu = () => (menuList.classList.toggle('active-menu'), menu.classList.toggle('active'));
    
    menu.addEventListener('click', activateMenu, true);
    Ответ написан
    2 комментария
  • Существует ли максимально простой и универсальный способ сборки проектов с GitHub в готовый exe?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    там очевидно просматривается *.sln
    на гит уже давно есть опция "открыть в визуал студии" что то изменилось опять.. ((
    проще некуда.. тем не менее, в самой студии точно можно..
    может и vc code справится, но сам сижу на виндовой студии, коду так и не освоил

    ps
    Обычно это компилируется в exe, насколько понимаю, в Visual Studio. Но я не знаю как ее правильно установить, какие модули подключать и все такое прочее. Ставить все и сразу - 30гб места. Довольно много и мощно.
    ставьте "десктоп". это минималка и оч даже осмыслено. если будете продвигаться - всегда пригодится.
    ... далее, если возникают зависимости, студия сама сообщит, и как правило предложит догрузить необходимое..
    .. и как правило верно предложит.. но не гарантия что всегда ;))

    pps потом скачиваете zip, распаковываете, и открываете *.sln
    а если будете развиваться, со временем разберетесь и в более сложных вариантах ))
    Ответ написан
    Комментировать
  • Почему конвертируемый код Python в EXE блокирует антивирус?

    @rPman
    Безотносительно к способу создания exe из python, рассылка exe по почте это уже маркер для антивирусов, это классический путь распространения вредоносов и нормальной практикой вообще считается блокировка этого типа контента.

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

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

    Так же, помимо получения цифровой подписи, настоятельно рекомендуется распространять свое приложение не в виде exe файла а в виде установочного пакета (например как приложение microsoft store или msi). При использовании microsoft store за обновлением приложений будет уже отвечать операционная система, т.е. доставкой и переустановкой пользователю не придется заниматься (на самом деле придется, но значительно проще, ведь автообновление не моментальное, а значит топать в настройки обновлений и кликать кнопку - скачать обновления) но это правильный способ.

    upd. https://learn.microsoft.com/ru-ru/windows/apps/pub...
    Ответ написан
    Комментировать
  • Как лучше загрузить сайт на React на GitHub для доказательства, что он действительно на React?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    этот вопрос у меня относится к удобству чтения кода и просмотра сайта другими пользователями, чтобы они удостоверились в разработке на React.

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

    Либо, чтобы из репы можно было скопировать лишь dist/ и сразу опубликовать это как приложение в любом месте, без дополнительных команд.
    От такого способа не будет видно, что применялся Реакт?

    Слепой не увидит ничего, в остальном - все чекается на раз-два.

    Рекомендую изучить крупные репы и обратить внимание на то, что там в рамках одной репы имеются исходники (src), сборки разных видов (dist/build), опубликованы все необходимые команды так, чтобы даже не зрячая обезьянка могла скопировать и выполнить эту команду, чтобы получить желаемый результат.
    Ответ написан
    1 комментарий
  • Как с помощью php отдать react?

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

    jQuery уже в прошлом

    это правда

    его теснят фреймворки типа react

    а это уже чушь собачья
    jQuery - это был костыль, позволявший выполнять определенные задачи, которые было невозможно или слишком сложно выполнить на чистом JavaScript. Но уже больше 10 лет нужда в этом костыле полностью отпала
    К фреймворкам типа React этот костыль не имеет никакого отношения вообще.
    Для замены jQuery вам нужно просто выучить Яваскрипт.

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

    При использовании реакта, сначала загружаются его статические файлы. обычно это делается через отдельный веб-сервер, на котором крутится приложение, написанное на js. и эту вашу проверку можно делать там.
    но в принципе вы можете отдавать их и РНР скриптом. HTML отдавать через РНР умеете? Ну вот и отдавайте.

    Но повторюсь, это только если вам действительно нужен реакт. А для замены jquery он не нужен.

    404й редирект

    для начала, такой вещи, как "404й редирект" в природе не существует.
    Бывает либо редирект (коды ответа 3хх), либо 404. Два НТТР статуса вы никогда не отдадите.

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

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    нет желании для учебу

    Идти в доставку. Самокат, Яндекс.Еда, СберМаркет...

    В ИТ учатся всю карьеру. Если ты думаешь, что вот сейчас выучусь, найду работу - и все, то лучше не начинай :) Потому что учится придется до пенсии - это вот такая специфика.

    Где найти первую работу? Там где небольшое предложение - в школах/больницах/библиотеках, вообще в муниципалке. Там крошечные зарплаты, там старое железо, там могут оказаться легаси "времен очаковских и покоренья Крыма" - но это будет стаж :)
    Ответ написан
    Комментировать
  • Что стоит использовать для защиты PHP-кода на текущий момент?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Сообщество считает, что всё это бессмысленные ужимки, которые в 99% случаев используются только для того, чтобы прикрыть крайнее убожество кода. Серьёзные продукты никто не шифрует. Чем, в частности, объясняется заброшенность всех этих, на первый взгляд многочисленных, проектов, которые не выходят из стадии "мы тут с одноклассниками придумали крутую штуку". потом одноклассники либо умнеют и перестают теребить ерунду, либо находят занятие более интересное, чем пхпе.

    Сам по себе код мёртв. Он устарел ещё до релиза. В работе софта важна не дискетка с исходниками, а поддержка. Вот поддержку и надо продавать. И не дрожать над каждым вором. Потому что защита от одного вора отпугивает 10 честных покупателей.

    Плюс всегда есть SAAS.
    Ответ написан
    4 комментария
  • В поиске первой работы програмистом, предлагают бесплатную стажировку. Соглашаться?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Народ тут накинул на вентилятор, попробую раскидать по фактам: Варианта на самом деле 3, но мы сведем к очевидным 2:
    1) Вы ищете первую работу в стеке, из опыта у вас приложение ТуДуЛист и Хеловорлд.
    Такое предложение как минимум подарок, как максимум большая удача. Подарок если вам просто дадут поколупаться в серьезном проекте и покажут как работает команда в целом. Большая удача если при этом у вас будет вменяемый ментор и ревьювер, а кода писать вам дадут много. Для конторы это скорее всего в минус, но если у вас все пойдет норм, то к концу срока вы в любом случае уже будете тянуть на джуна. Даже если после этого вы расстанетесь, опыт штука которая навсегда останется с тобой, в крайнем случае вы в первый месяц можете спокойно свалить, если видите что вам там ничего не светит в плане роста. Короче кейс - "надо брать".

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

    третий вариант по сути нечто среднее, но опять же сводится к 2 - надо говорить.
    Ответ написан
    3 комментария
  • Когда нужен MVC, а когда API?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Понятно же, что человек просто использует термины не по назначению. А имеет в виду способ взаимодействия с клиентом.
    Словом "mvc" он называет классический способ, при котором сервер отдает клиенту HTML (а не JSON).
    А словом "api" - REST сервис, при котором сервер отдает клиенту как раз JSON.

    И суть вопроса сводится именно к различию между этими двумя способами:
    - когда сервер генерирует HTML на основе полученных из БД данных, и отдает его браузеру
    - или когда в браузере выполняется программа на JS, которая запрашивает с сервера только данные, а потом на их основе генерирует HTML

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

    При этом с точки зрения бэкенд программиста разницы принципиальной между этими способами нет.
    Главное в программе - это её бизнес-логика. И уметь надо в первую очередь писать её.
    А в каком формате отдавать данные в браузер - дело десятое. И выбирать между "mvc HTML" и "api REST" нет смысла - уметь надо и то и то.

    Ну и, как уже объяснили, MVC - это совсем другое. Архитектура приложения. Причем она используется для любых приложений, независимо от типа отдаваемых данных. M и C в "api" приложениях используются в полный рост. Только V немного упрощается. при этом поскольку MVC подразумевается по умолчанию, то и писать её в вакансиях тоже особого смысла нет.
    Ответ написан
    4 комментария
  • Когда нужен MVC, а когда API?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    API есть у любой программы. MVC это способ организации кода, наличия API он не исключает. Не стоит сравнивать тёплое с мягким.
    Ответ написан
    3 комментария
  • Джун QA - это про потенциал и обучаемость, или - когда нужен Мидл с низким окладом?

    saboteur_kiev
    @saboteur_kiev Куратор тега IT-образование
    software engineer
    Вы должны понимать, что дело сейчас не в джуниор/мидл первая работа.
    Это вообще вход в профессию. Ваши вопросы по большей степени вообще не относятся к работе, а к какой-то виртуальной реальности.

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

    Насколько быстро найти первую работу - СУГУБО индивидуально. Кто-то с первого раза, кто-то за 2 года не может. Нет никаких сроков, есть рекомендации что учить и как готовиться.

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

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

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

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

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

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

    Ну то есть как-то ощущение, что вы хотите не на джуна, а в первый класс.

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

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

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Да, нужно будет устанавливать и настраивать SQL сервер. Да, можно автоматизировать - пишется скрипт, конфигурация и/или приложение делающее нужное. Если приложение десктопное - можно взять что-то типа SQLite, например. Если приложение предназначено для использования одним пользователем в один момент времени - то проще всего хранить все данные в простом файле (json, yml, xml и т.п.), БД тут не нужна. БД имеет смысл применять когда у вас многопользовательское приложение - чат, сетевая игра, форум и прочее.
    Ответ написан
    1 комментарий
  • Как сделать аутентификацию на сайте через телеграм?

    CoDeR2006
    @CoDeR2006 Автор вопроса
    TypeScript
    И так, для меня в будущем, и для тех кто это нагуглил:

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

    Интегрируем виджет в приложение react + ts:
    (это если вам надо что бы был не редирект, а вызов функции со стороны telegram)
    import { useEffect } from 'react'
    import { ITelegramUser } from '../../../../types/telegram/api-telegram-user.ts'
    
    declare global {
      interface Window {
        onTelegramAuth: (user: ITelegramUser) => void
      }
    }
    
    export const ButtonTelegramAuth = () => {
      useEffect(() => {
        const button = document.createElement('script')
        button.async = true
        button.src = 'https://telegram.org/js/telegram-widget.js?22'
        button.setAttribute('data-telegram-login', 'name_bot')
        button.setAttribute('data-size', 'large')
        button.setAttribute('data-radius', '20')
        button.setAttribute('data-onauth', 'onTelegramAuth')
    
        document.body.appendChild(button)
    
        window.onTelegramAuth = function (user) {
          alert(
            'Logged in as ' +
              user.first_name +
              ' ' +
              user.last_name +
              ' (' +
              user.id +
              (user.username ? ', @' + user.username : '') +
              ')'
          )
        }
    
        return () => {
          document.body.removeChild(button)
        }
      }, [])
    
      return <div id="telegram-widget-container"></div>
    }


    если нужен все таки редирект мы добавляем такое поле:
    script.setAttribute('data-auth-url', 'https://site.pw');

    и удаляем это:
    button.setAttribute('data-onauth', 'onTelegramAuth')
    
    declare global {
      interface Window {
        onTelegramAuth: (user: ITelegramUser) => void
      }
    }
    
     window.onTelegramAuth = function (user) {
          alert(
            'Logged in as ' +
              user.first_name +
              ' ' +
              user.last_name +
              ' (' +
              user.id +
              (user.username ? ', @' + user.username : '') +
              ')'
          )
        }


    И так объясняю в чем задумка:
    В ваше приложение react интегрируется все тот же виджет, но правильным образом. После нажатия на виджет происходит авторизация пользователя (он вводит свои данные / просто нажимает войти). Потом телеграм передает все его данные вам (в функцию - №1 способ / по get параметрам в url). Если вы делегируете
    регистрацию на сервер (а так правильно) то выбираете 2 способ. Сервер получает данные валидирует их и заносит в БД, затем делает редирект вашего пользователя к вам обратно на front, и заносит token (или что там еще не разобрался) в HttpOnly Ckookie. Ну а далее в моем случае Guard будет проверять есть этот token или нет, годен он или нет.

    Передаю привет Максиму в будущем. Как дела Макс ?
    Ответ написан
    Комментировать
  • Как разработчики пользуются Git в компаниях?

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

    @alexalexes
    F12 в браузере, далее вкладка "Сеть". Смотрите ответ на запрос /api/clients, там у вас что-то еще пришло помимо JSON.
    Ответ написан
    Комментировать
  • Что не так с функцией на C++?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    error C2835: user-defined conversion 'operator`double'' takes no formal parameters

    Он говорит тебе о том, что такая перегрузка: operator double (int limit) невозможна. Вторая ошибка -- это следствие первой.

    Определим в объекте Group две функции с одинаковым именем, например double Age(); и double Age(int limit);.

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

    MrDecoy
    @MrDecoy Куратор тега JavaScript
    Верставший фронтендер
    Array.prototype.last = function() { 
      return this[this.length-1] 
    }
    // [1,2,3].last()
    // 3

    Но модификация прототипа - плохая практика.

    метод и свойство массива

    Метод это и есть свойство. Просто это псевдоним, который говорит, что свойство хранит в себе функцию.

    Но если всё же нужно чтобы было без круглых скобок, то это через дескриптор get нужно объявлять.
    https://learn.javascript.ru/property-accessors
    Object.defineProperty(Array.prototype, 'last', {
      get: function() {
        return this[this.length-1] 
      },
      enumerable: false,
      configurable: false
    })
    
    // [1,2,3].last
    // 3
    Ответ написан
    4 комментария
  • Пишу первый раз на реакте, в чем проблема?

    Aetae
    @Aetae
    Тлен
    Вот это вот:
    root.render(
        <Header/>
    );

    Это магия под названием jsx. Она будет работать только если использовать специальные механизмы сборки, которые превратят сие непотребство в нормальный javascript.

    Если же ты хочешь просто вставить свой код на страницу без предвариательных танцев, то тебе придётся писать на чистом javascript, условно так:
    <script src="index.js" type="module"></script>
    import Header from './Header.js';
    
    const domContainer = document.querySelector('#container');
    const root = ReactDOM.createRoot(domContainer);
    root.render(
      React.createElement(Header)
    );

    function Header() { 
      return React.createElement('div', null, 'hsas')
    }
    export default Header;
    Ответ написан
    4 комментария
  • Возможно ли в конструктор класса добавить несколько массивов и как это сделать?

    @LJ322
    class Lorem {
            constructor(ipsum, isnit) {
              
            }
          }

    В твоём примере будет ошибка, аргумент с троеточием это rest params
    Ответ написан
    Комментировать