• Как заменить все слова "Привет", "Ок" на "Hello", "Ok"?

    Stimulate
    @Stimulate
    могу
    echo str_replace(array('Привет', 'Ок'), array('Hello', 'Ok'), $html);
    Ответ написан
    3 комментария
  • Какую математику учить php программисту и в общем что учить?

    @stratosmi
    Логика-мышление развиваются программированием.
    Ответ написан
    Комментировать
  • Как активировать функцию php при нажатии на тег?

    Noizefan
    @Noizefan
    Молодец, что стараешься понять и сделать, но ты не совсем понимаешь как взаимодействуют между собой технологии, js <-> php, html <-> js, браузер с сервером.

    Рекомендую углубиться в чтение документации по AJAX и в формы и их обработку на PHP.

    Картинка и тег основательно разные термины, и, говоря простыми словами, тебе нужно связать onClik с AJAX’ом и php-обработчиком.
    Ответ написан
    3 комментария
  • Где можно купить исходники кода на игры или приложения?

    saboteur_kiev
    @saboteur_kiev Куратор тега Разработка игр
    software engineer
    Если исходники - проприетарны, их попытаться купить можно только у автора-владельца. Но не факт, что владелец согласится.

    Если исходники open-source - они уже доступны где-нибудь в интернете, например github, sourceforge, лично на портале проекта, в общем по-разному.
    Ответ написан
    Комментировать
  • Как безболезненно переехать с одного VDS хостинга на другой?

    Softer
    @Softer
    Нет, скрипта нет. Но делается все не так сложно. Даже можно с минимальным даунтаймом переехать.
    Примерно так:
    1. Поднимает софт на новом сервере
    2. Обмениваемся SSH-ключами между серверами
    3. Копируем файлы rsync-ом
    4. Переливаем БД, можно напрямую (дамп тут, а выхлоп через "|" туда)
    5. Проверяем все
    6. Готовим конфиг nginx чтобы все что придет на старый сервер проксировалось на новый
    6. Пару раз делаем доп. синк файлов, если проекты нагружены. Чтобы финальный синк был быстрей.
    7. Выключаем проекты на старом месте
    8. Ставим переливаться БД по новой (данные-то уже устарели после п.4.)
    9. Синкакаем файлы в последний раз.
    10. Запускаем nginx на старом
    11. Проверяем что все работает
    12. Меняем DNS-записи
    13. Ждем для 2 пока запросы не перестанут ходить на старый сервер
    14. Тушим старый сервер.
    Ответ написан
    Комментировать
  • Как вы разрабатываете Rest API?

    @float64
    Поддерживаю тему с graphql - но тут надо понимать что для того чтобы его применять вам все равно нужно сначала создать REST API с основными CRUD-операциями из которых graphql уже будет собирать все что нужно.

    По основной теме могу сказать что лучший подход для создания REST API с автоматической генерации Swagger/Open API спецификации который я видел называется "Model Driven Design" - вот статья о нем: https://strongloop.com/strongblog/node-js-api-tip-...

    Статья от разработчиков loopback framework: https://loopback.io

    Судя по вашему вопросу у вас бекенд на js поэтому можете попробовать его - это как раз специализированный фреймворк для создания API-серверов. Генерирует весь APi для всех моделей приложения автоматически + методы для всех реляционных связей + позволяет добавлять свои методы.

    Для PHP-стека тоже есть решение: https://api-platform.com но оно пока что уступает loopback из-за неполной поддержки автоматического создания эндпоинтов для реляционных связей.

    Моя рекомендация:
    1) Прочитать про model driven design
    2) Составить список моделей вашего приложения
    3) Прописать поля, методы и связи каждой модели
    4) Сгенерировать API по полученному описанию, документировать, приправить лучком, подать на стол
    Ответ написан
    Комментировать
  • Браузер не может отрисовать очень большую таблицу. А нужно. Что делать?

    delphinpro
    @delphinpro Куратор тега JavaScript
    frontend developer
    Вы на каждое добавление ячейки обновляете весь DOM/
    Собирайте таблицу в виде строки, потом вставляйте ее целиком. или используйте DocumentFragment
    Здесь подробнее https://learn.javascript.ru/multi-insert


    UPD
    Ответ написан
  • Разбираюсь с Jquery, почему не работает метод $("#id")?

    Vlad_IT
    @Vlad_IT Куратор тега JavaScript
    Front-end разработчик
    Ну вы хоть прочитайте ошибку
    listeners.js:26 Uncaught ReferenceError: jQuery is not defined
    Что в переводе - jQuery не определен, т.е. его не существует. А значит, что либо вы его не подключили, либо вы подключили его после вашего скрипта.
    Ответ написан
    1 комментарий
  • Как на практике вы используете виджеты YII2?

    slo_nik
    @slo_nik Куратор тега Yii
    Доброе утро.
    Использую и для форм и для меню.
    Никакого бардака не создаётся, а наоборот, всё аккуратно и понятно.
    Настройка под вёрстку - никаких проблем.
    Отключить валидацию на стороне клиента - никаких проблем.

    Перечислять можно много, скажу так. Если не умеешь работать с yii2 или не знаешь как - будет бардак.

    p.s.
    Использую на frontende такие виджеты:
    1) Nav
    2) NavBar
    3) ActiveForm
    4) ListView
    5) Modal
    6) DetaiView
    7) LinkPage
    Ответ написан
    Комментировать
  • Как с помощью PHP или JS показывать div в определенные дни?

    swede2k
    @swede2k
    Full-stack developer
    $today = strtotime(date("Y-m-d"));
    $begin = strtotime(date("Y-11-21"));
    $end = strtotime(date("Y-11-25"));
    
    if($today >= $begin && $today <= $end) {
       echo "Показываем div";
    }
    Ответ написан
    Комментировать
  • Зачем нужны коммутаторы?

    DevMan
    @DevMan
    хотя это и неочевидно из их названия, нужны они для коммутации.
    https://ru.m.wikipedia.org/wiki/Сетевой_коммутатор
    Ответ написан
    Комментировать
  • Скопировал фрагмент js кода, угражают судом, возможно ли?

    BBmike
    @BBmike
    Во-первых, авторы претензии блефуют.
    Если бы они на самом деле "Скриншоты фрагментов кода "Расчета стоимости" заверили у нотариуса и наш юрист готовит заявление в суд.". то никто бы уже не просил Вас удалить код хотя бы в силу того, что каждая страница у нотариуса стоит до 10К рублей.

    Во-вторых, они не совсем точно обрисовали ответственность, которая грозит так что, юриста там никакого нет (иначе, как минимум это он бы писал претензию)

    В-третьих, Вам лучше знать, украли ли Вы у них код или нет. Если да, то удалите его.

    В-четвертых, никто и никогда не не даст Вам даже в очной встрече какие-то прогнозы по таким делам.
    Если программа не зарегистрирована и код не депонирован, то спор долгий, сложный и тяжелый с привлечением экспертов.
    А уж слушать оракулов в интернете , которые явно видят исход этого дела, опираясь на свое чувство прекрасного, так это вообще последнее дело.
    Ответ написан
    Комментировать
  • Как безопасно разорвать fixed price контракт?

    @vism
    Вы думаете тот человек не понимает что делает? Он прекрасно понимает и пользуется вами.

    У вас там 2 этапа копеешные, делайте возврат и отменяйте заказ. + заранее подготовьте скрины и грамотное доказательство, т.к. заказчик может подать жалобы из мести, типо вы все ему сломали.
    Ответ написан
    7 комментариев
  • Как безопасно разорвать fixed price контракт?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    типичная ситуация с фиксПрайс контрактами, будет вам урок, никогда нельзя брать фикспрайс контракты, даже на 5 минутную "доработку" - рано или поздно ты изза копеечной правки нарвешься на такого заказчика, который испортит тебе репутацию.
    Само собой не все такие проблемные, но в случае проблем (например клиент хочет бесконечно растягивать обьем работ, затягивая и компосируя мозги как в примере), то ты будешь всегда крайним.
    ---
    Вариантов не так много:
    1. возврат денег (безопасно но теряешь деньги за уже выполненый труд)
    2. Не разрывать контракт, просто ему также бесконечно компосировать мозги, он тебе что-то шлет, ты соглашаешься посмотреть (но не указываешь точных сроков когда что-то посмотришь или исправишь), просто все время говоришь что еще НЕ разобрался, нужно время, при этом никогда не грубишь и НЕ отказываешься от работы, просто тянешь бесконечно время, ничего не делая, если он начинает высказывать не довольство ожиданием, предлагаешь ему сменить подрядчика.
    Клиент или сам расторгнет контракт, или забьет, ну и в случае чего спор проще будет решать, все равно клиент сам пропал, а теперь не хочет ждать когда у тебя время освободится. . .
    3. Попробовать все довести до желаемое клиентом состояния - но предположу что скорее всего не получится сколько бы ты труда не вложил, (нужно понимать что всегда оставшиеся 10% проекта занимают 90% труда), кто заказывает по фикспрайс часто этого не понимают и что-то обьяснять ему как правило бесполезно (поэтому брать проекты на фикспрайс - это безумие, хорошо тебе еще ума хватило проект на этапы разделить, так бы ты ни копейки за свой труд не увидел).
    Ответ написан
    Комментировать
  • Как в id поставить переменную?

    Stalker_RED
    @Stalker_RED
    var ok = "id1";
    $(".nm-one").append('<input type="text" title="название услуги" class="info-cnt-text-2" id="' + ok +'" value="ok" />');
    // или
    $(".nm-one").append(`<input type="text" title="название услуги" class="info-cnt-text-2" id="${ok}" value="ok" />`);
    Ответ написан
    2 комментария
  • Как удалять материалы с сайта?

    @LemonFox
    stateless mind
    1. Foreign key + on delete cascade
    2. Везде выводить данные где status =
    Ответ написан
    1 комментарий
  • Какие курсы по php выбрать?

    Minifets
    @Minifets
    Hello world!!!
    В последнее время подрабатываю репетиторством по PHP, для подготовки джунов в штат.
    Появилась идея сделать бесплатный онлайн курс по php 7, но неизвестно насколько это актуально с уже имеющейся базой бесплатных и платных курсов.

    Если есть желающий, то можете написать на gmail. Если наберется группа, то старт будет в январе 2019.

    P.S. Надеюсь не забанят :).
    Ответ написан
    Комментировать
  • Оценка своего уровня. Как улучшить код?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    1. Используйте const вместо let для определения переменных которые не переопределяются в коде. Это помогает снизить когнитивную нагрузку с человека читающего код и негласный стандарт в React разработке.

    2. Такие вещи как globalStyles и конфигурацию store лучше вынести в отдельные файлы. Они могут со временем хорошо разрастись.
    По поводу globalStyles, вы вообще можете вынести их в отдельный css файл.

    3. Вместо:
    {
      isModal
      ? <Route path="/auth" component={AuthPopup} />
      : null
    }

    лучше:
    {isModal && <Route path="/auth" component={AuthPopup} />}


    4. Вместо:
    function mapDispatchToProps(dispatch) {
        return {
            autoLogin: () => dispatch(autoLogin()),
            getBrowser: () => dispatch(getBrowser()),
            getMedia: () => dispatch(getMedia())
        }
    }


    лучше:
    const mapDispatchToProps = {
      autoLogin,
      getBrowser,
      getMedia,
    };


    5. Точки с запятыми в конце то есть, то нет. Определитесь и приведите код к одному виду.

    6.
    & label {}
    & input {}
    & span {}

    Это не очень хороший подход. Во-первых ваши стили не изолированные, что может приводить к неожиданным результатам. Во-вторых у вас очень много дублирования стилей. Определите Input и Label как базовые компоненты и используйте в разных местах, то же с остальным если есть.

    7. Почему папка со страницами называется Containers? Дань бойлерплейтам?

    8. Использование trailing comma является хорошей практикой.

    9.
    import {combineReducers} from 'redux';
    import photoReducer from './photoReducer';
    import authReducer from './authReducer';
    import globalReducer from './globalReducer';
    
    export default combineReducers({
        photoReducer, authReducer, globalReducer
    })


    Все таки приятней работать с хранилищем в котором ключи не имеют в названии слова reducer:
    import {combineReducers} from 'redux';
    import photo from './photoReducer';
    import auth from './authReducer';
    import global from './globalReducer';
    
    export default combineReducers({
      photo, 
      auth,
      global,
    });


    10. Забудьте вообще, что в языке есть возможность использовать вложенный тернарный оператор:
    return e === 'invalid-email' ? 'Неверно указан e-mail'
        : e === 'user-not-found' ? 'Указанный e-mail на найден'
        : e === 'wrong-password' ? 'Неверный пароль'
        : e === 'email-already-in-use' ? 'Указанный e-mail уже используется'
        : e === 'network-request-failed' ? 'Нет подключения к интернету'
        : e === 'operation-not-allowed' ? 'Произошла ошибка, попробуйте снова'
        : e === 'popup-closed-by-user' ? 'Окно авторизации закрыто пользователем'
        : e === 'account-exists-with-different-credential' ? 'Аккаунт уже существует с другими данными, используйте другой способ авторизации'
        : e

    Это одна из самых худших практик в JavaScript разработке. Тут лучше подойдет конструкция switch case

    11. Константы actionTypes лучше вынести в папку constants и разложить по разным файлам, иначе со временем у вас там будет свалка.

    12. Вместо:
    import {SET_ACTIVE, CHANGE_VALUE, SET_DEFAULT, UPLOAD, UPDATE_IMAGE, SET_IMAGE_ERROR, SET_LIKE, SET_COMMENT, ADD_ARTICLE_SUCCESS, FETCH_ARTICLES_START, FETCH_ARTICLES_SUCCESS, FETCH_ARTICLES_ERROR} from '../actions/actionTypes';

    Лучше:
    import {
      SET_ACTIVE,
      CHANGE_VALUE,
      SET_DEFAULT, UPLOAD,  
      UPDATE_IMAGE,
      SET_IMAGE_ERROR,
      SET_LIKE,
      SET_COMMENT,
      ADD_ARTICLE_SUCCESS,
      FETCH_ARTICLES_START,
      FETCH_ARTICLES_SUCCESS,
      FETCH_ARTICLES_ERROR,
    } from '../actions/actionTypes';


    13. Попробуйте внедрить библиотеку reselect. И для получения значения из store вместо записи вида:
    function mapStateToProps(state) {
        return {
            browser: state.globalReducer.browser
        }
    }


    использовать селектор:
    const mapStateToProps = state => ({
      browser: browserSelector(state),
    });
    Ответ написан
    12 комментариев