Задать вопрос
  • Что за программа с таким функционалом?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    практически у любого оператора есть возможность выпустить дополнительные сим-карточки с услугой сим-пара, и вставив в разные телефоны, ты можешь звонить с одного и того же номера, пользуясь тем же самым тарифом. Тебе могут позвонить только на главный телефон (одна из симкарточек в симпаре считается активной, остальные пассивные). То есть программно никто не запрещает с одного и того же номера в сотовой сети звонить одновременно.
    Ну а тут видимо просто софт в телефоне или другом устройстве, куда можно подключить сим-карточку, позволяет сделать несколько звонков одновременно. Смысла в этом особого нет - если тариф не безлимитный, все звонки учтутся. Если безлимитный - то да, повышается нагрузка на сеть.
    Ответ написан
    1 комментарий
  • Как идет переход с "классики" на DevOPS?

    Singaporian
    @Singaporian
    Нет никаких годных материалов. Точнее они годные только для опытных DevOps. Потому что это культура подхода, а не инструментарий.
    Переход на DevOps делается в три этапа:
    1) Сначала полностью все автоматизируется. По поводу доставки кода вопросы врядли возникнут - Jenkins и Maven известны даже детям. Ну не обязательно они. У каждого языка свои инструменты. gradle, grunt, waf... Но автоматиризровать надо все, включая деплой SQL (LiquidBase, dbMaintain, sqitch и т.д.). Эта часть освещена очень хорошо в интернетах.
    2) Затем убираются все боттл-нэки в работе админов и программистов. Например внедряется Green/Blue-деплоймент. В точках деплоя собственного ПО средства провиженинга (puppet/ansible/chef) заменяются на средства деплоймента (uDeploy например). Устанавливается мониторинг и логирование. На все это тоже есть свои инструменты (Sensu например).
    3) Начинается работа с людьми - вовлечение программистов в ответственность за результат на стороне Ops и вовлечение сисадминов(operations) в результат на стороне Dev (подгон под FHS и все такое). Ключевой момент в том, что людям придется понять, что их ответственность приходит эхом оттуда, где они своими руками не трогали (для этого даже автоматически создают новые энвайронменты всякими докерами и вагрантами). Закоммитил кривой код в IDE, не учел зависимость в пропертях, поправил конфиги не для всех энвайронментов - будешь отвечать и за статический анализ кода и за проваленные интеграционные тесты и за неудачный деплоймент. В обратную сторону тоже самое. Тогда люди начнут действовать по стандартам и настанет искомый результат.

    Ну и само собой надо найти сильного релиз-инженера. Потому что DevOps - это не "построил и ушел". Кто-то должен все время смотреть за новыми организационными проблемами и чтобы транк не попал на UAT, например, а на SIT ушел тот же тэгированный код, которому на DEV провели smoke-тесты, а не обновленный парой вредных коммитов, набежавших за время смоука.

    Сначала скажите, как звучит конечная задача и что из этого уже есть и чего нет. Может чего детальнее посоветую.
    Ответ написан
    6 комментариев
  • Что нужно знать чтобы стать начинающим системным инженером (devops)?

    Singaporian
    @Singaporian
    Статья, которую должен прочитать каждый.

    DevOps - не профессия. Это название культуры доставки кода от разработчика (dev) через тестировщиков и до сисадмина(ops) и обратная связь по этой цепочке.

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

    Профессии, которые отрисуются в процессе построения этой методологии следующие:
    • Build Engineer - инженер, который управляет зависимостями, сборками, конфликтами кода.
    • Release Engineer - инженер, который управляет репозиторием кода (кто куда и по каким правилам мерджится и откуда бренчуется). Пожалуй, это самая сложная задача в больших проектах. Особенно с нестрогим Agile или в Waterfall.
    • Automation Engineer - инженер, который занимается автоматизацией рутинных задач. Обычно деплоймент, автотесты, etc. Все эти buzz-слова типа Docker - его инструментарий.
    • Site Reliability Engineer - инженер, который поддерживает ops (апгрейды, расширение железа)
    • Configuration Manager - непонятная мне специальность. Жуткое порождение HR-специалистов, давящих на громкое название позиции. Можно было бы пойти дальше и назвать специальность ZooKeeper Vice President

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

    Почти всегда все эти роли совмещают один-два человека. Ну это зависит от качества кода.
    Назовем эту компанию BRAE/CM для краткости.
    Задача BRAE/CM состоит в том, чтобы программный код, который выходит из под пера программистов, оставался на контроле программистов и сисадминов одновременно. Программисты, равно как и сисадмины, благодаря DevOps-подходу, имеют возможность и даже обязаны обслуживать код на протяжении всего жизненного цикла от планирования архитектуры до мусорки.
    То есть сисадмины начинают рулить еще до того, как код попадет к ним - на ранних стадиях, а программисты продолжают рулить своими задачами уже после того, как код от них ушел к сисадминам - на поздних стадиях. И все это прозрачно друг для друга и все проблемы и решения ходят туда сюда и не спотыкаются о бюрократия в стиле "ничего не знаю, мы код уже закоммитили, у меня тут свои проблемы, у них сломалось - пусть сами и чинят".

    Так вот эта работа - завершающая стадия системного администратора и начинающая стадия разработчика. Поэтому не бывает Junior BRAE/CM.
    BRAE/CM бывает всегда только Senior в системном администрировании и всегда Junior в программировании.

    Еще один момент. В домашних условиях можно выучить инструменты на базовом уровне. Но не поварившись в одной кастрюле с реальными разработчиками, смысл всей этой кухни не понять. Так что сразу забейте. Но если хотите, могу описать пошаговый длинный путь как стать RE/CM:

    Сразу оговорюсь по языкам.
    У каждого языка свое предназначение. Java чаще используется в корпоративном секторе. Там много серверов и сложные бизнес-приложения. Поэтому Java-мир очень чувствителен к таким понятиям, как "технинческий долг" и "управление процессом разработки". И именно поэтому именно там все основные вакансии DevOps и именно там будет самый интересный опыт.
    Кроме Java, традиционно сильная DevOps-культура у Ruby. Практически все остальные языки не имеют столь развитой и популярной инфраструктуры в в данном контексте и потому вам скорее всего будут неинтересны.
    Другими словами, если в среде разработчиков выбор языка - тема для холивара и эмоций с миллионами сравнительных анализов с противоположными результатами, то для специалистов по DevOps выбор очевиден и прозрачен. Java - это одновременно самые интересные задачи, самый богатый toolset, самый большой выбор вакансий и самые высокие зарплаты.

    Каждый последующий пункт, кроме особо длинного первого, будет выливаться в неделю-две достаточно плотного труда. Если не прокрастенировать и уделять этому по несколько часов вечером.

    Итак, что делать:
    1) Почитать книги Head First по Java. Пройти курсы Java на EDX.
    2) Освоить SVN. Есть прекрасные тьюториалы. (GIT освоим позже)
    3) Поставить VirtualBox (не VMWare!!!)
    4) Написать простенькое приложение. Код коммитить в SVN. Собирать его при помощи maven.
    5) Поднять на отдельной виртуалке Jenkins. Он должен брать код приложения на SVN и запускать свой локальный maven для сборки.
    6) Написать модульные тесты (unit tests) своего кода. Пусть maven и их прогоняет.
    7) Поднять где-нибудь Nexus. Усложнить задачу maven, чтобы он теперь складывал все в Nexus. Если maven'у потребуются внешние библиотеки, он тоже не сам должен ходить в интернет, а через Nexus (Central repo).
    8) Настроить на своем десктопе vagrant так, чтобы он с нуля создавал виртуалки VirtualBox.
    9) Создать виртуалку DEV через vagrant. При этом ansible должен на ней что-нибудь настроить (например установить JDK)
    10) Научиться деплоить jar/war из Nexus на виртуалку DEV чем-нибудь. Чем - не посоветую, так как сам работаю с очень сложным IBM uDeploy, а это точно не для новичка. Посмотрите в сторону Rundeck или чего-то такого. Может самим Jenkins'ом задеплойте.
    11) Напишите интеграционные АВТОтесты. На чем хотите (как вариант: Selenium).

    Усложняем систему.
    12) Донастраиваем Jenkins: собирает maven-проект; выкладывает на Nexus; дергает vagrant/ansible для создания виртуалки SIT (system integration test); деплоит приложение на SIT; прогоняет автотесты на SIT; удаляет виртуалку после успешного завершения автотестов.
    13) Прикручиваем SonarQube в Jenkins для статического анализа кода. Исправляем косяки своего кода, согласно полученным от SQ рекомендациям.
    14) Прикручиваем мониторинг Sensu.
    15) Пишем нагрузочные тесты на чем-нибудь. В идеале потрогать два инструмента: jMeter и Gatling.
    16) Как и в 12-м шаге прикручиваем в Jenkins автоматизацию создания виртуалки SLT (Stress/Load test) и прогона на ней тестов. Только уже лоад-тестов(обязательно) и стресс-тестов(опционально) соответственно.
    17) Дописываем в свое приложение какой-нибудь функционал, чтобы использовалась база.
    18) Придется познакомиться с LiquiBase. Деплой SQL руками делать запрещено.
    19) Перейти на Docker (то есть теперь приложение выкладывать не напрямую в ОС, а внутрь докера)

    20) Денек на то, чтобы почитать про Agile, Scrum, Waterfall и прочие организационные порядки.

    А теперь немного уходим в управление проектом:
    21) Поставить Atlassian Jira. Разобраться, чем отличаются Epic, Story, Task, Sub-Task. Создать себе подобной этой структуре фронт работ (делать его не придется, просто нафантазируйте).
    22) Поставить Atlassian Stash и связать его с Jira.
    23) Переехать со своего SVN на GIT, предоставленный Stash'ем.
    24) Пройти Git-тьюториал какой-нибудь. Инструмент очень нетривиальный.
    25) Взять любую таску в работу. При этом в начале работы сделать новый Git branch из тикета Jira.
    26) По завершению работы запустить всю построенную ранее цепочку, но уже для своего брэнча.
    Дайте попробую угадать: вам пришлось скопировать все джобы и переписывать в них ветки?
    27) Сделать джобы нормально. Чтобы одни и те же можно было использовать для любых веток - по аналогии с принципом программирования "reuse code". У Вас будет reuse job :)
    28) Сделать pull request, самому сделать code review и самому себя же за-approve'ить. После этого сделать merge своей ветки в master.
    29) Сделать сборку брэнча автоматической по git-hook (или SCM pool)

    30) А теперь высший пилотаж: к чертям Docker, Copistrano и прочую buzz-word-hipsters-галиматью. Теперь вы с этим знакомы и сможете применить, но пришло время выгрызать этот детский сад калёным железом. Теперь вы доставляете код только как .deb-пакеты. Это значит, что вы:
    a) разбиваете control-файл на несколько пакетов, возможно с lib*,
    b) оверрайдите все ~20 dh_ в файле rules так, чтобы все это соответствовало вашим наработкам в предыдущих пунктах.
    c) раскидываете файлы по .install
    d) самое тяжелое: готовите .preinst, .postinst, .prerm, .postrm файлы СОГЛАСНО ИХ ПРИМЕРАМ .ex, сгенерированным dh_make - то есть с разбиемнием на update/configure/broken-install и что там еще есть. Это означает, что при переустановке, при апгрейде, при даунгрейде, при удалении и при пурдже, у вас будут разные сценарии, каждый из которых должен быть проработан досканально. На этом этапе вы также познакомитесь с понятием "регрессионные тесты".

    Ну как бы базовый вариант вот. Но это далеко не весь инструментарий и путь. Это так, для начала.
    Кроме этого неплохо бы познакомиться с Puppet (это не очень подходит для DevOps, скорее для рядовых админов с кучей серверов, но это очень популярный инструмент ввиду того, что никто не понимает, что такое DevOps и вас скорее всего заставят управлять сотней серверов, вместо релиз инжиниринга). А так же нужно познакомиться с операционными системами NixOS (обязательно) и CentOS/Debian (опционально, но я бы палкой бил тех, кто не знает эти OS). Кроме того, надо базово ориентирваться в PostgreSQL.

    Внимание, важный момент, который должен быть вшит на уровень подсознания у DevOps-ориентированного инженера: вы все время пробуете новые инструменты. Вы всегда будете находить что-то очень отличное. Знаете Nexus как свои пять пальцев и он решает почти все проблемы? Отлично! Теперь выкидываете Nexus и ставите Artifactory. Знаете хорошо CentOS? Круто! Теперь пробуете все это проделать на Windows или Debian. Потому что только когда вы сможете сравнивать инструменты, ваша работа будет ювелирной. А DevOps бывает либо ювелирным, либо он не DevOps. Вы должны быть языко-независимым, платформо-независимым и инструменто-независимым.

    Что будет дальше? Дальше вы начнете работать с микросервисами (сотни одинаковых контейнеров в облаке, которые должны как-то работать друг с другом без ручной конфигурации). Тогда познакомитесь со всякими Consul, ZooKepper и кучей инструментов AWS/OpenStack.
    Ответ написан
    13 комментариев
  • Как правильно использовать Docker для веб разработки?

    zvd
    @zvd
    Software developer interesting in DevOps
    Добрый день.
    Все, как вы их назвали, «задачи» должны быть по разным контейнерам.

    1. Что брать за базовый образ?
    Что используете то и берите. Используете в работе Debian? Берите Debian ( https://registry.hub.docker.com/_/debian/ )
    2. Чтобы создать свой базовый образ который будете в дальнейшем использовать для приложения, вот вам пример Dockerfile:
    #
    # MyBaseimage Dockerfile
    #
    
    # Pull base image.
    FROM ubuntu:14.04
    
    MAINTAINER Your Name <your.email@gmail.maybe>
    
    RUN apt-get update
    RUN apt-get upgrade -y
    
    RUN apt-get install -y language-pack-en
    ENV LANGUAGE en_US.UTF-8
    ENV LANG en_US.UTF-8
    ENV LC_ALL en_US.UTF-8
    
    RUN locale-gen en_US.UTF-8
    RUN dpkg-reconfigure locales
    
    RUN echo "Etc/UTC" > /etc/timezone
    RUN dpkg-reconfigure -f noninteractive tzdata
    
    RUN apt-get install -y build-essential
    RUN apt-get install -y python python-dev python-setuptools python-pip python-virtualenv
    RUN apt-get install -y libxml2-dev wget
    RUN apt-get install -y libpcre3
    RUN apt-get install -y libpcre3-dev
    RUN apt-get install -y libssl-dev
    RUN apt-get install -y libncurses5-dev
    RUN apt-get install -y git git-core
    RUN apt-get install -y libpq-dev
    
    # install nginx
    RUN apt-get install -y software-properties-common python-software-properties
    RUN apt-get update

    Собрать image в директории где у вас лежит Dockerfile
    docker build -t your_docker_account/your_baseimage .

    3. Dockerfile для сборки вашего образа уже с приложением
    #
    # MyApp Dockerfile
    #
    
    # Pull base image.
    FROM your_docker_account/your_baseimage
    
    MAINTAINER Your Name <your.email@gmail.maybe>
    
    # Set instructions on build.
    RUN virtualenv /env
    ADD ./ /code
    
    RUN cd /code; /env/bin/python setup.py install
    RUN cp /code/config/config.yml.docker_example /etc/code/config.yml
    
    # Expose ports.
    EXPOSE 8484
    WORKDIR /code
    CMD ["/env/bin/python", "app.py"]

    4. Собрать образ с приложением
    docker build -t your_docker_account/your_app_container .

    5. Запустить контейнер с БД, в качестве примера PostgreSQL
    docker run -p :5432:5432 --name my_postgresdb_container -e POSTGRESQL_DB=mydb_name -e POSTGRESQL_USER=mydb_user -e POSTGRESQL_PASS=super_secret_password -d kamui/postgresql

    для mariadb аналонично, контейнеры ищем здесь: https://registry.hub.docker.com/
    6. Запустить контейнер с вашим приложением, пример:
    docker run -d -p :5000:5000 \
      --name my_app_container \
      --link my_postgresdb_container:postgresdb \
      -e DOCKERDB_ENV_POSTGRESQL_DB=mydb_name \
      -e DOCKERDB_ENV_POSTGRESQL_USER=mydb_user \
      -e DOCKERDB_ENV_POSTGRESQL_PASS=super_secret_password \
      your_docker_account/your_app_container

    7. Подключиться к запущенному контейнеру с приложением
    docker exec -it your_app_container /bin/bash
    8. Читать stdout запущенного приложения в контейнере
    docker logs -f your_app_container

    + Чтобы автоматизировать запуск всех необходимых контейнеров берите Docker Compose ( https://docs.docker.com/compose/ )
    Пример файла конфигурации:
    your_app:
      build: .
      links:
        - postgresdb
      ports:
        - "5000:5000"
      environment:
        DOCKERDB_ENV_POSTGRESQL_DB: mydb_name
        DOCKERDB_ENV_POSTGRESQL_USER: mydb_user
        DOCKERDB_ENV_POSTGRESQL_PASS: super_secret_password
    postgresdb:
      image: kamui/postgresql
      ports:
        - "5432:5432"
      environment:
        POSTGRESQL_DB: mydb_name
        POSTGRESQL_USER: mydb_user
        POSTGRESQL_PASS: super_secret_password

    И теперь вместо пунктов 5 + 6 где мы запускали контейнеры мы можем всё стартануть одной командой
    docker-compose up

    + можно смонтировать код в контейнер и разрабатывать непосредственно в docker'контейнере.
    Надеюсь чем-то вам помог.
    Ответ написан
    3 комментария
  • GIT, как правильно работать с тестовыми ветками (исключаем слияние измененных конфигов)?

    LIAL
    @LIAL
    Я бы в .gitignore записал, тк если рабоате несколько человек над проектом, у каждого можеть быть свой конфиг со своими настройками.

    Или же если всего два конфига типа дев и продакшн - сделайте чтобы динамически нужный подключался в зависимости от окружения, тогда не придется ни откатывать ни писать в .gitignore

    PS: не забудьте что хранить данные подключения к БД и прочую секурную информацию в файлах, которые идут потом в репо - очень не рекомендуется
    Ответ написан
    Комментировать
  • Когда будет включен webdav на Cloud@Mail.Ru?

    @komarik
    Я так понял, что ничего уже не будет?
    Ответ написан
    2 комментария
  • Недорогое видеонаблюдение для дома: выбор платформы и реализации?

    @Aniger86
    Из ip-камер могу посоветовать ZenithG7W. Она хорошо подходит для создания беспроводной системы видеонаблюдения, обладает высоким качеством изображения. Имеет ночной режим съемки. Работает в любых погодных условиях. Также у нее есть встроенный датчик движения, есть возможность отправки фото на ftp или e-mail. Можно управлять даже с мобильных устройств. Подробнее тут
    Ответ написан
    Комментировать
  • Программа для заметок под Linux с доступом по паролю?

    butteff
    @butteff
    Раз в тысячу лет заправляю свитер в носки
    evernote в веб интерфейсе?
    Есть еще клон под линукс - nevernote
    Ответ написан
    1 комментарий
  • Где найти статью на хабре о фрилансе?

    opium
    @opium
    Просто люблю качественно работать
    Ещё можно у меня в блоге статьи о фрилансе почитать
    pumainthailand.com/category/rabota-2
    Ответ написан
    Комментировать
  • Где найти статью на хабре о фрилансе?

    newross
    @newross
    Product owner
    Насколько я помню, об этом писал @opium. Почитайте его блог.
    Ответ написан
    Комментировать
  • Какие существуют русскоязычные онлайн университеты?

    @HallEffect
    Посмотрите hexlet.org. Сайт развивается, в ближайшее время обещали новые курсы.
    Ответ написан
    2 комментария
  • Есть сервис для того, чтобы научиться бегло понимать английскую речь?

    afiskon
    @afiskon
    Про сервисы не скажу. Смотрите сериалы в оригинале или доклады на английском. Поначалу можно с сабами, потом сабы отключить. Я так учился.
    Ответ написан
    5 комментариев
  • Nginx no resolver defined to resolve domain.com - в чем ошибка?

    @inkvizitor68sl
    Linux-сисадмин с 8 летним стажем.
    Либо пропишите
    resolver 8.8.8.8;

    Либо (если не доверяете гуглу):
    apt-get install bind9Потом в конфиге:
    resolver 127.0.0.1;
    Ну а самое правильное - прописать ip адрес вместо domain.com и передавать заголовок Host на бэкэнд:
    proxy_set_header Host $host;
    Ответ написан
    6 комментариев
  • Как добавить Jboss AS 7 как зависимость в Gradle?

    Losted
    @Losted
    Software Architect
    Добавьте в providedCompile или providedRuntime те библиотеки из JBoss, которые у вас используются. При сборке war/ear gradle их не будет включать в архив.
    Ответ написан
    4 комментария
  • Какое окружении рабочего стола в Lunux лучше всего подходит для работы с высоким разрешением?

    Если вы псих - то точно Awesome.
    Если вы нормальный человек - то KDE, там и масштаб есть, и тайл и вообще много ништяков, побольше даже чем в ваших виндовсах.
    Ответ написан
    1 комментарий
  • Существует ли дистрибутивы Linux, в которых поддержка HiDPI экранов работает из коробки?

    fsqcds
    @fsqcds
    Юзайте KDE. У меня тоже zenbook, с кедми пока лучше всего выходит.
    Инструкция по насройке: https://community.kde.org/KDE/High-dpi_issues#How_...
    В gnome нужно в dconf-editor менять org.gnome.desktop.interface.scaling-factor на 2 для включения hidpi режима. Но мне не понравилось, все стало слишком большим. Вот баг https://bugzilla.gnome.org/show_bug.cgi?id=720502
    Ответ написан
    1 комментарий
  • Какой стек технологий в программировании быстрее всего освоить с нуля?

    Как насчет JavaScript?
    Если интересно – посмотрите мою лекцию про полный цикл разработки веб-приложений на JS (и клиент, и сервер) habrahabr.ru/post/199472/
    Ответ написан
    4 комментария
  • Почему после обновления до KitKat Nexus 4 перестал запускаться?

    Crazybot
    @Crazybot
    Когда прошивал бутлоадер на SXSL, было отдельно выделено, чтобы ни в коем случае не применяли ОТА обновление, иначе возможен брик. Вот здесь описано, как починить в случае такой неприятности. Возможно и для Nexus'а сработает
    Ответ написан
    1 комментарий
  • Какой выбрать ноутбук "для родителей"?

    webvany
    @webvany
    Дизайнер
    Выбор Win ноутбуков 15-17 дюймов настолько широкий, что советовать какой-то определённый очень сложно. Их на вкус и цвет в каждом магазине достаточно. То есть это как советовать микроволновку, в твоё магазине нужной модели может не быть, но ты в любом случае найдёт идентичный аналог в каждом магазине. Нужно просто прийти в магазин компьютерной техники и там посмотреть - что понравится. Даже если кто-то скажет, что HP XXX Timeline U 777 отличный ноутбук, в магазине вашего города он будет с небольшой вероятностью, но точно такой же ноутбук от другой компании будет в этом магазине точно. Мы же говорим не о дорогом ноутбуке для профессионалов, мы говорим об обычном ноутбуке, которыми заполнены магазины. Вот у меня за 33 тыс. руб. 13' ноутбук, я на нём работаю, раньше даже играл, могу фильмы смотреть, но я говорю не про то, какой он мощный, а про то, что зачем родителям 15-17 дюймов, это же не ваш мак, который вы используете для работы. Если уж мне хватает 13-ти дюймов для работы, не думаю, что ваши родители более требовательны к размеру экрана. Поэтому не старайтесь выбрать именно 15+ экраны. Разрешение у меня кстати 1366x768, чего для интернета, фильмов (а у меня и для работы) хватает. Но решать вам. Удачи.
    P.S. И если вы берёте ноутбук с надеждой на то, что они будут пользоваться тач-скрином, то цена играет огромную роль. В дешевых некачественных ноутбуках такие ужасные тач-скрины бывают, если попробовать пользоваться ноутбуком с одинаковыми характеристиками за 20-30 тыс. и 10-15 разница заметна при первом касании.
    Насчёт windows хотел добавить. У меня друг, своей сестре, которая только играет в 1-2 игры, а в остальное время сидит в интернете или смотрит мультфильмы установил вместо win, как и у себя на компе Linux систему, а если быть точнее Ubuntu последнюю. Могу сказать только то, что она до сих пор с радостью пользуется системой и удивляется, что на linux не нужен хакнутый антивирусник, постоянные чистки компьютера, чтобы он не лагал после нескольких месяцев работы и прочего. То есть, если ваши родители только сидят в интернете, идеальный вариант не портить им нервы, это поставить Ubuntu. Если нужны Word документы, то в ubuntu есть все средства для этого и идентичные бесплатные ПО, которые даже позволяют сохранять файлы в формате, будто бы их создали на Windows. В магазинах можно найти ноутбуки без предустановленой ОС windows, это позволит сэкономить немного денег и переплатить их лучше за ноутбук, а не за ОС. Ещё раз удачи.
    Ответ написан
    Комментировать