Ну «отсылать разработчику» это в идеальном случае. Можно и не отсылать. Но если в программе возникло исключение, виной которому не являются внешние обстоятельства — то что можно сделать?
Самое простое — завершить работу.
Хорошо сформировать отчет об ошибке и попытаться сохранить данные пользователя (но тут тоже не все так просто: внутренняя структура программы может быть уже повреждена, поэтому гарантий корректного сохранения уже нет; сохранять нужно куда-то в отдельное место, не затирая старых данных).
Если в программе хорошая модульность (например всякие плагины/расширения, хотя и необязательно), то можно попробовать отключить модуль, вызывавший фатальное исключнение, не завершая работу программы, и позволить пользователю пользоваться остальной функциональностью программы без сбойного модуля.
А я честно признаюсь — нравятся коды возврата, люблю явность во всем. Мне не нравится что функция может выбросить исключение где-то в глубине стека вызовов (особенно чужого, например библиотечного кода), там его никто не обработает, и оно вывалится у меня. По сути это еще круче чем goto — это целый скрытый слой передачи управления, который нужно отслеживать параллельно основному коду.
Да все просто.
1. Ошибки в самой программе (в коде программы).
2. Ошибки во внешнем мире (входные данные).
Ошибок в программе быть не должно — но если они есть и их удалось словить, то лучше завершиться и отослать отчет разработчику. Потому что программа, определившая такую ошибку внутри себя, не может уже доверять самой себе и рисковать данными пользователя.
Ошибки во внешнем мире могут быть — например нет сети, места на диске, ошибка формата открываемого файла и т.д. — тут нужно просто сказать пользователю. Программа тут не при чем — значит можно продолжать работать.
Деление на ноль к примеру может быть в обоих случаях: и ошибкой в программе, и ошибкой данных из внешнего мира.
Наоборот… выходите на балкон с чашкой чая, а там искусственная луна в небе висит… сразу ощущение гордости за человечество, мысли о предстоящем покорении Галактики…
Вне всякого сомнения пользоваться должны все бесплатно. О валюте я сказал потому, что должна быть мотивация раздавать как можно больше контента и быть сетевыми узлами.
Нужна общесетевая система подтверждения ценности контента. Тут все очень непросто, может быть мошенничество типа такого когда данные гоняются между двумя компами злоумышленника, «накручивая» деньги. Этого не должно быть, но как от такого защититься, вот так сходу непонятно.
Способ монетизации контента в p2p — криптовалюта, каким-то хитрым образом привязанная к объему раздаваемого контента. Т.е. чем больше человек раздает (и, наверное, чем большему количеству разных пиров) — тем больше у него майнится. Вопрос только как это сделать.
Ну вот и получается — что за контент такой, который можно посмотреть только если его кто-то еще смотрит? Что-то суперпопулярно-вирусное с миллионами просмотров? Такое будет работать только при миллионах пользователей сети. Т.е. порог вхождения очень нереальный, нужно чтобы сразу и много. В общем это проблема любого p2p, но тут это как-то особенно явно.
И раз есть сервер то это не чистый p2p. А видео это вам не блогохостинг какой нибудь, там объемы хранения и нагрузка гораздо больше.
Не, как концепт это хорошая штука, но только как концепт. Я всегда был сторонником того, что каждый хранит и раздает то что ему интересно, а не только то что используется в данный момент: если пользователь поставил лайк или репост к любому типу контента — этот контент сохраняется у него на диске и он становится распространителем в p2p. Ну и интеграция с любыми системами анонимизации разумеется, причем в зависимости от типа контента она может быть разная и настраиваемая.
Сия технология чисто браузерная, что с моей точки зрения есть минус: нужно чтобы браузер всегда работал, и вероятно чтобы и соответствующая страничка была открыта (или браузеры уже научились выполнять фоновые задачи без открытых страниц?).
Также, несмотря на p2p, анонимности там вроде не предполагается. Это тоже минус.
Но вообще тенденция хорошая. Постепенно, путем проб и ошибок, сформируется стек пиринговых технологий, который и породит интернет нового поколения.
А мне кажется, Google+ просто был слишком сложен. Я помню, хотел на ютубе поменять аватарку и фоновую картинку, так я замучился искать во множестве совершенно разнородных заумных опций, как это сделать. Я даже примерно воспроизвести не могу что я тогда сделал. Хотя казалось бы, что может быть проще.
Ведь что такое соцсеть? Это весьма простая вещь. Даже не «весьма простая», а «экстремально простая»:
— карточка персональной информации (имя/ник, аватара/фотка, возможно какие-то персональные данные, краткое описание самого себя и список интересов).
— лента новостей, куда можно писать что-то свое и куда приходят новости от друзей или то что может быть пользователю интересно
— и различные «альбомы», коими фактически являются и фотоальбомы, и видео, и музыка, и тексты, и даже переписка — хоть встроенная система личных сообщений, хоть даже email. Важно то что это просто списки типизированной информации, возможно с вложенностью (папками). Концепция абсолютно стройная и симметричная, интерфейс должен быть простым и унифицированным. Вся структура соцсети должна быть абсолютно прозрачна и интуитивно понятна даже непрограммисту.
А что мы получили в Google+? А я даже не знаю что. Какую-то огромную кучу совершенно разнородных страничек, которые не создают абсолютно никакого чувства интуитивно понятной структуры. Это было больше похоже на какую-то гипертрофированную интегрированную систему настроек аккаунта гугла, чем на соцсеть. Вместо стройного дерева, у которого есть корень, ветви и листья — мы имеем какого-то макаронного монстра, в котором совершенно непостижимым и непредсказуемым образом переплетено что-то из других сервисов гугла. Вот такое впечатление.
Странное нежизнеспособное изначально поделие — так что ничего удивительного.
Удивительно другое — как они умудрились сделать такую странную и запутанную хрень? Как можно, при их-то ресурсах, сделать все настолько криво и непонятно?
Все-же дурацкая система с этими непрерывными обновлениями. Раньше было лучше — были конкретные сборки винды (95,98,xp,Vista,7...), каждая новая система была событием и даже эпохой, и мне кажется, их капитально тестировали прежде чем выпустить в свет. А не то что теперь — тяп ляп и в продакшен, какая-то бешеная гонка обновлений без цели и конца.
ЗЫ. Десяткой пока не пользуюсь, но наверное придется в дуалбут поставить вместе с семеркой и линуксом, чисто для общего развития и тестирования написанного софта.
О, это совсем другое дело! :)
Я сейчас обдумываю схожую задачу — организацию децентрализованной социальной сети, правда с совершенно другим подходом: не защита персональных данных от корпораций, а принципиальный отказ от персонального владения какими-либо данными вообще.
Такие фичи как Copy-on-write и даже Снапшоты вполне можно сделать и на других ФС. Copy-on-write точно можно, причем даже на уровне файловых менеджеров.
Одна из основных истин криптографии гласит, что не стоит изобретать чего-либо в этой сфере, если вы не профессионал.
Вот совершенно согласен. К сожалению, мои познания в высшей математике (необходимые для разработки чего-то типа асимметричного или полностью гомоморфного шифрования) далеки от идеальных, а школьные эксперименты типа шифрования на XOR (и даже с рандомным зашумлением) вряд ли будут кому интересны.
Гораздо интереснее другое. Есть немало проверенных и отлаженных алгоритмов шифрования, применяемых для самых разных целей: PGP, зашифрованные сеансы в сети, децентрализованные анонимные сети, блокчейн и т.д…
Пусть эти алгоритмы будут «черными ящиками», но с очень хорошим описанием того, в каких случаях их можно и нужно применять, а в каких — нельзя. Вот хочется хороший, качественный мануал такого типа.
Ну и качественная библиотека, где все эти алгоритмы собраны, тоже не помешает. Тут на опеннете проскакивала новость про библиотеку Tink от Google, в которой собраны некоторые примитивы шифрования. Вот по идее нужно что-то такое, и с хорошим мануалом «для чайников», где буквально разжеваны понятия и примеры применения.
Самое простое — завершить работу.
Хорошо сформировать отчет об ошибке и попытаться сохранить данные пользователя (но тут тоже не все так просто: внутренняя структура программы может быть уже повреждена, поэтому гарантий корректного сохранения уже нет; сохранять нужно куда-то в отдельное место, не затирая старых данных).
Если в программе хорошая модульность (например всякие плагины/расширения, хотя и необязательно), то можно попробовать отключить модуль, вызывавший фатальное исключнение, не завершая работу программы, и позволить пользователю пользоваться остальной функциональностью программы без сбойного модуля.
1. Ошибки в самой программе (в коде программы).
2. Ошибки во внешнем мире (входные данные).
Ошибок в программе быть не должно — но если они есть и их удалось словить, то лучше завершиться и отослать отчет разработчику. Потому что программа, определившая такую ошибку внутри себя, не может уже доверять самой себе и рисковать данными пользователя.
Ошибки во внешнем мире могут быть — например нет сети, места на диске, ошибка формата открываемого файла и т.д. — тут нужно просто сказать пользователю. Программа тут не при чем — значит можно продолжать работать.
Деление на ноль к примеру может быть в обоих случаях: и ошибкой в программе, и ошибкой данных из внешнего мира.
И раз есть сервер то это не чистый p2p. А видео это вам не блогохостинг какой нибудь, там объемы хранения и нагрузка гораздо больше.
Не, как концепт это хорошая штука, но только как концепт. Я всегда был сторонником того, что каждый хранит и раздает то что ему интересно, а не только то что используется в данный момент: если пользователь поставил лайк или репост к любому типу контента — этот контент сохраняется у него на диске и он становится распространителем в p2p. Ну и интеграция с любыми системами анонимизации разумеется, причем в зависимости от типа контента она может быть разная и настраиваемая.
Также, несмотря на p2p, анонимности там вроде не предполагается. Это тоже минус.
Но вообще тенденция хорошая. Постепенно, путем проб и ошибок, сформируется стек пиринговых технологий, который и породит интернет нового поколения.
Ведь что такое соцсеть? Это весьма простая вещь. Даже не «весьма простая», а «экстремально простая»:
— карточка персональной информации (имя/ник, аватара/фотка, возможно какие-то персональные данные, краткое описание самого себя и список интересов).
— лента новостей, куда можно писать что-то свое и куда приходят новости от друзей или то что может быть пользователю интересно
— и различные «альбомы», коими фактически являются и фотоальбомы, и видео, и музыка, и тексты, и даже переписка — хоть встроенная система личных сообщений, хоть даже email. Важно то что это просто списки типизированной информации, возможно с вложенностью (папками). Концепция абсолютно стройная и симметричная, интерфейс должен быть простым и унифицированным. Вся структура соцсети должна быть абсолютно прозрачна и интуитивно понятна даже непрограммисту.
А что мы получили в Google+? А я даже не знаю что. Какую-то огромную кучу совершенно разнородных страничек, которые не создают абсолютно никакого чувства интуитивно понятной структуры. Это было больше похоже на какую-то гипертрофированную интегрированную систему настроек аккаунта гугла, чем на соцсеть. Вместо стройного дерева, у которого есть корень, ветви и листья — мы имеем какого-то макаронного монстра, в котором совершенно непостижимым и непредсказуемым образом переплетено что-то из других сервисов гугла. Вот такое впечатление.
Удивительно другое — как они умудрились сделать такую странную и запутанную хрень? Как можно, при их-то ресурсах, сделать все настолько криво и непонятно?
ЗЫ. Десяткой пока не пользуюсь, но наверное придется в дуалбут поставить вместе с семеркой и линуксом, чисто для общего развития и тестирования написанного софта.
Я сейчас обдумываю схожую задачу — организацию децентрализованной социальной сети, правда с совершенно другим подходом: не защита персональных данных от корпораций, а принципиальный отказ от персонального владения какими-либо данными вообще.
Вот совершенно согласен. К сожалению, мои познания в высшей математике (необходимые для разработки чего-то типа асимметричного или полностью гомоморфного шифрования) далеки от идеальных, а школьные эксперименты типа шифрования на XOR (и даже с рандомным зашумлением) вряд ли будут кому интересны.
Гораздо интереснее другое. Есть немало проверенных и отлаженных алгоритмов шифрования, применяемых для самых разных целей: PGP, зашифрованные сеансы в сети, децентрализованные анонимные сети, блокчейн и т.д…
Пусть эти алгоритмы будут «черными ящиками», но с очень хорошим описанием того, в каких случаях их можно и нужно применять, а в каких — нельзя. Вот хочется хороший, качественный мануал такого типа.
Ну и качественная библиотека, где все эти алгоритмы собраны, тоже не помешает. Тут на опеннете проскакивала новость про библиотеку Tink от Google, в которой собраны некоторые примитивы шифрования. Вот по идее нужно что-то такое, и с хорошим мануалом «для чайников», где буквально разжеваны понятия и примеры применения.