Дата | Видеоурок | Результат | |
---|---|---|---|
Доска объявлений Главная страница - оформление - стильный логотип | + 7 | ||
Загрузил два изображения в формате .ico и .png. Файл .ico переименовал в favicon.ico и разместил в корне сайта. Файл .png переименовал в logo.png и добавил на главное меню рядом с пунктом меню "Доска объявлений". |
|||
Доска объявлений Главная страница - оформление - смотрим все изображения | + 8 | ||
Вывел все изображения выбранного объявления на страницу. Реализовал выбор изображения "в стиле авито" при срабатывании события hover над миниатюрой изображения. |
|||
Доска объявлений Главная страница - оформление - ловим цвет пикселя | + 7 | ||
Изменил цвет фона меню на #ee8208. Познакомился с инструментом Пипетка в браузере Firefox. Узнал про сайты для определения цвета пикселя. Для выбора цвета использовал сайт sanstv.ru |
|||
Доска объявлений Главная страница - оформление - дизайн элементов базовой страницы | + 8 | ||
С помощью CSS изменил цвет главного меню сайта на синий. При выборе элемента меню, цвет его фона меняется на зеленый. Изменил информацию в footer страницы. |
|||
Доска объявлений Главная страница - оформление - дизайн объявления | + 7 | ||
Попрактиковался в CSS для оформления страницы, перенёс поле "информация" в правую часть страницы, оформил вывод полей "цена", "город", "контакты" в виде таблицы. |
|||
Доска объявлений Главная страница - подробности - расширяя информацию | + 4 | ||
С помощью механизма миграции изменил тип столбца info в таблице bulletins с varchar(255) на longtext. Добавил новое объявление по продаже дома, в котором разместил более объемную и подробную информацию в поле info. Текст взял по на основе реального объявлении на авито. Применил функцию nl2br к столбцу info при сохранении объявления. |
|||
Доска объявлений Главная страница - подробности - больше подробностей | + 5 | ||
Добавил вывод полей (главная фотография "аватарка", цена, город, контактная информация и дата публикации) в представлении view-bulletin. |
|||
Доска объявлений Главная страница - подробности - ссылки и заготовка представлени | + 9 | ||
Создал новое действие view-bulletin и соответствующее представление. Добавил ссылки на вызов действия. Вывел в представлении заголовок и информацию об объявлении. |
|||
Доска объявлений Изображение - удаление - удаление файла и записи | + 6 | ||
Через ajax передал номер изображения на сервер в действие setdelete. Реализовал удаление файла из папки изображений и записи из таблицы photo. |
|||
Доска объявлений Изображение - удаление - ни шагу без подтверждения! | + 5 | ||
Добавил обработчик при нажатии кнопки удаления фотографии. В обработчике вызывается функция подтверждения, которая запрашивает у пользователя подтверждение для удаления фотографии. |
|||
Доска объявлений Изображение - аватарка - как стать главной | + 7 | ||
Добавил обработчик нажатия по ссылке "Сделать главной", реализовал передачу данных с помощью ajax на сервер, где через действие setavatar установил аватарку для объявления. |
|||
Доска объявлений Изображение - аватарка - работа над ошибками связей | + 6 | ||
Исправил ошибку в действии actionIndex по выбору id. Удалил все записи из таблицы photo, загрузил через интерфейс сайта новые фотографии для объявления по продаже автомобиля. Добавил описание к каждой фотографии. |
|||
Доска объявлений Изображение - аватарка - вывод на главной странице | + 11 | ||
Установил значение номера изображения в поле avatar для объявления по продаже автомобиля. Реализовал вывод изображения ("аватарки") на главной странице сайта. При указанном значении в поле avatar информация о пути к изображению берется из поля link таблицы photo. Если в поле avatar пусто, то на главную страницу выводится изображение по умолчанию. |
|||
Доска объявлений Изображение - JS - извлечение методом ajax | + 9 | ||
С помощью ajax реализовал обращение к серверу и загрузку поля info для выбранного изображения из таблицы photo базы данных. |
|||
Доска объявлений Изображение - JS - сохранение информации в базу | + 7 | ||
Научился использовать ajax для передачи данных из программы на JavaScript на сервер. Заполнил поле информация под каждой фотографией объявления, передал информацию на сервер и сохранил в таблице photo поле info для каждой фотографии. |
|||
Доска объявлений Изображение - JS - глобализация | + 10 | ||
Перенес JavaScript-код из представления в отдельный .js файл. Добавил в представление /photo/index скрытое поле для ввода информации. После нажатия кнопки "Управление" и при выборе пункта меню "Информация" становится видимым скрытое поле под выбранным изображением. Рядом с полем появляется новая кнопка "галочка" для скрытия поля. |
|||
Доска объявлений Изображение - JS - немного теории и пижонства | + 11 | ||
Создал тестовое представления для знакомства с JavaScript. Разместил в представлении скрытое поле ввода и кнопку. С помощью JavaScript и jQuery научился показывать и скрывать поле ввода при нажатии на кнопку. Попутно научился изменять текст на кнопке. |
|||
Доска объявлений Изображение - управление картинками | + 12 | ||
Научился создавать выпадающий список меню, добавил в него пункты "Информация", "Сделать главной", "Удалить фото". |
|||
Доска объявлений Изображение - сохранение пути в базу | + 9 | ||
Реализовал сохранение пути загруженного изображения в таблице photo. Проверил работу сайта для двух изображений объявления по продаже автомобиля. |
|||
Доска объявлений ПРОМЕЖУТОЧНЫЙ ВИДЕО ОБЗОР | + 7 | ||
На этом курсе я начал знакомство с фреймворком yii для создания сайта доски объявлений. Попрактиковался в языке php, увидел как в этом языке программирования создавать классы, методы. Фреймворк yii хорошо помогает в разработке сайта, модель MVC встроена в сам фреймворк. Узнал про механизм миграций, с помощью него создал таблицы в базе данных. Попутно самостоятельно разрабатывал сайт на языке Си. На верхнем скриншоте сайт php+yii, на нижнем скриншоте сайт на языке Си. На видео я показываю сайт на языке Си. Курс понравился подходом, который начал Евгений Витольдович - "делай как я". По этому курсу можно с полного нуля без знаний php и yii начать разрабатывать свой сайт. Причем с каждым последующим уроком больше входишь во вкус, как говорил Дмитрий Синицын, "сериал затягивает". В дальнейшем для реализации сайта доски объявлений можно добавить поиск по объявлениям, разные тематики, возможность оставлять комментарии. |
|||
Доска объявлений Изображение - загрузка файла на сайт | + 11 | ||
Научился загружать файлы с помощью метода post. Добавил к имени файла время его загрузки с помощью функции time. Загрузил все 5 изображений автомобиля Lada Priora в папку images. |
|||
Доска объявлений Изображение - загрузочное представление | + 7 | ||
Создал новое действие actionAdd для PhotoController, добавил для него представление, в котором выводится форма. В форме разместил кнопку для загрузки файла, текстовое поле для ввода информации и кнопку отправки данных. |
|||
Доска объявлений Изображения - модель формы | + 5 | ||
Создал класс модели PhotoForm, добавил в него поля file, link, info и методы rules и attributeLabels. |
|||
Доска объявлений Изображения - где живут картинки | + 10 | ||
Нашел в интернете изображение "по умолчанию", выбрал как у Валерия. Создал папку, разместил в ней это изображение. В представлении изменил адрес, вместо placeholder указал путь и файл через переменные. |
|||
Доска объявлений Работаем над ошибками - YII2 в помощь | + 7 | ||
Проверил работу дебаггера Yii, придумал ошибку. На верхнем скриншоте слева на строке 33 в функции getBulletins допустил опечатку, вместо $currSession написал $currSesion. В результате справа в окне браузера сообщается о неопределенной переменной currSesion и указывается место в коде, где выполняется обращение к этой переменной. Посмотрев немного выше, на строке 31 можно увидеть определение переменной currSession и становится понятно, что была допущена опечатка. Результат исправления ошибки показан на нижнем скриншоте. |
|||
Доска объявлений Изображения - работа с моделью | + 4 | ||
Выполнил поиск фотографий по переданному номеру объявления, передал найденные фотографии в представление. Добавил в представление кнопку "Добавить фото". |
|||
Доска объявлений Изображения - снова MVC | + 6 | ||
С помощью gii создал модель PhotoRecord, добавил PhotoController с действием actionIndex и его представление, которое выводит <h3>Изображения</h3>. |
|||
Доска объявлений Изображения - микс из миграций | + 10 | ||
С помощью механизма миграций создал новую таблицу photo и добавил в таблицу bulletins дополнительный столбец avatar. |
|||
Доска объявлений Объявление: запрос - в функцию & кнопка для изображений | + 4 | ||
Добавил кнопки "Фото" для объявлений. Нашел по 5 изображений для каждого объявления по продаже дома, автомобиля и детской коляски. |
|||
Доска объявлений Объявление - рефакторинг редактирования | + 8 | ||
Добавил адреса href-ссылок для кнопок "Редактировать". Реализовал редактирование объявлений с последующим сохранением в базе данных. Изменил цену детской коляски с 5000.23 на 4000.23 |
|||
Доска объявлений Объявление - статусный рефакторинг | + 7 | ||
Создал новую функцию для установки статуса объявления. Перенес в нее весь код по изменению состояния объявления. В трех прежних функциях вызываю новую функцию. |
|||
Доска объявлений Объявление - скрыть нельзя удалить | + 7 | ||
Заменил пустые адреса # ссылок на /bulletins/wait?id= и /bulletins/delete?id=. Теперь для объявлений появилась возможность цикла перехода между состояниями wait, public, delete. |
|||
Доска объявлений Объявление - публикация на главной странице | + 7 | ||
Вывел на главную страницу список всех публичных объявлений от всех пользователей. Узнал как можно использовать placeholder для картинок. |
|||
Доска объявлений Объявление - всё на публику | + 5 | ||
Добавил ссылки для кнопок "Опубликовать", создал новое действие public для контроллера BulletinsController. Повторил как получать текущее время. После нажатия на кнопку "Опубликовать" текущее время сохраняется в поле date_pub выбранного объявления и его статус меняется на 'public'. |
|||
Доска объявлений Объявление - список | + 5 | ||
Добавил в базу новое объявление по продаже детской коляски в г. Гусляр. Написал функции для загрузки из базы данных объявлений со статусами wait, public, delete. Во вкладке черновики вывел все объявления со статусом wait. |
|||
Доска объявлений Объявление - сохранение в черновик | + 6 | ||
В этом уроке я повторил как получать данные формы через post запрос и как добавлять новую запись в таблице базы данных. Заполнил поля формы для добавления новой бюллетени, данные выбрал как у Валерия, "Продается дом в г. Гусляр и т.д." |
|||
Доска объявлений Объявление - форма добавления объявлений | + 6 | ||
Добавил в контроллер BulletinController действие addbulletin. Создал для этого действия представление: разместил в нем форму с двумя колонками. Для заголовков полей ввода использовал метки из модели BulletinForm. |
|||
Доска объявлений Объявление - поля для пользовательских форм | + 7 | ||
Создал модель BulletinsForm с полями title, info, contacts, city, price. Добавил проверку на заполненность полей. Указал названия для меток в attribute_labels. |
|||
Доска объявлений Объявление - ограничение доступа | + 5 | ||
Настроил доступ к /bulletins/index только для выполнившего вход пользователя. При попытке гостя пройти по этой ссылке, он перенаправляется на страницу входа. Добавил запись в таблицу во вкладке черновики. Оформил ссылки в виде кнопок. Для иконки "галочка" использовал источник Google Icons. |
|||
Доска объявлений Объявление - функциональный дизайн страницы | + 4 | ||
Добавил кнопку "Добавить объявление". Ниже разместил таблицу с вкладками "Опубликованные", "Черновики" и "Удаленные". |
|||
Доска объявлений Объявления - контроллер, представление и много записей | + 5 | ||
Создал новый контроллер BulletinsController, добавил для него представление при переходе по адресу /bulletins/index. Ссылка доступна только авторизированного пользователя. |
|||
Доска объявлений Объявления - создание базы и модели | + 7 | ||
Создал файл для миграции таблицы bulletins, указал в этом файле требуемые поля. Применил миграцию, в базе данных появилась новая таблица bulletins. С помощью генератора gii создал класс BulletinsRecord. |
|||
Доска объявлений Что доступно Юпитеру? | + 6 | ||
Сделал пункт меню "Регистрация" видимым только для гостевого пользователя. Пункт меню "Информация о пользователе" появляется только для авторизированных пользователей. |
|||
Доска объявлений Красивая аутентификация на сайте | + 5 | ||
В этом уроке я изменил названия для меток полей формы, перевел их на русский язык. Добавил флажок для запоминания входа пользователя. Если флажок установлен, информация о входе сохраняется в течение суток. Если сброшен - браузер помнит о пользователе только во время сессии. |
|||
Доска объявлений Новый пользователь - сохранение нового пользователя | + 9 | ||
Научился передавать данные из формы в программу, проверять их на корректность, добавлять запись в таблицу базы данных, перенаправлять пользователя на указанную страницу. |
|||
Доска объявлений Новый пользователь - дизайн формы: поля и колонки | + 4 | ||
Добавил в форму три новых поля: фамилия, имя, отчество и кнопку для отправки данных. В модели UserForm добавил названия для всех меток полей. |
|||
Доска объявлений Новый пользователь - дизайн формы начало | + 5 | ||
Добавил форму с тремя полями ввода и соответствующими метками. Первое поле для ввода логина, два других для ввода пароля и подтверждения пароля. |
|||
Доска объявлений Новый пользователь - модель для формы | + 7 | ||
Создал новую модель UserForm. Добавил функцию проверки полей формы - все поля проверяется на не пустое значение. Поле пароль и подтверждение пароля дополнительно проверяются на эквивалентность. Через вторую функцию можно получить значение атрибутов label для полей формы. Добавил атрибут label "Login" для поля username. |
|||
Доска объявлений Новый пользователь - заготовка и меню | + 4 | ||
Добавил действие add для контроллера User. Создал представление для действия add. В меню добавил новый пункт "Регистрация". Пока что оставил свой пункт меню "Информация о пользователе" для тестирования сайта. Заготовка для добавления нового пользователя готова, идем дальше :) |
|||
Доска объявлений Пользователь - кто зарегистрирован сейчас? | + 6 | ||
Научился обращаться к данным сессии, получать текущего зарегистрированного пользователя. Для тестирования сайта добавил второго пользователя в таблицы user и userinfo. На видео демонстрация работы сайта при входе двух разных пользователей. |
|||
Доска объявлений MVC - информация о пользователе | + 9 | ||
Создал файл модели user, в котором через SQL-запрос возвращается информация о таблице user по указанному id. Аналогично создал модель для таблицы userinfo для получения информации по user_id. Контроллер /user/index обращается к обеим моделям, получает результат их работы и передает данные представлению. Представление отображает логин и фамилию пользователя. |
|||
Доска объявлений MVC - немного теории | + 7 | ||
Создал файл для контроллера user, добавил в него обработку действия index. Создал требуемое представление для нового контроллера. Для удобства навигации по сайту добавил меню, в котором разместил ссылку на запуск контроллера user и действия index. В коротком видео демонстрация перехода по ссылкам и результат работы контроллера. |
|||
Доска объявлений Информация о пользователе | + 5 | ||
Создал миграцию, заполнил ее необходимыми данными, применил миграцию и добавил новую таблицу userinfo в базу. С помощью PhpMyAdmin добавил строку John Carl Brown в новую таблицу. |
|||
Доска объявлений Аутентификация - захешированный пользователь из БД | + 5 | ||
Научился добавлять нового пользователя в PhpMyAdmin с md5-хешированным паролем. Подключил к программе библиотеку mysql для создания запросов к базе данных. Подключил библиотеку crypto для md5-хеширования пароля пользователя. Добавил в программу форму ввода для логина и пароля. После ввода пароля он хешируется с помощью md5, выполняется запрос к базе и сравнивается пара логин/пароль. Для наглядности прикрепляю короткое видео. |
|||
Доска объявлений Подключение к базе данных пользователя и миграция пользователей | + 8 | ||
Мой дистрибутив Fedora по запросу установки MySQL вместо нее установил MariaDB, я так понимаю, это свободная версия MySQL, команды по управлению схожи. Установил PhpMyAdmin, создал через него базу данных bulletinsdb. Установил yii2, с помощью команды yii migrate/create create_user_table создал файл миграции, заполнил его данными для таблицы user. Запустил команду yii migrate и с помощью нее создал таблицу user в базе данных bulletinsdb. |
|||
Доска объявлений Схема базы данных | + 4 | ||
Познакомился со структурой базы данных. Определил сущности, таблицы и поля. |
|||
Доска объявлений Комфортная конфигурация | + 6 | ||
Вчера вечером решил проблему из прошлого отчета - добавил виртуальный хост. Изучал /var/log/httpd/error_log, там указывается код ошибки, по нему искал решение в Интернете. Как оказалось, все настройки были верные, ошибка была в том, что SELinux блокировал запуск моей программы из стороннего каталога сервера. Опробовал предложенное решение с сайта - работает, Apache теперь запускает мою программу. В этом уроке создал файл .htaccess, добавил его в папку с сайтом. Попутно потребовалось указать AllowOverride All в директиве описания виртуального хоста в файле httpd.conf, чтобы файл .htaccess мог переопределять настройки из главного конфигурационного файла. Попробовал решение Валерия для преобразования URL-адресов. Все работает. Однако вчера во время полетов по просторам документации Apache я побочно наткнулся на альтернативное решение преобразования адресов. Вместо RewriteEngine On и прочего там предлагается добавить всего одну строку "FallbackResource /index.cgi" Я так понимаю, это новая директива и она означает переадресацию всех запросов на несуществующие файлы на файл index.cgi, то есть на мою программу. Что вполне решает задачу красивых ссылок. Сегодня во время выполнения урока решил попробовать этот вариант. Результат аналогичный. Валерий, как думаешь, подойдет такое решение? На верхнем скриншоте все запросы к серверу переадресуются программе index.cgi, которая выводит содержимое переменной окружения REQUEST_URI. На нижнем скриншоте компиляция программы, установка программы по адресу каталога сайта и перенос в нее файла .htaccess. Немного ниже показано содержимое каталога сайта, там два файла: программа index.cgi и файл .htaccess. В самом низу показано содержимое файла .htaccess с единственной строкой FallbackResource /index.cgi. |
|||
Доска объявлений Создание проекта YII2 | + 6 | ||
Добавил строку 127.0.0.1 bull.local в файл /etc/hosts. Убедился в том, что обращение по адресу bull.local в браузере переходит как и прежде на тестовую страницу. Создал программу, которая выводит html-текст с сообщением по центру экрана. Скопировал полученную программу в корневую папку сервера Apache /var/www/cgi-bin, запустил - отработало нормально. Далее хотел создать виртуальный хост и вынести файл в другую, более удобную папку, например в своем домашнем каталоге, но столкнулся с проблемами настройки Apache. Почитав часок-другой документацию, набросал возможные варианты, но пока что успеха не добился. Оставил как есть, файл программы находится в корневом каталоге cgi-bin. Валерий, имеет ли смысл настраивать виртуальный хост для этого проекта? Разбираться с конфигурацией сервера Apache. |
|||
Доска объявлений О проекте и про инструменты | + 8 | ||
Недавно увидел отчеты по новому курсу от Валерия Жданова, заинтересовался и решил посмотреть уроки. В курсе предлагается использовать php + yii2, а я планирую набраться практики в этом направлении на языке Си. Установил сервер Apache, открыл тестовую страницу localhost в firefox. Что скажешь, Валерий, даешь добро на эксперименты? :) |
|||
Дневник успеха 2019-03-17 : Кончил дело — гуляй смело. | + 15 | ||
За эту неделю: + Я проверил 101 отчёт у 34 формулистов. + Я написал 3 сообщения 3 формулистам общим объёмом 1 килобуква − Я не набрал ни одного текста :o( + Я решил 7 задач: 1 => «WRITE - Вывод данных / Треугольник Паскаля» на 100% 2 => «WRITE - Вывод данных / Особые символы» на 100% 3 => «WRITE - Вывод данных / Формула в юникоде» на 100% 4 => «WRITE - Вывод данных / Визитка робота» на 100% 5 => «WRITE - Вывод данных / Константы» на 100% 6 => «WRITE - Вывод данных / Системы счисления» на 100% 7 => «Олимпиада / Случайная задача» на 100% + Я выполнил 14 видеоуроков: 1 => «Tinklavimas / 2. Таблица умножения» за 1 час. 5 мин. 2 => «Tinklavimas / 3. Вкусная таблица» за 31 мин. 3 => «Tinklavimas / 4. Валидатор» за 32 мин. 4 => «Tinklavimas / 5. Морской бой» за 32 мин. 5 => «Tinklavimas / 6. Стильные Буквы» за 47 мин. 6 => «Tinklavimas / 7. Союз столбцов и строк» за 1 час. 17 мин. 7 => «Tinklavimas / 8. Табличный аттестат» за 44 мин. 8 => «Tinklavimas / 5. Kurortavimas» за 50 мин. 9 => «Tinklavimas / 6. Raidės iš Varneliu» за 14 мин. 10 => «Tinklavimas / 7. Tinklalapio kūrimo etapai» за 29 мин. 11 => «Tinklavimas / 8. Landing page» за 29 мин. 12 => «Tinklavimas / 1. Запуск JavaScript» за 21 мин. 13 => «Tinklavimas / 2. Ввод данных» за 15 мин. 14 => «Tinklavimas / 3. яКартинка» за 29 мин. − Я не собрал ни одного Мегахеша :o( |
|||
Tinklavimas 3. яКартинка | + 13 | ||
Научился показывать картинку при наведении мышки с помощью onmouseover и onmouseout. |
|||
Tinklavimas 2. Ввод данных | + 7 | ||
Повторил как создавать функцию, выводить информацию с помощью alert и document.write. Научился вводить информацию с помощью prompt. |
|||
Tinklavimas 1. Запуск JavaScript | + 14 | ||
Научился выводить сообщение в окно браузера с помощью document.write, выводить всплывающее окно с помощью alert. Добавил функцию для проверки заполнение поля формы. |
|||
Tinklavimas 8. Landing page | + 13 | ||
Повторил как добавлять таблицу, изображение, форму на html-страницу. |
|||
Tinklavimas 7. Tinklalapio kūrimo etapai | + 16 | ||
Подготовил 4 изображения одинакового размера, разместил их в папке img. Создал файл index.html, добавил таблицу 2 на 2, разместил в ячейках изображения. Проверил html-страницу на сайте https://html5.validator.nu/. |
|||
Tinklavimas 6. Raidės iš Varneliu | + 11 | ||
Повторил как добавлять элемент checkbox, устанавливать в нём галочку. Использовал html-страницу из урока "Стильные буквы". |
|||
Tinklavimas 5. Kurortavimas | + 9 | ||
Вспомнил как использовать теги form, input, select, textarea. Создал простую форму туроператора. |
|||
Tinklavimas 8. Табличный аттестат | + 7 | ||
Повторил как создавать таблицу, указывать стили для цвета фона, текста, выравнивания по центру и по правому краю. |
|||
Tinklavimas 7. Союз столбцов и строк | + 16 | ||
Повторил как добавлять классы стилей, указывать rowspan, colspan для ячеек таблицы. Узнал про возможность объединения несколько разных стилей в описании одного элемента. Создал html-страницу, где в табличном формате вывел первые два квадрата, нарисованных в уроке Морской бой. |
|||
Tinklavimas 6. Стильные Буквы | + 11 | ||
Повторил как использовать css id, устанавливать цвет фона, высоту и ширину элемента. Нарисовал таблицу, вывел в ней 4 буквы. |
|||
Tinklavimas 5. Морской бой | + 15 | ||
Научился устанавливать ширину и высоту ячеек, повторил как заливать ячейку цветом. Нарисовал 12 квадратов, разбил их на прямоугольники. |
|||
Tinklavimas 4. Валидатор | + 16 | ||
Проверил свой html-документ валидатором https://html5.validator.nu/ Выдало 5 ошибок: 1) необходимо было указать в начале файла тег <!DOCTYPE html>. 2) Объявление <table border="1"> устарело, толщину рамки нужно указывать через CSS. В 3, 4, 5 ошибках необходимо добавить атрибут alt для тега img. Сложнее всего было добавить CSS для таблицы, оказалось, что толщину нужно одновременно указывать для тегов th и td. |
|||
Tinklavimas 3. Вкусная таблица | + 14 | ||
Повторил как добавлять изображение на html-страницу. Добавил три блюда из меню kfc. Названия, цены и url-изображений взял c сайта kfc.ru. |
|||
Tinklavimas 2. Таблица умножения | + 13 | ||
Создал html-страницу с 10 таблицами умножения, от 1x1 до 10x10. Делал всё вручную, для каждой таблицы свой вывод table. Оценил на этом примере, что ручной вывод довольно утомителен и может легко спровоцировать на ошибки. |
|||
Дневник успеха 2019-03-10 : Маленькое дело лучше большого безделья. | + 15 | ||
На этой неделе я завершил курс ОО Фрукты и выполнил три последних урока по курсу ООП на Python3. На следующей неделе планирую продолжить выполнять курс Tinklavimas, набираться опыта в html, css и прочих web-штучках :) За эту неделю: + Я проверил 107 отчётов у 39 формулистов. + Я написал 8 сообщений 7 формулистам общим объёмом 4 килобуквы − Я не набрал ни одного текста :o( + Я решил 8 задач: 1 => «START - Запуск / Привет, Java!» на 100% 2 => «WRITE - Вывод данных / Калькулятор» на 100% 3 => «Олимпиада / Случайная задача» на 100% 4 => «VIP задачи / Палиндром» на 100% 5 => «VIP задачи / Бинарник» на 100% 6 => «VIP задачи / Тю» на 100% 7 => «VIP задачи / Ping» на 100% 8 => «VIP задачи / 51 карта» на 100% + Я выполнил 17 видеоуроков: 1 => «ООП на Python3 / Параметры командной строки - в бэкаппер» за 4 час. 40 мин. 2 => «ООП на Python3 / Полевые испытания - работа с различными параметрами» за 40 мин. 3 => «ООП на Python3 / Рефакторинг класса и методов» за 2 час. 17 мин. 4 => «Tinklavimas / Второй подход к эскизу» за 10 мин. 5 => «Tinklavimas / Простейшая HTML страница» за 51 мин. 6 => «Tinklavimas / Термины сайтостроения» за 1 час. 18 мин. 7 => «Tinklavimas / Контрольная работа» за 44 мин. 8 => «Tinklavimas / Красивые стихи» за 28 мин. 9 => «Tinklavimas / 1. Расписание уроков» за 33 мин. 10 => «ООФрукты / Создатель» за 1 час. 54 мин. 11 => «ООФрукты / Как шагает Дед Мороз» за 1 час. 31 мин. 12 => «ООФрукты / Конвертабельность» за 42 мин. 13 => «ООФрукты / Фабрика параметров» за 1 час. 43 мин. 14 => «ООФрукты / Буфера в стрингах» за 1 час. 52 мин. 15 => «ООФрукты / Документация Деда Мороза» за 1 час. 18 мин. 16 => «ООФрукты / Задедомороженный Архив» за 1 час. 10 мин. 17 => «ООФрукты / Комплименты Деду Морозу» за 15 мин. − Я не собрал ни одного Мегахеша :o( |
|||
Tinklavimas 1. Расписание уроков | + 14 | ||
Повторил как создавать таблицы с помощью тега table, добавлять строки используя tr и ячейки th td. |
|||
Tinklavimas Красивые стихи | + 13 | ||
Повторил теги h2, br, b, p для оформления текста. Научился указывать кодировку текста с помощью meta charset. |
|||
Tinklavimas Контрольная работа | + 15 | ||
Кубика под рукой нет, для случайного выбора использовал bash и переменную RANDOM. Выпал вариант 1. Скриншот прикрепить нет возможности, вставлю фрагмент из терминала. [14:06:16 chip@z68 ~]$ echo $(($RANDOM % 4 + 1)) 1 [14:06:27 chip@z68 ~]$ HTML - это язык описания структуры документа. Например, текст документа может быть оформлен в виде заголовков, списков. Текст, изображения, видео могут быть размещены в табличном представлении, в виде слоёв. В основном HTML используется для создания web-страниц. CSS - это язык описания стилистики документа. Если HTML определяет каркас, структуру документа, то CSS описывает его внешний вид. Например, цвет фона, шрифтов, отдельных элементов. Если вынести всё оформление документа из HTML-файла в CSS-файл, то можно добиться простой смены внешнего вида документа. JavaScript - это скриптовый язык программирования, в основном используется для создания динамичных web-страниц на стороне клиента. Например, выпадающие меню, анимации, автоматическое переформатирование страницы при определенных действиях пользователя. Таким образом увеличивается интерактивность web-приложения и оно приближается по возможностям к обычным desktop-приложениям. Другим применением JavaScript является направленность на минимизацию обмена данных между клиентом и сервером. Например, простейшую валидацию входных данных можно перенести на клиентскую часть. PHP - скриптовый язык программирования, в основном используется для создания web-сайтов, динамичных web-страниц на серверной стороне. В результате своей работы php-приложение формирует HTML-документ в зависимости от входных данных со стороны клиента, результатов обработки запросов к базе данных. Пятый термин, по желанию. Сервер - 1) серверная часть программного обеспечения, построенного по клиент-серверной модели. 2) компьютер. В уроке рассматривается 2 вариант. Итак, сервер - это компьютер с выделенной для него задачей. Например, web-сервер для web-сайтов. Или прокси-сервер - специальный компьютер, который является своего рода посредником на линии связи между компьютерами. Основным назначением является фильтрация и кеширование данных между внешней и внутренней сетью. |
|||
Tinklavimas Термины сайтостроения | + 15 | ||
HTML - язык разметки документа. Позволяет указать структуру документа: оформить текст в виде таблицы, слоёв, заголовков, списков. В основном используется в www для оформления web-страниц сайтов. CSS - язык оформления документа. Если HTML используется для создания структуры документа, то CSS определяет внешний вид документа. Заменив один файл CSS на другой можно изменить стилистику документа не меняя его структуру. Например, изменить цвет фона, размер шрифта, его начертание. Как и HTML в основном используется в web для создания web-страниц. |
|||
Tinklavimas Простейшая HTML страница | + 13 | ||
Повторил как создавать html-страницу, выполнил 10 раз задание по инструкции. Лучшее время 01:05. |
|||
Tinklavimas Второй подход к эскизу | + 13 | ||
Прикладываю эскиз из прошлого урока, так как при попытке сделать с нуля получается та же самая схема. Новых идей и конкретики нет, в приоритете другие цели. |
|||
ООФрукты Комплименты Деду Морозу | + 10 | ||
На этом курсе я познакомился с перечислениями, интерфейсами. Поработал с коллекциями ArrayList, HashMap и HashSet. Попрактиковался в отладке приложений, создании javadoc-документации. Увидел как можно использовать ООП возможности Java для разделения общего интерфейса и конкретной реализации в новых классах. |
|||
ООФрукты Задедомороженный Архив | + 7 | ||
Научился с помощью ant создавать запускаемый jar-архив. Добавил новую цель в build.xml файл для создания jar-файла. |
|||
ООФрукты Документация Деда Мороза | + 7 | ||
Повторил как добавлять javadoc-комментарии к классам и методам. Создал HTML-документацию. |
|||
ООФрукты Буфера в стрингах | + 8 | ||
Переименовал классы, заменил String на StringBuilder, проверил работу программы. |
|||
ООФрукты Фабрика параметров | + 16 | ||
Создал класс ParamFabric, перенёс в него методы parseArgs и create. Добавил в него три поля fruitReader, convertable, hasHelp для доступа из класса Program. |
|||
ООФрукты Конвертабельность | + 12 | ||
Добавил выбор формата вывода raw, xml, json из аргументов командной строки. |
|||
ООФрукты Как шагает Дед Мороз | + 12 | ||
Познакомился с jdb - отладчиком для Java. Научился добавлять отладочную информацию с помощью ключа -g для javac, либо для ant использовать атрибут debug="true". Узнал как использовать jdb через emacs. |
|||
ООФрукты Создатель | + 11 | ||
Научился создавать новый список с помощью метода subList. Добавил в класс FruitReaderStringArray конструктор, который принимает этот список. Набрал код по видеоуроку, программа не работает. Ошибка на видео была в том, что объекты класса String нужно сравнивать с помощью метода equals, а не ==. |
|||
Дневник успеха 2019-03-03 : Не говори "гоп", пока не перепрыгнешь. | + 13 | ||
На этой неделе я выполнял курсы ОО Фрукты, ООП на Python3, приступил к курсу Tinklavimas. На следующей неделе планирую завершить ОО Фрукты и на этом пока что приостановлю изучение Java. Сегодня начал курс Tinklavimas, хочу расширить свои знания в web-технологиях. На следующей неделе планирую проходить Tinklavimas и выполнить три новых урока в курсе ООП на Python3. За эту неделю: + Я проверил 116 отчётов у 35 формулистов. + Я написал 6 сообщений 5 формулистам общим объёмом 3 килобуквы − Я не набрал ни одного текста :o( + Я решил 17 задач: 1 => «Строки / Contains» на 100% 2 => «Символы / Пятёрочка» на 100% 3 => «Целые задачи / Уравнение 2» на 100% 4 => «Do-рацикл / Снова меньше ε» на 100% 5 => «Календарь / Високосный год» на 100% 6 => «Календарь / Сколько времени» на 100% 7 => «Календарь / Секундомер» на 100% 8 => «Календарь / Конец месяца» на 100% 9 => «Календарь / Кто старше» на 100% 10 => «Календарь / Послезавтра» на 100% 11 => «Календарь / Дидлайн» на 100% 12 => «Календарь / Два миллиона минут» на 100% 13 => «Календарь / По возрасту равняйсь!» на 100% 14 => «Календарь / Двойной день рождения» на 100% 15 => «Календарь / День программиста» на 100% 16 => «Календарь / VIP урок. Календарь 1752 года» на 100% 17 => «Олимпиада / Случайная задача» на 100% + Я выполнил 17 видеоуроков: 1 => «ООП на Python3 / ООП - конструктор и деструктор» за 1 час. 36 мин. 2 => «ООП на Python3 / Распаковка под контролем» за 3 час. 12 мин. 3 => «ООП на Python3 / Параметры командной строки - немного теории» за 34 мин. 4 => «Tinklavimas / Знакомство» за 16 мин. 5 => «Tinklavimas / Каким будет мой сайт» за 52 мин. 6 => «ООФрукты / Рефакторинг аргументов» за 1 час. 21 мин. 7 => «ООФрукты / Пошаговый проход» за 47 мин. 8 => «ООФрукты / Массивная строка» за 1 час. 58 мин. 9 => «ООФрукты / Логические задачи» за 1 час. 19 мин. 10 => «ООФрукты / Размер множества» за 49 мин. 11 => «ООФрукты / Список задач» за 2 час. 2 мин. 12 => «ООФрукты / Форматы JSON и XML» за 2 час. 32 мин. 13 => «ООФрукты / Профессиональный Интерфейс» за 2 час. 42 мин. 14 => «ООФрукты / Коллекция HashMap» за 5 час. 2 мин. 15 => «ООФрукты / Конвертабельные классы» за 2 час. 7 мин. 16 => «ООФрукты / Параметр Формата» за 57 мин. 17 => «ООФрукты / Параметрический Созидатель» за 30 мин. − Я не собрал ни одного Мегахеша :o( |
|||
ООФрукты Параметрический Созидатель | + 10 | ||
Добавил заготовки методов parseArgs и create, узнал про метод startsWith, которые проверяет начинается ли строка с указанной подстроки. |
|||
ООФрукты Параметр Формата | + 9 | ||
Дополнил инструкцию в методе ShowManual, добавил заготовку метода parseArgsConvert для определения формата вывода, изменил метод Start для работы с интерфейсом Convertable. |
|||
Tinklavimas Каким будет мой сайт | + 10 | ||
Задание к уроку немного озадачило, сразу со старта придумать тематику сайта, его аудиторию и схему первой страницы. Вопросы мало связаны с программированием. Прикинув варианты, я решил в качестве тематики выбрать изучение языков C/C++, аудитория начинающие программисты. Выбор названия озадачил, сложно подобрать, допустим learngnuc.io. Набросал схему первой страницы, сложно рисовать то, что слабо представляешь :) |
|||
Tinklavimas Знакомство | + 11 | ||
Решил приступить к изучению web-технологий, расширить свои знания, узнать новое, набраться практики :) |
|||
ООФрукты Конвертабельные классы | + 11 | ||
Создал три класса ConvertRAW, ConvertXML, ConvertJSON. В каждом реализовал интерфейс Convertable, добавил методы Convert. Вывел результаты работы во всех трёх форматах. |
|||
ООФрукты Коллекция HashMap | + 13 | ||
Научился создавать HashMap, добавлять в него элементы с помощью метода put. Узнал как перебрать все элементы HashMap, используя цикл for и метод entrySet. Научился получать доступ к ключу и значению элемента HashMap. |
|||
ООФрукты Профессиональный Интерфейс | + 16 | ||
Научился создавать интерфейс. Добавил интерфейс Convertable, объявил в нём метод Convert, указал, что класс Logic реализует интерфейс, добавил в него пустой метод Convert. |
|||
ООФрукты Форматы JSON и XML | + 10 | ||
Повторил представление данных в форматах xml и json. Добавил вывод результатов программы в трёх форматах: raw, xml, json. |
|||
ООФрукты Список задач | + 15 | ||
Добавил перечисление Task, два метода getTask, перенёс в них формирование строки результата. |
|||
ООФрукты Размер множества | + 16 | ||
Повторил как создавать множество HashSet, добавлять в него элементы. |
|||
ООФрукты Логические задачи | + 8 | ||
Повторил как перебрать все элементы перечисления с помощью цикла for и метода values. |
|||
ООФрукты Массивная строка | + 7 | ||
Повторил как наследовать один класс от другого, вызывать конструктор базового класса с помощью ключевого слова super. Узнал про метод Arrays.copyOfRange, который позволяет скопировать массив в указанном интервале индексов элементов. |
|||
ООФрукты Пошаговый проход | + 7 | ||
Исправил ошибку отсутствия пустой строки в конце ввода данных. Создал файл fruits2.txt, в котором нет пустой строки в конце файла. Проверил работу программы с этим файлом, при вводе с клавиатуры и с дополнительных аргументов командной строки. |
|||
ООФрукты Рефакторинг аргументов | + 8 | ||
Добавил метод parseArgs, перенёс в него проверку аргументов командной строки, расширил возможность считывания через параметр data. |
|||
Дневник успеха 2019-02-24 : Была бы охота — будет ладиться работа. | + 14 | ||
На этой неделе я завершил курс "Слова в сетке", приступил к курсу "ООФрукты" и выполнил последние на тот момент уроки в курсе "ООП на Python3". Только что решил проверить, возможно Валерий добавил новые уроки в этот курс. Так и есть, три новых урока :) На следующей неделе планирую выполнить их и продолжу "ООФрукты". За эту неделю: + Я проверил 127 отчётов у 35 формулистов. + Я написал 2 сообщения 2 формулистам общим объёмом 2 килобуквы − Я не набрал ни одного текста :o( + Я решил 15 задач: 1 => «Календарь / Первый и последний день» на 100% 2 => «Календарь / День недели» на 100% 3 => «Календарь / День года» на 100% 4 => «Строки / Снова многоточие» на 100% 5 => «Строки / Ноль или один» на 100% 6 => «Строки / Список» на 100% 7 => «Матрицы / Максимумы» на 100% 8 => «Матрицы / Заштрихованная часть» на 100% 9 => «Матрицы / Произведение» на 100% 10 => «Матрицы / Квадранты матрицы» на 100% 11 => «Рекурсия / Факториал» на 100% 12 => «Рекурсия / Числа Фибоначчи» на 100% 13 => «Рекурсия / Общий делитель» на 100% 14 => «Рекурсия / Обратный отсчёт» на 100% 15 => «Коллекции / Апрельские дни» на 100% + Я выполнил 15 видеоуроков: 1 => «ООП на Python3 / Работа с zip-архивом - архивация файлов и папок» за 4 час. 38 мин. 2 => «ООП на Python3 / ООП - теория на примере популярной игры» за 33 мин. 3 => «ООП на Python3 / ООП - проект бэкаппера» за 2 час. 32 мин. 4 => «Слова в Сетке / ФИНАЛЬНЫЙ УРОК» за 8 мин. 5 => «Слова в Сетке / VIP Implementation» за 1 час. 55 мин. 6 => «ООФрукты / Подготовка - Фрукты по списку» за 2 час. 23 мин. 7 => «ООФрукты / Подготовка - База фруктов» за 1 час. 35 мин. 8 => «ООФрукты / Постановка задачи» за 3 час. 55 мин. 9 => «ООФрукты / Яблоки на снегу» за 1 час. 10 мин. 10 => «ООФрукты / Фрукточтец» за 2 час. 0 мин. 11 => «ООФрукты / Фрукты из строки» за 2 час. 44 мин. 12 => «ООФрукты / Волшебные конструкторы» за 3 час. 24 мин. 13 => «ООФрукты / Фруктовые комментарии» за 1 час. 37 мин. 14 => «ООФрукты / Новые игрушки» за 27 мин. 15 => «ООФрукты / Какие ваши аргументы?» за 59 мин. − Я не собрал ни одного Мегахеша :o( |
|||
ООФрукты Какие ваши аргументы? | + 14 | ||
Повторил как использовать аргументы командной строки, добавил в программу выбор источника данных из файла, клавиатуры или из аргумента командной строки. |
|||
ООФрукты Новые игрушки | + 12 | ||
Добавил несколько машинок в перечисление Fruit. |
|||
ООФрукты Фруктовые комментарии | + 7 | ||
Повторил как использовать javadoc для создания документации проекта. |
|||
ООФрукты Волшебные конструкторы | + 6 | ||
Узнал применение ключевого слова final для методов в Java: final используется для указания методов, которые не должны переопределять классы-наследники. |
|||
ООФрукты Фрукты из строки | + 8 | ||
Научился создавать поток для чтения из строки с помощью ByteArrayInputStream, InputStreamReader и BufferedReader. |
|||
ООФрукты Фрукточтец | + 9 | ||
Повторил как читать данные из файла с помощью FileReader, использовал BufferedReader для считывания данных как с файла, так и с клавиатуры. |
|||
ООФрукты Яблоки на снегу | + 13 | ||
Повторил как создавать перечисление, добавлять в него константы, статические методы. Узнал как перехватывать исключение при вызове метода valueOf. |
|||
ООФрукты Постановка задачи | + 15 | ||
Повторил как создавать ArrayList, добавлять в него элементы с помощью метода add и определять количество элементов использую метод size. Дополнительно научился собирать проект Java с помощью Ant, создал простой build.xml, добавил цели build и clean, подружил Ant с Emacs. |
|||
ООФрукты Подготовка - База фруктов | + 10 | ||
Научился создавать конструкторы, методы, поля перечислений. Узнал про метод toUpperCase для преобразования букв строки в верхний регистр. |
|||
ООФрукты Подготовка - Фрукты по списку | + 11 | ||
Научился получать список всех элементов перечисления с помощью метода values, узнал как создать элемент перечисления используя метод valueOf. |
|||
Слова в Сетке VIP Implementation | + 13 | ||
Повторил как генерировать псевдослучайные числа с помощью класса Random, создавать двумерные массивы, извлекать подстроку с помощью метода substring. Дополнительно выделил загаданное слово IMPLEMENTATION другим цветом. |
|||
Слова в Сетке ФИНАЛЬНЫЙ УРОК | + 11 | ||
На этом курсе я научился работать с метрикой шрифта, изменять размер букв. Узнал как показывать форму по центру экрана, генерировать псевдослучайные числа, сохранять нарисованное изображение в файл. Попрактиковался в создании графических приложений на Java. |
|||
Дневник успеха 2019-02-17 : Один в поле не воин. | + 7 | ||
За эту неделю: + Я проверил 172 отчёта у 44 формулистов. + Я написал 8 сообщений 5 формулистам общим объёмом 3 килобуквы − Я не набрал ни одного текста :o( + Я решил 13 задач: 1 => «Подпрограммы / Степень» на 100% 2 => «Подпрограммы / НОД» на 100% 3 => «Подпрограммы / НОК» на 100% 4 => «Подпрограммы / Звезда» на 100% 5 => «Подпрограммы / Молодой» на 100% 6 => «Подпрограммы / Старшой» на 100% 7 => «Подпрограммы / Йестердэй» на 100% 8 => «Подпрограммы / Палиндромы» на 100% 9 => «Подпрограммы / Треугольники» на 100% 10 => «Подпрограммы / Семь сегментов» на 100% 11 => «Строки / Звездочки» на 100% 12 => «Строки / Сколько слов» на 100% 13 => «Строки / Длинное слово» на 100% + Я выполнил 11 видеоуроков: 1 => «Python3: математика / ФИНАЛЬНЫЙ УРОК» за 1 час. 56 мин. 2 => «Python3: математика / VIP-урок - самостоятельная работа» за 2 час. 25 мин. 3 => «ООП на Python3 / Python и Visual Studio» за 32 мин. 4 => «ООП на Python3 / Работа с zip-архивом - инициализация и распаковка» за 4 час. 22 мин. 5 => «Слова в Сетке / Объектная Матрёшка» за 1 час. 22 мин. 6 => «Слова в Сетке / Кот Фрейма» за 2 час. 17 мин. 7 => «Слова в Сетке / Буква на Панели» за 2 час. 24 мин. 8 => «Слова в Сетке / Своя Картинка» за 4 час. 4 мин. 9 => «Слова в Сетке / Центр Бокса» за 5 час. 59 мин. 10 => «Слова в Сетке / Матрица Боксиков» за 2 час. 59 мин. 11 => «Слова в Сетке / Сохранение картинки» за 1 час. 41 мин. − Я не собрал ни одного Мегахеша :o( На этой неделе я завершил курс "Python3: математика", начал проходить курсы "ООП на Python3" и "Слова в сетке". По этим двум курсам осталось по одному уроку, планирую на следующей неделе их завершить. Хотя, думаю, Валерий на днях добавит несколько уроков и я буду продолжать выполнять и знакомиться с ООП на Python3 :) Если я правильно понимаю, то Zipfile это и есть класс, а printdir и extractall его методы? После этих курсов планирую продолжить изучение Java, следующий курс - "ОО Фрукты". |
|||
Слова в Сетке Сохранение картинки | + 8 | ||
Научился создавать файлы с помощью класса File, узнал как сохранить изображения в файл с использованием класса ImageIO и его метода write. |
|||
Слова в Сетке Матрица Боксиков | + 8 | ||
Научился генерировать случайные числа с помощью класса Random. Узнал как создавать и заполнять двумерные массивы, познакомился с методами substring и length в классе String. |
|||
Слова в Сетке Центр Бокса | + 11 | ||
Научился получать метрику шрифта с помощью метода getFontMetrics. Для расчёта координат текста я вместо getHeight учитывал значения метрик Ascent и Descent. |
|||
Слова в Сетке Своя Картинка | + 14 | ||
Научился закрашивать прямоугольную область с помощью метода fillRect и рисовать изображение с помощью drawImage. |
|||
Слова в Сетке Буква на Панели | + 10 | ||
Повторил как выводить текст на форму с помощью метода drawString. Создал класс Panel на базе класса JPanel, добавил его в класс Frame. Узнал про атрибут @Override. |
|||
Python3: математика VIP-урок - самостоятельная работа | + 13 | ||
Добавил в программу вывод полных слов вместо тыс, млн, млрд. Исправил ошибку при выводе прописью цифр 1, 2. Например, раньше было "один тыс", сейчас "одна тыс". Дополнительно убрал лишние пробелы в выводе строки. Остался открытым вопрос с универсальным выводом чисел вне указанного диапазона. Можно расширить список, добавить новые названия, но это проблему не решит, а лишь отодвинет максимальную планку. Хотя для большинства задач думаю можно найти эту приемлимую максимальную планку и ориентироваться на неё :) |
|||
Python3: математика ФИНАЛЬНЫЙ УРОК | + 15 | ||
В этом курсе я познакомился с языком программирования Python3, написал две программы, создал исполняемые файлы с помощью pyinstaller. Курс небольшой, его вполне можно пройти за пару дней на одном дыхании, взглянуть на немного другой стиль программирования. Рекомендую всем формулистам для прохождения. Следующим курсом будет Python OOP и параллельно курсы по Java. |
|||
Слова в Сетке Кот Фрейма | + 14 | ||
На этом уроке я повторил наследование в Java, создал класс Frame на базе класса JFrame и использовал его в классе Program. |
|||
Слова в Сетке Объектная Матрёшка | + 7 | ||
Научился размещать форму по центру экрана после запуска программы с помощью метода setLocationRelativeTo(null). Повторил создание оконного приложения. Начал осваивать редактор Emacs. |
|||
Дневник успеха 2019-02-10 : Поле труд любит. | + 12 | ||
За эту неделю: + Я проверил 189 отчётов у 41 формулиста. + Я написал 2 сообщения 1 формулисту общим объёмом 1 килобуква − Я не набрал ни одного текста :o( + Я решил 17 задач: 1 => «Матрёшки / Двоичные числа» на 100% 2 => «Матрёшки / Сумма шести» на 100% 3 => «Матрёшки / Админ сети» на 100% 4 => «Простые массивы / Единичный массив» на 100% 5 => «Простые массивы / Первый и последний» на 100% 6 => «Простые массивы / Копипаст» на 100% 7 => «Простые массивы / Инкремент» на 100% 8 => «Простые массивы / Мульти возведение» на 100% 9 => «Простые массивы / Мини-максимум» на 100% 10 => «Простые массивы / Обмен» на 100% 11 => «Простые массивы / Квадрат многочлена» на 100% 12 => «Подпрограммы / Минималка» на 100% 13 => «Подпрограммы / МиниМакс» на 100% 14 => «Подпрограммы / Плюс плюс» на 100% 15 => «Подпрограммы / Минус минус» на 100% 16 => «Олимпиада / Случайная задача» на 100% 17 => «Коллекции / Классики» на 100% + Я выполнил 13 видеоуроков: 1 => «Python3: математика / Словарь сотен» за 2 час. 14 мин. 2 => «Python3: математика / Число прописью » за 1 час. 16 мин. 3 => «Python3: математика / Автора - в кортеж» за 1 час. 2 мин. 4 => «Python3: математика / Любое число прописью - новая программа и теория цикла for» за 37 мин. 5 => «Python3: математика / Любое число прописью - всё строится на цикле» за 1 час. 18 мин. 6 => «Python3: математика / Любое число прописью - список в строку» за 1 час. 9 мин. 7 => «Python3: математика / Exe-файл - переменные среды» за 20 мин. 8 => «Python3: математика / Exe-файл - крутой pyinstaller» за 2 час. 9 мин. 9 => «JD. Коллекции / LIST - Просто коллекция» за 2 час. 46 мин. 10 => «JD. Коллекции / LIST - Типа коллекция» за 1 час. 26 мин. 11 => «JD. Коллекции / LIST - ArrayList против LinkedList» за 9 час. 9 мин. 12 => «JD. Коллекции / LIST - Множество» за 1 час. 17 мин. 13 => «JD. Коллекции / LIST - Одинаковые кошки» за 1 час. 30 мин. − Я не собрал ни одного Мегахеша :o( На этой неделе я прошёл курс JD Коллекции, проходил курс Python3 Математика, в котором осталось сделать два урока. На следующей неделе планирую завершить курс Python3 и начать курс Java Слова в сетке. |
|||
Python3: математика Exe-файл - крутой pyinstaller | + 13 | ||
В моём случае потребовалось использовать команду pip3 install pyinstaller вместо просто pip. На моей системе ещё до первого урока по умолчанию была установлена версия python 2.7.5, видимо поэтому pip скачивал pyinstaller для этой версии. В принципе, исполняемые файлы создавались и для этого случая, для версии 2.7.5, но возникали ошибки при отображении русских букв после команды print для списков или кортежей. Поэтому скачал через pip3 и всё заработало. Создал два исполняемых файла math и num_str, проверил их работу без IDLE, напрямую запуская эти файлы. |
|||
Python3: математика Exe-файл - переменные среды | + 8 | ||
В моём случае (на ОС Linux) pip был установлен в стандартных путях, которые добавлены в переменную PATH, поэтому команда pip сразу запустилась. |
|||
Python3: математика Любое число прописью - список в строку | + 9 | ||
В этом уроке я научился использовать оператор += для добавления в конец строки. Программа на Python разрослась, скоро не будет помещаться на экран :) |
|||
Python3: математика Любое число прописью - всё строится на цикле | + 14 | ||
Повторил работу со списками, циклом for, оператором возведения в степень ** и целочисленным делением //. Научился находить длину списка с помощью функции len. |
|||
Python3: математика Любое число прописью - новая программа и теория цикла for | + 9 | ||
Научился создавать цикл for, указывать диапазон значений и шаг. Внешне чем-то похоже на цикл for в Pascal, хотя, если не ошибаюсь, там шаг всегда был равен 1 или -1. Набрал несколько циклов в shell. Сохранил файл math.py как новый файл num_str.py и изменил функцию check как было указано на видео. На видео на отметке 8:35 Валерий сказал, что можно не добавлять дополнительный уровень табуляции для тела цикла for. Мне это сразу показалось странным. Везде требуется: в функциях, в if, в while, а тут нет. Не логично :) Попробовал запустить код по видео, мне отвечает ошибкой Syntax error: expected an indented block. Добавил табуляцию - заработало. Значит всё-таки нужна табуляция :) Что интересно, если просто набрать заголовок цикла, потом указать двоеточие и нажать Enter, то IDLE сама добавляет уровень табуляции. |
|||
JD. Коллекции LIST - Одинаковые кошки | + 10 | ||
В этом уроке я научился переопределять методы equals, hashCode для того чтобы изменить логику сравнения объектов класса Cat. |
|||
Python3: математика Автора - в кортеж | + 12 | ||
Познакомился с кортежем в Python3. Добавил в программу кортеж about, в котором содержится информация о программе, вывел её в начале работы программы. |
|||
JD. Коллекции LIST - Множество | + 10 | ||
В этом уроке я познакомился с коллекцией HashSet. Евгений Витольдович хорошо объясняет как в ней хранятся данные, показывает структуру во время пошагового выполнения программы. Дополнительно решил задачу по заданию. |
|||
Python3: математика Число прописью | + 12 | ||
В этом уроке повторил как создавать и заполнять данными словарь, попрактиковался в передаче списков между функциями. Научил программу говорить словами :) |
|||
JD. Коллекции LIST - ArrayList против LinkedList | + 9 | ||
В этом уроке я познакомился с коллекцией LinkedList, сравнил скорости работы ArrayList и LinkedList. Чтобы быстрее создавать LinkedList с 10млн элементами, я использовал конструктор, который копирует элементы из другой коллекции, то есть из ArrayList. Добавил сравнение времени поиска элемента и его удаления из обеих коллекций. Хотя в обеих коллекциях по 10 млн элементов, поиск и удаления выполняются довольно быстро, иногда результаты выдавали 0 мс, поэтому добавил вывод в наносекундах. Для поиска использовал метод indexOf, для удаления метод remove. Чтобы числа выводились в более наглядном виде, например 1.000.000 вместо 1000000, для автоматического добавления разделителей между разрядами числа, мне потребовалось научиться использовать локаль в Java, узнал про NumberFormat. Для вывода использовал локаль de_DE.utf8, чтобы были точки между разрядами. В общем, хорошо попрактиковался, спасибо! :) |
|||
Python3: математика Словарь сотен | + 10 | ||
Научился создавать словарь, заполнять его данными, выполнять поиск значения по его ключу. Узнал как обращаться к элементу списка по его индексу. |
|||
JD. Коллекции LIST - Типа коллекция | + 4 | ||
Научился создавать коллекцию ArrayList с указанием типа элементов. Добавил класс Fruit, создал несколько объектов этого класса, добавил их в список. |
|||
JD. Коллекции LIST - Просто коллекция | + 13 | ||
Познакомился с коллекцией ArrayList, в которую можно добавлять различные типы данных. Узнал как представляются данные внутри коллекции, про встроенные методы toString и getName. Набрал программу по уроку, проверил её работу. Вывел содержимое списка, для этого использовал метод System.out.printf, который позволяет форматировать вывод. |
|||
Дневник успеха 2019-02-03 : Тот ничего не сделал, кто ничего не начал. | + 8 | ||
За эту неделю: + Я проверил 184 отчёта у 51 формулиста. + Я написал 23 сообщения 10 формулистам общим объёмом 11 килобукв − Я не набрал ни одного текста :o( + Я решил 16 задач: 1 => «Целые числа / Пирамида» на 100% 2 => «По цифрам / Числа по цифрам» на 100% 3 => «По цифрам / Три цифры» на 100% 4 => «По цифрам / Цифры по возрастанию» на 100% 5 => «По цифрам / Разные цифры» на 100% 6 => «По цифрам / Палиндромы» на 100% 7 => «По цифрам / Счастливый билет» на 100% 8 => «По цифрам / Простые цифры» на 100% 9 => «По цифрам / Четные цифры» на 100% 10 => «Матрёшки / Числовой треугольник» на 100% 11 => «Матрёшки / Звездный квадрат» на 100% 12 => «Матрёшки / Единичная матрица» на 100% 13 => «Матрёшки / Пятизначные числа» на 100% 14 => «Матрёшки / Шестизначные числа» на 100% 15 => «Матрёшки / Семизначные числа» на 100% 16 => «Олимпиада / Случайная задача» на 100% + Я выполнил 27 видеоуроков: 1 => «Python3: математика / Погружение в python3» за 32 мин. 2 => «Python3: математика / Математические операции в python3» за 14 мин. 3 => «Python3: математика / Число - на составные части» за 20 мин. 4 => «Python3: математика / Рефакторинг - ввод и функция» за 23 мин. 5 => «Python3: математика / Обработка исключений - немного теории» за 2 час. 42 мин. 6 => «Python3: математика / Обработка исключений в основной программе» за 1 час. 14 мин. 7 => «Python3: математика / Проверка иных условий» за 1 час. 2 мин. 8 => «Python3: математика / Списки - немного теории» за 4 час. 22 мин. 9 => «Python3: математика / Списки - в программу!» за 1 час. 21 мин. 10 => «Python3: математика / Бесконечный while» за 1 час. 1 мин. 11 => «JB. Шахматные классы / CHESS - Классные фигуры» за 46 мин. 12 => «JB. Шахматные классы / CHESS - Координаты фигур» за 27 мин. 13 => «JB. Шахматные классы / CHESS - Фигурное катание» за 1 час. 19 мин. 14 => «JB. Шахматные классы / CHESS - Перебор фигур» за 40 мин. 15 => «JB. Шахматные классы / CHESS - Чудеса Абстракционизма» за 43 мин. 16 => «JB. Шахматные классы / CHESS - Шахматный конструктор» за 41 мин. 17 => «JC. Явные графоциклы / FOR2D - Линия и Круг » за 2 час. 22 мин. 18 => «JC. Явные графоциклы / FOR2D - Солнечный круг» за 1 час. 45 мин. 19 => «JC. Явные графоциклы / FOR2D - Рисование по координатам» за 28 мин. 20 => «JC. Явные графоциклы / FOR2D - Цикловата» за 16 мин. 21 => «JC. Явные графоциклы / FOR2D - Вертикали и Горизонтали» за 41 мин. 22 => «JC. Явные графоциклы / FOR2D - Разноцветные лучи» за 31 мин. 23 => «JC. Явные графоциклы / FOR2D - Синусоида» за 55 мин. 24 => «JC. Явные графоциклы / FOR2D - Тройные фары» за 35 мин. 25 => «JC. Явные графоциклы / FOR2D - Вложенный цикл» за 29 мин. 26 => «JC. Явные графоциклы / FOR2D - Квадратная радуга» за 1 час. 11 мин. 27 => «JC. Явные графоциклы / FOR2D - Тройной цикл» за 26 мин. − Я не собрал ни одного Мегахеша :o( На этой неделе я проходил курсы JB Шахматные классы и JC Явные графоциклы. Начал выполнять уроки по новому курсу Валерия Жданова Python3: математика. В JB я узнал как можно реализовать полиморфизм на Си, использовал эти знания для выполнения уроков. В JC повторил работу с графикой. В курсе Python3 начал знакомство с этим языком, поэкспериментировал в реализации исключений, создал свой список, которые схож с списком в Python3. На следующей неделе планирую пройти курс JD Коллекции и продолжу выполнять курс Python3. |
|||
JC. Явные графоциклы FOR2D - Тройной цикл | + 6 | ||
Хороший пример добавления новой функции drawCircle на базе drawOval. Повторил работу с циклами, сделал круги разноцветными. |
|||
JC. Явные графоциклы FOR2D - Квадратная радуга | + 6 | ||
Научился устанавливать цвет с помощью rgb-компонентов. Повторил работу со вложенными циклами, оператором остатка от деления %. |
|||
Python3: математика Бесконечный while | + 10 | ||
Интересно получается, благодаря дополнениям формулистки Trira в курс налету были внесены изменения. Думаю приятно вписать себя в историю и чувствовать полезность своих наработок для других :) Кроме того, был продемонстрирован синтаксис и применение цикла while. Узнал что истина - True пишется с большой буквы. Научился перехватывать Ctrl+C и выходить из бесконечного цикла. |
|||
Python3: математика Списки - в программу! | + 8 | ||
Научился создавать новый список и добавлять в него элементы. Узнал про комментарии в Python3. Раньше наша программа выводила текстовую информацию, а сейчас везде, даже в случае ошибки, выводится информация в виде списков; интересно :) |
|||
JC. Явные графоциклы FOR2D - Вложенный цикл | + 10 | ||
Попрактиковался во вложенных циклах, рисовании окружностей, выводе текста на форму. Написал draw11, где вывел координаты центров окружностей. |
|||
JC. Явные графоциклы FOR2D - Тройные фары | + 11 | ||
Попрактиковался в рисовании прямоугольников и окружностей. Хорошая демонстрация работы вложенных циклов. |
|||
Python3: математика Списки - немного теории | + 11 | ||
В этом уроке я научился создавать пустой список, добавлять и удалять из него элементы, очищать весь список. Добавлять один список в конец другого. Определять количество указанных элементов в списке. Написал аналогичную программу на языке Си. В Си нет списков, поэтому реализовал Python3-списки через односвязный список, реализовал все функции из видеоурока. Если я правильно понимаю, в Python3 динамическая типизация, поэтому можно свободно добавлять в списки элементы любых типов. В случае Си меньше вольностей, нужно явно указывать тип, поэтому потребовалось создать свой универсальный тип object_t на базе union, который может быть целым числом, вещественным, символом или указателем на строку. В общем, опять много пишу, сравнивая два кода могу сказать, что Python3 удобнее и лаконичнее :) |
|||
Python3: математика Проверка иных условий | + 11 | ||
Научился использовать if-elif-else в python3. Узнал, что в python3 вместо привычного || используется or. Попробовал || - syntax error. По аналогии решил проверить можно ли использовать eq вместо == ? Нет, syntax error. Не угадал, со временем привыкну к синтаксису :) |
|||
JC. Явные графоциклы FOR2D - Синусоида | + 10 | ||
Понравился способ рисования синусоиды. В качестве другой функции я выбрал косинус и нарисовал на форме фигуру из второй картинки к уроку. |
|||
JC. Явные графоциклы FOR2D - Разноцветные лучи | + 6 | ||
Написал методы draw6, draw7, draw8, draw9 для рисования лучей из 4 углов, получилась хорошая практика работы с циклами. |
|||
JC. Явные графоциклы FOR2D - Вертикали и Горизонтали | + 11 | ||
Повторил как использовать циклы для рисования линий, добавил метод draw5 для диагональных линий. |
|||
Python3: математика Обработка исключений в основной программе | + 10 | ||
В этом уроке повторение материала прошлого урока. Попрактиковался в обработке исключений, запустил программу с различными данными - строка HELLO, пустая строка, конец ввода и число 123. Реализовал схожую программу на языке Си на базе программы из прошлого урока. |
|||
Python3: математика Обработка исключений - немного теории | + 10 | ||
Научился ловить исключительные ситуации в Python3. Узнал про типы исключений ValueError, ZeroDivisionError, Exception. Набрал программу по видеоуроку, проверил на различных входных данных. Для проверки на Exception передал в качестве ввода Ctrl+D, чтобы обозначить конец ввода и, ура, Python отловил эту ошибку. Написал аналогичную программу на языке Си. Хотя в этом языке нет поддержки исключений, я помню как в одной из своих книжек автор C++ рассказывал, что механизм исключений можно реализовать через раскрутку стека с помощью парочки сишных функций setjmp/longjmp. Ну что ж, попробовал реализовать по этой схеме - получилось :) Получившаяся программа вполне схожа с программой на Python3. |
|||
JC. Явные графоциклы FOR2D - Цикловата | + 10 | ||
Добавил циклы в прошлую программу, потренировался с граничными условиями. |
|||
JC. Явные графоциклы FOR2D - Рисование по координатам | + 11 | ||
Попрактиковался в рисовании линий, нарисовал две фигуры без циклов, вспомнил графоциклы :) |
|||
Python3: математика Рефакторинг - ввод и функция | + 9 | ||
Научился вводить данные с помощью input. Если я правильно понял, input возвращает результат в виде строки, а мы далее конвертируем её в число. Научился конвертировать число в строку и конкатенировать строки. Узнал как создавать функции в Python, передавать аргументы, возвращать результат. |
|||
Python3: математика Число - на составные части | + 8 | ||
Научился создавать файл в IDLE и запускать его на исполнение. Узнал, что print сам добавляет пробелы между аргументами. |
|||
JC. Явные графоциклы FOR2D - Солнечный круг | + 6 | ||
Повторил как рисовать окружности. При изменении размера формы она заполняется новыми окружностями. Это связано с тем, что цикл вывода рисует окружности до тех пор, пока радиус следующей окружности меньше ширины И высоты панели. Так как условие выхода связано с размерностями формы, то внешние окружности не видны полностью. Поэтому я решил немного доработать, изменить условие выхода из цикла до половины размерности формы. Вывел эллипсы вместо окружностей. |
|||
JC. Явные графоциклы FOR2D - Линия и Круг | + 9 | ||
Научился рисовать линии, окружности, прямоугольники, выводить текст с помощью Java Swing. |
|||
Python3: математика Математические операции в python3 | + 13 | ||
Узнал про оператор возведения в степень ** и оператор целочисленного деления //. Научился создавать переменные в Python и выводить их значение с помощью print. |
|||
Python3: математика Погружение в python3 | + 14 | ||
Давно хотел взяться за изучение Python, правда, у меня был другой план - сначала набраться опыта с bash, потом перейти на Perl и только потом на великий Python. Но тут случилось неожиданное :) Валерий Жданов выпустил новый курс, и я на протяжении нескольких последних дней наблюдаю как формулисты активно выполняют по нему уроки. Решил и я начать. Так что погружаюсь в Python, опыта в нём совсем нет, будет интересно :) |
|||
JB. Шахматные классы CHESS - Шахматный конструктор | + 7 | ||
Создал конструкторы для всех шахматных классов, понравились конструкторы для белых и черных пешек. Создал все белые и шахматные фигуры, применил к каждой метод move, вывел на экран результат. |
|||
JB. Шахматные классы CHESS - Чудеса Абстракционизма | + 7 | ||
Сделал класс Pawn абстрактным, добавил два новых класса для белой и черной пешки, реализовал в каждом соответствующий метод move. |
|||
JB. Шахматные классы CHESS - Перебор фигур | + 6 | ||
Создал список ArrayList<Figure>, заполнил его фигурами, перебрал в цикле все элементы списка и вызвал для каждого метод move. Научился использовать полиморфизм в Java. Реализовал схожую программу на языке Си. |
|||
JB. Шахматные классы CHESS - Фигурное катание | + 10 | ||
Создал класс Figure, перенёс в него поля x, y, price. Создал абстрактный метод move, выполнил наследование шахматных "тварей" - дважды встретил это слово в задании :) Добавил в каждый класс-наследник метод move. |
|||
JB. Шахматные классы CHESS - Координаты фигур | + 11 | ||
Добавил в каждый класс поля x, y, price и метод move. Вывел цену всех фигур. Повторяющиеся поля можно вынести в новый класс Figure, от которого можно наследовать все классы шахматных фигур. |
|||
JB. Шахматные классы CHESS - Классные фигуры | + 9 | ||
Создал 6 классов в программе Java, буквально вывел на экран rook. Аналогично написал программу на Си, вместо магического числа после Rook@ вывел адрес этой переменной на стеке. |
|||
Дневник успеха 2019-01-27 : Хочешь жить - умей вертеться! | + 9 | ||
За эту неделю: + Я проверил 214 отчётов у 49 формулистов. + Я написал 12 сообщений 4 формулистам общим объёмом 4 килобуквы − Я не набрал ни одного текста :o( + Я решил 12 задач: 1 => «Математика / Гиперкуб» на 100% 2 => «Математика / Тригонометрия» на 100% 3 => «Математика / Формула» на 100% 4 => «Математика / Дробная таблица» на 100% 5 => «Математика / Таблица» на 100% 6 => «Математика / Параметрическая функция» на 100% 7 => «Любимые циклы / Барабанная дробь» на 100% 8 => «Любимые циклы / Гармония» на 100% 9 => «Любимые циклы / Двойной факториал» на 100% 10 => «Любимые циклы / Фибоначчи» на 100% 11 => «Любимые циклы / Тройная степень» на 100% 12 => «Любимые циклы / Метод Горнера» на 100% + Я выполнил 16 видеоуроков: 1 => «JA. Классные пакеты / CLASS - Кошкин дом» за 21 мин. 2 => «JA. Классные пакеты / CLASS - Пакеты для зверей» за 25 мин. 3 => «JA. Классные пакеты / CLASS - Красная книга» за 1 час. 50 мин. 4 => «JA. Классные пакеты / CLASS - Зоопарк» за 56 мин. 5 => «JA. Классные пакеты / CLASS - Звериное наследство» за 47 мин. 6 => «JA. Классные пакеты / CLASS - Три заветных слова» за 1 час. 50 мин. 7 => «JA. Классные пакеты / CLASS - Общий голос» за 17 мин. 8 => «JA. Классные пакеты / CLASS - Модификаторы доступа» за 10 мин. 9 => «JA. Классные пакеты / CLASS - Подготовка к зачёту - Вспомним дроби» за 32 мин. 10 => «JA. Классные пакеты / CLASS - Зачётная задача № 1» за 1 час. 47 мин. 11 => «JA. Классные пакеты / CLASS - Зачётная задача № 2» за 3 час. 5 мин. 12 => «JA. Классные пакеты / CLASS - VIP - Крутятся пластинки» за 3 час. 23 мин. 13 => «JA. Классные пакеты / CLASS2 - Человекостудент» за 13 мин. 14 => «JA. Классные пакеты / CLASS2 - Европейская Прибалтика» за 26 мин. 15 => «JA. Классные пакеты / CLASS2 - Напиток Наследника» за 34 мин. 16 => «JA. Классные пакеты / CLASS2 - Песец Членистоногий» за 59 мин. − Я не собрал ни одного Мегахеша :o( На этой неделе завершил курс JA Классные пакеты. Попробовал писать ООП программы на Си, одновременно сравнивая с Java. В JA рассматривалась тема создания классов, немного инкапсуляции и наследования. Полиморфизма не было. Поэтому эта забавная тема дурачиться с Си в ООП для меня не раскрыта, буду продолжать следующие курсы JB, JC в этом направлении. На следующей неделе планирую пройти курсы JB Шахматные классы и JC Явные графоциклы. |
|||
JA. Классные пакеты CLASS2 - Песец Членистоногий | + 9 | ||
Попал на урок биологии, узнал, что лисицы оказывается чем-то связаны с собаками и волками. Создал иерархию наследования из 39 классов, практически все сделал абстрактными, кроме тех классов, которые указаны в разделе Вид. |
|||
JA. Классные пакеты CLASS2 - Напиток Наследника | + 8 | ||
Проставил наследование среди указанных классов, надеюсь, я правильно уловил идею Евгения Витольдовича. Нарисовал диаграмму на сайте draw.io. Я не нашел специального блока для абстрактного класса. Позже узнал, что для отображения абстрактного класса используется блок обычного класса, но имя класса пишется курсивом. Век живи - век учись :) |
|||
JA. Классные пакеты CLASS2 - Европейская Прибалтика | + 13 | ||
На мой взгляд, нет смысла создавать классы Lithuania, Latvia, Estonia - это просто объекты, экземпляры класса Country. А классы Baltic и Europe - это обычные контейнеры, в которых хранится список объектов класса Country. Но по заданию требуется сделать нечто иное, использовать наследование, возможно даже среди всех классов :D Поэтому нашёл какое-то странное среднее решение, учитывая все задания со звёздочками. На первой картинке иерархия, на второй - факт того, что программа компилируется и запускается. |
|||
JA. Классные пакеты CLASS2 - Человекостудент | + 13 | ||
Студент - это человек. Переписал программу с картинки к уроку, указал extends в объявлении класса Student. Перенёс классы внутрь класса Program, возникла ошибка чего-то там со статиками. Создал объект класса Program, добавил нестатичный метод doit, перенёс в него весь код. |
|||
JA. Классные пакеты CLASS - VIP - Крутятся пластинки | + 11 | ||
В этом уроке я научился воспроизводить музыкальные файлы с помощью языка Java. Скачал 2 wav-файла с предложенного сайта, переписал программу с картинки к уроку, всё сразу заработало :) Потом приступил к программе на Си. В арсенале стандартной библиотеки нет возможности производить музыкальные файлы, в системных вызовах тоже нет. Остается выбор среди пользовательских библиотек. Раньше я использовал библиотеку PulseAudio, но она довольно-таки низкоуровневая. В уроке английские карточки я использовал libvlc для воспроизведения звука и видео. Сейчас решил попробовать что-то новенькое. Остановился на игровой библиотеке SDL2, там есть работа со звуком. Написал аналогичную программу на Си и для демонстрации вывода звука записал видео. |
|||
JA. Классные пакеты CLASS - Зачётная задача № 2 | + 15 | ||
Создал класс FractionRW на базе классе Fraction. Добавил в него методы read и write. Реализовал вывод дроби в три строчки. Написал программу, которая спрашивает пользователя ввести дроби для выполнения сложения, вычитания, умножения и деления. Аналогично, создал схожую программу на языке Си. |
|||
JA. Классные пакеты CLASS - Зачётная задача № 1 | + 13 | ||
Написал класс Fraction, создал в нём конструктор, методы сложения, вычитания, умножения и деления дробей. Добавил метод simplify для упрощения дроби. Проверил работу программы на примерах из предыдущего урока. Добавил свой пример, в котором проверяется работа метода simplify. Написал "аналогичную" программу на Си, проверил на тех же примерах. В программе на Си немного сжульничал, не хочу возиться с кучей там где без неё можно обойтись, поэтому новые дроби создаю на стеке поверх старых. В Java, насколько я понимаю, каждая новая дробь создаётся в куче, а перезаписывается только ссылка, добрый сборщик мусора сам приберёт недоступные объекты :) |
|||
JA. Классные пакеты CLASS - Подготовка к зачёту - Вспомним дроби | + 15 | ||
Вспомнил школьную математику, прорешал примеры по заданию. Для класса Fraction нужны два поля: числитель и знаменатель. Можно добавить третье поле - целое число дроби. Методы: суммирования, вычитания, умножения и деления дробей. |
|||
JA. Классные пакеты CLASS - Модификаторы доступа | + 12 | ||
Познакомился с модификаторами доступа к полям и методам в языке Java. Если модификатор не указан, то считается, что модификатор доступа package. |
|||
JA. Классные пакеты CLASS - Общий голос | + 8 | ||
Повторил как создавать базовый и производный классы, инициализировать переменную в базовом классе из конструктора производного класса. |
|||
JA. Классные пакеты CLASS - Три заветных слова | + 12 | ||
Повторил как наследовать классы в Java, создавать поля и методы в базовом классе и использовать их в наследнике. В методе voice кроме голоса добавил вывод клички животного. Аналогично создал Си-код со схожей функциональностью Java-кода. Наследование - это создание нового класса на базе другого класса. |
|||
JA. Классные пакеты CLASS - Звериное наследство | + 15 | ||
Написал Java-код, скомпилировал, запустил. Аналогично создал Си-код, в котором есть схожая реализация Java-кода. |
|||
JA. Классные пакеты CLASS - Зоопарк | + 14 | ||
Научился вкладывать один пакет в другой, повторил как создавать jar-архивы. Выполнил аналогичные действия для Си. P.S. Трудно представить, как разговаривает орёл или щука, поэтому я для новых зверей просто вывел факт их "голоса" :) |
|||
JA. Классные пакеты CLASS - Красная книга | + 12 | ||
В этом уроке я научился создавать jar-архив, делать его запускаемым. Проверил работу программы, скопировав jar-файл в другую директорию. Аналогично выполнил решения для Си. Для создания архива использовал утилиту ar. Правда в этом случае архив не является самозапускаемым, поэтому файлы кота и собаки ушли в архив, а animal статически линкуется к этом архиву и содержит main-функцию, в результате чего получается исполняемое приложение, как в случае с Java. |
|||
JA. Классные пакеты CLASS - Пакеты для зверей | + 11 | ||
Создал папку animal, перенёс в неё зверей. В моём случае нет пакетов, всё гораздо примитивнее, нужно явно указывать файлы для компиляции и пути поиска. Процесс можно автоматизировать, но я пока что всё делаю вручную и следую пути курса :) |
|||
JA. Классные пакеты CLASS - Кошкин дом | + 10 | ||
Создал кошкин дом и собачкин дом. Кошкин дом "не зависит" от собак, а собачкин дом от котов. В моём случае нужно явно указывать компилятору какие файлы компилировать, поэтому феерическая магия по поиску файлов как в Java не сработала :) |
|||
Дневник успеха 2019-01-20 : Уменье и труд все перетрут. | + 15 | ||
За эту неделю: + Я проверил 140 отчётов у 49 формулистов. + Я написал 13 сообщений 7 формулистам общим объёмом 4 килобуквы − Я не набрал ни одного текста :o( + Я решил 13 задач: 1 => «Узник цикла IF / Делитель» на 100% 2 => «Узник цикла IF / Сумма делителей» на 100% 3 => «Узник цикла IF / Плюс-минус» на 100% 4 => «Последовательность / Минимальное и максимальное число» на 100% 5 => «Последовательность / Новая последовательность» на 100% 6 => «Последовательность / Максимальный элемент» на 100% 7 => «Последовательность / Больше суммы предыдущих» на 100% 8 => «Последовательность / Больше суммы всех предыдущих» на 100% 9 => «Последовательность / Между соседями» на 100% 10 => «Математика / Модуль» на 100% 11 => «Математика / Косинусы» на 100% 12 => «Математика / Корни» на 100% 13 => «Олимпиада / Случайная задача» на 100% + Я выполнил 16 видеоуроков: 1 => «J7. Экзамен / EGZ - Зачётная задача - Треугольник» за 4 час. 37 мин. 2 => «J8. Циклопы / LOOP - Мужской / женский цикл» за 38 мин. 3 => «J8. Циклопы / LOOP - Пока четыре цикла» за 51 мин. 4 => «J8. Циклопы / LOOP - Блок-схема цикла FOR» за 29 мин. 5 => «J8. Циклопы / LOOP - Три части Forа» за 37 мин. 6 => «J8. Циклопы / LOOP - Сумма и Произведение» за 28 мин. 7 => «J8. Циклопы / LOOP - Вся коллекция циклов» за 1 час. 31 мин. 8 => «J8. Циклопы / LOOP - Цикл for» за 37 мин. 9 => «J8. Циклопы / LOOP - Счастливые билеты» за 15 мин. 10 => «J8. Циклопы / LOOP - Цикл for/each» за 34 мин. 11 => «J8. Циклопы / LOOP - Развёртка цикла» за 45 мин. 12 => «J9. Массивы / ARRAY - Целый массив» за 7 мин. 13 => «J9. Массивы / ARRAY - Максима Массива» за 15 мин. 14 => «J9. Массивы / ARRAY - Макси в Мини» за 12 мин. 15 => «JA. Классные пакеты / CLASS - Кошка и Собака» за 35 мин. 16 => «JA. Классные пакеты / CLASS - Каждой тваре по файлу» за 22 мин. − Я не собрал ни одного Мегахеша :o( На этой неделе я завершил раздел J7, написал программу треугольник. Как и планировал на прошлой неделе, выполнил уроки из J8 J9. В качестве бонуса, в одном из уроков J9 научился замерять время работы программы. В воскресенье, то есть сегодня, приступил к курсу JA, классные пакеты. Планирую завершить его к концу следующей недели. |
|||
JA. Классные пакеты CLASS - Каждой тваре по файлу | + 15 | ||
Повторил как создавать заголовочный файл, компилировать файлы. Выполнил задание по уроку, сначала скомпилировал файлы по отдельности, потом собрал исполняемый файл. Затем сразу из исходников собрал исполняемый файл. |
|||
JA. Классные пакеты CLASS - Кошка и Собака | + 17 | ||
Решил немного подурачиться, написать ООП программу на языке Си и посмотреть что в итоге получится. Выполнил задание по уроку, создал "классы" Cat и Dog, добавил в каждый из них метод voice. Вывод программы на экран аналогичен по заданию. |
|||
J9. Массивы ARRAY - Макси в Мини | + 13 | ||
Попробовал новый синтаксис создания динамических массивов, создал массив из указанного количества элементов, заполнил данными, нашел максимальный и минимальный элементы, поменял их местами. Нравится подход Евгения Витольдовича, когда программы создаются на базе прежних наработок. Это заметно в этих мини-курсах и в задачах из раздела Консоль. |
|||
J9. Массивы ARRAY - Максима Массива | + 13 | ||
Повторил как создавать динамический массив указанного размера и находить в нём максимальный элемент. Тексты сообщений оставил оригинальными, как на картинке к заданию, на литовском :) |
|||
J9. Массивы ARRAY - Целый массив | + 14 | ||
Повторил как создавать массив, размер которого известен на этапе компиляции. Заполнил его квадратами индексов и вывел на экран. |
|||
J8. Циклопы LOOP - Развёртка цикла | + 13 | ||
Написал код по уроку, в первом случае ведётся подсчёт суммы с помощью цикла, во-втором - без него. Обернул каждый вариант в цикл из 1 000 000 000 итераций. Замерил время выполнения. В первом случае время выполнения составило 3585 мс, во-втором 1889 мс. В итоге, развёртка сократила время выполнения в два раза. |
|||
J8. Циклопы LOOP - Цикл for/each | + 12 | ||
Создал массив, список, множество. Заполнил их данными и вывел на экран с помощью нового синтаксиса цикла for. Добавил вывод аргументов командной строки. |
|||
J8. Циклопы LOOP - Счастливые билеты | + 13 | ||
Написал программу подсчёта 6-значных счастливых билетов, вывел их список и количество. |
|||
J8. Циклопы LOOP - Цикл for | + 12 | ||
Больше всего понравился последний пример, где сначала выводятся числа от 1 до 9 включительно, а потом от 10 до 1 включительно. В C++ предпочтительнее использовать != вместо < > <= >=, в случае сравнения итераторов. Итераторы бывают разных типов, например ввода, вывода, однонаправленные, двунаправленные или произвольного доступа. Если в цикле использовать < вместо !=, то цикл можно использовать только с итераторами произвольного доступа, например обычный указатель. С другими итераторами код не скомпилируется, так как у них не определен оператор <. Код получается негибкий, необобщённый. Ещё одна причина использования != или == в том, что они якобы быстрее, особенно если сравнивать с 0, но это не точно, могу ошибаться :) В остальных случаях, конечно, использовать < вместо != безопаснее, не проскочешь пороговое значение по нелепости :) |
|||
J8. Циклопы LOOP - Вся коллекция циклов | + 12 | ||
Так как прохожу уроки на языках C/C++, то напишу факт про циклы в этих языках. Условие проверки, как обычно, может быть истиной или ложью. Если условие истинно, то цикл выполняется, если ложь - нет. Но в отличие от Java, в этих языках истиной является любое выражение, которое не равно 0. Например, 123, -987, 3.14, 'a', "Hello World" - всё это является истиной, в том смысле, что оно не равно 0. 123 != 0 -987 != 0 3.14 != 0 'a' != 0, так как если на машине где запущена программа базовой кодировкой является ASCII, то 'a' == 97 ==> 97 != 0. "Hello World!" != 0, так как строка "Hello World" по сути это обычный статичный массив, который скорее всего хранится где-то в сегменте кода программы, у этого массива есть адрес, он точно не равен нулю, так как любой объект имеет адрес не равный нулю. Пусть его адрес 0xfe. Значит в этом выражении мы сравниваем некое значение 0xfe != 0, что является истиной, значит цикл выполнится :) |
|||
J8. Циклопы LOOP - Сумма и Произведение | + 13 | ||
Повторил как находить сумму и произведение последовательностей чисел с помощью цикла for. Добавил по третьему заданию цикл для подсчета чисел от 1 до 10 кратных 3. Все три цикла разместил в одной программе вместо трёх отдельных для экономии места на скриншотах. |
|||
J8. Циклопы LOOP - Три части Forа | + 11 | ||
Хороший урок, наглядно показывается за что отвечает каждая часть цикла for. Я немного изменил вывод циклов, чтобы числа выводились в строчку, так как в столбик получаются вытянутые скриншоты. Думаю формулистами неудобно листать вниз страничку, чтобы оценить работу или прочитать комментарии. Как обычно, добавил тест после пройдённого урока, надеюсь формулировка не запутанная :) |
|||
J8. Циклопы LOOP - Блок-схема цикла FOR | + 8 | ||
Попрактиковался в цикле for. Создал цикл, который не выполнится ни разу. Организовал бесконечный цикл, пустой цикл. |
|||
J8. Циклопы LOOP - Пока четыре цикла | + 11 | ||
Вывел четырьмя разными способами числа от 1 до 10. Когда вводил второй вариант мне показалось странным, что number = 0, вместо 1. Набрал программу на Си как по заданию, программа вывела список от 0 до 10. 0 лишний. Заменил на 1, сработало как надо. Вообще говоря, в Си нежелательно передавать в функции в качестве аргументов значения с side-effects (например number++ или вызов других функций), мало ли, вдруг эта функция на самом деле является макросом, жди причудливых результатов. Потом решил-таки проверить Java-вариант на предмет какой-нибудь неведомой мне магии :) Он тоже сработал как Си-вариант, выводит от 0 до 10. Вывод - ошибка в коде задания. Спокойно выдохнул, никакой магии тут нет :) Мой вариант: цикл 5 представляет собой вариацию цикла 4, отличие в том, что я сначала увеличиваю число, проверяю, а потом печатаю. |
|||
J8. Циклопы LOOP - Мужской / женский цикл | + 12 | ||
Вывел числа от 0 до 4 и от 4 до 0 с помощью циклов while и do-while. |
|||
J7. Экзамен EGZ - Зачётная задача - Треугольник | + 14 | ||
Написал сначала консольную программу, потом приступил к заданию 4: решить задачу с помощью JFrame (в моём случае GTK) и нарисовать треугольник. Перенос с консольного решения на оконное получился быстро, основное время ушло на подсчет координат выводимого треугольника. Чтобы треугольник с небольшими длинами сторон не казался крошечным и результат получился более презентабельным, добавил масштабирование треугольника под размер области вывода. |
|||
Дневник успеха 2019-01-13 : Ученый без дела, как туча без дождя. | + 11 | ||
За эту неделю: + Я проверил 106 отчётов у 44 формулистов. + Я написал 7 сообщений 2 формулистам общим объёмом 4 килобуквы − Я не набрал ни одного текста :o( + Я решил 12 задач: 1 => «Обман цикла / Цифра три» на 100% 2 => «Обман цикла / Вечное ожидание» на 100% 3 => «Точка и плоскость / Четверть плоскости» на 100% 4 => «Точка и плоскость / Прямоугольник» на 100% 5 => «Точка и плоскость / Ромб» на 100% 6 => «Точка и плоскость / Круг» на 100% 7 => «Точка и плоскость / Часть круга» на 100% 8 => «Точка и плоскость / Квадрат» на 100% 9 => «Узник цикла IF / Девять чисел» на 100% 10 => «Узник цикла IF / Нули» на 100% 11 => «Узник цикла IF / Три тройки» на 100% 12 => «Олимпиада / Случайная задача» на 100% + Я выполнил 15 видеоуроков: 1 => «J5. Операции / OPER - Операции 5-6» за 54 мин. 2 => «J5. Операции / OPER - Операции 7-11» за 2 час. 2 мин. 3 => «J5. Операции / OPER - Операции 12-13» за 35 мин. 4 => «J6. Условия / IF - Минимакс» за 24 мин. 5 => «J6. Условия / IF - Тетрамакс» за 39 мин. 6 => «J6. Условия / IF - Альтернатива» за 36 мин. 7 => «J6. Условия / IF - Безальтернативное условие» за 1 час. 1 мин. 8 => «J6. Условия / IF - Барный фейс-контроль» за 18 мин. 9 => «J6. Условия / IF - Quiz» за 1 час. 12 мин. 10 => «J6. Условия / IF - Оператор выбора» за 27 мин. 11 => «J6. Условия / IF - Времена года» за 17 мин. 12 => «J7. Экзамен / EGZ - Подготовка к зачёту» за 2 час. 20 мин. 13 => «J7. Экзамен / EGZ - Шаблон решения» за 42 мин. 14 => «J7. Экзамен / EGZ - Зачётная задача - Максима» за 31 мин. 15 => «J7. Экзамен / EGZ - Зачётная задача - Евро» за 3 час. 44 мин. − Я не собрал ни одного Мегахеша :o( На этой неделе я выполнял мини-курсы J5-J6 по языку Java. Начал выполнять экзаменационные задачки из J7. На следующей неделе планирую заверить J7 и продолжить дальше J8, J9. Вперёд к циклам и массивам :) |
|||
J7. Экзамен EGZ - Зачётная задача - Евро | + 9 | ||
Написал программу по заданию, реализовал ввод через аргументы командой строки, файл или с клавиатуры. Возникли проблемы с выделением дробной части числа - центов. Если просто умножить разницу между ценой и целой частью на 100, то иногда возникали проблемы с округлением и результат был некорректный. Я попробовал изменить режим округления чисел с плавающей точкой, но это не помогло. В общем говоря, эта лотерея с округлением мне не понравилась, поэтому потребовалось иначе организовать ввод числа. Я разбил ввод на три части: ввод евро, потом проверка на точку или пробельный символ и, по необходимости, ввод центов. После этого программа уверенно заработала, проверил на примерах из картинки к заданию. Выделить центы из цены. |
|||
J7. Экзамен EGZ - Зачётная задача - Максима | + 11 | ||
Написал программу по шаблону прошлого урока. Ввод данных такой же, разница между этой программой и предыдущей в обработке данных и выводе результата. |
|||
J7. Экзамен EGZ - Шаблон решения | + 9 | ||
В целом, моя программа схожа с правильным решением, у меня тоже сначала идет проверка источника данных - либо из аргументов командной строки, либо ввод из клавиатуры. Есть проверка на ошибки, хотя, у меня более строгий формат для ввода в связи с другим форматом ввода чисел. Если введён один или более двух аргументов, то я в своей программе принял это за ошибку, в правильном решении это просто игнорируется и далее идёт ввод с клавиатуры. Далее, в правильном решении числа вводятся на одной строке, у меня по очереди, на разных, после приглашения ко вводу. В целом, это мелочи, о них не было точно и подробно оговорено в задании, поэтому можно сказать, что решения схожи :) |
|||
J7. Экзамен EGZ - Подготовка к зачёту | + 7 | ||
Написал программу по заданию. Ввод данных организован через аргументы командной строки либо через клавиатуру после запуска. Если количество аргументов равно двум и они оба являются целыми числами, то пользователь не запрашивается для ввода аргументов. Добавил в программу обработку ошибок. Собственно говоря, львиная доля кода посвящена обработке ошибок. Аргументов может быть больше двух, они могут быть вещественными числами, вне диапазона целых чисел или вообще быть строчками. Так как мы еще не проходили циклы и функции, вся обработка ведется в функции main, много дублирования кода. С другой стороны, отсутствие циклов стимулировало на дополнительное изучение материала и изворачивание, например, чтобы в строке было только одно число, а не два или любой другой текст, кроме пробельных символов. Интересно посмотреть на реализацию этой программы в следующем уроке :) |
|||
J6. Условия IF - Времена года | + 9 | ||
Написал программу, которая по номеру месяца выдаёт время года. Программу для дня недели написал на прошлом уроке. |
|||
J6. Условия IF - Оператор выбора | + 9 | ||
Повторил работу с инструкцией switch, дополнительно почитал про типы допустимых данных в условии проверки. Написал программу из урока, которая по номеру дня недели выдаёт название дня недели. |
|||
J6. Условия IF - Quiz | + 10 | ||
Выполнил 16 тестов, из них 12 ответов верные, 4 нет. Самый первый неверный ответ был результатом невнимательности, я поторопился и забыл, что операторы && и || позволяют оптимизировать вычисления, если по левому операнду уже понятен результат всего выражения. На первом скриншоте этот тест. Вторая ошибка в тесте, где Java не разрешает компилировать программу, где происходит обращение к неинициализированной переменной. Третья ошибка в том, что в Java выражение проверки в инструкции if должно иметь логический тип, поэтому if (a = b) не скомпилируется. Четвертая ошибка, это скорее ошибка в самом тесте, опечатка. Я ради проверки набрал программу из задания и она вернула другой ответ, не тот, что якобы правильный. На втором скриншоте результат работы программы. По условию вводится строка MeirtCampus, создатели теста скорее всего хотели указать MeritCampus, но опечатались :) |
|||
J6. Условия IF - Барный фейс-контроль | + 15 | ||
Попрактиковался со сложенными инструкциями if-else, расширил программу Beer Shop, чтобы она не задавала лишние вопросы. |
|||
J6. Условия IF - Безальтернативное условие | + 12 | ||
Повторил оператор %, узнал что прожитые дни тоже могут быть юбилейными :) Написал программу из урока, добавил вычисление количества дней до следующего юбилея. Расширил программу "Сколько мне дней", добавил вывод информации о юбилейном количестве дней. |
|||
J6. Условия IF - Альтернатива | + 14 | ||
Повторил как создавать цепочку if-else вызовов, написал программу beershop из видеоурока. |
|||
J6. Условия IF - Тетрамакс | + 11 | ||
Повторил как считывать строку из стандартного ввода, конвертировать строку в число, использовать инструкцию if для поиска максимального из 4 чисел. |
|||
J6. Условия IF - Минимакс | + 9 | ||
Повторил работу с инструкцией if и тернарным оператором. Выполнил задание 3, добавил поиск минимума и максимума из трёх чисел. |
|||
J5. Операции OPER - Операции 12-13 | + 11 | ||
Повторил работу с тернарным оператором и оператором присваивания. На этом мини-курс по операторам закончился, для меня он оказался весьма полезным, как и предыдущие курсы. Я давно хотел поглубже разобраться с базой языка, чтобы более уверенно создавать программы :) |
|||
J5. Операции OPER - Операции 7-11 | + 10 | ||
В этом уроке я попрактиковался с операторами &, | ^, && и ||, проверил работу побитовых операторов на примере двух чисел 0xA9 и 0x4B. В языке Си нет форматированного вывода чисел в бинарном виде, поэтому написал свою функцию, которая создает в буфере строку, содержащую двоичное представление указанного числа. |
|||
J5. Операции OPER - Операции 5-6 | + 10 | ||
Повторил работу с операторами сравнения > >= < <= == !=. В программе проверил результаты сравнения для целых чисел 7 и 5. Убедился в том, что числа с плавающей точкой следует сравнивать в пределах небольшого интервала epsilon. Для теста создал переменную 3.14, умножил ее на 1e-10 и разделил на 1e-10. По логике, должно было получиться прежнее число 3.14, но в результате программа выдает 3.139999... При обычном сравнивании 3.14 == 3.13999... программа выдает false, если же сравнивать через eps = 1e-10 -> |3.14 - 3.139...| < eps то результат true. |
|||
Дневник успеха 2019-01-06 : Какие труды, такие и плоды. | + 10 | ||
За эту неделю: + Я проверил 158 отчётов у 50 формулистов. + Я написал 2 сообщения 2 формулистам общим объёмом 1 килобуква − Я не набрал ни одного текста :o( + Я решил 11 задач: 1 => «Do-рацикл / Сумма последовательности» на 100% 2 => «Do-рацикл / Меньше ε» на 100% 3 => «Do-рацикл / Снова меньше ε» на 75% 4 => «Do-рацикл / По модулю меньше ε» на 100% 5 => «Обман цикла / Делим без остатка» на 100% 6 => «Обман цикла / Без пятерок» на 100% 7 => «Обман цикла / Множитель» на 100% 8 => «Обман цикла / Делитель Макса» на 100% 9 => «Обман цикла / Делитель Мина» на 100% 10 => «Олимпиада / Случайная задача» на 100% 11 => «OPER - Формулы / Формула 0100» на 100% + Я выполнил 15 видеоуроков: 1 => «J3. Ввод / READ - Чтение символа» за 25 мин. 2 => «J3. Ввод / READ - Ввод трёхзначного числа» за 16 мин. 3 => «J3. Ввод / READ - Сканер» за 32 мин. 4 => «J3. Ввод / READ - Сканер пива» за 35 мин. 5 => «J3. Ввод / READ - Сколько мне дней» за 4 час. 19 мин. 6 => «J3. Ввод / READ - Любая формула» за 30 мин. 7 => «J3. Ввод / READ - Буферный чтец» за 57 мин. 8 => «J4. Типы / TYPE - Целые примитивные типы» за 4 час. 16 мин. 9 => «J4. Типы / TYPE - Вещественные примитивные типы» за 41 мин. 10 => «J4. Типы / TYPE - Логический и Символьный примитивные типы» за 1 час. 42 мин. 11 => «J4. Типы / TYPE - Непримитивный тип String» за 1 час. 20 мин. 12 => «J5. Операции / OPER - Операции 1» за 1 час. 6 мин. 13 => «J5. Операции / OPER - Операции 2» за 41 мин. 14 => «J5. Операции / OPER - Операции 3» за 3 час. 38 мин. 15 => «J5. Операции / OPER - Операции 4» за 50 мин. − Я не собрал ни одного Мегахеша :o( На этой неделе я выполнял уроки по мини-курсами Java, на следующей неделе продолжу эти мини-курсы. |
|||
J5. Операции OPER - Операции 4 | + 10 | ||
Повторил работу с битовыми операциями, узнал про оператор >>> в языке Java. |
|||
J5. Операции OPER - Операции 3 | + 9 | ||
В языке Си нет оператора конкатенации строк, поэтому я использовал C++. Для реализации схожего Java-кода из урока потребовалось создать свой шаблон класса числа Num, изучить пользовательские литералы. Давно хотел опробовать эти литералы, спасибо! :) |
|||
J5. Операции OPER - Операции 2 | + 10 | ||
Попрактиковался в операторах * / % + -. Написал программу, в которой проверил примеры из урока. В случае выражения byte x = 100 + 50 - 30, в программе на языке Си все отрабатывает корректно, так как константы имеют тип int, все вычисления проводятся в типе int, далее вычисляется результат 120, который конвертируется в тип, диапазон которого -128..+127. Результат 120 умещается в данный диапазон. Даже если указать byte x = (byte)100 + (byte)50 - (byte)30, то все равно вычислится 120, так как самый нижний базовый тип для вычислений в языке Си это int. На втором скриншоте это видно. Любой тип, пусть хоть bool, char или short сначала повышается или продвигается минимум до int, все вычисления минимум на int, а результат уже конвертируется в нужный тип. |
|||
J5. Операции OPER - Операции 1 | + 9 | ||
Попрактиковался с операторами ++, --, ~, !. Написал программу, которая проверяет работу этих операторов. Ура, я вновь увидел тесты к уроку, и, как обычно, составил свой :) |
|||
J4. Типы TYPE - Непримитивный тип String | + 10 | ||
Научился определять длину расширенной строки, копировать строки, конкатенировать. Набрал пример из урока, сконкатенировал строки "дом" и "2", получилось "дом2" :D. В моем случае нет отдельного типа String, поэтому я его смоделировал вручную, создав схожую immutable-реализацию. Проверил оптимизацию компилятора на хранение по одному адресу одинаковых строковых констант. Радует то, что оптимизация работает даже без дополнительных ключей компилятора :) |
|||
J4. Типы TYPE - Логический и Символьный примитивные типы | + 11 | ||
Научился проверять является ли символ буквой или является ли он буквой в нижнем регистре. Написал программу, в которой проверяю эти критерии для цифры 7, символа +, русских букв д, Щ, английских букв D, w. Также научился использовать логический тип данных, составил таблицу истинности для функций & | ^. |
|||
J4. Типы TYPE - Вещественные примитивные типы | + 8 | ||
В этом уроке я увидел разницу в точности между типами данных float и double на примере суммы 1e8 + 1e-8 и вывода числа Пи. |
|||
J4. Типы TYPE - Целые примитивные типы | + 10 | ||
В этом уроке я научился использовать платформо-независимые типы данных, выводить их на экран. Ура, я впервые встретил тесты по ходу прохождения курса :) Крутая штука, позволяет контролировать процесс обучения. Выполнил все тесты и создал свой. |
|||
J3. Ввод READ - Буферный чтец | + 16 | ||
Научился перенаправлять стандартный поток ввода на ввод из файла с помощью функции freopen. Один и тот же код выполняет ввод данных как из терминала, так и из файла. |
|||
J3. Ввод READ - Любая формула | + 18 | ||
Выбрал формулу 0100, повторил работу с математическими функциями, написал программу, проверил результаты вручную и с помощью робота явы. |
|||
J3. Ввод READ - Сколько мне дней | + 17 | ||
Очередной сюрприз, тема раздела ввод данных, а в этой программе используется календарь :) Мне 11256 дней. Научился работать с функциями календаря стандартной библиотеки, выполнил задание 5 - ввод даты рождения с клавиатуры. |
|||
J3. Ввод READ - Сканер пива | + 13 | ||
Узнал про спецификатор формата %[], научился считывать строку символов в фиксированный по длине буфер. |
|||
J3. Ввод READ - Сканер | + 11 | ||
Повторил как использовать форматированный ввод для считывания чисел. Действительно, это удобнее, чем считывать цифры по-символьно и потом из них составлять число. |
|||
J3. Ввод READ - Ввод трёхзначного числа | + 12 | ||
Повторил ввод одного символа, как определить цифру по её коду, как составлять число из цифр. |
|||
J3. Ввод READ - Чтение символа | + 15 | ||
Вспомнил ASCII коды для цифры 1 и буквы A :) Повторил как считывать по-символьно информацию из потока ввода. В моем случае нет необходимости обязательно перехватывать исключения, можно обойтись проверкой состояния битов потока. Но я решил максимально приблизиться к java-программе, поэтому научился устанавливать вызов исключений в случае ошибки ввода-вывода. В качестве ошибки использовал символ конца потока (Ctrl+D в терминале). На первом скриншоте вариант с обработкой исключений в блоке try-catch. На втором - просто обычный проброс исключения наверх, как на скриншоте задания. Компьютер во втором случае был недоволен словить необработанное исключение :) |
|||
Дневник успеха 2018-12-30 : Думай ввечеру, что делать поутру. | + 11 | ||
За эту неделю: + Я проверил 114 отчётов у 40 формулистов. + Я написал 19 сообщений 8 формулистам общим объёмом 5 килобукв − Я не набрал ни одного текста :o( + Я решил 9 задач: 1 => «Пока-цикл / Трехзначные квадраты» на 100% 2 => «Пока-цикл / Сумма ряда» на 100% 3 => «Пока-цикл / Мой век» на 100% 4 => «Вечность / Неделька» на 100% 5 => «Вечность / 12 месяцев» на 100% 6 => «Вечность / Отрывной календарь» на 100% 7 => «Вечность / Високосное свидание» на 100% 8 => «Вечность / Знаки зодиака» на 100% 9 => «Олимпиада / Случайная задача» на 100% + Я выполнил 18 видеоуроков: 1 => «Начало здесь / День №6. Обучательное тестирование» за 42 мин. 2 => «Дневник успеха / Рефлексия уходящего года» за 5 час. 53 мин. 3 => «Демо игры / С# Новым годом!» за 53 мин. 4 => «J1. Запуск / START - Платформа Java» за 50 мин. 5 => «J1. Запуск / START - Переменная окружения» за 43 мин. 6 => «J1. Запуск / START - Запуск Java» за 5 мин. 7 => «J1. Запуск / START - Десять запусков» за 29 мин. 8 => «J2. Печать / WRITE - Комментарии» за 1 час. 11 мин. 9 => «J2. Печать / WRITE - Квадратные условия» за 18 мин. 10 => «J2. Печать / WRITE - Окно JFrame» за 1 час. 4 мин. 11 => «J3. Ввод / READ - Консольные аргументы» за 27 мин. 12 => «J3. Ввод / READ - Сложение аргументов» за 47 мин. 13 => «J3. Ввод / READ - Конкатенация аргументов» за 20 мин. 14 => «Система Git / win merge» за 39 мин. 15 => «Система Git / pingwin» за 54 мин. 16 => «Система Git / remote merge» за 27 мин. 17 => «Система Git / win final» за 41 мин. 18 => «Система Git / ФИНАЛЬНЫЙ КУРС» за 32 мин. − Я не собрал ни одного Мегахеша :o( На этой неделе я закончил курс "Система Git", начал выполнять серию мини-курсов по языку Java. Я поставил перед собой цель повторить синтаксис языка и открыть что-то новое, поэтому взялся за эти курсы. Познакомился с системой документации doxygen. Создал несколько тестов по пройденным урокам. На следующей неделе планирую продолжить мини-курсы по Java. |
|||
J3. Ввод READ - Конкатенация аргументов | + 9 | ||
Попрактиковался в конкатенации строк, выполнил дополнительные задания 3 и 4. Если программа запущена без аргументов, то выводится сообщение о требуемом формате запуска программы. Добавил знаки '-' между аргументами в строке результата конкатенации. |
|||
J3. Ввод READ - Сложение аргументов | + 9 | ||
Научился перехватывать исключения при конвертации строки в число с помощью функции stoi. Проверил работу программы при вводе чисел, символов, строк. |
|||
J3. Ввод READ - Консольные аргументы | + 12 | ||
Повторил работу с аргументами командной строки. Узнал про новый спецификатор формата 'z' в функции printf для типа size_t. По заданию требовалось добавить подсказки о запуске программы, если введено ноль или более одного аргумента. Добавил краткое сообщение. |
|||
J2. Печать WRITE - Окно JFrame | + 10 | ||
Давненько компьютер не ловил кучу segmentation fault, как во время выполнения этого урока. А всё дело в том, что по заданию требовалось комментировать по очереди каждую строчку программы и это выдавало весьма причудливые результаты. На первом скриншоте программа без комментариев, на втором с закомментированным добавлением метки на форму. По заданию требовалось описать результаты экспериментов по комментированию каждой строчки, ниже результаты. 1: #include <gtk/gtk.h> Ошибка компиляции. Ух, куча предупреждений, ошибки об обсутствующих функциях, макросах. Поди да и разберись в этом, а все лишь из-за того, что не включил заголовочный файл... 2: пустая строка Компилируется, запускается, все работает. А чего вы хотели, если закомментировать пустую строку? :) 3: int main(int argc, char *argv[]) Ошибка компиляция. Компилятор намекает, что должно быть что-то перед открывающейся скобкой, которая идет ниже, на 4 строке. 4: { Ошибка компиляции. Куча различных сообщений, причем разного характера, в основном касаются того, что я пытаюсь использовать выражения не в том месте, вне функции, так нет открывающейся скобки. 5: GtkWidget *frame, *label; Ошибка компиляции, не были объявлены переменные frame, label. 6: gtk_init(&argc, &argv) Программа компилируется, при запуске ловит Segmentation fault, так как не была выполнена инициализация GTK. 7: frame = gtk_window_new(GTK_WINDOW_TOPLEVEL) Успешная компиляция, после запуска выдает предупреждения о неуспешной попытке работать с объектом frame. Окно программы не показывается, но программа работает. Для завершения Ctrl+C. 8: gtk_window_set_title(GTK_WINDOW(frame), "Hello, Java!"); Программа компилируется, запускается, работает. Ошибок нет. Узнал для себя новое - если не указать заголовок окна, то вместо него пишется имя исполняемого файла. Мелочь, а приятно узнать:) 9: label = gtk_label_new("Welcome!"); Компиляция успешна. А дальше Segmentation fault! Вот тут удивило. В отличие от 7, где программа тихо-мирно как-то пыталась работать без окна приложения. 10: gtk_container_add(GTK_CONTAINER(frame), label); Программа компилируется, запускается, работает, ошибок нет. Все на месте, кроме метки :) Так как её не добавили на форму. 11-12: g_signal_connect(G_OBJECT(frame), "destroy", G_CALLBACK(gtk_main_quit), NULL); Программа компилируется, запускается, работает, ошибок нет. Ну... почти нет ошибок, кроме одной логической. При попытке закрыть приложение, нажав на крестик, кликнув на пункт меню или даже Alt+F4, окно закрывается, но приложение работает! 13: gtk_window_set_default_size(GTK_WINDOW(frame), 250, 100); Все почти окей - компилируется, запускается, метка на месте, успешно закрывается. Проблема в том, что в GTK используется динамическая компоновка виджетов и размер окна подгоняется под минимальный необходимый размер для отображения элементов. Поэтому окно очень маленькое - но метку Welcome видно полностью :) 14: gtk_widget_show_all(frame); Компиляция успешна, далее запускаю и... ничего, просто окно терминала, ожидающего заверешения работы программы. Окна приложения нет, так как мы не сказали GTK что нужно показать на экране. 15: gtk_main(); Компилиция успешна, программа запускается и сразу завершается. При комментировании этой строчки мы не попадаем в цикл обработки сообщений. 16: } Ошибка компиляции. Удивительно, он ожидает продолжения банкета! :) Ищет какое-нибудь объявление или выражение после 15 строчки. Надеюсь, не слишком много букв. Спасибо за эксперименты, сам бы вряд ли так дурачился со своей программой :) |
|||
J2. Печать WRITE - Квадратные условия | + 11 | ||
Попрактиковался во вложенных циклах, условиях во внутреннем цикле. Задание похоже на урок из курса Графоциклы, Квадрат Гарри Поттера, но там эти заклинания нужно было составить самому по рисункам :) |
|||
J2. Печать WRITE - Комментарии | + 11 | ||
Портал videosharp поражает уже в который раз. Начал делать просто урок по типам комментариев, а узнал дополнительно про автоматическую документацию исходного кода. Для этого в Java применяется утилита javadoc, а для языка Си я еще давным-давно в интернете часто видел приятную единообразную документацию по библиотекам, где внизу html-страницы было указано магическое слово doxygen. Вспомнив про это, я решил подружиться с doxygen, установил его, выполнил простую настройку, изучил типы комментариев. Получилось здорово, теперь могу документировать свой код:) |
|||
J1. Запуск START - Десять запусков | + 9 | ||
Выполнил десять повторений, десять раз создал программу hello. |
|||
Начало здесь День №6. Обучательное тестирование | + 11 | ||
Я выполнил урок https://www.videosharp.info/13417/checking/java-start=760, в нём не было тестов, поэтому решил поискать тесты . Как оказалось, не так просто найти уроки, в которых уже есть тесты, поэтому начал с Демо уроков, Картинка с секретом и ура, нашёл выполнил тест от непревзойдённого DimanDOS :) Результат на первом скриншоте. По выполненному сегодня уроку создал тест https://www.videosharp.info/video/quiz/nr=760. Удивительно то, что создание теста стимулирует на дополнительное изучение материала. Например, я не знал команду для удаления файлов в каталоге Windows. Чтобы создать тест и наполнить его вариантами ответов, потребовалось изучить. Mkdir/rmdir оказались аналогичными командами как в linux. Надеюсь тест вполне корректный :) |
|||
J1. Запуск START - Запуск Java | + 12 | ||
Попрактиковался в создании простой hello-программы. Повторил как создавать папку, создавать документ, удалять файлы, удалять пустую папку. |
|||
J1. Запуск START - Переменная окружения | + 14 | ||
В моем случае компилятор уже был добавлен в пути переменной $PATH. Чтобы не сдавать пустой отчёт, я решил добавить в эту переменную путь к программе, которую писали на предыдущем уроке. Вспомнил про файлы инициализации bash: .bashrc, .bash_profile. Добавил в файл .bash_profile новый путь. Проверил полученный результат. |
|||
J1. Запуск START - Платформа Java | + 13 | ||
Решил немного отдохнуть от больших курсов, но чтобы не от сбиваться с ритма, выполню что-то попроще, повторю синтаксис языка и основы создания программ. Поэтому выбрал раздел Java. Написал и откомпилировал простую программу на Си. P.S. Узнаю давний интерфейс сайта, 2015 года, когда в верхней части сайта публиковалась информация о количестве недавних сообщений, отправленных отчетах и решенных задачах. Еще нравилось то, что приветствовались новые участники, я там тоже какое-то время был отмечен :) И конечно же, помню Музу Олю, которая всех поддерживала и комментировала большинство отчётов. |
|||
Дневник успеха Рефлексия уходящего года | + 13 | ||
За этот год (надеюсь это реально год :) ): + Я проверил 2454 отчёта у 235 формулистов. + Я написал 101 сообщение 35 формулистам общим объёмом 50 килобукв + Я набрал 6 текстов: + Я решил 203 задачи: + Я выполнил 178 видеоуроков: − Я не собрал ни одного Мегахеша :o( В этом году я продолжил свое начатое еще в 2017 году направление по созданию программ на языках Си и С++. Прошел курсы Теория ООП, Шарики, Online-игра, API HeadHunter, Клиент-серверный сокет, БД Книжка оценок, Фотошарп, Система гит. Решил большую часть семантики и чуть меньше половины алгоритмики. Теория ООП, Шарики дали практику в создании программ. В Курс Online-игра я попрактиковался в консольном выводе и в создании библиотеки. В курсе API HeadHunter я научился подключаться к веб-серверу и парсить json, я думаю это полезный навык. В курсе Клиент-серверный сокет я реализовал свою давнюю мечту - написать простое клиент-серверное приложение, плюс был очень приятный бонус в виде многопоточности. В курсе БД Книжка оценок я так же исполнил свою мечту, давно хотел научиться обращаться к базам данных из программы. Научился работать с SQLite и MySQL. Фотошарп мне понравился своей практичностью, так же как и уроки в курсе Новые технологии, где я выполнил урок по созданию диктофона и говорящих часов. Курс система гит показал мне пример сравнения работы гит и ручного резервирования кода. Гит удобнее. На следующий год я планирую продолжить проходить курсы на выбранных языках и хочу освоить скриптовые языки Shell, Perl, Python, научиться применять тестирование в своих программах, создавать правильные коммиты, более глубоко автоматизировать процесс создания программ. Спасибо Евгению Витольдовичу за практику! Ура! Всех с Новым Годом! |
|||
Система Git ФИНАЛЬНЫЙ КУРС | + 12 | ||
Я ранее был знаком с системой git, использую для всех проектов, которые прохожу на videosharp.info. Знаю гит слабо, хочу развиваться в этом направлении, но для начала решил начать с нуля. Поэтому начал проходить курс "Система git". Здесь я не ожидал увидеть что-то архинеобычное, тем более видно, что Евгений Витольдович мало работал с гитом и забывает простые команды. Очень понравилось, то что Евгений Витольдович стремился на простых примерах показать преимущество гита по сравнению с ручной работой в ОС. Вот это зацепило :) Плюс научился немного работать с ftp-сервером. Спасибо за практику! |
|||
Система Git win final | + 12 | ||
Научился скачивать один файл из ftp-сервера, повторил весь процесс по созданию коммитов в ОС. Понравилась идея сравнения с git с ручной работой в ОС. Можно оценить удобство автоматизированной системы git. |
|||
Система Git remote merge | + 9 | ||
Научился отправлять ветку на сервер, повторил работу с решением конфликтов, объединением веток. |
|||
Система Git pingwin | + 9 | ||
Повторил как загружать файлы на ftp-сервер, работу с командами branch, checkout, add, commit. |
|||
Система Git win merge | + 12 | ||
Попрактиковался в слиянии веток на примере файлов в ОС. Странно то, что после первого слияния с веткой льва мы не сделали коммит в ветке мастер, то есть не добавили в папку /repository/master копию коммита 01.Lion. Если даже просто посмотреть на git log, то этот коммит там есть, не зря же fast-forward. Ну да ладно, тут возня с файловой системой, на следующем уроке думаю будет доделано :) |
|||
Дневник успеха 2018-12-23 : Живет на горке, а хлеба ни корки. | + 9 | ||
За эту неделю: + Я проверил 123 отчёта у 46 формулистов. + Я написал 4 сообщения 2 формулистам общим объёмом 2 килобуквы − Я не набрал ни одного текста :o( + Я решил 21 задачу: 1 => «For-to-чки / Отрицательные» на 100% 2 => «For-to-чки / Тройка» на 100% 3 => «For-to-чки / Семёрка» на 100% 4 => «For-to-чки / Туз» на 100% 5 => «For-to-чки / Улыбки» на 100% 6 => «For-to-чки / Псевдо-квадраты» на 100% 7 => «For-to-чки / Палочки» на 100% 8 => «For-to-чки / Много палочек» на 100% 9 => «For-to-чки / Алфавит» на 100% 10 => «For-to-чки / Тивафла» на 100% 11 => «For-to-чки / DY-Алфавит» на 100% 12 => «For-to-чки / Степень» на 100% 13 => «For-to-чки / Факториал» на 100% 14 => «For-to-чки / Сумма фактов» на 100% 15 => «For-to-чки / Кратные» на 100% 16 => «For-to-чки / Двухзначный столбик» на 100% 17 => «For-to-чки / Среднее арифметическое» на 100% 18 => «Пока-цикл / Сумма цифр» на 100% 19 => «Пока-цикл / Все цифры» на 100% 20 => «Пока-цикл / Сумма квадратов» на 100% 21 => «Олимпиада / Случайная задача» на 100% + Я выполнил 16 видеоуроков: 1 => «Система Git / Добро пожаловать в Зоопарк!» за 7 мин. 2 => «Система Git / git init» за 23 мин. 3 => «Система Git / git add checkout» за 32 мин. 4 => «Система Git / git commit reset diff» за 1 час. 7 мин. 5 => «Система Git / git commit zebra» за 50 мин. 6 => «Система Git / git ignore» за 30 мин. 7 => «Система Git / git push clone» за 1 час. 24 мин. 8 => «Система Git / hippo git fetch pull» за 53 мин. 9 => «Система Git / git branch lion» за 38 мин. 10 => «Система Git / git branch giraffe» за 30 мин. 11 => «Система Git / git merge giraffe lion» за 19 мин. 12 => «Фотошарп / Изменение размера» за 53 мин. 13 => «Фотошарп / Метод ближайшего соседа» за 1 час. 2 мин. 14 => «Фотошарп / Билинейная интерполяция» за 2 час. 34 мин. 15 => «Фотошарп / ФИНАЛЬНЫЙ УРОК» за 14 мин. 16 => «Фотошарп / VIP. Делегаты на кубиках» за 7 час. 36 мин. − Я не собрал ни одного Мегахеша :o( На этой неделе я закончил курс Фотошарп, получилась действительно полезная программа, побольше бы таких практических программ на портале :) Начал выполнять курс "Система Git". На следующей неделе планирую закончить курс "Система Git". |
|||
Система Git git merge giraffe lion | + 9 | ||
Повторил как объединять ветки с помощью команды merge, и решать конфликты при слиянии. |
|||
Система Git git branch giraffe | + 10 | ||
Повторил как создавать ветки, выполнять схожие действия в ОС. |
|||
Система Git git branch lion | + 14 | ||
Узнал про альтернативный вывод информации о коммитах с помощью ключей к git log. Создал новую ветку Lion, повторил указанные действия в файловой системе. |
|||
Система Git hippo git fetch pull | + 16 | ||
Повторил работу с командами fetch, pull. Дополнительно попрактиковался в загрузке файлов на ftp-сервер. |
|||
Система Git git push clone | + 13 | ||
Повторил работу с командами clone, push. Интересно получается, проходишь уроки по GIT, а дополнительно получаешь знания и навыки в других областях. В этом уроке я установил и запустил свой локальный ftp сервер, научился пользоваться клиентом lftp. Загрузил на свой свежий сервер папку с репозиторием zoo, научился клонировать эти файлы в новую локальную папку. |
|||
Система Git git ignore | + 14 | ||
Повторил как создавать и использовать файл .gitignore. Повторил аналогичные действия в папке ОС. |
|||
Система Git git commit zebra | + 14 | ||
Повторил использование сокращения для commit с ключом -a. |
|||
Система Git git commit reset diff | + 10 | ||
Повторил работу с командами commit, reset и diff. Попрактиковался в создании архивов gzip. |
|||
Система Git git add checkout | + 8 | ||
Повторил работу с командами git add, git checkout. Выполнил аналогичные действия средствами операционной системы. Вообще говоря, хороший пример на базе действий в ОС :) |
|||
Система Git git init | + 8 | ||
Выполнил команду git init, создал пустой репозиторий. Создал три папки workdir, stage, repository. git отличает от github тем, что git - это сама система контроля версий, а github - это сервис, который работает с git и позволяет взаимодействовать с его репозиториями. |
|||
Система Git Добро пожаловать в Зоопарк! | + 8 | ||
Я планирую пройти этот курс используя язык Си. На скриншоте версия компилятора для Си и для git. |
|||
Фотошарп VIP. Делегаты на кубиках | + 9 | ||
Повторил как загружать ресурсы в программу. В языке Си нет делегатов, поэтому потребовалось написать свой "делегат". Я добился этого с помощью односвязного списка указателей на функции. Dice принимает этот список и пробегает до конца, вызывая все требуемые функции Show. |
|||
Фотошарп ФИНАЛЬНЫЙ УРОК | + 16 | ||
Курс прошёл на одном дыхании, уроки короткие и понятные. Узнал много нового об обработке изображений, методах изменения размера. Особенно понравилось то, что получилась полезная программа, которую можно использовать для своих задач. Следующим курсом будет "Система GIT". |
|||
Фотошарп Билинейная интерполяция | + 14 | ||
Научился применять алгоритм билинейной интерполяции для изменения размера изображения. Создал изображение 2x2, увеличил его методом ближайшего соседа (верхний скриншот) и методом билинейной интерполяции(нижний скриншот). |
|||
Фотошарп Метод ближайшего соседа | + 11 | ||
Научился изменять размер изображения методом ближайшего соседа. Узнал как создавать пустой объект изображения с требуемыми размерами. В уроке для эксперимента использовался скриншот текста программы. Я последовал этому примеру - получается наглядная демонстрация работы алгоритма. |
|||
Фотошарп Изменение размера | + 10 | ||
Скопировал проект, удалил неиспользуемые функции, подготовил форму для новой программы. |
|||
Дневник успеха 2018-12-16 : Без дела слабеет сила. | + 9 | ||
За эту неделю: + Я проверил 118 отчётов у 43 формулистов. + Я написал 7 сообщений 6 формулистам общим объёмом 4 килобуквы − Я не набрал ни одного текста :o( + Я решил 26 задач: 1 => «Условный оператор / Максимум» на 100% 2 => «Условный оператор / Большая разница» на 100% 3 => «Условный оператор / Меньше, равно, больше» на 100% 4 => «Условный оператор / Три числа» на 100% 5 => «Условный оператор / Модуль» на 100% 6 => «Условный оператор / Сумма или произведение» на 100% 7 => «Условный оператор / Чет / нечет» на 100% 8 => «Условный оператор / Отрицательный куб» на 100% 9 => «Условный оператор / Три Максима» на 100% 10 => «Условный оператор / Сумма положительных» на 100% 11 => «Условный оператор / Минимальное расстояние» на 100% 12 => «Условный оператор / Минимальное произведение» на 100% 13 => «Условный оператор / Возрастание» на 100% 14 => «Условный оператор / В промежутке» на 100% 15 => «Условный оператор / Минимальное неотрицательное» на 100% 16 => «Условный оператор / Наибольшее при условии» на 100% 17 => «For-to-чки / Созвездие» на 100% 18 => «For-to-чки / Сумма» на 100% 19 => «For-to-чки / Сумма квадратов» на 100% 20 => «For-to-чки / Трёхзначные числа» на 100% 21 => «For-to-чки / Двухзначные числа» на 100% 22 => «For-to-чки / Отрицательно» на 100% 23 => «For-to-чки / Улица» на 100% 24 => «For-to-чки / Радуга» на 100% 25 => «For-to-чки / Сто квадратов» на 100% 26 => «Олимпиада / Случайная задача» на 100% + Я выполнил 13 видеоуроков: 1 => «БД - Книжка оценок / Обработчик ошибок» за 4 час. 12 мин. 2 => «БД - Книжка оценок / Манипуляции с предметами» за 1 час. 28 мин. 3 => «БД - Книжка оценок / Делаем таблицу для учителя» за 29 мин. 4 => «БД - Книжка оценок / Логин для школьника» за 52 мин. 5 => «БД - Книжка оценок / Логин для учителя» за 1 час. 4 мин. 6 => «БД - Книжка оценок / Составление плана сетки оценок ученика» за 1 час. 35 мин. 7 => «БД - Книжка оценок / Формирование сетки оценок ученика» за 2 час. 44 мин. 8 => «БД - Книжка оценок / Загрузка оценок ученика в матрицу» за 19 мин. 9 => «Клиент-серверный сокет / VIP. Динамичная многопоточность» за 2 час. 52 мин. 10 => «Фотошарп / 256 оттенков серого» за 3 час. 17 мин. 11 => «Фотошарп / Яркость и контрастность» за 1 час. 40 мин. 12 => «Фотошарп / Градационная коррекция» за 1 час. 42 мин. 13 => «Фотошарп / Гамма-коррекция» за 43 мин. − Я не собрал ни одного Мегахеша :o( На этой неделе я выполнил последний урок в курсе "Клиент-серверный сокет", закончил курс "БД - Книжка оценок", приступил к курсу "Фотошарп". На следующей неделе планирую закончить "Фотошарп" и начать курс "Система GIT". |
|||
Фотошарп Гамма-коррекция | + 9 | ||
Научился применять гамму-коррекцию к изображению. Повторил работу с функцией возведения в степень, компонентом TrackBar. |
|||
Фотошарп Градационная коррекция | + 6 | ||
Научился применять к изображению градационную коррекцию. Повторил создание ComboBox, добавление в него элементов. |
|||
Фотошарп Ярость и контрастность | + 10 | ||
Научился изменять яркость и контрастность изображения. Повторил работу с "TrackBar". Выполнил дополнительное задание 7' - добавил сохранение картинки в файл. |
|||
Фотошарп 256 оттенков серого | + 13 | ||
Научился создавать изображение в серых тонах. Узнал как получить доступ к пикселями изображения. Повторил работу с CheckBox, выбором файла в диалоговом окне. |
|||
БД - Книжка оценок Загрузка оценок ученика в матрицу | + 12 | ||
Повторил как обходить все строки таблицы, загрузил оценки ученика в таблицу. |
|||
БД - Книжка оценок Формирование сетки оценок ученика | + 12 | ||
Повторил работу с заполнением таблицы, запросы SELECT, SELECT MAX(), сформировал сетку оценок ученика. |
|||
БД - Книжка оценок Составление плана сетки оценок ученика | + 10 | ||
Изменил столбец ID на № строки в таблице предметов. Повторил как добавлять и скрывать вкладки. |
|||
БД - Книжка оценок Логин для учителя | + 10 | ||
Немного изменил интерфейс программы: во время старта доступна только одна вкладка - "Вход в книжку оценок". Когда учитель правильно вводит пароль, то становятся видимыми две вкладки - "Список предметов" и "Список учеников". Если ученик входит в систему, эти две вкладки скрываются. |
|||
БД - Книжка оценок Логин для школьника | + 13 | ||
Повторил как создавать и заполнять ComboBox, размещать элементы формы в табличной разметке. |
|||
БД - Книжка оценок Делаем таблицу для учителя | + 11 | ||
Повторил как создавать таблицы в базе данных SQLite. Создал таблицу teacher, добавил одну запись для учителя. |
|||
БД - Книжка оценок Манипуляции с предметами | + 9 | ||
Повторил как определить выбрана ли строка в таблице, попрактиковался в запросах SELECT, UPDATE, DELETE, INSERT. |
|||
Клиент-серверный сокет VIP. Динамичная многопоточность | + 11 | ||
Чтобы организовать динамичную многопоточность, мне нужно было придумать как организовать хранение запущенных потоков. В моем случае нет доброго сборщика мусора, я не могу просто так создать анонимный поток и забыть про него, будет утечка памяти. Поэтому для хранения запущенных потоков выбрал двусвязный список в качестве структуры данных, чтобы можно было легко удалять отработавшие потоки из середины списка. Потребовалось освежить знания о том, как добавлять и удалять элементы из списка. Написал свой простой двусвязный список. Чтобы вовремя удалять потоки из списка, мне нужно было пойти дальше и изучить системный вызов poll, который в течение указанного таймаута ждёт подключения клиента. Если клиент пришёл - он обрабатывается acceptом, для него запускается новый поток и потом выполнятся очистка памяти. Если клиент не пришел, accept пропускается и сразу выполняется очистка памяти. В уроке был вопрос, как можно прервать работу сервера. В моем случае я просто посылаю сигнал SIGINT с помощью Ctrl+C. Но чтобы полностью очистить память перед выходом, мне потребовалось научиться перехватывать сигналы. Вариант с динамичной многопоточностью лучше, чем с фиксированной, так как ресурсы не простаивают зря. На видео я запускал клиенты с помощью bash-скрипта, который принимает в качестве параметров количество клиентов, интервал генерации случайных чисел и интервал между обращения к серверу. В общем, хорошо попрактиковался, очень доволен, спасибо :) |
|||
БД - Книжка оценок Обработчик ошибок | + 14 | ||
Научился создавать свой message box с тремя кнопками. С его помощью реализовал обработку ошибок и, как было предложено в уроке, используя цикл do-while. Удобно :) Повторил как заполнять данные в таблицу. В моем случае если запрос INSERT завершился с ошибкой, то во втором message box выводится 0, вместо -1, как количество обработанных строк в таблице. |
|||
Дневник успеха 2018-12-09 : У хорошего мастера всякая пила хорошая. | + 13 | ||
За эту неделю: + Я проверил 154 отчёта у 48 формулистов. + Я написал 3 сообщения 2 формулистам общим объёмом 2 килобуквы + Я набрал 1 текст: 1 => «C# набор / Первая программа», без ошибок + Я решил 25 задач: 1 => «Алгоритмика / Матрёшки» на 100% 2 => «Алгоритмика / Простые массивы.» на 100% 3 => «Алгоритмика / Подпрограммы» на 100% 4 => «Алгоритмика / Строки» на 100% 5 => «Алгоритмика / Матрицы» на 100% 6 => «Алгоритмика / Регулярные выражения» на 100% 7 => «Типы данных / Байты и числа» на 100% 8 => «Типы данных / Системы счисления: вывод» на 100% 9 => «Типы данных / Системы счисления: ввод» на 100% 10 => «Типы данных / Длина окружности» на 100% 11 => «Типы данных / Формат целого числа» на 100% 12 => «Логика / Плюс и минус» на 100% 13 => «Логика / Инкремент и декремент» на 100% 14 => «Логика / Разберемся в отношениях» на 100% 15 => «Логика / Логическое НЕ» на 100% 16 => «Логика / Логическое И» на 100% 17 => «Логика / A или не-B» на 100% 18 => «Логика / Побитовое НЕ» на 100% 19 => «Логика / Побитовое И» на 100% 20 => «Логика / Побитовое ИЛИ» на 100% 21 => «Логика / Исключающее ИЛИ» на 100% 22 => «Логика / Сдвиг вправо» на 100% 23 => «Логика / Сдвиг влево» на 100% 24 => «Логика / Мигалка» на 100% 25 => «Олимпиада / Случайная задача» на 100% + Я выполнил 10 видеоуроков: 1 => «API поиска работы / Переходим на профессиональный уровень» за 1 час. 14 мин. 2 => «API поиска работы / Функционал главного меню» за 42 мин. 3 => «API поиска работы / Функционал тестового стенда» за 3 час. 39 мин. 4 => «БД - Книжка оценок / Сетка оценок ученика» за 5 час. 11 мин. 5 => «БД - Книжка оценок / Подключение проекта к MySQL» за 3 час. 31 мин. 6 => «БД - Книжка оценок / ФИНАЛЬНЫЙ УРОК» за 22 мин. 7 => «БД - Книжка оценок / Проектирование базы данных в Microsoft Excel» за 1 час. 6 мин. 8 => «БД - Книжка оценок / Проектирование базы данных в Microsoft Access» за 1 час. 32 мин. 9 => «БД - Книжка оценок / Создание интерфейса первой вкладки» за 1 час. 34 мин. 10 => «БД - Книжка оценок / Подключение БД Access к коду C#» за 2 час. 38 мин. − Я не собрал ни одного Мегахеша :o( На этой неделе я выполнил новые уроки из курса API HeadHunter, закончил курс "Книжка оценок", начал выполнять дополнительные уроки, которые оказались повторением ранее написанной программы. Я решил дойти курс до конца, повторить работу с базой данных SQLite. На следующей неделе планирую закончить вторую часть "Книжки оценок", выполнить новый урок из курса "Клиент-серверный сокет", выбрать новый курс. Возможно это будет "Фотошарп". |
|||
БД - Книжка оценок Подключение БД Access к коду C# | + 12 | ||
Повторил как подключать базу данных sqlite к системе сборке проекта и использовать её в программе. Проверил установку соединения с базой, выполнение запросов INSERT и SELECT. Вначале проверил работу запроса SELECT COUNT(*) FROM subject. Затем, как и было предложено в уроке, при нажатии на кнопку "Сохранить" добавляется запись id=4, subject='Английский язык' в таблицу subject. При повторном нажатии возникает ошибка, так запись с id=4 уже есть в таблице. |
|||
БД - Книжка оценок Создание интерфейса первой вкладки | + 14 | ||
Повторил создание пользовательского интерфейса: добавление таблицы, метки, поля ввода и кнопки. |
|||
БД - Книжка оценок Проектирование базы данных в Microsoft Access | + 15 | ||
В этом уроке я практиковался в sql-запросах, экспериментировал со встроенными командами sqlite. Создал три таблицы, заполнил их данными, выполнил несколько select-запросов. |
|||
БД - Книжка оценок Проектирование базы данных в Microsoft Excel | + 12 | ||
Вспомнил как мы проектировали базу данных, составил схему в Libre Office. |
|||
API поиска работы Функционал тестового стенда | + 13 | ||
Как и требовалось в задании, сначала сделал пункты 1-3, потом посмотрел видео. Добавил библиотеку к проекту, проверил работу ранее написанных запросов. Добавил нетривиальные запросы. Хотя не мне судить насколько они "нетривиальные" :), источником была документация HH API. Искал по полям "тип занятости", "опыт работы", "регион". Запросы такие: 1) вакансия Повар с уровнем занятости полный день в Калининградской области. 2) вакансия Инженер с уровнем занятости полный день в Самарской области. 3) вакансия Дизайнер без опыта работы в Калужской области. 4) вакансия Консультант с частичной занятостью в Москве. Первые 3 запроса на первом скриншоте, последний на втором. Вообще говоря, запросов я сделал гораздо больше, увлекся за этим делом, вывел лишь некоторые. Полученные результаты я вывел построчно, разделяя вакансии пунктирной строкой. Потом посмотрел видео, оказалось, что я либо сделал не то, либо убежал вперёд паровоза. Валерий просто вывел сам json-ответ в текстовое поле, без обработки. Буду ждать продолжение курса, где мы уже будем использовать не только анонимные запросы :) |
|||
БД - Книжка оценок ФИНАЛЬНЫЙ УРОК | + 17 | ||
Тематика курса хорошая: в нём рассматривается создание программы для работы с базой данных Access и на последнем уроке "миграция" на MySQL. В итоге получилась неплохая заготовка для полезной программы. Не хватает урока для реализации функций учителя по добавлению и редактированию оценок. Вместо этого почему-то был рассмотрен переезд на базу данных MySQL, без предварительного урока по установке и настройке этой базы. Перед началом курса я ставил перед собой цель познакомиться в работе с базами данных. Сейчас я считаю, что достиг поставленной цели: написал программу, которая позволяет добавлять/удалять/изменять/искать записи в таблицах. Научился использовать базы данных SQLite, MySQL. Я давно хотел пройти этот курс, а сейчас смотрю, что в нём появились дополнительные уроки, которых раньше не было. Поэтому планирую пройти новые уроки :) |
|||
БД - Книжка оценок Подключение проекта к MySQL | + 15 | ||
Научился подключаться к базе данных MySQL, выполнять к ней запросы. Переписал код, использующий SQLite на код для MySQL. В итоге, получилась такая же программа, но для разнообразия, с другими оценками. Если я правильно понял, проект был заморожен и этот урок был через полгода после предыдущего. Я ожидал здесь увидеть реализацию функций учителя, но её нет, вместо неё проект переписывается для MySQL. Причём, нет урока по установке и настройке этой базы данных. Я это сделал самостоятельно, по случайности на первом уроке, когда выбирал базу данных. Случайность оказалась полезной :) Но у других формулистов могут возникнуть проблемы, поэтому имело бы смысл добавить урок по установке базы перед этим уроком. |
|||
API поиска работы Функционал главного меню | + 14 | ||
Научился создавать модальные окна, повторил обработку выбора пункта меню, установку цвета фона окна. |
|||
БД - Книжка оценок Сетка оценок ученика | + 12 | ||
Повторил работу с заполнением таблицы, поиском элемента в столбце таблицы. Так попрактиковался в sql-запросах по выборке элементов. Постепенно программа превращается во что-то удобное, теперь ученики могут просматривать свои оценки, осталось добавить функции учителя :) |
|||
API поиска работы Переходим на профессиональный уровень | + 11 | ||
Вспомнил как создавать меню, добавлять в него подменю, использовать CSS для изменения цвета меню. У меня не получилось сделать скриншот раскрытого меню, поэтому добавил видео. |
|||
Дневник успеха 2018-12-02 : Больше дела – меньше слов. | + 10 | ||
За эту неделю: + Я проверил 108 отчётов у 41 формулиста. + Я написал 11 сообщений 5 формулистам общим объёмом 8 килобукв − Я не набрал ни одного текста :o( + Я решил 15 задач: 1 => «Алгоритмика / Типы данных» на 100% 2 => «Алгоритмика / Логика» на 100% 3 => «Алгоритмика / Условный оператор» на 100% 4 => «Алгоритмика / For-то-чки» на 100% 5 => «Алгоритмика / Пока цикл» на 100% 6 => «Алгоритмика / Вечность» на 100% 7 => «Алгоритмика / Do-рацикл» на 100% 8 => «Алгоритмика / Обман цикла» на 100% 9 => «Алгоритмика / Точка и плоскость» на 100% 10 => «Алгоритмика / Узник цикла IF» на 100% 11 => «Алгоритмика / Последовательность» на 100% 12 => «Алгоритмика / Математика» на 100% 13 => «Алгоритмика / Любимые циклы» на 100% 14 => «Алгоритмика / По цифрам» на 100% 15 => «Олимпиада / Случайная задача» на 100% + Я выполнил 6 видеоуроков: 1 => «БД - Книжка оценок / Проектирование БД «Книжка оценок»» за 4 час. 44 мин. 2 => «БД - Книжка оценок / Создание интерфейса программы» за 17 час. 51 мин. 3 => «БД - Книжка оценок / Авторизация школьников и учителя» за 15 час. 52 мин. 4 => «Клиент-серверный сокет / Правильный заголовок» за 3 час. 13 мин. 5 => «Клиент-серверный сокет / VIP. Функциональное потокообразование» за 1 час. 54 мин. 6 => «Клиент-серверный сокет / VIP. Мультики на сервере» за 3 час. 39 мин. − Я не собрал ни одного Мегахеша :o( На этой неделе я закончил курс "Клиент-серверный сокет", интересный материал. Начал выполнять курс "Книжка оценок". На следующей неделе планирую продолжить этот курс. Буквально только что узнал, что Валерий Жданов добавил новые уроки по курсу "API HeadHunter". Планирую на следующей неделе пройти эти новые уроки. |
|||
БД - Книжка оценок Авторизация школьников и учителя | + 14 | ||
Я научился создавать и использовать ComboBox. Попрактиковался в оформлении - табличная компоновка виджетов, выравнивание по центру виджета, установка символа пароля. Повторил работу с запросами к sqlite. |
|||
БД - Книжка оценок Создание интерфейса программы | + 15 | ||
В прошлом уроке использовал базу Mysql, в этом решил не уходить далеко от стилистики урока и выбрал базу Sqlite. Установил, добавил данные, выполнил пару запросов. Синтаксис схож с mysql, команды немного упрощённые. Далее потребовалось подружить Autotools с базой данных, так как она располагается в одном файле, что с одной стороны удобно, с другой нужно настроить папку во время установки. Далее, я научился подключаться к базе из программы, выполнять все требуемые sql-запросы. Повторил работу со вкладками, выводом информации в таблицу. Очень длинный урок, понимаю что 2014г. Далеко не все смогут за один присест посмотреть все 1ч 40 минут. К тому же, для такого длинного урока слишком мало информации. Возможно Евгений Витольдович в тот момент задумывал, что люди будут прямо за ним по ходу просмотра видео набирать код, ставить на паузу. У меня другой подход. Я всегда сначала полностью смотрю видео, не спешу, стараюсь уловить все тонкости, поэтому не увеличиваю скорость просмотра видео. Мне важно объяснение, а не код. Код у меня свой. Далее, оцениваю что необходимо сделать, закрываю видео и пишу программу :) В итоге, куча времени ушло просто так, не успел вчера дописать программу, заканчиваю сейчас. Но практика хорошая, sqlite понравился :) |
|||
БД - Книжка оценок Проектирование БД «Книжка оценок» | + 16 | ||
Для создания базы данных выбрал программу Mysql WorkBench. Потребовалось установить mysql сервер, для удобства я добавил нового пользователя. Вспомнил sql запросы CREATE, INSERT, SELECT. Попрактиковался в программе GIMP для склеивания изображений. |
|||
Клиент-серверный сокет VIP. Мультики на сервере | + 13 | ||
В этом уроке я научился создавать многопоточный сервер. Мне понравилось то, что мы здесь объединили две программы, две рассмотренные в этом курсе темы. Первая это однопоточное клиент-серверное приложение, а второе это потоки. Для проверки работы сервера, я написал скрипт на bash, который симулирует запуск указанного количества клиентов с интервалом в 100мс. В сервер тоже добавил задержку симуляции сложной обработки, 3 секунды на один запрос. Курс мне понравился, Евгений Витольдович выбрал отличную тему для демонстрации многопоточности, спасибо за интересный материал ! :) |
|||
Клиент-серверный сокет Правильный заголовок | + 15 | ||
Научился отправлять http-ответ сервера клиенту. Проверил на своём браузере Firefox, установил браузеры Chromium и GNOME Epiphany- везде работает как надо. Дополнительно почитал про другие заголовки, узнал что многие из них связаны с кешированием. Добавил заголовок "Content-Length", который высчитывается перед отправкой сообщения. |
|||
Клиент-серверный сокет VIP. Функциональное потокообразование | + 17 | ||
В языке Си нет поддержки функционального программирования, поэтому я решил выполнить этот урок на языке Java. Сначала скачал jdk 11, скомпилировал программу, попробовал запустить, система сказала, что версия моего .class файла ниже, чем поддерживая версия рантайма в операционной системе. Посмотрел текущую версию рантайма, она оказалась равной 1.8, то есть 8, если я правильно понял. Я решил не менять свой рантайм, скачал другую версию jdk 1.8, скомпилировал - запустил - работает. Ура, я справился с Java. Хотел было уже отправить отчёт, но тут подумал, ну если Си не способен создать лямбду, может тогда старший брат С++ поможет? Набрал код на этом языке, запустил, тоже работает. Тут я использовал средства стандартной библиотеки, поэтому код похож на код Java, а не выкрутасы с системными вызовами как было в Си :) Чтобы потоки выполнялись более-менее параллельно, я добавил задержку в 10 мс между итерациями, как и было предложено сделать в видеоуроке. |
|||
Дневник успеха 2018-11-25 : Кто поет, у того работа скоро заканчивается. | + 9 | ||
За эту неделю: + Я проверил 123 отчёта у 45 формулистов. + Я написал 22 сообщения 9 формулистам общим объёмом 8 килобукв − Я не набрал ни одного текста :o( + Я решил 22 задачи: 1 => «Целые задачи / Периметр» на 100% 2 => «Целые задачи / Площадь» на 100% 3 => «Целые задачи / Дискриминант» на 100% 4 => «Целые задачи / Вторая дробная» на 100% 5 => «Целые задачи / Арифметика 2» на 100% 6 => «Целые задачи / Уравнение 2» на 80% 7 => «Целые задачи / Куры и яйца» на 100% 8 => «Целые задачи / Стрелки часов» на 100% 9 => «Цифры / Сумматор» на 100% 10 => «Цифры / Перевертыш» на 100% 11 => «Цифры / Ноль-ноль» на 100% 12 => «Цифры / Сердцевина» на 100% 13 => «Цифры / Крайние» на 100% 14 => «Цифры / Счастливый билет» на 100% 15 => «Цифры / Пятёрочка» на 100% 16 => «Цифры / Штирлиц» на 100% 17 => «Цифры / Серединка» на 100% 18 => «Цифры / Зебра» на 100% 19 => «Цифры / Любовь к цифрам» на 100% 20 => «Цифры / Чётность цифр» на 100% 21 => «Календарь / Час и День» на 100% 22 => «Олимпиада / Случайная задача» на 100% + Я выполнил 13 видеоуроков: 1 => «API поиска работы / Полная информация» за 1 час. 38 мин. 2 => «API поиска работы / ФИНАЛЬНЫЙ УРОК» за 37 мин. 3 => «Клиент-серверный сокет / Как хорошо уметь читать!» за 55 мин. 4 => «Клиент-серверный сокет / Клиент-серверный диалог» за 1 час. 30 мин. 5 => «Клиент-серверный сокет / Экспериментальный сервачок» за 3 час. 23 мин. 6 => «Клиент-серверный сокет / Техническое задание» за 9 час. 34 мин. 7 => «Клиент-серверный сокет / Основной алгоритм» за 1 час. 54 мин. 8 => «Клиент-серверный сокет / Скелет телефона» за 27 мин. 9 => «Клиент-серверный сокет / Универсальный сокет» за 9 час. 24 мин. 10 => «Клиент-серверный сокет / ФИНАЛЬНЫЙ УРОК» за 35 мин. 11 => «Клиент-серверный сокет / VIP. Многопоточность» за 35 мин. 12 => «Клиент-серверный сокет / VIP. Два потока» за 6 час. 10 мин. 13 => «Клиент-серверный сокет / VIP. Синхрофазатрон» за 7 час. 47 мин. − Я не собрал ни одного Мегахеша :o( На этой неделе я решал задачи и выполнял курс Клиент-серверный сокет. Сейчас перешёл к VIP-урокам, где рассказывается про многопоточность. На следующей неделе планирую завершить этот курс и выбрать новый. Хочу попрактиковаться в работе с базами данных, скорее всего это будет курс "Книжка оценок". |
|||
Клиент-серверный сокет VIP. Синхрофазатрон | + 9 | ||
Интересный материал урока, увидел коллизию и способ борьбы с ней. Мне потребовалось изучить дополнительный материал. Возникла масса проблем начиная с того, что нужно было корректно перехватывать завершение работы дочерних потоков и заканчивая созданием синхронизирующего механизма для защиты доступа к переменной count. На видео для языка Java для этого использовалось ключевое слово synchronized, я реализовал схожее поведение через создание фьютекса, ух, было весело:) Попутно узнал про функцию nanosecond, которая позволяет устанавливать задержку в наносекундах. |
|||
Клиент-серверный сокет VIP. Два потока | + 13 | ||
Научился создавать потоки с помощью функции системного вызова clone. В моем случае, создание потока похоже на способ в Java, когда новый поток запускает указанную функцию. Добавил третий поток, для вывода текста "Third". Чтобы вывод программы не улетал далеко за пределы экрана, добавил задержку в 1 секунду после вывода сообщения. |
|||
Клиент-серверный сокет VIP. Многопоточность | + 12 | ||
В видео интересные примеры многопоточности :) Мой вариант, когда многопоточность может быть эффективна. Например, стоит задача найти минимальный элемент в огромном массиве. Можно разбить этот массив на несколько более мелких, далее создать несколько потоков, каждый из которых находит минимальный элемент в своём подмассиве. В результате, у нас получится новый массив минимальных элементов и уже в нем основной поток может найти самый минимальный элемент. Чем больше массив и чем больше потоков, тем большая выгода от многопоточности. Вариант, когда многопоточность не эффективна. Сложно придумать вариант, если я правильно понял, основная идея в том, что задачу сложно распараллелить, отсутствуют независимые части, промежуточные этапы и результаты. Поэтому я выбрал следующий вариант: вывод информации в терминал или работа машинистки на печатной машинке. Как известно, информация выводится строго сверху-вниз и слева-направо. (Допустим терминал крайне допотопный и не умеет перемещать курсор) Невозможно напечатать сначала первую строку, потом прыгнуть на пятую, вывести одну букву и потом обратно на первую. Поэтому невозможно разбить задачу вывода на несколько потоков - когда один поток выводит первую строку, другой одновременно с ним пятую и так далее. Вся работа упирается в мощность одного процесса или в скорость работы одной машинистки. Другими словами, если стоит задача набрать один текст формата А4 на печатной машинке, то несколько машинисток не смогут одновременно набирать на одной машинке, скорость работы упирается в скорость набора машинистки. Вы скажете, что можно набирать одновременно на нескольких машинках и получится несколько копий одного листа А4, но суть не меняется. Другие машинистки не могут скооперироваться, что напечатать быстрее один экземпляр. Придумать варианты эффективности и не эффективности многопоточности. |
|||
Клиент-серверный сокет ФИНАЛЬНЫЙ УРОК | + 12 | ||
Крутой курс! Я поразился насколько просто в Java можно создать клиент-серверное приложение. В добавок к этому в распоряжении программиста имеются дополнительные классы-обертки над потоками ввода-вывода у сокетов, чтобы не мелочиться с буферными массивами. Раз-два готово! :) В этом курсе создается программа сокетный калькулятор - интересный пример клиент-серверного взаимодействия. Было самостоятельное задание написать программу угадай число или быки и коровы. Я выбрал угадай число. Рекомендую всем пройти этот курс - уроки короткие, кода мало, информация полезна :) |
|||
Клиент-серверный сокет Универсальный сокет | + 11 | ||
Решил полностью с нуля написать все требуемые функции, не копируя свои прежние наработки. В итоге, повторил и лучше закрепил свои навыки и знания. Попрактиковался в работе с отладчиком gdb. По поводу новых видеокурсов, я бы порекомендовал вам, Евгений Витольдович, курс по созданию инсталлятора программ. Многие формулисты уже создали множество программ на этом проекте, а установкой до сих пор не занимались. Например, я использую систему сборки проекта Autotools, которая позволяет скомпилировать, установить и развернуть приложение на другом компьютере Linux. Так же я практиковался в упаковке программ в rpm-пакеты, которые устанавливаются всего лишь одной командой в терминале. Пора бы другим формулистам устранить этот профессиональный пробел в создании инсталлятора для Windows. Возможно это будет просто мини-курс по использованию известного инсталлятора. Или это будет новая программа, которая сама раскидывает данные пользователя по папкам, работает с реестром и прочее. Интересно будет узнать ваше и мнение других формулистов :) |
|||
Клиент-серверный сокет Скелет телефона | + 15 | ||
Понравились возможности кодогенерации IDE и комментарии Евгения Витольдовича "раз-два готово, тыг-дык готово, раз-раз готово, тяп-ляп, не, тяп-ляп не надо :)" |
|||
Клиент-серверный сокет Основной алгоритм | + 14 | ||
Так как эту программу я самостоятельно написал на прошлом уроке, то сейчас я решил с нуля переписать ее вслед за Евгением Витольдовичем, без излишеств и стремясь к созданию аналогичной структуры программы. |
|||
Клиент-серверный сокет Техническое задание | + 12 | ||
Реализовал программу Socketor - клиент-серверный калькулятор. Поразительно, но сам клиент-серверный обмен был написан довольно быстро :) Много времени ушло на парсинг командной строки, обработку ошибок ввода, проверка деления на ноль. Спасибо Евгений Витольдович, я хорошо попрактиковался :) |
|||
Клиент-серверный сокет Экспериментальный сервачок | + 16 | ||
Реализовал игру угадай число. Сервер загадывает число от 1 до 100, затем ждёт подключения клиентов. Чтобы жизнь клиента не была слишком скучной, первое число, которое загадывает клиент я сделал рандомным в том же интервале от 1 до 100. Затем клиент отправляет это число на сервер и он отвечает ему, является ли число клиента меньше, больше или равно загаданному. Клиент получает ответ и уже далее вычисляет новое число путем деления пополам области поиска. Я добавил задержку между итерациями угадывания числа на клиенте в 2 секунды, чтобы результат получился более интерактивным. Интересная задачка, спасибо Евгений Витольдович, неплохо увлёкся во время пересылок данных между клиентом и сервером :) |
|||
Клиент-серверный сокет Клиент-серверный диалог | + 16 | ||
Научился передаче сообщений от клиента к серверу и обратно. Теперь сервер обрабатывает запрос клиента и отвечает на него вполне осмысленно, в зависимости от запроса клиента. |
|||
API поиска работы ПРОМЕЖУТОЧНЫЙ ВИДЕО ОБЗОР | + 13 | ||
На этом курсе я: 1) научился создавать web-client, выполнять GET-запрос и обрабатывать его ответ; 2) научился парсить json; 3) повторил работу с выводом информации в таблицу, с поиском выделенной строки. Курс понравился, у автора хорошая и позитивная подача материала. Иногда Валерий словно замирал на несколько секунд, подбирая нужное слово. Не могу сказать, что это недостаток, так как на мой взгляд лучше промолчать, чем сказать тысячу слов, чем собственно я сам грешу иногда:) В свой проект можно добавить поиск по адресу, по вилке зарплат, по каким-нибудь ключевым словам. Это потребует хорошенько подумать над графическим интерфейсом программы, чтобы он был гибкий, удобный и не громоздкий. Продолжение курса нужно, так как в последних уроках перешли к технологии WPF, интерфейс программы упростился по сравнению с WinForms и чувствуется некая незавершенность. Я думаю у автора есть немало идей :) Благодарю Валерий за курс! :) |
|||
API поиска работы Полная информация | + 15 | ||
Научился определять номер выделенной строки в таблице, вспомнил и повторил как открывать ссылки в браузере. У меня нет механизма исключений, обработку "исключительных ситуаций" я реализовал через проверку возвращаемого значений функций и сообщаю об этом пользователю через messagebox. |
|||
Клиент-серверный сокет Как хорошо уметь читать! | + 9 | ||
Научился создавать сокет на клиентской стороне, подключать его к серверу и получать данные от сервера. |
|||
Дневник успеха 2018-11-18 : Начинать начинай, да смотри же — заканчивай! | + 10 | ||
За эту неделю: + Я проверил 80 отчётов у 35 формулистов. + Я написал 4 сообщения 4 формулистам общим объёмом 2 килобуквы − Я не набрал ни одного текста :o( + Я решил 26 задач: 1 => «Лирика / Любимые цифры» на 100% 2 => «Лирика / Рулетка *» на 100% 3 => «Формулы / Формула 0001» на 100% 4 => «Формулы / Формула 0010» на 100% 5 => «Формулы / Формула 0011» на 100% 6 => «Формулы / Формула 0100» на 100% 7 => «Формулы / Формула 0101» на 100% 8 => «Формулы / Формула 0110» на 100% 9 => «Формулы / Формула 0111» на 100% 10 => «Формулы / Формула 1000» на 100% 11 => «Символы / Видео-Шарп» на 100% 12 => «Символы / Висагинас» на 100% 13 => «Символы / Коды букв» на 100% 14 => «Символы / Буквы кодов» на 100% 15 => «Символы / Пятёрочка» на 85% 16 => «Геометрия / Куб» на 100% 17 => «Геометрия / Окружность» на 100% 18 => «Геометрия / Геометрическое» на 100% 19 => «Геометрия / Прямоугольник» на 100% 20 => «Геометрия / Длина отрезка» на 100% 21 => «Геометрия / Площадь круга» на 100% 22 => «Геометрия / Синус радиана» на 100% 23 => «Геометрия / Вектор» на 100% 24 => «Целые задачи / Арифметика» на 100% 25 => «Целые задачи / Уравнение» на 100% 26 => «Целые задачи / N уроков» на 100% + Я выполнил 17 видеоуроков: 1 => «API поиска работы / Начало работы с HeadHunter API» за 1 час. 6 мин. 2 => «API поиска работы / Все запросы - через приложение» за 4 час. 3 мин. 3 => «API поиска работы / Из JSON всё по полочкам» за 2 час. 4 мин. 4 => «API поиска работы / Свободный поиск по вакансиям» за 4 час. 0 мин. 5 => «API поиска работы / Меняем внешний вид» за 1 час. 17 мин. 6 => «API поиска работы / Структура вакансии» за 2 час. 31 мин. 7 => «API поиска работы / Предложения - в таблицу» за 1 час. 31 мин. 8 => «API поиска работы / Пошаговая отладка » за 22 мин. 9 => «API поиска работы / Переезжаем на WPF» за 1 час. 1 мин. 10 => «Демо игры / VIP. Бесплатная консультация» за 1 мин. 11 => «Демо софт / VIP. Бесплатная консультация» за 1 мин. 12 => «Клиент-серверный сокет / Что такое сокет» за 49 мин. 13 => «Клиент-серверный сокет / Простейший сервер» за 1 час. 26 мин. 14 => «Клиент-серверный сокет / Автоответчик» за 31 мин. 15 => «On-line игра / Поиск монеток на поле Дураков» за 1 час. 1 мин. 16 => «On-line игра / Внутренний мир Субъекта» за 13 мин. 17 => «On-line игра / Прогулка за ручку» за 3 час. 20 мин. − Я не собрал ни одного Мегахеша :o( На этой неделе я завершил курсы "Онлайн Игра" и "API HeadHunter". Сегодня приступил к курсу "Клиент-серверный сокет". На следующей неделе планирую продолжить выполнять курс "Клиент-серверный сокет". |
|||
Клиент-серверный сокет Автоответчик | + 12 | ||
Научился отправлять сообщение клиенту, создавать сервер-автоответчик. |
|||
Клиент-серверный сокет Простейший сервер | + 14 | ||
При вызове accept процесс сервера блокируется до тех пор, пока в очереди не появится запрос клиента. Написал программу на языке Си. Проверил созданный сервер через браузер и telnet. Через браузер пока что получается неинформативный результат работы, поэтому прикрепил скриншот вывода программы telnet. |
|||
Клиент-серверный сокет Что такое сокет | + 9 | ||
Клиент-серверное приложение состоит из двух частей: из клиента и сервера. Сервер прослушивает линию и ожидает подключения клиентов, обрабатывает их запросы и возвращает ответы. Клиенты обращаются к серверу за необходимой информацией. IP-адрес необходим для задания уникального адреса в сети, по которому ПО сетевого протокола IP сможет найти хост. Соответственно порт необходим для функционирования транспортного протокола, где каждый порт привязывается к определенной службе на хосте. Таким образом, IP-адрес определяет хост в сети, а порт определяет службу на этом хосте. Имея эту пару можно создать канал общения клиента и сервера. Само общение реализуется с помощью создания сокета. Сокет - это экземпляр "канала", программная абстракция соединения между процессами клиента и сервера. |
|||
API поиска работы Переезжаем на WPF | + 12 | ||
Я создавал эту программу на языке Си, у меня нет поддержки WPF. Чтобы добавить тени я использовал таблицу стилей CSS. Хочу выразить благодарность Валерию Жданову за интересный курс. Я научился формировать GET запросы, получать на них ответы, парсить json. Попрактиковался в выводе данных в таблицу. |
|||
API поиска работы Пошаговая отладка | + 9 | ||
Короткий урок, заменил вывод description на alternate_url. В моем случае тоже не было поля description, видимо api hh не выдает его при поиске вакансий. |
|||
API поиска работы Предложения - в таблицу | + 10 | ||
Вспомнил и повторил как необходимо добавлять строки в таблицу, записывать данные в требуемые столбцы. |
|||
API поиска работы Структура вакансии | + 10 | ||
Повторил как парсить массивы в json, обрабатывать отсутствующие или null значения объектов. |
|||
API поиска работы Меняем внешний вид | + 13 | ||
Повторил как создавать таблицу, добавлять в нее столбцы, настраивать параметры столбцов. |
|||
API поиска работы Свободный поиск по вакансиям | + 9 | ||
Научился выполнять поиск по вакансиям и парсить массивы в json, повторил как создавать массив указателей. |
|||
API поиска работы Из JSON всё по полочкам | + 12 | ||
Научился парсить json. Познакомился с библиотекой json-glib. Использовал её для парсинга json-ответа из прошлого урока. |
|||
API поиска работы Все запросы - через приложение | + 12 | ||
Познакомился с библиотекой libsoap, научился с её помощью создавать GET-запрос, получать на него ответ. |
|||
API поиска работы Начало работы с HeadHunter API | + 7 | ||
Узнал про сайт http://jsonviewer.stack.hu, научился использовать HeadHunter API для поиска вакансии по ее номеру. Firefox без сторонних аддонов позволяет увидеть json-ответы как в формате обычного текста, так в формате удобном для чтения. |
|||
Демо софт VIP. Бесплатная консультация | + 11 | ||
Пока что нет необходимости в бесплатной консультации, буду знать про эту возможность. |
|||
Демо игры VIP. Бесплатная консультация | + 11 | ||
На данный момент консультация не нужна, буду знать про эту возможность. |
|||
On-line игра Прогулка за ручку | + 11 | ||
В процессе создания тестов потребовалось дополнительно изучить тему перегрузки операторов и использование ассоциативных массивов. Жду продолжения курса :) |
|||
On-line игра Внутренний мир Субъекта | + 9 | ||
В моем случае нет модификатора доступа internal, но можно провернуть схожий трюк с помощью ключевого слова friend - сделать класс Game другом класса Level. Решение не очень красивое, но работает. В этом случае класс Game имеет полный доступ к классу Level, к методу set_subject в том числе. А все остальные классы не могут использовать метод set_subject. |
|||
On-line игра Поиск монеток на поле Дураков | + 12 | ||
Благодаря модульным тестам нашел ошибку в своем методе поиска случайной координаты :) |
|||
On-line игра Лабиринты тестирования | + 11 | ||
Научился использовать фикстуры в модульных тестах Catch2. |
|||
Дневник успеха 2018-11-11 : Тише едешь - дальше будешь. | + 10 | ||
За эту неделю: + Я проверил 70 отчётов у 38 формулистов. + Я написал 3 сообщения 2 формулистам общим объёмом 2 килобуквы + Я набрал 2 текста: 1 => «C# набор / Служебные слова», без ошибок 2 => «C# набор / Сравнение двух целых чисел», без ошибок + Я решил 11 задач: 1 => «Лирика / Трамвай» на 100% 2 => «Лирика / Огород» на 100% 3 => «Лирика / Коты» на 100% 4 => «Лирика / Студент Вася» на 100% 5 => «Лирика / Полторы куры» на 100% 6 => «Лирика / Опечакти» на 100% 7 => «Лирика / Классики» на 100% 8 => «Лирика / Яблоки» на 100% 9 => «Лирика / Майкл» на 100% 10 => «Олимпиада / Случайная задача» на 100% 11 => «24 - Муза Оля / Дядюшка Эхо» на 100% + Я выполнил 15 видеоуроков: 1 => «Начало здесь / День №8. ВИДЕОФИКСАЦИЯ УСПЕХОВ.» за 1 час. 12 мин. 2 => «On-line игра / Координатная структура» за 29 мин. 3 => «On-line игра / Карта сокровищ» за 1 час. 44 мин. 4 => «On-line игра / Шаги по карте» за 52 мин. 5 => «On-line игра / Генерация лабиринта» за 5 час. 10 мин. 6 => «On-line игра / Координатный перебор» за 3 час. 28 мин. 7 => «On-line игра / Подходящий размер!» за 36 мин. 8 => «On-line игра / Правила игры» за 29 мин. 9 => «On-line игра / Дорога из жёлтого кирпича» за 7 мин. 10 => «On-line игра / Ищи ветра в поле» за 32 мин. 11 => «On-line игра / Координатный рефакторинг» за 35 мин. 12 => «On-line игра / Собери монетки» за 3 час. 23 мин. 13 => «On-line игра / 3. Тестирование. Тестовый прогон» за 1 час. 13 мин. 14 => «On-line игра / Тест обратной стороны Луны» за 1 час. 40 мин. 15 => «On-line игра / Случайное тестирование» за 16 мин. − Я не собрал ни одного Мегахеша :o( На этой неделе я решал задачи из раздела Консоль, проходил курс Онлайн Игра. На следующей неделе планирую закончить курс Онлайн игра. Выберу какой-нибудь новый курс, пока что не определился. Возможно это будет курс с базами данных. |
|||
On-line игра Случайное тестирование | + 10 | ||
В моей программе в структуре Coord нет методов YieldCoord, GetRandom, тестировать нечего. Требуемый функционал расположен в классе Level, поэтому протестирую эти два метода в следующих видео уроках. |
|||
On-line игра Тест обратной стороны Луны | + 15 | ||
Я составил список утверждений на базе условий проверок в функциях in_size и on_side и для наглядности оформил каждое утверждение в отдельную тестовую функцию. Достаточно сложно придумать хорошее имя для тестовой функции. |
|||
On-line игра 3. Тестирование. Тестовый прогон | + 14 | ||
Для создания модульных тестов выбрал Catch2, научился пользоваться этой библиотекой, подружил с Autotools. |
|||
On-line игра Собери монетки | + 12 | ||
Повторил использование генератора случайных чисел. Добавил подсчёт и отображение очков. |
|||
On-line игра Координатный рефакторинг | + 12 | ||
Повторил перегрузку операторов, генерацию исключений, узнал про #region. |
|||
On-line игра Ищи ветра в поле | + 13 | ||
Повторил поиск элемента в последовательности. |
|||
On-line игра Дорога из жёлтого кирпича | + 11 | ||
Повторил как изменять цвет выводимого текста. |
|||
On-line игра Правила игры | + 11 | ||
Добавили проверки на место перемещения, теперь игрок не забирается на стенки. |
|||
On-line игра Подходящий размер! | + 13 | ||
Простой и понятный урок, добавили ограничение на перемещение игрока в рамках игрового поля. |
|||
On-line игра Координатный перебор | + 18 | ||
В моем случае нет оператора yield, но я могу симулировать его поведение через создание шаблонного класса итераторов. Для этого потребовалось научиться создавать свой итератор. В итоге, получилась схожая с видеоуроком синтаксическая конструкция, где в цикле можно перебрать все элементы. |
|||
Начало здесь День №8. ВИДЕОФИКСАЦИЯ УСПЕХОВ. | + 13 | ||
Я проходил курс непрерывно в течение семи дней, но к сожалению, этот урок выполняю на девятый день, один день пропустил после 7 урока. Бонус получится меньше:) |
|||
On-line игра Генерация лабиринта | + 15 | ||
Повторил создание и использование шаблонов, конструкторов, операторов присваивания. Способ создания лабиринта похож на задания в курсе Графические циклы. |
|||
On-line игра Шаги по карте | + 16 | ||
Для того, чтобы класс Level сам отображал изменения в представлении можно использовать функцию обратного вызова или делегат, который отобразит изменения в локальной области экрана. |
|||
On-line игра Карта сокровищ | + 12 | ||
Повторил как создавать и использовать шаблоны классов. Создал шаблон класса двумерного массива Matrix, использовал в классе Level его специализацию Matrix<Subject>. |
|||
On-line игра Координатная структура | + 12 | ||
Повторил как создавать и использовать структуры. |
|||
Начало здесь День №8. Подведение итогов и составление Планов. | + 12 | ||
В этом уроке нет видео и нет прямой ссылки на еженедельный отчет. Я ранее, когда бродил по сайту, нашел эту ссылку, но далеко не все смогут сразу найти нужный раздел. Это может вызвать неудобство у неофитов. https://www.videosharp.info/13417/checking/power=2260 |
|||
Дневник успеха 2018-11-04 : Мала пчелка, да и та работает. | + 11 | ||
За эту неделю: + Я проверил 245 отчётов у 53 формулистов. + Я написал 22 сообщения 11 формулистам общим объёмом 15 килобукв + Я набрал 4 текста: 1 => «C# набор / Первая программа», без ошибок 2 => «Java - Запуск / Компиляция», без ошибок 3 => «Java - Вывод данных / Java Keywords», без ошибок 4 => «Java - Вывод данных / Целые типы», без ошибок + Я решил 21 задачу: 1 => «Целые числа / Максима» на 100% 2 => «Целые числа / Чтение» на 100% 3 => «Целые числа / Два числа» на 100% 4 => «Целые числа / Деление» на 100% 5 => «Целые числа / Пять чисел» на 100% 6 => «Целые числа / Пирамида» на 100% 7 => «Целые числа / Отзыв» на 100% 8 => «Строки / Length» на 100% 9 => «Строки / CompareTo» на 100% 10 => «Строки / Copy» на 100% 11 => «Строки / Split» на 100% 12 => «Строки / ToLower/Upper» на 100% 13 => «Строки / Contains» на 60% 14 => «Строки / Last/IndexOf» на 100% 15 => «Строки / Insert» на 100% 16 => «Строки / Remove» на 100% 17 => «Строки / PadRight/Left» на 100% 18 => «Строки / Replace» на 100% 19 => «Строки / Substring» на 100% 20 => «Формулы / Математика» на 100% 21 => «Олимпиада / Случайная задача» на 100% + Я выполнил 17 видеоуроков: 1 => «Начало здесь / День №1. Создание микро-Привычки.» за 13 мин. 2 => «Начало здесь / День №2. Общение с Единомышленниками.» за 55 мин. 3 => «Начало здесь / День №3. Безошибочное владение Клавиатурой.» за 12 мин. 4 => «Начало здесь / День №4. Развитие Алгоритмического мышления.» за 1 час. 1 мин. 5 => «Начало здесь / День №5. Создание игровых и прикладных Программ.» за 16 мин. 6 => «Начало здесь / День №6. Регулярный и Последовательный подход.» за 32 мин. 7 => «Дневник успеха / Полезные права и обязанности в Клубе формулистов» за 37 мин. 8 => «On-line игра / 1. Консольная игра. Добро пожаловать!» за 1 час. 3 мин. 9 => «On-line игра / Марионетка» за 1 час. 58 мин. 10 => «On-line игра / Представление выделяется» за 35 мин. 11 => «On-line игра / Модель игры» за 31 мин. 12 => «On-line игра / Контроллер не спешит» за 3 час. 47 мин. 13 => «On-line игра / Цветной телевизор» за 3 час. 58 мин. 14 => «On-line игра / Видный интерфейс» за 1 час. 30 мин. 15 => «On-line игра / Игра в библиотеке» за 1 час. 18 мин. 16 => «On-line игра / 2. Рефакторинг. Перечисление субъектов» за 34 мин. 17 => «On-line игра / Показ героя на экране» за 57 мин. − Я не собрал ни одного Мегахеша :o( На этой неделе я вступил в клуб формулистов. Был приятно удивлен, когда увидел в разделе Консоль выбор компилятора C++, опробовал его и решил несколько задач. Попутно начал проходить курс Онлайн игра, он похож на Теорию ООП - короткие видео с небольшими изменениями между уроками. В начале каждого видео Евгений говорит, "на это слайде", теперь я кажется понимаю почему именно так. Ведь на слайде много информации не уместишь, как раз столько, чтобы было достаточно на 5-минутный урок. Понравилась идея привязки байтов к доступу к урокам, согласен с Евгением, что это мотивирует на ежедневные занятия. На следующей неделе продолжу решать задачки в Консоли и проходить курс Онлайн Игра. |
|||
On-line игра Показ героя на экране | + 11 | ||
В уроке было наглядно показано, что если менять внешний интерфейс, то ломается вся программа. Поэтому временное решение в качестве переходника имеет место жить, чтобы постепенно перевести пользователей библиотеки на новый способ использования библиотеки. |
|||
Дневник успеха Полезные права и обязанности в Клубе формулистов | + 17 | ||
Видео почти год, но сами принципы клуба формулистов сохранились. Добавилось ограничение на скорость выполнения видеоуроков, один урок - 50 байт. Я считаю, что это верное решение, контролируют скорость прохождения курсов. Из перечисленных пунктов я проверяю отчеты, иногда комментирую, решаю задачки в консоли и прохожу видеоуроки. |
|||
Начало здесь День №7. Регулярный и Последовательный подход. | + 9 | ||
Сегодня набрал 30 байт. В клуб формулистов вступил. |
|||
On-line игра 2. Рефакторинг. Перечисление субъектов | + 17 | ||
Повторил как создавать и использовать enum. Задействовал перечисление в представлениях. |
|||
Начало здесь День №5. Создание игровых и прикладных Программ. | + 14 | ||
https://www.videosharp.info/13417/checking/ogame=2152 Сегодня набрал 30 байт. |
|||
On-line игра Игра в библиотеке | + 16 | ||
Порадовал момент на видео 3:35 - "Пишу программу одной мышкой". Удивило что настолько просто можно, буквально, перенести мышкой класс из основного проекта в библиотеку. |
|||
Начало здесь День №4. Развитие Алгоритмического мышления. | + 11 | ||
Сегодня набрал 25 байт. |
|||
On-line игра Видный интерфейс | + 12 | ||
Для проверки интерфейса, добавил третье, альтернативное представление, которое выводит другой текст белым цветом на зеленом фоне. |
|||
Начало здесь День №3. Безошибочное владение Клавиатурой. | + 13 | ||
1 подход 174 сим/мин 5 байт |
|||
On-line игра Цветной телевизор | + 14 | ||
Повторил как использовать цвета для вывода информации. Для простоты переключения представлений, можно создать общий интерфейс и реализовать через него требуемые представления, с цветов или без. |
|||
Начало здесь День №2. Общение с Единомышленниками. | + 16 | ||
https://www.videosharp.info/1295/checking/task4=485 При проблемах с уроками я выполняю поиск в Интернете, смотрю на готовые решения. Если есть что-то похожее, то адаптирую под свою задачу. Иногда обращаюсь к книгам, если помню что где-то читал про данную тему. Если проблема технического характера, то конечным пунктом будет обращение к первоисточнику - к официальному стандарту языка или к документации библиотеки. |
|||
On-line игра Контроллер не спешит | + 15 | ||
Для реализации постоянного движения объекта, я разделил программу на два потока. Первый считывает ввод пользователя и вызывает move с нужным смещением. Второй поток циклично перемещает объект с текущими смещениями. Для защиты от гонок добавил мьютексы. Реализовать постоянное движение объекта в выбранном направлении. |
|||
Начало здесь День №1. Создание микро-Привычки. | + 9 | ||
Проверил 20 отчетов. |
|||
On-line игра Модель игры | + 15 | ||
Красиво получается, логика постепенно отделяется от представления. Проблем не было. |
|||
On-line игра Представление выделяется | + 15 | ||
Далее можно выделить в отдельный класс обработку ввода пользователя. Не было. |
|||
On-line игра Марионетка | + 12 | ||
Для вывода на экран использовал библиотеку ncurses. Потребовалось время, чтобы вспомнить как создавать окно, выводить строку, символ и считывать нажатую клавишу и перемещать курсор. Проблем не было. |
|||
On-line игра 1. Консольная игра. Добро пожаловать! | + 14 | ||
Повторил процесс создания проекта с помощью autotools. Проблем не было. |
|||
Карточки памяти Алгоритм игры | + 21 | ||
Ранее выполнял этот урок в курсе Наноигры, сейчас было повторение. Изменил сборку проекта: раньше была с помощью программы make и на Makefile, сейчас перенес на Autotools. Проблем не было. |
|||
Нано-игры VIP урок. Игра 2048 | + 22 | ||
Посмотрел несколько видео на канале Евгения Витольдовича, посвященных прохождению этой игры. Советы хорошо помогают и направляют. Игру 2048 ранее создавал по курсу Микроигры, в этом уроке вновь сыграл в эту увлекательную игру, сложно оторваться) Набрать 2048. |
|||
Новые технологии Говорящие часы. Воспроизведение | + 21 | ||
Научился блокировать поток до момента окончания другого потока, то есть, использовать pthread_join. Звуковые файлы считывал с ресурсов. Повторил работу с таймером, временем, сменой указателя мышки. Проблем не было. |
|||
Новые технологии Говорящие часы. Запись голоса | + 22 | ||
Научился записывать звук с микрофона, использовал библиотеку pulseaudio. Повторил воспроизведение звука с помощью pulseaudio, применение потоков pthread, бинарный ввод/вывод файлов, повеселился с причудами и пробелами знаний в autotools. Я отделил запись слова "часов" от цифр и в итоге получилось 33 файла, вместо 49. Записал отдельно звуки для "минут", "минута", "минуты", "час", "часа", "часов", "один", "одна", "два", "две". Посмотрю на следующем уроке, имеет ли место быть такой подход. Действительно удобный способ записи: навел мышку и говоришь, без щелчков и лишних звуков. И еще нравится интерфейс, точнее, автоматизация: программа сама создает файлы с нужным названием. Это удобнее, чем использовать стороннюю программу. Реализовать запись звука с микрофона. |
|||
Шарики ФИНАЛЬНЫЙ УРОК | + 21 | ||
Повторил запись видео, монтаж, загрузку на youtube. Курс понравился, давно хотел его пройти и посмотреть как реализован поиск маршрута и линий 5+. Следующий курс - Игры со словами. Подобрать музыку к видео - youtube предоставляет мало аудиозаписей длиной более 3 минут. |
|||
Шарики Шарики. Поиск линий | + 22 | ||
Повторил работу с двумерными массивами и динамическим массивом std::vector. Проблем не было. |
|||
Шарики Шарики. Поиск пути | + 22 | ||
Попрактиковался с предикатами и алгоритмом std::min_element. Было приятно увидеть, как шарик строит себе маршрут и далее бежит по нему) Проблем не было. |
|||
Шарики Шарики. Логика игры | + 22 | ||
Попрактиковался в технических областях языка: 1) двумерные массивы; 2) compile-time вычисления и кеширование; 3) ассоциативный массив std::map; Проблем не было, однако, видео достаточно длинное, иногда теряется мысль и забываешь сделать что-то по заданию. |
|||
Шарики Шарики. Анализ игры | + 21 | ||
Повторил как загружать картинки из ресурсов и приводить их к нужному размеру. Реализовать обработку клика мышки по картинке. |
|||
Шарики Шарики. Вступление | + 22 | ||
Познакомился с правилами игры, скачал архив с картинками по предложенной ссылке. Проблем не было. |
|||
Теория ООП Интерфейс. VIP. Тяжёлая дружба кругов и квадратов. | + 21 | ||
Немного изменил интерфейс программы, добавил возможность выбора игры, очистки игрового поля и добавление необходимого количество кружков или квадратиков. Проблем не было. |
|||
Теория ООП Интерфейс. VIP. Пересечение прямоугольников. | + 22 | ||
Понравился вариант реализации метода Поймал для квадратиков; более компактный, чем мой в прошлом уроке. Проблем не было. |
|||
Теория ООП Интерфейс. VIP. Квадратики тоже хотят играть. | + 23 | ||
Нарисовал на бумаге все возможные комбинации пересечений прямоугольников. Поначалу получилось много различных условий, но потом удалось сократить или объединить некоторые варианты. Реализовал метод Поймал для Квадратика, на видео демонстрация программы. Реализовать метод Поймал. |
|||
Теория ООП Интерфейс. ФИНАЛЬНЫЙ УРОК. | + 17 | ||
В прошлом уроке я не совсем корректно реализовал игру вирус, у меня новый вирус распространялся после того, как все игроки оказались заражены, а по заданию требовалось делать это на шаг раньше, то есть, когда оставался последний незараженный игрок. Мелочь, но логика игры уже немного другая. К тому же, вариант Евгения Витольдовича более эффективный в плане поиска игроков. Поэтому использовал его алгоритм в методе FindNewVirus. Для разнообразия я привел на видео модифицированный вариант игры, когда зараженные замирают на месте. В целом, уроки короткие, проходятся на одном дыхании, рекомендую всем, кто хочет познакомиться с ООП. Нравится не только сам материал, его структура, но и подача, Евгений Витольдович заряжает оптимизмом, отвечает на вопросы в чате, хочет действительно помочь и делиться своими знаниями, поэтому в результате получаются хорошие уроки. Следующий курс выберу Шарики, давно хотел их пройти. Проблем не было. |
|||
Теория ООП Интерфейс. Создаём новую игру. | + 17 | ||
Повторил работу с алгоритмом std::find. Решил самостоятельно реализовать игру вирус, записал видео. Проблем не было. |
|||
Теория ООП Интерфейс. Изменяем правила игры. | + 17 | ||
Правила новой игры: только Голя имеет право бегать, остальные стоят на месте. Когда Голя кого-то ловит, он сам замирает на месте, а пойманный игрок становится Голей и бежит. Игру реализовал и записал на видео. Проблем не было. Для создания новой игры потребовалось изменить всего лишь одну функцию RunAll в классе GameCatch. |
|||
Теория ООП Интерфейс. Кружочки гоняются друг за другом. | + 18 | ||
Они побежааааааали) Чтобы исправить недочет с переголением, можно добавить отсчет времени или определенное количество циклов игры, в течение которых нельзя будет назначить нового Голю. Проблем не было. |
|||
Теория ООП Интерфейс. Кружок готов к игре! | + 20 | ||
Повторил приведение типов, обработку исключений. Для запуска игры необходимо добавить кружки в список игроков с помощью метода AddGamer, добавить таймер, вызывать в нем метод Step и рисовать кружки. Проблем не было. |
|||
Теория ООП Интерфейс. Кружок хочет играть. | + 20 | ||
Для того, чтобы кружок побежал, необходимо изменять координаты его центра. Для этого можно использовать переменные sx, sy в качестве смещения по осям x, y. Чтобы проверить поймал ли кружок другого кружка, можно сравнить расстояние между центрами кружков и если оно меньше суммы радиусов, значит кружок пойман. Проблем не было. |
|||
Теория ООП Интерфейс. Запускаем кружки на площадку! | + 20 | ||
Повторил настройку формы, добавление кнопки. Порадовался результату - кружки появились на форме) Проблем не было. |
|||
Теория ООП Интерфейс. Кружок на площадке. | + 18 | ||
Повторил использование генератора случайных чисел, рисование окружности. Проблем не было. |
|||
Теория ООП Интерфейс. Площадка для игры. | + 18 | ||
Повторил как создавать: статические поля и функции в классе, графический контекст и область для рисования. Класс Арена нужен для создания и рисования объектов на форме. Не было. |
|||
Теория ООП Интерфейс. Создаём кружок. | + 21 | ||
Попрактиковался в создании constexpr конструкторов. Далее необходимо связать через наследование интерфейс Игрок с классом Circle, реализовать методы интерфейса и нарисовать на форме объект класса Circle. Не было. |
|||
Теория ООП Интерфейс. Алгоритм игры. | + 20 | ||
Чтобы начать игру, необходимо создать класс, который реализует интерфейс Игрок, создать несколько объектов этого класса и добавить их с помощью AddGamer. Далее необходимо создать на форме поле, где будут рисоваться игроки. Проблем не было. |
|||
Теория ООП Интерфейс. Правила игры. | + 20 | ||
Для того, чтобы найти нового лидера, необходимо проверить в цикле Поймал() ли текущий лидер кого-то из игроков. Если поймал, то вызвать метод SetNewLeader. Чтобы установить нового лидера, нужно в цикле сказать каждому игроку НеГоля(). А игроку, который стал новым лидером, сказать Голя(). По этому словесному описанию реализовал два требуемых метода. Не запутаться в указателях внутри циклов. |
|||
Теория ООП Интерфейс. Зачем он нужен. | + 19 | ||
Интерфейс - это своего рода образец, требование, который должен выполнить класс, чтобы адаптироваться под код, в котором используется интерфейс. Конкретнее говоря, этот класс должен реализовать список методов, которые указаны в интерфейсе. Не было. |
|||
Теория ООП ПОЛУФИНАЛЬНЫЙ УРОК. | + 23 | ||
В этом курсе я повторил создание классов, использование наследования и полиморфизма на примере графических фигур. Было полезно поработать с коллекциями, перегрузкой функций, вызовами базовых конструкторов, делегирующих конструкторов. В целом, хорошие и понятные уроки, рекомендую всем для прохождения после начальных курсов Демо Игры и Демо Софт. Не было. |
|||
Теория ООП Перемещение Снеговиков | + 23 | ||
Повторил использование полиморфизма в функции Move и вызов функции базового класса. Проблем не было. |
|||
Теория ООП Перемещение других фигур | + 21 | ||
Повторение материала прошлого урока, реализовал перемещение для Box и Line. Проблем не было. |
|||
Теория ООП Перемещение круга | + 21 | ||
Повторил использование переменных их базового класса. Проблем не было. |
|||
Теория ООП Спрайт для Снеговика | + 19 | ||
Повторил работу с коллекцией vector: добавление элементов и очистка содержимого коллекции. Проблем не было. |
|||
Теория ООП Мощь полиморфизма | + 19 | ||
Повторил как создавать чисто виртуальные функции и использовать полиморфизм. Проблем не было. |
|||
Теория ООП Переезд graph в базовый класс | + 19 | ||
Повторил как использовать наследование функций Draw, например класс Circle реализовал функцию Draw, а класс ColorCircle, который является производным от Circle, наследует эту функцию и нет необходимости в повторной реализации. Проблем не было. |
|||
Теория ООП Переезд метода Draw | + 18 | ||
Повторил использование указателей на указатели, move constructor. Проблем не было. |
|||
Теория ООП Приведение с мотором | + 19 | ||
Повторил как определять тип объекта с помощью оператора typeid. Shape.position - это базовая точка фигуры, относительно которой она рисуется, поворачивается и изменяется в размерах. Проблем не было. |
|||
Теория ООП Фигуральный базовый класс | + 20 | ||
Реализовал функцию Draw через switch по типу рисуемой фигуры. Тип рисуемой фигуры хранится в базовом классе Shape. При создании объекта производного класса, в его конструкторе указывается нужный тип фигуры. Проблем не было. |
|||
Теория ООП Богатое наследство | + 19 | ||
Повторил как вызывать конструктор базового класса. Наследование - это способ создания нового класса на базе существующего, путем расширения и добавления нового функционала. Проблем не было. |
|||
Теория ООП Второй Снеговик | + 17 | ||
Для того, чтобы перемещать, поворачивать, изменять размер снеговика необходимо задать точку отсчета начала координат снеговика и задать базовые размеры снеговика. Проблем не было. |
|||
Теория ООП Рисуем Снеговика | + 16 | ||
Нарисовал снеговика, повторил как находить точку пересечения линии и окружности. Проблем не было. |
|||
Теория ООП Цветные карандаши | + 20 | ||
Повторил как изменять цвет выводимой фигуры. Проблем не было. |
|||
Теория ООП Расстояние между пикселями | + 20 | ||
Повторил как находить расстояние между двумя точками. Проблем не было. |
|||
Теория ООП Пиксели для классов | + 22 | ||
Повторил как вызывать делегирующий конструктор. Проблем не было. |
|||
Теория ООП Структура vs Класс | + 22 | ||
Так как пишу на C++, то в моем случае нет указанной разницы между классом и структурой. В C/C++ все передаются по значению. Для того, чтобы функция могла изменить значение аргумента, необходимо передать указатель или ссылку на аргумент. Но урок требует реализовать поведение, поэтому написал функцию move_pixel, которая принимает аргумент по значению и не изменяет его. И написал вторую функцию move_pixel_ref, которая принимает аргумент по неконстантной lvalue-ссылке и изменяет аргумент. Проблем не было, хорошо показана и нарисована разница между структурами и классами в C#. |
|||
Теория ООП Структура пикселя | + 21 | ||
Повторил как создавать второй конструктор класса. Не было, короткие и понятные уроки. |
|||
Теория ООП Круглый класс | + 21 | ||
Повторил как рисовать окружности. Проблем не было. |
|||
Теория ООП Второй класс | + 21 | ||
Создал класс Box, повторил перегрузку функций draw. Проблем не было. |
|||
Теория ООП Первый класс | + 21 | ||
Научился использовать функцию make_unique для создания объекта класса Line, повторил перегрузку функций draw. Проблем не было. |
|||
Теория ООП Урок рисования | + 21 | ||
Повторил как рисовать линии, прямоугольники, заливать область цветом. Проблем не было. |
|||
Теория ООП Инкапсуляция мечты | + 21 | ||
Инкапсуляция в самом простом понимании - это объединение под одной логической сущностью данных и кода, которых их обрабатывает. В процедурных языках объединение реализуется в модулях, в ООП языках - в классах. Объединение необходимо для того, чтобы уменьшить видимую сложность системы по стародавнему принципу "разделяй и властвуй", когда клиент класса использует его через удобный и надежный интерфейс, который не вызовет переход объекта в нестабильное состояние. Подобрать картинку. |
|||
Микроигры VIP урок. Стрелялка | + 21 | ||
Так как урок про ООП, поэтому использовал язык C++. Это потребовало подружить Autotools + gtkmm + C++. Подружил. Повторил как использовать таймер и обрабатывать события нажатия и перемещения мышки. Хорошо когда есть готовые наработки из ранее пройденных курсов, например, из Демо Игр. Проблем не было. |
|||
Микроигры ФИНАЛЬНЫЙ УРОК | + 21 | ||
Повторил процесс создания видео обзора. Проблем не было. |
|||
Микроигры Крестики-Нолики. Игра с компьютером | + 18 | ||
Попрактиковался с двумерными массивами и указателями на них. Разделил программу на три части: 1) логика игры (арбитр, контролирующий доступ к полю игры); 2) искусственный интеллект 3) графический интерфейс и взаимодействие с пользователем, собственно, сама игра, которая обращается за услугами к 1 и 2. Для интереса реализовал 1 и 2 часть в виде динамических библиотек. Реализовать функцию искусственного интеллекта: много условий и проверок для модульных тестов. |
|||
Микроигры 2048 - Объединение | + 20 | ||
Данный урок уже ранее выполнял, когда логика игры 2048 не была разбита на два урока. Слегка оптимизировал файлы configure.ac, Makefile.am, вновь оценил две интересные рекурсивные функции и немного поиграл, набрал 1024. Хитро придумано со счетчиком времени - нельзя отправить отчет ранее, чем истечет время видеоурока) Проблем не было. |
|||
Секундомер Играй гармонь! | + 15 | ||
Собирать гармошку из бумаги. Интересный урок) Собрать первую гармошку и выполнить 10 повторений. |
|||
Демо игры C# чего начать программировать | + 15 | ||
Первое вступительное видео для новичков на сайте было отличным, а новое еще лучше, короче. Я хочу научиться разрабатывать приложения для Linux. Видеуроки на videosharp помогают ставить перед собой цели, задачи и практиковаться в их решении. |
|||
Нанософт Делегаты на кубиках | + 15 | ||
В этом уроке впервые использовал связку autotools(система сборки проекта) + check(модульные тесты) + git. Попутно потренеровал навыки разработки через тестирование TDD. Зоопарк получился веселый и трудоемкий, на все задание ушло около 7 часов. В языке С нет встроенных делегатов, поэтому разработал "свои", на базе односвязного списка и указателей на функции. Реализовал операторы += -= через функции delegate_add delegate_remove и добился схожего функционала с программой из видеоурока. Собрать проект с помощью autotools, добиться выполнения команды make distcheck. |
|||
Микроигры Крестики-Нолики. Игра на двоих | + 16 | ||
Повторил создание меню, работу с массивами. Проблем не было. Хороший урок. |
|||
Микроигры 2048 - Смещение | + 16 | ||
Повторил работу с макросами, генерацией случайных чисел. Разобраться в рекурсивных функциях. В позапрошлом отчете в комментарии я написал "математично", а в этом напишу "алгоритмично":D Снимаю шляпу, красивое решение с помощью рекурсивных функций shift и combine :) |
|||
Микроигры 2048 - Интерфейс | + 16 | ||
Повторил работу с оформлением программы, научился собирать проект с помощью GNU Autotools. Подобрать цвета для тайлов. Хороший урок, теперь дело за логикой программы :) |
|||
Микроигры VIP урок. Формула 1 | + 16 | ||
Повторил работу с ресурсами и обработку событий нажатия на клавиатуру. Проблем не было. Понравились расчеты углов поворота, красиво и математично, без лишних условий и проверок. |
|||
Микроигры 2048 - Учимся играть | + 16 | ||
Играть в 2048. Набрать 2048. Интересная игрушка, затягивает :) |
|||
Микроигры ПОЛУФИНАЛЬНЫЙ УРОК | + 16 | ||
Повторил запись и обработку видео. Проблем не было. Прошел половину курса Микроигры, написал три программы на языке ассемблера. Оценил на собственном примере, что это весьма требовательный язык, стимулирует на изучение работы компьютера и приятно осознавать, что после очередных ошибок твоя программа реализует желаемое. На этом, заканчиваю спин-офф и возвращаюсь к высокоуровневым языкам :) |
|||
Микроигры Аполлон. Плавное прилунение | + 16 | ||
1) Сравнивать между собой числа с плавающей точкой; 2) Выполнять преобразование из числа с плавающей точкой в целое и обратно; 3) Создавать и использовать макросы; 4) Научился создавать инструкцию switch. Сравнить между собой числа с плавающей точкой. Интересная игрушка :) |
|||
Микроигры Аполлон. Законы физики | + 16 | ||
Научился складывать и умножать числа с плавающей точкой. Реализовать арифметические вычисления, проверить рассчитанные значения скорости и высоты после дельты времени. Хороший урок. |
|||
Микроигры Аполлон. Главные герои | + 16 | ||
Рисовать нечто похожее на космический корабль. Нарисовать рисунок. Необычный урок, давно не рисовал :) |
|||
Микроигры Игра 15 - Картинка | + 16 | ||
Научился "разрезать" изображение. Реализовать динамическое создание матрицы картинок. Сначала написал программу на языке С, для проверки алгоритма "разрезки" картинки. Потом переписал на ассемблере, были причуды и проблемы с динамическим выделением и освобождением памяти для массивов картинок. Результатом доволен, спасибо :) |
|||
Микроигры Игра 15 - Алгоритм | + 16 | ||
Повторил создание меню программы, практика на ассемблере. Реализовать "перемещение" кнопки. Хороший урок, понравилась реализация класса Game. Продолжаю увлекательное путешествие в мир низкоуровневых языков. |
|||
Микроигры Игра 15 - Кнопки | + 16 | ||
Повторил размещение элементов формы в табличном представлении, попрактиковался в языке ассемблера. Реализовать поиск кнопки по ее номеру. Решил немного "подурачиться", опробовать программирование на языке ассемблера. Это желание возникло по двум причинам: 1) набраться практики на ассемблере; 2) получше узнать процесс создания программы, чтобы по достоинству оценить удобство программирования на языке более высокого уровня. |
|||
Графические циклы VIP. Спирограф от Елены | + 1 | ||
Повторил построение спирали спирографа. Проблем не было. Хороший урок, насыщенный информаций, выполнял его ранее в "чашке кофе от Елены". |
|||
Графические циклы VIP. Спирограф | + 16 | ||
Повторил работу с графикой, научился накладывать несколько изображений. Реализовать масштабирование окружностей. Данную программу ранее создавал по уроку из "чашки кофе", с алгоритмом спирографа был знаком. Расширил программу, добавил вывод окружностей, регулировку скорости отрисовки. Хорошая практика, спасибо! |
|||
Графические циклы VIP. Узоры на окружности | + 16 | ||
Повторил работу с циклами, рисование линий. Проблем не было. Отличный урок, по традиции, в начале объясняется идея, в ручную выполняется задание, затем применяются циклы. |
|||
Графические циклы VIP - Квадрат Гарри Поттера | + 16 | ||
Научился махать волшебной палочкой и творить чудеса. И еще повторил линейную, круговую, гиперболическую функцию. Произнести все заклинания :) "1. y < x" "2. y == x" "3. y == 24 - x" "4. x + y < 30" "5. y == x / 2" "6. x < 10 || y < 10" "7. x > 15 && y > 15" "8. y * x == 0" "9. y < x - 10 || y > x + 10" "10. y < x && y >= x / 2" "11. x == 1 || x == 23 || y == 1 || y == 23" "12. y * y <= 400 - x * x" "13. y > 19 - x && y < 29 - x" "14. y * x <= 100" "15. (y < x - 9 && y > x - 21) || (y > x + 9 && y < x + 21)" "16. (y > x - 10 && y < x + 10) && (y > -x + 14 && y < -x + 34)" "17. y > 15 + sin(x * PI / 10) * 8" "18. (x == 0 || x == 1 || y == 0 || y == 1) && !(x == 0 && y == 0)" "19. x == 0 || x == 24 || y == 0 || y == 24" "20. (x + y) % 2 == 0" "21. (x % (y + 1)) == 0" "22. (x + y) % 3 == 0" "23. x % 2 == 0 && y % 3 == 0" "24. y == x || y == 24 - x" "25. x % 6 == 0 || y % 6 == 0" Мое заклинание: 26. (x * y) % 12 == 0" |
|||
Графические циклы ФИНАЛЬНЫЙ УРОК | + 16 | ||
Оценил свои результаты прохождения курса. Проблем не было. 1. Понравились ли тебе задачи? Ответ: да, понравились, хороший подход для объяснения материала, наглядная демонстрация. 2. Какие навыки ты приобрёл? Ответ: закрепил два навыка: а) необходимо давать корректные имена счетчикам, отражающие суть итерации б) необходимо уделять больше внимания точкам "экстремума": начальной и конечной итерации цикла. 3. Ставил ли ты свои эксперименты над циклами, какие? Ответ: да, ставил, я вынес размеры "холста", количество рисуемых объектов в отдельные константы, что позволило мне легко менять генерируемое изображение и лучше понять работу циклов. |
|||
Графические циклы Спираль Архимеда | + 16 | ||
Повторил использование тригонометрических функций sin, cos. Проблем не было. Хороший курс, в начале каждого урока автор показывает ручное решение поставленной задачи, затем детально и пошагово объясняет применение циклов. |
|||
Графические циклы Трёхмерные циклы | + 16 | ||
Повторил рисование окружностей, попрактиковался в работе со вложенными циклами. Проблем не было. Интересные примеры вложенных циклов, спасибо. |
|||
Графические циклы Внутренние условия | + 16 | ||
Закрепил использование вложенных циклов и внутренних условий. Проблем не было. Хороший урок. |
|||
Графические циклы Вложенные циклы | + 16 | ||
Научился рисовать прямоугольник, попрактиковался в использовании вложенных циклов и применении внутренних условий в теле цикла. Проблем не было. Хороший и понятный урок. |
|||
Графические циклы Пучок лучей | + 16 | ||
Повторил работу с циклами, начальными и конечными условиями. Проблем не было. Хорошие уроки, наглядно демонстрируется работа циклов. |
|||
Графические циклы Диагональные линии | + 1 | ||
Повторил работу с графикой, почитал мануал, слегка оптимизировал вызовы графических функций. Проблем не было. Улитки вперед! |
|||
Графические циклы Горизонтали и вертикали | + 16 | ||
Научился устанавливать задержку по времени для выполняемого потока. Проблем не было. Выполнил дополнительное задание, нарисовал диагональные линии. |
|||
Графические циклы Подготовка графики | + 16 | ||
Повторил создание графического контекста, рисование линии. Проблем не было. Выполнил дополнительное задание, нарисовал сетку 25 на 25. |
|||
Секундомер VIP. Секрет мастерства | + 16 | ||
Повторил создание программы секундомер. Проблем не было. Курс понравился, многократные повторения создания программы пошли на пользу, теперь лучше понимаю работу с таймером, датой и временем. |
|||
Секундомер VIP. Биоритмы | + 16 | ||
Научился использовать функции обработки аргументов командой строки и функции регулярных выражений, предоставленные библиотекой GTK+. Проблем не было. Добавил возможность считывания с командой строки даты рождения и текущей даты. Дата рождения обязательна для ввода, задается коротким ключом -b yyyy-mm-dd или длинным --birthday yyyy-mm-dd. Для ввода текущей даты ключи -c или --current. Если текущая дата отсутствует, берется системное время. На скриншотах показаны две разные комбинации, взятые от балды, дат рождения и текущей даты. |
|||
Секундомер ФИНАЛЬНЫЙ УРОК | + 16 | ||
Повторил создание программы Секундомер, закрепил использование горячих клавиш. Проблем не было. Ура, я закончил курс секундомер! Итоговое время создания программы с нуля 27:30 (ужасающая цифра, по сравнению с версией на C#). С одной стороны много, с другой - время проходит незаметно. Курс оказался полезным, часто прибегал к горячим клавишам, неплохо сокращает время создания программы. Следующий курс - куда укажет улитка :) Спасибо! |
|||
Секундомер 5 часть. Видеофиксация | + 16 | ||
Повторил пункты 240-273. Проблем не было. Время 8:40. |
|||
Секундомер 5 часть. Пункты 240 – 273 | + 16 | ||
Повторил пункты 240-273. Проблем не было. Время 7:28. |
|||
Секундомер 4 часть. Видеофиксация | + 16 | ||
Повторил пункты 200-239. Проблем не было. Время 11:47. |
|||
Секундомер 4 часть. Пункты 200 – 239 | + 16 | ||
Повторил пункты 200-239, закрепил использование горячих клавиш для навигации по тексту документа. Выполнить 10 повторений. Лучшее время 11:40, учитывая 10 повторений, весь процесс выполнения урока, с небольшими перерывами, затянулся на два с половиной часа. Было утомительно, но результатом доволен :) |
|||
Секундомер 3 часть. Видеофиксация | + 16 | ||
Повторил пункты 150-172. Проблем не было. Время 2:09. |
|||
Секундомер 3 часть. Пункты 150 – 172 | + 16 | ||
Повторил пункты 150-172. Проблем не было. Время 2:01, экспериментировал с очередностью действий. |
|||
Секундомер 2 часть. Видеофиксация | + 16 | ||
Повторил пункты 120-145. Проблем не было. Время 2:55. |
|||
Секундомер 2 часть. Пункты 120 – 145 | + 16 | ||
Повторил добавление метки, поле текстового ввода и кнопки, создание файла CSS. Проблем не было. Хорошая прокачка, при первых запусках искал некоторые поля настроек, в последних запусках заметно ускорился, примерно в два раза. |
|||
Секундомер 1 часть. Видеофиксация | + 16 | ||
Повторил пункты 100-113. Проблем не было. Выполнил за 50 секунд. |
|||
Секундомер 1 часть. Пункты 100 – 113 | + 16 | ||
Научился использовать базовые горячие клавиши в программе Glade: Ctrl+N (создать новую форму) Ctrl+W (закрыть форму), Ctrl+S (сохранить форму). Проблем не было. Хорошая прокачка, руки сами запоминают где находится то или иное поле ввода. |
|||
Секундомер Написание кода | + 16 | ||
Повторил создание секундомера. Проблем не было. Во второй раз программа пишется легче и быстрее. |
|||
Секундомер Настройка формы | + 16 | ||
Повторил процесс создания интерфейса программы. Проблем не было. Ранее выполнял урок в курсе Нанософт, пишу с нуля, в этот раз использовал программу создания интерфейса Glade. |
|||
Секундомер Моральная подготовка | + 16 | ||
Научился задавать себе вопросы и получать ответы. Проблем не было. Написал около 30 программ на проекте videosharp.info. Последняя программа Close Window, которая закрывает окно приложения, написана по уроку Нанософт VIP урок. Работа с WinAPI. Программа создана за 4 часа. Я изучаю программирование в качестве хобби, для саморазвития. Программировать ничего не мешает. |
|||
Нанософт VIP урок. Работа с WinAPI | + 16 | ||
Научился получать доступ к списку запущенных оконных приложений, искать требуемое окно по его названию и закрывать найденное окно. Получить список запущенных приложений. Довольно сложный урок, потребовалось много читать и пользоваться поиском. От себя добавил возможность закрывать дочерние окна приложений: на первом скриншоте открыто дочернее модальное окно Preferences файлового менеджера Nautilus. На втором скриншоте - окно закрыто и программа автоматически закрывает модальное окно при попытке открыть Preferences. Опасная программа, несколько раз GNOME предупреждал об ошибках приложений во время режима Auto Close :) Спасибо за урок! :) |
|||
Нанософт ФИНАЛЬНЫЙ УРОК | |||
Повторил создание видеообзора. Создать видеообзор, добавить текстовые комментарии к видео. Следующий курс укажет улитка:) |
|||
Нанософт Скорость на клавиатуре | + 16 | ||
Повторил работу с таймером, секундомером. Проблем не было. Немного изменил поведение программы, добавил фильтр вводимых букв: при событии key-press сначала определяется код нажатой клавиши, если это верная буква, то она добавляется в поле ввода, если буква ошибочна, то поле ввода остается без изменений. |
|||
С++ Графика - обрезка изображений Сохранение файла | + 16 | ||
Научился сохранять матрицу точек в файл изображения. Проблем не было. Добавил текстовые комментарии к цифрам в верхней области окна. Заменил цвет рамки рабочей области на черный, добавил серую рамку, которая ограничивает масштабированное изображение, чтобы лучше видеть пропорции исходного изображения. Сделал рамку обрезки пунктирной. Реализовал выбор имени сохраняемого файла. В целом, курс понравился. Так как автор изначально ориентируется на знание основ Win32 приложения, то я считаю, что первую половину курса можно смело сократить до двух-трех уроков. Уроки в первой половине короткие, слабо связаны с тематикой курса, а во второй длиннее, хотя, может это такая фича. Еще как пожелание, по примеру видеоуроков Евгения Витольдовича, хотелось бы видеть использование схем, рисунков в Paint, думаю будет нагляднее понимать материал. Спасибо за курс! :) |
|||
С++ Графика - обрезка изображений Вывод обрезанного изображения | + 16 | ||
Повторил как масштабировать изображение. Проблем не было. Добавил возможность выбора файла изображения и перерисовку рамки обрезки при изменении размера окна приложения. По предложению Ивана Воронина, заменил три логические переменные на один enum, но для удобной реализации цикла load->scale->crop (например, нет смысла выполнить crop, если не был выполнен load) потребовалось освежить в памяти некоторые знания по enum class, перегрузке операторов для enum, friend-functions, в общем, спасибо Иван:) |
|||
С++ Графика - обрезка изображений Матрица цветных точек | + 16 | ||
Научился определять границы изображения по матрице точек. Проблем не было. Границы определили, теперь осталось нарисовать рамку и сохранить новое изображение:) |
|||
С++ Графика - обрезка изображений Вывод информации в основное окно | + 16 | ||
Научился получать доступ к матрице цветных точек изображения. Получить доступ к матрице цветных точек изображения. Для проверки того, что я действительно получил доступ к матрице точек изображения, решил сделать трюк: в начале создаю временный объект изображения, копирую его матрицу точек в массив, а уже на базе этого массива сырых данных создаю новый объект изображения, затем использую новый объект для масштабирования и вывода на экран. |
|||
С++ Графика - обрезка изображений Вывод картинки на экран | + 16 | ||
Загружать и масштабировать изображение из файла. Реализовать перерисовку и масштабирование изображения. Добавил возможность масштабирования изображения при изменении размера окна приложения. |
|||
С++ Графика - обрезка изображений Подготовка к выводу картинки на экран | + 16 | ||
Узнал как нарисовать прямоугольник, настроить параметры карандаша для рисования рамки, выбрать готовые экземпляры кистей для заливки. Проблем не было. Как пожелание, можно прикрепить к видеоуроку тестовый файл редактируемого изображения. Нашел в интернете похожий файл изображения компакт-диска, думаю подойдет. |
|||
С++ Графика - обрезка изображений Программирование события BN_CLICKED | + 16 | ||
Узнал как обрабатывать событие нажатия на кнопку после получения сообщения WM_COMMAND в WndProc. Проблем не было. Понравилась идея с тремя переменными, добавил isOpen = false в конец функции OnSave, для повторения цикла Open-Crop-Save. |
|||
С++ Графика - обрезка изображений Создание кнопок | + 16 | ||
Узнал как создавать кнопки с помощью функции CreateWindow и загружать в них изображение с использованием пары функций LoadImage, SendMessage. Проблем не было. Если я правильно понял, то файлы open.bmp, crop.bmp, save.bmp находятся в системных каталогах Windows и нет необходимости указывать прямой путь к файлам. |
|||
С++ Графика - обрезка изображений Программирование события WM_PAINT | + 16 | ||
Познакомился с событием WM_PAINT, функцией для вывода текста TextOut, GetClientRect и MoveWindow. Установить требуемый размер области изображения. Интересный способ подгонки размера клиентской области экрана. |
|||
С++ Графика - обрезка изображений Добавление класса BmpCtrl | + 16 | ||
Познакомился с событием WM_CREATE, WINAPI-функцией GetCurrentDirectory. Проблем не было. Удобно, когда Visual Studio позволяет ускорить процесс создания программы. На видео показано, как создавать класс, добавлять в него функции, описывать аргументы. |
|||
С++ Графика - обрезка изображений Настройка среды | + 16 | ||
Научился создавать программу на C++ с помощью интерфейса gtkmm. Проблем не было. Создал свой вариант нулевого проекта, добавил три кнопки и область для вывода изображения. |
|||
С++ Графика - обрезка изображений Структура "нулевого" проекта | + 16 | ||
Посмотрел через видео на код нулевого проекта, более-менее понятно, хотя это код на языке С, здесь нет классов, шаблонов и прочих премудростей С++. Идем дальше:) |
|||
С++ Графика - обрезка изображений Презентация курса | + 16 | ||
Тема курса интересна, есть желание научиться работать с bmp-файлами. Другие темы также будут интересны. Однако, по своей традиции на проекте videosharp.indo, я хочу выполнить этот курс в ОС Linux, на языке С или С++ используя библиотеку GTK. Дмитрий Игоревич, одобрите мой подход?:) |
|||
Нанософт Расписание уроков | + 16 | ||
Научился выводить данные в таблицу, выполнять добавление, удаление строк, изменять данные в ячейке таблицы. Реальзовать выделение, добавление, удаление строк в таблице. Добавил возможность загрузки и сохранения таблицы в выбранный файл. |
|||
Нанософт Прохождение теста | + 16 | ||
Повторил строки, генерацию случайных чисел, загрузку данных из файла. Загрузить вопросы из файла. Расширил программу, убрал ограничение на 5 вопросов. Структуру файла оставил прежнюю: 1 строка это вопрос, 2, 3 и 4 строки это ответы. Первый ответ в списке правильный. Тематика теста - синтаксис языка С. |
|||
Нанософт Баскетбольное табло | + 16 | ||
Научился перехватывать событие закрытие окна: вместо удаления окно скрывается. Проблем не было. В процессе выполнения каждого урока узнаю что-то новое, повторяю уже полученные знания, спасибо за практику. |
|||
Нанософт Шахматные часы | + 16 | ||
Научился определять системное время. Проблем не было. Добавил возможность установки произвольного значения стартового времени часов. |
|||
Нанософт Твоё портфолио | + 16 | ||
1) разбивать окно приложения на несколько вкладок; 2) запускать внешнее приложение. Создать динамичный интерфейс приложения. Выбрал первый способ создания портфолио: через запуск готового исполняемого файла. Добавил конфигурационный файл, который содержит пути к каталогам с играми, софтом. Программа считывает конфигурационный файл и выполняет поиск всех файлов в указанных каталогах, как и в программе "Английские карточки", и затем динамично формирует интерфейс. Таким образом, можно добавлять информацию о новых приложениях без перекомпиляции портфолио. |
|||
Карточки памяти Отображение карточек | + 17 | ||
Повторил процесс создания блок-схемы, использование генератора случайных чисел. Проблем не было. Интересная игрушка, спасибо! |
|||
Карточки памяти Подготовка формы | + 16 | ||
Повторил как создавать меню, загружать картинки в ресурсы программы. Выбрать картинки. Нравится то, что кроме непосредственно программирования, на проекте практикуешься в смежных задачах: оформление программы, поиск и подготовка картинок, звуков, ресурсов программы. |
|||
Нано-игры ФИНАЛЬНЫЙ УРОК | + 17 | ||
Научился записывать видео с экрана, редактировать видео (склеивать кадры, добавлять текст). Создать видео обзор. Следующий курс Нанософт. |
|||
Нано-игры Бот для Цифр | + 16 | ||
Определять координаты курсора мыши на экране. Проблем не было. Возможное применение программы - автоклики по ссылкам, баннерам. |
|||
Нано-игры Игра Цифры | + 16 | ||
Создавать меню, назначать горячие клавиши. Проблем не было. Почитав предложенную ссылку из википедии про таблицу Шульта, решил расширить программу, вместо 9 клеток использовал 25. |
|||
Нано-игры Скорость реакции. Алгоритм и рекорд | + 16 | ||
Повторил работу с таймером, ProgressBar и генератором случайных чисел. Проблем не было. Повторение материала - это хорошо, сейчас легче создавать приложения. |
|||
Нано-игры Скорость реакции. Три картинки по таймеру | + 16 | ||
Повторил процесс создания графического интерфейса, обработку события таймера. Проблем не было. Интерфейс программы готов, теперь необходимо реализовать алгоритм по составленной блок-схеме, жду следующий урок :) |
|||
Нано-игры Скорость реакции. Блок-схема | + 16 | ||
Попрактиковался в создании блок-схем. Проблем не было. Как и в прошлом уроке, использование рисунков, блок-схем помогает нагляднее представить работу программы. |
|||
Нано-игры Арканоид - Шарик и кирпичики | + 16 | ||
Повторил создание ресурсов программы, оформление с помощью стилей. Реализовать алгоритмы отскока от ракетки и выбивания кирпичиков. В видеоуроке была использована программа paint для объяснения алгоритмов, это оказалось очень кстати, наглядно и понятно при составлении кода программы. От себя немного украсил окно игры с помощью стилей. |
|||
Нано-игры Арканоид - Уровень и ракетка | + 16 | ||
1) Обрабатывать событие нажатия на клавиши клавиатуры; 2) Перемещать виджеты. Реализовать алгоритм перемещения ракетки. Ракетка - это обычная кнопка, мячик - это радио кнопка, интересная задумка для арканоида :) |
|||
Демо софт Квадратный калейдоскоп | + 16 | ||
Научился рисовать в окне приложения. Нарисовать на экране линию и окружность. Красота, казалось бы, рисуются обычные линии и окружности, но в итоге получаются дивные узоры. |
|||
Демо софт Текстовый процессор | + 16 | ||
1) Научился использовать диалоговые окна открытия и сохранения файлов; 2) Считывать и сохранять весь файл целиком; 3) Выполнять замену подстроки в строке. Выполнить замену подстроки в строке. Хороший урок, полезно уметь пользоваться стандартными диалоговыми окнами для открытия и сохранения файлов. Для проверки работоспособности редактора, написал в нем консольную программу расчета квадрата числа, введенного из аргументов командой строки, сохранил, скомпилировал, все успешно работает. |
|||
Нанософт Средняя оценка | + 16 | ||
1) Устанавливать текст всплывающей подсказки; 2) Использовать CSS для оформления виджетов. Загрузить и применить настройки из CSS файла. Опробовал два предложенных способа, без использования делегата и с его использованием. Второй вариант понравился больше - класс Note сам вызывает функцию обновления текста меток при изменении внутреннего состояния. Компилятор частенько предупреждает об использовании устаревших возможностей библиотеки GTK, поначалу я скрывал предупреждения с помощью директивы, но теперь решил устранить эту неудобную проблемку. В этом уроке предупреждения были вызваны сменой размера шрифта на кнопках и метках. Более современное решения основано на использовании CSS файлов. Плюс такого подхода в том, что используются богатые возможности CSS для оформления программы и при этом вносимые изменения не требуют перекомпиляции проекта. Изменил файл, перезапустил приложение и сразу заметен результат. На втором скриншоте результат изменения CSS файла. |
|||
Демо софт Менеджер паролей | + 16 | ||
1) Копировать информацию в буфер обмена; 2) Использовать виджет запуска веб-браузера, выполнять переход на определенную страницу. Проблем не было. Немного иначе организовал программу: сведения об аккаунтах содержатся в одном месте, в массиве. Интерфейс программы формируется динамически в зависимости от количества аккаунтов в массиве. |
|||
Демо софт Английские карточки | + 16 | ||
1) Воспроизводить mp3, видео файлы; 2) Работать с файловой системой, считывать список файлов в каталоге; 3) Масштабировать изображение; 4) Менять изображение курсора мышки. Воспроизвести видео на желаемом виджете. Хороший урок, было интересно научиться воспроизводить видео файлы, проигрывать музыкальные mp3 файлы. В лабиринте я использовал низкоуровневую системную библиотеку PulseAudio, здесь решил применить нечто более удобное для прикладного программиста. Выбрал библиотеку libvlc, ее использует плеер VLC. |
|||
Демо софт Двенадцать месяцев | |||
Научился работать с календарем. Найти картинки и подогнать под единый размер. Доработал программу: при запуске файлы картинок загружаются в массив. Если файлы не найдены, то программа завершается с ошибкой. Далее, при смене месяца, картинки загружаются из памяти, без обращения к диску. |
|||
Демо игры VIP. Устный счёт | + 17 | ||
Использовать UTF-8 строки, знаки минуса, умножения. Проблем не было. Хорошая получилась программка, тренировка устного счета. |
|||
Демо софт Вам телеграмма! | + 17 | ||
Устанавливать telegram. Проблем не было. Хорошая задумка у telegram, множество клиентов под разные платформы: мобильники, десктоп и еще плюс веб-интерфейс. Сделал скрин из веб-интерфейса. |
|||
Демо игры ФИНАЛЬНЫЙ УРОК | + 16 | ||
Пересмотрел свои программы с курса Демо игры, заметен прогресс. Написать отзыв. Проект видеошарп - это хорошее место, с которого можно с нуля начать осваивать программирование. Формулисту достаточно просто следовать инструкциям преподавателя и в течение часа-другого создается рабочая программа. При этом не требуется каких-либо предварительных теоритических знаний. Практический подход - это сила, когда перед тобой ставят задачу и ты ее выполняешь. Я выбрал другие инструменты разработки, это добавило некоторые сложности, но в целом, я очень доволен результатом. Следующий курс - Демо софт. |
|||
Демо игры Камень ножницы бумага | + 16 | ||
Научился использовать генератор случайных чисел. Проблем не было. Сделал немного по-другому - игрок заранее не видит ход компьютера. Результат становится известен после нажатия кнопкой мышки по одной из картинок. |
|||
Демо игры Бот для Быстрощёлка | + 16 | ||
1) Симулировать в программе нажатие на кнопку мышки в произвольном месте рабочего стола; 2) Размещать элементы окна приложения в табличном представлении. Реализовать программное нажатие на клавишу мыши. Хороший урок, бот для быстрощелка, необычно. |
|||
Демо игры Игра Быстрощёлк | + 16 | ||
Замерять интервалы времени между событиями в программе. Проблем не было. Побил рекорд, одновременно нажимая на две кнопки мыши, получилось 16.2 нажатий в секунду. Опасная программа, жалко мышку:) |
|||
Демо игры Лабиринт 2D - игра | + 16 | ||
Создавать диалоговые окна, работать с таймером, программно перемещать указатель мыши. Программно переместить указатель мыши на начало лабиринта. Добавил третий уровень и звук при сборе "монеток". |
|||
Демо игры Лабиринт 2D - меню | + 16 | ||
1) Воспроизводить звуковой файл в формате PCM с помощью PulseAudio; 2) Создавать потоки с помощью pthreads; 3) Использовать утилиты sox и lame для подготовки звуковых файлов PCM; 4) Загружать звуковые данные из ресурсов программы. Реализовать "класс" Sound для воспроизведения звуков. Воспроизведение звукового файла оказалось интересной задачкой. В качестве решения выбрал библиотеку PulseAudio, правда, на данный момент моя программа может воспроизводить лишь несжатые PCM данные. Для создания таких PCM файлов использовал утилиты sox и lame. Столкнулся с проблемой блокирования потока программы при воспроизведении звука. Поэтому возникла необходимость воспроизводить звуки в отдельных потоках, для решения использовал POSIX pthreads. Как и на прошлом уроке, картинки и звуковые файлы загрузил в ресурсы программы, ожидал, что возможно будут трудности со считыванием звука из ресурсов, но все оказалось довольно просто. |
|||
Демо игры Картинка с секретом | + 16 | ||
1) Создавать файл ресурсов; 2) Обрабатывать событие нажатия на кнопку; 3) Обрабатывать событие перемещения мышки. Создать файл ресурсов и организовать загрузку картинок из памяти программы. Хороший и подробный урок. |
|||
Демо софт Вступительное слово | + 16 | ||
Познакомился с сайтом, методикой обучения. Создать "Hello Videosharp" приложение. Мне понравилась методика обучения преподавателя. Однако сфера моих интересов иная, я хочу попрактиковаться на языке C, который раньше немного изучал. Кроме того, есть желание научиться создавать оконные приложения с использованием GTK+ для Linux. Поэтому, если можно, я продолжу выполнять уроки с использованием своих инструментов разработки. |
|||
Игры со словами Игры со словами | |||
|
|||
Новые технологии Модульное тестирование | |||
|
|||
Базовый ASP.ект Мы начинаем ASP.NET с MVC | |||
|
|||
Tinklavimas 5. Калькулятор | |||
|
|||
Микроигры VIP урок. Змейка | |||
|
|||
MVC шаблон MVC - Суть шаблона | |||
|
|||
Шарики VIP. Рефакторинг Библиотеки | |||
|
|||
Повторение задач Stop. Think. Act. Review. | |||
|
|||
Фотошарп VIP. Обработка видео программой ffmpeg | |||
|
|||
Доска объявлений Главная страница - оформление - оповещения через баннер | |||
|
|||
Дневник успеха 2020-02-02 : Один с сошкой, а семеро с ложкой. | |||
|