- Видео 83
- Просмотров 26 357
Mobile in HITs
Добавлен 6 июн 2016
Канал преподавателя Высшей ИТ Школы Томского государственного университета Лидии Ивановой.
Здесь я выкладываю лекции для студентов и всех желающих по дисциплинам:
Разработка мобильных приложений (iOS и Android)
Рефакторинг программного обеспечения
Здесь я выкладываю лекции для студентов и всех желающих по дисциплинам:
Разработка мобильных приложений (iOS и Android)
Рефакторинг программного обеспечения
Рефакторинг программного обеспечения. Лекция 4. Обработка ошибок. IoC. SOLID
Рефакторинг программного обеспечения. Лекция 4. Обработка ошибок. IoC. SOLID
Просмотров: 108
Видео
Рефакторинг программного обеспечения. Лекция 3. Методы. Комментарии. Форматирование
Просмотров 18014 часов назад
Рефакторинг программного обеспечения. Лекция 3. Методы. Комментарии. Форматирование
Рефакторинг программного обеспечения. Лекция 2. Именование
Просмотров 11321 час назад
Рефакторинг программного обеспечения. Лекция 2. Именование
Рефакторинг программного обеспечения. Лекция 1
Просмотров 244День назад
Рефакторинг программного обеспечения. Лекция 1
Основы разработки мобильных приложений. Лекция 4. iOS
Просмотров 144Месяц назад
Степан Потапов рассказывает о разработке iOS-приложений
Основы разработки мобильных приложений. Лекция 5. Сетевое взаимодействие в iOS
Просмотров 102Месяц назад
Степан Потапов рассказывает о клиент-серверном взаимодействии на платформе iOS
Основы разработки мобильных приложений. Лекция 3. Android
Просмотров 1672 месяца назад
На лекции рассматриваются темы, необходимые для выполнения лабораторной работы: 1. Стили в XML 2. RecyclerView 3. Верстка с помощью Compose 4. Клиент-северное взаимодействие с Retrofit Лекцию ведут разработчики компаний Kreosoft и T-Банк
Основы разработки мобильных приложений. Лекция 2. Кроссплатформенная разработка
Просмотров 1902 месяца назад
Иванова Лидия и Потапов Степан рассказывают о Flutter, React Native, Apache Cordova, .NET MAUI и KMP.
Основы разработки мобильных приложений. Лекция 1. Введение
Просмотров 2132 месяца назад
Сравниваем Android и iOS по разным критериям
Code refactoring: Lecture 1
Просмотров 816 месяцев назад
Design issues Refactoring Definition Refactoring Goal The consequences of refactoring When to refactor and when not How to justify the need for refactoring to management
Разработка мобильных приложений: Koin. Паттерны
Просмотров 2536 месяцев назад
А еще в начале мастер-класс про Koin
Разработка Android-приложений: тесты, уведомления, виджет
Просмотров 1377 месяцев назад
Лекция 11: тестирование Локальные и не очень уведомления Виджеты на Compose С практической частью помогает Максим Сачук
Разработка Android-приложений: работа с памятью устройства
Просмотров 1907 месяцев назад
Разработка Android-приложений: работа с памятью устройства
Разработка мобильных приложений: Асинхронность, LiveData, Flow, Channel
Просмотров 2868 месяцев назад
Разработка мобильных приложений: Асинхронность, LiveData, Flow, Channel
Разработка мобильных приложений: SOLID и CLEAN
Просмотров 6018 месяцев назад
Разработка мобильных приложений: SOLID и CLEAN
Разработка Android-приложения: анимации
Просмотров 988 месяцев назад
Разработка Android-приложения: анимации
Разработка Android-приложения: жизненные циклы, фрагменты и навигация
Просмотров 4638 месяцев назад
Разработка Android-приложения: жизненные циклы, фрагменты и навигация
Разработка Android-приложения: RecyclerView, поддержка различных разрешений
Просмотров 1939 месяцев назад
Разработка Android-приложения: RecyclerView, поддержка различных разрешений
Разработка Android-приложения: элементы пользовательского интерфейса
Просмотров 3779 месяцев назад
Разработка Android-приложения: элементы пользовательского интерфейса
Рефакторинг программного обеспечения. Лекция 6. DI, код-ревью и успешный успех
Просмотров 72810 месяцев назад
Рефакторинг программного обеспечения. Лекция 6. DI, код-ревью и успешный успех
Рефакторинг программного обеспечения. Лекция 5. Принципы ООП и не только ООП
Просмотров 25610 месяцев назад
Рефакторинг программного обеспечения. Лекция 5. Принципы ООП и не только ООП
Рефакторинг программного обеспечения. Недостатки кода 4
Просмотров 26711 месяцев назад
Рефакторинг программного обеспечения. Недостатки кода 4
Рефакторинг программного обеспечения. Лекция 4. Тестирование
Просмотров 22011 месяцев назад
Рефакторинг программного обеспечения. Лекция 4. Тестирование
Рефакторинг программного обеспечения. Лекция 3. Комментарии. Форматирование. Обработка ошибок
Просмотров 37511 месяцев назад
Рефакторинг программного обеспечения. Лекция 3. Комментарии. Форматирование. Обработка ошибок
Рефакторинг программного обеспечения. Недостатки кода 2
Просмотров 48211 месяцев назад
Рефакторинг программного обеспечения. Недостатки кода 2
Рефакторинг программного обеспечения. Лекция 2. Именование переменных, классов, методов
Просмотров 290Год назад
Рефакторинг программного обеспечения. Лекция 2. Именование переменных, классов, методов
Если employee это модель и у него есть чёткая связь с конкретным пользователем, тоесть можно у объекта вызвать метод getName и получить имя этого работника, то как быть с методом отдающим список, логично под это дело завести о дельный класс или уместно наделать статических методов прямо в employee?
Где сотрудники хранятся - тот класс и должен выдавать список сотрудников.
У меня вопрос. Есть апи метод который принимает список. Внутри этот список поэлементно сохраняется в БД. На одном из элементов mysql может поругаться. Как правильно в этой ситуации поступить - 1. поймать ошибку и дать скрипту сохранить остальные элементы, в поле для эррор сообщить фронту где ошибка. При этом статус ответа - ок, что бы фронт не пошёл по ветке когда статус эррор. 2. остановить скрипт и вернуть статус ответа эррор. 3. Поймав ошибку откатить всё что было сохранено до элемента с ошибкой. Вернуть эррор.
Смотря какие-там данные. Если "потеря" одной из записей не страшна - можно пойти по первому пути. Если данные важные (типа банковских транзакции) - точно нужно сообщить об ошибке и попробовать еще раз. Обычно с точки зрения реализации проще откатить всю "пачку" и запросить снова. Если же дизайнеры предусмотрели состояние, когда "ошибочна" только одна запись - тогда только ее и запрашиваем снова.
Привет. Планируются ли уроки по iOS?
Добрый день) В этом семестре по iOS уже прошли две лекции: ruclips.net/video/M6wJIPjakv0/видео.html и ruclips.net/video/8ciYA-r59Bw/видео.html Продолжение планируется в следующем семестре. А если Степан запишет новые лекции раньше - они появятся на данном канале.
Вот, кстати, вспомнил, есть у меня на канале пример рефакторинга (помимо основной темы ролика) называется "Принцип единой ответственности (SRP) - что с ним не так?". Там в оригинале приводится пример программирования игры в боулинг. Причем делается явно не понимая, что такое ООП. Так вот там четко видно, что если исходить из логики авторов, то никаким рефакторингом невозможно дойти до нормального решения. И продолжать делать рефакторинги, это только добавит каши. Поэтому нужно сразу делать крупный рефакторинг, но его нужно перетестировать, ибо сразу новая логика может не получится. Но оставлять как есть, тоже такое ... это пример, как раз того, что вся ваша теория не соответствует практике.
Осторожно! В лекции есть маты!:)
Иногда в программировании не обойтись без "регулярных выражений")))
В целом, мне ваши лекции нравятся, поэтому я их репостну, создав плейлист из ваших лекций :) Меня просто часто спрашиваю про теорию, а мне очень не нравится объяснять базис. Но как то нужно будет придумать, делать поправки ... самое вопиющие я откоментировал сейчас, но комментарии уедут и разбросаны, надо будет собрать, ну и по мере сил отревьювить ваши лекции, наверно вам не особо понравится (автор то думает, что у него все все ок) ... но пока так как есть.
54:25 Странно слушать, бесполезные новые термины. Что за телескопический? кто автор этого термина. Что за цепочка - это разговорный слэнг? Это классический полиморфизм конструкторов, зачем запутывать людей? Ну, тут и дискуссии не может быть - если так не делать, будет дублирование как в примере вначале, а это самый большой грех в коде.
Ну, наконец-то, кто то хоть предупредил вначале. Вообще паттерны - зло. Начитавшись такого приходится потом резать такой код, это все равно что ребенок построил дом из кубиков и обижается, что ему говорят, что настоящий зайчик там жить не сможет. Зайчику лучше будет даже просто в коробке.
1:15:00 Ну давайте разбираться. Во-первых, почему тут используется зло, как было объявлено пару слайдов до - выходные аргументы? Хотел бы я на это посмотреть, как вы без них решили бы инициализировать сессию или нет, когда перепишите как советуете. Во-вторых, ерунда это - ваши т.н. побочные эффекты, глупость несусветная, единственно с чем можно согласится это метод нужно правильно назвать, например CreateSession(). И наконец, нет ни каких причин отделять проверку пароля от инициализации сессии, пока это не ведет к дублированию. А дублирование возникнет только в том случае, если вам понадобится сделать одно без другого. Я вот не могу придумать случай, чтобы нужно было делать проверку пароля, но не открывать/закрывать сессию. Поэтому ровно наоборот в этом примере обязательно одно должно быть с другим. И этим мы приходим к демонстрации избыточности, о чем я писал про "формирование понятной промежуточной абстракции"
С какого это перепуга выходные параметры стали злом? Да, и прочие про аргументы очень спорно. По сути теоретическая методичка, которую писали те, кто не разу не программировал. Думаю, во многом это именно ваши упрощения, лучше возвратитесь к Фаулеру и основывайтесь на том, какие виды рефакторингов он предлагает, у него это более взвешенно описано. А так - так сказала бабка на базаре.
44:30 Наконец-то нашел живой пример, кто учит не правильно :) (именно в этом моменте, в остальном все ок) Есть всего две причины создания методов: это разная ответственности при декомпозиции и устранение дублирования. При этом критерием всегда будет минимизация связей. Это значит, что причина "формирование понятной промежуточной абстракции" - это вредная практика, она создает субъективную "понятность", которая на практике всегда не о чем. В то время как она избыточна. Не делайте так.
Так то я бы поспорил по ряду моментов, но для студентов и так сойдет )) Но все же самое главное, я не согласен, что ревьюить нужно маленькими частями, вот это как раз можно вообще не делать. Нужно исправлять базовые проблемы разработчика. А это значит, что он их разбросал по всему проекту. И нужно не простыню текста писать, а один раз сесть в парном программировании и показать что нужно делать с его классическими ошибками. После этого останется дальше следить, делает ли он их дальше или нет. Если нет, ревью вообще не проводить для этого человека.
Какой то бесполезный термин - инъекция зависимостей, кто его придумал? Это все 4 разные вещи: 1. это или синглтон, или фабрика объекта 2. и это базис у Г. Буча называется агрегация - и это почему то сейчас не преподают, не понимаю почему. 3. это инкапсуляция агрегации - часто совсем не нужная вещь - на моем канале есть видео "К чему приводит тотальная инкапсуляция?" ... а 4. это инстанцирование
1:08:00 Не нужно заказчику или менеджеру ничего рассказывать про рефакторинг. Занимайтесь рефакторингом каждый раз когда требуется без исключений. Вы не должны никому отчитываться как правильно выполнять работу. Вся проблема только в том, что не правильно оцениваются сроки. Умножайте их на 3, на 2 точно мало. Тогда у вас будет время на непредвиденные ситуации. Менеджерам нужно лишь понимать, что подготовительные работы ведутся дольше, чем отделочные. Заказчик видит результат, когда уже поклеены работы, но клеится они за сутки, а вот стены создаются месяцами. Если же менеджер не может технически понять на каком уровне сейчас находится разработка и требует, чтобы программист создавал видимость разработки - вида сделал метр стены и сразу поклеил обоих - это проф. не пригодность менеджера и компании в целом.
Благодарю за ваше мнение. Не стоит забывать, что компании бывают разные, у всех свои процессы. Как минимум странно будет на дэйлике менеджеру на вопрос "какую задачу делаешь" ответить "не скажу". Тимлиды есть не везде, иногда менеджер выполняет все роли сразу.
@@LidiyaHITS Сейчас заметил, что у вас на слайде когда делать рефакторинг, не очень точно передается правило 3 ударов, там нужно слово "делаете" заменить на "натолкнулись". Так вот тогда, я говорю о том, что нужно взять это правило + встроить в процесс (по смыслу близко, что у вас как мнение 4). Ну и далее, у вас правильный список "Когда рефакторинг не делать". И вот тогда - объяснять кому то, что я делаю рефакторинг не нужно. Просто делайте, не выделяя в отдельную задачу. А вместо не скажу, говорить, что делаю все тоже, что и делал на прошлой неделе. Ну, или же нет у руководства понимания, отказывайтесь делать задачу, или говорите о нереалистичных сроках. Не делать нужный рефакторинг - такой опции нет, это все равно что врач будет спрашивать резать или не резать. Ну и чтобы не вставать два раза - слайд поиск места для рефакторинга - плохой. Тут нужно говорить о ревью проекта в целом, и находить самое уязвимое место. Ну и говорить про "дурные запахи по Фаулеру". А то ,что на слайде - это не практично, так экзотика. Ну а вообще все ок, мне нравится стиль ведения лекции ) ах, да - на вопрос "на дэйлике менеджеру " - еще лучше говорить, что он тратит мое время, хочет узнать пусть делает ревью коммитов. Это значит, что в правильно организованных процессах - менеджер - это сеньор, который делает ревью и на дейликах именно он говорит, что кому исправить, а не наоборот.
Не соглашусь. У заказчика есть потребность в определенной ценности, которая решает его проблему. Если каждый раз проект будет сдвигаться вправо, то просто найдут ему замену. Всему своё место, в том числе и рефакторингу. Если потребность в рефакторинге реально есть (не выдумана), то любой менеджер это поймет и не надо будет ничего скрывать.
@@TV-xj5ke Вообще, каждый отдельный рефакторинг занимает небольшое время, в идеале час-два. Есть рефакторинги, которые просто нельзя не делать, чтобы добавить функциональность. Например, устранение дублирования при добавлении аргумента в метод. Вообще я ищу конкретные примеры, чтобы продемонстрировать. Так можно говорить конкретнее. Но есть рефакторинги которые тянут изменения на пару недель. Такие я часто вижу, когда прихожу на новый проект, который делали джуниоры. Вот тогда и начинаются психи со всех сторон, так вот прежде чем ворошить эту кучу говна, нужно хорошо подумать ... можно остаться виноватым, что все перестанет работать :) Менеджерам нужно понимать, что после рефакторинга это нужно будет перетестировать, на что они не готовы.
Как я понял, этот курс является продолжением какого-то другого (базового) курса. Подскажите, плиз, как называется базовый курс, который нужно посмотреть, чтобы понимать, что такое activity, view и др.
Более "базового" курса у меня нет, но про активити подробно рассказано тут ruclips.net/video/14INNt1ewNw/видео.html начиная с 15й минуты
так а жизненный цикл приложения Android ? с activity понятно, в интернете везде есть, а жизненный цикл приложения?
Можно почитать вот тут developer.android.com/guide/components/activities/process-lifecycle или вот здесь www.vogella.com/tutorials/AndroidLifeCycle/article.html
По поводу даунгрейда версий либ для билда, для таких же случаев докер используется, можно билдить в контейнерах
Да, вариант хороший. Но от основной проблемы (проект тащил за собой библиотеку, которой даже в репозиториях уже нет, стандартными средствами она не подключается) не спасет. Так что... не используйте, дети, старые версии React Native
классная лекция , очень понятно объясняете, спасибо! Расстроился немного , что у Тимофея нет вопросов(
Котика то нашли? =)
1:05:35
Невероятно поучительная лекция, спасибо!
Я искал вас полтора часа и, в итоге, нашел по 'uml'. Оказалось, мог сразу зайти в аккаунт и пролистать подписки. Но представляете, как впечатлён был? Кажется, при просмотре "Рефакторинг программного обеспечения 2023. Недостатки кода 1"))
Да, касаемо того, что нужно и можно разобраться -- очень полезно. Мне нравится SwiftUI. Простой и красивый. Сейчас делаю (пока в заморозке) пару петроектов + те лабы, что у нас были осенью. Всё получается, всё красиво. Но понимаю, что с UIKit у меня туго и нужно его подтягивать сильно. Прям нужно. Но боялся, что сейчас меня не хватить просто напросто. Ибо я мобильщик в двух командах + на 1C нужно акцент сейчас сделать. Так же не хочу писать на SwiftUI просто потому что проще будет сдать так лабораторную.
Это лучшее видео по диаграммам, которое я смог найти. Все понятно и с хорошими примерами. Большое спасибо автору!
подскажите почему getString() getInt() работает а getFloat() приложение вылетает ?
А можно больше информации? Где запускаете, что хотите получить... или текст ошибки из Logcat
Спасибо. Ошибок нет все компелиться. private lateinit var pamyat: SharedPreferences // для сохранения настроек pamyat = getSharedPreferences("TABLITSA", MODE_PRIVATE) // таблица normaZerna = pamyat.getFloat("norma", 0.0f) ошибки при компиле нет но если запустить на планшете или эмуляторе нижняя строка дает вылет приложения normaZerna = pamyat.getInt("norma", 0) работает
@@NIKOLAY_PSHONIA когда приложение вылетает, в LogCat пишется причина. normaZerna какой тип имеет? Значение с ключом "norma" какого типа было записано в память?
Лидия спасибо. подключил мобилку все работает. но на планшете вылетает. пока планшет отложил
спасибо за лекцию! особенно понравилась объявление горячих флоу)
Здравствуйте, это лекции в каком то универе? Если да, то в каком?
Здравствуйте. Томский государственный университет
6:15 как мне кажется самое лучшше здесь это "агент"
Очень классно) надеюсь котик был найден!)))
Лисков тоже мой любимый принцип преподаю Технологию разработки ПО уже 4 года, 2 года назад меняла в учебной программе темы аж на 48 часов в сумме, туда вошли принципы SOLID и парочка шаблонов проектирования (модулем лекции+лабы) материал собирался по своим знаниям с универа, по каким-то методичкам и в целом со статей хабра и пободных площадок порой даже получалось допросить каких-то друзей или знакомых разработчиков, как у них в коммерческих проектах работает тот солид и нужен ли вообще тот рефакторинг, который я так яро пытаюсь ещё впихнуть в ТРПО (на данный момент моё учреждение образования дало мне вести предмет по выбору УО на 36 часов, куда я засунула мой любимый рефакторинг с полным погружением в легаси код, но это на 3м курсе, а этих знаний не хвататет уже на 2м) за солид и шаблончики я прям топлю и очень люблю поспортить со студентами и даже прятно удивлялась когда приходили и говорили спасибо за этот душнейший предмет, ведь на собеседовании буквально были мои вопросы экзамена либо банальные контрольные вопросы для защиты лабы ваши видео прям подарок от боженьки для меня, нравится ваша подача материала и то что о каких-то ньюнасиках я сама не знала
Благодарю за фидбек, от коллеги вдвойне приятно) Здорово, что есть люди, которые продвигают такие важные темы в учебную программу. Курс по рефакторингу я тоже читаю, все лекции есть тут: ruclips.net/p/PLC8N_Pqn_K3Y6q7ChnY3G6MFDddGWNkzu
Привет у меня такой вопрос касается Андроид Студио. Хотелось бы чтобы вы показали на примере, у меня все не как не получается где то делаю ошибку. Я создал программу которая содержит нормативные документы. Учитывая текучесть кадров, мне надо сделать так чтобы по истечению определеной даты, при заходе в программу открывалась активити которая давала информацию что время работы программы завершено, просим вас обратится к разработчику для новой версии. А в новой версии уже буду указывать новый срок. Можете наглядно обьяснить это? я думаю такая функция многим нужна.
Добрый день. Если нет никакой серверной части, можно просто при открытии главной активити проверять текущую дату на устройстве (не самый надежный источник, легко обмануть, но без сервера других вариантов немного). В случае, если дата позже "даты устаревания" - показывать блокирующий экран. Либо сделать умнее: при запуске приложения проверять, какая актуальная версия опубликована в магазине. Если она новее установленной на устройстве - показывать блокирующий экран и отправлять пользователя обновиться.
Лидия Сергеевна, прошёл весь Ваш курс по рефакторингу. Огромное спасибо, что выкладываете лекции в открытый доступ. Вашим студентам очень повезло с таким преподавателем. Удачи Вам и здоровья!
Большое спасибо за оценку) Очень приятно)
10/10
Потрясающий доклад. Всё что доходило по крупицам, я нашел в структурированном виде. Спасибо
спасибо большое про корутины топ)
Ааа, ещё, ещё кричали дети! Про татушку с шаблонным методом на неприличном месте я услышал и чуть чаем не подавился.
Агния Огонёк ведёт лекции по паттернам. Чек
Топ контент и подача
Спасибо) рада, что Вам понравилось)
Спасибо, помогло
видео топ
Лидия Благодарю за видео
Круто, крайне нужный контент. Спасибо.
а где вы учились всему этому? куда можно поступить на учёбу заочно, чтобы научиться андроид разработке?
жаль что обратная связь плохая с Вами (
Если нужна только Android-разработка, можно пройти один из курсов от компании (Яндекс и др.). Если нужен полноценное образование в области IT - нужно искать ХОРОШИЙ вуз. Я сама закончила Томский государственный университет по специальности "прикладная информатика", а Android изучала самостоятельно по документации.
это на котлине? если да, то посмотрю все видосы)
На Котлине)
Полезно, жаль что я программист на Rust, и для меня эта информация из разряда развлечения. Думаю те, кто пишет на Котлине - оценят.
мама я в телевизоре
Мастер-класс по тестированию котлина лучший!!!
Лидия, у Вас очень крутые лекции! Благодарю! 🙏
Много интересных недостатков, спасибо! Насчёт неявного языка/дерева: в лучшем языке программирования Kotlin одна из главных фишек - это поддержка DSL, в которой такие структуры можно очень красиво сделать в функциональном стиле и всё супер-вау. Считаю, что про это можно отдельно сказать в следующем году!!