• Как понять, какое расширение роняет chrome на linux?

    Kozack
    @Kozack
    Thinking about a11y
    Отключение все расширения. Проведите проверку, убедитесь что всё работает и что проблема действительно в одном из расширений. Включайте расширения по одному и проверяйте. Когда проблема снова проявится — последнее включенное расширение и есть проблемное. Проверьте это, включив все расширения кроме проблемного — убедитесь что всё работает
    Ответ написан
    3 комментария
  • Какова причина заноса IP vps в спам-листы?

    Sanes
    @Sanes
    поднимаю vps на одном известном хостинге

    1. у вас IP бу-шный
    2. в абузе должны быть логи и вообще описана суть претензии
    Ответ написан
    6 комментариев
  • Как сделать дополнительные мониторы по сети?

    @t38c3j Автор вопроса
    Оказалось все просто)
    xrandr --addmode VIRTUAL1 1920x1080
    xrandr --output VIRTUAL1 --mode 1920x1080
    x11vnc -rfbport 25901 -clip 1920x1080+1920+0 -forever

    А дальше уже на второй машине ставим VNC клиент и подключаемся.
    По аналогии команд выше можно еще один дисплей добавить.
    Ответ написан
    1 комментарий
  • Вопрос окупаемости: Как правильно пиарить игру без поддержки издателя?

    GavriKos
    @GavriKos Куратор тега Разработка игр
    1) Если игра хорошая - то издатель будет заинтересован.
    2) Для PS4 и XBOX площадка то только одна - их встроенные сторы. Для PC - бомбить в самые популярные.

    Пиаром игр занимаются маркетологи. Их и ищите. Есть вполне себе внештатные ребята такие. Только учтите что раскрутка игры может стоить много, и вполне может быть сопоставима с бюджетом разработки.
    Ответ написан
    3 комментария
  • Генерация 2D ландшафта как в террарии (как реализовать) на Unity?

    GavriKos
    @GavriKos Куратор тега Unity
    Как сделать что то - НАПИСАТЬ КОД.
    В юнити нет готовых инструментов для вашего кейса. Так что:
    - или пишем код
    - или ищем код в assetstore
    - или заказываем код за оплату.
    Ответ написан
    Комментировать
  • Брут 18 значного числа?

    Deissh
    @Deissh
    I like Python, Node.JS, Go, pain, bugs and my cat.
    Берём и реализуем брут по радужным таблицам, весело и не очень долго. Естественно распараллелив по потокам и по кластерам.
    Ответ написан
    Комментировать
  • Как определить подходящую компанию на рынке труда веб-разработки для первого раза?

    gobananas
    @gobananas
    finishhim.ru
    Вариант А - продукт, менеджер, разработчик
    Вариант Б - это работа маркетолога больше

    У вас 2 пути:

    1. Работа в компании где заказная разработка - зачастую бардак, хаос, всё горит, если это небольшая компания, но зато есть шанс прокачаться в проектах с нуля, архитектуре.
    2. Работа с продуктовой компании. Там всё уже написано до вас, на сколько хорошая там будет прокачка непонятно. Может быть хорошая. А могут быть устаревшие технологии прокачки вообще не быть.

    Идите куда берут. Пума верно сказал.
    Ответ написан
    Комментировать
  • Почему не устанавливается *buntu на старый Intel Atom нетбук?

    hint000
    @hint000
    у админа три руки
    1. Долго ждать (5..10 минут) после зависания пробовали? сталкивался с дико медленным стартом установки Убунты на некоторых компьютерах (не Atom).
    2. Если вместо установки выбрать live-загрузку с того же носителя - каков результат? Для верности тоже предлагаю подождать подольше.
    3. Посмотрите в сторону отключения безопасной загрузки в BIOS\EFI, если такое есть в вашем нетбуке. При выборе загрузочного устройства по F8\F11\F12 могут быть два варианта USB-устройства - EFI и legacy - тоже поэкспериментировать.
    4. Linux в высшей степени толерантен к смене железа, поэтому рассмотрите такой вариант: снять диск (hdd\ssd) с нетбука, подцепить его на любой другой компьютер, установить там *buntu, вернуть диск в нетбук.
    5. у lenovo вообще уродский подход к бюджетному железу, так что не сильно удивляйтесь. На всякий случай последнее: обновлённой прошивки BIOS на оф.сайте нет?
    6. у меня нетбук на столь же древнем Atom N450, (но не lenovo) - несколько раз ставились на него разные версии *ubuntu, проблем не было. Это я к тому, что сам по себе Atom не виноват.
    Ответ написан
    Комментировать
  • Какой компьютер выбрать для разработки?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Берите топовое железо, не ошибетесь:
    • Platform: i9/Xeon или Threadripper 2950 + MSI MEG X399 CREATION
    • RAM: 32/64 ECC, Crusial норм, например
    • Video: MSI 1(2) RTX 2080 (можно и TI, но у них сейчас слишком много брака)
    • ROM: 1(2) Samsung 970 PRO 1TB M.2
    • PSU: Seasonic Titanium 1000 / Seasonic Platinum/Gold 1300 - ибо гарантия 12 лет

    Корпус и охлаждение — на свой вкус и слух. Если что, кулеры Noctua рулят и очень тихие. Если видеокарт две будете брать — то имеет смысл брать БП на 1300 для оптимальной нагрузки на БП (так то и на киловатт легко потянет, но он тогда будет уже напрягаться и греться сильнее). Так что БП пусть лучше будет с запасом.
    Ответ написан
    2 комментария
  • Как лучше запускать задачу из cron каждые 10 секунд?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    запускать каждые 10 секунд - не слишком выгодно.

    Напишите себе демона и пусть он все время работает с банальной паузой или сверкой timestamp.
    А в кроне просто периодически проверяйте запущен он или нет.
    Ответ написан
    Комментировать
  • Алгоритм нахождения победителя (крестики нолики)?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Я бы обозначил первого игрока единицей, а второго четверкой.
    Если сумма в ряду, столбце или диагонали равна 3 - выиграл первый, если она 12 - выиграл второй.
    Ответ написан
    Комментировать
  • Оценка своего уровня. Как улучшить код?

    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 комментариев
  • Go можно ли написать функцию расширяющую сторонний пакет?

    igorzakhar
    @igorzakhar
    Вариант 1 - Псевдоним:
    type MyType ext_api.Data
    
    func (m *MyType) PrintDataEx() {...}

    Вариант 2 - Встраивание:
    type MyStruct struct {
        *ext_api.Data
    }
    
    func (m *MyStruct) Method() {...}
    
    m := &MyStruct{...}
    m.Method()

    UPD.
    Нужно ещё учитывать что в структуре ext_api.Data поля должны начинаться с заглавной буквы, чтобы они были доступны при импорте.
    Ответ написан
    4 комментария
  • В чем заключается худший случай для хеш-таблиц?

    GavriKos
    @GavriKos
    Вам пример? Это когда у всех элементов хеш совпадает - невозможно найти нужный элемент только по хешу и приходится искать вручную. Т.е. таблица грубо говоря становится обычным массивом.
    Ответ написан
    Комментировать
  • В чем заключается худший случай для хеш-таблиц?

    @Teslaman
    При коллизиях (совпадении хэша) элементы обычно складывают в связный список. В поиске по этому связному списку и кроется O(n).
    Ответ написан
    Комментировать
  • Есть ли перспектива создавать сой яп для игр??

    OrlovEvgenii
    @OrlovEvgenii
    golang developer / DevOps
    который будет быстрее всяких C++..

    быстрее всяких C++..

    всяких C++..


    5b9691e4ae14d531041711.jpeg

    Если по делу - нет.
    Ответ написан
    Комментировать
  • В чем измеряется параметр txqueuelen?

    15432
    @15432
    Системный программист ^_^
    В единицах Ethernet кадров. При этом размер каждого кадра ограничен значением MTU. Если очередь заполнена, write() на блокирующем сокете будет ожидать, пока очередь не освободится, на неблокирующем выдаст ошибку EWOULDBLOCK
    Ответ написан
    Комментировать
  • Заблокирован IP сервера, не подключается к VPN. Что делать?

    @Wexter
    Используйте tcp и 443 порт, если и так не прокатит то сомневаюсь что что-то ещё может помочь
    Ответ написан
    Комментировать