• Как правильно сегодня собрать браузерный ES6?

    - babel следует подключать по возможности всегда, хотя бы для обработки es7-8 фишек, которые вам понравятся, но еще не успели внедрить во все браузеры.
    - webpack можно подключить через gulp. Вполне можно выполнять отдельные такси с помощью gulp, а что-то обрабатывать с помощью webpack`а. Так же можно, например, запускать отдельные npm скрипты для выполнения параллельной или последовательной работы gulp и webpack. Особо полезные фишки webpack (имхо): tree shaking, [name][hash].ext корректное именование файлов на выходе, динамический импорт файлов.
    - делать отдельные сборки для старых и вечнозеленых браузеров можно. Подключать можно используя
    <script type="module" src="module.mjs"></script>
    <script nomodule src="fallback.js"></script>

    Подобный хак. Сначала подключаем сборку для браузеров, поддерживающих модули, и почти наверняка, весь es6 (e7-8 не обязательно, поэтому может потребоваться babel для транспилинга es7-8 в es6), а потом в качестве фаллбека подключаем файл в котором весь код преобразован в es5 (или ниже, если необходимо и возможно).
    Ответ написан
    2 комментария
  • Отключил все службы Виндоус. У меня стоит пароль. И ноутбук при вводе правильного, говорит, что это ошибка. Как исправить?

    thelongrunsmoke
    @thelongrunsmoke
    Программист
    Достижение «Сломать систему отключив не те службы» получено!
    Теперь загружаетесь с LiveCD и редактируя реестр включаете всё обратно.
    Ответ написан
    Комментировать
  • Где можно подробнее изучить тернарные операторы?

    Тут про операторы можно почитать: https://developer.mozilla.org/ru/docs/Web/JavaScri...

    А тут про стрелочные функции https://developer.mozilla.org/ru/docs/Web/JavaScri...
    Ответ написан
    Комментировать
  • Как мне быть в такой ситуации.Куда двигаться дальше?

    KeySVG
    @KeySVG
    аниматор svg / html5
    Если хорошо разбираетесь в 1С то ройте в направлении стыков технологий с ней. Например интеграция 1С с интернет магазинами. Спрос тут постоянный и стабильный. К тому же сопровождение, постоянное обновление версий. Да и правительство подбрасывает работенку вроде интеграции с онлайн кассами. Монетизируйте старые знания в новой сфере. Можно работать дистанционно по всей стране, есть сообщества в сети, где можно общатся с практикующими людьми из этих сфер. Это лучше курсов.

    В любой сфере где технологии пересекаются, трудно найти спеца который бы разбирался и в том и другом. Я в начале карьеры работал на ТВ, делал анимацию и рекламные ролики. Потом ушел в вэб делать сайты, в итоге сейчас делаю анимацию для вэба, рекламные баннеры. Специалистов которые бы на достойном уровне понимали и в графике и в програмном коде не так уж много, конкуренция совсем не давит. Спецов с опытом которые бы делали рекламу а не иллюстрированные объявления среди баннермейкеров тоже единицы. И тут еще геймдев бешено развивается где о5 таки большой спрос на тех кто может сделать игровую анимацию персонажей с интеграцией с кодом.

    Вспомнить того же Стива Джобса: он работал в типографии, а когда пришло всемя писать собственную ОС он начал сразу создавать графический интерфейс, что было революционо, используя все свои знания о шрифтах. А тогда за слово «кернинг» в IT среде могли и побить ))

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

    @Mercury13
    Программист на «си с крестами» и не только
    Бизнес-логика — это то, что программа делает с точки зрения пользователя. По-другому (и более понятно) — логика предметной отрасли.

    Например, у нас есть игра в шахматы. Бизнес-логика — это правила шахмат, принципы работы часов, команды «попросить ход назад», «сдаться» и «согласиться на ничью». Если нужно начинать не с исходной позиции, а с любой — то редактор.

    Крайне спорно, относить ли к бизнес-логике — анимация фигурок на манер Battle Chess и боты.

    Логика, которая не бизнес — это работа с сетью, графикой, конфигурационными файлами, сохранениями досок и партий, античит и многое другое. В общем, то, что нужно для жизнеобеспечения программы, а не для предметной отрасли. Сохранять партии в PGN или XML, как перекидываться пакетами по сети и какие настройки держать для совместимости…
    Ответ написан
    Комментировать
  • Код в парадигме ООП PHP?

    makarenya
    @makarenya
    программист
    Вы сконцентрировались на попытке сделать ваше решение БД-ориентированным, в то время как вас не просили этого делать. Из за БД-ориентированности в вашем коде происходят странные вещи, можно сказать "магия". Некоторые вещи вообще странные, вроде списка статей внутри статьи.
    Вас просили сделать описания классов, методов и свойств класса в формате PhpDoc, а вы этого не сделали.

    Попробуйте ещё раз, но со следующими ограничениями:
    • В классе User оставьте только свойство $name и свойство $articlesList = [] - который будет уже списком статей, которые написал автор. Пусть список храниться внутри объекта пользователя, в ORM типа Doctrine так и происходит. Уберите оттуда $id.
    • Не забудьте добавить методы getName() и setName($newName) для работы со свойством name. Это является правильным для ООП - не позволять клиентам класса работать со свойствами напрямую, а лишь вызывая методы, которые вы предоставляете. Причина проста - в методе вы можете указать какое-нибудь дополнительное поведение, которое требуется при изменении свойства.
    • Также придумайте методы, необходимые для работы со списком статей. Ну вот два уже напрашивается из задания: "возможность для автора создать новую статью" и "возможность получить все статьи конкретного пользователя". Но по хорошему статью ещё и удалить можно...
    • Для статьи вам понадобятся 2 поля - это ссылка на автора (то есть сам объект класса User, а не магический id). То есть $author, и ещё, раз это статья, то ей неплохо бы добавить свойство $text.
    • А теперь главное - не пишите вообще текста методов. Только открыли фигурные скобки и сразу закройте на следующей строке. От вас этого не просили. И даже явно указали этого не делать!


    Если всё ещё сомневаетесь, то советую почитать обучалку по Doctrine. Там они постепенно создают совершенно коректные с точки зрения ООП классы User и Bug. (они это делают последовательно, так что не поленитесь докрутить до самого конца обучалки)
    Ответ написан
    2 комментария
  • Стоит ли в контроллере обрабатывать исключения?

    JhaoDa
    @JhaoDa
    LaravelRUS Team
    Если есть потребность, то стоит. А если нет, то не стоит.
    Ответ написан
    3 комментария
  • Почему не отображается в консоли js код?

    Deonisius
    @Deonisius
    Родился в 11110110111 году, 11000 января.
    Скорее всего, что JS-код у вас начинает выполняться до того, как элементы, с которыми он должен работать, были загружены в браузер. Варианты решения:
    1. Подключать в конце страницы, где-нибудь перед закрывающим тегом < /body>
    2. Дождаться загрузки DOM. В этом случае, можно подключать и в секции <head>
    document.addEventListener("DOMContentLoaded", () => {
        // ваш JS-код
    });
    Ответ написан
    Комментировать
  • Как написать ОС под смартфон с нуля?

    Jump
    @Jump
    Системный администратор со стажем.
    Смартфон ничем в этом плане не отличается от компьютера принципиально, поэтому разницы нет. Если вы умеете писать ОС - можете написать ее и под смартфон.

    Большинство проблем при написании такие же как и на других платформах - например различные процессоры и архитектуры.
    Некоторые проблемы более специфические - например потребление энергии.
    Ответ написан
    Комментировать
  • Как написать ОС под смартфон с нуля?

    @922j
    Нет никакой разницы.
    Ответ написан
    Комментировать
  • Почему js выполняет код несколько раз?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Вы обходите массив, проверяете совпадение имени - ну, отлично. А вот что не отлично - так это ветка else, где вы пишите в результат поиска, что ничего не найдено. Делать это надо один раз - после цикла, а не внутри. Для этого можете перед циклом объявить переменную, типа var found = false, в случае если совпадение найдено - устанавливаете её в true. А код из блока else выносите за цикл и оборачиваете в if (!found).
    Ответ написан
    Комментировать
  • Почему при использование клика при помощи on() он срабатывает дважды?

    rockon404
    @rockon404
    Frontend Developer
    Думаю причина в этом.
    Ответ написан
    Комментировать
  • Как при наступлении события, отложить выполнение setInterval?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Сохранять id таймера, возвращаемое из setInterval(). При наступлении события останавливать тот interval, и через нужную паузу запускать новый с той же функцией.

    Второй вариант – внутри вызываемой функции делать проверку некого флага паузы. Если тот установлен, ничего не выполнять. При наступлении события выставлять тот флаг и через N секунд снимать его:
    Примерно так
    var flag = false;
    
    this.next = function() {
    	that.img[i].classList.remove("activeImg");
    	i++;
    	if (i >= that.img.length) i = 0;
    	that.img[i].classList.add("activeImg");
    };
    
    setInterval(
      function() {
    	  if(flag) return;
    	  that.next()
      }, 
      Math.floor(Math.random() * (5000 - 2000 + 1)) + 2000
    );
    
    function onEvent(){
    	flag = true;
    	setTimeout(()=>{ flag=false}, 3000);
    }
    Ответ написан
    1 комментарий
  • Как организовать добавление новых html элементов с расширением базы данных?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Офф кос, тут скупые на слова ребята, а я добрый, я расскажу. :-D
    Во фласке есть шаблонизатор, обычно это jinja.pocoo.org
    Там есть циклы, выглядят примерно так
    {% extends "layout.html" %}
    {% block news %}
      <div class="news--block">
      {% for item in news %}
        <div class="news--item">
        <h1>{{ item.header }}</h1>
        {{ item.body }}
       </div>
      {% endfor %}
      </ul>
    {% endblock %}

    Так вот из этого примера: news - массив объектов "новости", которые мы итерируем циклом и выводим в блок news.

    В методе делаем примерно так:
    from flask import render_template
    
    @app.route('/')
    def hello(name=None):
        news = [{"header":"Fake news: Trump died", "body":"Sorry, world."}, {"header":"Fake news: Trump now alive", "body":"Sorry, world again."}]
        return render_template('main.html', news=news)
    Ответ написан
    2 комментария
  • Div, который выглядит по-разному в каждом браузере?

    @itsjustmypage
    Outline это контур элемента с внешней его стороны, то есть сразу за border. В отличие от border он никак не влияет на элементы, их ширину и расположение. Ключевое слово inset в свойстве outline: inset 100px green; устанавливает этот контур в виде псевдотрехмерной рамки за счёт осветления правой и нижней границ и затемнения левой и верхней относительно указанного цвета. Ширина 100px, цвет зелёный.

    Баг создаёт свойство outline-offset: -125px;, которое задаёт смещение контура. При положительном значении контур будет расширяться во все стороны. А при отрицательном будет сжиматься внутрь элемента.

    Спецификация CSS Basic User Interface Module Level 3 в статусе рекомендации говорит о том, что контур элемента со свойством outline-offset при отрицательном значении не должен становиться меньше, чем двукратная вычисляемая ширина контура. То есть если в примере у нас размеры элемента 100x100 пикселей и контур задан у нас шириной 100px, то при outline-offset: -125px; он должен сжаться внутрь элемента на 125px со всех сторон, а спецификация визуально ограничивает сжатие до outline-offset: -50px; (по 50px внутрь с каждой стороны элемента). То есть контур должен просто сойтись вместе со всех сторон, образуя квадрат в нашем случае и насколько больше не ставь отрицательное значение, больше он сжиматься не должен. Но реализация в браузерах не учитывает это поведение и выдаёт непонятные фигуры, если отрицательное значение слишком большое.

    https://www.w3.org/TR/css-ui-3/#outline-offset
    5b447ea6c9061121780680.jpeg

    Поведение при отрицательном outline-offset должно быть как на гифке. Если дальше уменьшать значение, ничего меняться не должно. AMQ4hnM.gif
    Ответ написан
    1 комментарий
  • Как написать функцию, которая автоматически считывает данные с элемента?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Вижу два варианта:
    1. разробраться в их скрипте и прицепиться к нему;
    2. разобраться с MutationObserver (там есть готовый пример, вам в конфиге надо characterData: true).


    P.S. Третий вариант: по таймеру несколько раз в секунду смотреть, что в span'е и при изменении значения, по сравнению с предыдущим, писать значение в массив.
    Ответ написан
    Комментировать
  • Как сделать тяжелый импорт из excel 800к товаров?

    syschel
    @syschel
    freelance/python/django/backend
    1. У вас именно EXEL файл или всётаки CSV который вы открываете на десктопе с помощью экселя?
    2. Если всётаки EXEL файл. Там слишком много всего нагорожено, на вроде вёрсток и формул или голые таблицы?
    3. Если всётаки голые таблицы. Вы можете делать именно CSV файл?

    Если данные будут в CVS формате, то можно всё загрузить средствами MYSQL и не использовать для обработки PHP или его библиотеки. Тогда результат будет в разы выше, чем если перебирать с помощью ПХП и потом кормить в MSQL

    Когда я в своё время сталкивался с проблемой загрузки файла товаров в базу, там было несколько миллионов единиц, то оптимальным стало именно такое решение > LOAD DATA

    Кусок моего старого MySQL кода, для наглядности
    // Загружаем кашерный файл
    LOAD DATA LOCAL INFILE '/srv/cms_cpa/files/adimport_items.csv' INTO TABLE adimport_tmp CHARACTER SET utf8 FIELDS TERMINATED BY '|' ENCLOSED BY "'" LINES TERMINATED BY '\n' IGNORE 1 LINES (id_adimport,article,available,currencyId,delivery,description,id,name,oldprice,param,picture,price,url,vendor,advcampaign_id,advcampaign_name);
    
    // Загружаем только нужные поля (!!!)
    LOAD DATA LOCAL INFILE '/srv/cms_cpa/files/adimport_items.csv' INTO TABLE adimport_tmp CHARACTER SET utf8 FIELDS TERMINATED BY '|' ENCLOSED BY "'" LINES TERMINATED BY '\n' IGNORE 1 LINES (id_adimport,@ISBN,@adult,@age,article,@attrs,@author,available,@barcode,@binding,@brand,@categoryId,@country_of_origin,currencyId,delivery,description,@downloadable,@format,@gender,id,@local_delivery_cost,@manufacturer_warranty,@market_category,@model,@modified_time,name,oldprice,@orderingTime,@page_extent,param,@performed_by,@pickup,picture,price,@publisher,@sales_notes,@series,@store,@syns,@topseller,@type,@typePrefix,url,vendor,@vendorCode,@weight,@year,advcampaign_id,advcampaign_name,@deeplink);
    
    // Все поля
    LOAD DATA LOCAL INFILE '/srv/cms_cpa/files/adimport_items.csv' INTO TABLE adimport_tmp CHARACTER SET utf8 FIELDS TERMINATED BY '|' ENCLOSED BY "'" LINES TERMINATED BY '\n' IGNORE 1 LINES (id_adimport,ISBN,adult,age,article,attrs,author,available,barcode,binding,brand,categoryId,country_of_origin,currencyId,delivery,description,downloadable,format,gender,id,local_delivery_cost,manufacturer_warranty,market_category,model,modified_time,name,oldprice,orderingTime,page_extent,param,performed_by,pickup,picture,price,publisher,sales_notes,series,store,syns,topseller,type,typePrefix,url,vendor,vendorCode,weight,year,advcampaign_id,advcampaign_name,deeplink);

    Ответ написан
    Комментировать
  • Как в PHP вырезать всё лишнее из тега?

    Предлагаю посмотреть в сторону библиотеки HTML Purifier. Для этих целей он.
    htmlpurifier.org
    Ответ написан
    2 комментария