# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 |
![]() |
|
|||
Мы начинаем работу с Шаблоном проектирования Active Record (активная запись), который предусматривает выполнение основных операций с базой данных. Это значительно упрощает процесс создания программ. Отчёт отправил: 10558. Иван Воронин Выполнено за 10 мин. [Показать отчёт] Научился: Повторил пройденное Сложности: найти время Комментарии: Разрабатывал аналогичную систему для оптимизации использования ресурсов серверной части одной из игр, чтобы в БД было меньше запросов, так же кэшировались недавние записи по этой же схеме. Так же использую аналогичную систему при разработке сайтов, которые не используют какие либо движки БД. Очень интересно посмотреть на реализацию данного шаблона проектирования, сильно ли он отличается от моей версии или нет. |
|||||
2 | Active Record - User - Imitation |
|
|||
Мы продолжаем знакомство с шаблоном проектирования: "Active Record". На этом уроке мы создадим проект "ActiveUser", после в корне проекта создадим папку "users", а уже в ней будем создавать файлы записей пользователей. Отчёт отправил: 10558. Иван Воронин Выполнено за 20 мин. [Показать отчёт] Научился: Ничему Сложности: найти время Комментарии: Аналогичный вариант использую при разработке сайтов, если нет необходимость в использовании больших БД, отличный урок "Пользователя ПК" =) идём дальше. |
|||||
3 | Active Record - User - Create |
|
|||
Мы продолжаем знакомство с шаблоном проектирования: "Active Record". На этом уроке мы начинаем создание программы "ActiveUser", для доступа к файлам пользователей в папке "users". Отчёт отправил: 10558. Иван Воронин Выполнено за 20 мин. [Показать отчёт] Научился: Повторил пройденное Сложности: найти время Комментарии: Вместо удвоенного обратного слэша можно использовать один слэш, он работает корректно как в винде так и в никс системах, тоже самое и в php. Всё коротко и ясно, идём дальше. |
|||||
4 | Active Record - User - Select |
1 тест |
|||
Мы продолжаем знакомство с шаблоном проектирования: "Active Record". На этом уроке мы реализуем считывание данных пользователей из файла в папке "users". Отчёт отправил: 10558. Иван Воронин Выполнено за 30 мин. [Показать отчёт] Научился: Повторил пройденное Сложности: найти время Комментарии: Реализовал метод update(), так же реализовал передачу логина в виде параметра в метод select(). Да, аналогичную систему я реализовал для работы с аккаунтами/профилями на некоторых сайтах. Очень удобно, когда нет надобности в большом количестве данных, для которых уже удобнее использовать БД. Но пока не то, что было реализовано для игровых серверов. Всё коротко и ясно, идём дальше, может ещё что-то интересное будет =) |
|||||
5 | Active Record - User - Delete |
|
|||
Мы продолжаем знакомство с шаблоном проектирования: "Active Record". На этом уроке мы реализуем обновление данных пользователей и удаление данных о пользователе. Отчёт отправил: 10558. Иван Воронин Выполнено за 25 мин. [Показать отчёт] Научился: Повторил пройденное Сложности: найти время Комментарии: Да, я так подумал, лучше при апдейте не передавать параметры, так как это будет громоздко, особенно когда параметров будет дофига, поэтому убрал передачу параметров, которую реализовал в прошлом уроке и оставил только строчку create(); так как именно так и реализовал в прошлом уроке, это было очевидно =) В методе delete() добавил строчку file.delete() в условие if, так как этот метод возвращает булевое значение, удалось удалить или нет, тем самым реализовал сообщение в чате по этому поводу. (см. скриншот) По поводу супер-тестирования ничего особого в голову не приходит, так как не очень понял что именно подразумевается под этим словом: если нагрузку или скорость работы, то как было сказано на одном из прошлых уроков, можно создать цикл генерации кучи аккаунтов, создание, удаление, обновление и т.д. замерив время потраченное на это. Если что-то более глубокое, то это рассматривается далее по курсу Шаблонов, пока до этого дела не дошёл, поэтому пока данные виды теста не проводил ни разу, мне до сих пор хватало личных тестов в виде логов, чтобы отлавливать баги, если вдруг ПО странно себя ведёт. |
|||||
6 | Active Record - User - Randoms |
1 тест |
|||
Мы продолжаем знакомство с шаблоном проектирования: "Active Record". На этом уроке мы организуем супер тестирование нашей программы, для начала создадим 1000 записей случайных пользователей. Отчёт отправил: 10558. Иван Воронин Выполнено за 45 мин. [Показать отчёт] Научился: Повторил пройденное Сложности: найти время Комментарии: Модернизировал все методы в классе User() чтобы проверялся путь на корректность, наличие файла, чтобы случайно не перезаписать и т.д. Имена генерируются немного иначе, тем самым при генерации 1000 записей, попалось 5 дубликатов, о которых было написано в консоли и они небыли перезаписаны, потому-что были созданы в прошлых итерациях. |
|||||
7 | Active Record - User - Select all |
|
|||
Мы продолжаем знакомство с шаблоном проектирования: "Active Record". На этом уроке мы создадим 10_000 записей случайных пользователей, после чего реализуем поиск по заданным условиям. Отчёт отправил: 10558. Иван Воронин Выполнено за 45 мин. [Показать отчёт] Научился: Повторил пройденное Сложности: найти время Комментарии: Реализовал поиск самых богатых, самых молодых и самых богатых среди молодых. Реализовал вспомогательный метод, для корректного округления double значений, а то всё же проскакивали более двух знаков после запятой, что очень не красиво выглядело при формировании таблицы да и вообще, никто напильником не будет зарплату с одного цента спиливать =) Можно ещё оптимизировать, чтобы процесс работы с большим объёмом файлов был быстрее, но времени и так не мало потратил. Идём дальше. |
|||||
8 | Active Record - User - Update all |
1 тест |
|||
Мы продолжаем знакомство с шаблоном проектирования: "Active Record". На этом уроке мы реализуем несколько поисков по нашей базе из 10_000 записей случайных пользователей. Отчёт отправил: 10558. Иван Воронин Выполнено за 45 мин. [Показать отчёт] Научился: Повторил пройденное Сложности: найти время Комментарии: Для каждого метода получения необходимой информации добавил вспомогательный метод отображения это самой информации в красивой таблице. Вместо возвращения самого молодого и т.д. пользователя использовал ArrayList() так как если по зарплате рандом не попал из-за малого количества сгенерированных пользователей, то по году рождения их было более 1, а выводить только одного не верное решение (см. скриншот). Предварительно удалили все записи и запустил все методы с нуля, и уместились на экране все фазы. Добавил отображение информации во время индексации и удаления пользователей для наглядности. Я думаю подобные методы обработки базы пользователей, можно спокойно перенести в класс User(), по аналогии с методом selectAll(). Мини курс по Активным записят отличный, но он аналогия того, что я реализовал сам и использую при реализации некоторых сайтов. Но при реализации данного метода на игровых серверах не хватает системы кэширования часто используемых пользователей, дабы уменьшить нагрузки на БД и увеличить скорость работы серверов в целом. з.ы. Хотел добавить систему кэширования, чтобы ускорить работы с файлами пользователей и обновлять их только в том случае, если они были изменены в кэше (ОЗУ), но так подумал, что это может быть реализовано как VIP урок или что-то типо, да и времени и так не мало потратил на этот урок, так как было сложно остановиться оптимизировать его и наводить марафет =) |
|||||
9 | ФИНАЛЬНЫЙ УРОК |
без видео 4 теста |
|||
Поздpaвляю! Твoя зaдaча - прoверить cебя и пpойти тест, см. вкладку "Тест". Напиши отзыв или видеообзор по этому видеокурсу. Отчёт отправил: 10558. Иван Воронин Выполнено за 15 мин. [Показать отчёт] Научился: Повторил пройденное Сложности: найти время Комментарии: Отличный шаблон проектирования, очень хорошо подходит для разработки сайтов, где нужен самый дешёвый хостинг. Так же отлично подходит для оптимизированной работы с БД, если немного доработать его =) |
|||||
Итого: 9 видеоуроков |
1 час. 13 мин. 7 тестов |
8 чел. | |||
Финалисты: Иван Воронин, Сергей Соколов, Andrej Petrunev, Tekashnik, Dmitry Sinitsin, Yefim, Anatoli, Tom . |