• Что необходимо знать о Python для того, чтобы получить свой первый проект?

    @nirvimel
    Желание учиться это хорошо, но само по себе оно ни к чему не приведет. Нужно ставить перед собой конкретные практические задачи и обучение произойдет в процессе их решения. Конкретная задача порождает конкретные вопросы, на которые дает ответы Гугл (или иначе Тостер). Кроме того, без конкретной задачи сложно поддерживать мотивацию к обучению в течении времени, достаточного для обучения.
    Ответ написан
    2 комментария
  • С какого тома следует начать читать Архитектуру Компьютеров Таненбаум?

    opium
    @opium
    Просто люблю качественно работать
    В вашем случае проще не читать
    Ответ написан
    Комментировать
  • Готовый бесплатный интернет-магазин?

    27cm
    @27cm
    TODO: Написать статус
    Пусть купит диплом в переходе, раз времени нет.
    Ответ написан
    Комментировать
  • Варианты вектора развития IT-шника?

    sim3x
    @sim3x
    Тут такие вопросы обычно задают школьники
    От аспиранта, который "разработал алгоритмы непрерывной, численной оптимизации нового типа" такого не ожидал
    Ответ написан
    Комментировать
  • Попросили проверить код, на что смотреть нужно?

    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 комментариев
  • Стоит ли уже писать js-скрипты на ECMAScript 2015+?

    @Y0Y
    Babel. Многие используют, не отказывайте себе в ES2015.
    Ответ написан
    Комментировать
  • Можете найти ошибку?

    LittleFatNinja
    @LittleFatNinja
    горе девелопер, любитель лютой садомии
    Можете найти ошибку?

    можем
    Ответ написан
    1 комментарий
  • JSON, AJAX, XHR?

    sayber
    @sayber
    Да, я программирую на PHP и еще асинхронно!
    Дочитал до:
    На learn.javascript.ru рассказывают про XMLHttpRequest, но есть еще $.ajax.


    Далее читать не стал.
    Вы изучаете javascript а методы $.ajax / $.getJSON / $.post ... принадлежат библиотеке jquery.
    Если хотите использовать jquery, то ступайте на сайт и смотрите документацию.
    Если же вам интересен js, то читайте информацию по языку а не библиотеке.
    Ответ написан
    4 комментария
  • Как строгий режим влияет на производительность?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Strict mode makes several changes to normal JavaScript semantics. First, strict mode eliminates some JavaScript silent errors by changing them to throw errors. Second, strict mode fixes mistakes that make it difficult for JavaScript engines to perform optimizations: strict mode code can sometimes be made to run faster than identical code that's not strict mode.

    Strict mode simplifies how variable names map to particular variable definitions in the code. Many compiler optimizations rely on the ability to say that variable X is stored in that location: this is critical to fully optimizing JavaScript code. JavaScript sometimes makes this basic mapping of name to variable definition in the code impossible to perform until runtime. Strict mode removes most cases where this happens, so the compiler can better optimize strict mode code.

    Strict mode makes it easier to write "secure" JavaScript. ... JavaScript in browsers can access the user's private information, so such JavaScript must be partially transformed before it is run, to censor access to forbidden functionality. JavaScript's flexibility makes it effectively impossible to do this without many runtime checks. Certain language functions are so pervasive that performing runtime checks has considerable performance cost. A few strict mode tweaks, plus requiring that user-submitted JavaScript be strict mode code and that it be invoked in a certain manner, substantially reduce the need for those runtime checks.

    https://developer.mozilla.org/en-US/docs/Web/JavaS...

    Одним словом - положительно.
    Ответ написан
    3 комментария
  • Какая часть от всей стоимости проекта, как правило, достаётся дизайнеру?

    Winsik
    @Winsik
    сис.админ, недопрограммист :)
    Все наёмные рабочие почему то пытаются примерять процент от стоимости продукта к своей зарплате . Это в корне не верно. (можно очень долго расписывать почему это так)

    У вас есть два варианта:
    • участие в проекте за % от чистого дохода, но при этом вы вкладываете свои деньги или работаете бесплатно ( и тут не факт что прибыль потом будет)
    • платят за выполненную работу столько, сколько вам достаточно за потраченное время.
    Ответ написан
    1 комментарий
  • Тенденция к перехвату проектов/клиентов сотрудниками с последующим увольнением. Что делать?

    s0ci0pat
    @s0ci0pat
    I'm Awesome
    Если такое с вами случается часто, значит проблема не в сотрудниках.
    Ответ написан
    8 комментариев
  • Есть ли инструмент для анализа кода на совместимость с PHP7?

    Eugene_Sh
    @Eugene_Sh
    1) https://github.com/sstalle/php7cc - инструмент для проверки PHP-кода версий 5.3-5.6 на совместимость с PHP 7. Генерирует отчеты с краткой информацией о проблемных местах.
    2) https://github.com/Alexia/php7mar - альтернативный инструмент с тем же предназначением.
    Ответ написан
    1 комментарий
  • Как скомпилировать расширение для PHP?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    Комментировать
  • Есть ли способ не привязывать каждую функцию в которой нужен this в ES6 React?

    Binding to methods of React class (ES7 included)
    Мне нравится использовать стрелочные функции и свойства классов от es7
    onMouseMoveHandler = (e) => {
        if (this.state.active) {
        ....
    Ответ написан
    Комментировать
  • Есть ли способ не привязывать каждую функцию в которой нужен this в ES6 React?

    В babel с пометкой stage-0 есть такая штука - https://github.com/jeffmo/es-class-static-properti...

    Она позволяет делать так:

    class MyClass {
      foo = () => {
        console.log('foo a = ', this.a);
      }
    
      bar = () => {
        this.a = 10;
        setTimeout(this.foo, 10); // Мы не биндим foo на this
      }
    }
    
    const o = new MyClass();
    const bar = o.bar; // и тут тоже не биндим
    
    bar(); // выводит "foo a = 10"
    Ответ написан
    Комментировать
  • Есть ли в PHP встроеная функция которая может конвертировать секунды в hh:mm:ss и обратно?

    Ivanq
    @Ivanq
    Знаю php, js, html, css
    Да... Уже в документацию не смотрят...
    $date = "hh:mm:ss"; // Подставить время
    
    $timestamp = date_create_from_format("H:i:s", $date)->getTimestamp();
    echo $timestamp;
    
    $date = date("H:i:s", $timestamp);
    echo $date;
    Ответ написан
    4 комментария
  • Какую использовать CMS для сайта продаж автомобилей?

    sayber
    @sayber Куратор тега PHP
    Да, я программирую на PHP и еще асинхронно!
    Symfony / Laravel и разрабатываете проект.
    Любая CMS не подойдет под ваши задачи.

    Если даже вы реализуете при помощи CMS нужный функционал (используя модули) то вам все равно придется половину переписать.
    По времени, возможно на процентов 15 вы быстрее сделаете чем на фреймворке, но в конечном итоге все равно перепишите проект и затратите огромное кол-во времени/денег
    Ответ написан
    Комментировать
  • Движок для сервиса какой выбрать?

    junk1114
    @junk1114
    Web-программист
    На фреймворке лучше делать, какая CMS? Вы же не блог или ИМ делаете.
    Ответ написан
    2 комментария
  • Минимум для junior web developer в Москве?

    27cm
    @27cm
    TODO: Написать статус
    Нет никакого минимума знаний при устройстве на работу. Это вам не ЕГЭ в школе, когда набрал минимальный проходной балл и поступил куда-нибудь. Никакой минимум вам не гарантирует работу младшего веб-разработчика, тем более в Москве.

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

    skobkin
    @skobkin
    Гентушник, разработчик на PHP и Symfony.
    5 комментариев