• С чего начать изучать Операционные Системы?

    Adamos
    @Adamos
    Я так понимаю, сначала вопрос звучал как "С чего начать изучать компьютер?", но вы сделали над собой усилие и смогли его немного конкретизировать. Повторите эту итерацию еще раза три - глядишь, получится вопрос, на который реально можно дать ответ.
    Ответ написан
  • Самый простой способ реализовать real time MySQL (без firebase!) базу данных для маленького приложения?

    @xfg
    Базу данных можно выбрать любую. Она не играет роли в realtime приложениях. Позвольте вам немного объяснить. Для передачи данных между клиентом и сервером в браузере существует всего два протокола. HTTP и Websocket. Firebase не магия и также использует их. Если браузером не поддерживается Websocket, то firebase откатывается на HTTP. Используя общераспространенный подход к разработке на PHP у вас не получится использовать websocket протокол поскольку типичные PHP приложения не живут дольше 1 запроса. Соответственно да, в таком варианте остается только ajax. Но точно также работает и firebase если в браузере нет поддержки websocket, так работает facebook, telegram и много всего остального. Они используют long-polling. Клиент отправляет запрос к скрипту на сервер, скрипт в цикле опрашивает хранилище mysql или более продвинутый вариант mysql+redis (чтобы не грузить запросами mysql) и пока данных не будет, цикл так и продолжит крутиться, для клиента это просто выглядит как повисший запрос к серверу. Как только данные появляются, они отправляются на клиент, соединение разрывается, а клиент сразу же отправляет новый запрос.

    Есть развитие этой идеи. Называется HTTP Streaming. Отличие от long-polling в том, что после отправки данных клиенту соединение не разрывается, а сервер продолжает отправлять последующие данные по этому же соединению. Соединение разрывается по таймауту. Минус в том, что прокси-сервера могут кешировать небольшие пакеты данных и данные нужно раздувать например пробелами, чтобы пакет данных достигал минимального размера и был способен пробить кеш прокси-сервера. Плюс в том, что если у вас данные для клиента появляются скажем с переодичностью раз в секунду, то не будет происходить постоянного открытия-закрытия соединения как при long-polling.

    Есть вариант, когда можно реализовать небольшую прослойку на socket.io. Ваше PHP приложение пишет данные для клиента например в redis. Приложение на socket.io подписывается на redis. Когда PHP что-то отправляет в redis, то socket.io мгновенно об этом узнает и рассылает это событие по websocket протоколу всем подключенным клиентам. Минусы. Раздуваете стек. Нет консистентности данных между записью в основное хранилище (mysql/postgre/mongo/etc) и redis. Соответственно может возникнуть ситуация, когда данные записали, но в redis событие не ушло. Поменяете местами, будет наоборот, событие есть, данных в базе нет.

    Вариантов в целом очень много. Всё это называется Comet. Вам проще всего реализовать long-polling.

    А реал-тайм база, которая умела пушить данные клиенту по tcp протоколу (но не в браузер) была и называлась она rethinkdb.com. Ныне не развивается. IP в России заблокирован. На сайт можно сходить по VPN.
    Ответ написан
  • Telegram API: Как отправить несколько изображений в одном сообщении?

    Zempik
    @Zempik
    ๏̯͡๏
    Теперь telegrap api такое поддерживает. Метод называется sendMediaGroup.
    Посмотрите в документации https://core.telegram.org/bots/api#sendmediagroup
    Причем можно отправлять смешанные файлы (Фото и видео)
    Ответ написан
  • Какой язык можно быстро освоить за 7 дней - C++ или Java?

    DevMan
    @DevMan
    ну так и пишите на жс, если нет принципиальных ограничений по используемым языкам.
    electron в помощь.

    решение так себе, но для курсовой вполне сойдёт. особенно за семь дней.
    Ответ написан
  • Зона ответственности сервисного слоя?

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

    Для того чтоб проектировать грамотные ООП приложения, достаточно освоить принципы SOLID. Это объективные принципы проектирования классов. которые сложно трактовать двояко.

    В рамках солида, всё что вы имеете ввиду под сервисным слоем - это просто классы, выполняющие какие-то задачи. Совершенно не важно какие. Главное что каждый класс имеет минимальное количество зависимостей и, чаще всего, выполняет одну задачу. Идея слоёв и сервисов перестанет будоражить воображение, если отказаться от использования суффикса "Service" в названии классов. Это, в конечном счёте, вынудит вас давать классам имена исходя из задач, которые они решают.

    Так же обратите внимание, на что SOLID - это не замена общепринятым подходам проектировани, таким как, например, паттерны или ДДД. Концентрируясь на проектировании отдельно взятых классов, солид прекрасно уживается с другими принципами.

    А насчёт того, как сделать лучше

    Coupon::doSomeOne();
    Coupon::doSomeTwo();
    Coupon::doSomeThree();


    или

    CouponDoSomeOne::do();
    CouponDoSomeTwo::do();
    CouponDoSomeThree::do();


    можно ответить что:
    1. в именах классов нет места глаголам (Do .- это глагол)
    2. класс должен соответствовать принципам SOLID


    Если оба эти условия выполняются, то вы на верном пути.

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

    @nvdfxx
    Senior Pomidor developer
    if (code == pass) {
        if(localStorage.getItem('pw')) {
            ...
        } else {
            localStorage.setItem('pw', code)    
            ...
        }
    } else {...}

    И вешаете обработчик на что хотите, а вообще, это бред какой-то, про jwt прочитать можно, или хотя бы про сессии и хеширование, и не хранить в локалсторе открытые пароли
    Ответ написан
  • В чём разница между веб сайтом и веб приложением?

    joeberetta
    @joeberetta
    Читай: https://epdf.pub/google-for-dummies.html
    В:
    В чём разница между веб сайтом и веб приложением?

    О:
    The main difference between a website and a web application is USER INTERACTION. Website is defined by its content. Web App is defined by its user interaction. For example you can consider a news site as a website.

    (Надеюсь с англ. нет проблем, иначе гугл/яндекс/иной транслейт)

    В:
    Почему большинство переходит на веб приложения?

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

    В:
    Какие плюсы/минусы у каждой из технологий

    О: Все технологии придуманы для облегчения жизнедеятельности людей. От этого и логика, фреймворк нужен не для того чтобы создать конкретно веб приложение вместо сайта, а чтобы упростить его разработку. Ничего более. Нравится все писать голыми руками и клепать 100500 шаблонных html файлов вместо 1 реюзабельного компонента? Пожалуйста, никто вас не останавливает (если это не оговорено в условиях договора/прочего документа). Плюсы у всех технологий (по крайней мере, задумывалось их создателями), облегчение труда/ускорение работы/уменьшение затрат(разных). Минусы: недоработанность/лишний код(который создается этими фреймворками)/много прочего

    В:
    неужто статическому интернету капут

    О: Скорее нет, чем да. Ибо статика обрела новую жизнь, под названием JAMStack
    Ответ написан
  • Удаленщики развиваются медленнее?

    mazhekin
    @mazhekin
    Frontend, Backend Web Developer
    По своему опыту могу сказать, что при переходе на удалённую работу(10 лет) из офиса(7 лет) мое развитие и производительность увеличились в разы.
    1) В офисе ты можешь ничего не делать, а просто показывать лицо и с умным видом рассуждать о полиморфизме. На удалёнке тебя никто не видит, а видят только твои результаты- это обязывает шевелиться быстрее и только по делу.
    2) В офисе ты слишком призязан к месту и организации, зачастую тебя берут на какой нибудь вырост, а в последствии могут дать поддерживать старую программку на фортране или на бейсике, или сунут печатать документы и рисовать рисунки и т.п. и ничего не скажешь. На удалёнке тебе легко поменять проект, если закончились твои задачи, ты смотришь на работу не как на что-то вечное и стабильное, а как на проект, на который тебя взяли из-за определенных скиллов, под конкретные задачи и от тебя ждут конкретные результаты.
    3) В офисе тебя отвлекают разговорами, совещаниями, теннисом и т.п., купят тот стул и комп, который купят, а не который ты хочешь, на удаленке у тебя отдельная комната - как минимум, кресло и мощный игровой ноут (легко поднимающий виртуальные машины или докер-контейнеры), которые ты сам себе выбрал.
    4) Да, экономия на времени, дороге, спорте, месте жительства само собой.
    5) В офисе обучение предлагается/навязывается, но так как вроде положение там стабильное то и оно не так и хочется прям учится, на удалёнке ты понимаешь что это твое конкурентное преимущество и без обучения никак, ты ищешь, анализируешь, что в тренде и больше востребовано, и подгоняешь свои скилы под общие требования рынка, а не конкретной организации.
    6) в офисе не особо поднимают тебе зарплаты типа никуда не денешься, а попросить неудобно, на удалёнке ты с каждым новым проектом пересматриваешь свою цену и приобретенный опыт. (ну хотя здесь немного вру, в офисе повышали нормально, после удачных релизов )

    Вобщем тут вопрос кому как нравится или стабильно и не спеша работать в офисе с чувством собственного достоинства, что ты трудоустроен и стабилен, или вкалывать и развиваться бешеными темпами, и сфокусированными, отточенными действиями разрабатывать проекты, много не разговаривая, "задачу дали - задачу выполнил" и постоянно доказывая свою выгодность удаленно. Но это имхо.

    И да... в офисе, мне сказали сразу, что тебя наняли решать задачи, а не отвлекать коллег, так что на то, что там кто-то делиться опытом, мне наверно не повезло.
    Ответ написан
  • При отключении плагина ACF сайт перестает работать и не помогает подключение полей в function.php?

    @baton4eg
    web developer
    С чего это он должен работать после отключения плагина ? о_О
    Ничего он не должен, поэтому и не работает.
    Ответ написан
  • Как найти последовательность символов внутри строки игнорируя при поиске все символы кроме букв и цифр?

    VicTHOR
    @VicTHOR
    (╮°-°)╮┳━━┳ ( ╯°□°)╯ ┻━━┻
    let str = '10 Great and Easy English Books!!! You Must Read. A regular expre  ! = ssion, !! ?? - () is a sequ  ence of characters&&? that define a sea_rch pattern.';
    
    let find = ['0greatandeasyengl', 'expressionisasequence', 'ersthatdefineasearchpattern'];
    
    find.forEach(function(pattern)
    {
      let pat = '';
      for (let i = 0; i < pattern.length; i++) {
        pat += pattern[i] + '[^a-z\\d]*';
      }
      let reg = new RegExp(pat, 'i');
      console.log(str.match(reg));
    })
    Ответ написан
  • Как выполнить PHP код из строки?

    aleksejjjj
    @aleksejjjj
    Есть конечно всякие eval и прочие радости опасного программирования, но я рекомендую запомнить простую аксиому: вам не нужно выполнять код из строки. Если вам кажется что нужно то вы что-то сделали не правильно.
    Ответ написан
  • Зачем в параметрах при деструктуризации нужно заворачивать в круглые скобки ({}), ([]), а не прямо {}, []?

    mmmaaak
    @mmmaaak
    синтаксис стрелочной функции: () => {}, если аргумент один - можно упустить скобки, если это не добавит неоднозначности при интерпретации, также и про тело функции, если одна операция, можно упустить фигурные скобки, беря во внимание то, что ее результат будет возвращен как результат работы функции. Допустим уберем скобки у аргумента, он же по сути один, запись будет выглядеть так:
    filter({ name } => ...);
    откуда интерпретатору понять, хотел ли ты передать в качестве аргумента объект { name }, который развернется потом в { name: name }, тогда дальнейший код будет невалидным
    filter(/* передать объект как аргумент можно */{ name: name } /*   а дальнейшее не валидно -> */  => ...)

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

    flapflapjack
    @flapflapjack
    Нажимательщик кнопков
    Как мне кажется - вы не в том направлении мыслите.

    А при чем тут вообще БД? Вы каким скриптом запись статьи обрабатываете - в том же месте и шлите уведомления в удобном вам виде. База данных тут вообще не при чем. Максимум, как в данной задаче должна участвовать БД - это сообщить методу рассылки пушей - смогла новость записаться или не смогла. (Если новость не записалась, то и пуши кидать не нужно, ведь статья еще не существует)
    Ответ написан
  • Разделяют ли в компаниях верстальщика и фронтендера, и как часто подобное встречается?

    lamer350
    @lamer350
    กำลังสูงสุด
    В нормальном мире нет вообще профессии верстальщик :) это только в СНГ есть такие позиции!
    Ответ написан
  • Как получить процент от числа в интервале?

    @Ksushqa
    Gamedev рулит
    (50-40)/(60-40)
    Либо линейную нормализацию посмотрите.

    Перечитала ваш вопрос. Все-таки не поняла его. Формулировка странная.
    Вы имеете в виду определить, где именно находится число 50 на заданном интервале? И отобразить в виде процента. Для чего вам это нужно, напишите.
    Ответ написан
  • Как получить процент от числа в интервале?

    @crazywu
    Для удобства сдвигаете границы и значение к 0
    60 - 40 = 20
    50 - 40 = 10
    После чего считаете процент числа от верхней границы 10/20 *100% = 50%
    Ответ написан
  • Как найти расстояние между такими точками?

    si1n3rd
    @si1n3rd
    Найдите длину отрезков АС и ВС, найдите их разницу. Из нее найдите координаты точки на окружности между А и С. После этого найдите координаты точки D исходя из того, что расстояние от D до найденной на окружности точки равно 2ВС. Найдя координаты точки D, найдете и все остальное.
    Ответ написан