Задать вопрос
  • Какие сейчас есть хорошие IDE для Linux c отладкой?

    DevMan
    @DevMan
    pycharm, wing ide.
    Ответ написан
    Комментировать
  • Почему все просто зависает и перегружается?

    longclaps
    @longclaps
    a = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя'
    a = list(a)
    b = a
    print(id(a) == id(b)) # True, a и b - один и тот же list
    b = a[:]
    print(id(a) == id(b)) # False, теперь разные
    for i in a:
        b += [i.upper()]
    print(b)
    Ответ написан
    6 комментариев
  • Как научиться думать как программист?

    sim3x
    @sim3x
    Пишите код, как умеете
    Переписывайте, как умеете
    Анализируйте ошибки, делайте выводы
    Пишите больше кода
    Еще больше пишите кода

    Читайте чужой код
    Пишите его копию
    Руками
    Своими

    Забудьте про ctrl+v
    Ответ написан
    6 комментариев
  • В чем разница между request.body и request.POST?

    SagePtr
    @SagePtr
    Еда - это святое
    request.body содержит сырое тело запроса.
    request.POST - распаршенное, если Content-Type у запроса multipart/form-data или application/x-www-form-urlencoded
    Ответ написан
    1 комментарий
  • Кто как защищает от пиратства свое видео?

    irishmann
    @irishmann
    Научись пользоваться дебаггером
    Самый лучший способ защиты - не выкладывать в интернет.
    Ответ написан
    2 комментария
  • Как контролировать статус выполнения консольной команды в Symfony?

    skobkin
    @skobkin
    Гентушник, разработчик на PHP и Symfony.
    Команду вы никак не "дёрнете". Но вы можете хранить её статус в каком-нибудь доступном вебу хранилище - например, Redis.
    А если нужно совсем реалтайм - можно через очереди (RabbitMQ, beanstalkd) посылать из команды сообщения серверу вебсокета, который будет уже отдавать статус на фронтенд.
    Ответ написан
    Комментировать
  • Как решить правильно простенькую задачку по php?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    // По вашему коду:
    $source_string = 'abcdefghijklmnopqrstuvwxyz';
    $string_randomized = str_shuffle($source_string); // Перетасовали буквы внутри строки
    echo substr($string_randomized, 0, 6); // Вывели первые 6, без повторений и каждый раз после str_shuffle - уникально-рандомно (относительно, но задача именно этого и требует)
    
    // По красоте:
    $characters = 'abcdefghijklmnopqrstuvwxyz';
    echo substr(str_shuffle($characters), 0, 6);
    
    // Тестируем в psych:
    >>> $characters = 'abcdefghijklmnopqrstuvwxyz';
    => "abcdefghijklmnopqrstuvwxyz"
    >>> echo substr(str_shuffle($characters), 0, 6);
    fzpvad
    >>> echo substr(str_shuffle($characters), 0, 6);
    bzeiyj
    >>> echo substr(str_shuffle($characters), 0, 6);
    pgkuaq
    >>> echo substr(str_shuffle($characters), 0, 6);
    otjszx
    >>> echo substr(str_shuffle($characters), 0, 6);
    zjwaox
    >>> echo substr(str_shuffle($characters), 0, 6);
    rxuhnv
    >>> echo substr(str_shuffle($characters), 0, 6);
    rihoec
    >>> echo substr(str_shuffle($characters), 0, 6);
    uwdfgn
    >>>
    Ответ написан
    5 комментариев
  • Какой смысл несет в себе конструкция !! в js?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Получение логического эквивалента значения. Оператор логического отрицания применяется дважды, например:

    !!187 -> !false -> true
    !!NaN -> !true -> false

    Тот же результат даст Boolean(значение).
    Ответ написан
    Комментировать
  • Как сделать рандомное значение записи в модели Django?

    alternativshik
    @alternativshik
    убрать uniq и дефолт, сделать null=True, сделать миграцию, чтобы создать поле, потом сделать datamigration чтобы заполнить все поля рандомом, потом добавить uniq и дефолт и сделать еще раз миграцию
    Ответ написан
    2 комментария
  • Как сделать скриншот отрендеренного HTML?

    ThunderCat
    @ThunderCat Куратор тега HTML
    {PHP, MySql, HTML, JS, CSS} developer
    headless chrome?
    Ответ написан
    Комментировать
  • Как нормально посмотреть сайт с пк с симуляцией телефона?

    EKCTPEMICT
    @EKCTPEMICT
    FrontEnd Developer
    100% могут дать только эмуляторы внутри SDK
    - https://developer.android.com/studio/index.html
    - Эмуляция через Chrome DevTools
    nEYsF.gif
    Ответ написан
    Комментировать
  • Как авито блокирует консоль разработчика в браузере Chrome?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Есть один вариант. Надо будет поработать немного мышкой и клавиатурой. Сначала поставьте fiddler (он бесплатный). Дальше вот инструкция (откройте в отдельной вкладке картинку, чтобы увеличить масштаб):

    3df834aa0be441f8b2067cefbe76172b.png
    Ответ написан
    3 комментария
  • Как правильно работать с пользователями в Docker-контейнерах?

    planc
    @planc
    user - это словесное представление для удобства, как домены в интернете
    у файла нет параметра имя юзера, имя группы юзера, там как ip адреса - номер юзера и номер группы юзера

    допустим я юзер dka на хосте uid/gid 1000

    у меня папка /tmp/docker с кодом

    я запускаю дебиан в контейнере и добавляю туда свою папку, которая будет /code
    docker run -v /tmp/docker:/code -it --rm debian bash


    создаю юзера внутри контейнера с uid 1000 gid 1000 ( как у моего юзера на хосте)
    root@364785fa76ce:/code# groupadd -g 1000 my_docker_user_group
    root@364785fa76ce:/code# useradd --uid 1000 --gid 1000 my_docker_user


    прыгаю под нового юзера с помощью su (в докер файле это директива USER)

    root@364785fa76ce:/code# su my_docker_user

    все, теперь я могу кодить на хосте, а запускать в контейнере и у меня не будет проблем с правами на файлы
    Ответ написан
    1 комментарий
  • Что должен знать настоящий программист?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Настоящий программист должен знать достаточно, чтобы пройти собеседование ;) Шучу, конечно. С такого вопроса начинаются священные войны. «Что должен знать программист?» Да ещё и настоящий?



    Предлагаю зайти с другой стороны — а чего не должен знать настоящий программист? Эйншейн играл на скрипке (хотя я и не слышал) и хоть это и не относилось к физике, но и не помешало ему стать известным. Думаю, что ответ на вопрос надо искать не в перечислении знаний, относящихся к программированию. Так сказать ответ на вопрос лежит не здесь и не сейчас. В любой работе важно терпение и труд. И не только в профильной области. Готовься к тому, что надо будет работать по 12-14-16 часов в сутки возможно и не один год. Почти на износ, пока «догонишь» острие прогресса и поймёшь смысл поговорки «нужно очень быстро бежать, чтобы оставаться на месте, но чтобы двигаться вперёд надо бежать ещё быстрее». Пройдёт некоторое время и ответ на этот вопрос тебе не понадобиться, т.к. настоящие программисты, а точнее профессионалы, уже ответили себе на этот вопрос ;) Удачи.
    Ответ написан
    Комментировать
  • Что такое ElasticSearch?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    Знаете, я с вами соглашусь, что хорошую вводную по Elastic трудно найти. Пока сам не переварил доков и не набил шишек многие элементарные понятия оставались для меня неясными. Поэтому вот моя вводная: Elastic можно использовать как NoSQL БД, только надо быть внимательным, т.к. всё-таки его основная задача поиск, а не удовлетворение функций БД. Например, если вы не настроили хранение исходных данных, а только индексацию, то свои данные вы уже не извлечёте из него. НИКОГДА. Только отдельные выражения, удовлетворяющие условиям поиска. Всё, тупик. Так же нельзя повторно индексировать уже загнанные в него данные. Т.е. перед загрузкой данных надо грамотно настроить индексацию, т.к. перестроить индекс, как это делается в реляционной БД невозможно. Нужно придумать новую схему индексации и перезалить данные в Elastic. Именно поэтому основное использование Elastic - как дополнение к существующей БД из которой данные можно перезалить по одному или полностью в Elastic (можно, конечно сделать схему Elastic->Elastic, но тоже есть нюансы).
    Ещё пару слов про схему. Это ЛОЖЬ, что в Elastic нет схемы данных. Она как раз есть и ооочень жёсткая. Жёсткая до того, что однажды определив, вы не сможете её поменять. Изначально Elastic оказывает медвежью услугу, разрешая вам дополнять схему по-умолчанию, но когда вы разберётесь с этой темой, то можете обнаружить, что Elastic "понастроил" такого у себя внутри, что остаётся только охреневать и переделывать всё явно, отказавшись от его "услуг" по автоматическому добавлению полей в схему.
    Так же в Elastic очень непросто строить сложные запросы на поиск и агрегатные запросы. Совершенно неинтуитивно. Но если освоитесь, то будет вам счастье. )))
    Несмотря за такие "страшные" вещи - Elastic классная система и по производительности агрегатных запросов не уступает платной версии MSSQL в поиске в многопроцессорных системах (проверял на одинаковых аппаратных конфигурациях с 16 ядрами). Так что если вам хочется большую скорость в агрегатных запросах и главное - это бесплатность, то берите и осваивайте Elastic. Мощности и возможности у него огромные. Но... нужно потратить приличные усилия на изучение.
    Ответ написан
    1 комментарий
  • Как сделать, чтобы форму видел только пользователь из определённой группы на Django?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Django
    Седой и строгий
    1. Проверять членство в представлении и передавать форму в контекст шаблона только для тех пользователей, которые в нужную группу входят.
    2. Создать permission, выдать его группе и проверять в шаблоне его наличие у текущего пользователя.
    3. Написать фильтр для проверки членства.
    4. Добавить в модель пользователя метод проверяющий членство.
    Ответ написан
    Комментировать
  • На каком Яп приводится пример запроса?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Это не язык, это формат данных JSON
    Ответ написан
    Комментировать
  • Как бы вы поступили?

    @orbit070
    Проект имеет большой потенциал, вероятность того, что он стрельнет - 90%

    Так думает каждый человек, который пилит какой-то проект. Выстреливают 2-5%. Просто статистика.

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

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

    1. Запускать в одиночку, бороться со всеми проблемами на лету

    Поначалу многим кажется, что можно в одиночку тянуть проект, но к сожалению это не так. Я скажу больше: даже элементарно роль разработчика в одиночку не всегда можно тянуть, а вы хотите быть одновременно разработчиком/тестировщиком/админом/маркетологом/менеджером/управленцеми/бухгалтером/юристом/и т.д. Если бы такая формула работала, то в компаниях вместо 15-и зарплат всем этим людям, платили бы одному умельцу, но даже если такой умелец существует, который прожил три жизни и вобрал в себя все эти знания и умения, то все равно ничего не выйдет, ведь в сутках всего 24 часа. В общем это невозможно, как бы вам этого ни хотелось. Я понимаю, что соблазн велик и делить с кем-то потенциально жирный кусок мяса не хочется(делить, потому что денег у вас я как понял нет, значит придется отдавать долю в проекте), но у вас выбора почти нет. История знает единицы случаев, когда кто-то в одиночку запускал успешный бизнес в интернет-пространстве. Просто изучите историю и поймете - почти за всеми известными цифровыми продуктами стоят команды, потому что физически в одиночку это почти невозможно. Я готов руку на отсечение отдать, что если это будет работающий продукт, вы даже роль разработчика собой не закроете, не говоря уже об остальном, потому что там работы не на одного человека. Если вы думаете что админить, девопсить, тестировать, багфиксить, внедрять новый функционал и тд можно в одиночку, то вы очень сильно заблуждаетесь.

    Итого: нужно найти в себе силы и снять розовые очки. Сделали проект - хорошо. Теперь пойдите и найдите 50 человек, которые скажут, что продукт им может быть полезен. Как только они скажут "круто я бы пользовался" - скажите отлично, вот мой сайт, пользуйся. Так вот если из этих 50и человек хотя бы 3 человека заплатят деньги - то поздравляю, вы создали действительно что-то полезное, и польза продукта подтверждена. Теперь берете пару сотен долларов и ищете наиболее дешевые каналы привлечения клиентов - пробуете разные виды рекламы. Если на двести долларов привлекли например 10 платящих клиентов, то один клиент вам обошелся в 20 долларов. При этом например ваш продукт(для примера) стоит 25 долларов, получается экономика сходится - потратили 20 получили 25. Любой инвестор с удовольствием рассмотрит ваш проект и с большой долей вероятности даст денег. Удачи
    Ответ написан
    Комментировать
  • Как использовать телефон как приёмник звука с смарт приставки?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    никак. купите беспроводные наушники.
    Иначе после кучи перебранных вариантов Вы так и останетесь с чувством глубокого разочарования.
    Ответ написан
    1 комментарий
  • Попросили проверить код, на что смотреть нужно?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Смотря зачем)). Я когда делаю Code Review критерии следующие:

    * Безопасность:
    - Каждый аргумент метода простого типа должен проверяться на тип в случае его проксирования и на граничные значения в случае обработки. Чуть что не так - бросается исключение. Если метод с кучкой аргументов на 80% состоит из поверки из аргументов - это вполне норм))
    - Никаких trigger_error, только исключения.
    - Исключения ДОЛЖНЫ быть человеко-понятны, всякие "Something went wrong" можно отдавать пользователю, но в лог должно попасть исключение со стектрейсом и человеко-понятным описанием, что же там пошло не так.
    - Каждый аргумент (объект) метода должен быть с тайпхинтингом на этот его класс, или интерфейс.
    - За eval как правило шлю на **й.
    - @ допускается только в безвыходных ситуациях, например проверка json_last_error.
    - Перед работой с БД - обязательная проверка данных.
    - Никаких == и !=. Со swtich - единственное исключение, по ситуации.
    - Если метод возвращает не только bool, а еще что-то - жесткая проверка с ===, или !== обязательна.
    - Никаких условий с присваиваниями внутри. while($row = ...) - тоже идет лесом.
    - Магические геттеры/сеттеры разрешаются только в безвыходных ситуациях, в остальном - запрещены.
    - Конкатенации в sql - только в безвыходных ситуациях.
    - Параметры в sql - ТОЛЬКО через плейсхолдеры.
    - Никаких глобальных переменных.
    - Даты в виде строки разрешаются только в шаблонах и в БД, в пхп коде сразу преобразуется в \DateTimeImmutable (в безвыходных ситуациях разрешено \DateTime)
    - Конечно зависит от проекта, но как приавло должно быть всего две точки входа: index.php для web и console(или как-то по другому назваться) - для консоли.

    * Кодстайл PSR-2 + PSR-5 как минимум, + еще куча более жестких требований (для начала все то что в PSR помечено как SHOULD - становится MUST)
    - В PhpStorm ни одна строчка не должна подсвечиваться (исключением является typo ошибки, например словарик не знает какой-то из аббревиатур, принятых в вашем проекте). При этом разрешается использовать /** @noinspection *** */ для безвыходных ситуаций.
    - Если кто-то говорит, что пишет в другом редакторе и у него не подсвечивается, на эти отговорки кладется ВОТ ТАКЕЕЕНЫЙ мужской половой **й и отправляется на доработку)).

    * Организация кода:
    - Никаких глобальных функций.
    - Классы без неймспейса разрешаются только в исключительно безвыходных ситуациях.

    * Тестируемость (в смысле простота тестирования) кода должна быть высокая.
    - Покрытие кода обязательно для всех возможных кейсов использования каждого публичного метода с моками зависимостей.

    * Принципы MVC:
    - Никаких обработок пользовательского ввода в моделях, от слова совсем.
    - Никаких ***ть запросов в БД из шаблонов.
    - Никаких верстки/js/css/sql-ин в контроллерах.
    - В моделях НИКАКОЙ МАГИИ, только приватные свойства + геттеры с сеттерами.
    - В моделях разрешено использовать метод save(при наличии такого разумеется) только в исключительных ситуациях. Во всех остальных - либо insert, либо update.

    * Принципы SOLD:
    - Никаких божественных объектов умеющих во все.
    - Если метод для внутреннего пользования - private, никаких public.
    - Статические методы разрешаются только в случае безвыходности.

    * Принцип DRY разрешено нарушать в случаях:
    - Явного разделения обязанностей
    - В тестах (каждый тест должен быть независимым, на сколько это возможно)

    * Работа с БД:
    - Запрос в цикле должен быть РЕАЛЬНО обоснован.
    - За ORDER BY RAND() - шлю на***й.
    - Поиск не по ключам (конечно если таблица НЕ на 5 строк) запрещен.
    - Поиск без LIMIT (опять же если таблица НЕ на 5 строк) запрещен.
    - SELECT * - запрещен.
    - Денормализация БД должна быть обоснована.
    - MyISAM не используется (так уж)) )
    - Множественные операции обязательно в транзакции, с откатом если чо пошло не так.
    - БД не должна содержать бизнес логики, только данные в целостном виде.
    - Не должно быть нецелесообразного дерганья БД там, где без этого можно обойтись.

    * Кэш должен очищаться по двум условиям (не по одному из, а именно по двум):
    - Время.
    - Протухание по бизнес логике.
    Разрешается по только времени в безвыходных ситуациях, но тогда время - короткий период.
    - При расчете ключей кэша должна использоваться переменная из конфигурации приложения (на случай обновлений кэш сбрасывается кодом, а не флашем кэш-сервера). В случае использования множества серверов - это очень удобный и гибкий инструмент при диплое.

    * О людях:
    - "Я привык писать так и буду дальше" - не вопрос, ревью пройдешь только когда поменяешь свое мнение.
    - "Я пишу в vim-е и мне так удобно" - здорово, код консолью я тоже в нем пишу)) но есть требования к коду, если в них не сможешь - не пройдешь ревью.
    - "Я скопировал этот страшный метод и поменял 2 строчки" - это конечно замечательно, но по блейму автор всего этого метода ты, так что давай без говняшек, хорошо?
    - "Оно же работает!" - вот эта фраза переводится примерно так: "да, я понимаю, что пишу полную хрень, но не могу писать нормально потому, что руки из жо", я правильно тебя понял?))
    - "У меня все работает!" - рад за тебя, а как на счет продакшна?
    - "Там все просто" - не используй слово "просто", от слова "совсем". Вот тебе кусок кода (первого попавшегося с сложной бизнес логикой), где там ошибка (не важно есть она, или нет)? Ты смотришь его уже 2 минуты, в чем проблема, там же все "просто"))

    * Всякое:
    ActiveRecord (это я вам как в прошлом фанат Yii говорю) - полное говно, примите за исходную. По факту у вас бесконтрольно по проекту гуляют модельки с подключением к БД. Не раз натыкался на то, что в тех же шаблонах вызывают save, или update (за такое надо сжигать).
    То, что используется Laravel - это печально((. Что бы выполнить требования приведенные выше, приходится "воевать" с фреймворком.

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

    UPD

    Формализировал данные критерии по ссылочке: https://github.com/index0h/php-conventions
    Ответ написан
    55 комментариев