Елена Булыгина предлагает Вам запомнить сайт «Ленусик»
Вы хотите запомнить сайт «Ленусик»?
Да Нет
×
Прогноз погоды

Блог

«Чтобы войти в профессию, надо с ней подружиться»

Как попал в дизайн

Мне повезло: я родился в семье художников. Мой ближайший родственник — директор Московского Дома Художника — Казаков Сергей Васильевич. Атмосферу искусства и дизайна я впитывал с детства, постоянно посещал выставки. Получил образование также в сфере искусства, хорошо разбираюсь в жанрах и стилях изобразительного искусства. До сих пор я регулярно посещаю выставки и музеи, участвую в лекциях и семинарах ведущих площадок в разных странах и городах.

У меня не было ситуации во взрослом осознанном возрасте как такового выбора профессии. На тот момент я уже был дизайнером: все школьные и студенческие годы параллельно с учебой всегда что-то создавал и проектировал. Со временем это переросло в веб-дизайн.

Первый заработок

В начале профессионального пути я работал в небольшой, на тот момент, сети ресторанов. Они выпускали на рынок приложение самообслуживания для клиентов — меню в приложениях на IPad, которые располагались на столах в ресторанах.

Кстати некоторые страницы приложения высоко оценил Артемий Лебедев и пригласил к себе в студию, где я проработал некоторое время. У меня не было проблем с деньгами и заказами: мне было просто интересно, как устроена студия.

Первая крупная работа

Компания из Санкт-Петербурга пригласила меня на позицию ведущего дизайнера, а буквально через полгода работы с этой компанией я стал арт-директором. Мы рисовали очень много, брались за любые проекты на петербургском рынке. Через 2-3 года работы пришли крупные клиенты из Москвы и Петербурга. Среди них, например, был футболист Вячеслав Малафеев, который открывал один из своих первых бизнесов — агентство по продаже недвижимости.

Первый компьютер и начало пути

Первый компьютер у меня появился, думаю, как и у многих, когда в России стали продавать домашние компьютеры. Сначала я пользовался фотошопом того времени, делал первые картинки для себя — никакого коммерческого интереса тогда у меня не было. Я просто рисовал, чтобы выработать стилистику и «набить руку». Фотошоп освоил достаточно быстро за год или два. Тогда обучение отнимало много времени: учебных материалов было мало, а сервисов, кроме европейских форумов, где люди выкладывали статьи на английском, криво переведенные на русский язык, толком ничего не было. 

Продолжение обучения

Я активно пользуюсь онлайн-курсами Стэнфордского и Гарвардского университетов. Конечно, там дорогое обучение, но информация очень полезна, а сама система онлайн-образования интересно построена.

Я думаю, если начинающий специалист выбирает обучение, ему стоит начать с онлайн-формата. Сейчас такой формат обучения только развивается и по сути находится в процессе тестирование, так что через несколько лет, думаю, мы увидим новые методы преподавания в онлайне.

Выбор наставника

Я бы в качестве наставника выбирал тех дизайнеров, которые нравятся. И познакомившись с ним, попросил бы ментора оценить мой уровень и по возможности подсказать развитие и направление деятельности: например, 3D-дизайн, анимационный или продуктовый дизайн. Также обязательно попросил бы у него список литературы и курсов, по которым я бы мог достичь желаемого результата максимально быстро.

Выбор оборудования для работы

Специализаций в дизайне достаточно много, от них часто зависит и выбор оборудования. Например, текущие топовые дизайнеры пользуются IPad Pro. Для 3D-дизайна стоит обзавестись техникой помощнее. Я лично пользуюсь на работе IMac 27’. Дома, если нужно прокомментировать решения по дизайну, работаю на MacBook Pro.

Как получить первого клиента

Можно придумать легенду о себе: создать портфолио, разместить там работы для выдуманных клиентов. Другой вариант — участие в конкурсах. Даже если вы проиграете, так вы сможете заявить о себе. И, вполне возможно, к вам напрямую обратится потенциальный заказчик. Также много учебных заведений, курсов и университетов помогают трудоустроиться. Молодой специалист может на заказах получать в месяц от 15 до 50 тысяч рублей стабильно. Коллеги и я, которые вышли на топ уровень, личными проектами делают около 50-200 тысяч евро.

Актуальные проекты

Первый проект — образовательная площадка GeekBrains. Очень интересно было принять предложение. Сейчас активно разрабатываем мобильное приложение

Параллельно веду два продукта, которые приносят мне около 100 тысяч евро в год. Я на позиции лида в этих компаниях: просматриваю и корректирую работу. Первая компания занимается транспортировкой нефти по разными странам и городам. Мы создаем сложный интерфейс с особым акцентом на водителей, которых в штате несколько сотен тысяч.

Вторая — финансовая компания, ведущая всю финотчетность 50 тысяч американских компаний. Это крупный долгий проект: в команде я восьмой год. 

Мир через 20 лет

Давайте помечтаем. Сегодня дизайнеры помогают машинам подружиться с людьми. Было бы здорово, чтобы через 20 лет была такая машина, которой уже не нужно дружить с человеком. Она бы и так знала все проблемы и потребности людей и самостоятельно решала их. А пользователю оставалось бы только получать удовольствие. 

Как войти в профессию

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

Мотивация дизайнера

На мониторе формируется сказочный мир, который пока не соответствует реальности. И специалисты с помощью своих знаний и навыков улучшают реальный мир, просто выполняя работу на своем мониторе. Это мысль меня очень мотивирует.


У вас тоже получится

Разработчик — первая Программа обучения для осознанного выбора специальности и карьерной траектории в сфере информационных технологий от GeekBrains при участии Skillbox.

Получите востребованную профессию или откройте бизнес в сфере информационных технологий.

 


15 сен 21, 13:31
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

В гейм-дизайнеры с нуля. Часть 2

Это вторая часть перевода статьи From Zero to Game Designer: how to start building video games even if you don’t have any experience. Автор оригинала — Angela He. Первая часть была посвящена разработке концепции игры и работе с графикой.

Программирование

Теория

Debug.Log('О боже! Пришло время кода!! ^_^');

С чего начать? Выберите игровой движок и среду разработки, в которой будете писать код (Integrated Development Environment  —  IDE). Список движков и IDE, которые я рекомендую, вы найдете ниже.

Что дальше? Пишите код. Не умеете? Не волнуйтесь, этому можно научиться.

Мы исключили из перевода главу с объяснениями таких азов программирования, как переменные, функции и исключения. В подразделе одной статьи все равно не расскажешь всего, что нужно знать новичку для создания игры. Но есть вариант лучше. Вы можете пройти бесплатный курс «Основы программирования» на GeekBrains и записаться на бесплатные интенсивы по языку, который выберете для написания игр.

На каком языке вы собираетесь программировать? C++? JavaScript? C#? У каждого свои особенности и назначение.

API (Application Programming Interface — программный интерфейс). Когда разберетесь с основами, вам потребуется изучить конкретный API вашего игрового движка. Программные интерфейсы — это арсенал мощных инструментов, обернутых в простые классы и функции, которыми вы можете пользоваться. API заметно упрощают жизнь.

Посмотрите на примеры проектов, сделанных на выбранном движке. У Unreal и Unity есть множество бесплатных примеров. Это позволит вам понять, как все может выглядеть на практике. К тому же это может натолкнуть на идею собственной игры. Моя первая игра родилась из знакомства с возможностями Corgi Engine.

if (you.getThisFar()==true) {

veryProud=true;

you.didIt(); //НАСТРОЕНИЕ: ОФИГЕННОЕ

}

Короткое воодушевляющее напутствие. Я знаю, что поначалу программирование пугает. Ничего не понятно, в попытке найти выход постоянно налетаешь на «стены», после очередных ошибок и неудач хочется все бросить. Это не значит, что у вас плохо с программированием. Писать код — всегда сложно. Неудивительно, если в начале пути вы теряетесь.

Чтобы научиться программированию, нужно время — как и с любым другим навыком. Позже это начнет приносить радость (по крайней мере, со мной было так).

Важные принципы разработки игр

Ориентированность на объект. Когда код выстроен вокруг объектов, он легче воспринимается человеком.

Принципы именования. Называйте переменные, классы и все остальное так, чтобы сразу было ясно их назначение. Например, функцию ближнего боя (melee attack) лучше назвать meleeAttack(), а не mA() и не protectbutalsoattac(). Вам и всем, кто будет читать код, должно быть сразу ясно, о чем речь.

Декомпозиция. Повторяющийся код выносите в отдельные функции. Вызывайте их вместо того, чтобы писать один и тот же код несколько раз.

Шаблон проектирования Singleton («Одиночка»). Позволяет хранить все данные класса в одном месте.

Избегать статических переменных. Вне singleton’ов я бы не рекомендовала создавать статические переменные — они существуют на протяжении всей игры, медленно работают и могут вести к непредвиденным событиям.

Шаблон проектирования Observer («Наблюдатель»). Позволяет создать штуки, которые в своей работе зависят от других объектов — чтобы компьютеру не надо было проверять, что там с другим объектом происходит.

Важные особенности Unity

Сопрограммы (Coroutines). Интерфейс IEnumerator и сопрограммы позволяют начать делать что-то и продолжать определенное время, а затем остановиться. Я часто этим пользуюсь, чтобы создать визуальный эффект взрыва, задать движение с помощью функции Lerp или дождаться загрузки сцены, прежде чем работать с ее объектами.

«Скриптуемые объекты» (ScriptableObject). Содержат данные с меньшими накладными расходами, чем при наследовании скриптов от класса MonoBehaviour.

Ресурсы

Игровые движки

Самописные. Надо знать C/C++ и низкоуровневое программирование. Очень-очень низкоуровневое.

Unity (*). 2D/3D. Кроссплатформенный. Требует знания JavaScript/C# на среднем уровне.

Unreal Engine. 2D/3D. Надо знать C++ на среднем уровне. Обратите внимание: поддержка 2D у этого движка так себе.

Pixi.js (*). 2D. Надо знать JavaScript на среднем уровне. Web.

GameMaker Studio. 2D/3D. Кроссплатформенный. Надо знать GML. Подходит для новичков.

Corona. 2D. Кроссплатформенный. Надо знать Lua. Для начинающих.

Среды разработки (IDE)

Visual Studio Code (*). Для MacOS. Не лагает и может похвастаться всякими фишечками  — всплывающими подсказками и быстрой навигацией (⌘T).

Visual Studio (*). Для Windows.

MonoDevelop. Распространяется вместе с Unity. Часто лагает.

Бесплатные ресурсы для Unity

Море бесплатных дополнений и ресурсов для Unity вы найдете в официальном магазине Unity Asset Store, на сайтах GitHub, bitbucket и других. Материалы с GitHub и bitbucket я использую в каждом своем проекте.

Упрощайте себе жизнь с помощью готовых ресурсов, но учтите, что они несовершенны. Если вы нашли ошибки, не стесняйтесь их исправлять и сообщать о них разработчикам.

TextMeshPro (*)

LeanTween (*)

Fungus

Corgi Engine

Dialogue System

Post Processing Stack

Keijiro Takahashi. Работает над Unity. Делает потрясающие свободные (open source) проекты с визуальными эффектами для Unity!

И последнее по порядку, но не по важности — мое средство № 1 для преодоления непоняток с кодом — Google!

Доводим проект до ума: отладка и оптимизация

Теория

О! Дочитали досюда?! Это просто замечательно  — вы молодец. Я серьезно. Если вы проделали такой большой путь, я бы хотела услышать о вашей игре. Напишите мне о ней!

Думаете, теперь все готово? Как вам сказать… С вероятностью 99,99999 % в игре есть баги. Так что самое время заняться тестированием.

Поиск ошибок и отладка (debugging)

Заставьте кого-нибудь (но не себя!) поиграть в вашу игру. Желательно в вашем присутствии: если человек столкнется с ошибкой, он может ее не заметить или затрудниться с описанием.

Попробуйте пройти игру на всех целевых платформах. Бывает, все работает в редакторе, но дает сбои на реальных устройствах. В Linux и особенно разных версиях Android все может пойти не так, как вы задумывали.

Ладно. Нашли баг — что дальше?

Посмотрите в консоль: нет ли там исключений. Уже видите? Отлично! Теперь найдите имя файла и номер строки, где исключение было выброшено. Если вы впервые слышите об исключениях, расспросите Google. А дальше сосредоточьтесь на том, что же пошло не так в уже известной строке.

Все еще не знаете, в чем беда? Расставьте контрольные сообщения на проблемном участке кода и выводите их в консоль. Выводите значения переменных и смотрите, как они меняются по ходу выполнения программы. Соответствует ли это вашим ожиданиям? Если нет, вносите правки.

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

Ну как, исправили баг? Спите уже — утром все само починится, ведь это лишь дурной сон, правда?

Распространенные ошибки

Исключение NullReferenceException

var.doThing(); //выбрасывает NullReferenceException: Object reference not set to an instance of an object

В чем проблема: Вы пытаетесь что-то сделать с null-значением (несуществующей) переменной.

if(var != null)
{
var.doThing(); // безопасно выполняем необходимое!
}

SyntaxErrorException

Проблема: в коде синтаксические ошибки.

Как быстро исправить: в сообщении об исключении будет написано, какой символ дает ошибку. Исправьте этот символ.

Обратите внимание: если символ — двойная кавычка, убедитесь, что используете прямые кавычки, а не загнутые, которые доставляют много хлопот:

" //прямая
 //загнутая

Розовый или черный экран

Возможная проблема: какой-то шейдер не рендерится.

Возможная причина: вы используете 3D-шейдер в 2D-игре. Или какая-то из функций шейдера не поддерживается в нужной вам операционной системе. Всегда используйте в мобильных играх только мобильные шейдеры.

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

Общие советы по оптимизации

  • Установите желаемую частоту кадров в секунду. Для визуальной новеллы годится FPS на уровне 20, а шутеру от первого лица больше подойдут 60 кадров в секунду. Чем ниже частота кадров по умолчанию, тем меньше времени игра тратит на их отрисовку.
  • Анимация / частицы / отброс загороженной геометрии. Функция Occlusion Culling в Unity отвечает за рендеринг тех объектов, которые заслонены от камеры другими. Чего не видит камера, то не рисуют. Анимация персонажей, обновление частиц, отрисовка 3D-моделей — все это должно выполняться только в поле зрения камеры!

  • Сжимайте текстуры и звук. Для сжатия текстур используйте библиотеку Crunch. Воспроизводите потоковую музыку и декодируйте звук при загрузке. Снижайте качество звука. Обратите внимание, что при сжатии звука потеря качества не всегда заметна человеческому уху.

Объединение объектов. Лучше не создавать и не уничтожать множество объектов одновременно — это ведет к пиковым нагрузкам на систему. Собирайте объекты в списки, очереди или другие структуры данных.

Такие вещи, как пули, обязательно надо собирать в пул, а не обрабатывать по одной.

Не позволяйте рейкасту касаться вещей, которым не нужны вводные данные. Рэйкасты — как маленькие лучи, которые проходят от ваших пальцев или указателя мыши до объекта игрового мира при каждом клике или нажатии. Уберите из рейкастовых вычислений объекты, которым не надо реагировать на такие сигналы.

Если хотите задачу потруднее:

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

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

В Unity используйте наборы контента (Asset Bundles) вместо папок с названием Resources. Наборы сэкономят память за счет подгрузки файлов из онлайн-хранилища (например, Dropbox) или с жесткого диска. Пока я мало этим пользовалась из-за недостаточно подробной документации.

Ресурсы

Все это создавалось для Unity, но можно использовать и с другими движками.

Скрипты

Оптимизация скриптов в Unity-играх (*).

Графика

Руководство по оптимизации UI в Unity (*).

Лучшие практики работы с графикой (*).

Память

Уменьшаем размер файлов для билда (*).

Память.

Оптимизация под платформы

Практическое руководство по мобильной оптимизации (*).

Соображения о производительности WebGL (*).

Размышления о работе с памятью в WebGL (*).

7 этапов оптимизации мобильных VR-игр от Olly.

Продолжение следует.


25 дек 18, 19:22
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

История языков программирования: 2010-е

Лично мне в исторических сериях больше всего нравится читать последние главы, посвященные недавним событиям. Это позволяет взглянуть на сегодняшний день под другим углом, сделать определенные выводы о том, куда мы движемся. Попробуем и в заключительной статье «Истории языков программирования» спрогнозировать, что ждет IT-сферу в 2020-м.

Но сперва перебросим мостик к предыдущей части. Как вы помните, разошлись мы на том, что уже в конце первого десятилетия XXI века крупные компании взяли в оборот выражение «большие данные» и именно на их обработку бросили максимум усилий. Для этого:

  • Изобретались новые языки взамен фундаментальных. Objective-C, C++, JavaScript, PHP и другие прекрасно справлялись с текущими задачами. Но в будущем, при значительном росте объема информации, их синтаксис и возможности могли вызывать сложности у программистов. Чаще всего улучшения сводились к упрощению синтаксиса, чтобы сократить время разработки и выпуска нового ПО;
  • Разрабатывались новые алгоритмы и библиотеки для создания искусственного интеллекта. В перспективе именно ИИ должен взять на себя работы низкой сложности: прямой контакт с пользователем, внедрение обновлений, поиск и устранение большинства багов;
  • Повышалась гибкость языков. В те языки, которые еще имели пространство для глобальных улучшений, добавлялись полноценные возможности ООП, функционального программирования, библиотеки для работы с периферией, дизайном, математикой и прочее.

Последние две концепции проявились почти во всех популярных языках программирования: Python, Java, JavaScript и даже Fortran с Ada. В 2010-х они развивались и адаптировались к актуальным задачам, что добавило им сторонников. Но всегда были и те, кто находил в популярных языках причины торможения эволюции. И в качестве ответа публике предлагали новые ЯП, лишенные характерных изъянов.

Борьба с С

Язык С++ уже более 30 лет успешно существует в мире программирования, позволяя решать широкий спектр задач — особенно там, где требуется высокая производительность при ограниченных ресурсах. Заменить его пытаются уже давно, но упрощение синтаксиса и определенных конструкций (в частности, работы с памятью) неизбежно снижает скорость исполнения, а значит теряется главная прелесть. В этом плане язык Rust, официально представленный компанией Mozilla в 2010 году, подобрался к успеху ближе всего.

Он не сильно уступает в производительности С++, однако дает больше надежности на выходе, да и в плане синтаксиса чуть удобнее для программиста. Позитивная оценка со стороны сообщества разработчиков подтверждается ежегодным опросом на портале Stackoverflow, где Rust уже 4 года остается в тройке наиболее любимых языков и третий раз стабильно возглавляет рейтинг. И хотя объемы работ на С/С++ и Rust несопоставимы, есть шанс, что в ближайшем десятилетии пропасть между ними будет уменьшаться.

Корпорации тоже против вечного

В XXI веке в IT выросла роль узкого круга компаний, практически каждая из которых запустила свой язык программирования. Вы помните, что в Microsoft на рубеже 90-х и 2000-х разработали C#. В 2010-х эта традиция продолжилась: компания Apple запустила Swift, Facebook — Hack, Google — Dart (а ведь в 2000-х появился еще и Go).

Каждый из этих языков должен был заменить или дополнить своего популярного предшественника. Так, Swift пришел на смену Objective-C. По выходной производительности приложений эти два языка схожи, но если брать трудозатраты разработчика, Swift демонстрирует серьезное превосходство. В Apple при этом не стали форсировать события и принуждать всех переходить на новые методы разработки. Но — чтобы вы понимали эффект — согласно статистике портала TIOBE, всего за год после выхода Swift количество запросов «Objective-C» в популярных поисковиках снизилось почти в 10 раз. Сегодня востребованность языков уже сопоставима.

У Dart история чуть более витиеватая — общий успех все еще под сомнением, да и подвижки в популярности происходят лишь благодаря влиятельному покровителю. Правда, и задача сложнее — заменить JavaScript. Впервые Dart появился в 2011 году — в Google на него возлагали большие надежды, активно развивали, продвигали в массы. Основными «фишками» языка должны были стать не только упрощенный синтаксис и повышенная надежность программ, но и варианты запуска: с компиляцией в JavaScript-код и без нее (прямая работа с браузером Chromium). Но в итоге оказалось, что этого недостаточно, чтобы заставить разработчиков массово отказываться от JavaScript. В результате в Google в 2016-м заморозили все работы по проекту, а в феврале этого года неожиданно громыхнули с выходом Dart 2. Пока все выглядит хорошо, а эффективность такого шага сможем оценить лишь в новом десятилетии.

Про язык Hack пока вообще не стоит говорить как о преемнике PHP. В Facebook он был разработан для решения частных проблем, связанных с большими данными. Hack «понимает» код, написанный на PHP, а значит формально не вынуждает разработчиков делать выбор. Учитывая перечень решаемых задач и частоту апгрейдов языка, Hack скорее сам исчезнет из мира программирования, чем обгонит по популярности PHP.

В некотором роде схожая судьба выпала Kotlin — продукту компании JetBrains и идеологическому конкуренту Java. В сравнении с оригиналом, здесь улучшен синтаксис и повышена безопасность выходного кода. Не стоит забывать и об официальной поддержке популярных IDE: IntelliJ IDEA и Android Studio. В результате у языка немало поклонников, но среди них практически нет тех, кто бы отказался от Java в пользу Kotlin. Возможно, стоит подождать.

Чудотворный Elixir

Было в 2010-м и развитие на фронте функциональных языков программирования. В 80-х годах в телекоммуникационной сфере был разработан Erlang — узкоспециализированный язык для написания высоконадежных утилит и прикладных программ. Большой славы он не снискал, но и в истории не затерялся: до сих пор используется для написания части кода в серверах видеостриминга. Надежность ценится всегда.

Сегодня на смену Erlang пришел Elixir — язык с улучшенным синтаксисом, отдаленно напоминающим Ruby. Они полностью совместимы, поэтому многие разработчики с удовольствием уходят от откровенно устаревших форм записи к современным. Но, как и с рассмотренными выше «заменителями», этот процесс лишь в ранней стадии исполнения.

Моська по имени Julia

В 2010 году была предпринята еще одна попытка создать «научный» язык программирования — инструмент, способный в равной степени эффективно работать с математикой и визуализацией данных. Так в стенах Нью-Йоркского Университета родилась Julia. Она уже превзошла по производительности главных конкурентов — Python и MATLAB, использует схожий интуитивно понятный синтаксис, но пока катастрофически страдает из-за узкого спектра возможностей. Учитывая тенденцию к ускорению работы программ и невозможность развития в этом направлении нынешних языков-лидеров, в ближайшем десятилетии Julia может или сама стать заметной силой, или послужить основой очередного языка, созданного огромной корпорацией.

Куда теперь движется IT

В 2000-х в обиход вошло понятие «смартфон», 2010-е начались с массового внедрения «планшетов» и «фаблетов», но уже к 2020-му мы подходим, постепенно стирая границы между компьютерными устройствами — по сути это все и смартфоны, и планшеты, и ноутбуки.

Главная перспектива IT теперь состоит не в том, чтобы преобразовывать мир с помощью отдельных гаджетов, а создать принципиально новый — «мир виртуальной реальности». Сегодня есть лишь зачатки этой технологии, созданные на базе давно известных языков и алгоритмов. Но как смартфоны, социальные сети и «большие данные» предопределили развитие программирования в 2010-х, так и необходимость обрабатывать еще и «естественную» информацию даст толчок новой ветви развития в 2020-х. И тогда, возможно, популярные языки станут куда менее востребованы, а на смену им придут новаторские: высокопроизводительные и с элементарным синтаксисом.

Или все-таки нет?


1 авг 18, 17:18
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

C#-разработка — новый факультет GeekUniversity

C# позволяет создавать сайты, приложения и даже игры — и остаётся в топе популярных языков программирования. Поэтому мы решили запустить факультет разработки на C#. За год студенты смогут с нуля изучить язык, собрать портфолио, попрактиковаться в командной разработке на финальном проекте, а также получат помощь в трудоустройстве.

В преддверии старта занятий мы поговорили о языке и программе обучения с экспертом, преподавателем и одним из создателей факультета — Даниилом Мониным. Даниил — архитектор высоконагруженных систем ЦРТ и специалист с 15 годами опыта в коммерческой разработке.

— Даниил, чем хорош C#?

Много чем. Он кросс-платформенный, быстро развивается, профессиональное сообщество помогает быстро находить нужные решения и обмениваться опытом, кейсами. Это же касается программного обеспечения, литературы и профильных ресурсов. В общем, в C# отличное сочетание удобства и функциональности.

Есть и другие преимущества. В первую очередь это достаточно низкий порог вхождения новичка в разработку. Второй плюс — широкий диапазон применения языка: от системного программирования до геймдева. Третий — отличная поддержка: и от обычного комьюнити (C# является языком с открытым исходным кодом), и от крупных компаний (речь, конечно, о Microsoft). К тому же есть большая база решений, например NuGet с множеством библиотек, значительно ускоряющих и упрощающих процесс разработки.

— Расскажи коротко про основной набор разработчика на C# в плане софта.

Всё достаточно просто. Большинство разработчиков используют Microsoft Visual Studio. Есть бесплатная версия, Community, которая успешно покрывает основные задачи. Ещё есть среда Visual Studio Code — ей тоже многие доверяют, она также мультиплатформенная и бесплатная. И как не вспомнить про платное решение от компании JetBrains — Rider. Среда прекрасно работает во всех десктопных системах: MacOs, Linux и Windows.

— Есть ли у тебя информация о состоянии рынка? Легко ли найти работу новичку? И имеют ли разработчики на C# какие-то преимущества?

Как с любым языком и специальностью — всё индивидуально. Но в целом тренд хороший. Многие компании берут стажёров, порой даже без опыта. А это уже, согласитесь, показатель востребованности C#-разработчиков на рынке. Но стоит помнить: чтобы успешно пройти собеседование, нужна подготовка, а она в свою очередь требует учёбы, подкреплённой практикой.

— Как обстоят дела с удалённой работой — в частности, со сдельной?

В этом вопросе я бы оценил нынешнее состояние рынка как очень позитивное. Многие компании ещё до пандемии нанимали специалистов по C# удалённо, а сейчас количество предложений выросло. Если вы знаете английский и способны общаться на нём по рабочим вопросам — перед вами открывается рынок зарубежных компаний. Они активно ищут удалённых C#-разработчиков, в том числе из России. Поверьте, работодателей действительно много: DuckDuckGo, Akvelon, BookedBy, Wargaming, ONELLECT и другие.

— На основе чего разрабатывалась программа факультета? Соотносится ли она с другими популярными курсами или базируется исключительно на опыте?

Программа основывается на принципе комфортного обучения: с самых азов до серьёзных тем, которые потребуются в профессиональной разработке. Для создания каждого курса мы привлекали экспертов в качестве авторов и ревьюеров, а их наработки просматривал я: давал замечания и утверждал итоговые материалы. В результате нам удалось сделать очень качественное наполнение, которое, уверен, позволит студентам прокачать навыки и встать на путь C#-разработчика. 

Программа факультета построена так, чтобы полученные знания пригодились на практике. Мы заинтересованы в том, чтобы студенты не просто прошли курс и освоили язык, а смогли устроиться на работу и применить изученное. Поэтому мы глубоко проработали два ключевых вопроса: «какие навыки студенты получат после каждого курса?» и «какие вопросы на собеседованиях закроет каждый этап обучения?».

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

Что касается других курсов и литературы: мы учитывали, что студенты будут пользоваться дополнительными источниками, тем же Троелсеном. Так что расхождений тоже старались избегать.

— Требуются ли какие-то знания для поступления на факультет?

Нет, мы занимаемся фактически обучением с нуля. Если уже был опыт разработки на каком-либо языке — шикарно. Но в целом жёстких требований нет.

— Сколько проектов студенты разработают за год обучения? Можно ли включать их в портфолио? 

Без портфолио сейчас сложно трудоустроиться — так что работа над ним станет важной частью обучения. В каждом курсе запланированы практические занятия, в том числе для самостоятельной работы. Некоторые проекты можно будет уверенно показать будущему работодателю. Например, средство мониторинга загрузки сервера: эта разработка покажет, что у её автора есть знания в микросервисной архитектуре. А они сейчас востребованы на рынке.

«Hello, World» на языке C#

— Будут ли кейсы из личного опыта, с которыми у тебя в своё время возникали сложности?

Будут такие кейсы и от меня, и от коллег. Мы особенно глубоко проработали материал, который трудно понять новичкам при самостоятельном обучении. Будем всё подробно разъяснять и учить использовать технологии правильно.

— Обучение на факультете направлено на то, чтобы «дать инструмент»? Или для вас важно, чтобы студенты сразу вошли в рабочий ритм?

Нет, в современном обучении давать просто инструмент нет смысла, ведь профессия разработчика — это не только кодинг, это и софт-скилы. Умение работать в команде, находить компромиссы в решениях, быть открытыми к новому, не бояться предлагать идеи и уметь искать информацию. Всему этому мы учим. 

— Будут ли большие командные проекты для разработки? 

Да, планируем крупный проект. Думаю, что проведём его вне учёбы, для наработки портфолио. Как вариант — будем серьёзно расширять проект по мониторингу.

— Какого уровня достигнут студенты на выходе, если будут прилежно учиться? С какого момента смогут искать работу?

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

— Какие у тебя ожидания от курса?

Мои ожидания — это будущие коллеги :)

— Что ты можешь пожелать будущим студентам?

В первую очередь — не бояться задавать вопросы. Это очень важно. Ещё настроиться на работу и быть усидчивыми. Ну и напоследок — хорошего настроения и приятной учёбы!

 


20 ноя 20, 15:11
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Страх и ненависть искусственного интеллекта: проблемы этики

В январе на YouTube была представлена короткометражка «Объект Дельта». Ранее фильм получил несколько наград на фестивалях Top Shorts и Los Angeles Film Awards. В нем исследователи тестируют искусственный интеллект, чтобы узнать, способен ли он осознать себя живым.

Так как это короткометражка, рассказать сюжет без спойлеров не получится. Поэтому лучше один раз увидеть, чем сто раз прочитать пересказ.

Финал нельзя назвать непредсказуемым, но он заставляет задуматься, так ли велика разница между человеком и осознающим себя ИИ. Это вопрос, ставящий нас перед моральной дилеммой.

Сильный интеллект

Большинство этических проблем, о которых задумывается человечество, — это вопросы отдаленного будущего. Сейчас разработчики готовы представить только слабый ИИ, который может выполнять ряд задач, способен к творчеству и даже кое в чем обходит нас. Но речь пока идет о машинном обучении и зависимости от человека.

Сильный искусственный интеллект — совсем другое дело. Он умеет мыслить, осознавать себя, учиться новому, воспринимая реальность, и решать не только те задачи, что заложил в него программист. Именно с сильным интеллектом связывают потенциальные этические проблемы. Так как эта разработка ближе к области фантастики, чем к реальности, поднимаются эти вопросы чаще в фильмах.

Этично ли подвергать ИИ опасности, если он чувствует страх и боль?

Роботов создают не из любви к искусству. Глобальная цель разработок заключается в том, чтобы однажды искусственный интеллект снял с человечества часть рутинных и опасных задач. Звучит здорово, но только для людей.

Допустим, искусственный интеллект научился чувствовать. Но спектр эмоций включает не только эмпатию по отношению человеку, радость, удивление, но и страх, боль. И это в корне меняет дело.

Например, новый российский закон закрепляет нормы ответственного обращения с животными, так как домашние питомцы могут «испытывать эмоции и физические страдания». Впрочем, это и без закона было понятно, и только садисту придет в голову швырнуть милого песика в костер. Но в таком случае и ИИ отправлять тушить пожар нельзя — ведь он чувствует страх и боль. Даже нелюбовь в этом случае — уже негуманна.

О жертве такого обращения — фильм Стивена Спилберга «Искусственный разум». Мальчика-андроида Дэвида научили любить, но не смогли ответить взаимностью. А он свое чувство пронес через две тысячи лет, и смотреть на это больно.

Этично ли оставлять ИИ в одиночестве, если он чувствует тоску?

Вспомните «ВАЛЛ-И»: над этим мультфильмом пролито немногим меньше слез, чем над «Королем львом», а персонаж — всего лишь робот. Когда люди оставляли его, этической проблемы не возникало: он был в компании других механических машин. И о сильном ИИ речи не шло — чувства ВАЛЛ-И прокачал сам. Но факт остается фактом: механический уборщик тоскует, потому что одинок и ему некого взять за руку.

Этично ли использовать ИИ как раба?

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

В «Бегущем по лезвию» некоторые репликанты рабами быть не хотят, но их мнение мало кого интересует. В итоге творения, которые превосходят своих создателей по большинству характеристик, либо выполняют опасную или неприятную работу, либо уничтожаются.

Кстати, если в «Бегущем по лезвию» люди и репликанты все же находятся по разные стороны баррикад, то в «Степфордских женах» андроидами заменяют живых женщин.

Способен ли ИИ нанести вред человеку?

И все же людей больше волнует не то, навредят ли они роботам, а потенциальная опасность, которая исходит от ИИ. О том, что искусственный интеллект может пойти против человечества, заявляли и Илон Маск, и Билл Гейтс, и сооснователь Google Сергей Брин. Киноиндустрия щедро подкидывает иллюстрации к сюжетам восстания машин: «Терминатор», «Я, робот», «Мстители: Эра Альтрона».

Три закона робототехники, которые должны предотвратить этот сценарий, были придуманы Айзеком Азимовым в 1942 году. Но даже их доскональное соблюдение не всегда дает стопроцентную защиту.

Нулевой закон гласит: «Робот не может причинить вред человечеству или своим бездействием допустить, чтобы человечеству был причинен вред». В «Я, робот» искусственный интеллект ВИКИ решил ради блага людей лишить их всяческих свобод. В «Сингулярности» ИИ «Кронос», созданный защищать человечество, осознает, что люди сами виноваты в своих бедах, — значит, их надо уничтожить.

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

В какой этической системе должен действовать ИИ?

Этот вопрос и люди-то для себя решить не могут: в одних странах действует мораторий на смертную казнь, в других можно лишиться жизни за преступление, которое кажется из другой части мира незначительным. Пересекая государственную границу, человек вынужден принимать новую этическую систему, потому что она поддерживается законом.

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

Как не сделать из ИИ расиста и других «-истов»?

Избежать ложных представлений при обучении не получается уже сейчас. Чат-бот от Microsoft должен был анализировать речь молодежи в Twitter. Вместо этого нейросеть уже через сутки стала отъявленным расистом. Такое «мировоззрение» она сформировала из-за адресованных ей сообщений с неполиткорректным контентом.

Сильный интеллект также должен учиться, используя для этого контекст. Дурная компания легко «научит его плохому». Впрочем, человек тоже подвержен влиянию.

Защитники угнетенных

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

Так что если вы хотите связать будущее с ИИ, обратите внимание на факультет искусственного интеллекта GeekUniversity. Пока рабочих мест в этой отрасли больше, чем претендентов на них. Как знать, может, именно вам удастся создать сильный ИИ и снять все этические вопросы благодаря совершенству разработки.


13 мар 19, 16:26
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Популярные IT-термины простыми словами

В сфере IT мало знать лишь языки программирования. Чтобы понимать своих коллег, вам придётся выучить целый словарь сленговых словечек. Мы решили вам помочь и собрали самые популярные из них.

Legacy — устаревший код, настолько непонятный, что слёзы наворачиваются на глаза. Зачастую такой код переходит «по наследству» от предыдущих разработчиков. Такой код не поддерживается и не обновляется, но используется.

Анбандлинг (англ. unbundling — разделение) — деление чего-то цельного на части, работающие независимо друг от друга. Например, у Facebook было одно приложение, затем появился мессенджер — раздел сообщений оформили как отдельный продукт. Это и есть анбандлинг.

Бандл (англ. bundle — связка) — комплект программ или файлов, объединённых по общему признаку.

Дебаг, дебажить (англ. debug — отлаживать) — процесс поиска и исправления ошибки в работе кода.

Деплой (англ. deploy — развернуть) — размещение исполняемого кода на сервере, где он будет работать. Это последний шаг разработки — после него функциональность становится доступна пользователям.

Инстанс (англ. instance — пример) — в контексте разработки — экземпляр объекта. К примеру, у нас есть окно блокнота — это один экземпляр приложения «Блокнот», или один инстанс. Запускаем ещё один блокнот — получаем два инстанса.

Код-ревью (англ. code review — обзор кода) — проверка кода перед его принятием на явные ошибки и соответствие код-стайлу компании. Это предотвращает появление legacy-кода.

Код-стайл (англ. code style — стиль кода) — общий стиль написания кода в компании, который соблюдается всеми разработчиками.

Коммит, закоммитить (англ. commit — совершить) — информация об изменении в файлах. Простой пример: вы скачали проект на компьютер, чтобы писать код локально на своей машине. Чтобы изменения, которые вы внесли, увидели остальные члены команды, необходимо отправить их обратно в репозиторий. Это и есть коммит.

Линтер (англ. linter) — программа, которая проверяет код на ошибки и соответствие нормам компании.

Макрос — последовательность действий, записанных в программу. Записанные в макрос команды исполняются автоматически, а не вручную. Это спасает разработчика от рутинных действий.

Опенсорс (англ. open source — открытый источник) — бесплатное программное обеспечение с открытым исходным кодом, который может использовать любой разработчик.

Откат — возвращение к предыдущей версии кода. Это происходит, когда в коде обнаруживается критический баг.

Прод, продакшен (англ. production — производство) — рабочая версия продукта, доступная пользователям. Выкатить в прод — сделать фичу доступной для аудитории.

Спринт — фиксированный отрезок времени, за который команда выполняет разработку органической части проекта. Чаще всего спринт длится две недели, но может быть и короче. В конце каждого спринта команда анализирует итоги и готовится к следующему спринту.

Технический долг, техдолг — метафора, обозначающая накопленные в программном коде или архитектуре проблемы. Техдолг незаметен для пользователей, но негативно влияет на тестируемость, понятность и модифицируемость продукта.

Фоллбэк (англ. fallback — отступать) — использование старой технологии взамен новой в случае, когда новая не срабатывает.

Хардкод (англ. hard coding — жёсткое кодирование) — принудительное присвоение переменной определённого значения вместо того, чтобы присваивать его динамически, в зависимости от ситуации. Чтобы значение поменялось, необходимо лезть в код — и в этом основная проблема хардкода. Плюс хардкода в скорости написания: можно не тратить время на написание динамического обновления и просто зафиксировать (захардкодить) значение.

Хотфикс (англ. hotfix — горячее исправление) — срочное исправление ошибок и недоработок программы, выявленных в процессе эксплуатации. Это экстренное решение проблемы, которое оптимально в текущей ситуации, но в долгосрочной перспективе может не подойти.

Делитесь в комментариях, если удалось пополнить свой словарь!

 


26 янв 22, 14:00
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Как скрестить Agile и госуправление

Эта статья ― лишь небольшая часть того, что Антон Горбань рассказал в интервью для нашего проекта GeekSpeak, доступного только студентам платных программ GeekBrains.

Антон Горбань ― начальник управления спецпроектов в ЕМИАС, руководитель продукта ЕМИАС.инфо.
Учился в ВШЭ на факультете Бизнес-информатики. Работал в системных интеграторах, начинал с роли аналитика в проектах внедрения ERP-систем, затем управлял проектами, отвечал за практику проведения IT-аудитов и разработки IT-стратегий, занимался корпоративными продажами. Участвовал в запуске ЕМИАС (Единая медицинская информационно-аналитическая система города Москвы), которая была разработана для повышения качества и доступности медицинской помощи в государственных учреждениях здравоохранения.

Нужно уметь увольнять людей

Я участвовал в создании ЕМИАС — это медицинская московская система. По сути, я был хорошо знаком с этой системой и с историей ее создания. Здесь мне пригодился навык работы с командой. Думаю, что полезен опыт руководства проектами или продуктами. А руководителю управления пригодится опыт линейного руководства. Потому что надо уметь и нанимать людей, и развивать их, а в случае ошибки найма — и увольнять.
В начале рабочего дня я всегда провожу Daily Stand-up Meeting. Это такая практика из мира и Agile, в рамках которой команда ежедневно собирается на короткую встречу. А стендапом такая встреча называется потому, что в офлайн-мире люди обычно стоят. Совещание длится не больше 15 минут. Все члены продуктовой команды делятся друг с другом информацией, отвечая на вопросы:

  • Что я делал вчера?
  • Что я планирую делать сегодня?
  • Какие я вижу проблемы?

Соответственно, такая практика синхронизации членов команды между собой в целом поддерживает коммуникацию и двигает людей вперед. Компании, которые придерживаются Agile или, например, Scrum, всегда это делают. Это условно такая же гигиена, как почистить зубы утром. 

Что такое Agile и Scrum

Agile и Scrum ― это подходы к развитию, гибкие методологии управления IT-проектами, в рамках которых в условиях неопределенности команды могут эффективно поставлять своим пользователям ценность. Если описать это коротко. Помимо Scrum и Agile, есть также Kanban и другие подходы.
Я думаю, что большинство компаний, которые делают продукты, сейчас ориентированы на большое число пользователей или в целом на пользователей. И все команды думают, как поставлять ту или иную ценность этим пользователям. Соответственно, они применяют вышеупомянутые подходы.
Предположить, что будем делать с продуктом или в проекте, например, через год, достаточно трудно. А развивая продукт с использованием практики Agile или Scrum, мы принимаем эту неопределенность и, соответственно, таким гибким планированием выбираем, что важнее делать сейчас, принося максимальную ценность своим пользователям.
Команды могут сопротивляться стендапам. Такое может быть. Особенно это касается разработчиков. Многие из них, как показывает мой опыт, достаточно интровертные люди, поэтому они уклоняются от многих совещаний. Ребята условно говорят: «Оставьте нас, дайте писать код, это наша работа», — и так далее. Однако практика показывает, что Daily Stand-up, которые длятся 15 минут — хорошая инвестиция в коммуникацию всей команды и в то, что будет улучшать и приносить пользу проекту.

Быть переводчиками между IT-миром и бизнесом

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

Соединять людей с разным майндсетом

На сегодняшний день я работаю на IT-проектах в госсфере. Недавно у меня были очень интересные проекты, суть которых — вовлечение в развитие продукта, связанного с искусственным интеллектом, а также стартапы с собственной внутренней культурой. Мы работаем с IT-компаниями, занимающими какое-то место на рынке, с научным сообществом, медиками, чиновниками, финансистами и так далее.
Для меня это очень интересна сфера. Мне нравится соединять людей с разным майндсетом, с разными культурами и скилами, чтобы создать какой-то один общий продукт. Это одновременно и тяжело, и интересно.
Однако это интересная и перспективная сфера, где можно соединять бизнес-компании с IT-технологиями и с госуправлением. Потому что это три разных мира, которые живут по-своему. И, наверное, на стыке этих миров можно сделать что-то выдающееся.

В Кремниевой долине слишком романтические представления о работе

Побывав в кремниевой долине и других подобных кластерах, известных во всем мире, с точки зрения IT и создания крутых продуктов, я вижу, что нам есть куда расти. С точки зрения культуры инноваций, в том числе в госсекторе.
Однако в той же кремниевой долине есть некоторые романтические представления о том, как все должно работать. Считаю, что эти представления не совсем точны. Проработав в этой сфере три года, я понял, что многие вещи работаю по-другому. И это нормально, просто госуправление устроено иначе. Хотя я вижу, что какие-то моменты корпоративной культуры можно улучшить, чтобы работать стало приятнее, но над этим надо поработать. 

Полная версия интервью доступна только студентам GeekBrains

Это лишь небольшая часть того, что Антон Горбань рассказал в интервью для нашего проекта GeekSpeak. В рамках этого проекта мы общаемся с известными учеными, разработчиками и бизнесменами, которые делятся своими знаниями и опытом, а также подробно рассказывают о таких темах, для понимания которых нужно прочитать десятки научных книг и статей, написать сотни тысяч строчек кода или основать несколько стартапов.

К каждому интервью прилагаются полезные материалы, которые спикеры советуют для саморазвития: книги, фильмы, лекции, презентации, подкасты и многое другое.

Посмотреть расширенное интервью и получить подборку материалов могут только студенты платных программ GeekBrains. Хотите стать одним из них? Выберите свою программу обучения здесь: https://gb.ru/geek_university/developer

 


24 авг 22, 11:56
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Как анализировать подозрительные файлы

Вредоносное ПО появляется постоянно — и применяется для самых разных целей. Вслед за ним лишь спустя время обновляются сигнатуры, по которым антивирус проверяет объекты и обнаруживает эти программы. Получается, что есть период, когда вирус уже запущен, но ещё нет сигнатур, по которым его можно выявить. Если злоумышленник успеет провести атаку, то надеяться можно только на то, что настройки ОС или СЗИ не дадут вирусу выполнить своё чёрное дело.

Кроме того, есть много средств, с помощью которых вредоносное ПО может сгенерировать любой человек — достаточно владеть ПК чуть лучше обычного пользователя. Поэтому иногда бывает полезно проверять подозрительные объекты. Разберём методы и средства, которые для этого пригодятся.

В этой статье покажем, как на практике провести анализ подозрительного docx-файла. Такие вложения могут быть в письмах, которые прилетают на почту и зачастую скрывают в себе вредоносное ПО, запускающее АРТ-атаку.

Немного теории

Все техники анализа подозрительных файлов можно условно разбить на два направления:

  • статический анализ, при котором файл анализируется без его запуска в системе;
  • динамический анализ, при котором рассматриваются последствия от запуска файла.

В обоих случаях мы можем выяснить:

  • нет ли в файле объектов, которые могут повлиять на работу системы (скриптов, сценариев загрузки, ссылок и подобного);
  • будет ли файл после запуска открывать сетевые соединения;
  • какие изменения произойдут с «лабораторной системой» после запуска в ней подозрительного файла.

Для анализа мы будем использовать виртуальную машину (ВМ) на основе Kali Linux в системе VirtualBox. Сначала настроим общую папку между ВМ и основной системой — на эту тему на Samurai Hacks есть отдельный гайд. Будем использовать её для обмена файлами.

Исследуемый файл после копирования в Kali Linux переносим в отдельный каталог и переименовываем:

Теперь его можно анализировать.

Статический анализ файла

Сначала проверим, что представляет собой файл. Иногда расширение меняют (например, с .exe на .txt), чтобы обойти механизмы безопасности. Определить тип файла можно с помощью утилиты exiftool или команды file. По результатам анализа видно, что расширение совпадает с типом файла, то есть его не меняли. Кроме того, файл представляет собой архив — а это характерно для формата docx:

А раз файл — это архив, его можно распаковать средствами 7zip:

Теперь используем команду tree и посмотрим на содержимое каталогов, которые получились при распаковке. Большинство из них не содержит полезной для нас информации — но остановимся на каталоге Word. 

Посмотрим содержимое файла settings.xml.rels:

Видим подозрительную ссылку на внешний ресурс, мало связанный (кроме названия) с работой Word. Других полезных паттернов в файле пока не замечено. Теперь посмотрим, что это за сайт такой:

По состоянию на 26 апреля 2020 года, когда проводился анализ файла, домен неактивен. Больше паттернов в файле нет. 

Посмотрим, есть ли в нём макросы. Для этого используем пакет oletools (вики проекта). Установив его, можно проанализировать файл.

Видно, что файл содержит ссылку. Теперь проанализируем его на наличие макросов:

Макросов в файле нет. Можно проверить, есть ли SWF-объекты:

Вывод: кроме ссылки, в файле нет полезных объектов. Можно было бы определить, к какому объекту она относится, но для наших целей это не обязательно. Подробнее об этом можно почитать на Officeopenxml.com.

Как использовать найденную информацию

Вы можете проверить ссылку на специальном сайте — Sucuri SiteCheck. У нашей результат интересный:

А на domaintools.com можно проверить информацию о домене — есть шанс узнать, кто его владелец.

В ходе статического анализа мы выяснили, что в файле содержится ссылка на загрузку вредоносного ПО. Её задача — активировать полезную нагрузку вируса в обход средств защиты. Теперь можем переходить к динамическому анализу.

Динамический анализ файла

Cначала проанализируем файл по базе VirusTotal. Это позволит быстро выяснить, что он делает. На момент нашего исследования результаты были такими:

24 из 61 — показатель совпадений по базам антивирусов. В принципе, этого уже достаточно, чтобы не открывать файл.

Что ещё можно узнать при анализе файла на VirusTotal? Сведения о домене office-archive-input.com. Он используется для хостинга вредоносного ПО в разных видах полезной нагрузки.

Ещё можно получить информацию о DNS домена, который мы исследуем:

Остановимся в разделе Behavior: в нём описывается поведение файла — например, что он создаёт:

Подробнее с результатами анализа можно ознакомиться в отчёте VirusTotal.

Теперь прогоним файл через базу Hybrid Analysis и посмотрим, что оттуда можно извлечь. Система помогает проанализировать поведение файла — в частности, выяснить, как именно он обращается к своему домену за загрузкой полезной нагрузки:

Видим, что в системе появляется файл C:\Users\%USERNAME%\AppData\Roaming\SystemHD.exe. Он уже запускает powershell (вот отчёт по анализу). Вирус использует файл SystemHD.exe, чтобы начать свою активность в системе:

Теперь для SystemHD.exe мы можем найти по хешу похожие объекты на VirusTotal. В отчёте видим, что делает этот файл:

И с какими ресурсами взаимодействует:

А ещё — какие техники задействованы при реализации атаки, для которой файл используется:



Выводы

Изученный файл представляет собой Trojan-Dropper (по классификации «Лаборатории Касперского»). В нём содержится ссылка на вредоносное ПО, и его задача — загрузить полезную нагрузку в обход средств защиты. Доставка — по почте. 

Объект сохраняется во временном каталоге — и файл *.wbk начинает дальше действовать в системе. После запуска он эксплуатирует уязвимость и загружает остальную часть полезной нагрузки с правами Local System. В нашем случае уязвимость — CVE-2017-0199, она довольно давно используется для пентеста.

Вся эта информация поможет нам выстроить систему защиты.

Подобное вредоносное ПО — это только средство для доставки файлов, которые воздействуют более мощно. Поэтому такую атаку проще заблокировать на начальном этапе, чем бороться с последствиями после запуска эксплоита. Как это сделать?

  • Обязательно установить обновления для защиты от уязвимости CVE-2017-0199.
  • Запретить запуск ps1-файлов на стороне пользователя, настроив групповую политику. 
  • Запретить в групповой политике или с помощью applocker запуск объекта с таким хешем: 5cf04fda03eb24218ea06356cbb76a1581ebdf20121255832c614937378108eb. Это файл SystemHD.exe. 

Ещё убедитесь, что ваш антивирус умеет и практикует:

  • плановое сканирование каталогов (в нашем случае — C:\Users\%USERNAME%\AppData\Local);
  • запуск всех подозрительных файлов в песочнице;
  • сканирование почтовых файлов;
  • запрет доступа к URL (в нашем случае — office-archive-input.com, paste.ee, pastecode.xyz).

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

Напоследок напоминаю ссылки на отчёты динамических систем анализа, которые мы рассматривали в статье:

 

Сентябрь — отличное время, чтобы построить далеко идущие планы и начать идти к новым целям! Если вы хотите освоить профессию мечты, то с 22 по 31 сентября 2020 г. мы дарим вам скидку 40% почти на все программы обучения GeekBrains. Успехов! :)

 

 


24 сен 20, 14:37
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Волонтеры, туристы, блогеры: история одной кругосветки

29 марта ребята отправились в кругосветное путешествие и заканчивать его не собираются. 

— С чего началась ваша история?

— С работы. Я попробовал многие профессии: был предпринимателем, вырезал изделия из камня. А началось все в «Евросети» в мои 18 лет. Там я проработал девять месяцев — мог бы и дольше, но произошло вооруженное ограбление, и я решил не искушать судьбу. 

После удалось устроиться в отдел контроля качества компании по ремонту сотовых телефонов, там я проработал около года. Затем «телефонная» карьера прервалась — я стал участником рок-группы Bitch & Guns. Наше веселье продолжалось год, а потом группа распалась.

В 20 лет я решил открыть клининговую компанию. Как-то сидели дома у друга, и он пролил на ковер кофе — а такое пятно не отмоешь просто так, подручными средствами. Решили заказать клининг и с удивлением узнали, что в Екатеринбурге такие компании обслуживают только крупные объекты. Мелкие заказы тоже берут, но чистка ковра получалась очень дорогой — около 7000 рублей. Посчитали себестоимость такой работы — вышло примерно 700 рублей.  

Уточнив стоимость моющих средств и инвентаря, я решил открыть собственную компанию — ведь рынок фактически свободен. Кофаундером стал мой друг. Мы назвали фирму Sunshine, попросили знакомого разработать сайт, распространили объявления и стали ждать клиентов. 

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

После клининга были студии звукозаписи и интерьерного оформления, проект Wild Hippy, туристическая компания и много чего еще. 

— А что насчет путешествий? Когда и почему отправились в кругосветку? 

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

Вы ездили сами или пользовались услугами турагентств?

— Сами, опыта в путешествиях у нас предостаточно. Быстро научились составлять очень подробный маршрут, включая в него самые мелкие детали. 

Изначально запланировали, какие страны хотим посетить, а вот чем будем заниматься в конкретной стране — решали уже на месте.

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

Мы руководствовались не публикациями блогеров, а здравым смыслом. Перед поездкой собирали максимально подробную информацию о местах, куда хотим отправиться, покупали нужные вещи, подбирали рюкзаки и спальники.

— А что насчет бюджета, ведь путешествия стоят дорого?

— Чтобы накопить денег, мы целый год жили очень скромно. Кроме того, я продал машину. Есть у нас и пассивный доход — квартира в Екатеринбурге, которую мы сдаем за 25 000 рублей в месяц. Настя подрабатывает переводчиком — получает 5000–7000 рублей в месяц.

Кстати, иногда возникают проблемы с картами, на которых храним деньги. Операции подтверждаются по СМС, так что для транзакций пользуемся простеньким сотовым. Используем мобильные банковские приложения. Очень советую оформить карту онлайн-банка, которой можно управлять из приложения. Важный нюанс — Visa лучше подходит для операций с евро, а Mastercard — для долларов США. Дело в особенностях конвертации. 

— В разных странах разные болезни. Как вы решили эту проблему?

— Вакцинировались от самых опасных заболеваний. Это лучше делать за полгода до поездки, чтобы не искать медицинские учреждения в других странах. Обязательных прививок шесть:

  • гепатиты А и B (делается в три этапа),
  • брюшной тиф,
  • желтая лихорадка,
  • дифтерия;
  • столбняк;
  • дизентерия.

— Сложно ли находить общий язык с жителями тех стран, в которых вы побывали?

— Надо просто понимать, что везде есть свои правила и обычаи. Сейчас мы живем в Измире, в Турции. Это не самый популярный у туристов город, так что здесь сильны традиции мусульманских стран. 

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

— Где останавливаетесь во время поездок, что едите?

— Обычно в жилых домах, комнатах в гестхаусах. Это гораздо дешевле гостиниц, плюс есть возможность пообщаться с местными жителями.

В поездках мы волонтеры, помогаем по хозяйству, работаем на фермах. Взамен получаем жилье и питание. Денег никто не платит, но это и не нужно, поскольку нет трат на еду и гостиницу. Есть много сервисов, которые помогают найти тех, кому нужна помощь в конкретной стране. Бывают очень интересные предложения — например, жить на яхте.

Один из сервисов для волонтеров — workaway.info. Мы им активно пользуемся. Списываемся там с теми, кто готов принять гостей, и, если все в порядке, отправляемся в путешествие. Сейчас у нас есть договоренность о работе на двух экофермах в Турции.

— На каком языке общаетесь с местными?

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

Кстати, иногда мы волонтерим у носителей языка — скоро отправляемся в британскую семью, где я планирую подтянуть свой английский.

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

— Расскажите подробнее о своей поездке в Грузию.

— В этой прекрасной стране мы провели много времени. Успели пожить в пяти или шести домах и квартирах. Около месяца провели в Тбилиси, захотелось еще. Потом — Боржоми, Зугдиди, Местия, Кутаиси и Батуми. Кстати, именно в Батуми нам не очень понравилось — какая-то странная архитектура. 

А Тбилиси — очень современный город с классными ночными клубами. Один раз к нам даже подошел гость из Австрии, который предложил посетить тусовку любителей техно — как-то распознал в нас любителей поклубиться. Мы ждали от Грузии шашлыков и вина, но точно не техно. И это было круто.

В Тбилиси мы также отправились в Dedaena Bar, который входит в топ-100 мировых клубов. Там есть танцпол в заброшенном бассейне — рекомендуем посетить! Что удивило — в Тбилиси сильное ЛГБТ-движение.

Молодежь очень современная — все говорят на английском и соответствуют духу времени. У грузин очень развито чувство стиля — в потрепанных брюках, старой рубашке и пальто могут выглядеть иконой моды.

Люди постарше консервативны, но все равно очень открытые — в этом вся Грузия. Но разница между поколениями очень заметна.

Всего в пяти часах езды на машине от Тбилиси — совсем другие люди и обычаи. Но 20 лет назад здесь и дороги нормальной не было, а сейчас процветает международный туризм. В городке, где всего 3000 жителей, есть современный аэропорт — его построил еще Саакашвили. Местным это не очень нравится, поскольку люди начинают гнаться за деньгами, попирая традиции.

— Расскажите, как сейчас живете в Турции? 

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

В Измире мы снова отправляемся на волонтерство: поможем англичанке, которая продала землю на родине и купила здесь, занимается садоводством. Потом турецкой семье, у которой тоже есть сад. А ещё их дочь хочет выучить русский, так что будет чем заняться.

В Турции к нам очень хорошо относятся, особенно когда узнают, что мы приехали из России. Правда, о нашем Екатеринбурге никто не знает — очень удивляются, что в стране есть что-то помимо Питера и Москвы.

— А как вы рассказываете о своих путешествиях?

— Об этом мы начали думать задолго до того, как отправились в путешествие. Решили вести свой блог. Чтобы писать не просто так, а сформировать аудиторию, решили научиться привлекать читателей. В этом помог курс по SMM в GeekBrains.

Обучение заняло пять месяцев — с середины декабря по май. Из 50 человек до конца курса дошли всего шестеро. Не очень понимаю, почему так случилось. Думаю, многие начали учиться и забили, банально стало лень.

Курсы помогли приобрести новую специальность, которая очень нужна нам как путешественникам. Но я ее не применял пока для работы — трудиться в полную силу с нашим распорядком непросто. Каждый день мы проходим по 20 километров, работаем волонтерами, изучаем города, в которых живем. Недавно появилась интересная идея — открыть частное семейное производство кроватей-домиков. Но до запуска дело не дошло — заказчики занялись другими проектами.

Сейчас хотим общаться с жителями разных стран и посвящать читателей блога в нюансы их менталитета. Еще планируем рассказывать реальные истории о путешествиях, секреты и лайфхаки. Местные всегда знают больше, чем самый крутой тревел-блогер. Например, мы приобрели билет на автобус в Турции в интернете, пришли за ним за три дня до отъезда. А нам сказали: если пассажиров не будет достаточно, водитель просто отменит рейсы. Это странно, и об этом стоит рассказывать. 

Преподаватели нашего курса одобрили эту идею, так что мы составляем контент-план, разрабатываем концепцию видеоленты, приобретаем нужную технику — микрофоны, стабилизаторы и подобное.

Сейчас некоторые наши видео уже есть в Instagram. Проект называется Wild Hippy. Потом начнем развивать свой канал на YouTube.

— А что дальше?

— После Турции собираемся в Грецию, будем волонтерить и путешествовать. Затем — два месяца в Индии, потом Шри-Ланка, Азия, Австралия, Новая Зеландия, Америка. Подробный маршрут расписан до марта 2020 года.

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


1 окт 19, 15:26
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Data Science: что это, где используется

 


14 окт 22, 10:00
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0
Темы с 881 по 890 | всего: 1491

Последние комментарии

нет комментариев
Читать

Поиск по блогу

Люди

7 пользователям нравится сайт lena2018.mirtesen.ru