• Мотивация для разработчика. Как мотивировать себя/команду работать продуктивно?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Задачи должны быть интересными
    Оплата высокой
    Попытка дерганья разработчика с задачи на задачу - штраф тимлиду за поганую организацию.

    А мотивации и прочая клоунада - это ИБД манагерское. Дешевка.
    Ответ написан
    Комментировать
  • Как разобраться в этой терминологии?

    Jump
    @Jump
    Системный администратор со стажем.
    я прекрасно знаю, что программисты любят общаться только с теми, кто говорит с ними на одном языке
    А вот тут явная ошибка.
    Если общаешься с профессионалом, то удобнее конечно использовать сленг.
    Если общаешься не с профессионалом, то удобнее разговаривать на нормальном русском языке.

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

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Благодаря тому, что программирование, это не идеология, не мифология, а вполне себе прекладная научная дисциплина, вся терминология в нем изначально предельно точная и информативная. В любом термине (кроме некоторых маркетинговых мемов) обычно содержится почти полный ответ на вопрос: "а что это такое", для понимания которого не нужно ничего запоминать - достаточно анализировать слова и синтезировать смысл абстракции по аналогии с предметами реального мира :) Однако, есть два момента.

    Первый: терминология исторически англоязычная и всяческие попытки переводов чаще вредят, чем помогают понять суть. (Мне, например, пришлось напрячь Гугл, чтоб удостовериться, что под "шлюзом" Вы действительно подразумеваете "pattern gateway", а не что-то там еще).
    Второй: термины часто обозначают не конкретные сущности, а абстракции. (Если вдруг значения последних двух слов понятны только на уровне смутного ощущения, разберитесь, что они конкретно означают... абстракция - это не "нечто туманное и заумное", а совсем другое :) ) Соответственно, для толкования этих терминов нужно использовать абстрактное мышление. Как?

    Например, для того же шлюза... шлюз бывает между двумя реками с разным уровнем... да, там есть выше - ниже. Однако, бывает между двумя отсеками космического корабля (хорошо - там все еще может быть разное давление), а бывает между толпой пассажиров в аэропорту и выходом к самолету (давление толпы?)... или, между локальной сетью и внешней, и т.д. Если задуматься, почему все это называют таким словом, легко понять, что суть понятия не столько в перепаде (уровней, давлений и т.д.), а, наверное, в том, что "это такое нечто, только через которое можно попасть/выйти из одного в другое". .. оно же, кстати, соответствует буквальному переводу слова "gateway" - "выход наружу"...

    И - сюрприз(!) - именно в этом и заключается суть паттерна. А вот, для сравнения, его формальное определение: "Объект, который инкапсулирует доступ к внешней системе и ресурсу." Решайте для себя сами, что лучше - знать английский, запоминать такие определения или один раз понять смысл аналогии, только учтите, что у всех слов в определениях тоже есть совершенно конкретный, точный смысл, который нужно знать или уметь находить - иначе определение ничего не объяснит, а только еще больше запутает :)

    Далее... как его "сделать в коде"? А фиг его знает! Как удобнее для проектируемой системы, так и делайте. Может, это будет один класс, может микросервис, а может вообще железяка на FPGA. Паттерн не дает никаких готовых рецептов (типа, взять три грузовика бетона, выкопать яму глубиной 5 метров и пр.) - он просто говорит, что чем всем частям системы "лазить наружу" как попало, лучше это дело сконцентрировать в одном месте. И, кстати, патерн не является "современным стандартом" и, вообще, стандартом! Это просто обобщенный опыт поколений разработчиков систем. Не более, чем соображение мыть руки перед едой... если зачем-то нужно, можно и не мыть, но если нет какой-то осознанной мотивации, то мыть в большинстве случаев - лучше :)

    Идем дальше... интерфейс. Что это такое? Формочка с кнопочками и чекбоксиками? А может, разъем USB? А может, код на каком-нибудь ЯП? Что между всем этим общего? Да очень просто! Интерфейс, это набор правил и соглашений о том, как пользоваться какими-то функциями того, что предоставляет этот интерфейс :)

    Вот и все! В ИТ-шной терминологии нет никакой магии и никакого сакрального смысла. Для понимания достаточно знать ТОЧНОЕ значение довольно небольшого количества слов и для любого непонятного термина всегда задавать два простых вопроса: "что это значит" и "почему", и находить на них ответы. И все туманное и странное быстро становится простым и понятным :)
    Ответ написан
    2 комментария
  • Почему в библиотеках функция поиска по коллекции _findIndex() возвращает -1 когда нет результатов, а не NULL?

    Lynn
    @Lynn
    nginx, js, css
    Потому что Array.indexOf возвращает -1 и библиотеки чтят традиции.

    В те далёкие времена когда придумали JS в ходу был Си, в котором нет null, а есть NULL===0.

    В общем, причины исторические.
    Ответ написан
    Комментировать
  • Какая наиболее удобная практика шаблонизации в Javascript?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    6. Писать шаблоны в отдельных файлах и автоматически компилировать в js-функции.

    Чего и вам желаю.
    Ответ написан
    2 комментария
  • Как сделать margin-bottom всем inline-block которые "не в последней строке"?

    MyaFF
    @MyaFF
    Верстальщик
    Обратите внимание на статью Количественные селекторы CSS
    Конкретно по вашему вопросу вам уже дали хорошее и простое решение, но в статье описаны решения для множества подобных и сложнее ситуаций.
    Ответ написан
    1 комментарий
  • Как написать регулярное выражение - удаление двойных пробелов не с начала строки?

    @abcd0x00
    Можешь заменить начальные пробелы на какую-нибудь последовательность вроде
    <sp>4
    по всему файлу, потом почистить пробелы, а потом восстановить.
    Получится три функции: одна - подготавливает, другая - преобразует, третья - восстанавливает.
    Ответ написан
    Комментировать
  • Как вернуть элемент на страницу без Javascript с помощью CSS?

    AMar4enko
    @AMar4enko
    Инвертируйте логику и вместо того, чтобы показывать элемент, скрывайте его на нужных медиа-запросах.
    Ответ написан
    1 комментарий
  • Как вернуть элемент на страницу без Javascript с помощью CSS?

    @zuraavl
    я скрываю с opacity: 0 visibility: hidden, может это то, что тебе нужно
    а если нужно скрыть еще и его высоту, то можно добавить position: absolute
    Ответ написан
    1 комментарий
  • Как правильно писать о ключевых навыках в резюме?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    На рыбалку ходили когда-нибудь?
    Здесь - тоже самое: нужно дать рыбе ту приманку, которую она больше всего ожидает.
    Если множества пересекутся максимально - возможно, что вакантное место будет Вашим.
    Удачи!
    Ответ написан
    Комментировать
  • Как сделать форму внутри таблицы не создавая несколько таблиц?

    <table>
    <form>
      {foreach items as item}
          <tr>...content...</tr>
          <input name="id" value="{item.id}"
      {endforeach}
    </table>
    </form>

    Помещать форму в цикл не айс вариант, хотя тут нужно смотреть на контекст задачи
    Ответ написан
    4 комментария
  • Как правильно организовать push уведомления на сайте?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    Я живой чат на websocket на Go писал под заказ(даже где то у меня на github валяется). Все работало, это было не сложно.
    Но, Go websocket реализуют протокол последнего RFC, а старые Opera и IE нет. В корпоративном секторе, в частности в казенных заведениях только старые браузеры и стоят. Заказчик сказал - дописывай прокладку на все проприетарные реализации протокола или fallback на long_polling. Я ответил - лень, напишу "Обновите браузер". Заказчик не принял.
    Если хотите угодить всем, пользуйте библиотеку с откатом на ajax_long_polling вроде socketIO(Для Go драйвера написаны), но код теряет элегантность и писать становится не фан.
    Для мобильных платформ прекрасно работают Push сервисы apple и google(драйвера тоже написаны)
    Ответ написан
    2 комментария
  • Как сделать изображения на мобильной версии сайта при адаптивной верстке?

    @Staurus
    Специалист по Интернет-маркетингу
    Посмотрите тут. Множество вариантов решения проблемы
    Ответ написан
    Комментировать
  • Где бы почитать про такую "архитектуру"?

    @VZVZ
    Reverse-Engineer, Software Developer, Architect
    > Хочется узнать про клиент-серверную архитектуру (ведь так называется?).
    Строго говоря, клиент-серверная архитектура применена в любом сайте, даже если он без ajax (тупо на form'ах).
    И более того, даже если это вообще одна статическая страница HTML, лежащая на серваке без всякого PHP, то это все равно уже клиент-серверная архитектура.
    Ведь браузер (или иной клиент), когда вы в адресной строку вбиваете путь к каждой странице, делает GET-запрос к серверу и получает ответ с содержимым этой страницы.

    Вот здесь почитать для начала:
    codeproject.com/Tips/1065669/How-To-Build-Web-Site...
    Вначале там краткий пример очень простого чатика на form'ах с PHP+MySQL, без AJAXа.
    Потом показано, как в такой чат очень быстро добавить AJAX, сначала голым JS, затем jQuery.

    Затем уже самостоятельно вы можете подумать, как усовершенствовать этот AJAX и довести его до уровня реального REST API, к которому не просто возможно, а реально удобно подключаться и из других клиентов (скажем, собственного мобильного приложения, вроде как WebMoney Keeper, или как у VK или Facebook) Подсказка: JSON, React.

    Обязательно скачайте и поставьте сниффер Fiddler. Он позволяет вывести изучение клиент-серверной архитектуры по протоколам HTTP/HTTPS на новый глубокий уровень, многое тайное для простых смертных сделать явным, изучить бек-енд вашего сайта на предмет использования его в качестве REST API для сторонних клиентов (и не только вашего, но и чужих)))
    Ответ написан
    1 комментарий
  • Как отследить вызов метода объекта PHP?

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    Неужели единственный способ - это в каждое объявление функции прописывать static::createInstance()

    Можно написать класс обёртку, но зачем?
    Если вам для двух статичных методов нужен одинаковый конструктор, то вывод напрашивается сам собой, вам не нужны статичные методы.

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

    muhammad_97
    @muhammad_97
    PHP-разработчик
    Все делается проще: есть свойство instance, которое изначально равно null. При вызове метода getInstance() проверяем, равно ли instance null (self::$instance === null), если да - создаем объект, сохраняем в instance и возвращаем его, иначе просто возщвращаем instance:
    class Foo 
    {
        private static $instance;
    
        private function __construct()
        {
        }
    
        public static function getInstance()
        {
            if (self::$insrance === null)
            {
                self::$insrance = new Foo();
    
                return self::$instance;
            }
    
            return self::instance;
        }
    }
    Ответ написан
    2 комментария