• Как написать скрипт на python, который будет делать скриншот определённых мест экрана?

    Jump
    @Jump
    Системный администратор со стажем.
    Как написать скрипт на python, который будет делать скриншот определённых мест экрана?
    Открыть IDE и написать требуемый код.

    Мне нужно, чтобы скрипт python делал скриншот экрана
    from PIL import ImageGrab

    Кто поможет создать скрипт?
    https://freelansim.ru/
    Ответ написан
    Комментировать
  • Оценка своего уровня. Как улучшить код?

    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 комментариев
  • Как спарсить Linkedin?

    @eternalfire
    В официальной документации всё есть
    https://developer.linkedin.com/docs/rest-api
    Ответ написан
    Комментировать
  • Как расположить элементы по кругу?

    Vlad_IT
    @Vlad_IT Куратор тега CSS
    Front-end разработчик
    Делайте по такому принципу.
    Ответ написан
    12 комментариев
  • С чего начать изучение C++, если есть опыт программирования на других языках?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Попробуйте погуглить что-то вроде "C++ crash course", это может помочь.
    Вообще, С++ на PHP не похож совсем. И ваше непонимание того, что такое int это доказывает. Непонимание будет только расти, после того, как вы узнаете о ссылках и указателях, управлении ресурсами, сборке и дистрибуции проекта и т.п. Вот если бы вы после пхп, руби или пайтон начали изучать, то таких бы проблем не возникло.
    Так что, скорее всего проще и правда взять хорошую книгу (можете погуглить, таких вопросов много), и изучать C++ с нуля. Общий опыт программирования вам безусловно поможет, но повторюсь, языки разные.
    Ответ написан
    Комментировать
  • Как youtube воспроизводит видео?

    @Gortyser
    display: none;
    Плохо всматриваетесь
    spoiler
    5a86f516d1b66982870244.jpeg
    Ответ написан
    2 комментария
  • Чем Slack лучше Telegram?

    chupasaurus
    @chupasaurus
    Сею рефлекторное, злое, временное
    Чего навспоминал за 5 минут:
    • Статусы пользователей
    • Ветки комментариев внутри канала
    • Сниппеты
    • Подсветка синтаксиса для кучи языков
    • Поддержка в куче различных проектов без нужды в напильнике, зачастую самими авторами проектов
    • Возможность работы без мыши
    • Гостевые доступы до определённых каналов
    • Настройка уведомлений шире, чем mute channel :)
    Ответ написан
    8 комментариев
  • Это заказчики такие скупые пошли или я чего-то не понимаю?

    Bandicoot
    @Bandicoot
    Вась-программист
    Ну всё, хорошие разработчики перестали быть дефицитом) Смиритесь, это рынок. Современное программирование по сложности можно сравнить с инженерным делом, т.е. по сути ничего сложного здесь и нет. А задротов и самоучек хватает.
    Ответ написан
    30 комментариев
  • Какие дипломы/сертификаты по C#, VisualStudio, ASP.MVC, web - можно получить?

    1) Intuit - бесплатно.
    2) ITVDN - платно.
    3) Специалист (Москва) - платно.
    4) MVA https://mva.microsoft.com/ - бесплатно.
    Ответ написан
    Комментировать
  • Градация уровня знаний в языках программирования. Каковы различия и требования?

    longclaps
    @longclaps
    Поговорка есть такая: "молодец среди овец, а среди молодца и сам овца".
    Градации Junior, Middle и Senior существуют не сами по себе, а на конкурентном рынке труда.
    Просто позиций Junior и соискателей на них кратно больше, и из статистики по этой толпе яснее формируются ожидания рынка насчет квалификации Junior.
    ps тут в фавориты выбился простой ответ - это понятно ) плюсуют нетрудорустроеные соискатели, осваивающие синтаксис, и джуны, надеющиеся прочесть учебник по алгоритмам и пойти в гору. Всем удачи )
    Ответ написан
    4 комментария
  • Оператор % в Python?

    @rudikov
    С положительными числами думаю все очевидно.
    25.5%2.25 раскладывается как 2.25*11 + 0.75.
    С отрицательными числами будет так.
    -22.5%2.25 раскладывается как 2.25*(-12) + 1.5
    Дело в том, что мы не можем умножить на -11, так как это даст -24.75, что больше -25.5. Поэтому и умножается на -12.
    Ответ написан
    Комментировать
  • Как возможно интерпретировать этот Pascal ABC код в Python код?

    adugin
    @adugin Куратор тега Python
    class Sheet:
        def __init__(self, width, length, thickness=1, count=0):
            self.width, self.length = sorted([width, length])
            self.thickness = thickness
            self.count = count
            
        @property
        def foldable(self):
            return self.length >= 2 * self.thickness
        
        def fold_once(self):
            if self.foldable:
                self.width, self.length = sorted([self.width, self.length/2])
                self.thickness *= 2
                self.count += 1
                return True
            else:
                return False
            
        def fold(self):
            while self.fold_once():
                pass
            return self
    
    
    def run_test_cases():
        assert Sheet(82, 18).fold().count == 4
        assert Sheet(404, 279).fold().count == 6
        assert Sheet(10, 26).fold().count == 3
    
    
    if __name__ == '__main__':
        # run_test_cases()
        with open('input.txt', 'rt') as fi, open('output.txt', 'wt') as fo:
            dimensions = map(float, next(fi).split())
            answer = Sheet(*dimensions).fold().count
            print(answer, file=fo)
    Ответ написан
    9 комментариев
  • Что нужно знать С++ разработчику для начала работы на фрилансе?

    Nipheris
    @Nipheris Куратор тега C++
    "База" в C++ никому за деньги не нужна, ну кроме американских и европейских студентов-лентяев, которые сами не хотят лабы делать. Если вы хотите заниматься C++ профессионально, ещё и фрилансить, вы должны понимать, как получить законченное решение по ТЗ. Это менее тривиально, чем на других платформах. Вот вам несколько вопросов для самопроверки, расскажете что знаете а что нет:
    • у вас есть большой объём текстовых данных (строк), каких простых правил будете придерживаться, чтобы избегать лишнего копирования содержимого строки;
    • я хочу написать некий фоновый сервис, вытягивающий данные из PostgreSQL и пишущий, допустим, в MongoDB, выполняющий некоторые простые преобразования (неважно какие). Пока будет крутиться на линуксе, но возможно и на виндах придётся запустить у другого заказчика. Какие на вскидку библиотеки для работы с БД будем использовать, будут ли сложности? Как их будем подключать к проекту?
    • чем будем собирать проект из предыдущего пункта?
    • что можете предложить для реализации сетевого обмена? Я хочу чтобы было можно в свой протокол поверх TCP, но возможно захочу ещё HTTP потом.
    • как будете выбирать, слинковать библиотеку статически или оставить зависимость от DLL/SO? Как будете собирать готовые пакеты для деплоя?
    Ответ написан
    7 комментариев
  • В чем смысл данного выражения?

    @Alexander1705
    Число в восьмеричной системе счисления: 0177 = 177₈ = 01111111₂
    Ответ написан
    Комментировать
  • Как научиться учить программирование?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    А просто со временем, до всех доходит, что программирование это не интересные исследования, познания неведомого как в фантастике, прикручивание двумя кликами новых движков.
    А на деле - это еще и множество рутинной и кропотливой работы, которая по сути - скучная, однообразная, И ее процентов 80.

    Вы это наконец поняли. Какую мотивацию вы хотите от нудной и кропотливой работы - неясно. Мотивация может быть в зарплате, в создании своего продукта, если он есть. А так - человек должен уметь мотивировать себя сам, а не ждать пока его рассмешат клоуны.
    Ответ написан
    4 комментария
  • Короче, школьник, 9 класс, Хочу быть программистом. Изучаю основы. Но с математикой и физикой ну очень туго. Что делать? Или универ не нужен?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    если ты математику в 9 классе освоить не можешь, то быть программистом это точно не для тебя.
    либо учишься решать задачи (не только по математике) , либо пополняешь ряды менеджеров по продаже какого-нибудь дерьма.
    Ответ написан
    7 комментариев
  • GitHub или wiki?

    MedVedar
    @MedVedar
    e-commerce developer
    Для кусков часто используемого кода лучше подойдет gist.github.com. Для быстрой загрузки есть плагины под попуряные редакторы кода.
    Ответ написан
    4 комментария
  • Как эффективно развивать себя как разработчика?

    aRegius
    @aRegius
    Python Enthusiast
    Вам будет гораздо легче решать большую часть стоящих перед вами задач (а другим гораздо легче вам в этом помогать), как только вы перестанете описывать их общими фразами (типа "максимально эффективно", "полноценный дев", "хорошим специалистом" и т.п.).

    Будьте конкретны:
    - "Моя цель на ближайшие 6 месяцев - вырасти до позиции XXX в текущей компании". И далее:
    - "Что мне нужно сделать для того, чтобы в течение 6 месяцев в моей компании вырасти до XXX ?"

    С этим уже можно обратиться к людям, обладающим достаточной компетенцией в помощи вам с ответом на этот вопрос: "Для того, чтобы в нашей компании стать XXX, нужно знать ЭТО и уметь ТО".

    - "Что мне нужно для того, чтобы узнать ЭТО и научиться делать ТО ?". Cоставляете план действий (разбиваете необходимые шаги на месяцы, недели, дни) с дежурными сроками (для проверки запланированного и достигнутого, внесения в связи с этим необходимых корректировок и т.п.) - и вперед.

    Но все начинается с конкретики:
    - "...хочется максимально эффективно развивать себя...". Что конкретно значит (для вас) "максимально эффективно"? По каким критериям вы будете определять, эффективно вы развиваетесь или нет? Количество прочитанных книг? Сложность решаемых задач? Что конкретно?
    - "...чтобы стать не только полноценным девом...". Что конкретно значит (для вас) "полноценный дев"? Как вы поймете, что стали "полноценным девом"? Вы добьетесь определенной должности? Будете зарабатывать определенную сумму денег? Что конкретно?

    Успехов.
    Ответ написан
    Комментировать
  • Как собрать установочный пакет на Linux для Linux?

    leahch
    @leahch Куратор тега Linux
    3Д специалист. Долго, Дорого, Дерьмово.
    0) Желательно все упаковать в virtuelenv, если используете pip. Или использовать стандартные пакеты системы.
    1) Создаете каталог для своего пакета, например myservice-0.001
    2) Кидаете все свои исходники в этот каталог, пути ставите, как они у вас будут в целевой системе
    Например:
    etc/systemd/system/myservice.service
    opt/myservice/...
    opt/.myservice-venv/...
    usr/bin/myservice

    И т.д.
    3) Создаете там же каталог DEBIAN, в него кладете файл control - https://www.debian.org/doc/debian-policy/ch-contro...
    , и файл postinst (опционально) - https://www.debian.org/doc/debian-policy/ch-mainta...

    В control описываете свои зависимости и название пакета, какие пакеты замещает
    postinst - исполняемый, запускается после установки пакета, пользхователей там создать, сервис запустить и т.д.
    root@xxx:~/xxx-2.40# cat DEBIAN/control
    Package: xxx
    Version: 2.40
    Section: custom
    Priority: optional
    Architecture: all
    Essential: no
    Installed-Size: 171700
    Maintainer: xxx.ru
    Description: XXX DS system
    Depends: samba, isc-dhcp-server, python-twisted, libdate-manip-perl, libio-socket-multicast-perl
    Replaces: isc-dhcp-server, samba
    Recommends: sudo, vim, nano

    и
    root@xxx:~/xxx-2.40# cat DEBIAN/postinst
    #!/bin/sh
    # postinst script for webpy-example
    #
    # see: dh_installdeb(1)
    
    set -e
    
    # summary of how this script can be called:
    #        * <postinst> `configure' <most-recently-configured-version>
    #        * <old-postinst> `abort-upgrade' <new version>
    #        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
    #          <new-version>
    #        * <postinst> `abort-remove'
    #        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
    #          <failed-install-package> <version> `removing'
    #          <conflicting-package> <version>
    # for details, see http://www.debian.org/doc/debian-policy/ or
    # the debian-policy package
    
    # source debconf library
    . /usr/share/debconf/confmodule
    
    case "$1" in
    
      configure)
        adduser --quiet --system --home /inbox  xxx || echo "User xxx existed!"
        usermod -p yyyy xxx
        (echo new123; echo new123) | smbpasswd -as xxx
        smbpasswd -e xxx
        systemctl enable xxx
        systemctl start xxx
      ;;
    
      abort-upgrade|abort-remove|abort-deconfigure)
        exit 0
      ;;
    
      *)
        echo "postinst called with unknown argument \`$1'" >&2
        exit 1
      ;;
    
    esac
    
    # dh_installdeb will replace this with shell code automatically
    # generated by other debhelper scripts.
    
    #DEBHELPER#
    
    db_stop
    exit 0

    4) идете на каталог ниже и выполняете
    dpkg-deb --build myservice-0.001
    Рядом получаете файло myservice-0.001.deb

    Доне.

    PS.Про иконки и прочее отдельно читайте, этого я вам не скажу.
    Ответ написан
    Комментировать