Не по теме вопрос: как вообще в условиях "Чебурнета" корпорации собираются продвигать свои облачные сервисы? Вроде как тенденция к огораживанию интернета идет не только в РФ. Постепенно вычисления переходят в облака, и, в принципе, это разумно с точки зрения использования мощностей. Блин, но как быть то когда сервис будет недоступен в какой-то стране по политическим причинам?
Приведем мысленный эксперимент. Вот, допустим, сидите вы в кабинете отдела «небесного наказания за земные грехи». К вам заходит душа, ну, возьмем, для определенности Михаила Суслова – Идеолога ЦК КПСС в СССР.
Проведем другой мысленный эксперимент. Помирает правоверный христианин. И встречает его душу Кетцалькоатль... ага... А христианин этот даже имени одного из главных богов произнести нормально не может. Как бы я не сильно позавидую душе того праведника.
К чему, собственно, такой эксперимент? Далеко не факт, что вся эта мораль инстинна. Существование кармы, бога, реинкарнации и прочего доказать принципиально невозможно. С чего вы взяли, что ваш условный "небесный суд" будет производиться именно по вашим представлениям об условном "благе" или "грехе"?
Там то, что я делал с mini 2 несколько лет назад (не полный фарш и не до конца, но до приемлемого уровня). Если будете брать mini 4, то учтите, что Android 15 более жесток по отношению к разрешениям, так что оптимизацию надо проводить более аккуратно.
Не могу ответить однозначно. Я отключил китайские бекдоры, отключил многие встроенные приложения, поменял стандартные приложения на более легкие (fossify) и пр. Короче, оптимизировал достаточно агрессивно. Т.е. я даже и не знаю, как аппарат должен работать "из коробки". В результате у меня 6-ти летний девайс держит батарею 1,5 дня при стандартном моем использовании (музыка по дороге, чаты прочитать, звонки, пара банковских приложений, пара легких игрушек, изредка карты/навигация). Учитывая, что девайс тогда стоил $120, я считаю, что по соотношению цена/качество в таком форм-факторе - это просто топ. Хотя пару вечеров надо над ним посидеть, это да...
Вы правы и неправы одновременно. С одной стороны, условный демон для смены обоев каждые полчаса - это явно избыточно. С другой стороны, возможно то, что вы с 19 лет тратили усилия на написание скриптов и кастомизацию, и делает вас хорошим разработчиком. Косвенно вы прокачивали, например, навык понимания чужих api.
Вот это вот пресловутое "создавать новые области знаний" - откуда вы это берёте? Люди подобное делают тоже крайне редко, если не никогда.
Люди подобное делают постоянно. Речь о самой способности делать выводы и оперировать новыми абстракциями. Посмотрите с точки зрения не какого-то общего "ЗНАНИЯ", а просто личного процесса познания.
Например, если залить горячей водой высушенные чайные листья и попробовать, что получилось, то человек в принципе способен сделать вывод о том, что залитие горячей водой высушенных листьев растений может дать новый напиток. Человек может ЗАХОТЕТЬ провести дополнительные экспериметнты. Нейронка в принципе на такое не способна.
Добавлю еще комментарий. Лет 10-15 назад Microsoft уже продвигалась на рынке планшетов. Они уже держали в руках "Святой Грааль" планшета с возможностью запуска тяжелых десктопных приложений на x86_64 с Win 8.1. И они же самостоятельно загубили свое потенциальное доминирование в бизнес сегменте.
Сейчас они пытаются сделать то же самое, но через другую дверь с ARM. Но проблемы по сути все те же. Я так и не понял, что они предлагают... премиальный ноут в качестве тонкого клиента к облаку с их сервисами? А все ресурсы самого ноута будут уходить на то, чтобы запустить Copilot в Notepad?
первые новые ноутбуки на базе RTX Spark будут ориентированы на премиальный сегмент и призваны устранить недостатки конкурентов
Какие именно недостатки есть у конкурентов? Единственный конкурент в премиальном - это Apple со своими макбуками. Единственный недостаток Apple - это его цена (что для премиальных устройств несущественно). Во всем остальном у них просто нет недостатков, на данный момент это самые совершенные ноуты на базе ARM. Несмотря на то, что серийно они стали выпускать ноуты на ARM только в 20-м году, они не первое десятилетие работают с этой архитектурой и адаптировали под нее свою ОС.
А Nvidia совместно с Microsoft... на секундочку, это тот самый Microsoft, который чтобы открыть свое меню "Пуск" в своей собственной ОС разгоняет процессор ссылка на новость... так вот, Nvidia совместо с Microsoft за полгода хотят выпустить ноутбук премиального сегмента, который оставит позади всех конкурентов. Ну-ну, верим-верим...
Что все так накинулись то? Хорошая идея на самом деле. Чат, привязанный к CRM. Удобно же. Хороший в целом продукт.
Теоретически можно у тебя поднять matrix сервер, сделать веб-морду на клиенте, привязать ее к какой-нибудь open-source CRM, и получится что-то вроде того, что YouGile предлагает. Но зачем? Оно, конечно, не бесплатно, но это корпоративный сегмент, не для частного пользования.
Хотя, конечно, как @v_eroshenko заметил, делать регистрацию для гостевого доступа, мягко говоря, сомнительно.
program thomas_test
implicit none
integer, parameter :: n = 10**7 ! 10 миллионов элементов
real(8), allocatable :: a(:), b(:), c(:), d(:), x(:), cp(:), dp(:)
real(8) :: m, t1, t2
integer :: i
call cpu_time(t1)
print *, "Выделение памяти для n =", n
allocate(a(n-1), b(n), c(n-1), d(n), x(n), cp(n-1), dp(n))
! Наполним данными, чтобы процессор не скучал
a = 1.0d0; b = 4.0d0; c = 1.0d0; d = 10.0d0
print *, "Поехали! Считаем прогонку..."
! --- Тот самый алгоритм ---
cp(1) = c(1) / b(1)
dp(1) = d(1) / b(1)
do i = 2, n
m = 1.0d0 / (b(i) - a(i-1) * cp(i-1))
if (i < n) cp(i) = c(i) * m
dp(i) = (d(i) - a(i-1) * dp(i-1)) * m
end do
x(n) = dp(n)
do i = n-1, 1, -1
x(i) = dp(i) - cp(i) * x(i+1)
end do
! -------------------------
call cpu_time(t2)
print "(A, F10.6, A)", " Время выполнения: ", t2 - t1, " сек."
print *, "Контрольное значение x(1):", x(1)
deallocate(a, b, c, d, x, cp, dp)
end program thomas_test
результаты
$ gfortran -O3 -march=native -ffast-math thomas_test.f90 -o thomas_test
$ ./thomas_test
Выделение памяти для n = 10000000
Поехали! Считаем прогонку...
Время выполнения: 0.371780 сек.
Контрольное значение x(1): 2.1132486540518713
Нет, на мои вопросы вы не ответили. Мой основной вопрос: зачем скрывать ViewModel за абстракциями?
1. И я, и @house2008 пишем примерно о том, что на ViewModel абстракции не надо делать, протоколы тут излишни. Нигде в коде @house2008 я не вижу стирания типов. Фреймворк хочет конкретный класс ViewModel? - окей, дайте ему конктретный класс ViewModel. В чем проблема то? Нужно тестировать? - окей, подменяйте в тестах источники данных, это будет чище и прозрачнее.
2. Вот я цитирую Википедию в разделе Rationale:
MVVM was designed to remove virtually all GUI code ("code-behind") from the view layer, by using data binding functions in WPF (Windows Presentation Foundation) to better facilitate the separation of view layer development from the rest of the pattern.
Data binding - это и есть основной механизм. Это не опциональное, это и есть фундамент MVVM. Data binding - это и есть реализация паттерна "Наблюдатель", просто зашитая внутри фреймворка. Не надо предлагать вручную дублировать функционал.
Кстати, в Android разработке я могу на коллбеках построить механизм, и мне за это ничего не будет, потому что есть Garbage Collector. А вот в iOS такую схему уже так просто не реализовать, потому как циклические ссылки и всё такое. Возможно, что ради избегания циклических ссылок MVVM и становится все более популярным для iOS.
Вообще не понимаю, зачем такое сложности? Зачем делать слой абстракции, если View наразрывно связана со своей/своими ViewModel? Основной концепт подхода в том, что при изменении данных/стейта внутри ViewModel автоматически обновляется View. Делать абстракцию не нужно, потому что View + ViewModel - это и есть слой presentation (на вашей же картинке в статье это указано), который отвязан от model.
Задело? Окей, я попробую объяснить, как я это воспринимаю.
Читаю статью и вижу:
Может, написать отдельно interface со своими @Binds-методами, и отдельно object со своими @Provides-методами? Получится неудобно
Первая моя мысль: "Автор - сраный диверсант. Сейчас джуны начитаются, а потом будут такую хуиту на ревью приносить." Потом я захожу в профиль и вижу, что написано "стажер" и "Люблю промышленную разработку! Изучаю Android-разработку на Kotlin...". Моя вторая мысль: "Стажер открыл магию статики в Kotlin".
Комментарий я все-таки решил написать, но писать "КГ/АМ" как-то не сильно конструктивно, поэтому я немного раскрыл мысль, почему этот "креатив - говно". Тем более ты же буквально сейчас сам написал:
Я прекрасно понимаю, что в реальном проекте стоит делить модули по фичам или слоям
Если в реальном проекте твой подход со статикой используется чуть более чем никогда (возможно в очень-очень редких случаях и с полным пониманием зачем и почему, и то вряд ли так будут делать), то зачем ты вообще это все написал?
Однако, я прошу прощения за мой резкий тон. Тут я не прав, признаю.
Хочется и по содержанию статьи проехаться и по личности... походу я так и сдохну с отрицательной кармой :)
Автор, ты - стажер, и тебе рано еще писать технические статьи, наберись опыта. Формально ты прав, и формально так можно делать. Но этот подход НЕ полулярный, и так НЕ делают. Потому что помимо одного репозитория и экземпляра Retrofit, будут еще репозитории (внезапно), API, которые ты получаешь из Retrofit, другие сущности, совершенно не связанные с сетевой активностью. Поддержка файла с таким подходом превратится в ад при наличии сколь-нибудь чуть более сложной логики, чем единственный репозиторий. Принцип Single Responsibility придуман не просто так. Дели по смыслу ответственности даже модули в DI, не стоит усложнять себе жизнь на ровном месте.
Я как-то писал практический гайд по Hilt для новичков
Не по теме вопрос: как вообще в условиях "Чебурнета" корпорации собираются продвигать свои облачные сервисы? Вроде как тенденция к огораживанию интернета идет не только в РФ. Постепенно вычисления переходят в облака, и, в принципе, это разумно с точки зрения использования мощностей. Блин, но как быть то когда сервис будет недоступен в какой-то стране по политическим причинам?
Проведем другой мысленный эксперимент. Помирает правоверный христианин. И встречает его душу Кетцалькоатль... ага... А христианин этот даже имени одного из главных богов произнести нормально не может. Как бы я не сильно позавидую душе того праведника.
К чему, собственно, такой эксперимент? Далеко не факт, что вся эта мораль инстинна. Существование кармы, бога, реинкарнации и прочего доказать принципиально невозможно.
С чего вы взяли, что ваш условный "небесный суд" будет производиться именно по вашим представлениям об условном "благе" или "грехе"?
Окей, если решите взять именно Cubot, то вот инфа, которая может пригодиться: https://gist.github.com/MarDSoul/8c2d2c3e183b6c46d2d00eda2afcca75
Там то, что я делал с mini 2 несколько лет назад (не полный фарш и не до конца, но до приемлемого уровня). Если будете брать mini 4, то учтите, что Android 15 более жесток по отношению к разрешениям, так что оптимизацию надо проводить более аккуратно.
Не могу ответить однозначно. Я отключил китайские бекдоры, отключил многие встроенные приложения, поменял стандартные приложения на более легкие (fossify) и пр. Короче, оптимизировал достаточно агрессивно. Т.е. я даже и не знаю, как аппарат должен работать "из коробки". В результате у меня 6-ти летний девайс держит батарею 1,5 дня при стандартном моем использовании (музыка по дороге, чаты прочитать, звонки, пара банковских приложений, пара легких игрушек, изредка карты/навигация). Учитывая, что девайс тогда стоил $120, я считаю, что по соотношению цена/качество в таком форм-факторе - это просто топ. Хотя пару вечеров надо над ним посидеть, это да...
Ну принципиально оно работает на 4'' 1080х540, Android 10
Устройство Cubot King Kong mini 2
Вы правы и неправы одновременно. С одной стороны, условный демон для смены обоев каждые полчаса - это явно избыточно. С другой стороны, возможно то, что вы с 19 лет тратили усилия на написание скриптов и кастомизацию, и делает вас хорошим разработчиком. Косвенно вы прокачивали, например, навык понимания чужих api.
Люди подобное делают постоянно. Речь о самой способности делать выводы и оперировать новыми абстракциями. Посмотрите с точки зрения не какого-то общего "ЗНАНИЯ", а просто личного процесса познания.
Например, если залить горячей водой высушенные чайные листья и попробовать, что получилось, то человек в принципе способен сделать вывод о том, что залитие горячей водой высушенных листьев растений может дать новый напиток. Человек может ЗАХОТЕТЬ провести дополнительные экспериметнты. Нейронка в принципе на такое не способна.
Добавлю еще комментарий.
Лет 10-15 назад Microsoft уже продвигалась на рынке планшетов. Они уже держали в руках "Святой Грааль" планшета с возможностью запуска тяжелых десктопных приложений на x86_64 с Win 8.1. И они же самостоятельно загубили свое потенциальное доминирование в бизнес сегменте.
Сейчас они пытаются сделать то же самое, но через другую дверь с ARM. Но проблемы по сути все те же. Я так и не понял, что они предлагают... премиальный ноут в качестве тонкого клиента к облаку с их сервисами? А все ресурсы самого ноута будут уходить на то, чтобы запустить Copilot в Notepad?
Предрекаю провал этой эпичной затее.
Какие именно недостатки есть у конкурентов? Единственный конкурент в премиальном - это Apple со своими макбуками. Единственный недостаток Apple - это его цена (что для премиальных устройств несущественно). Во всем остальном у них просто нет недостатков, на данный момент это самые совершенные ноуты на базе ARM. Несмотря на то, что серийно они стали выпускать ноуты на ARM только в 20-м году, они не первое десятилетие работают с этой архитектурой и адаптировали под нее свою ОС.
А Nvidia совместно с Microsoft... на секундочку, это тот самый Microsoft, который чтобы открыть свое меню "Пуск" в своей собственной ОС разгоняет процессор ссылка на новость... так вот, Nvidia совместо с Microsoft за полгода хотят выпустить ноутбук премиального сегмента, который оставит позади всех конкурентов. Ну-ну, верим-верим...
Сталкивался с подобными задачами. Писать тесты надо ДО рефакторинга. Хотя бы интеграционные, рассматривая как black box.
Что все так накинулись то? Хорошая идея на самом деле. Чат, привязанный к CRM. Удобно же. Хороший в целом продукт.
Теоретически можно у тебя поднять matrix сервер, сделать веб-морду на клиенте, привязать ее к какой-нибудь open-source CRM, и получится что-то вроде того, что YouGile предлагает. Но зачем? Оно, конечно, не бесплатно, но это корпоративный сегмент, не для частного пользования.
Хотя, конечно, как @v_eroshenko заметил, делать регистрацию для гостевого доступа, мягко говоря, сомнительно.
Когда этот список публикуют, то у меня глаза всегда на этом пункте непроизвольно останавливаются:
Я уже лет 15 математикой не занимался, так что мне пришлось прибегнуть к помощи нейронки. Но результаты от этого не сильно пострадали.
Железо и компилятор
листинг
результаты
Вывода не будет...
Дополнение: Список стран (ссылка на сайт ФНС) по состоянию на 14.10.25 г.
Нет, на мои вопросы вы не ответили. Мой основной вопрос: зачем скрывать ViewModel за абстракциями?
1. И я, и @house2008 пишем примерно о том, что на ViewModel абстракции не надо делать, протоколы тут излишни. Нигде в коде @house2008 я не вижу стирания типов. Фреймворк хочет конкретный класс ViewModel? - окей, дайте ему конктретный класс ViewModel. В чем проблема то? Нужно тестировать? - окей, подменяйте в тестах источники данных, это будет чище и прозрачнее.
2. Вот я цитирую Википедию в разделе Rationale:
Data binding - это и есть основной механизм. Это не опциональное, это и есть фундамент MVVM. Data binding - это и есть реализация паттерна "Наблюдатель", просто зашитая внутри фреймворка. Не надо предлагать вручную дублировать функционал.
Кстати, в Android разработке я могу на коллбеках построить механизм, и мне за это ничего не будет, потому что есть Garbage Collector. А вот в iOS такую схему уже так просто не реализовать, потому как циклические ссылки и всё такое. Возможно, что ради избегания циклических ссылок MVVM и становится все более популярным для iOS.
Вообще не понимаю, зачем такое сложности? Зачем делать слой абстракции, если View наразрывно связана со своей/своими ViewModel? Основной концепт подхода в том, что при изменении данных/стейта внутри ViewModel автоматически обновляется View. Делать абстракцию не нужно, потому что View + ViewModel - это и есть слой presentation (на вашей же картинке в статье это указано), который отвязан от model.
Вы какую-то логику ищете?
Эти ребята блокируют заходы на сайты РЖД и Почты России с иностранных IP, т.е. контор, которые в принципе с зарубежом работают.
Задело? Окей, я попробую объяснить, как я это воспринимаю.
Читаю статью и вижу:
Первая моя мысль: "Автор - сраный диверсант. Сейчас джуны начитаются, а потом будут такую хуиту на ревью приносить." Потом я захожу в профиль и вижу, что написано "стажер" и "Люблю промышленную разработку! Изучаю Android-разработку на Kotlin...". Моя вторая мысль: "Стажер открыл магию статики в Kotlin".
Комментарий я все-таки решил написать, но писать "КГ/АМ" как-то не сильно конструктивно, поэтому я немного раскрыл мысль, почему этот "креатив - говно". Тем более ты же буквально сейчас сам написал:
Если в реальном проекте твой подход со статикой используется чуть более чем никогда (возможно в очень-очень редких случаях и с полным пониманием зачем и почему, и то вряд ли так будут делать), то зачем ты вообще это все написал?
Однако, я прошу прощения за мой резкий тон. Тут я не прав, признаю.
Хочется и по содержанию статьи проехаться и по личности... походу я так и сдохну с отрицательной кармой :)
Автор, ты - стажер, и тебе рано еще писать технические статьи, наберись опыта. Формально ты прав, и формально так можно делать. Но этот подход НЕ полулярный, и так НЕ делают. Потому что помимо одного репозитория и экземпляра Retrofit, будут еще репозитории (внезапно), API, которые ты получаешь из Retrofit, другие сущности, совершенно не связанные с сетевой активностью. Поддержка файла с таким подходом превратится в ад при наличии сколь-нибудь чуть более сложной логики, чем единственный репозиторий. Принцип Single Responsibility придуман не просто так. Дели по смыслу ответственности даже модули в DI, не стоит усложнять себе жизнь на ровном месте.
Я как-то писал практический гайд по Hilt для новичков
https://mardsoul.github.io/dev-in-action/articles/hilt-for-beginners/
Т-Банк еще и оборудование регулярно опрашивает...
Попробуй через adb придушить