По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
О переходе в IT профессию не думал разве только тот, кто в IT сфере уже работает. Высокие зарплаты, постоянная удаленка, куча плюшек и битвы HR-ов за самый оригинальный подкат к айтишнику на LinkedIn. Насмотревшись на фотографии и рассказы друзей айтишников, все это заставляет многих подумать: а не пора ли сменить профессию? Если задумались - значит пора. А мы, в свою очередь, поможем разобраться, какие бывают айтишники и как вам войти в айти. Говоря про айтишников, многие представляют себе программистов, их еще называют девелоперы (от английского developer) или разработчики. Но поверьте, айти не заканчивается на них, а скорее только начинается. Разновидностей программистов - как товаров на Amazon: frontend, backend, full-stack, веб-программисты, мобильные и десктоп разработчики, DevOps программисты и прочие. Особенно важно разобраться с тремя первыми - фронт, бэк, и фуллстэк. Понять разницу между фронтэнд и бэкэнд девелопером - ну очень просто. Фронтенд пишет все, что происходит в видимой зоне, а бэкенд - за видимой зоной. Сейчас разберемся на конкретных примерах: Netflix: красивую картинку с палитрой интересных киношек, кнопки, слайдеры и все, что вы видите в видимой зоне - сделали фронты. Алгоритмы рекомендаций, авторизацию, списание денег с вашей карты, то есть биллинг, и другие компоненты на фоне - сделали бэкенд девелоперы. Когда в следующий раз будете реветь от рекомендаций мелодрамы, которая ранила вас прямо в сердечко - это бэки постарались. Amazon: карточки товаров, категории, навигация, отзывы и прочая визуальщина - фронты. Передача на на фронт актуальных цен товаров, калькуляция условий доставки в ваш регион мешка с леденцами со вкусом корицы, механизм умного поиска - бэки. А еще есть фуллстэк программисты - это те, кто умеют и бэк и фронт. В среднем, чтобы стать фронтом, надо поучить HTML, CSS, JavaScript - это база, с которой уже можно верстать сайты. Но технологии не стоят на месте и сейчас зачастую обычного знания JavaScript бывает недостаточно, поскольку во многих местах используются различные фреймворки расширяющие функционал языка, такие как React, Angular или Vue. Ну а поскольку разработчик всегда работает с командой, то нужно знать как работать с системами управления версиями, зачастую это Git и уметь работать с API, чтобы найти общий язык с бэкэнд. Бэкенд девелоперу, очевидно, нужно знать один из языков программирования для бэка. Какой? Вам нужно определиться самому. Посмотрите вакансии, которые вас интересуют и поймите, что нужно в компании вашей мечты. Самые известные и популярные языки это Java, Python, PHP, С, С#, С++, Ruby и Go. Их очень много, но не стоит отчаиваться глядя на их количество - изучив один язык и поняв принципы программирования, вы сможете легко перейти на другой язык. Еще можно выделить мобильных разработчиков, которые делают приложения для iOS и Android - им нужно подучить Objective-C и Swift для iOS и Kotlin или Java для андроида. Поскольку разработчики пишут код не в вакууме, а взаимодействуют с различными системами, то вам нужно знать про SQL и принципы работы с базами данных. И очень важно уметь работать с NoSQL - нереляционными базами. Если хочешь заниматься только базами то для этого даже есть отдельная профессия - администратор баз данных (DBA). Если вы будете заниматься веб разработкой, то нужно знать про принципы работы HTTP и про модель OSI, про веб сервера, как минимум Apache и Nginx, как работают API, аутентификация, основы безопасности. Уф, ну кажется этого должно хватить для начала. Идем дальше - тестировщики, а они же QA (Quality Assurance). Тестирование бывает ручное, а бывает автоматическое. Автоматизаторы, безусловно, ближе к программистам - им нужно разрабатывать алгоритмы, знать процессы разработки ПО и его тестирования. В ручном тестировании - все немного попроще. Зачастую тестирование становится отправной точкой для карьеры будущего айтишника. Входной билет сюда чуть ниже, войти проще. Нужно знать классификацию тестирования, методы и инструменты, уметь создавать сценарии тестирования. Нужно базово понимать протокол HTTP и модель OSI, немного HTML и CSS. Хорошо бы уметь работать с командной строкой, знать SQL, принципы API чтобы гонять запросы в каком-нибудь клиенте типа Postman, знать инструменты автоматического тестирования, такие как Selenium или Sahi. Уф, кажется, основные профессии, связанные напрямую с разработкой софта мы проговорили. Теперь, друг, давай разберемся с не менее крутой частью IT, где ощущается острейший дефицит кадров - это инфраструктурные айтишники. Итак, сетевые инженеры - без них не “взлетит” ни одно приложение, сервис, сайт, платформа, да что угодно! Сетевики настраивают маршрутизацию трафика, управляют сетью и гарантируют взаимодействие айти - инфраструктуры с внешними сетями. Открывая Tinder, каждый свайп вправо генерирует запрос к серверам, который прилетает в дата - центр тиндера и маршрутизируется на нужный сервер - это как раз сетевик постарался. Сетевик должен знать основы сетевых технологий - классической школой в этом плане являются технологии Cisco (а также Huawei, Juniper и Mikrotik), надо знать технологии виртуализации, уметь работать с операционными системами Linux и Windows Server, иметь представления о кибербезопасности и уметь читать и базово говорить по английски. И конечно безопасники - про их востребованность сейчас, вы наверняка догадываетесь. Среди них выделяют: Инженеров - эти ребята делают безопасной сеть, настраивают фаерволы, антивирусы, анти-DDoS, прокси и прочие средства защиты Аналитиков - которые выявляют инциденты, мониторят и находят вредоносную активность, расследуют взломы, утечки и другие неприятные моменты Пентестеров - это HackerMan’ы по найму. Ага, эти ребята занимаются легитимным взломом, чтобы потом вы могли закрыть все дырки обнаруженные ими и не стать жертвой настоящих хакеров Консультантов - знают все законы и требования в ИБ, помогут в получении нужных бумаг, чтобы не попасть на штрафники от всяких регуляторов Appsec, Cloudsec - занимаются безопасностью приложений и облачной инфраструктуры В компаниях постоянно идут эпические битвы между айтишниками и ИБшниками, потому что последние, довольно параноидальные ребята. Они стараются максимально обезопасить инфраструктуру и её активы, вводя для этого различные правила. Например - хочешь подключиться к корпоративному VPN? Сначала пройди двухфакторную аутентификацию! Долго? Зато безопасно. Для безопасника будет полезно понимать основы сетевой безопасности, а также операционных систем, знать что такое триада CIA и принцип Defense in Depth, ну и конечно же - знать какие существуют методы атак, вредоносного ПО и прочих ИБ угроз. Так же есть более узкопрофильные направления - Linux или Windows администратор, специалист по IP - телефонии, администратор баз данных, SRE инженер и многие другие! Ну и конечно можно наоборот выделить широкопрофильного системного администратора - специалиста, который настраивает и поддерживает ИТ инфраструктуру компании и должен знать много вещей из разных областей. Так, кажется большинство популярных технических направлений мы проговорили. Теперь давайте прыгнем к менеджерам, тем, кто управляет ИТ проектами и продуктами с точки зрения бизнеса. Вообще, скажем так, быть техно - коммерческим специалистом в айти отрасли ну крайне выгодно: комбинируя хороший технический бэкграунд, знание бизнес специфики, добавив высокие коммуникативные навыки и надев белую рубашку вы автоматически получаете высочайшую зарплату, корпоративную тачку и прочие радости. Ладно, шутка, давайте разбираться. Продакт менеджеры (они же продакты) - эти ребята отвечают за коммерческий успех продукта и реализацию бизнес требований. Продакт знает такие фреймворки как Scrum и Agile, должен знать цикл разработки программного обеспечения, отвечать за список задач на разработку, который также называют “бэклог” и обязательно уметь говорить на одном языке с разработчиками, топ-менеджментом, продавцами, маркетингом и другими подразделениями компании. Пожалуй, продакт должен знать такие инструменты как JIRA, Trello, Miro, Slack и Wrike, и уметь анализировать метрики успеха продукта. Если хотите двигаться в это направление, рекомендуем получить интересующие вас технические навыки, а потом двигать в бизнес плоскость - почитать Lean Startup, “Спросите маму” Роберта Фитцпатрика и про Scrum у Джеффа Сазерленда. Эти книги помогут вам базово сориентироваться в пространстве и получить базовое представление. Проектные менеджеры, они же delivery менеджеры - они отвечают за реализацию проекта - контроль сроков, доставку функций продукта в продакшн, то есть в реальную среду работы продукта, отвечают за организацию человеческих ресурсов и планирование, в том числе релизов. Из хард скиллов вам надо знать что такое "Диаграмма Ганта", изучите свод знаний по управлению проектами PMBOK, который разработан американским Институтом управления проектами (PMI), знать гибкие методологии и уметь работать с теми же инструментами, что и продакту (JIRA, Trello, Miro, Slack и Wrike). А еще есть UX - дизайнеры, продуктовые дизайнеры, аналитики, но они имеют менее технический уклон, чем продакты и проджекты. Познать востреброванные айти профессии, получая знания в легкой и дружелюбной форме можно с помощью нашей платформы доступного айти образования Merion Academy: ознакомиться со списком курсов и пройти бесплатные вводные уроки можно по этой ссылке.
img
Каждое семейство операционных систем производит загрузку по-своему. Это связанно с различной архитектурой ядра операционной системы, разными инструкциями по работе с подключенными устройствами. В данной статье попробую разобрать загрузку популярной операционной системы на ядре Linux Ubuntu. Схематично процесс загрузки можно отобразить следующим образом. Загружаемся Итак, Нажимаем кнопку включения компьютера, и центральный процессор переходит на адрес BIOS. BIOS или UEFI, в более современных компьютерах, проводит систему проверок и выбирает носитель информации с которого будет производится загрузка операционной системы. На носителе находится MBR (Master Boot Record) или GPT (Guid Partition table) на новых компьютерах в которых находится загрузчик. А дальше уже в зависимости от настройки. Загрузчик может самостоятельно загружать операционную систему, а может передавать управление следующему загрузчику. Например, если Windows и Linux установлены на одном компьютере и находятся на разных разделах жесткого диска. В любом случае, если идет речь о Linux у нас есть первая стадия с небольшой частью кода, которая загружает у нас загрузчик. Загрузчик знает где лежит ядро операционной системы, загружает ядро, загружает initial run disk, там находятся необходимые файлы и модули для загрузки ядра. Далее уже ядро берет процесс управления на себя. Происходит инициализация устройств, конфигурирование процессов памяти и так далее. После всех этих процессов ядро запускает процесс init. Вернемся к вопросу загрузчиков, для каждой операционной системы разработан свой загрузчик, а иногда и несколько. NTLDR - Загрузчик операционной системы Windows, LILO - один из стандартных загрузчиков для Linux и BSD системы. GRUB - загрузчик операционной системы от проекта GNU. Нас интересуют последние два. Данные загрузчики работают в два этапа. На первом этапе у них крошечный код на MBR или GPT, который запускает исполнение кода второго этапа. Перейдем непосредственно к самой загрузке. Данное меню мы можем получить при загрузке если зажать клавишу Shift. Как видно на картинке в данном примере загрузчик GRUB версии 2.04. У нас есть несколько вариантов. Загрузка Ubuntu по умолчанию и вариант загрузки с расширенными опциями. В нашем случае расширенные опции не дают многого, а всего лишь позволяют начать загрузку в режиме восстановления recovery mode. Данная опция не является целью стати, и мы ее опустим. Вернемся к первому пункту загрузки. Выбираем, нажимаем "e" получаем следующую картину загрузки. На данной картинке можно увидеть, что корневой раздел монтируется по uuid, он будет корневым root и непосредственно сам id. ID раздела можно посмотреть после загрузки операционной системы командой blkid. Можно часть параметров отредактировать или большинство. Более подробно можно поискать в интернете. По нажатию F10 осуществляется продолжение загрузки операционной системы. После загрузки операционной системы, мы можем с помощью команды dmesg посмотреть, сообщения ядра, все что происходило с ядром. Нужно различать сообщения ядра и лог ядра. Который можно посмотреть cat /var/log/dmesg. Данный файл содержи информацию только о загрузке операционной системы. В данном файле содержится информация с самого начала загрузки операционной системы и до конца. Если событие происходит позднее, то в данном файле этой информации вы не найдете. Система инициализации ОС Есть такое понятие Init - это первый или родительский процесс, который запускает все последующие процессы. Это может быть проверка и монтирование файловых систем запуск служб и.т.д. Существует 3 варианта работы этого родительского процесса. Init в стиле SysV - родительский процесс инициализации системы на одном из заданных уровней запуска (runlevel); Т.е. есть несколько уровней загрузки (runlevel) обычно их 7 штук. Один из них - это обычный многопользовательский режим. Другие это выключение компьютера, перезагрузка, режим восстановления и т.д. Init в стиле systemd - родительский процесс инициализации системы в ускоренном режиме, за счёт параллельного запуска задач; Ускоренный режим достигается за счет использования процессора в частности Intel, который позволяет запускать процессы инициализации параллельно. К этому режиму есть еще куча софта библиотек, которые расширяют функционал. Init в стиле Upstart - родительский процесс инициализации системы на основе отслеживания событий; Данный режим используется на Ubuntu уже давным - давно, тут не только запускаются скрипты инициализации, но и запускаются скрипты отслеживания событий и реагирования на них. Т.е. это более гибкий процесс инициализации, например, если какая-то служба не запустилась или упала в процессе загрузки то, upstart умеет это отследить и запустить это повторно В операционной систему Ubuntu можно посмотреть дерево процессов использую команду pstree. В результате ее вывода мы можем увидеть, что родительским процессом являлся процесс systemd. Который запускал уже свои, какие-то дочерние процессы. Перейдем в корневую директорию boot. Здесь мы можем увидеть директорию загрузчика grub. Ядра линуксовые vmlinuz (ссылка на ядро) и до обновления старое ядро vmlinux.old (ссылка на старое ядро). Соответственно пара initrd* - файлы диска, эти файлы содержат диск, который грузится в оперативную память, данный диск содержит файлы необходимые самому ядру Linux для нормальной загрузки. Перейдя в директорию grub, мы можем найти конфигурационный файл grub.cfg и несколько вспомогательных, но не менее важных фалов. Соответственно мы можем внести изменения в данный файл на постоянной основе и соответственно данный код будет выполнятся при каждой загрузке операционной системы.
img
Операционные системы Unix традиционно используют такие понятия, как стандартный ввод, вывод и вывод ошибки. Чаще всего ввод — это клавиатура, а вывод это на кран. Но конечно же мы можем выводить исполнение какой-то команды в файл и передавать другой команде, потому что работая в Linux, создается такая последовательность из команд, т.е результат предыдущей мы отправляем следующей и т.д Целью данной статьи является рассмотреть: Перенаправление стандартных ввода, вывода и ошибок; Передача вывода одной команды в качестве аргументов другой; Получение выходных данных в файл и на стандартный вывод; Основные понятия: Stdin (0) – ввод Stdout(1) – вывод Stderr (2) – вывод ошибки > - передать в >> - дописать в list.txt. По сути означает выполнить команду, а результат передать в файл. Фал можно посмотреть командой cat list.txt. И мы можем убедится, что в данном файле находится перечень, всего что находилось в данной папке. Если мы выполним еще раз команду ls > list.txt, то данный файл каждый раз будет перезаписываться. Если же мы хотим, чтобы наш файл не перезаписывался, а дописывался, используем другую стрелочку ls >> list.txt. И теперь вы можете видеть, что файл стал больше. Т.е. у нас записалось, то что было, а затем еще раз добавилось. Если опять выполнить команду со стрелочками >> , то опять допишется информация в файл. Вот таким образом работают “стрелочки”. Стандартный вывод ошибок. Мы можем, например, сказать машине, выведи нам содержимое папки bob, которая не существует ls bob > result.txt, естественно мы получим ошибку которую система вывела на экран. Экран является стандартным выводом ошибок. В нашем случае нет папки bob и нет файла resut.txt. Если мы хотим отправить ошибку в файл, так же как результат выполнения команды, то ls bob 2> result.txt, вспоминаем основные понятия, в которых было указанно, что 2 – это стандартный вывод ошибки. Следовательно, на экране мы уже не видим ошибки, потому что она отправилась в указанный файл. Кстати мы можем объединить стандартный вывод команды и стандартный вывод ошибки. Например: ls bob > result.txt 2> error.txt. Выведи содержимое папки bob в файл result.txt, а если возникнет ошибка внеси в файл error.txt. В таком случае и команда выполнится и что-то будет в файле и если ошибка возникнет, то она будет записана в файл error.txt. Это можно применять на практике, когда мы что-то делаем и предполагаем, что в процессе выполнения возникнут ошибки, то используя данную конструкцию данные ошибки мы все можем отправить в отдельный файл. Конвейер Конвейер умеет передавать выходные данные из одной программы, как входные данные для другой. Т.е. выполняется команда, мы получаем результат и передаем эти данные далее на обработку другой программе. Например, выполнить команду ls и далее мы могли стрелочкой отправлять результаты выполнения команды в файл, т.е. мы меняли только стандартный вывод, а не передавали другой программе. А можем выполнить ls | grep r , т.е. получить содержимое и передать по конвейеру команде сортировки и сказать отсортировать по наличию буквы r, а если перенаправить еще вывод в файл, то cat имя файла , мы сможем увидеть информацию в файле. Но есть другая команда tee которая позволяет работать немного удобнее. Например: ls | tee output.txt. Те данная команда выводит информацию сразу на экран и в указанный файл. Что достаточно удобно с точки зрения работы с выводами. И еще одна команда xargs – она построчно работает с выводами. Если у нас есть какая-то команда, которая выдает нам вывод в виде нескольких строк ответа, то мы можем эти строки построчно передавать этой команде, т.е. не одной кашей, а построчно. Например find . –name “*.txt” найти все файлы в текущем каталоге с расширением txt. И если бы мы захотели удалить все эти файлы нам бы пришлось построчно их удалять, но мы можем сказать, чтобы выходные данные были переданы по конвейеру xargs и удалить. find . –name “*.txt” | xargs rm -f Как видите после данной конструкции команд файлов не осталось. Т.е. данные построчно передались на команду удаления, которая построчно каждый файл с ключом –f (принудительно) их и удалила.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59