Задать вопрос
  • Как безопасно разорвать 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 комментариев
  • Существует ли копирайт на перевод?

    Jump
    @Jump
    Системный администратор со стажем.
    Вы переводите объект авторского права.
    Для этого вам нужно получить разрешение правообладателя.
    В результате перевода у вас получается новый объект, права на который принадлежат вам.

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

    А уж спрашивать разрешения у автора или нет это ваше личное дело. Ну и по ситуации надо смотреть.
    Просто надо понимать что в таком случае возможны проблемы, и надо грамотно оценить риски.

    и достаточно ли будет указывать неактивную ссылку на источник
    Сама по себе ссылка ничего не дает.
    Важно только одно - разрешение правообладателя.
    А уж как вы договоритесь с этим правообладателем это ваши дела.
    Может правообладатель разрешить использовать текст для перевода вообще без оплаты и без условий, может попросить оплату, может выставить условия вроде указания ссылки или какие-то другие.
    Поэтому ссылка имеет смысл только если это условие правообладателя. В остальных случаях в юридическом плане она вообще никакого смысла не имеет.
    Ответ написан
    Комментировать
  • Java Memory limit exceeded на олимпиадном программировании?

    @StainlessDespair
    В первом способе слишком много абстракций. Когда речь заходит о критической экономии памяти нужно сразу забывать про существовании Stream API, стараться не использовать autoboxing и пытаться эффективней использовать ресурсы. На то они и олимпиадные задачки, чтобы писать все сортировки руками вместо однострочных стримов и пр.

    Что можно сделать:
    • закрывать сканер после чтения (не закрыв он так и будет висеть у тебя в памяти, которой может не хватить допустим в середине алгоритма)
    • открывать writer в самом конце (тоже самое что и со сканером, тем более что он тебе абсолютно не нужен в начале выполнения)
    • заменить мапу на массив, убрать использование объекта Integer (со списком тоже желательно, но боттлнек твоего первого способа именно её использование, поэтому если заменишь правильно не сломав логику, то должно хватить.)
    • не использовать стримы


    По поводу подсчёта памяти сервером скорее всего просто запускают виртуалку с -Xmx16m параметром и реагируют на OutOfMemoryError, но это не точно.

    ps Ты не можешь сравнивать Integer таким образом a.getValue() != b.getValue(). Integer суть объект, нужно использовать equals. А ещё в задании сказано разделять числа в output пробелами, а не переходами на новую строку, но это так, к слову.
    Ответ написан
    2 комментария
  • Как в линуксе открыть скрытую папку через терминал?

    alsolovyev
    @alsolovyev
    ¯\_(ツ)_/¯ Enjoy life, Eat well & Laugh often
    cd folder
    
    cd .hidden-folder
    Ответ написан
    Комментировать
  • Vue вместо jquery на примере кинозала?

    delphinpro
    @delphinpro Куратор тега JavaScript
    frontend developer
    минут пять, на коленке:

    Ответ написан
    16 комментариев
  • Как принять WiFi на большом расстоянии?

    POS_troi
    @POS_troi
    СадоМазо Админ, флудер, троль.
    Делал антенну как на видео: https://www.youtube.com/watch?v=s-MKhffuPzM
    У антенны была низкая скорость приема с 50 метром с 2-мя опять же нестабильными палками.

    Вы поймите одну единственную истину - усиливать необходимо с обеих сторон, радио связь это двусторонняя штука.
    Ответ написан
    Комментировать
  • Как принять WiFi на большом расстоянии?

    Jump
    @Jump
    Системный администратор со стажем.
    Хорошая направленная антенна, на обоих устройствах и точная настройка этой самой антенны.
    Ну и разумеется прямая видимость, и отсутствие препятствий в зоне Френеля.
    Ответ написан
    Комментировать
  • Как писать cover letter на upwork?

    ZERGE
    @ZERGE
    Меньше "Якать" и сразу писать по сути без абзаца. Клиент видит только первые 2 строки при просмотре списка каверов (см. скрин). Ну и сразу по скрину видна копипаста, пишешь так же как и индус )

    1484774827151622934.png
    Ответ написан
    2 комментария
  • Кто знает что за тема?

    @baitarakhov
    Ответ написан
    Комментировать
  • Как продолжить выполнение скрипта, при ошибки function?

    Почитайте про try catch.
    Ответ написан
    Комментировать
  • Как продолжить выполнение скрипта, при ошибки function?

    usdglander
    @usdglander Куратор тега PHP
    Yipee-ki-yay
    try {
        echo nas(23123, 123123);
    } catch (\Exception $e) {}
    Ответ написан
    Комментировать
  • Аудит сайта на дыры перед релизом?

    webinar
    @webinar Куратор тега PHP
    Учим yii: https://youtu.be/-WRMlGHLgRg
    перед запуском хотелось бы его протестировать на дыры и уязвимости.

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

    а на обычном микрофреймворке, в котором изначально была концепция mvc

    а потом mcv куда-то пропало?

    Какие дыры могут быть на сайтах?

    Самые разные. Вы ожидаете что кто-то знание целой индустрии уложит в 1 предложение? Это как спросить "ребят подскажите как сделать машину своими руками?"

    грубо говоря для них сайт в рид онли

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

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Да, есть прекрасный вариант - вы выходите на улицу и смотрите вдаль, на людей, вокруг. И делаете это при дневном свете. #sarcasm
    Ответ написан
    Комментировать
  • Как составить POST запрос с массивом данных?

    edward_freedom
    @edward_freedom
    $url = $file_name;
    
    //The data you want to send via POST
    $fields = [
        '__VIEWSTATE '      => $state,
        '__EVENTVALIDATION' => $valid,
        'btnSubmit'         => 'Submit'
    ];
    
    //url-ify the data for the POST
    $fields_string = http_build_query($fields);
    
    //open connection
    $ch = curl_init();
    
    //set the url, number of POST vars, POST data
    curl_setopt($ch,CURLOPT_URL, $url);
    curl_setopt($ch,CURLOPT_POST, count($fields));
    curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
    
    //So that curl_exec returns the contents of the cURL; rather than echoing it
    curl_setopt($ch,CURLOPT_RETURNTRANSFER, true); 
    
    //execute post
    $result = curl_exec($ch);
    echo $result;
    Ответ написан
    Комментировать
  • Можно ли использовать карту payoner для начинающего фрилансера?

    @andrew8712
    Payoneer только с 18 лет

    Если вы будете хранить деньги в сбере, никто к вам не придет и не спросит, откуда у вас 30 тыс. на счете. Хранить деньги на счете в РФ не запрещено законом.
    Ответ написан
    6 комментариев