Уроки SQL

Уроки SQL для начинающих / #1 — Что такое SQL? Введение
Язык SQL используется в любой программе и на любом веб сайте, где идет работа с базами данных. В ходе курса вы изучите язык SQL, а также научитесь работать с базами данных на примере MySQL.
Видеоурок
Полезные ссылки:
- Программа XAMPP ;
- Программа OpenServer ;
- Программа MAMP .
Начиная с этого урока мы приступаем к курсу по изучению языка SQL для новичков с нуля. В ходе курса мы не будем изучать SQL на примере какого-либо языка. Мы изучим синтаксис команд языка SQL и научимся прописывать запросы для работы с базами данных.
Информация про SQL
Немного информации про язык. Язык SQL появился еще в 70-х годах, но до сих пор остается мега популярным и востребованным языком. SQL используется для написания всевозможных запросов к базе данных: выборка, обновление, добавление, удаление записей и многое другое.
При создании программы, мобильного приложения или же веб сайта, использующего базы данных, вам с вероятностью практически 100% придется работать с языком SQL.
Так что же такое SQL? SQL это язык запросов к реляционной базе данных ( РСУБД ). На его основе нельзя построить программу или веб сайт, единственную функцию которую он выполняет, это формулирует запрос к БД и на основе запроса производит различные манипуляции внутри БД.
Компании зачастую требуют навыки и знаний языка SQL при трудоустройстве на работу. В ходе видеокурса вы познакомитесь с написанием команд для работы с базой данных и на основе этих команд вы сможете работать с БД используя любой другой язык: Python , C# , C++ , PHP и так далее. Все языки используют различные варианты для подключения к БД, но принцип отправки запросов к БД остаются одинаковыми, так как они пишутся на языке SQL.
SQL используется во множестве реляционных баз данных. Среди таковых можно выделить: MySQL, SQLite, Oracle, PostgreSQL, Microsoft SQL Server и многие многие другие.
Роль SQL в проектах
Sql выполняет роль посредника, между базами данных и проектом. Рассмотрим работу SQL на реально примере. Предположим, что у вас есть веб программа, написанная на PHP или Python . Также у вас есть база данных, к примеру MySQL, хотя на самом деле не важно какая БД у вас будет. Чтобы соединить обе технологии между собой нужен язык, понимающий как первую, так и вторую часть вышеуказанной логики. Таким языком является SQL. В нем вы записываете команду, при чем эта команда будет одинаковой что для PHP, что для Python, что для других языков программирования. После выполнения команды вы сможете получить данные из БД, записать данные или проделать другие манипуляции.
Информация про курс
В курсе «Уроки SQL для чайников с нуля » мы установим локальный сервер, а также запустим PhpMyAdmin. Это специальная программа, имеющая графический интерфейс для работы с базой данных MySQL. Внутри программы мы будем записывать все SQL команды, создавая таблицы и базы данных, а также работая с записями внутри них. Подобных программ существуют тысячи, но мы выбрали PhpMyAdmin, так как постоянно с ней работаем, плюс она имеет красивый интерфейс и идеально подходит под наши нужды.
SQL не сложный язык и его будет легко изучить даже чайникам в сфере программирования. За курс мы изучим основы SQL и доберемся до более сложных концепций SQL запросов.
Видео по работе с графическим интерфейсом PhpMyAdmin можно посмотреть ниже:
Вы можете выбрать другую программу, если хотите, синтаксис языка SQL отличаться не будет.
Задание к уроку
Выполните установку локального сервера и запустите графический редактор PhpMyAdmin.
Что такое SQL и зачем он нужен: как выучить язык за месяц и получить сертификат

Всем привет! Сегодня поговорим о Structured Query Language или как его еще называют в народе — SQL.
Програмний курс від robotdreams: С++ для GameDev.
Розробка ігор на високому рівні.
Но прежде давайте начнем с простого. Представим, что у нас есть сайт, на котором регистрируются юзеры. При регистрации они вносят некие данные о себе: имя, год рождения, город проживания и так далее. Все данные юзеров должны сохранятся на сервере (в базе данных) для того, чтобы потом пользователь мог удобно работать со всеми функциями, которые ему предоставляются. Чтобы хранить информацию о юзерах, нам нужна база данных (БД). Что же это такое?
Что такое база данных
База данных — это упорядоченный набор структурированной информации или данных, которые обычно хранятся в электронном виде в компьютерной системе.
База данных обычно управляется системой управления базами данных (СУБД) . Данные вместе с СУБД, а также приложения, которые с ними связаны, называются системой баз данных или просто базой данных.
Данные в наиболее распространенных типах современных баз данных обычно хранятся в виде строк и столбцов, формирующих таблицу. Этими данными можно легко управлять, изменять, обновлять, контролировать и упорядочивать их. В большинстве баз данных для записи и запросов данных используется язык структурированных запросов (SQL).
Ефективний курс від laba: Фінансовий менеджер.
Оптимізуйте фінансовий розвиток компанії.
Теперь же вернемся к сайту с юзерами, которые при регистрации вводят некие данные о себе и сделаем такую таблицу. Назовем ее Users.
| userID | userName | age | city | status |
| 1 | igor | 25 | kyiv | active |
| 2 | vika | 25 | lviv | inactive |
| 3 | lena | 26 | odessa | pending |
| 4 | oleg | 28 | kyiv | active |
Таблица состоит из строк и столбцов и имеет название, а значит ее можно назвать б азой данных .
Как работать с такой таблицей?
Работа с базами данных
Как раз здесь на помощь и приходит SQL.
Суть языка очень простая, он очень похож на английский и имеет такую же структуру. Изучив этот язык, мы легко сможем:
- извлекать конкретного юзера из таблицы, а также его параметры;
- сортировать наших юзеров;
- удалять данные юзера или его параметры;
Експертний курс від mate.academy: Fullstack Web Development.
Відкрийте світ розробки у свій вільний час.
Сам язык очень простой и состоит из операторов и выражений.
Рассмотрим пару примеров:
SELECT (‘столбцы или * для выбора всех столбцов; обязательно’)
FROM (‘таблица; обязательно’)
WHERE (‘условие/фильтрация, например, city = ‘kyiv’; необязательно’)
GROUP BY (‘столбец, по которому хотим сгруппировать данные; необязательно’)
Захоплюючий курс від laba: HR-менеджер.
Розвивайте персонал і підтримуйте бізнес.
HAVING (‘условие/фильтрация на уровне сгруппированных данных; необязательно’)
ORDER BY (‘столбец, по которому хотим отсортировать вывод; необязательно’)
Это примеры некоторых команд и их обозначения. Давайте применим их на практике. Например, нам нужно выбрать всех юзеров, которые зарегистрированы у нас на сайте и есть в таблице. Для этого нужно составить выражение:
SELECT * FROM users
Так, всего три слова и одна звездочка извлечет нам всех пользователей которые сохранились в нашей БД.
Еще пару примеров и практика
WHERE — необязательный элемент запроса, который используется, когда нужно отфильтровать данные по нужному условию. Очень часто внутри элемента WHERE используются IN / NOT IN для фильтрации столбца по нескольким значениям, AND / OR для фильтрации таблицы по нескольким столбцам.
Фильтрация по одному условию и одному значению:
select * from users WHERE City = 'Kyiv'
В этом выражении мы выбрали всех юзеров из таблицы Users, которые проживают в Киеве.
Фильтрация по одному условию и нескольким значениям с применением IN (включение) или NOT IN (исключение):
select * from users where City IN ('Odessa', 'Berlin')
В этом выражении мы выбрали всех юзеров из таблицы Users, которые проживают только ( IN ) в городах Одесса и Берлин.
select * from users where City NOT IN ('Madrid', 'Berlin','Bern')
В этом выражении мы выбрали всех юзеров из таблицы U sers, которые не проживают ( NOT IN ) в городах Мадрид, Берлин, Берн.
Также важно понимать что команды, которые есть в примере и выражения — это всего лишь капля в море от всех существующих в этом языке.
Изучив все команды, вы станете настоящим SQL-гуру, и это будет большой плюс к вашему резюме. Учить SQL, по моему мнению, нужно всем, несмотря на профессию в IT.
Почему SQL?
- получать доступ к данным в системах управления БД;
- описывать данные (их структуру);
- определять данные в БД и управлять ими;
- взаимодействовать с другими языками через модули SQL, библиотеки и предварительные компиляторы;
- создавать и удалять БД и таблицы;
- создавать представления, хранимые процедуры (stored procedures) и функции в БД;
- устанавливать разрешения на доступ к таблицам, процедурам и представлениям.
Как легко изучить SQL и получить сертификат?
Все, что вам понадобится — приложение на вашем телефоне.
Приложение Sololearn имеет большой выбор языков для изучения, среди которых есть и SQL.

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

Пример сертификата, который можно получить после прохождения курса
Приложение комфортное, в нем есть все нужные выражения и команды, тесты по окончанию каждого блока и самое главное — в нем вы научитесь писать код и запросы в БД. Там много практики! По окончании курса вы получите бессрочный сертификат, который котируется во всем мире. Так что всем удачи!
Видео: SQL для тестировщика, как выучить и получить сертификат
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
10 Советов, Как Выучить Язык SQL
Хотите выучить язык SQL? Следуйте этим 10 советам и вы сможете выучить язык SQL в кротчайшие сроки. Начни изучать SQL сегодня!
Обновлено: March 15, 2023

Вы думаете о попытке изучить язык SQL? Данные это все в современном мире. Большинство крупных компаний и веб-сайтов имеют огромные базы данных, которые они используют для информирования о маркетинговых и других деловых решениях. Но как они это делают?
Проще говоря, разработчики используют язык программирования, называемый язык структурированных запросов (SQL), который позволяет им взаимодействовать с базами данных и содержащимися в них данными, а также управлять ими и управлять ими. Увеличение спроса на анализ данных и бизнес-решения, основанные на данных, привело к росту спроса на разработчиков SQL. Это, в свою очередь, привело к увеличению числа людей, пытающихся изучать язык SQL и что такое запросы SQL.
Однако — и я могу сказать из опыта — изучение SQL для чайников не всегда легко. Это очень специализированный язык программирования, что означает, что он используется только для ограниченных задач. Если вы хотите получить работу менеджера по базам данных после того, как научитесь использовать SQL, вам необходимо убедиться, что вы делаете все правильно с самого начала и что вы получаете полное понимание языка.
Чтобы помочь вам в этом, я собрал список из 10 лучших советов, которые помогут вам изучить основы SQL для чайников. Наслаждайтесь!
Совет 1: Поймите основы SQL и для чего он нужен
Теперь, когда вы начали свой путь к менеджеру баз данных и разработчику, пришло время убедиться, что вы понимаете основы SQL и то, для чего он может использоваться. Вы можете закончить курс и понять, что вы не хотите быть разработчиком SQL, если вы не делаете это сейчас.
Вам нужно заняться исследованиями — перейдите на страницу Learn SQL для полного обзора SQL и того, что он делает, — но вот несколько особенностей, о которых вам следует знать:
- Язык SQL — это язык баз данных. Он используется для доступа, управления и изменения данных, но используется только для этого. Если вы хотите стать программистом общего назначения и иметь возможность работать над различными проектами, не изучайте SQL как свой первый язык.
- Хотя разработчик SQL технически является «программистом», вы не сможете писать «программы» на SQL. Все, что вы можете сделать, это получить доступ к данным и управлять ими, как описано выше.
- Изучение SQL не будет легким. Это сложный язык, освоение которого может занять годы, поэтому убедитесь, что вы готовы к этому.
Если вы решите продолжить путь к тому, чтобы стать мастером SQL, то продолжайте читать — следующие главные советы по SQL помогут вам в этом!
Самые Полюбившиеся Статьи
Ищете более подробную информацию по какой-либо связанной теме? Мы собрали похожие статьи специально, чтобы вы провели время с пользой. Взгляните!

Что Такое Дополненная Реальность: Разбираемся в Работе AR
Понимание, что такое дополненная реальность будет важным для изучения новейших технологий. Прочитайте руководство, чтобы узнать необходимую информацию!

Как Стать Учителем: Со Степенью и Без Неё
Мечтаете стать преподавателем? Узнайте, как стать учителем со степенью и даже без неё, а также быть частью сообщества учителей.

Python Или C++: Что Лучше? Давайте Узнаем!
После прочтения этой статьи у вас сложится полное понимание того, какой язык программирования вам лучше выбрать Python или C++.
Совет 2: выберите подходящий онлайн курс
Если вы уже не записались на интенсивный учебный курс по SQL или на курс полного внедрения в информатику, вам нужно начать искать способы изучить запросы SQL в Интернете. Один из лучших способов — через достойный онлайн-курс. Онлайн курсы имеют ряд преимуществ, в том числе:
- Обычно они работают в понятной и простой для понимания форме.
- Большинство онлайн-курсов, в том числе на платформе BitDegree, позволяют изучать SQL в своем собственном темпе. Это означает, что вы не обязаны учиться, когда у вас нет времени или не хотите, но вместо этого вы можете учиться, когда вам это больше всего подходит.
- Онлайн-курсы, как правило, бесплатны или очень дешевы, что отлично подходит для учащихся, у которых нет больших денег, чтобы изучить язык SQL.
Если вы думаете о том, чтобы изучить язык SQL онлайн, я бы рекомендовал вам Интерактивный SQL курс. В этом уроке вы научитесь писать код SQL, как взаимодействовать с базами данных и как можно использовать SQL. Вам также будете практиковаться в онлайн редакторе кода. Как только вы получите базовые навыки SQL, вы сможете перейти к курсу Unity курс по взамодействиям с базами данных. Это научит вас лучшему взаимодействию с базами данных и положит начало в вашей карьере в этой области.

Совет 3: Познакомьтесь со справочными руководствами
После того как вы записались на онлайн-курс, пришло время перейти к более глубокому обучению. Изучая язык SQL в Интернете, вы столкнетесь с понятиями и синтаксисом, которые вы не понимаете или не видели раньше. Когда это происходит, вам нужно погрузиться в их изучение.
Одним из лучших ресурсов, которые вы можете использовать для изучения SQL, является приличное справочное руководство по SQL. Справочные руководства содержат все, что вам нужно знать о языке, его синтаксисе и лучших методах программирования. Моим любимым справочным руководством является Oracle SQL Reference. Он содержит почти 500 страниц высококачественной информации, которая научит вас практически всему, что вам когда-либо нужно. Добавьте в закладки и используйте его, когда вы изучаете или практикуете свой SQL.
Кроме того, страница BitDegree Learn SQL также предлагает широкий спектр информации о SQL. Это может быть хорошим местом для обращения, когда вы знакомитесь с основами SQL. Он предоставляет четкие, краткие объяснения ряда понятий и синтаксиса, оставаясь при этом достаточно простым для начинающих.

Совет 4: Учитесь лучшим практикам
Важно знать, что ваше обучение шагает в ногу со временем. Запросы SQL ничем не отличаются, и уверенность в том, что вы всегда делаете все правильно, поможет вам избежать неприятностей в будущем.
Многие новички перестают учиться после того, как они за короткое время научились программировать. Базовые концепции и синтаксис можно относительно легко выучить, и после этого вы можете подумать, что уже все знаете.
Тем не менее, лениться и писать код низкого качества, возможно, худшее, что вы можете сделать как обучающийся. Практика написания кода SQL без соблюдения передового опыта — это катастрофа. У вас появятся “вредные привычки”, это повлияет на вашу способность писать качественный код в будущем.
Совет 5: Учитесь сообща
Изучать язык SQL может быть довольно скучно, если вы попытаетесь сделать это самостоятельно. К сожалению, не каждый человек достаточно мотивирован и дисциплинирован, чтобы сидеть часами и учить себя чему-то сложному, например, SQL. Однако, хорошая новость в том, что есть много других людей, которые находятся в той же позиции, что и вы. Общение с этими людьми может помочь вам сохранить мотивацию, может помочь вам справиться с трудными проблемами и даже может привести к новым знакомствам!
Есть два основных способа, которыми вы можете связаться со своими коллегами, изучающими SQL. Первое — присоединиться к онлайн-форумам. В таких местах вы сможете задавать вопросы о проблемах, на которых вы застряли, а также использовать свои знания, чтобы помочь менее опытным разработчикам учиться. Microsoft Developer Network — отличное место, чтобы найти помощь по SQL. Кроме того, отправляйтесь в Reddit или поищите в Google форум язык SQL.
Второй — и, на мой взгляд, лучший вариант — это присоединиться к местной группе изучения SQL, в которой регулярно происходят события в реальном мире. Мой любимый способ поиска местных групп — Facebook и Meetup.com. Присоединитесь к группе, начните работать в сети и познакомьтесь с другими людьми, которые заинтересованы в SQL и управлении базами данных. Вы обнаружите, что это облегчит учебу, поможет найти людей, которые будут поддерживать вас в трудную минуту, и даже может в конечном итоге помочь вам найти работу!
Совет 6: Изучайте ошибки в коде и их значение
Когда вы используете язык SQL, вам нужно понять, что означают различные сообщения об ошибках. Устранение неполадок и настройка вашего кода чрезвычайно важны, и понимание ошибок может помочь вам точно определить проблемы и быстро их исправить.
Хотя многие курсы не научат вас непосредственно ошибкам и кодам ошибок, очень важно уделить немного времени их изучению. Центр знаний IBM предоставляет полный список наиболее распространенных ошибок SQL и причин их возникновения. Добавьте страницу в закладки, прочитайте ее и потратьте время на ознакомление с кодами ошибок. Сохраните данную ссылку и обращайтесь к ней, когда у вас возникают проблемы с написанным вами кодом.
Совет 7: Поймите разницу между системами баз данных
Прежде чем вы сможете работать в качестве разработчика SQL или администратора базы данных, вам необходимо узнать о некоторых доступных системах баз данных и о том, как они работают. Существуют сотни систем баз данных, каждая из которых имеет свои плюсы и минусы, которые делают ее подходящей для конкретной цели. Перед вами наиболее встречающиеся базы данных:
- Microsoft SQL Server
- MySQL
- Oracle
- IBM DB2
Каждая из этих систем имеет функции, которые имеют свои случаи использования. Я бы порекомендовал убедиться, что вы знакомы с каждой из вышеперечисленных систем и как они используются. Это сделает вас более трудоустроенным и увеличит ваши шансы получить работу, если вы сможете успешно изучать SQL.
Совет 8: Учитесь, разбирая чужой код
Сейчас вы уже должны знать, как и с чем работает язык SQL, уметь разбираться в справочных руководствах и разбирать возникающие ошибки. Как только вы достигнете этого уровня, один из лучших способов продолжить обучение — это взломать чужой код.
Начните с GitHub или какой-либо другой репозиторий с открытым исходным кодом. Найдите язык SQL для начинающих и выберите что-то интересное, на что вы хотели бы взглянуть поближе. Загрузите код и откройте его в текстовом редакторе.
Теперь вам нужно проработать код и убедиться, что вы понимаете, что делает каждая строка. Делайте заметки, пишите комментарии, и, прежде всего, убедитесь, что вы используете свое справочное руководство для поиска вещей, с которыми вы не знакомы! Такое обучение поможет вам быстро перейти от открытия теоретических принципов SQL к возможности применять свои знания SQL в реальном действии.
Совет 9: Решайте задачи на программированиеTip 9 — Practice With Coding Challenges
Еще один отличный способ попрактиковаться и использовать язык SQL в действии — это решение задач по программированию. Существует множество веб-сайтов, предлагающих сложные задачи, призванные заставить вас задуматься над кодом, который вы пишете. Большинство из этих задач начинаются с набора четких инструкций, с заранее определенной отправной точкой и конечной целью, которую вы должны достичь.
Вам придется разобраться с проблемой и написать код, который позволит вам достичь окончательного решения. На некоторых сайтах есть рейтинговая система, с помощью которой вы можете узнать, насколько хорошо вы знаете язык SQL.
HackerRank — один из моих любимых сайтов, посвященных задачам по программированию. Они предлагают широкий спектр различных задач SQL-программирования, которые можно выполнить в любое время. Я думаю, что они вам также понравятся. HackerRank также проводит регулярные соревнования по программированию. Эти соревнования позволяют писать код с другими программистами в реальном времени. Обычно решение задачи носит ограниченное время, а победители часто получали денежные призы!

Совет 10: Загрузите редактор кода
В отличие от большинства других языков программирования, специальный редактор кода для рабочего стола не является необходимым при работе с SQL. Как вы увидите, когда вы начнете изучать основы SQL, большинство систем баз данных поставляются в комплекте с внешними редакторами кода, которые позволяют вам получать доступ к вашей базе данных и управлять ею. Будучи новичком, вы, вероятно, будете одновременно работать только с одной базой данных, а это значит, что вы сможете использовать их редакторы внешнего интерфейса по умолчанию. Например, система Oracle имеет интерфейс SQL Developer, а система Sybase имеет интерфейс Interactive SQL.
Однако это полезно только в том случае, если вы работаете с одной системой баз данных — что делать, если у вас несколько разных баз данных, работающих в разных системах?
В этом случае может быть хорошей идеей загрузить редактор кода SQL, совместимый с несколькими системами, чтобы вы могли хранить свою работу вместе в одном месте. Одним из самых популярных мультисистемных редакторов SQL с открытым исходным кодом является инструмент DBeaver Universal Database. Этот инструмент совместим со всеми основными системами баз данных, и тот факт, что он является открытым исходным кодом, означает, что вы можете изменить его код так, чтобы он точно соответствовал вашим потребностям.
Помните, что хотя вам и не нужно срочно скачивать редактор кода SQL, когда вы впервые начинаете изучать SQL, знакомство с некоторыми инструментами разработчиков, доступными вам, никогда не помешает.
Самые Популярные Статьи
Взгляните на нашу коллекцию руководств, статей и уроков про платформы для онлайн обучения и массовые открытые онлайн курсы. Всегда будьте в курсе и принимайте взвешенные решения!

Фронтенд Разработчик: Как Освоить Профессию?
Хотите узнать, кто такой фронтенд разработчик? Всё, что должен знать фронтендер вы найдёте в нашем руководстве. Фронтенд разработчик с нуля!

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

Лучшие Курсы Медицинского Программирования: Где Начать?
Любой заинтересованный в динамической карьере в медицинском кодинге должен проверить эти курсы медицинского программирования для начала своего путешествия.
Заключение
Если вы хорошо разбираетесь в компьютерах, наслаждаетесь управлением и анализом данных, а также ищете новую работу, то изучение SQL может стать идеальным местом для начала. Язык SQL, или язык структурированных запросов, — это язык программирования, который нужно изучать, если вы хотите стать администратором базы данных, менеджером или просто хотите заняться анализом данных компании. Он позволяет вам получать доступ, управлять и изменять данные, содержащиеся в базах данных, предоставляя информацию, которая может использоваться для обоснования маркетинговых, стратегических или других бизнес-решений.
Тем не менее, это может быть трудно выучить язык SQL. Вот почему я составил список из моих 10 лучших советов, которые помогут вам учиться. Начните с небольшого исследования SQL и того, что это такое. Запишитесь на онлайн-курс, ознакомьтесь со справочными руководствами и другими ресурсами и начните общаться с другими учениками. Убедитесь, что вы всегда следуете рекомендациям по SQL, попробуйте несколько способов изучения, если вам надоест, и подумайте о взломе чужого кода.
Что бы вы ни делали, помните, что научиться писать код на SQL — это не то, что вы можете сделать за одну ночь. Это требует времени и сил. Начните программировать, не сдавайтесь, а главное, наслаждайтесь!
Оставьте ваше честное мнение
Оставьте ваше честное мнение и помогите тысячам людей выбрать лучшую платформу для онлайн обучения. Все отзывы, позитивные или негативные, будут приниматься, если они честны. Мы не публикуем предвзятые отзывы и спам. Поэтому, если вы хотите поделиться вашим опытом, мнением или дать совет — у вас есть всё необходимое!
Как лучше изучать SQL с нуля

Не тайна, насколько важен навык работы с базами данных, особенно для современных и быстроразвивающихся технологий.
Обычно знание базы данных начинается с знакомства с SQL (Structured Query Language — структурированный язык запросов)
Данный язык обрабатывает все входящие данные, которыми пользователи делятся с сайтом. Все полученные данные хранятся и обрабатываются в базе данных.
Теперь, постараемся рассказать о том, как лучше сделать первые шаги в сторону изучения SQL.
Почему важно знать SQL?
Для начала ответим на вопрос. Почему именно SQL так популярен? По пунктам:
1. SQL имеет огромный спрос на рынке труда. Знание SQL требуется в совокупности к знанию многих языков программирования. Это и является также причиной востребованности знания работы с базами данных.
2. Универсальность — сфера применения крайне обширна. От крупных IT-компаний до гос.учреждений.
3. Плавная кривая обучения. Основное отличие SQL от большинства языков — это то, что SQL имеет структуру на основе поступающих запросов. SQL даёт пользователям инструменты, с помощью которых он сможет удобно управлять базами данных.

Практические советы наших подписчиков по изучению SQL:
Теперь перейдем к практическим советам от наших подписчиков о том, как лучше подойти к процессу изучения SQL:
Ежедневно используя SQL в своей работе, я посоветовал бы начать решать задачи на сайте sql-ex.ru , задачи идут по нарастанию сложности и имеют сопутствующую теорию, следует за теорией в книжки лишний раз идти уже не нужно. Спустя 35-40 задач у вас уже сформируется целостное представление о SQL и уже после этого, можете приступать к соответствующей литературе, что как раз таки после пройденной вами практики будет легко восприниматься. По книгам советующее следующее:
— SQL Полное руководство — описываются все возможности SQL.
— Официальное руководство по PostgreSQL — в случае если выбрали PostgreSQL , то официальное руководство имеет исчерпывающую информацию, более вам вряд ли что понадобится.
— Введение в системы баз данных от автора C.J. Date — максимальное компактное описание того, на чем основывается SQL — разобраны подробно основные понятия, предложены задачи. Хорошая книга.
Книги не особо советую, по своему опыту лишь сужу — они мною или были заброшены или с трудом читались, но знания из них получать мне никакого удовольствия не было, не моё это. Лично я решила приступить к изучению с практики, поэтому:
sql-ex.ru и pgexercises.com — практические задачи , параллельно на данных сайтах также сможете изучить необходимую вам теорию и применить её тут же на практике. Поработать получится как с сложными запросами, так и с примитивными. Как освоите азы SQL, уже думаю можно переходить к книгам, если данный способ получения информации для вас приемлем и вы довольно таки усидчивы. Либо советую искать документацию по интересующей вас СУБД (Система управления базами данных)
Если вы полный ноль в SQL, коим и я был год назад — советую книгу «Освой самостоятельно SQL за 10 минут».
Будет очень хорошо, если вы не просто будете читать книгу, а параллельно заниматься практическим применением полученных вами знаний к примеру на таких сайтах как:
После того, как набьете руку на практических задачах , советую перейти к книге Святослава Куликова “Работа MYSQL, MS SQL SERVER и ORACLE в примерах”. Тут определяетсь с базой данных. Если это SQL Server, то скачиваете на торренте данную СУБД. Если Oracle, то скачиваешь образ для WMvare с их сайта, или используешь их online СУБД.
Подводим основные итоги:
Теория и практика должны быть неразделимы при вашем изучении SQL. Книги и открытые источники теоретической информации это прекрасно, но если полученные вами знания не будут применяться на практике, то вся изученная вами теория будет потихоньку забываться.
Если вас интересует IT его перспективы в РФ ,
публикую также свои статьи и интервью на канале t.me/it_begin
Подписывайтесь, если будет интересно 😉
Поддержать
1 год назад
Реклама, причем некачественная
1 год назад
И да, в довесок.
на работе есть/были несколько имбицилов, которые вдруг решили, что они мега инженеры и могут спроектировать модель. Результат — базёнки, где нет народного сука, НИ ОДНОГО. Форейгн Кея, в реляционке блять. Ни одного форегна. Но и это ещё не всё! На уровне сервиса на инсерте проверяют, а есть ли запись с таким id. Блять
проект росатома умный город
раскрыть ветку
1 год назад
Если это SQL Server, то скачиваете на торренте данную СУБД.
Зочем? С незапамятных времен для MS SQL Server есть две бесплатных редакции — Developer и Express, которые можно скачать прямо с официального сайта.
Теперь перейдем к практическим советам от наших подписчиков о том, как лучше подойти к процессу изучения SQL
Кто эти люди и с какого рожна их мнению стоит доверять?
1 год назад
Пролистал поперек. После «Мария: книги не нужны. приступаю к практике», что можно перевести: я не хочу чё-то там изучать, при любой задаче я буду заёбывать профи, что бы они мне, тупой пизде, объяснили на понятных для меня пальцах, чё такое idef0 без упоминания всей вот этой абракадабра. Вот после этого могу только одно: тс иди на хуй
раскрыть ветку
1 год назад
Ага. И все как один посоветовали один и тот же сайт. Ага. Ага. Я бы посоветовал автору записаться на курсы обучения рекламе, чтобы не гнать настолько очевидную рекламу. И кстати @moderator как такие рекламные посты сочетаются с правилами сервиса?
раскрыть ветку
Похожие посты
2 дня назад

А логические ошибки разработчик должен видеть сам!

4 дня назад

Ответ на пост «Собеседование в IT»
Дело было давно. Устроился в крупную IT-компанию, в один из отделов, занимающийся разработкой своей АРМ-системой. Разработка велась уже более 10 лет и к моменту моего начала уже отсутствовали те, кто всё это затеял. Выделили комп, стол, а под ним тумбочка. В ней оставалось какое-то барахло, сказали выбросить. Разобрав тумбочку я обнаружил книжку с основной документацией на систему для разработчиков. Я довольно быстро освоился и через какое-то время с простых задач перешёл к сложным.
И вот спустя несколько месяцев, обсуждаем одну разработку. Я высказался: ну тут всё просто — в ядре есть поддержка этого и этого, по сути нужно только вызвать функцию *** из модуля ***, помню, это было в документации.
В этот момент я заметил удивлённые лица ведущих программистов: «В какой ещё документации?»
Я достал книжку и показал им, они удивлённо отстали её, видя впервые. Некоторые сотрудники работали в отделе более 5 лет и не знали о существовании таковой, другие же припоминали что-то, но считали что всё давно утеряно. А я думал, что такая книжка есть у каждого или в электронном виде где-то.
6 дней назад

Дикая природа IT удивительна
Взято из телеграмма — Инкогнито

Показать полностью 1
Поддержать
8 дней назад

Абидна

8 дней назад

Ответ на пост «Как я стал программистом в 32 года. Отработал 1 год. Стоит ли оно того?»
Короткий рассказ.
Скорее нет, особенно вначале.
Можно ли получать удовольствие?
Изменяется ли личность?
Да, но у всех по-своему. Иногда это пугает.
Это спокойная работа?
Нифига, нервы нужны крепкие.
Про общение с неприятными людьми можно забыть?
И опять нет, вам хватит руководителей, а заказчики ещё та песня.
Можно ли работать на удаленке?
100% , если вы готовы.
Новые друзья и крутая тусовка прилагаются?
Зависит от выбора компании и отдела в ней.
А что тогда в этом хорошего?
Мой ответ таков, что, умея программировать, я могу наделать себе интересных пет-проектов для души, и чего я всегда желал. Например. Чат бот на языковой модели GPT. Или это. Обучение с подкреплением для биржевой торгашки.
Длинный рассказ.
Я тоже только в 32 стал прогать на работе.
Но не так жестоко было всё. Не с нуля, не из менеджерской роли.
Образование социологическое, диплом по количественным методам. На красную пятёрку. Правда, когда спустя лет 8 я связался с профессором социологии из Урбане-Шампейне, на чьей статье я развивал тему, оказалось, что мой подход был почти полностью калом, с его точки зрения.
А, ну ещё в школе еле вытянул факультатив на бейсике. Вообще с логикой проблемы были лет до 30-35.
6 лет аналитиком данных (эксель), SPSS. И другие статистические пакеты с графическим интерфейсом. Прокачивал скорее матчасть в области анализа, нежели чистую техничку.
Понадобились макросы. Открыл IDE в экселе и прямо такое приятное чувство испытал, когда за долбанными таблицами скрывается ЯП и море возможностей. Visual Basic, если что. Через месяц я написал аж программу, которая прогнозирует продажи и даже общается с 1С.
Потом понадобилось сделать такую штуку для маркетинга, как ассоциированные продажи. Установил R. Про их IDE понятия тогда не имел. Научился в командной строке делать моделирование (a priori). Получилось.
Параллельно прошёл бесплатный курс по SQL , базовые вещи. Начал слегка шурупить в реляционных базах.
На работе застой с повышениями. Плюс антикризисное управление. А у меня кредит большой. Через хаха получил приглашение на мидла статистика. Три вечера читал про проверки гипотез. Собес прошёл. Дали тогда 90 на руки, это 2014 был. Это было не больше, чем я получал. И в карьере бывал и старшим и руководителем группы. Короче, дауншифтнулся конкретно, лишь бы из маркетинговых исследований и анализа свалить.
Сил в 30 лет дофига ещё.
На новой работе начал фигачить нормальную взрослую статистику. Rstudio, и много сложных запросов. Самый прикол — без хороших коллег профессиональный рост очень медленный. Мне дядька у соседнего компа пару раз подсказал по БД и реально как лампочка зажглась в голове.
Потом подняли до старшего, ЗП 115 или 120. Было покомфортнее. Через три года я ушёл по личным причинам плюс менеджеры подпалили мне седло, да и однообразие задач стало добивать просто нереально. Но писал запросы я уже с нормальной оптимизацией.
На новой работе был мидлом с зп 200. Прошёл курс Advanced R (а на ступеньку ниже уже давно прошёл). Курсы от C. a. Там был сложный проект, который я взялся писать на R. За почти полтора года где-то 10-12 тыщ строк. Ушёл по . личным причинам. К меня ещё с эмоциальной стабильностью не всё отлично.
Потом ещё переход на другую работу, там уже были 220 ЗП. Задачи разные, интересные, много исследований. Подключил Python. Ушёл с — бее — Винды и плюсовой среды версионирования на линукс. Наигрался в машинное обучение, глубокие сети. Большие данные немного.
И тут я подзастрял в своей ракушке комфорта. Ну и уже на Python уровень мидла сделал. И 8 лет на R, сениористость детектед.
Выгораний было дофига. В моём случае, в основном, от общения с манагерами. Переход на полную удаленку сделал меня хуже. Хотя через пару лет стало привычно. Как теперь ежедневно бежать в офис на какой-то дейлик я ХЗ!
Не жалею, что ушёл из экселя и маркетинга, там душновато прямо бывало. И ещё раз. Нужны полезные люди вокруг. Меня предупреждали, что в ИТ зае. Ну вы поняли, от однообразных задач. Потом эту же теорию высказал один эксперт: он свалил в Европы за интересной работой, и уже оттуда ныл, что всё уже видел и опять то же самое и тд.
И я вас предупреждаю об этом. А ещё о том, что учить новое надо будет постоянно, если хотите карьерной мобильности. А если вы не гений, то удовольствие от новых вещей вы начнёте получать совсем не сразу а фрустрацию — как раз сразу. А если ещё лид попадётся, повёрнутый на «модненьких штучках», вы будете страдать.
То есть вместо борьбы не на жизнь, а на смерть за руководящую должность я получил через 4 года работу, к которой больше лежит душа. Только живот отрос в процессе.
Показать полностью
Поддержать
9 дней назад
Продолжение поста «Как выйти из IT»
4 месяца прошло с того момента, как я написал пост о том, что собираюсь из программистов в сварщики, ну вернее собираюсь получить профессию сварщика что бы потом, когда-нибудь уйти из ИТ.
Собственно, докладаю по прогрессу :). В колледж я поступил. Курс называется «Сварщик (ручной и частично механизированной сварки (наплавки)» на базе 11 классов. Обучение длится 10 месяцев. Зачисление по результатам конкурса аттестатов. Мой аттестат, как оказалось, далеко не самый плохой :):):)
Обучение очное, с самого утра. Три дня теории по 7-9 уроков, два дня практики, с 9 утра по 2 часа дня. В программе обучение обычной ручной дуговой сварке и сварке полуавтоматом. В качестве факультатива, тем кто особенно интересуется, обещали аргон и импульсно-лазерную.
Так как высшее образование у меня почти профильное, технолог обработки металлов давлением, сходил в учебную часть, написал заявление, что бы перезачли из моего диплома что можно. Чисто, что бы не просиживать штаны на какой-нибудь инженерной графике. Завуч сначала как-то холодно отнеслась к этой идее, а потом, как увидела мой диплом, задала два вопроса, «зачем я к ним пришел» и «не хочу ли я поработать преподавателем» ;););) Договорились, что я доучусь и тогда подумаем про преподавание.
В общем, учусь потихоньку.

Первые в моей жизни вертикальные швы на плоской стальной пластине. Те что посвежее/посветлее, делались справа-налево 🙂
Показать полностью 1
9 дней назад
Как я стал программистом в 32 года. Отработал 1 год. Стоит ли оно того?
Ровно год назад в возрасте 32 лет я получил свой первый оффер и устроился в IT-компанию на должность Junior-разработчика на языке Java, где отработал 3 недели, после чего уволился. Это не история успеха, после которой будут ссылки на какие-либо курсы, это всего-лишь личный опыт человека (то есть меня), который до 32 лет работал инженером в строительной области, но в один момент решивший изменить если не всё, то точно существенную часть своей жизни.
Ранее я подробно рассказывал о том каким был мой путь: как возникли мысли стать программистом в 30+ лет, как и где я учился, а также сколько времени ушло на обучение и насколько сложно было найти первую работу. Если очень кратко, то вот основные тезисы из прошлых постов:
- Бэкграунд в программировании: ноль, но в плане ПК я продвинутый юзер, то есть могу переустановить винду, найти и установить драйвера и вот это вот всё.
- Учился я под присмотром ментора.
- Теорию смотрел на YouTube, либо в дешевых курсах с площадки на букву U.
- Закреплял знания на практике, выполняя небольшие пет-проекты, задания к которым мне выдавал ментор. Если кому-то интересно, то могу скинуть ссылку на задания в комментариях.
- На учебу ушло 7,5 месяцев или 1000 часов обучения.
- У меня была накоплена финансовая подушка, которая позволила полностью отказаться от основной работы и бросить все силы на обучение.
- Сделал 700 откликов на hh, прежде чем получил первое приглашение на работу.
Если не лень читать подробные посты на эти темы, то оставлю ссылки ниже:
- Как я стал разработчиком с нуля в 32 года
- Про первую работу джуном и первое увольнение спустя 3 недели
Так уж получилось, что первая работа оказалось абсолютно не тем, чего я ожидал от работы в новой для себя IT-сфере: легаси-проект, максимально бесполезные (с точки зрения профессионального развития) задачи, а также зарплата, на которую невозможно было прокормить семью. Но мне повезло: спустя 3 недели после того, как я попал на свою первую работу, мне написала HR с другой компании и пригласила на собеседование. Проект на свежих технологиях, зарплата почти в 2 раза выше. И да, меня взяли.
Абсолютно без всяких сожалений я написал заявление «по собственному» и ушел одним днем. Помню, как рядом сидящий джун (студент) мне говорил: «Ну и зря ты увольняешься. Где ты ещё без опыта найдешь работу начинающим разработчиком, так ещё и на такую нормальную зарплату». Согласен, для студента, который живет с родителями, 45000р — это может и нормальная зарплата, но не для семейного человека, за плечами которого жена в декрете, маленький ребенок и съемная квартира.
Итак, я ушел в другую компанию. На новом месте меня всё более чем устраивало: приятный и дружелюбный коллектив, проект с нормально написанным (на первый взгляд) кодом, адекватные моему уровню задачи и зарплата, на которую уже можно хоть как-то жить.
Я попросил читателей моего небольшого блога накидать мне в комментариях вопросов, которые их интересуют, ведь мне есть чем поделиться. Перед началом обучения, да и в процессе обучения я сам искал подобные статьи, так как было безумно интересно узнать: а как оно всё на самом деле в этом вашем IT, так ли всё круто, как нам рисуют маркетологи различных IT-курсов, как проходит день разработчика и реально ли работать на берегу океана с макбуком на коленях? Кстати, идея работать на берегу океана — это отстой на мой взгляд, какая бы это работа ни была. А теперь отвечу на вопросы читателей, разбив их на 3 блока: обучение, работа, общие вопросы.
== Про работу ==
Среди коллег есть те, кто вошел в эту профессию в возрасте 35+ или даже 40+ ?
Как ты себя ощущал в первые дни на работе?
В принципе на любой новой работе мне в первые несколько недель всегда не очень комфортно. Но если раньше это было в большей степени связано с новым коллективом, то здесь новым было практически всё. Когда мне дали первую задачу, я смотрел в экран монитора и вообще не понимал что от меня требуется, что происходит в этом коде и как сформулировать вопрос, чтобы меня не посчитали совсем уж тупым. Я работал в офисе и ежедневно по утрам проводились встречи (которые называют дэйликами), где каждый член команды рассказывал над чем работает в данный момент и какие есть проблемы. Для меня это было максимально стрессовое время, так как мне было непонятно абсолютно всё, но как задать конструктивный вопрос я не знал, поэтому был немногословен.
Расскажи про рабочий процесс: как получаешь задачи, от кого, как и перед кем отчитываешься, несколько примеров своих задач, состав команды?
В первые дни на первой работе мне дали ссылку на репозиторий, чтобы я ознакомился с проектом. Я смотрел на громадные классы со сложной бизнес-логикой, знакомился с БД, смотрел какие таблицы там есть, связи между ними. Первой задачей было найти и устранить баг: было задвоение информации в базе данных. Нужно было SQL-командой удалить задвоенную информацию. Кстати, на первой работе, где я отработал 3 недели — я не написал ни одной строчки кода, соответственно не сделал ни одного коммита. Всё задачи были связаны с БД.
На своей текущей работе задачи получаю из бэклога или тех.долга в Jira. После завершения задачи происходит код-ревью другим разработчиком (все ревьюят друг друга), после чего задача переходит в стадию тестирования. Каждый отчитывается о статусе своих задач на ежедневном созвоне. В команде 3 бэкенд-разработчика (один из них Senior, другой выполняет роль архитектора), 3 тестировщика, 1 проект-менеджер.
Примеры задач: отпилить от монолита часть логики и сделать отдельный микросервис, настроить логирование в нужном формате, настроить трейсинг, написать микросервис, который по расписанию будет забирать данные из БД, отправлять на сторонний API, получать данные и записывать в БД, привести в соответствие swagger и документацию в Confluence, покрыть код unit и интеграционными тестами. На прошлой работе писал ci/cd пайплайны для сборки образов и деплоя.
На второй работе в числе первых задач нужно было написать Kafka-продюсеры и консюмеры с несложной логикой обработки сообщений, а также изменить поля у DTO-моделей.
Была ли помощь более опытных коллег?
В первые дни на любой из работ я всегда спрашивал кого я могу спрашивать по проекту. Это нормально, особенно в первое время. Я всегда, когда это было необходимо, получал помощь или как минимум совет от более опытных товарищей. Старался спрашивать вопросы именно по самому проекту и его логике, а не по техническим моментам, которые можно легко загуглить, типа: «как переключиться на другую git-ветку».
Было ли разочарование из категории «ожидания — реальность». Когда работа на деле оказывается не настолько интересной, как кажется в начале пути?
Многое зависит от проекта и команды. Было разочарование, когда я попал на первую работу на легаси-проект с ужасным кодом. Но что касается второго и третьего места работы, то реальность совпала с ожиданиями. Работа над пет-проектами, как оказалось, была максимально похожа на реальную работу. Только всё на порядок сложнее, но это компенсируется зарплатой, а также возможностью обсудить проблему с коллегами. Ощущение, что я продолжаю обучаться, но теперь за это ещё и платят. В общем разочарования нет, работаю по большей части в удовольствие, но тот самый первый восторг от работы программистом уже ушел, привык что ли.
Расскажи какие трудности были на работе или они есть до сих пор?
Я бы не назвал это трудностью, скорее специфика отрасли — постоянно приходится изучать что-то новое, гуглить или спрашивать Chat GPT. На новом (уже третьем) месте работы практически каждая новая задача требует от меня того, чтобы я посмотрел часовой урок/доклад на YouTube или хотя бы прочитал статью на эту тему. В начале меня пугала эта неизвестность, сейчас это уже норма. Я больше начинаю переживать, если задачи закрываются, а я не узнаю при этом ничего нового себя, ведь это никак не способствует росту и, соответственно, повышению зарплаты. Собственно именно поэтому я ушел со второго места работы, так как было однообразное перекладывание json’ов и crud-операции.
Как происходило вливание в коллектив?
Я успел поработать как в офисе, так и удаленно. Мне было комфортно начинать работу в офисе, когда видишь коллег вживую и можешь пойти поболтать с ними на кухне за кружкой чая. А вот начинать работу в коллективе, когда слышишь только голоса (созвоны без камер) лично мне менее комфортно, но со временем привыкаешь и создается впечатления, что знаком с человеком лично. С одним из коллег договорились встретиться через пару недель, он приезжает отдыхать в город, где я живу.
Я не скрываю того факта, что стал разработчиком относительно недавно, все абсолютно нормально к этому относятся (даже на этапе собеседований). Никаких ущемлений не заметил. Более того на прошлой работе есть несколько людей, кто пришел в разработку в 35, 37 и даже в 40+ лет.
Что ожидает новичков, о чем мы не догадываемся и чему нам стоит больше уделять внимания? Насколько начал расти скилл и начал ли вообще расти?
Возможно, ожидают скучные, неинтересные и однотипные задачи. Повторюсь, зависит от проекта. Но когда ищешь первую работу, выбирать не приходится, обычно соглашаешься на первое предложение.
На счёт роста скиллов: пет-проекты – это, конечно, хорошо, но только на реальной работе можно столкнуться с проблемами высоконагруженных приложений и большого объема данных. Естественно, в процессе решения таких проблем растет скилл, а также скилл работы в команде, ведь приходится взаимодействовать с другими разработчиками, аналитиками, тестировщиками, инженерами devops.
Интересно было бы узнать какой уровень разработчиков, которые встретились вам на работе, насколько им вообще интересно расти, повышать ЗП, менять должности, насколько они активны?
Джуны, миддлы, сеньоры, архитекторы. Встретил только одного парня, который активно проходил собесы и в итоге ушел в другое место с повышением ЗП в 2 раза. Основная масса коллег — работает на одном месте годами с небольшой индексацией ЗП каждый год. Как сказал мне один из коллег: «Для меня прохождение собеседований — это выход из зоны комфорта. Тут я всё знаю, коллектив устраивает, а что будет в другом месте? Вдруг там всё плохо, что прибавка к ЗП не компенсирует этого?».
Отличался ли стек в вакансии, от стека на работе, по вашему опыту?
В моем случае всё, что было заявлено в описании вакансии оказывалось правдой. О легаси также открыто писали в вакансии и говорили на собеседовании.
Как растет понимание процессов, технологий после того, как устроились на работу, в сравнении с обучением или возможно наступает однообразие и роста нет?
Год назад ничего не знал о процессах, сейчас общее понимание присутствует в контексте всего цикла жизни проекта: анализ, планирование, разработка, тестирование, развертывание, поддержка. За 10 месяцев работы наступило некоторое однообразие в плане задач и остановка активного развития, что сподвигло меня на смену компании и даже языка программирования (Java -> Kotlin).
Какие ощущения после года работы? Считаете ли вы, что смогли достаточно узнать, чтобы закрепиться плотно в этой сфере и теперь уверенно развиваться вперёд, не боясь конкуренции по сравнению с теми, кто заканчивает институты по этой вакансии?
Определенно появилась некоторая уверенность в своих силах. Многого не знаю, но как показывает опыт — во всем можно разобраться, ведь в интернете в любом случае уже кто-то решал подобную или похожую проблему. Периодически пишут HR с предложениями пройти собеседование, иногда соглашаюсь и прохожу для опыта.
== Про обучение ==
Как считаете, ваш опыт работы инженером как-то повлиял на скорость обучения Java-разработке?
Безусловно повлиял. Инженерный склад ума, дружба с математикой, любовь к различного рода логическим задачкам, а также прошлая инженерная деятельность позволили в достаточно сжатые сроки освоить необходимый материал для трудоустройства. Но у меня есть знакомый (37 лет), который был максимально далек от математики, компьютеров и был скорее гуманитарием, а не технарем, но он также, как и я, прошел этот путь, просто это заняло в два раза больше времени.
Что бы ты посоветовал знать 100% перед первой работой?
Всё, что обычно указывают в вакансиях. Для Java-стека это: собственно сама Java (можно не углубляться в многопоточку, но всё остальное знать обязательно), SQL, Hibernate, Spring, Docker, Git, Maven (или Gradle). Чтобы выглядеть лучше большинства новичков стоит познакомиться хотя бы с одним из брокеров сообщений и микросервисной архитектурой.
== Общие вопросы ==
Насколько сложнее (проще) работать разработчиком по сравнению с твоей предыдущей работой?
До того как я перешел в разработчики, я работал инженером производственно-технического отдела. С технической точки зрения программирование, конечно, на порядок сложнее. Но с точки зрения условий работы, психологического комфорта и удовлетворенности — старая сфера деятельности сильно уступает.
Так ли там хорошо, как кажется со стороны?
Комфортные условия труда, зарплата, возможность удаленной работы, различные «плюшки» в виде ДМС, оплаты обучения и спорта — всё это имеется в большинстве крупных компаний. Не могу предугадать что представляют себе о подобной деятельности другие люди, но мои ожидания оправдались. Многое, конечно, зависит от компании, коллектива и проекта, поэтому вполне возможно, что кому-то повезет меньше или наоборот — больше.
Если бы финансовая подушка закончилась, а вы были бы не готовы начинать работать, что бы вы сделали?
До перехода в IT я был самозанятым инженером ПТО и имел подработку в виде репетиторства, то есть я имел возможность брать заказы и работать в удобном для себя графике. Если бы финансовая подушка закончилась, то, скорее всего, возобновил бы поиск заказов по старой деятельности и репетиторству, но не прерывал бы обучение.
Нравится ли вам IT профессия? Или уровень заработка все же на первом месте? Не думаете ли уйти в frontend или стать full-stack разработчиком?
Пока нравится. Если бы платили одинаково в строительной сфере и в IT, то с высоты своего опыта всё равно выбрал бы разработку. Frontend абсолютно никак не привлекает и ещё в процессе написания пет-проектов и работы над визуальной частью, я четко понял, что это не мое.
Насколько большая разница между Junior и Middle разработчиком?
Зависит от компании. Мое мнение: если прошел собес на Middle-разработчика, получаешь зарплату как Middle-разработчик, значит ты и есть Middle-разработчик)
Какие планы на будущее: очень рады, что так все получилось и уверены, что теперь нашли то, что искали или не так все однозначно, иногда подумываете между тем, стоило оно того или нет?
За свои 33 года я перепробовал достаточно много профессий и работ: официант, крупье в казино, инженер-проектировщик, инженер ПТО, риелтор, репетитор, пробовал открывать небольшой бизнес на набережной, открывал интернет-магазин настольных игр, пробовал вести бизнес с партнером и вот теперь я пишу код. Как я говорил ранее, на данный момент всё нравится, ожидания оправдались и искать что-то новое пока не тянет. Возможно, через 5-10 лет найду что-то более интересное для себя.
Удаётся ли соблюдать пресловутый work-life balance? Сколько часов в день вы выделяете на саморазвитие помимо работы?
До недавнего времени удавалось и всё было достаточно «лайтово». Как только устроился в новую компанию, где незнакомый для меня стек технологий, баланс немного нарушился, так как приходится даже после работы смотреть различные курсы и читать статьи. Может быть 2-3 раза в неделю уделяю по 1-2 часа на обучение.
Как справляешься с синдромом «самозванца»?
Глядя на чужой код или слушая коллег на созвонах, я очень часто ловлю себя на мысли, что я многого не знаю или не смог бы написать такой красивый с архитектурной точки зрения код. Иногда мне кажется, что я очень долго сижу над задачей и что другой разработчик справился бы гораздо быстрее меня. Как только синдром самозванца начинает мешать мне жить, я запрашиваю обратную связь о своей работе у тех людей, кто ставит и проверяет мои задачи. И во всех случаях (даже на той работе, где я отработал всего 3 недели) мне говорили: «Всё ок, быстро схватываешь». Также стараюсь перестать сравнивать себя с другими разработчиками, но пока не очень получается.
== Заключение ==
В заключении хочется сказать, что IT точно не для всех. И я сейчас не про умственные способности, а скорее про склад характера, усидчивость, любовь в решению логических задачек. Меня увлекло программирование на начальном этапе обучения и не было такого, что я что-то делал через силу. Наоборот, мне всегда хотелось побыстрее прийти домой, сесть за комп, ведь в голову пришла идея как можно реализовать вон ту штуку в пет-проекте или как решить алгоритмическую задачу. Поэтому сейчас я не испытываю проблем с тем, что мне «не хочется идти на работу».
Но большинство людей из моего окружения считает это невероятно скучным занятием и даже ради относительно высокой зарплаты никто не готов потратить около 1000 часов на обучение, после чего возникнет проблема с поиском первой работы. И их можно понять, зачем менять свою сферу деятельности, где ты уже профи на что-то непонятное и, возможно, неинтересное для тебя? Но если вам это нравится, то никогда не поздно. И моя история – далеко не единственное подтверждение этому.
P.S. Мелкие заметки делаю в телеге (https://t.me/lovecodebro), на Пикабу публикую редко и только лонгриды.
Показать полностью
10 дней назад

Чему-то новому научился
Вот решил поделиться своим маленьким достижением.
Написал рендерер на python. Без каких бы то ни было зависимостей кроме numpy. т.е. без OpenGL и т.п.
Знающие, наверное, посмеялись.
Но я не ставил целью какое-то практическое применение. Только любопытства ради, давно было интересно как это всё работает.
Постепенно. Шаг за шагом. Пилил по одной фиче.
Прогресс выглядел примерно так.
1. Сначала был только однонаправленый свет.

2. Потом появилась перспектива




6. Правильные текстурки



Ещё много чего можно сделать. Может, буду допиливать, как время будет.
Сильно не пинайте. Чукча не писатель.
Показать полностью 8
10 дней назад

Первый день стажера на галере:

11 дней назад
В сеть попали кадры с производства болтов, которые разработчики кладут на безопасность

Показать полностью 1
11 дней назад

Когда сел разбираться в С++:

Показать полностью 1
12 дней назад

Удержание игроков с помощью метрик

На примере моей игры «Эпик Шутер» расскажу насколько может быть полезно интегрировать метрику в вашу игру для площадки Яндекс Игры.
Игра на движке Unity. Интеграция SDK Яндекс Игр с помощью плагина PluginYG.
Я сделал эпичный шутер под ритмичную музыку, вы можете попробовать поиграть в него для понимания описанного в этой статье анализа. Анализ состоит в том, чтобы понять на каких моментах игроки покидают игру и исправить недочёты. Это можно узнать благодаря сервису Яндекс Метрика.
Я не пытаюсь рекламировать свою игру здесь, поиграть в неё предлагаю лишь для понимания описанного. Знаете, Яндекс Игры льют трафика гораздо больше, чем вы сможете привлечь рекламируя свою игру сами. Но об этом поговорим в другой раз, а сейчас о том — как может помочь интеграция метрик в вашу игру.
В начале я расскажу что было после релиза игры, какие вскрылись недостатки, моменты на которых люди выключают игру. Поделюсь и другими причинами непопулярности игры (всё относительно конечно).
Затем расскажу что стало после исправления недочётов, которые мне показала метрика, и как преобразились результаты после обновления игры. Забегая вперёд — мне удалось удержать более 50% игроков!
Релиз игры
Наверное, всем интересно услышать сколько можно заработать на своей игре. Делюсь результатом, сколько принесла игра за две недели после релиза:
3450 рублей. Были по какой-то причине пики и до 1000р в день, но в итоге игра остановилась на доходе 50р в день.
Интересно то, что практически половина игроков иностранцы. Должно еще с них что-то прийти (пока нет информации по доходу с иностранцев).
Вернёмся к метрикам.
Я повесил метрики на загрузку уровней, финиш, и на ключевые триггеры в тренировочном уровне. И вот что получилось:
22% выходят из игры сразу после включения первого уровня. Может быть игра тормозила, а может игроков не устроил нож в руке на первых секундах вместо огнестрела. Отсутствие противников или всплывающая подсказка могла стать причиной для выхода из игры.
Но послушайте по какой причине отвалились следующие 50% игроков! На моменте где нужно перепрыгнуть между домами 50% игроков выходят вероятно только потому, что при прыжке у персонажа в воздухе нет инерции и ощущения не привычные. Значит даже такая мелочь может отпугнуть 50% игроков Яндекс Игр.
Далее 13% не доходят до оружия автомата.
Потом еще 30% покидают игру при входе в дом, видимо, из-за всплывающей подсказки. Наверное, тут игрокам уже нужен экшон, а не табличка с текстом.
Зато 2-й и 3-ий уровни проходили больше, чем первый тренировочный. Значит часть игроков проходили игру на второй раз или первые уровни.
Основные вероятные причины почему игра не стала популярной:
Тематика игры. Без трендовой темы в Яндекс Играх очень сложно выстрелить.
Обложка/иконка. CTR обложки низкий. Думаю, детям нужны более яркие краски и, опять же, популярные персонажи на картинке.
Оптимизация. Она как я считаю у игры отличная. Но загруженность локации для веба слишком высокая. Для веба нужно еще меньше разных деталей, объектов, текстур. И главное, по умолчанию в игре стоят средние настройки в которых есть тени и post process AO сильно нагружающие систему. Наверняка дети даже не заходят в настройки что бы сменить графику. По умолчанию лучше ставить низкие настройки графики, на низких в большинстве случаев игра будет идти плавно.
Обучение в игре. Зачастую обучение важно, но в данной игре этому практически посвящён целый уровень. Сейчас дети привыкли к тиктокам, им нужен ежесекундный контент. Тем более это браузерные игры, их можно переключить очень быстро и без установки. Хорошим вариантом для обучения будут подсказки не обрывающие игру, причем важно с первой же секунды дать игроку весь самый интересный геймплей.
Вес игры. Хоть всё и хорошо ужато, деталей много. Сейчас вес составляет 45 мб. В среднем загрузка у игроков составляет 18 секунд. Я считаю, желательный вес до 25 мб, загрузка до 10 сек. для аналогичной игры.

Метрики, две недели после релиза.
После обновления
Я сделал обновление, в котором исправил проблемные моменты.
Результаты:
После запуска первого тренировочного уровня выключали игру 22% игроков, теперь 18%.
Там, где уходили 50% игроков, теперь уходят лишь 4% .
Следующие триггеры:
Было 13%, стало 5%.
Было 30%, стало 4%.
И т.д…
Что касается доходов игры и её продвижения на площадке:
По посещаемости график немного растёт вверх, но это может быть связано с чем угодно. Тут не следовало ждать сильных изменений, ведь обложка игры не была заменена.
Плейтайм на игрока вырос с 10 минут до 13-ти.
Доход вырос с ~50р в день до ~100р.
Вывод можно сделать однозначный — метрики могут хорошо показать проблемные места игры, которые можно успешно устранить.
Сделать такие метрики на самом деле очень просто. Как вести такой же анализ:
Есть понятная и расширенная информация об этом в документации PluginYG (Раздел «Яндекс Метрика»). Там понятно описано как внедрить такие же метрики.
Как я получал такие цифры в процентах:
Например, в игре есть триггер 1 и триггер 2, которые отображаются в метриках в цели triggers. На первом триггере 600 визитов игроков (значит до этого момента дошли 600 игроков). На втором триггере 500 визитов. На любом сайте находим разницу двух чисел в процентах. В данном случае разница получается 16.67%. Значит между первым и вторым триггерами ушло 16,67% игроков.

Метрики после обновления
Заключение
Метрики — очень полезная штука, и совсем не сложная в использовании. Если, конечно, с плагином и документацией к нему.
Подписывайтесь на меня и на мой телеграм, чтобы узнавать такие полезные новости первым. Я так же буду делиться и очень полезной информацией, и очень срочной! Да, срочность, это один из самых главных факторов успеха, когда нибудь и об этом напишу.
Показать полностью 2
12 дней назад

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

▸ Я может быть какое то обновление пропустил, но про «Сеть» в Кенши не слыхал
Увидев этот странный текст, я из интереса перешел по ссылке, а там безумие в чистом виде!

▸ Даже в Kenshi есть свой филиал «Без баб»

▸ А как вам такое? Холодные осадки в Kenshi осознали себя и из погодных условий превратились во фракцию

▸ А Шеки решили позабыть свой культ битвы и стать торговцами тех-охотниками
Для тех кто еще не понял — эта статья написана нейросетями!
Написана убого, коряво, без намека на логику, но с нужными SEO элементами — тот самый информационный мусор. А самое забавное, что мусор вынесен на первую позицию поисковой выдачи Яндекса. Да что там, 5 из 15 ссылок на первой странице поиска вели на такие же плоды нейросетей разной степени бредовости.
И в этом ключевая проблема нейросетей — слишком высокая скорость генерации контента. Она априори будет выше, чем создание уникального контента от живого автора. Ужасное качество итогового продукта меркнет на фоне человеческой жадности и лени.
Какая задача у информационного контента в 21 веке? Решить проблему пользователя? Нет — привлечь трафик и желательно здесь и сейчас, ведь трафик это деньги. Поэтому количество такого контента будет расти в геометрической прогрессии.
Масштаб проблемы и как она будет решаться в будущем?
На мой взгляд ключевой момент — это умение отличать материалы живого человека и материалы сделанные нейросетью. И я говорю даже не про умение пользователя, а про умение машинных систем.
● Для самих нейросетей встает вопрос обучения. Chat-GPT потребляет информацию из интернета и недавно с него сняли ограничения 2021 года (все что вышло позже этой даты нейросеть не учитывала). Если на системном уровне не будет фильтра, то в обозримом будущем качество ответов заметно упадет, ведь они будут составляться на основе ошибочных материалов созданных нейросетью до этого.
● Google, Яндекс и другие поисковики в какой то момент столкнутся с недоверием аудитории, ведь перестанут решать основную задачу пользователя — поиск полезной информации. Пока что их инструменты оценки качества контента слишком примитивны, что доказывает пример приведенный в начале статьи (1/3 выдачи поиска загажена мусором нейросетей). Единственный возможный критерий отбора доступный в данной ситуации — отдавать приоритет оригинальным статьям от живого автора.
А что в итоге?
Я пишу эту статью для того, чтобы люди более критично относились к информации в интернете и поддерживали живых авторов. Экспертного контента в сети все меньше и нельзя позволить ему утонуть под лавиной бреда нейросетей. В конце концов за ошибкой человека стоит мыслительный процесс, а за ошибкой нейросети — случайный алгоритм. И пока что к человеку доверия больше, чем к машине.
Ждем, когда техно-жрецы найдут решение этой проблемы и оно вскроет еще десяток других. А пока подписывайся на мой гоблинский блог — тут много интересного про разработку игр и нейросети.
P.S. По поводу моего месячного отсутствия. Несмотря на навалившийся ворох дел — я не забрасывал изучение инструментов для разработки игр. Просто написание статьей не вписывалось в мое плотное расписание. В ближайшие пару недель постараюсь выложить новую статью про Godot.
ВСЕМ WAAAGH!

Показать полностью 5
14 дней назад

КАК ВЫУЧИТЬ АНГЛИЙСКИЙ ЗА ГОД. СЕРИАЛЫ И СЛОВАРЬ
— В данной статье исключительно мой опыт, возможно данный метод не подойдет Вам, а возможно поможет как и мне
— На момент начала изучения языка у меня не было и уровня A1, последний тест показал B2. Выучить язык безусловно нельзя, так он учится всю жизнь даже носителями, но базовые потребности в языке закрываются
— Моя цель изучения была: понимать англоязычный контент, способность общаться на общие темы и не теряться заграницей
Инструменты которые будем использовать
1) Полиглот.
32 урока. 1 урок в неделю. Примерно 1.5 часа нужен на урок или же 12 минут в день
Позволяет выработать автоматизм на основные грамматические конструкции


Бесплатная программа на любые устройства от мобильных до компьютеров (только на айфон она стоит $30, но это можно обойти купив общий аккаунт за $1.5, что сделал я), пользующаяся популярностью у полиглотов, медиков, и вообще всем, кому необходимо учить большой обьем информации (как пример, я готовился к сессии на юридическом факультете тоже с ней)
Приложение, которое позволяет учить любую информацию на основе интервального повторения. Здесь можно учить слова, фразы и так далее.Есть похожее приложение, но менее эффективное: Quizlet
Резюмирую, Анки — возможность заниматься на основе интервального повторения, которое основано на принципе активного повторения информации в определенные моменты времени, когда забывание информации становится более вероятным. Это помогает закрепить знания и улучшить их запоминание. Anki использует алгоритмы, которые адаптируются к вашим индивидуальным потребностям и способностям запоминания. Он автоматически определяет, когда и как часто показывать вам карточки для повторения, чтобы максимально эффективно использовать ваше время и усилия.

Но Anki — это просто оболочка. Пустая программа. Для которой нужен учебный материал. Вы можете либо создавать свои карточки, либо использовать готовые колоды (по-крайней мере я видел на Торренте кто-то выкладывал свои, но мне они не особо понравились)
Вот чем пользовался Я:
2.1) Колода Cambridge Dictionary для Anki
Лучший по-моему мнению словарь на рынке!
У Вас в колоде будут наиболее употребляемые определения слов, перевод, несколько примеров предложений, из которых вы поймете, в каком контексте лучше использовать лексику, озвучка, частотный список.
Вам будут даваться слова от наиболее встречаемых до не очень
И это логично учить сначала наиболее встречающие слова. Представьте что вы знаете 3.000 слов, но они связаны с космосом, и ваш знакомый, который тоже знает 3.000 слов, но из повседневной жизни . Конечно ему будет легче. Важно не количество, а качество.
И учим по 10-13 новых слов в день, что в год = 5.000 новых слов 🙂
2.2) Сериалы, которые встроены в Anki
Всего 400 часов учебного материал для прокачки аудирования. Занимался я по дороге на учебу.
Переведены все сезоны и серии таких сериалов как
• How I met your mother (Как я встретил Вашу маму)
• Office (Офис)
• Sex and the city (Секс в большом городе)
• Friends (Друзья)
Первые сезоны окажутся самыми мучительными, но потом прекрасное ощущение понимания членораздельной речи — и это прекрасное ощущение!!
Работает только на мобильных устройствах!
Несмотря на трудоемкость создания таких карточек с сериалами, они очень эффективны, подписывайтесь, в следующем посте расскажу как создавать их, и Вы сможете смотреть любимые сериалы и фильмы
Работает колода таким образом:
Резюмируя серия разбита на много маленьких кусочков, сначала вы видите просто видео, и пытаетесь вслушаться, понять и перевести, далее, вам показывается этот же кусочек, но уже с английским и русскими субтитрами, и вам становится уже чуть легче услышать о чем говорят, одновременно вы сопоставляете рус и англ субтитры, чем-то похоже на метод раздельного чтения
Чтобы установить колоду:
• Файл .APKG закиньте в ANKI
• Нажмите на кнопку «Синхронизация», и не выходите с приложения, пока идет синхронизация
Надеюсь, правила Пикабу разрешают оставлять ссылку, так как два моих прошлых поста снесли почти в первые минуты после опубликования
Ссылка на ДЕМО-версии колод:
(Тут вы можете попробовать и поиграться с первыми сериями сериалов и словарем Cambridge)
К сожалению, колоды весят много, и мне не хватило места на облаке для публикации здесь, поэтому я создал чат в тг и опубликовал их там!
Если хотите получить полные версии колод, или возникнут вопросы, то пишите в telegram @ gawdwise

Показать полностью 4 2
Поддержать
15 дней назад
Построй свой VPN который не заблокируют

Всратый мем, чтобы поднять пост в горячее. Ведь судя по всему так работает лента на пикабу.
Пару дней назад я запостил в комментариях микро-статью о том как поднять свой VPN за 15 мин. Там инструкция значительно легче, но сам VPN не идеальный.
Она стала относительно популярна, но не обошлось без тонн говна конструктивной критики.
Сегодня я исправлюсь и помогу настроить более совершенный VPN, который будет лишен недостатков Wireguard.
Короче, будем использовать Outline VPN, резкий, дерзкий, мимикрирует под HTTPS, а значит его будет сложнее заблокировать.
Outline VPN обеспечивает высокий уровень безопасности и конфиденциальности для пользователей, шифруя и аутентифицируя их трафик с помощью современных алгоритмов. Outline VPN также не ведет журнал трафика пользователей или не собирает никаких личных данных. Outline VPN был проверен двумя независимыми фирмами по безопасности, чтобы подтвердить его качество и надежность.
Настраивается где-то за 20 мин.
Я держу все свои проекты на TimeWeb уже не первый год, по этому могу рекомендовать их.
https://timeweb.cloud/r/cr09221(ссылка реферальная, дают 300р если будете пользоваться, но как регистрироваться и где выбирайте сами). Подойдет ЛЮБОЙ сервер и хостинг.
До СВО я пользовался Digital Ocean, великолепный сервис, но сейчас российской картой там не оплатить + курс доллара не в нашу пользу.

Саня, ты справишься!
Инструкция:
- Регистрируемся тут https://timeweb.cloud/r/cr09221
- Выбираем «Создать» -> «Облачный Сервис» -> “Маркетплейс” ->”Docker”
- Выбираем регион сервера
Тут внимательно, выбираем САМЫЙ дешевый тариф, ОТКЛЮЧАЕМ бэкапы, они стоят дорого и нам нахер не сдались.
4. Жмем “Заказать”.
5. Скачиваем менеджер и клиент Outline VPN. https://getoutline.org/get-started/#step-1 (не реферальная ссылка).
Тут делаем вдох и выдох, я пишу эту инструкцию для новичков, не для бородатых сисадминов, не для синьоров-помидоров у которых за плечами сотни лет администрирования, прошу быть дружелюбными. Если ты(вы) новичок, и тебе кажется, что дальше сложно, — ты(вы) справишься. Просто делай как я, если что-то не получается, пиши в комментариях я помогу.
1. Открывает консоль на ПК (win+r —> cmd —> жмем ok)

Здесь копируем IP и пароль
2. В консоли пишем ssh root@85.193.91.112 далее вставляем пароль

Так выглядит консоль после авторизации
3. Открываем скаченный ранее Outline Manager
4. Выбираем четвертый пункт “Set up Outline anywhere”
5. Копируем текст из верхнего поля и вставляем в консоль. Подтверждаем установку жмем «Y» и нажимаем Enter.

Примерно это вы должны наблюдать в консоли
6. Ждем. Нам нужно дождаться появления желтой строки.

7. Копируем желтую строку вместе с фигурными скобками и вставляем во второе поле Outline Manager. После этого жмем «DONE»

Так выглядит успешное подключение
8. Копируем ключ.
9. В Outline клиенте жмем «Add Server» и вставляем и жмем «ADD SERVER».
10. Вы великолепны.
Я готов к очередной порции конструктивной критики, цель моих постов дать людям возможность пользоваться ресурсами, к которым нет доступа из их стран. Для меня таким ресурсом стал ChatGPT. Так же VPN использую, чтобы работать в путешествиях и не раздражать службу безопасности.
Ты можешь лайкнуть этот пост по двум причинам:
- Тут нет ссылки на телеграм
- Это вроде как авторский контент, а не копипаст баянов.
- Я на самом деле хочу, чтобы больше людей узнали, что это просто и легко.
Напоминаю, что тут более простой вариант, но не без минусов: предыдущий пост
Комплимент для тех кто дочитал: Ты настолько прекрасен, что Роскомнадзор может тебя заблокировать.
По сути точно так же, скопировать ключ и вставить в приложение.
Там буквально пара кликов
Показать полностью 7
19 дней назад
Не альтернатива пикабу или возвращение в 2007 (с минусами) — проект Talkvio. [Обновления]
Обновление в новом проекте Talkvio построенном на базе форума с более 250 000 сообщений из далекого 2007 года и уже большим количеством новых. Отличается наличием минусов и возможность указывать свое отношение к автору (что выгодно отличается от обычного лайканья постов). Есть пометки моего (авторский контент), поиск, блочный редактор с черновиками, черновики для комментариев, оповещения, фильтры для тех кто интересуется топами комментариев или постов, многочисленные разделы со свежим/лучшим/комментируемым/авторским, реверсные и прямые отображения комментариев, подписки, избранное, увеличивание изображений, сайт доступен на 2 языках, имеет темную и светлую тему, и многое другое. В будущем ресурс будет уделять гораздо больше вниманию авторскому контенту.
Ссылка на проект тут — https://talkvio.com/ [заходите, регистрируйтесь, читайте или пишите].
Доступ к настройкам профиля теперь можно получить как со своей страницы так и с меню справа.
![Не альтернатива пикабу или возвращение в 2007 (с минусами) - проект Talkvio. [Обновления] Сайт, Социальные сети, Интернет, Разработка, IT, Интересные сайты](https://cs14.pikabu.ru/post_img/2023/10/10/10/1696958818146425698.jpg)
![Не альтернатива пикабу или возвращение в 2007 (с минусами) - проект Talkvio. [Обновления] Сайт, Социальные сети, Интернет, Разработка, IT, Интересные сайты](https://cs14.pikabu.ru/post_img/2023/10/10/10/1696958854176718283.jpg)
![Не альтернатива пикабу или возвращение в 2007 (с минусами) - проект Talkvio. [Обновления] Сайт, Социальные сети, Интернет, Разработка, IT, Интересные сайты](https://cs13.pikabu.ru/post_img/2023/10/10/10/169695911714881823.jpg)
Показать полностью 3
Поддержать
19 дней назад

Связный список насмешек

Показать полностью 1
23 дня назад

Сам написал, сам погонял: Как я написал 3D-гонки «на жигулях» за неделю, полностью с нуля?

Статьи про инди-разработку игр — это всегда интересно и занимательно. Но статьи про разработку игр с нуля, без каких-либо игровых движков — ещё интереснее! У меня есть небольшой фетиш, заключающийся в разработке минимально играбельных 3D-демок, которые нормально работали бы даже на железе 20-летней давности. Полтора года назад, в мае 2022 года, я написал демку гоночной игры с очень знакомым всем нам сеттингом — жигули, девятки, десятки, и всё это даже с тюнингом! В этой статье я расскажу вам о разработке 3D-игр практически с нуля: рендерер, менеджер ресурсов, загрузка уровней и граф сцены, 3D-звук, ввод и интеграция физического движка. Интересна подробнейшая статья формата «старого Пикабу» о разработке игры с нуля? Тогда добро пожаловать!
❯ Предыстория
На момент написания статьи, я всё ещё остаюсь достаточно юным — буквально 5 дней назад мне исполнилось 22 года. Но если откатиться на 4 года назад и вспомнить момент наступления моего совершеннолетия, то на ум приходят сразу два значимых события: отец приходит в один день и говорит «открывай юлито, будем смотреть авто за 40 тыщ рублей». Понятное дело, что за эту сумму (~700$ по тому курсу) особо не разгуляешься, поэтому мой выбор пал на карбюраторную «семерочку», свою ровесницу (2001 год) синего цвета. Приехали с батькой смотреть на машину, обкатали и приняли решение — надо брать!

С тех пор я ездил на своем «тазе» и горя не знал — машинка не ломалась, ни разу не подводила, вложений в себя не требовала, а я начал все больше увлекаться автомобилями и изучать тематический материал. Со временем я полюбил и другие российские модели автомобилей, но особенно мне нравился АвтоВАЗ. В один момент, вспомнив про популярный и провальный некогдаLada Racing Club, мне захотелось написать «гоночки на жигулях» самому, причём полностью с нуля. А поскольку нормального арта для города у меня не было, игру я решил назвать просто и понятно: «Ралли-кубок ТАЗов» 🙂

Поём всем Хабром!
Но с чего начинать писать такой объемный проект самому? Тут нам, конечно же, нужен план. У меня уже был готовый самопальный 3D-фреймворк для игрушек, который я использовал в одной из прошлых демок: арена-шутер от первого лица с модельками из модов для Quake. Фреймворк был вполне рабочим, но требовал некоторой доработки для использования в «кубке тазов».

На момент начала разработки гоночки у меня уже были готовы следующие фишки:
- Рендерер: Direct3D9, причём полностью FFP — для того, чтобы игра запускалась даже на встройках Intel, где нормальной поддержки шейдеров до HD-серии вообще не было. Практически все текстурные техники работали через комбайнеры — дальний предок пиксельных шейдеров, где программист оперировал целыми стадиями пиксельного конвейера, а не писал программу напрямую, что накладывало множество ограничений. Поддерживались: многослойные материалы, однопроходной сплат-маппинг для плавного текстурирования ландшафтов, отражения в кубмапах, плавный морфинг (вершинная анимация) с линейной интерполяцией между кадрами, MSAA (это заслуга GAPI), отсечение невидимой геометрии по пирамиде видимости и примитивный альфа-блендинг с ручной сортировкой.
- Звук: 3D-звук на DirectSound с позиционированием относительно источника звука, ускорением и т. п. Тут моей заслуги особо нет, кроме загрузчика wav-файлов я ничего не писал.
- Ввод: WinAPI + DirectInput. Клавиатура опрашивалась с помощью классического GetAsyncKeyState, в то время как геймпады с помощью DirectInput. Была и абстракция осей ввода — дабы не адаптировать управление под кучу разных контроллеров.
- Менеджер ресурсов: достаточно примитивен. К менеджеру ресурсов я отнесу и загрузчики — фреймворк поддерживал модели в форматах SMD (не анимированные меши, формат Half-life) и MD2 (анимированные меши, формат Quake 2, строго один материал на один меш), звуки — wav и простенький самопальный формат конфигов. Стандартный набор: трекинг ресурсов на слабых ссылках, пул ассетов для исключения дублирующейся загрузки и т. п.
Фреймворк выдавал не слишком крутую графику:

Зато был очень простым «под капотом», имел довольно неплохую расширяемую архитектуру и в целом, на нем можно было запилить что-то прикольное. Где-то за неделю я запилил вот такую демку шутера от первого лица:
Игрушка даже на VIA UniChrome работала — последователе всем известного S3 Savage/S3 Virge!
Минимальное приложение выглядело примерно так:

Приведённый выше код нарисует модельку с текстурой перед лицом игрока. Всё просто и понятно. Однако, как это всё работает «под капотом»? Давайте попробуем разобраться:
❯ Основа и рендерер
В своих играх я стараюсь придерживаться одной архитектуры: есть условный класс Engine, который управляет созданием платформозависимых окон, организацией главного цикла игры и инициализацией подсистем. Поскольку в одном процессе обычно запущен только один экземпляр игры (исключение — выделенные авторитарные серверы с комнатами, на манер Left 4 Dead), сам по себе Engine является синглтоном и содержит в себе ссылки на все необходимые подмодули.
Как я уже говорил выше, сам по себе рендерер построен на базе графического API Direct3D9. Выбор DX9 обусловлен его распространенностью на железе прошлых лет, хорошей совместимостью (DX9 легко запускается на железе времен DX8 и даже DX7) и иногда лучшей производительностью на видеочипах от ATI. По сути, всё начинается с создания контекста или устройства в терминологии DirectX: в параметрах создания контекста указывается ширина и высота вторичного буфера, желаемый уровень сглаживания MSAA, видеорежим и частота желаемая частота обновления экрана.
При создании контекста есть свои нюансы, которые необходимо учитывать — например, большинство встроенных видеокарт не поддерживают аппаратную обработку вершин (D3DCREATE_HARDWARE_VERTEXPROCESSING), из-за чего создание контекста будет заканчиваться ошибкой без соответствующего флага, разные видеокарты поддерживают разные форматы буфера глубины и трафарета (сейчас видеокарты нативно даже 24х-битный RGB для рендертаргетов не умеют использовать, только выравненный XRGB), а видеокарты до GF5xxx-GF6xxx не поддерживали Pure режим D3D, который предполагает, что программист возлагает всю обработку ошибок на себя, при этом количество проверок в самом GAPI уменьшается, благодаря чему мы получаем небольшой выигрыш в производительности.
Важно так же отметить такой аспект, как управление ресурсами. К ресурсам видеокарты в терминологии старых GAPI относятся текстуры и буферы (как вершинные, так и индексные). В OpenGL особо нет такого понятия, как Device Lost. Если пользователь сворачивает ваше приложение из полноэкранного режима, или, например, видеодрайвер крашится — то GL сам должен позаботится о перезагрузке ресурсов обратно в видеопамять (исключение — Android и iOS, на мобилках контекст не уничтожится, но ресурсы будут выгружены и их хендлы станут некорректными). У D3D есть событие Lost, которое вызывается при потенциальной потере контекста — и его тоже нужно грамотно обрабатывать. Поэтому в D3D есть несколько пулов:
- Managed: D3D9 сам сохраняет копию текстуры или геометрии в ОЗУ, а затем при потере контекста пересоздаёт аппаратные буферы и перезагружает нужные данные сам.
- Default: данные загружаются напрямую в видеопамять (в терминологии D3D — AGP memory), или, если видеопамяти не хватает — в ОЗУ, если видеокарта, конечно, поддерживает Shared Memory Architecture.
- System: загрузка ресурсов только в ОЗУ. Этот пул обычно не используется в играх — слишком медленно.
И грузить данные желательно в пул Default. Иначе при относительно большом количестве ресурсов, игра начнет «жрать» ОЗУ не в себя (пример — Civilization 5). При потере контекста, ресурсы нужно перезагружать с диска «на горячую»!
Переходим к самому важному — отрисовке геометрии. Для задания внешнего вида объектов на экране, используются так называемые материалы, которые содержат в себе данные о том, какая текстура должна быть наложена на объект, насколько объект отражает свет, какая техника должна использоваться и т. п. В современных движках система материалов обычно гибкая, поскольку шейдеры могут принимать самые разные параметры. В нашем случае шейдеров нет вообще, набор параметров фиксирован и зависит от видеокарты: стандартные техники типа повершинного затенения по Фонгу/Гуро, цвет объекта, туман и т. п.
Формат материалов в фреймворке выглядит вот так:

Однако даже без шейдеров была возможность сделать относительно гибкую систему материалов — с помощью комбайнеров, как это делала Quake 3. Самые первые 3D-ускорители не поддерживали смешивание нескольких текстур за один вызов отрисовки, поэтому некоторые игры шли на ухищрение: к примеру Quake вручную сортировал геометрию по отдаленности без использования буфера глубины, он просто… накладывал альфа-блендингом ту же самую геометрию с затененной текстурой освещения (лайтмапа). Это называется многопроходной рендеринг. Комбайнеры, которые появились ближе к концу 90-х, позволяли смешивать несколько текстур с помощью различных операций (Add, Sub, Mul, Xor и т. п.), а также умножать финальный цвет на определенный коэффициент. Именно комбайнеры я использовал в своём фреймворке для реализации некоторых относительно сложных эффектов — например, плавное смешивание текстур на ландшафте:
Основная проблема комбайнеров — каша из стейтов, поэтому код выглядит не особо презентабельно. Входная текстура-маска выглядит вот так:

Переходим к отрисовке. По сути, за рисование полигональной геометрии отвечает один метод — DrawMesh, с несколькими перегрузками (в идеале — основной должен принимать матрицу трансформации, а остальные принимать обычные World-space координаты, из которых будет построена матрица трансформации). В оригинале метод рисует геометрию с помощью DIPUP, поскольку практически вся геометрия в игре была анимирована (и анимация, само собой, обрабатывалась для каждой вершины софтварно, на ЦПУ, поэтому я не видел разницы между перезаливкой геометрии на GPU каждый кадр и DIPUP), однако в одном из бранчей фреймворка я переписал отрисовку статику на обычный DIP. Обратите внимание, что DIPUP для комплексной геометрии на старых GPU будет слишком медленным — когда-то этим страдал графический движок Irrlicht.
В более позднем бранче добавилось отсечение по дистанции от «глаз» игрока и по пирамиде видимости.
Переходим к анимации. Есть три основных метода анимации геометрии в играх:
- Скиннинг: анимация вершин относительно скелета модели. Очень хорошо подходит для различных персонажей. Весь скелет является иерархией, где каждый элемент трансформируется относительно позиции родителя, что позволяет легко интегрировать «скелетку» в граф-сцены самого движка (Unity — самый яркий пример). Иногда скелетку используют и для «неоживленных» предметов — например, анимация подвески авто.
- Морфинг: классический способ анимации суть которого заключается в «запекании» всех кадров в виде множества мешей. Затем игра интерполирует вершины между кадрами анимации, благодаря чему достигается эффект плавности.
- Object-Transform: классический метод иерархической анимации, очень похож на скиннинг, только трансформируются не сами вершины, а привязанные к ним объекты. Применялась, например, во многих играх на PS1 и в GTA III (замечали отсутствие плавности в местах сочленений персонажей — это и есть OT).
Я не умею нормально работать с скиннингом моделей в 3D-редакторах и обычно не юзаю скиннинг в своих игрушках — для небольших демок хватает обычного морфинга с интерполяцией. Если интерполяцию не использовать, то анимация будет выглядеть топорно (в Quake 1 при отключении CVar’а такая и была):