Как стать автором
Обновить
0
0

.NET, Embedded

Отправить сообщение

YouTubeDrive: хранение файлов на YouTube

Время на прочтение9 мин
Количество просмотров39K


Хостинг неограниченного размера? Звучит как нечто фантастическое и невозможное по законам природы. Примерно как вечный двигатель. Но что, если такое возможно? (не вечный двигатель, конечно, а неограниченный хостинг).

Если подумать, ведь бесплатное хранилище неограниченного размера предоставляют десятки интернет-сервисов, от соцсетей до фотохостингов. Например, ограничение YouTube на размер одного видеоролика — 12 часов или 256 ГБ, но на количество видеороликов ограничений нет.
Читать дальше →
Всего голосов 59: ↑48 и ↓11+45
Комментарии112

Как использовать свойство Exception.Data, чтобы логировать дополнительные сведения об исключениях

Время на прочтение3 мин
Количество просмотров4.9K

Привет! Я Антон Антонов, Full Stack Developer. Расскажу, что помогает мне исправлять ошибки в коде.

Читать далее
Всего голосов 12: ↑12 и ↓0+12
Комментарии1

Принципы юнит-тестирования. Часть первая

Время на прочтение10 мин
Количество просмотров50K

Привет! Меня зовут Владимир, я разработчик команды продукта «Сервис персонализации» в SM Lab. В этом посте я хотел бы рассказать (а в комментариях — обсудить) один очень важный и полезный инструмент разработчика — юнит-тесты.

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

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

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

При подготовке материала очень помогла книга Владимира Хорикова (@vkhorikov ) «Принципы юнит-тестирования». Рекомендую ее всем, кто хочет еще глубже погрузиться в эту тему.

Итак, поехали.

Читать далее
Всего голосов 26: ↑25 и ↓1+29
Комментарии17

Способы хранения графа в памяти компьютера

Время на прочтение4 мин
Количество просмотров31K

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

Читать далее
Всего голосов 39: ↑36 и ↓3+42
Комментарии19

Теория графов. Термины и определения в картинках

Время на прочтение5 мин
Количество просмотров192K

В этой статье мы познакомимся с основными терминами и определениями Теории графов. Каждый термин схематично показан на картинках.

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

Теория графов
Всего голосов 17: ↑15 и ↓2+16
Комментарии8

Навигация в кроссплатформенном приложении на .NET Core с сохранением состояния на диск на примере ReactiveUI и Avalonia

Время на прочтение18 мин
Количество просмотров21K



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


MVVM фреймворк ReactiveUI предлагает сохранять состояние приложения путём сериализации графа моделей представления в момент приостановки программы, при этом механизмы определения момента приостановки различаются для фреймворков и платформ. Так, для WPF используется событие Exit, для Xamarin.Android — ActivityPaused, для Xamarin.iOS — DidEnterBackground, для UWP — перегрузка OnLaunched.


В данном материале рассмотрим использование ReactiveUI для сохранения и восстановления состояния ПО с GUI, включая состояние роутера, на примере кроссплатформенного GUI фреймворка Avalonia. Материал предполагает наличие базовых представлений о шаблоне проектирования MVVM и о реактивном программировании в контексте языка C# и платформы .NET у читателя. Последовательность действий, описанная в статье, применима к ОС Windows 10 и Ubuntu 18. Код проекта, описанного в статье, доступен на GitHub.

Приступим!
Всего голосов 31: ↑30 и ↓1+29
Комментарии0

Сбор контекстной информации для логирования

Время на прочтение10 мин
Количество просмотров15K

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

Читать дальше →
Всего голосов 14: ↑12 и ↓2+10
Комментарии13

Кроссплатформенная разработка с помощью .NET, реактивного программирования, шаблона MVVM и кодогенерации

Время на прочтение13 мин
Количество просмотров26K
Reactive MVVM and .NET Standard

Сегодня платформа .NET является по-настоящему универсальным инструментом – с её помощью можно решать широчайший круг задач, включая разработку прикладных приложений для популярных операционных систем, таких, как Windows, Linux, MacOS, Android и iOS. В настоящей статье рассмотрим архитектуру кроссплатформенных .NET приложений с использованием шаблона проектирования MVVM и реактивного программирования. Познакомимся с библиотеками ReactiveUI и Fody, научимся реализовывать интерфейс INotifyPropertyChanged с помощью атрибутов, затронем основы AvaloniaUI, Xamarin Forms, Universal Windows Platform, Windows Presentation Foundation и .NET Standard, изучим эффективные инструменты для модульного тестирования слоёв модели и модели представления приложения.

Материал является адаптацией статей "Reactive MVVM For The .NET Platform" и "Cross-Platform .NET Apps Via Reactive MVVM Approach", опубликованных автором ранее на ресурсе Medium. Примеры кода доступны на GitHub.
Читать дальше →
Всего голосов 20: ↑20 и ↓0+20
Комментарии7

Тайная жизнь сим-карты: кому принадлежит ваш телефонный номер и при чем здесь электронная подпись?

Время на прочтение8 мин
Количество просмотров87K

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

Вы задавались вопросом, кому принадлежит ваш номер телефона? На номер завязано многое — доступы к соцсетям и мессенджерам, на него приходят СМС авторизации в банковских приложениях, телефонный номер привязан к сайту Госуслуг…

Пока мы работали над нашим расследованием про «пробив», мы обнаружили такую  нелегальную услугу, как перевыпуск чьей-либо сим-карты без ведома владельца телефонного номера. На самом деле, как нам кажется, поигрывать с этой опцией могут и сами операторы. Вспомним нашумевший кейс Романа Доброхотова (признан иноагентом в РФ), чей номер испарился из баз МТС; или даже внезапные ночные отключения сервисов на телефонных номерах у активистов

Пока абонент отдыхал…

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

Абонент МТС из Москвы поехала отдыхать в теплые края, где с ее сим-картой произошли неполадки, и она перестала работать. В это время некие злоумышленники в салоне сотовой связи получили дубликат этой сим-карты (что, вероятно, и явилось причиной прекращения работы основной сим-карты), а с его помощью — доступ к онлайн-банку. После чего аккуратными суммами, не вызывающими подозрений у банка, вывели со счета средства на общую сумму, явно имеющую значение для абонента.

Читать далее
Всего голосов 112: ↑111 и ↓1+138
Комментарии248

Цифровая линия задержки аудиосигнала PT2399

Время на прочтение7 мин
Количество просмотров14K

Привет, Хабр! Сегодня расскажу про очень доступную, дешёвую и популярную микросхему, ставшую и продолжающую становиться основой для множества звуковых эффектов. Соберу на её основе эффект эхо (delay) и ревербератор — имитацию помещения или пространства.
Здесь ждут подробности, с видео и примерами звучания.
Всего голосов 38: ↑37 и ↓1+52
Комментарии10

Как спрятать фото в другом фото

Время на прочтение3 мин
Количество просмотров23K

Сокрытие сообщения в другом сообщении относится к области стеганографии. В этой статье мы будем прятать одну фотографию внутри другой. В результате при передаче такое фото будет выглядеть как обычный снимок, но по факту содержать два. Второй при этом можно будет извлечь при помощи внешнего инструмента.
Читать дальше →
Всего голосов 51: ↑39 и ↓12+51
Комментарии35

Лайфхаки молодому родителю или воспитание ребенка «по-айтишному»

Время на прочтение6 мин
Количество просмотров17K

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

В этой статье я расскажу о своем опыте, но дети и родители уникальные, поэтому не все будут согласны, и не всем это может помочь. Читать данную статью требуется с улыбкой :)

Мы семья системных аналитиков, поэтому к воспитанию ребенка мы подошли "по-айтишному" или системно. Что это значит? Ребенок (система) должна быть правильно спроектирована и настроена, чтобы работать стабильно и штатно. Опустим часть, что природа правильно спроектировала ребёнка с нужным количеством хромосом, рук, ног и тд. Перейдем к части правильной настройки или воспитанию.

Читать далее
Всего голосов 22: ↑15 и ↓7+13
Комментарии53

Где хранить секретные файлы на случай БП

Время на прочтение7 мин
Количество просмотров39K


Всю информацию человека можно разделить по степени важности, примерно так:

  • системные бэкапы (важность 1/10);
  • текущие рабочие файлы (3);
  • личный архив: фотографии, видео (6);
  • копии бумажных документов (8);
  • секреты: ключи, пароли, кошельки (10/10).

Терять файлы всегда неприятно. Поэтому мы делаем резервные копии. Но степень параноидальности усилий по защите информации зависит от важности. Есть категория файлов, которую нельзя терять ни при каких обстоятельствах, даже в случае БП. Это наши главные секреты, то есть ключи, пароли и кошельки.
Читать дальше →
Всего голосов 29: ↑27 и ↓2+37
Комментарии13

Как оплатить VPN без Visa и Mastercard

Время на прочтение2 мин
Количество просмотров78K

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

Читать далее
Всего голосов 23: ↑17 и ↓6+21
Комментарии124

11 Aтрибутов Хорошего Firmware

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров19K

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

Читать далее
Всего голосов 41: ↑36 и ↓5+46
Комментарии115

Сделайте Linux похожим на Windows 95

Время на прочтение2 мин
Количество просмотров30K

Темы и наборы иконок Linux, вдохновлённые другими операционными системами, существуют с тех пор, как в Linux появился графический интерфейс. Иногда эти темы становятся очень похожими на оригинал. Но… Что, если бы вы могли сделать свой рабочий стол Linux почти таким же, как Windows 95?

Читать далее
Всего голосов 57: ↑56 и ↓1+71
Комментарии82

Как LINQ, только быстрый и без аллокаций

Время на прочтение4 мин
Количество просмотров24K

Кому не нравится LINQ в C#? Встроенная и уже достаточно старая фича языка C# и рантайма .NET.

Но можем ли мы сделать более эффективную версию LINQ, чтобы и быстрее, и не кушало памяти? Давайте попробуем!

Читать далее
Всего голосов 47: ↑47 и ↓0+47
Комментарии28

Что нужно знать, чтобы быть синьором?

Время на прочтение11 мин
Количество просмотров90K

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

Ну-ка, ну-ка...
Всего голосов 165: ↑147 и ↓18+151
Комментарии258

Загрузочный диск Windows PE своими руками

Время на прочтение36 мин
Количество просмотров131K
Сисадмину или мастеру сервисного центра, да и просто в хозяйстве на всякий случай помогает в работе загрузочная флешка с набором полезных программ, и в интернете можно найти полно готовых решений с «кучей» софта на все случаи в жизни. Но каждый, кто пользовался чужими готовыми вариантами LiveCD, рано или поздно задумывался о том, что по факту используется лишь малая часть приложений. Весь же остальной ненужный груз софта, который порой может составлять более 98% всего набора LiveCD, лишь мешает работать. Почему? Потому что LiveCD загружается прямиком в оперативную память, и чем больше объем LiveCD, тем больше ожидания загрузки, а если ещё и попался древний компьютер, то LiveCD может и вовсе не загрузится от нехватки памяти. И что же делать? Сделать свой собственный LiveCD! В этой статье я расскажу то, чего вы не найдете даже в гугле.
Читать дальше →
Всего голосов 37: ↑36 и ↓1+40
Комментарии72

Физически неклонируемые функции, основанные на частотах

Время на прочтение5 мин
Количество просмотров5.7K

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

Читать далее
Всего голосов 41: ↑41 и ↓0+41
Комментарии12

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность