Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Регистрируясь, я даю согласие на обработку данных и условия почтовых рассылок.
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр Погрузись в захватывающий фэнтезийный мир! Создай уникального мага и вступай в эпичные тактические сражения. Оттачивай навыки в динамичных онлайн-битвах . Всё это ждёт тебя в «Битве магов»!

Битва Магов

Хардкорные, Мидкорные, Ролевые

Играть

Топ прошлой недели

  • solenakrivetka solenakrivetka 7 постов
  • Animalrescueed Animalrescueed 53 поста
  • ia.panorama ia.panorama 12 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая «Подписаться», я даю согласие на обработку данных и условия почтовых рассылок.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
0 просмотренных постов скрыто
7
Monotonik
Monotonik

Дорогой ремонт делает семилетний план обновления ПО бессмысленным на смартфонах Samsung и Apple⁠⁠

1 год назад
Samsung

Samsung

Samsung смог привлечь покупателей к серии Galaxy S24, обещая обновления ПО в течении семи лет и улучшенную политику ремонта. Партнерство с iFixit должно было облегчить и удешевить ремонт телефонов. Однако это сотрудничество было прекращено из-за высоких цен на компоненты, что ставит под сомнение серьёзность намерений Samsung в поддержке реального факта ремонта смартфонов.

Кроме того, в некоторых контрактах на ремонт Samsung содержатся сомнительные условия, ограничивающие использование сторонних компонентов, аналогичные политике Apple. Это плохая новость для тех, кто рассчитывал на возможность ремонта своих устройств при помощи "альтернативных" запчастей.

С другой стороны, Samsung выполняет обещанное для старых флагманов. Обновление One UI 6.1 уже доступно на старых устройствах с некоторыми новыми AI-функциями. Это означает, что даже старые флагманы Galaxy S и Z будут актуальны в течение долгого времени.

Однако смартфоны нуждаются в замене деталей, таких как экраны и батареи, каждые несколько лет. Батареи смартфонов обычно служат около трех лет до начала деградации. А экраны довольно часто бьются во время падения телефона. И чем дольше смартфоном пользуются, тем выше вероятность необходимости замены экрана.

Samsung и iPhone

Samsung и iPhone

Долгосрочная поддержка ПО требует долговременной поддержки и аппаратного обеспечения, что не должно быть связано с вынужденно высокими ценами на ремонт или ограничительными условиями.

Политика Apple по ремонту, предполагающая использование только оригинальных комплектующих, известна своей антиконсюмерской направленностью. Она мешает пользователям искать лучшие цены на ремонт, вынуждая пользоваться только услугами официальных сервисных центров, в которых цены не демократичные. Похоже, Samsung может следовать этому пути.

Мало кто будет использовать телефон семь лет, если замена батареи стоит довольно много, а новый экран — как стоимость Б\У устройства целиком. Даже если люди согласятся на такие расходы, сложные условия поиска "проверенных" деталей или сервисов отпугнут многих.

Такая политика делает семилетние обновления бессмысленными, если ремонт слишком дорогой и сложный. Это подрывает заявления и об экологичности брендов, так как покупка нового телефона становится более выгодной, чем ремонт старого.

Возможно, компании намеренно создают препятствия для ремонта, так как ремонт дешевых компонентов не приносит большой прибыли. Долгосрочная поддержка ПО тоже стоит денег, и возможно, Apple и Samsung рассчитывают на дополнительный доход от дорогого ремонта, чтобы финансировать эти программы.

Источник: androidauthority.com

Если любопытно, что там у Xiaomi происходит - добро пожаловать на MetaMi.

Показать полностью 1
[моё] Смартфон Android Samsung Ремонт Гарантия Обновление Программное обеспечение Приложение Цены Стоимость Перевел сам
9
seminon600
seminon600
Еврейский мир
Серия Экономика Израиля. Финансы

Израильская компания WalkMe приобретена SAP за 1,5 миллиарда долларов⁠⁠

1 год назад

Германская компания SAP, специализирующаяся на программном обеспечении, достигла соглашения о приобретении израильскую фирму WalkMe. Объем сделки составляет 1,5 миллиарда долларов

SAP согласилась купить WalkMe, инструмент, предлагающий работникам персонализированные инструкции по использованию программного обеспечения, за 1,5 миллиарда долларов наличными.

Эта цена на 45% выше, чем стоимость компании на американской бирже высоких технологий NASDAQ. Однако следует отметить, что на пике котировок в 2021 году WalkMe оценивалась в 2,6 миллиарда долларов.

WalkMe, штаб-квартира которой находится в Тель-Авиве, Израиль, продает платформу цифрового внедрения (DAP), которую предприятия могут использовать для предоставления работникам соответствующих функций руководства и автоматизации, обеспечивая более последовательное и эффективное внедрение нового программного обеспечения. По мнению руководителей SAP, с его помощью рабочие процессы могут выполняться более плавно в любом количестве приложений, что приводит к более широкому принятию базовых приложений пользователями и, таким образом, увеличивает добавленную стоимость, которую компании могут получить от внедрения нового программного обеспечения.

ФОТО: ГОРОДЕНКОФФ / SHUTTERSTOCK

ФОТО: ГОРОДЕНКОФФ / SHUTTERSTOCK

SAP рассматривает WalkMe как дополнение к своим предложениям в области управления трансформацией бизнеса, включая предыдущие приобретения Signavio и LeanIX . Цель SAP — предоставить своим клиентам большую поддержку в их цифровой трансформации.

«Приложения, процессы, данные и люди — это четыре ключевых элемента успешной трансформации бизнеса», — сказал Кристиан Кляйн, генеральный директор и член исполнительного совета SAP SE. «Приобретая WalkMe, мы удваиваем поддержку, которую мы предоставляем нашим конечным пользователям, помогая им быстро внедрять новые решения и функции, чтобы получить максимальную отдачу от своих инвестиций в ИТ».

Дэн Адика, генеральный директор WalkMe, назвал приобретение SAP важной вехой. Имеющиеся таким образом ресурсы позволили улучшить собственный ассортимент продукции и расширить присутствие на рынке. «Используя обширную экосистему SAP, мы готовы открыть существенные возможности для роста и принести еще большую пользу нашим клиентам», — говорится в заявлении Адика.

Платформа цифрового внедрения WalkMe работает поверх приложений других производителей, отслеживая их использование и предоставляя рекомендации. Платформа распознает возникновение проблем и предлагает необходимую поддержку и автоматизацию, позволяющую выполнять задачи независимо от задействованных приложений. Компания заявляет, что у нее более 2000 клиентов, включая IBM, Nestlé, ThermoFisher Scientific и Министерство обороны США.

Руководство SAP заверило, что даже после приобретения WalkMe продолжит полностью поддерживать приложения, не относящиеся к SAP.

WalkMe недавно анонсировала второй пилотный вариант своего DAP на базе искусственного интеллекта. При этом используется контекст и искусственный интеллект платформы, чтобы предложить пользователям лучший следующий шаг в рабочих процессах. Второй пилот WalkMe может работать на постоянной основе и накладывать на него приложения, включая любые дополнительные пилоты от разных поставщиков, которые компании используют в своих программных средах. SAP надеется, что функции WalkMe в новом программном обеспечении также позволят улучшить работу второго пилота SAP Joule и повысить производительность клиентов SAP.

Перевод с английского

ИСТОЧНИК

Показать полностью 2
Израиль Стартап Программное обеспечение Персональные данные Искусственный интеллект Миллиарды Sap Германия Покупка бизнеса Длиннопост
0
DELETED

Бетта Версия Андроид 15 vol. 2.2 для смартфонов Pixel⁠⁠

1 год назад

Бета-версия Android 15 2.2 (май 2024)

Это небольшое обновление для Android 15 Beta 2 включает следующие исправления:

Исправлены оставшиеся проблемы, из-за которых при создании личного пространства на устройстве в первый раз удалялись значки приложений с главного экрана (или с главных экранов, если было добавлено более одного главного экрана). (Выпуск # 340868295)

Исправлена ошибка с ролью кошелька, из-за которой в некоторых случаях не могли функционировать платежи по NFC. (Проблема # 340933949)

Исправлена ошибка, из-за которой панель приложений не открывалась при пролистывании вверх. (Проблема # 335798568)

Исправлена ошибка с NFC в режиме наблюдения, из-за которой в некоторых случаях не выполнялись платежи по NFC.

Исправлена ошибка, из-за которой видео, записанные с использованием 10-разрядного HDR, иногда приобретали зеленый оттенок.

Исправлены различные другие проблемы, которые влияли на стабильность системы, интерактивность и возможности подключения.

Всем подходящим устройствам, зарегистрированным в программе Android Beta для Pixel, будет предложено обновление по воздуху (OTA) до бета-версии 2.2

Показать полностью
Программное обеспечение Android Смартфон Google pixel Смартфон Обновление Текст
2
1
vwp1976
Лига генеалогов | родословная

Ответ на пост «Программное обеспечение для составления родословной»⁠⁠1

1 год назад

Люди, вы только не смейтесь. У кого есть какие идеи вот по какому поводу. Хочу провести моделирование такой ситуации. На необитаемый остров или необитаемую планету попадает шесть человек. Три мужчины и трое женщин. Если бы они хотели хоть как-то избегать близкородственного смешивания, какая стратегия размножения была бы максимально выгодна?

Скажем, каждый из трёх мужчин заводит по одному ребёнку от каждой из трёх женщин.

Или у каждого мужчины должны быть дети только от одной женщины? Для простоты в каждом поколении будет по три ребёнка.

Можно будет сделать более интересно. Скажем, будет негр, негритянка, белый, белая, монголодид и монголоидка.

Я пытался смешивать их в разных пропорциях. Скажем, первое поколение негр-негритянка, белый+белая, китаец+ китаянка. Тут всё ясно.

Для отслеживания потомства назовём их детей нн, бб и мм. Где каждая буква - раса родителей.

В варианте, когда все перемешались дети были бы НБ, БН и МН. А потом их надо переженить.

В третьем поколении у нас получаются у меня их ещё получается скрестить. Но получается уже слишком сложные имена. Скажем, ННББ Первый, ННВБ вторая, ННВБ первая. Хорошо бы их распределять по полам. Скажем, девочек писать маленькими буквами.

Но уже на четвёртом начинается адский ад.

Так что, я так и не понял, какая стратегия выгоднее.

Кроме того, ожидалась и подтвердилась такая тенденция. При таком смешении одни фамилии сокращаются, другие плодятся. Рано или поздно в таком обществе должны исчезнуть все фамилии, кроме одной.

В реальной жизни было бы более интересно. Скажем, количество детей согласно генератору случайных чисел, от нуля до хотя бы шести. но это значительно усложняет задачу. Но в любом случае рано или поздно какие-то фамилии стали бы исчезать. (В нашей стратегии фамилия первая буква имении. Скажем, Н, Б или М.

Само собой, что рано или поздно получилась бы усреднённая раса из трёх. Но в теории и расовые признаки были бы распределены неравномерно. Даже в идеальной модели, где всегда по трое детей и потомство есть у всех. И нет доминантных и рецессивных признаков. Могу ошибаться, но тут даже в десятом поколении, когда уже все сто раз перемешаются получилось бы, что у них разные пропорции рас.

Кто умный, подскажите, как можно реализовать такую стратегию силами Экселя? В идеале, конечно же, программка, которая бы давала нормальные имена и одновременно учитывала расовые доли в каждом потомстве, искала наиболее генетически удалённого партнёра и давала шанс на разные стратегии: с генератором случайных чисел в количестве рождений или без него, с моногамией и без оной.

Показать полностью
Родословная Генеалогическое древо Предки Родственники Текст Программное обеспечение Длиннопост Ответ на пост
7
3
DensZ

Помогите найти программу⁠⁠

1 год назад
Помогите найти программу

Программа называется WinBLEND. Используется для хранения рецептур красок. Плюс делает минимальные расчёты по свойствам.
Последняя версия 4.0 (судя по скрину). Скрины 21 года.
Разработчик: Australian Coatings Resources
Web: coatings.net.au - но он не работает
Помогите найти эту программу или ссылку для её приобретения

Показать полностью
Софт Программное обеспечение
3
8
Timeweb.Cloud
Timeweb.Cloud
Android Developers

Мое решение 3-х проблем MVx⁠⁠

1 год назад

Автор текста: Lynnfield

Итак, в прошлый раз я описал три проблемы, которыми, на мой взгляд, страдают все MVx и даже некоторые не MVx архитектуры. Если коротко, то это:

  • проблема остатка — при делении фичи на заявленные компоненты архитектуры остаётся либо «неделимая» часть фичи, либо лишние компоненты архитектуры;

  • проблема масштабирования — при расширении фичи компоненты архитектуры начинают раздуваться, что усложняет дальнейшую поддержку;

  • и проблема разрывов логики, когда из-за взаимодействия с UI логика разрывается на части, что тоже не помогает нам делать систему более цельной, предсказуемой и тестируемой.

Описание проблем это, конечно, хорошо, но вопрос в том, как их решать? Об этом я бы и хотел поразмышлять в этом тексте. Спойлер: когда я нашел решение проблемы разрывов, я понял, что оно может решить и все остальные проблемы.

❯ Проблема остатка (Remainder issue)


Первый вопрос: что делать с остатком? Все просто — взять делитель поменьше, потому что чем меньше делитель, тем меньше остаток. Этому меня еще в школе научили. Но я столкнулся с тем, что это не работает с MVx архитектурами, потому что мой делитель, обычно, это набор определенных компонент, и введение новых — значит изменение архитектуры.

Возможно и вы с этим сталкивались, когда вводили всякие мапперы, делегаты, интеракторы (те, что репозитории репозиториев) и прочее. Помогли ли они мне? Нет. Лучшее решение, что я видел — это Flux- и ELM-like архитектуры, которые заявляют «чистую» функцию как единицу деления логики, но со всеми вытекающими отсюда удобствами и следующими за ними «эффектами».

Но решение проблемы остатка, даже если бы оно у меня было, не помогает мне решить проблему масштабирования.

❯ Проблема масштабирования (Scalability issue)


В прошлый раз я упоминал «интуитивный» подход к решению задачи масштабирования и рассказывал почему он не работает. По крайней мере не у меня.

А какой не интуитивный?

На мой взгляд это старая и уже не раз решенная задача. И примеры решения можно увидеть в том, как в теории вычислений доказывают некоторые теоремы через вкладывание одной машины Тьюринга в другую, или как элегантно эта проблема решается в процессорах, где более сложные компоненты — просто композиция более простых.

Так и в MVx архитектурах: можно было бы попробовать реализовывать доработки отдельно, а уже потом объединять их с существующей фичей, вместо того, чтобы вносить изменения в уже написанные компоненты. Что в прошлом не раз приводило меня к череде переписываний тестов, судорожному протыкиванию приложения на предмет того, что ничего не поменялось, и мольбам о том, чтобы очередной баг-репорт был не по моим изменениям.Но вот что я заметил, ведь именно такой подход, когда мы предпочитаем композицию изменениям, я и мои коллеги используем для Data-слоев. Например, новые источники данных оборачиваются в Репозитории, а потом комбинируются в Интеракторы. Но почему-то чем ближе мы подходим к UI-слою, тем больше начинаем изменять, а не комбинировать.

Чаще всего я вижу эту проблему как вечное переписывание тестов уже существующих компонент, или Presenter, ViewModel, Controller размером со вселенную, который даже трогать страшно, потому что что-то точно развалится.

Такой подход, где мы предпочитаем покомпонентную композицию фичи и доработок, вместо прямых изменений какого-нибудь компонента, действительно будет не интуитивным, потому что потребует реализовывать доработки как самостоятельную фичу. Я имею ввиду, что надо будет имплементировать доработки используя наш архитектурный подход, а потом написать еще одну пачку компонент, которая уже будет склеивать существующий функционал с новым. Но каким бы правильным мне это не казалось, я никак не могу отделаться от мысли, что такой подход приведет к написанию большого количества кода, который на первый взгляд будет казаться бесполезным.

Еще мне показалось интересным, что тут нам может помешать проблема остатка, которая по идее должна привести к ситуации, когда такой подход не сработает, потому что надо будет внедрить доработки в “середину” компонента из уже существующей фичи, а значит придется делить существующие компоненты на новые, более мелкие. Чем крупнее делитель, тем крупнее остаток, да?

В итоге, даже использовав “неинтуитивный” подход к масштабированию, я все-равно не могу до конца понять как решить проблему масштабирования. А между прочим еще остается проблема разрывов.

❯ Проблема разрывов (Gaps issue)


И вот тут становится интересно. Все дело в Hello World. Мне все никак не дает покоя вопрос: какая у него архитектура?

Hello world


Я видел примеры Hello World в разных языках, фреймворках и архитектурах (кроме Open GL, конечно же), и у них не было проблем с его реализацией. Если не считать проблемой то, сколько усилий надо приложить, чтобы написать изначальный шаблон. Но, если результат одинаковый, не значит ли это, что разница только в том, сколько обвязок надо написать, чтобы Hello World работал? И нужны ли они? Тогда я стал думать: а что общего у всех этих реализаций Hello World в разных архитектурах? И как-то я пришел к мысли, что скорее всего правильный ответ — Алгоритм. И он до безобразия тривиален.

И что интересно, у самого алгоритма нигде не написана архитектура в которой он должен быть имплементирован. Но это Hello World. Как я и сказал: он чересчур прост.

Более интересные примеры


Давайте лучше взглянем на следующий пример, который используют в учебниках по программированию — Hello %username%. У него все та же проблема с архитектурами — его можно написать в любой из них, и общее между всеми реализациями в разных архитектурах — алгоритм.

А вот еще интересное наблюдение: если мы немного обобщим алгоритм Hello World, отделив show от Hello World, то увидим, что он дважды появляется в алгоритме этого примера.

Все еще слишком просто, правда? Следующий учебный пример — работа со структурами данных. И в самом простом виде — это CRUD плюс “показать все” с хранением в списке (он же List). Этот пример, не очень интересный с точки зрения реализации, интересен тем, что он добавляет в предыдущий алгоритм композицию.

По сути здесь мы первый раз сталкиваемся с тем, что нам надо создать пять независимых программ, а потом объединить их под управлением шестой. А еще эти шесть программ делят между собой один блок памяти — сам список структур. И мне кажется, что это уже напоминает решение одной из наших проблем, не так ли?

Появление Gaps issue


Но что происходит даже с этими простыми программами, когда мы пытаемся перенести их в UI-среду?

Легче всего Hello World, потому что он просто обрастает кучей компонент, которые помогают ему “жить” в новой среде. Даже не интересно.

А вот Hello %user name% приходится куда сложнее. Беднягу размазывает по компонентам системы или архитектуры: в одном месте мы слушаем ввод имени, в другом показываем приветствие, а в третьем прописываем реакцию на введенное имя.

Я даже боюсь говорить о том, что же происходит с CRUD-примером. В зависимости от того, какой макет нам нарисуют, мы будем писать совершенно разные приложения. Вот представьте, что вас попросили сделать такую программу как несколько разных экранов, а потом попросили переделать так, чтобы это был один экран. С часто используемым подходом к декомпозиции, когда один экран — один набор MVx-компонент, мы получим бессонную ночь переписывания кода, потому что части нашей логики разорваны и раскиданы по всей реализации.


Но ведь изначально “не было ни единого разрыва”, а алгоритм остался тем же. Почему все стало так плохо?

Причина — асинхронность


На этот вопрос некоторые уже дали ответ в комментариях к предыдущим статье и видео, и я с ними полностью согласен. Причина — асинхронность. И я был искренне удивлен, когда пришел к этому выводу.

Многие, если не все GUI-системы построены вокруг event loop, потому что нам надо одновременно и экран рисовать, и ввод от пользователя слушать. А чтобы сюда добавить еще и наш алгоритм, его придется разделить так, чтобы он хорошо встраивался в этот event loop.

Я уже не говорю о том, что мы вообще-то еще должны взаимодействовать с другими асинхронными системами. Кстати, с ними то, обычно, проблем и не возникает. А почему?

Решение — закрытие разрыва

Обратим внимание на графикоподобную картинку, на которой я объяснял проблему разрывов в прошлый раз.

Напомню как всё было, и в этот раз уже не буду лукавить: путь нашей логики начинается в каком-то из callback’ов, а не в абстрактном “начале”. По мере выполнения мы продвигаемся все глубже по стеку вызовов, выполняем одну за другой функции, и в самой верхней точке нашего графика мы обращаемся к источнику данных: бэкенду, файлу, какой-то системе хранения. И что здесь обычно находится?

Обычно это вызов какой-то “асинхронной” функции: корутины, async- или suspend- функции, уж простите мой котлинский, или какой-то функции с callback’ом, или функции возвращающей какой-нибудь Future, Promise или Single.

И вот вопрос: вызывая эту функцию с callback’ом, как часто мы задумываемся, что эта операция может вообще никогда не вернуться в этот callback? Лично я до недавнего времени считал, что управление гарантированно будет передано в наш callback. Не считая случаев “отмены”, конечно же. Но откуда у нас такая гарантия? Возможно все дело в реализации системы? Давайте “заглянем под капот” и посмотрим что же там на самом деле происходит.

Наша функция формирует наш запрос к базе, запрос в сеть или еще что-то. В общем случае формирует какой-то контекст, с помощью которого надо выполнить запрос, и вместе с callback’ом, в который надо вернуть результат, отправляет его на другой поток, и там происходит все выполнение. После завершения выполнения, тот поток вызывает callback, передавая в него результат, что для нас, разработчиков, выглядит как своего рода возврат в точку вызова. Таким образом логика выглядит более цельной, и такого разрыва, как в случае с UI не происходит.

Так вот вопрос: а почему бы нам не повторить этот же трюк с UI?

На картинке это будет выглядеть как параллельный перенос: мы просто поднимем нашу линию, а вот тут, в нижней точке, вместо того чтобы разрывать логику и отдельно задавать на UI какое-то состояние и callback’и, сделаем функцию, которая отправляет запрос на UI и ждет от него ответа. Таким образом мы закрываем разрыв и теперь наша логика будет выглядеть как единое целое.

Ничего сложного, мы даже не изобретаем что-то новое, но такой подход поможет нам взаимодействовать с UI, как с любой другой внешней системой, а не как с чем-то особенным. И вот моё видение того, как это могло бы работать и решать проблемы, описанные выше.

❯ Proposal


Давайте писать функции…

Да, может звучать нелогично, тем более, что я уже говорил о том, что это не помогает Flux- и ELM-like архитектурам, но я объясню. Начнем с проблемы остатка.

Влияние на решение проблемы остатка


Добавлю небольшую аналогию с математикой. Как я и говорил «архитектура» — это делитель. А чтобы при делении не оставалось остатка — нам нужно найти наибольший общий делитель. Чем и является функция, на мой взгляд. Чем больше я смотрю на реализации всех наших «архитектур», тем больше я вижу, что все они, по сути, просто один из способов удобнее объединять и специализировать функции (и тут я подразумеваю, что метод класса — это функция, которая иногда неявно принимает дополнительный аргумент).

Дальше лучше — проблема масштабирования.

Решение проблемы масштабирования


Функции очень хорошо масштабируются, потому что, с точки зрения реализации, они могут вмещать в себя любой набор инструкций и в том числе вызовы других функций, а с точки зрения пользователя функции это всегда просто вызов функции: имя, параметры, результат, независимо от того как она реализована.

А что с разрывами?

Решение проблемы разрывов


До тех пор, пока мы будем поддерживаем нашу логику, как композицию функций, проблема разрывов будет естественным образом «выталкиваться наружу», за пределы нашей логики. А это в свою очередь будет гарантировать нам последовательность выполнения, тестируемость и как следствие — стабильность.

❯ Концепт


Так что же я предлагаю?

Во-первых, реализовывать логику, как функции и их композицию, а не как компоненты какой-нибудь архитектуры. Это позволит нам гарантировать и поддерживать последовательность выполнения, позитивно скажется на масштабируемости и тестируемости нашего кода, да и понимать такой код будет проще.

Во-вторых, у этой функции (композиции функций) должна быть возможность работать независимо от «сторонних» систем, поэтому я предлагаю вынести ее в свой поток, чтобы у нее была возможность спокойно выполняться, блокироваться при необходимости, параллелиться и тому подобное. Пусть будет “синхронной”. Обычно мне не надо, чтобы логика продолжала свое выполнение, когда она ждет какой-то ресурс. А если такое поведение нужно, то почему-бы его не описать его явно? И назвать бы этот поток Main, но имя уже “занято”. =)

В-третьих, хотя это и самый важный пункт, а у меня видимо есть тенденция оставлять все важное на потом, я предлагаю сосредоточиться на реализации логики приложений, а не экранов и виджетов. Как видите, с таким подходом нет разницы между слоем данных и пользователем. Есть только наша детерминированная логика и внешние системы, которые обмениваются данными через нее. Логика просто ходит между ними и предоставляет им некий контекст для принятия решения и набор возможных действий, а внешние системы в свою очередь “отвечают” нашей логике руководствуясь представленным контекстом. Это похоже на игру в шахматы, где внешние системы — игроки, а логика — доска с фигурами и правила игры.

Логика наших фич зачастую не зависит от представления, а как раз наоборот: представление является способом, который помогает логике взаимодействовать с пользователем в определенной среде, как какой-нибудь адаптер. Я думаю, что такой адаптер должен быть плагином к логике, а не фактором определяющим ее.

В конце концов, применив этот концепт, я хочу помочь всем нам проектировать и писать кроссплатформенные приложения в самом широком смысле этого слова: разрабатывая и реализуя end-to-end алгоритмы которые прозрачно перескакивают с бэкенда на фронт и обратно, которые не видят различия между разными видами фронтов, будь то Web, iOS или Android, или разными типами вроде UI, CLI, или TalkBack.

Но пока это только концепт и виденье. Пожалуй пора посмотреть на код, но он будет в следующий раз. А сейчас есть время порефлексировать на эту тему. Дайте этим идеям время перевариться. Прочитайте еще раз. Задайте вопросы. И может вы сможете написать код еще до того, как я опубликую продолжение. Хотите посоревноваться?

Увидимся.

  • Написано специально для Timeweb Cloud и читателей Пикабу. Больше интересных статей в нашем блоге на Хабре и телеграм-каналах (статьи и новости).

  • Облачные сервисы Timeweb Cloud — это реферальная ссылка, которая может помочь поддержать наши проекты.

Показать полностью 14
Разработка Программирование Android Timeweb Алгоритм Программное обеспечение Telegram (ссылка) Длиннопост
1
Вопрос из ленты «Эксперты»
3a3a3y
3a3a3y
Андроид ремонтеры

Пикабу, отсыпьте плиз прог на андроид 11 для записи телефонных звонков. Очень нааадо⁠⁠

1 год назад
Картинки для привлечения внимания

Картинки для привлечения внимания

Для мессенджеров тоже если есть? Вайбер вотсап и телега?

Для мессенджеров тоже если есть? Вайбер вотсап и телега?

И так чтоб собеседник не знал, но обоих было хорошо слышно в записи. Задолбали спамеры и прочие начальники безопасности банков

И так чтоб собеседник не знал, но обоих было хорошо слышно в записи. Задолбали спамеры и прочие начальники безопасности банков

Тут без комментариев;)

Тут без комментариев;)

Показать полностью 4
Программное обеспечение Прослушивание Торрент Запись Мошенничество Пираты Пиратство Безопасность Вопрос Спроси Пикабу Длиннопост
14
13
trapwalker
trapwalker
Лига программистов
Серия Простыми словами

Ответ на пост «Современным людям - современные объяснения»⁠⁠1

1 год назад

И хорошо если пчелки правда знают о проблеме и работают над ее исправлением, но на деле чаще всего вы не видите даже этой ошибки, а просто ждёте бесконечный прогресс бар ... нет, прогрессбар - это про какой-то прогресс, процесс, с хотя бы отдалённо и приблизительно понятной продолжительностью.

Даже эти нехитрые технологии были потеряны

Даже эти нехитрые технологии были потеряны

Отголоски развитой цивилизации и сейчас можно найти в виде скриншотов в сети:

1/4

Что мы можем увидеть на прогресс-баре здорового человека

На хорошем прогресс-баре мы видим что, собственно, присходит, сколько элементов обрабатывается, общий процент выполненной работы (5), сколько примерно времени потребуется (4), сколько объектов и гигабайтов осталось обработать (2), скорость передачи данных (3), тот же процент но наглядно в виде заполнения бара (1) и даже график изменения скорости обработки данных!

Кстати, давно не пользуюсь windows, но, кажется, там сейчас такой или похожий прогресс-бар на копирование файлов, но...

Но во всех стальных местах где пользователю приходится ждать, его буквально заставляют СТРАДАТЬ!

Я не знаю кто это придумал, но уверен, что сам адский сатана его большой поклонник.

Я не знаю кто это придумал, но уверен, что сам адский сатана его большой поклонник.

Установка программы, перезагрузка системы, ОБНОВЛЕНИЕ! Какого черта нигде не пишется даже сраный процент прогресса?! Порой вот эта тупая анимация просто крутится в виде зацикленной гифки, и она вообще никак не связана с процессом. Криворукие разработчики зачастую даже не думают потрудиться и сделать ожидание пользователя чуть более предсказуемым по времени и информативным.

Да ладно "по времени", иногда глядя на анимацию не понятно закончится этот процесс вообще когда-нибудь, или что-то там уже бесповоротно сломалось, а анимация эта бесконечная, на экране по-прежнему висит надпись "осталось совсем немножко, подождите, пожалуйста", и так ждать можно до тепловой смерти вселенной!

Неужели только меня одного бомбит от всего этого?

Сейчас придёт кто-нибудь в комменты защищать тугосерь-разработчиков, мол, ненуачо, ненуим манагер сказал так сделать, ненуакак они узнают сколько осталось, когда кампуктеры у всех разной производительности, интернет-соединение разное и, возможно, нестабильное, количественный прогресс может нелинейно зависеть от времени.

Ну так да, дорогие коллеги, в решении этих сложностей и заключается наша с вами профессия!

Ничего невозможного тут нет, а сделать лучше чем сейчас в 99% местах вообще не сложно.

Кто мешает эмпирически подобрать более адекватную кусочно-полиномиальную формулу аппроксимации? Кто мешает собрать статистику у контрольной выборки пользователей и выявить закономерности длительностей разных этапов процесса от примерного уровня оборудования? Кто мешает в ходе самого прогресса замерять скорость тех или иных операций, чтобы предсказать общее время процедуры. Хотя бы очень приблизительно. Хотя бы оценкой сверху "если ничего непредвиденного и редкого не случится".

Кто-то скажет, что, мол, радуйтесь, что вот, к примеру, при загрузке системы вам хоть анимацию с приятной картинкой показываем, а так вообще черный экран был бы. Ведь как пробросишь подробности процесса в тупой фронтенд? А так и пробросишь! Чуть поострее сделать фронт, чуть больше интроспекции, немного статистики и, вуа-ля, у вас дружелюбный информативный интерфейс, а не вот это вот вращающееся бесконечное говно на палочке.

И напоследок. Не надо считать пользователя идиотом, но и оставлять наедине со своими проблемами без какой-либо информации - тоже не надо. Правильная обработка handled и unhandled исключений изучается в институте, но это не рокет-сайнс, тут можно освоить базовые премудрости.

Пользователю должно быть понятно, что что-то пошло не так, ему должно быть понятно имеет ли смысл и имеется ли возможность решать как-то возникшую проблему, или стоит сразу в ужасе удалить поделку неграмотных "погромистов", чтобы не терять время и искать уже более качественный софт.

Винда, кстати, тоже не безгрешная, в плане наплевательства на удобство пользователя при ожидании. Чего стоит только вот это вот внезапное желание обновиться. Сколько было случаев, когда винде (и не только) приспичило срочно обновиться, когда горят сроки и нужно доделать курсовую, или срочно надо распечатать документы, или быстро скопировать нужный файл, или целая аудитория ждёт презентации на подключенном к проектору ноутбуке...

21 век на дворе! Пора делать все эти побочные процессы, которые не нужны, по сути, пользователю, просто незаметными и НИКАК не затрагивающими пользовательский опыт.

Пора писать софт везде так, как это делали для Вояджеров и марсоходов. Предсказуемо, конфигурируемо, надёжно. Что стоит при обновлении делать равнозначный клон ядра операционной системы и обновлять его, а не работающю систему? Потом "щёлк" и у вас обновленный софт! Что мешает? Техническая сложность? Ну так пора сделать это важным техническим преимуществом, чтобы была конкуренция за такое удобство.

Простите, друзья, что-то меня подорвало снизу. Отбомбил. Думаю эта статья уже малость припоздала лет эдак на 10. Сейчас проблема, может быть, уже стоит не так остро, компы у нас быстрые, каналы широкие, нервы правда ни к черту, ну да что поделаешь...

Картинки для иллюстрации взяты из сети, а эмоции из глубин воспалённого мозга.

Показать полностью 7
[моё] IT Ошибка Прогресс Технологический прогресс Процесс Интерфейс Разработка Программное обеспечение Программирование Негодование Раньше было лучше Но это не точно ИМХО Бесконечный цикл Ожидание Бесит Хватит это терпеть Ответ на пост Длиннопост
28
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии