• Прокрастинация, проблемы языка или я не программист?

    gscraft
    @gscraft
    Программист, философ
    В свои годы Вы всё правильно делаете — это большой интерес к технологиям, понятно, что опереться пока не на что, но этот интерес не стоит отпускать и нужно развивать. В первую очередь, самое главное, найдите мотивацию, делайте что-то полезное или увлекательное для себя, ставьте задачи и решайте. Например, напишите простенькую игру или программу, воплотите какую-то идею в жизнь. Смело делайте это на разных языках и технологиях, засесть в какой-то отрасли и специализации всегда и еще успеете. Не ставьте сложных и емких — долгосрочных задач, пока только простые, на небольшой срок и с азартом. Во вторую очередь, адаптируйте круг общения, посещайте тематические ресурсы, группы, социальные сети, читайте тот же habr.com и другие IT-ресурсы, продолжайте повышать кругозор (а Вы уже это делаете). И не сдавайтесь, даже если временами будут опускаться руки и будете терять эту самую мотивацию. С этим уже имеющимся интересом Вас ждет будущее в IT.
    Ответ написан
  • Как с помощью библиотеки requests взять ссылку с определенного HTML тега?

    gscraft
    @gscraft
    Программист, философ
    Если Вы смогли получить содержимое страницы по адресу с помощью requests, хотя это решается и коробочным urllib:
    import urllib
    f = urllib.request.urlopen('https://your.site')
    html = f.read(100).decode('utf-8')

    ... то далее нужна библиотека для разбора HTML-кода, иначе не получится. Это уже вне компетенции requests / urllib. Можете воспользоваться встроенной библиотекой перебором элементов и изловчившись с поиском, или прибегнуть к сторонней. Я не решу за Вас разбор кода, но покажу пример с BeatutifulSoup:
    from bs4 import BeautifulSoup
    soup = BeautifulSoup(html) # HTML, взятый по ссылке
    img = soup.find('div.w3-container img.w3-image') # Вам придется продумать выборку
    src = img.attrs.get('src')
    Ответ написан
    Комментировать
  • Является ли правильным данный код?

    gscraft
    @gscraft
    Программист, философ
    Все верно. Вы создали независимую переменную intvar, и создали указатель intptr без инициализации (указывает на случайный мусорный адрес памяти).
    Ответ написан
    Комментировать
  • Как вывести содержимое двухмерного массива без скобок?

    gscraft
    @gscraft
    Программист, философ
    print('\n'.join([', '.join(j) for j in x]))
    Ответ написан
    Комментировать
  • Нужно ли прохождение психиатра при трудоустройстве?

    gscraft
    @gscraft
    Программист, философ
    Нет, прохождение психиатра как правило не требуется. И вообще, медкомиссии в программистской практике исключительная редкость. Если отклонения от нормы в поведении есть и они не угрожают окружающим, все будет зависеть от коллектива и внимательности, усердия самого человека. По моему опыту, в нашем деле с коллективами очень редко не везет.
    Ответ написан
    Комментировать
  • Какое правильное и универсальное решение по округлением в jinja2?

    gscraft
    @gscraft
    Программист, философ
    Хех, просто добавьте свой фильтр: https://jinja.palletsprojects.com/en/2.11.x/api/#c... , это здоровая практика.

    def smart_round(text: str, ndigits: int = 2) -> str:
        try:
            number = round(float(text), ndigits)
            if number == int(number):
                number = int(number)
            return str(number)
        except: # строка не является float / int
            return ''
    Ответ написан
    7 комментариев
  • Почему при установке libreOffice не появляется команда soffice?

    gscraft
    @gscraft
    Программист, философ
    soffice.exe есть, но находится в папке программы: libreoffice\program\soffice.exe , и не добавлен в переменную окружения PATH, поэтому глобально команда не может быть вызвана. В среде Windows, как я понимаю (под Linux оно попало бы в пути поиска), Вам либо придется обращаться к приложению по полному пути: C:\Program files\libreoffice\program\soffice.exe (у Вас путь может отличаться), либо добавить путь в переменные окружения: https://i.imgur.com/LROVZIN.png
    Ответ написан
    Комментировать
  • Ответ в REST API?

    gscraft
    @gscraft
    Программист, философ
    Если речь про RESTful, нет, указывать status=false/true необязательно. Вы можете возвращать сразу же тело результата. Статуса требует JSON API, но оно ориентировано как раз на передачу всей информации в теле результата, то есть, не использует статусы HTTP (или используются гибридные способы).
    Ответ написан
    Комментировать
  • Как вызвать асинхронную функцию из обычной функции?

    gscraft
    @gscraft
    Программист, философ
    Вам придется идти асинхронно от корня, любой async сопровождается await (и наоборот):
    import asyncio
    
    async def main():
        await ... # вызов библиотек
    
    if __name__ == "__main__":
        loop = asyncio.get_event_loop()
        try:
            loop.run_until_complete(main()) # передайте точку входа
        finally:
            # действия на выходе, если требуются
            pass

    Да, стоит разобраться с работой asyncio по документации или публикациям-гайдам.

    PS почему Main_telegram а не MainTelegram ? Обратите внимание на https://www.python.org/dev/peps/pep-0008/#class-names , есть смысл следовать подходам в стиле кода.
    Ответ написан
    2 комментария
  • Устарел ли Opengl ES?

    gscraft
    @gscraft
    Программист, философ
    По всей видимости да, в пользу Vulkan. Но пока еще ES широко используется и ответ зависит от Ваших целей.
    Ответ написан
  • Изучения Larvel без ооп?

    gscraft
    @gscraft
    Программист, философ
    А что за боязнь ООП? Это же не черт в табакерке, и не сложнее, чем функциональное программирование, например. Хотя сложность во многом зависит от инструмента (конкретного API, языка), в чистом виде научиться мыслить объектами, имеющими действия-методы и данные-свойства не составит труда, и это не сложнее чем, например, мыслить передачей структур данных в глобальном порядке или по цепочке. А понять, как в общих чертах работают классы и начать использовать их с Laravel — хорошая практика для изучения. Тем более у Laravel (почти) все в порядке со следованием хорошим практикам и паттернам разработки. Ну и надо понимать, что без ООП в наше время осталось совсем немного прикладных инструментов, т.е. знания пригодятся.
    Ответ написан
    4 комментария
  • Как лучше реализовать?

    gscraft
    @gscraft
    Программист, философ
    Судя по всему Вам ни к чему полиморфная связь, ведь уже есть отдел => сотрудник, этого достаточно. Тип (или уникальность отдела) принадлежат самому отделу. Если сотрудник может быть дополнительно связан с другими отделами, то связь можно вынести в отдельную таблицу department_employee: department_id, employee_id, которая сможет хранить несколько связей. Если некий отдел является первичным, то в эту таблицу может быть добавлено поле, с ограничением unique department_employee: employee_id, is_primary (при возможности null), ну или в таблице employee — primary_department_id.
    Ответ написан
    3 комментария
  • Какой язык выбрать?

    gscraft
    @gscraft
    Программист, философ
    Однозначных плюсов и минусов нет. Можно освоить оба языка / среды, посмотреть наличие требуемых библиотек, API и исходить из того, что нравится.

    Но, на мой взгляд, Python — более цельная и лаконичная среда, что ли, а в мире JS придется столкнуться с препроцессорами, сборщиками, желанием перекочевать в TypeScript, сотнями зависимостей из NPM на пару требуемых пакетов. В обеих средах есть то, чего предпочтительно, например, вряд ли можно найти кроссплатформенный аналог Electron для UI в мире Python, и наоборот, что касается вычислений, математики, Data Science — Python, который порой линкуют даже из C/C++, не находя альтернатив. Python силен в выразительности кода, в простоте использования при мощном инструментарии рефлексии, метаклассов, декораторов и т.д.., JS во многом может оказаться приятнее, особенно по части замыканий, асинхронности. Впрочем, таких перекрестных примеров множество.
    Ответ написан
    Комментировать
  • Как добавить текст из HTML страницы в базу данных?

    gscraft
    @gscraft
    Программист, философ
    Если в счетчике количество символов, то на сервере это количество лучше посчитать снова: https://www.php.net/manual/ru/function.mb-strlen.php , если речь об иных данных вне формы, то тут два пути: если форма передается без AJAX, с помощью JS дублировать эти данные в input type="hidden" value="...", если передаете с помощью AJAX, то напрямую передать на этапе сбора данных формы в FormData / JSON-тело.

    Вам нужно осваивать PHP с азов. Это может и решите, но дальше двигаться все равно придется и будет непросто. А осваивать есть смысл, это пригодится в жизни технаря в любом случае: https://www.php.net/manual/ru/tutorial.forms.php

    PS https://jsfiddle.net/GennadyS/rmdnjtLu/3/
    Ответ написан
    Комментировать
  • С чего начать путь в GameDev?

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

    Второе, есть смысл ставить реальные и выполнимые в срок задачи, и решать их, практикуя.

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

    Добавлю, т.к. в ответах выше не упоминали, стоит обратить внимание на Godot, у него низкий порог входа, простая документация, блестящая архитектура и есть свои решения, не уступающие Unity / Unreal.
    Ответ написан
    Комментировать
  • Принято ли пропускать роуты верхним регистром?

    gscraft
    @gscraft
    Программист, философ
    Это не технический вопрос, это вопрос SEO и других технологий. По всей видимости, адрес должен быть регистронезависимым, за исключением ситуаций, когда регистр является критичным.

    Полезной может оказаться информация от поисковиков (остальное — вопрос эстетики). Например, https://yandex.ru/support/webmaster/search-results...

    С технической стороны важно лишь одно: получится ли найти ресурс в зависимости от регистра? Например, если часть параметров адреса ищется в базе, переходят поссылке /user/personalname , а в базе хранится "PersonalName".
    Ответ написан
    1 комментарий
  • Как взять первых пять чисел из массива и вывести пять записей соответствующих id?

    gscraft
    @gscraft
    Программист, философ
    $numbers = array_slice(explode('|', trim($q, '|')), 0, 5);
    $ids = implode(', ', $numbers);
    $sql = ' ... WHERE id IN(?);'; // подставьте $ids , зависимо от вашего SQL-драйвера

    Как выполнить привязку значения, отдельный вопрос, например, если используете PDO, то PDOStatement::bindValue или PDOStatement::bindParam
    Ответ написан
    8 комментариев
  • PyQt5 Python, открытие виджета при выборе пункта menubar, как реализовать?

    gscraft
    @gscraft
    Программист, философ
    Не помешает, конечно, привести код форм. Вы должны дать действию имя, и найти его через объект, полученный после загрузки ui, и подключить к сигналу действия — слот:
    win = uic.loadUi("main_window.ui")
    action = win.findChild(QAction, "your_action_name")
    action.triggered.connect(your_object.your_slot)


    Вы можете определить свой класс окна, чтобы задать в нем обработчики:
    class MainWindow(QtWidgets.QMainWindow): # ваш базовый класс
        def __init__(self):
            super(Ui, self).__init__()
            uic.loadUi('main_window.ui', self)
    
            action = self.findChild(QAction, "your_action_name")
            action.triggered.connect(self.your_slot)
    
            self.show()
    
        def your_slot(self):
            pass


    Создать новое окно можно таким же образом:
    widget = uic.loadUi("widget.ui")
    widget.show()

    Однако, не забудьте, что если widget создан внутри слота-обработчика, ссылка будет уничтожена по завершению функции. Вы можете привязать виджет к классу главного окна (self.widget = None), затем в обработчике действия проверяя, создан и открыт ли он.

    PS старайтесь избегать транслитерации и "неполноценных" имен объектов, вроде "glav". Это в первую очередь показывает неаккуратность кода и послужит ошибкам в будущем.
    Ответ написан
    Комментировать
  • Нужно ли защищать обработчик формы (PHP файл) от прямого доступа?

    gscraft
    @gscraft
    Программист, философ
    Нет, файл-PHP защищать не нужно, если веб-сервер передает его на обработку PHP-интерпретатору. То есть, если сценарии вообще работают, а не выдается содержимое PHP-файла при запросе по адресу ваш-сайт/action_page.php. Большинство PHP-движков спокойно хранят настройки в PHP-скриптах.

    Однако, если данные очень критичны и есть боязнь сбоя сервера (например, администратор допустит случайную и временную ошибку, открыв доступ к содержимому скриптов, исключив интерпретацию), можете вынести все приватные данные за пределы action_page.php, например, в action_page_handler.php , в свою очередь находящийся за пределами публичной директории, и подключаемый, скажем, как require __DIR__ . '../../scripts/action_page_handler.php'; (и это будет единственная строчка в action_page.php, которую кто-либо когда-либо сможет увидеть).
    Ответ написан
    Комментировать
  • Таймаут при отправке сообщения через SMTP с помощью PHPMailer?

    gscraft
    @gscraft
    Программист, философ
    Попробуйте настройку безопасного соединения:
    $mail->SMTPSecure = 'tls';
    Ответ написан
    5 комментариев