• Не работает условие по времени в bash скрипте?

    @immaculate
    Программист-путешественник
    Команда date умеет выдавать дату в нужном формате, не обязательно извращаться с cat и awk: date +%H:%M:%S. Сравнивать даты bash не умеет, можно конвертировать их в Unix epoch и сравнивать уже как числа.
    Ответ написан
    Комментировать
  • Путь к ИТ архитектору?

    @immaculate
    Программист-путешественник
    Я бы посоветовал еще переключиться с PHP. PHP был изначально спроектирован (если данное слово вообще подходит к PHP) для новичков. Примитивный язык для создания домашних страниц.

    Большой толчок к понимаю дало бы изучение других технологий и языков. Все-таки, несмотря на то, что развитие PHP происходит, оно происходит в достаточно замкнутой и ограниченной тусовке. Как-то вот на Хабрахабре была статья: что лучше, ORM или прямые запросы к базе. Я почитал из любопытства... Ну да, с такими ORM действительно легче и удобнее писать сырые SQL запросы.

    В общем, если не вырываться за пределы PHP, то взгляд будет сильно ограничен. Будет казаться, например, что ORM - бесполезная штука, так как сообщество PHP еще не выросло из костыльно-велосипедных ORM. И так далее.
    Ответ написан
    3 комментария
  • Вернуться в SSH терминал на Linux машине после завершения сеанса, возможно ли?

    @immaculate
    Программист-путешественник
    Возможно с использование tmux или screen.
    Ответ написан
    1 комментарий
  • Как проверить список на пустоту?

    @immaculate
    Программист-путешественник
    Вместо исключений намного лучше выглядит .get или key in dictionary:
    quality = job['data']['fields'].get('quality', '2222')
    my_file = open(os.path.join(pathToTmpDir, 'quality.json'), 'w')
    my_file.write(quality)
    my_file.close()
    Ответ написан
    Комментировать
  • Как сохранить клиента себе не в убыток?

    @immaculate
    Программист-путешественник
    С индусами работать нельзя. Даже теми, кто переехал в другие страны. Индус в Нью-Йорке кинет не менее жестко, чем индус в Нью-Дели. Говорю по опыту. Если есть возможность кинуть, то кинет обязательно. И в любом случае они вынесут весь мозг в процессе работы.
    Ответ написан
    Комментировать
  • Как выучить/понять ООП паттерны?

    @immaculate
    Программист-путешественник
    Пожалуйста, только не надо думать, что паттерны — это серебряная пуля, которая решит все проблемы. Множество раз встречался с кодом, который был ужасен, зато использовал паттерны. Не там где надо, и не так, как надо, но наверное автор чувствовал, что пишет шедевр, так как он «использовал паттерны».

    Ценность паттернов в динамических языках вообще намного ниже, чем в статических. Большинство книг по паттернам были написаны для языков C++ и Java. В динамических интерпертируемых языках очень часто можно обойтись без них.

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

    @immaculate
    Программист-путешественник
    Потому что, когда отдаешь библиотеку сообществу, то снимаешь с себя часть вопросов по ее разработке и поддержке. Если библиотека хорошая, то сообщество может взять на себя часть забот (или все) по поддержке и развитию. Кроме того, это бесплатная реклама для разработчика или компании. Да и просто из альтруистических соображений.
    Ответ написан
    Комментировать
  • А какой есть аналог Spring webflow в Django?

    @immaculate
    Программист-путешественник
    До версии 1.8 в Django была встроенная функциональность Form Wizard, которая, кажется, реализовывала подобное. Затем она была выделена из Django в отдельный проект https://github.com/django/django-formtools/
    Ответ написан
    Комментировать
  • Какая разница между Java и Python?

    @immaculate
    Программист-путешественник
    Java — язык со статической типизацией, Python — с динамической. Как вы уже заметили, многие адепты статической типизации считают, что она предотвращает большинство ошибок. Я в своей практике редко встречался с ошибками типов.

    Python — намного более простой для изучения, интуитивный и легко читаемый. То, что записывается 1-2 строчками на Python требует 10-30 строк на Java.

    Однозначного ответа, что лучше дать нельзя. Но для программирования «для себя», «для души», Java почти никто не выбирает. Java — это Enterprise, большие долгие и тяжелые проекты, как правило. Python — легкие, динамичные.

    Если начинать программирование вообще с нуля, то изучить Python однозначно в несколько раз проще.
    Ответ написан
    3 комментария
  • Сайт с упражнениями по SQL?

    @immaculate
    Программист-путешественник
    Ответ написан
    Комментировать
  • Если отказаться от проекта в котором еще не начал работать?

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

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

    @immaculate
    Программист-путешественник
    PayPal, но с PayPal очень много нюансов. Во-первых, они в любой момент могут заморозить все деньги на счету и никогда их не вернуть, причины тоже не объяснить. Примеров в сети масса, это происходит десятилетиями. Во-вторых, по крайней мере в России, с ними парадоксальная ситуация. Вы можете как физическое лицо принимать деньги от кого угодно, но это противоречит российским законам, если вы не юридическое лицо. Если же вы регистрируете, например, ИП, и открываете корпоративный счет PayPal, то теряете возможность принимать платежи от юридических лиц.

    То есть, например, за работу получить законно деньги на PayPal невозможно.
    Ответ написан
    1 комментарий
  • Запрашивает root пароль Linux Ubuntu?

    @immaculate
    Программист-путешественник
    Запрашиваемый пароль - это ваш пароль, который вы вводите при входе в систему.
    Ответ написан
    2 комментария
  • Настройка рабочего окружения Linux/Python3/Django/MySQL/Nginx/Apache?

    @immaculate
    Программист-путешественник
    Рабочее окружение каждый настраивает под себя сам, как ему удобно. Тут никаких готовых рецептов нет, да и никакой сложной науки тоже. Я вот пользуюсь PyCharm с плагином IdeaVim. Лучше PyCharm IDE для Python нет. Возможно, что для новичка это излишне впрочем, но когда работаешь на результат, а не учишься, то PyCharm позволяет экономить массу времени.

    Новичку стоит изучить, например, vim, и редактировать файлы первое время в нем. Почему vim - потому что он удобен, когда умеешь в нем работать, не вызывает туннельный синдром запястья (после перехода с Emacs на vim забыл о боли в запястьях), и есть на каждом Unix/Linux сервере.

    Ответить что читать очень сложно, поскольку вопрос очень расплывчатый, и исходные данные неясны (новичок вы или опытный пользователь, например). Dive Into Python прочитали?

    wsgi, gunicorn и т.п. нужны потому что Nginx и Apache - серверы, предназначенные прежде всего для отдачи статических файлов: html, css, картинки. Ничего о Python они не знают и вызывать Python скрипты не умеют (точнее Apache умеет с mod_python, но сейчас мало кто этим пользуется).
    Ответ написан
    4 комментария
  • Чем заменить Flash или На чем сейчас делают анимацию для веба?

    @immaculate
    Программист-путешественник
    Ваш пример даже на чистом CSS можно, мне кажется.
    Ответ написан
  • Ведете ли вы документацию для проектируемого сайта или приложения?

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

    С деплойментом ситуация такая же: лучше вложить время в разработку скрипта автоматического деплоймента, нежели писать документацию, которая сначала устареет, а затем вообще начнет противоречить практике.
    Ответ написан
    2 комментария
  • Почему python не может импортировать модуль smb?

    @immaculate
    Программист-путешественник
    Потому что в Python 3 уже нет отдельных long integer, и соответственно, суффикса L.
    Вам надо либо установить Python 2.7, либо искать модуль smb для Python 3.
    Ответ написан
    4 комментария
  • Какой самый оптимальный хостинг для python?

    @immaculate
    Программист-путешественник
    Что значит самый оптимальный? Без уточнения, что именно вам надо, на этот вопрос нельзя ответить. Мои проекты работали и работают на следующих платформах: Linode, Digital Ocean, Amazon AWS. В зависимости от размера проекта и потребностей. Простые проекты на Digital Ocean, сложные и тяжелые на Linode, очень сложные и тяжелые — на AWS. Для личных проектов собираюсь попробовать российский Селектел.

    Еще есть Heroku и Google App Engine, но я, простите, хоть убей не понимаю их необходимость. Неуниверсальные и более дорогие, зато заточены под Python.
    Ответ написан
    Комментировать
  • Best practies? Две независимые модели для пользователя и админа, Django 1.11.x?

    @immaculate
    Программист-путешественник
    Я не раз видел попытки такого разделения пользователей по классам в проектах на Django. Не знаю, почему все сразу выбирают такое решение, которое в перспективе не приносит ничего, кроме боли.

    Проще всего пойти стандартным путем: унаследовать пользователя от django.contrib.auth.models.AbstractUser, а различие между пользователями определять либо по группе/разрешениям, либо добавить поле в свою модель типа is_moderator. Это будет во много раз (на порядок точно) проще реализовать и поддерживать, будет совместимость со всем стандартным кодом Django и сторонними библиотеками, любому просто войти в проект и внести изменения.

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

    TLDR:
    1) Из вашего вопроса остается неясным, почему требуется разделение по разным классам. Это самый безумный вариант для разграничения полномочий, и в Django разделение полномочий пользователей уже предусмотрено по умолчанию
    2) Поддерживал пару проектов с разными классами для разных классов пользователей. Поверьте, это просто ужас-ужас в поддержке, а самое главное, что он ничем не оправдан.
    Ответ написан