• Могут ли за такое заблокировать аккаунт?

    reaferon
    @reaferon
    1. Да, могут
    2. Проверяет робот (если CTR с вашего сайта станет выше средней температуры по больнице)
    Ответ написан
    Комментировать
  • Учет рабочего времени. Правильный ли подход?

    mazah
    @mazah
    Главное - делай
    Есть три версии происхождения проблемы:
    1. Тайминг ставится не совсем корректно;
    2. Вы не эффективно закрываете задачи;
    3. И то и то.

    Что делать? Безусловно, нужно честно пообщаться с человеком, который ставит Вам задачи.
    Подойдите к нему с предложением посоветоваться и объясните ситуацию.

    • Если задачи типичны и есть коллеги, которые справляются с ними в установленное время, то Вам придется поднять свою эффективность. Главное не относитесь к этому негативно, ведь это в целом повышает Ваши навыки и ценность как эксперта. Отнеситесь к этому как к вызову.
    • Если же задачи уникальны, то нужно проговорить это и предложить увеличить количество времени по выполнению таких задач. Предложите со своей стороны шкалу сложности задач, чтобы Вы ориентировали руководителя о том сколько реально необходимо времени на закрытие задачи.
    • В идеале начните собирать объективную статистику, самостоятельно фиксируйте сколько времени потратили на конкретную задачу. Через 2 недели - покажите эти цифры руководителю, сядете вместе и переоцените постановку времени для одного типа задач и для другого.

    Будьте честными, будьте командой.
    Ответ написан
    5 комментариев
  • Учет рабочего времени. Правильный ли подход?

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

    Махач Имангазалиев , вы бы воспользовались поиском на форуме для начала. Совсем недавно задавался подобный вопрос. Вот пример моей структуры в простом проекте:
    ru.mycompany.myapp
    ├─ activities
    ├─data
       └─  dao
    ├─views
       ├─ adapters
       ├─ customview
       ├─ fragments
       └─ widgets
    ├─ network
       └─api
         └─responce
    ├─ models
    └─utils
    Ответ написан
    1 комментарий
  • Что будет за публикацию уязвимости/бага в публику?

    Olej
    @Olej
    инженер, программист, преподаватель
    - Поиск создателя приложения что бы его наказать / возбуждение уголовного дела

    Какое уголовное дело? ... Купят наёмного убивца, и он перережет горло... ;-)
    Ответ написан
    Комментировать
  • Попросили проверить код, на что смотреть нужно?

    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 комментариев
  • Какую книгу прочесть начинающему программисту?

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

    Denormalization
    @Denormalization
    Часто сталкиваюсь с такими людьми. Это "программисты поневоле", как я их называю.
    Этим людям не интересно программирование как таковое, им интересна их зарплата.

    Обычно такие "программисты" заучивают базу + небольшой объем типичных решений, и с этими знаниями набиваются в работники. Они просто не хотят ничему учиться, так как им неинтересна эта область.
    С ними сложно что-то сделать. Сколько им не вдалбливай, они не станут от этого умнее, и будут так же продолжать тупить на нестандартных задачах.

    Если вы хотите заставить их нежные мозги шевелиться - ни в коем случае не давайте им решения.
    Пусть думаю сами, пусть ищут решение. Можно лишь давать наводки в какую сторону копать, но ни в коем случае нельзя делать так:
    В итоге описание задач сводится к полному написанию алгоритма решения, включая названия методов и переменных, а иногда и простая диктовка кода.

    Когда вы рассказываете им решение задачи - они ничему не учатся. Они тупо заучивают очередное решение, возможно даже не вникая в его суть.

    Заставляйте таких людей ДУМАТЬ. Задавайте наводящие вопросы.
    Пусть лучше они сделают кривое решение, которые вы потом заставите их переделывать, но у них в голове останутся хоть какие-то знания.
    Ответ написан
    15 комментариев
  • Есть ли полный аналог cURL на PHP в виде библиотеки?

    evnuh
    @evnuh
    Поиск Гугл помог мне, впусти и ты его в свой дом
    Нет.
    И купи уже себе вдс и не мучай нас своими "расширения не предлагать". И что такое библиотека в твоём вопросе?
    Ответ написан
    Комментировать
  • Идеи приложений для начинающего разработчика под Android?

    sintez
    @sintez
    Например, анализ списка вызовов и смс и построение чартов на экране, где показывается кому чаще всего звоню-пишу.
    Далее можно усложнять - сохранять эти чарты в виде картинки и постить на стену/твит/инстаграмм/оправить другу по емейл.
    Сохранение всей этой статистики в локальной БД.
    Бэкап данных статистики в облако - например экспортить данные в json и класть куда-нибудь на Яндекс. Диск. Соответственно и возможность восстановления этой статистики.
    Бэкграунд-задачка которая в фоне смотрит обновления списка вызовов и СМС, пересчитывает статистику и складывает в базу.
    Показывать всякие нотификашки, например после успешного обновления статистики в фоне напистаь об этом.

    Этого уже будет достаточно, чтобы изучить приличный кусок АПИ Андроида =)
    Ответ написан
    Комментировать
  • Модульность php-приложения (на примере интернет-магазина)?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    В то же время ни Order, ни Payment не могут работать без Cart

    То есть у вас возникает циклическая зависимость Order и Cart? я так понимаю?

    Вообще Order, Cart и Payment можно объеденить в один модуль, который задает базовые интерфейсы + тыща модулей с реализацией интерфейсов. Типа CardPayment и т.д. Словом нужно избавляться от циклических зависимостей и думать о кейсах когда с чем будет работать. Скажем Cart без Order не имеет смысла, а вот Order без Payment - имеет.

    Или же тема оформления не поддерживает нужный модуль.

    Хорошая идея - тема должна содержать метаданные о том какие модули оно поддерживает а какие нет. + идея с виджетами.

    Возможно ли это? Если не полная, то хотя бы слабая зависимость модулей друг от друга?

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

    Стоит ли оно того?

    Увы вы один не сможете написать и поддерживать такую систему. Многие пытались и даже есть парочка неплохих вариантов ( sylius.org например ), но в одиночку за приемлимое время - маловероятно.

    Какие есть пути уменьшения зависимости модулей друг от друга?

    Доменные события это к слову неплохой вариант уменьшения связанности, можно рассматривать как вариант. Но в целом должно хватать соблюдение принципов SOLID и более рациональное дробление функционала, поиск общих зависимостей и тд. Сегрегация интерфейсов + Инверсия зависимостей.
    Ответ написан
    Комментировать
  • Gulp WireDep - почему стили и скрипты не собираются в один файл?

    wiredep берет файлы bower, которые указаны в зависимостях. Для начала надо убедиться, есть ли эти зависимости в bower.json, т.е. все ли плагины bower вы устанавливали с параметром --save. Если нет и самого файла bower.json, то запустите команду bower init и он появится
    Ответ написан
    4 комментария
  • Стоит ли учить ассемблер для глубокого понимания архитектуры компьютера?

    alex-saratov
    @alex-saratov
    Вспомним фразу из книги "Шерлок Холмс" - " человеческий мозг — это пустой чердак, куда можно набить всё, что угодно. Дурак так и делает: тащит туда нужное и ненужное. И наконец наступает момент, когда самую необходимую вещь туда уже не запихнёшь. Или она запрятана так далеко, что её не достанешь."
    На цитаты не обижаемся.

    Изучать глубоко стоит, если Вы в дальнейшем собираетесь найти этому практическое применение. Поверхностное знание может пригодиться. А глубокое изучение без последующего применения - это трата времени. Самое дорогое в нашей жизни - это время, ибо его не купишь не за знания ни за деньги.
    Ответ написан
    5 комментариев
  • Где можно найти мануалы/примеры по использованию Jade в Laravel?

    обычный jade с примесью блейда. https://github.com/CREEATION/laravel-elixir-jade/i...
    Ответ написан
    Комментировать
  • Какую систему учета рабочего времени удаленного разработчика использовать?

    @FoxInSox
    Не так давно вышла довольно удобная модель для тотального контроля разработчика:
    slave-cage.jpg
    В ней ему довольно удобно сидеть, и благодаря большим отверстиям его можно кормить и мыть не выпуская из клетки. Так же можно видеть что происходит внутри даже издалека, и при малейшем подозрении можно просто накричать, воткнуть в него что-либо острое, или бросить что-либо тяжелое.
    Ответ написан
    1 комментарий
  • Какое ПО написано на Ruby?

    erniesto77
    @erniesto77
    oop, rb, py, php, js
    Топ 10 самых известных сайтов на Ruby on Rails

    1 - Twitter
    2 - Basecamp
    3 - Yellow pages
    4 - Hulu
    5 - Slideshare
    6 - Github
    7 - Shopify
    8 - Groupon
    9 - Urban Dictionary
    10 - AirBnb

    Источник
    Ответ написан
    Комментировать
  • Важна ли корочка при устройстве на работу?

    @Chekhoved
    Важна, если это корочка хлеба. Вдруг придется в очереди ждать, будет чем перекусить.
    Ответ написан
    2 комментария
  • Как часто нужно проверять форму?

    @kirill-93
    Все эти методы не подходят, если при нажатии на кнопку "сохранить", вы редиректите на другую страницу. Самый правильный вариант - отправлять запрос не сразу после нажатия клавиши, а спустя какое-то время. Некий таймер, который обнуляется, если пользователь продолжает вводить текст. Обычно такой метод называется "debounce", и уже реализован в разных библиотеках, например в underscrore
    Если подключать библиотеку не хочется, то можно написать самому, примерно так:

    function debounce(method, timeout) {
            clearTimeout(method._tId);
            method._tId = setTimeout(function(){
                method();
            }, timeout);
        }       }, timeout);
    }


    Описываем нужный метод:
    function checkTitle() {
     //Код проверки
    }


    И вешаем его на событие:

    $('input').on('keyup', function() {
       debounce(checkTitle, 1000);
    });


    В итоге, если после ввода последнего символа прошла секунда и пользователь больше ничего не ввел, вызовется метод checkTitle()
    Ответ написан
    1 комментарий
  • Как реализовать отслеживание авто?

    @pavelvv
    Для передачи данных на сервер рас в полминуты нужно выбирать трекер с возможностью питания от сети автомобиля, автономный трекер в таком случае проработает в лучшем случае 1 день. Также нужен трекер с передачей данных по GPRS.
    Как вариант посмотри этот рейтинг трекеров

    Если начинаешь программировать то посмотри еще тут, есть описание программ по мониторингу с открытым кодом на GitHub
    Ответ написан
    Комментировать
  • Как сказать по-русски слово yield???

    copist
    @copist
    Empower people to give
    А ты все слова пытаешься перевести?

    abstract class A extend B interface C
    {
      private property $b;
      final protected function x() { return new static; }
    }


    абстрактный класс А, сын Бэ и лицом-похож-на Цэ
    {
       частная собственность $бэ;
       конченная защищаемая функция икс() { вернуть новую неподвижность }
    }


    Моё частное мнение - достаточно знать, как работает языковая конструкция и в идеале знать, как правильно произносится на английском. Мне лично моё произношение и исковерканные "привАт" "пэхапэ" "пропертЯ" "абстрАкт", "на сях", "си шарп", "" - были до лампочки, пока не пришлось объяснять свой код в команде из англоговорящих программистов и задавать им вопросы по их коду. А ещё я общался с тайцами и индусами и теперь тщательно произношу именно английские версии всех названий технологий, зарезервированных слов и торговых марок. Зиракс, МАйкроСофт, ЭйчТиЭмЭль, ПиЭйчПи, прАйвит, Эбстракт :)
    Ответ написан
    6 комментариев