Задать вопрос
  • Как узнать не попали ли мои сайты в фильтр поисковой системы?

    @htmlcssseo
    Добавить сайт в панель вебмастера, если есть баны, то там будут соответвующие записи
    https://www.google.com/webmasters/
    https://webmaster.yandex.ru
    Ответ написан
    6 комментариев
  • Знания, которые не устаревают. С чего начать?

    Stalker_RED
    @Stalker_RED
    Прям совсем с нуля, или вы за эти 12 лет какие-то успешные шаги сделали?

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

    Самое важное: начните писать код прямо сейчас. Пусть это будет простенький hello world, или тупые и неэффективные решения задачки про 99 бутылок, пусть хоть самый ужасный говнокод, но это бесконечно лучше, чем вообще никакого.

    Если в компах полный ноль, то посоветовал бы ознакомиться хотя-бы поверхностно с архитектурой компьютера, операционных систем и сетей. Если Танненбаум не зайдет в легкую, то хотя-бы по книжкам для детей.

    Может Мартин Гарднер зайдет, попробуйте. Не стоит даже пытаться глубоко погружаться в каждую тему которую он описывает, но у него довольно много интересного и по математике и по логике.

    Пусть это будет как "фоновое" чтение, может даже получится читать эти книги для развлечения. Никаких мгновенных преимуществ в программировании они не дадут, но однажды вы можете заметить, что понимаете ПОЧЕМУ одни алгоритмы работают быстрее других.

    Для быстрого погружения в кодинг попробуйте пройти colobot, например. Он довольно легкий, ориентирован для детей. С интернете полно подсказок и готовых решений, но не стоит ими злоупортеблять и копировать код без понимания его работы.

    Потом можно переключиться на codewars, делать по одной задачке в день, например. Сравнивать свое решение с решениями других людей.

    Вот вам еще один список: Карта развития веб-разработчика
    Здесь уже не только неустаревающие знания, но неплохо бы потратить на каждую из этих тем хоть по 10 минут, чтоб понимать о чем речь. Конечно, для нормальной работы на многие из этих тем придется потратит намного больше времени.
    Ответ написан
    2 комментария
  • Как сделать тяжелый импорт из 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);

    Ответ написан
    Комментировать
  • Как получить элемент, по которому кликнули (js)?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Проявите любопыство! Напишите простой обработчик клика, который выведет в консоль получаемые параметры:
    document.addEventListener('click', function(){ console.log(this, arguments); });

    Посмотрите, что туда попадает при клике по разным кнопкам.

    Кроме того, если обработчик вешать не на document, а непосредственно на каждую из кнопок, внутри обработчика this будет тем самым кликнутым элементом.
    Ответ написан
    Комментировать
  • Как получить элемент, по которому кликнули (js)?

    @rusglov
    document.addEventListener("click", function (e) {
    console.log(e.target);
    });
    Ответ написан
    Комментировать
  • Как отследить изменения скрола?

    KorniloFF
    @KorniloFF Куратор тега JavaScript
    Работаю по font-end / JS
    onscroll = function(e) {
    return console.log(window.scrollY)
    }
    Ответ написан
    5 комментариев
  • Хороший фреймворк для разработки бота?

    tomnolane
    @tomnolane
    профессиональный разработчик
    botman на данный момент самый "лучший" (ИМХО), ибо не очень большой выбор. В целом, он не плох (если) хорошо изучить документацию. Я, например, ВК драйвер недавно сделал для него (скоро залью на гитхаб). Проблемы только с Телеграмм - если использовать сервер из РФ, он работать не будет. А так, в целом, очень неплохой. Лучше, я пока не встречал

    п.с. до него я написал трёх ботов "в ручную" (для ВК, Фейсбук и Web). Работают норм, но больше похоже на "костыли", и не очень удобно. А в botman "Hello world" в 39 строк кода, у меня выглядит так:
    <?php
    require_once 'vendor/autoload.php';
    
    use BotMan\BotMan\BotMan;
    use BotMan\BotMan\BotManFactory;
    use BotMan\BotMan\Drivers\DriverManager;
    use BotMan\BotMan\Cache\CodeIgniterCache;
    
    $config = [
        'facebook' => [
          'token' => 'EAAZAT6dcgYDQBAC6x7X******85SLSPF0BRCVeRPPgutgtfvZCkZC9lxnP5pYcRXtF0m7sOAliTEztGPR45cOxx3rZAMZBc9Mb9UhB62gBSG2kXTo7ldyk2fTquadMJQVY8nqKxiOakLXLUZBCSavncCljoe5IAZDZD',
          'app_secret' => 'b52517e****71b6afa76dca657',
          'verification'=>'my_example_veryfy_token',
        ],
        "vkontakte" => [
           "token" => "9af81c610faf0ea319*****d17b0b2b53b164ff3b18cc1b9d4e422fd15db046594139078"
        ],
        'telegram' => [
            'token' => '60176***:****fVCz43IblR72siiyfbebv7wgqCn8tc'
        ]
    ];
    
    DriverManager::loadDriver(\BotMan\Drivers\Vkontakte\VkontakteDriver::class);
    DriverManager::loadDriver(\BotMan\Drivers\Facebook\FacebookDriver::class);
    DriverManager::loadDriver(\BotMan\Drivers\Telegram\TelegramDriver::class); 
    
    $this->load->driver('cache');
    
    $botman = BotManFactory::create($config, new CodeIgniterCache($this->cache->file)); 
    
    $botman->hears('привет', function (BotMan $bot) {
        $bot->reply('Хай.');
    });
    
    $botman->fallback(function($bot) {
        $bot->reply('Чё ??? ...');
    });
    
    $botman->listen();


    UPD
    на этом фреймворке возможны проблемы с русским языком (кодировкой).
    Чтобы её решить, нужно использовать iconv
    iconv('utf-8', 'windows-1251', тут_ваш_ответ_сервера);
    Ответ написан
    1 комментарий
  • В каких случаях использовать Class, а в каких function (js)?

    вообще классы - это синтаксический сахар для функций, но пока что это не полноценные классы, какие есть в других языках и даже в сравнении с 'классами' на функциях их возможности урезаны, поэтому их применение несколько сомнительно. Захотите приватные свойства, например, а их нет. Поэтому лучше на функциях (или typescript/dart)
    Ответ написан
    9 комментариев
  • В каких случаях использовать Class, а в каких function (js)?

    JavaScript - удобный язык, если разработчик хочет использовать разные стили программирования.
    В js если хотите использовать ООП, можете использовать прототипный стиль или же функциональный.
    Используя классы - не вводится новая объектно-ориентированная модель, внутри все те же прототипы, это просто синтаксический сахар
    Ответ написан
    1 комментарий
  • Как правильно написать наследуемый класс (js)?

    class Parent {
        constructor() {
            this._name = 'Иван'
        }
    
        get name() {
             return this._name
         }
    }
    
    class Child extends Parent {
        constructor() {
            super()
            this._patronymic = 'Иванович'
        }
    
         get patronymic() {
             return this._patronymic
         }
    
         getMsg() {
             console.log(`${super.name} ${this.patronymic}`)
         }
     }
    
    const child = new Child() 
    
    child.getMsg()

    Посмотрите уроки codeDojo по наследованиям - Уроки
    Ответ написан
    Комментировать
  • Как набираться опыта и формировать портфолио?

    Vlad_IT
    @Vlad_IT
    Front-end разработчик
    Итак, я учусь на geekbrains веб-разработке.

    Ошибка номер один. Из всех новичков, что я видел, с гикбрайнса самые слабые. Их не учат учиться, их учат повторять, не давая нормальную теоретическую и практическую базу. Задания очень слабые, а курсы поверхностные.
    статьи и пр. это конечно хорошо, но применять на практике то, что прочитал, это совершенно другое, а особенно в боевых условиях

    Пока не будете читать, так и будете практиковать визуальные эффекты на jQuery. Нужна база. В начале 25% теории 75% практики. Читайте https://css-tricks.com , большую книгу css (она немного устарела, гриды не рассматривают, но основная база очень полезная), смотрите Юрия Артюха (если хотите делать крутые анимации), лазьте по https://www.awwwards.com/ и разбирайтесь, как люди так делают. А также практикуйтесь, сделайте себе сайт, сайт другу, сайт девушке - всем.

    UPD: В чем сложно придумать себе близкую к боевому задачу? Боевую задачу вам вряд-ли кто-то даст, т.к. без опыта боевых задач, вы сделаете не боевое решение. Вот там "боевые" задачи.
    1) Сделайте калькулятор произведения матриц - разминочка.
    2) Сделайте игру арканоид, хоть на дивах (а раньше, когда мы учили программирование, новичков привлекала разработка игр, а сейчас почему-то сайты. Раньше было романтичнее как-то).
    3) Сделайте приложение учета личных финансов, в котором есть такие функции
    - личный счет
    - форма добавления денег в личный счет с комментарием и выбором группы доходов (долг, зп, заказ, подарок и.т.д.).
    - форма снятия денег с личного счета с комментарием и выбором группы расхода (вернул долг, купил домой что-то, купил технику, еду, потратил на женщину и.т.д.)
    - Вывод списка доходов и расходов с фильтром, сортировкой и категориями.
    - создание расписания автоматического пополнения (зп) или снятия (аренда, абонентская плата) средств с личного счета.
    - создание простого графика расходов и доходов. Я бы сюда добавил еще прогнозирование доходов и расходов хотя бы через линейную регрессию (да, я люблю машинное обучение),
    - добавление нескольких счетов
    Эта задача норм, и типа боевая, и для себя пригодится, и на гитхаб можно выложить - красота.
    Ответ написан
    14 комментариев
  • Как анимировать цифры?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Поможет jQuery.animate() – этим методом можно, в т.ч., абстрактное значение изменять от A до B. Примерно так:
    $({ myProp: A }) // начальное значение A
      .animate(
        { myProp: B }, // целевое конечное значение B
        { // всякие опции анимации: время, функция на каждый шаг и т.п.
          step: function(now, tween) {  } // эта будет вызываться на каждом шаге анимации
        }
      );


    Для вашей задачи пример (Fiddle):
    const $price = $("#banner-message > p > span");
    
    $("button").on("click", function(){
      const oldPrice = parseInt($price.text());
      const newPrice = Math.round(500 + Math.random() * 4500);
      $({price:oldPrice}).animate({price:newPrice}, {
        step: (now, tween) => $price.text(Math.round(tween.elem.price))
      });
    });
    Ответ написан
    2 комментария
  • Как анимировать цифры?

    SnaIP
    @SnaIP
    Front-end разработчик
    Комментировать
  • Где брать примеры хорошего ООП?

    Stalker_RED
    @Stalker_RED
    Посмотрите исходники nodejs, vue, или еще чего-нибудь, у чего тыщщи звезд.
    Даже если окажется, что ООП там не идеальный - вы будете не в одиночестве. Найдутся тысячи единомышленников, готовых вести святую войну за единственно правильный ООП. (По крайней мере на этой неделе.)
    Ответ написан
    Комментировать
  • Как добавить класс элементу, найденному по классу?

    Sanasol
    @Sanasol Куратор тега JavaScript
    нельзя просто так взять и загуглить ошибку
    getElementsByClassName

    getElementById

    https://www.w3schools.com/jsref/met_document_getel...
    третий пример
    Ответ написан
    Комментировать
  • Как добавить класс элементу, найденному по классу?

    FFxSquall
    @FFxSquall
    Могу писать код, могу не писать
    Вы находите "элементы", а не один элемент.
    Правильно например так:
    document.querySelector('.body').classList.add("test2");

    Если у вас много таких классов и всем надо добавить ещё, то придется воспользоваться циклом for:
    var elements = document.getElementsByClassName("body");
    for (var i = 0; i < elements.length; i++) {
        elements[i].classList.add("test2");
    }
    Ответ написан
    5 комментариев
  • 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 комментарий