Этот пост призван помочь тем, кому, как и мне, внезапно стало тесно с Movie Maker.
Видеоредакторы почти не интересовали меня до прошлого месяца, пока с друзьями мы не задумали снять что-нибудь оригинальное к Новому году. Креативность наша ограничилась тем, чтобы, говоря терминами прежде мне неизвестными, применить эффект “Разделение экрана” (Split Screen). То есть реализовать нечто такое:
Напечатать подходящий корпус для своего устройства — это наверно самая популярная мысль при знакомстве любого изобретателя с технологией 3д печати. Но на практике всё оказывается не так просто как в рекламе 3д-принтера и под катом я немного подробней расскажу к каким выводам я пришёл в попытках сочинить удобную конструкцию корпуса.
Начинающему программисту важно не только изучать теорию и получать необходимые знания, но и практиковать основные навыки создания различных программ. Это особенно актуально для инженеров, студентов и талантливых детей.
Проблема в том, что для практического опыта недостаточно книжек и научных статей. Для эффективной практической работы требуется регулярное живое общение, интересный учебный план, обратная связь, а также самостоятельные задания с обязательной проверкой, и последовательный доступ к урокам. Речь пойдёт о проекте "Формула программиста".
В далеком 2012, когда цена на нефть еще была трехзначной, а трава зеленее, майкрософтом был выпущен .NET 4.5, а с ним и конструкция async/await. Про неё написано уже довольно много статей (Async в C#), а большинство разработчиков C# хорошо её изучили. Но все ли варианты использования были рассмотрены, можно ли выжать из await немного больше?
Самым очевидным вариантом использованием этой конструкции является ожидание завершения некой асинхронной операции. Первое, что приходит на ум — это ожидание ввода-вывода. Например, мы послали запрос клиенту и ожидаем ответа, тогда используя await мы сможем продолжить выполнение кода после получения ответа, а сам код при этом будет выглядеть синхронным. Но что если во время ожидания возникнет необходимость прервать выполнение этой операции? Тогда нам придется использовать CancellationToken, причем если таких операций несколько, то токены необходимо будет линковать или использовать один общий токен. При этом причина отмены будет скрыта от кода, использующего этот CancellationToken. Кроме отмены, код должен поддерживать обработку потери соединения, таймаута, возвращаемых ошибок и т.д.
В классическом варианте это выльется в использование CancellationToken для обработки отмены, try catch для обработки разрыва соединения и код анализа возвращенных данных, для оценки результата запроса. Но можно ли уместить всё это в единой парадигме? В этот статье я предлагаю рассмотреть альтернативный подход, основанный на событийной модели с использованием синтаксического сахара async/await.
С момента появления тасков в .NET прошло почти 6 лет. Однако я до сих пор вижу некоторую путаницу при использовании Task.Run() и Task.Factory.StartNew() в коде проектов. Если это можно списать на их схожесть, то некоторые проблемы могут возникнуть из-за dynamic в C#.
В этом посте я попытаюсь показать проблему, решение и истоки.
Вопрос знатокам: есть ли в данном примере проблема? Если да, то какая? Код компилируется, возвращаемый тип Task на месте, модификатор async при использовании await — тоже.
Думаете, речь идет о пропущенном ConfigureAwait? Хаха!
Вопрос на засыпку: какая из двух электронных библиотек выигрывает по уровню доступности, эффективности, индексации в поисковиках и т.д.— «КиберЛенинка», работающая по модели открытого доступа, или Национальная электронная библиотека (НЭБ), проект министерства культуры РФ с бюджетом более миллиарда рублей?
Центральный экономико-математический институт РАН по заказу Фонда развития интернет-инициатив провёл специальное исследование и опубликовал отчёт с оценкой экономического эффекта от реализации проекта НЭБ, сравнивая его с той же «КиберЛенинкой».
В этой статье мы поговорим о проектировании архитектуры и создании мобильного приложения на основе паттерна MVP с использованием RxJava и Retrofit. Тема получилась довольно большой, поэтому подаваться будет отдельными порциями: в первой мы проектируем и создаем приложение, во второй занимаемся DI с помощью Dagger 2 и пишем тесты unit тесты, в третьей дописываем интеграционные и функциональные тесты, а также размышляем о TDD в реалиях Android разработки.
При решении задач комбинаторики часто возникает необходимость в расчете биномиальные коэффициентов. Бином Ньютона, т.е. разложение также использует биномиальные коэффициенты. Для их расчета можно использовать формулу, выражающую биномиальный коэффициент через факториалы: или использовать рекуррентную формулу: Из бинома Ньютона и рекуррентной формулы ясно, что биномиальные коэффициенты — целые числа. На данном примере хотелось показать, что даже при решении несложной задачи можно наступить на грабли.
На хабра-сайтах не раз (см. тут и здесь) выходили статьи о том, как защитить себя от замены sim-карты. Но, не смотря на то, что все эти советы — дельные, в них есть одно слабое и при этом — очень значимое место, которое с юридической точки зрения называется добросовестность одной из сторон, т.е. провайдера.
Опишу на своём реальном опыте, так как практика — лучшее подтверждение теории, со ссылкой на действующие нормативно-правовые акты, а также ряд прецедентов, которые были сформированы за последние годы.
Цель статьи простая — дать людям, не имеющим специальных юридических знаний, краткий список норм, спасающих от произвола операторов сотовой связи, в частности, МТС, потому как заменить sim могут не только без вашего ведома, но даже без поддельного паспорта и просто — по сговору с сотрудником, т.е. технически тут помочь нечем.
При подготовке искового изучил несколько десятков форумов, на которых повторялись типовые вопросы по нормативной базе. Попробовал изложить их в систематизированном виде.
Привет, Geektimes! Многие до сих пор продолжают утверждать, что твердотельные накопители ненадежные, поскольку имеют ограниченное количество циклов перезаписи и больше подвержены износу, нежели HDD. Сейчас большинство мифов об этом уже развенчаны, однако некоторые советы по оптимизации Windows для работы с SSD могут оказаться полезными.
Многие трюки по оптимизации устарели с того момента, когда SSD были слишком дорогими и ограничивались максимальной емкостью в 128 ГБ. Тем более в погоне за более высокой производительностью накопителя вы можете затронуть другие процессы и в конечном итоге сделать только хуже. Поэтому очень важно знать, какие советы действительно окажутся полезными и будут работать, а какие в современных реалиях бестолковые и не имеют практического смысла.
Целью создания этого списка правил является попытка установить стандарты написания кода на C#, которые были бы удобными и практичными одновременно. Само собой, мы практикуем то, что создали. Эти правила являются одним из тех стандартов, которые лежат в основе нашей ежедневной работы в AvivaSolutions. Не все эти правила имеют четкое обоснование. Некоторые из них просто приняты у нас в качестве стандартов.
Статический анализатор кода VisualStudio (который также известен как FxComp) и StyleCop могут автоматически применять многие из правил кодирования и оформления путем анализа скомпилированных сборок. Вы можете сконфигурировать их таким образом, чтобы анализ производился во время компиляции или был неотъемлемой частью непрерывной или ежедневной сборки. Этот документ просто добавляет дополнительные правила и рекомендации, но его вспомогательный сайт www.csharpcodingguidelines.com предоставляет список правил анализа кода, необходимых в зависимости от того, с какой базой кода вы работаете.
Перевод дискуссии "How to peel the labels from marmalade jars using Mathematica?" с сайта Mathematica at StackExchange.
Код, приведенный в статье, можно скачать здесь (~31 МБ).
Выражаю огромную благодарность Кириллу Гузенко KirillGuzenko за помощь в переводе и подготовке публикацииКак можно выделить содержимое этикетки с указанной ниже банки (точка съёмки кадра, геометрия банки, её содержимое — всё это нам неизвестно),
чтобы получить нечто подобное — ту же самую этикетку в том виде, в каком она была до того, как оказалась на банке?
Основная идея заключается в следующем:
Находим этикетку.
Находим границы этикетки.
Находим отображение координат пикселей изображения на цилиндрические координаты.
Трансформируем изображение с использованием найденного отображения.
Предлагаемый нами алгоритм работает только для изображений, в которых:
Этикетка ярче фона (это нужно для обнаружения этикетки).
Этикетка прямоугольная (это нужно для того, чтобы оценить качество отображения).
Банка должна занимать вертикальное положение (это нужно для того, чтобы сохранить простую форму функции отображения).
Банка должна быть цилиндрической (это нужно для того, чтобы сохранить простую форму функции отображения).
Следует заметить, что алгоритм модульный. То есть вы можете дописать свой алгоритм обнаружения этикетки, который не будет требовать тёмного фона, или можете написать свою функцию оценки качества отображения, которая позволит работать с овальными или многоугольными этикетками.
Получившийся в конечном итоге алгоритм работает полностью автоматически (однако есть опция ручного задания границ банки), то есть берёт исходное изображение, после чего выдаёт изображение с сеткой и этикетку.
Перевод поста Джона Маклуна (Jon McLoone) "10 Tips for Writing Fast Mathematica Code".
Выражаю огромную благодарность Кириллу Гузенко KirillGuzenko за помощь в переводе.Пост Джона Маклуна рассказывает о распространенных приемах ускорения кода, написанного на языке Wolfram Language. Для тех, кто заинтересуется этим вопросом мы рекомендуем ознакомиться с видео «Оптимизация кода в Wolfram Mathematica», из которого вы подробно и на множестве интересных примеров узнаете о приемах оптимизации кода, как рассмотренных в статье (но более детально), так и других. Когда люди говорят мне, что Mathematica недостаточно быстро работает, обычно я прошу посмотреть код и часто обнаруживаю, что проблема не в производительности Mathematica, а в её не оптимальном использовании. Я хотел бы поделиться списком тех вещей, на которые я обращаю внимание в первую очередь при попытке оптимизировать код в Mathematica.
1. Используйте числа с плавающей точкой, и переходите к ним на как можно более ранней стадии.
Самая распространённая ошибка, которую я замечаю, когда разбираюсь с медленным кодом — задание слишком высокой точности для данной задачи. Да, неуместное использование точной символьной арифметики — самый распространенный случай.
У большинства вычислительных программных систем нет такого понятия, как точная арифметика — для них 1/3 это то же самое, что и 0,33333333333333. Это различие может играть большую роль, когда вы сталкиваетесь со сложными и неустойчивыми задачами, однако для большинства задач числа с плавающей точкой вполне удовлетворяют нуждам, и что важно — вычисления с ними проходят значительно быстрее. В Mathematica любое число с точкой и с менее чем 16 цифрами автоматически обрабатывается с машинной точностью, потому всегда следует использовать десятичную точку, если в данной задаче скорость важнее точности (например, ввести треть как 1./3.). Вот простой пример, где работа с числами с плавающей точкой проходит почти в 50,6 раза быстрее, чем при работе с точными числами, которые лишь затем будут переведены в числа с плавающей точкой. И в этом случае получается такой же результат.
Представьте ситуацию, что в один прекрасный момент ваш жесткий диск/флешка/карта памяти перестает нормально работать, и доступ к данным привычным образом уже не получить. Для тех, кто не делает бэкапы, наступает непростое нервное время. В панике народ начинает искать программы для восстановления данных и находит их. Большинство из них бесплатны, что не может не радовать человека в наше непростое время. Но все ли бесплатные программы так эффективно восстанавливают данные? Мы провели пару тестов нескольких популярных программ, и вот что у нас получилось.
Весь функционал системы находится в плагинах. Если вам чего-то не хватает, вы можете легко написать собственный плагин, который будет взаимодействовать с нужным железом, интернет-сервисами или делать что-нибудь еще. Чтобы облегчить написание собственных плагинов, я создал небольшой проект, который можно использовать как пример.
Этот демо-плагин собирает информацию с датчиков температуры/влажности nooLite и отображает полученную информацию в веб-интерфейсе. Результат выглядит примерно так:
график изменения температуры за последние двое суток
текущая температура в комнатах (точнее, последние значения, полученные с датчиков)
Предлагаю вашему вниманию слегка хардкорную статью о том, как писался этот плагин. Там по шагам объясняется процесс разработки собственного плагина для умного дома и приводятся ссылки на GitHub, по которым можно скачать готовый код и запустить его. В этой статье вы узнаете, как создать заготовку плагина и запускать ее в режиме отладки, как настроить автоматическое создание таблиц в системной БД и сохранять туда данные. И, наконец, вы узнаете, как получать информацию о температуре и влажности с датчиков (если интересно только это, то листайте статью сразу в самый конец).
Здравствуйте, хочу поделиться небольшим практическим исследованием возможности применения Raspberry Pi model B 512mb в качестве медиаплеера и IPTV плеера HD контента. Также небольшие рассуждения о подобном идеальном устройстве.
Поиск не давал конкретных ответов, имелись разнящиеся данные, говорящие скорее о сырости и ГИКоватости подобного применения одноплатного компьютера.
Лет пять назад у меня появилась мечта самому сделать домашний мини сервер. Изучив существующие на то время железки, я остановил свой выбор на материнской плате Intel D945GSEJT с процессором Atom N270. Корпуса, которые были в продаже для этой материнской платы мне совершенно не понравились, по этому я привинтил все это дело к картонке вместе с жестким диском, поставил Хакинтош и повесил за шкаф. Все это дело провисело пару лет, интенсивно качая и раздавая файлы и интернет по всей квартире.
Все бы хорошо, но быстродействия этого агрегата хватало только на дать и взять, никакой речи о проигрывании, или конвертировании HD видео, или помощи при тонировании 3D графики речи быть не могло. А хотелось бы.
Мысль сделать домашний мощный-мини-сервер заела меня окончательно в начале этого года. Просто спать по ночам не мог. И что бы избавиться от этой навязчивой идеи было решено:
1. Сделать не так как у всех
2. Сделать самый маленький Desktop из ныне существующих
3. Сделать проект не индивидуальным, а с учетом промышленных стандартов, а так же с обоснованием адекватной стоимости дальнейшего серийного производства.
Автор программы f.lux выпустил новую версию f.lux 3 (бета). Это очень полезная программа для тех, кто часто работает за монитором при искусственном освещении, то есть вечером и ночью.
Программа изменяет цветовой профиль монитора, в зависимости от времени суток. Ночью устанавливаеются тёплые цветовые тона (2700 K), которые соответствуют искусственному освещению в квартире, днём — холодные (6500 K), соответствующие дневному свету.
Времена, когда крупные рекординговые компании душили пиратов, принимая один законопроект за другим, похоже скоро канут в Лету. Благодаря организации под названием «Center for Copyright Infringement» (к сожалению, не знаю точного перевода) появилась новая инициатива.
Исходя из ее положений, при скачивании нелицензионного контента пользователю будет вынесено несколько предупреждений, также в качестве одного из типов предупреждений ему могут порезать скорость доступа в Интернет. Крупные американские провайдеры, такие как AT&T, Comcast и Time Warner уже подписались под данной инициативой.
Под катом можно посмотреть красивую инфографику на буржуйском, которая, возможно, поможет лучше понять «масштаб трагедии».