Search
Write a publication
Pull to refresh
0
Maxim Tkachenko @BenderRRread⁠-⁠only

User

Send message

Копи деньги смолоду или пара утверждений, легко проверяемых в Excel

Reading time2 min
Views210K
На хабре регулярно появляются посты, посвященные системам личных финансов. Системы эти бывают простенькие, навороченные, красивые и т.д. Но! Большинство из них почему-то напрочь игнорирует такую простую штуку как сложные проценты (простите за каламбур). А ведь это основа личных финансов.

Приведу два простых примера, иллюстрированных табличками в Excel. Для затравки вопрос: имеются два ровесника: Вася и Петя. Вася фрилансер и ему 22 года. Он начал откладывать по штуке долларов в год и откладывал их до 30 лет (всего 8 лет). Потом родился ребенок, с деньгами стало туговато и откладывать он больше не смог. Петя же наоборот, в начале карьеры откладывать не мог, но в 30 лет он стал тимлидером и наконец-то смог относить в банк по той же штуке ежегодно. Делал он это аккурат до выхода на пенсию, т.е. до 65 лет (итого 36 лет). Вопрос: у кого в 65 лет денег на счету больше? Правильный ответ: конечно же у Васи.
Читать дальше →

Украшательство Android-телефона: рецепты красивых рабочих столов

Reading time1 min
Views156K
Одним из плюсов телефонов на базе Android является возможность полной кастомизации интерфейса под себя. Благо всевозможных виджетов под систему существует огромное количество. Причем, их настолько много, что пользователи гуглофонов иногда напоминают скульпторов или художников – попробуй совмести все нужное так, чтобы получилось красиво, да еще и учти все нюансы настроек. Одним словом, настройка требует времени, вкуса и недюжинного воображения.

Специально для тех, кто делает первые шаги в настройке своего телефона/планшета, существует отличный сайт Mycolorscreen.com (странно, что о нем не упоминали на хабре), позволяющий посмотреть на примеры кастомизации других пользователей. Причем сайт изобилует не просто примерами, но и детальными рецептами того, как приготовить такой стол самому.



Под катом еще несколько примеров.
Читать дальше →

Призраки в ROM

Reading time3 min
Views19K


Старый компьютер иногда хранит совершенно неожиданные секреты. Ребята с сайта NYResistor опубликовали историю, как они героическими усилиями восстановили несколько цифровых фотографий из флэш-памяти доисторического компьютера Macintosh SE, который валялся на обочине дороги в Бруклине. Неизвестных людей на этих снимках они назвали «призраками в ROM».
Читать дальше →

Инструкция по гарантийной замене Amazon Kindle

Reading time5 min
Views43K
На Хабре уже была статья о гарантийном возврате Amazon Kindle, но я хочу ее немного расширить и дополнить, так что это будет вторая версия.

Для тех, кто не в курсе, поясняю, что компания Amazon осуществляет гарантийную бесплатную замену своей знаменитой читалки, даже если она повредилась по вашей вине (чаще всего — неосторожное падение и разбитый экран в результате). Вы могли купить читалку напрямую в Амазоне, а могли и в любом другом магазине — дела это не меняет. Однако, есть трудности: бесплатная замена осуществляется только по США и Европе, так что если вы житель прочих окрестностей, добро пожаловать под
хабракат

Duokan. Или как читать DJVU на Kindle

Reading time2 min
Views68K
Являясь одним из первых владельцев Kindle 3 в России, я чаще всего слышал вопрос “Можно ли на Kindle читать DJVU?”. Если кратко, то ответ – “да, можно”. Но все не так просто, как кажется. Сегодня я расскажу как это можно реализовать.
Читать дальше →

Ускорение загрузки Windows for fun and profit

Reading time4 min
Views811K
image Пожалуй, начну с того, что если перегружаться 15 раз в год, то любой «тюнинг» процесса загрузки отнимает больше времени, чем будет выиграно на перезагрузках за все время жизни системы. Однако, спортивный интерес берет свое, тем более, что люди интересуется процессом оптимизации быстродействия. А загрузка оказалась самым очевидным кандидатом в примеры того, как на мой взгляд должен выглядеть этот самый процесс. Сразу скажу, что грузиться будем с 5400 rpm винта, грузиться будем в «рабочую» систему: помимо недобитой вендорской крапвари там стоит еще куча всякого типа вижуал студии, антивируса, скайпа, стима, гуглапдейтера и пр…

Про то, почему отключение pagefile-а скорее вредно, чем полезно — как нибудь в другой раз, а пока…
Под катом много однообразных картинок и немножко унылого текста

Игровая приставка на базе Android. Подробный мануал

Reading time4 min
Views112K
Не так давно один мой знакомый, приобретя себе китайскую консоль (инфо и инфо) на Android 4.0 и установив эмулятор PS1, не мог не поделиться со мной таким «счастьем». Такая возможность использовать свое Android устройство сильно заинтересовала и я решил не только испытать все прелести эмулятора на своем смартфоне, но и пойти немного дальше…

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

Выразительный JavaScript: Введение

Reading time9 min
Views470K


Перевод книги Marijn Haverbeke "Eloquent JavaScript". Лицензия Creative
Commons attribution-noncommercial license
. Код предоставляется под лицензией MIT.


Содержание



Читать дальше →

Изменение кода системных сборок или «утечка» .Net Framework 5.0

Reading time17 min
Views36K
Здесь я продемонстрирую возможность, которая по своей сути — самый настоящий хак. Вопрос, зачем это может понадобиться? На самом деле целей для этого может быть огромное множество. Итак наша задача — изменить код библиотеки mscorlib таким образом, чтобы все программы, которые ей пользуются, получили эти изменения. Не рантайм, конечно, а во время старта (для runtime необходимо проделать другие вещи, и тут надо оговориться что изменения эти не должны поломать текущие состояния библиотеки). Mscorlib я взял как пример, потому что она есть у всех на компьютере. Но можно хакать любую другую.

Все мы знаем, что для того, чтобы не было «ада dll», Microsoft помимо обычных версий и названия библиотек, дали возможность подписывать сборки ключом, public key которой гарантирует что конкретная сборка «пришла» от конкретного разработчика, а не от какого-то другого. Поэтому, если мы хотим по какой-то вполне добросовестной причине изменить код существующей библиотеки т.о., чтобы она загрузилась в чужой процесс и при этом ключик public key остался тем же, у нас этого не получится. Потому что мы не сможем ее подписать, у нас нет закрытого ключа.

Наша мини цель, чтобы программа вывела на консоль текст:



Читать дальше →

Как подружить Android, Visual Studio и Parallels Desktop

Reading time5 min
Views20K

Введение


Несколько месяцев назад, прочитав на Хабре статьи про кросплатформенную разработку с помощью Mono и Xamarin, вдохновился написанием собственных приложений на платформы Android, iOS и Windows Phone. Через некоторое время, найдя работу в компании, которая как раз и занимается разработкой приложений с помощью Xamarin, стал гордым обладателем iMac и понял, что хорошо бы кроме девайса с Android’ом на борту (да, у меня прекрасно уживается продукция Apple и Google, хотя предпочтение я отдаю первым) иметь на iMac эмулятор Android (так как держать весь зоопарк устройств для своих проектов не представляется возможным).
Читать дальше →

Разрабатываем хабраклавиатуру под iOS

Reading time13 min
Views33K

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

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

С выходом iOS 8 Apple открывает новый API, который позволяет разрабатывать расширения к приложениям. Клавиатура (Custom Keyboard) является одним из представителей таких расширений. О ней и пойдет речь. В статье вы узнаете о том, какие возможности, ограничения и баги предоставляет новый API, как разработать хабраклавиатуру, и как сделать так, чтобы ваша клавиатура появилась в AppStore, а следовательно и на устройствах ваших пользователей.
Читать дальше →

Улучшаем LINQ для работы с IReadOnly-коллекциями

Reading time7 min
Views17K
Как известно, при использовании интерфейса IEnumerable<> там, где подразумевается коллекция, могут случаться проблемы (см. например Проблемы использования IEnumerable и LINQ против LSP). К счастью, в .NET v4.5 в 2012-м году (немного поздновато, но лучше поздно, чем никогда), появились интерфейсы IReadOnlyCollection<>, IReadOnlyList<>, IReadOnlyDictionary<> (далее буду их обобщённо называть IReadOnly-интерфейсы). В отличие от IEnumerable<>, IReadOnly-интерфейсы дают возможность достаточно и без лишних требований обозначать функциональность коллекции, что и позволяет их рекомендовать для использования вместо IEnumerable<> везде, где подразумевается чтение коллекции. Но тут встречается одно затруднение. Одним из важных компонентов, потребляющим и создающим коллекции, является LINQ и, особенно, его часть «LINQ к объектам». К сожалению, IReadOnly-интерфейсы появились через 5 лет после LINQ, и в нём не используются. Все входные и выходные коллекции LINQ-операций имеют базовый тип IEnumerable<>, исходя из ограниченных возможностей которого, многие операции подразумевают лишние затраты: полный последовательный перебор или даже создание промежуточных копий входных коллекций. Более того, возвращая из операций тот же IEnumerable<>, LINQ требует при дальнейшем использовании результата опять использовать полный перебор и создание промежуточных копий. В связи с этим, у меня давно зрела мысль «подружить» LINQ с IReadOnly-интерфейсами.
Читать дальше →

Сверхбыстрое распознавание речи без серверов на реальном примере

Reading time10 min
Views334K

В этой статье я подробно расскажу и покажу, как правильно и быстро прикрутить распознавание русской речи на движке Pocketsphinx (для iOS порт OpenEars) на реальном Hello World примере управления домашней техникой.
Почему именно домашней техникой? Да потому что благодаря такому примеру можно оценить ту скорость и точность, которой можно добиться при использовании полностью локального распознавания речи без серверов типа Google ASR или Яндекс SpeechKit.
К статье я также прилагаю все исходники программы и саму сборку под Android.

Прикручиваем Pocketsphinx к своему Андроиду

Как применять IDisposable и финализаторы: 3 простых правила

Reading time7 min
Views64K

От переводчика


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

Fast app resume для Windows Phone 8

Reading time7 min
Views6.5K
Fast App Resume

В продолжение последней статьи про интеграцию в хаб «Фотографии» сегодня раскроем тему Fast Application Resume, которая появилась в WP8, и рассмотрим, для чего он нужен и какие преимущества дает использование этой функции, а также различные сценарии использования App Resume.
Читать дальше →

Singleton (Одиночка) или статический класс?

Reading time6 min
Views197K
Статья будет полезна в первую очередь разработчикам, которые теряются на собеседованиях когда слышат вопрос «Назовите основные отличия синглтона от статического класса, и когда следует использовать один, а когда другой?». И безусловно будет полезна для тех разработчиков, которые при слове «паттерн» впадают в уныние или просят прекратить выражаться :)

Что такое статический класс?


Для начала вспомним что такое статический класс и для чего он нужен. В любом CLI-совместимом языке используется следующая парадигма инкапсуляции глобальных переменных: глобальных перменных нет. Все члены, в том числе и статические, могут быть объявлены только в рамках какого-либо класса, а сами классы могут (но не должны) быть сгруппированы в каком-либо пространстве имен. И если раньше приходилось иммитировать поведение статического класса с помощью закрытого конструктора, то в .NET Framework 2.0 была добавлена поддержка статических классов на уровне платформы. Основное отличие статического класса от обычного, нестатического, в том, что невозможно создать экземпляр этого класса с помощью оператора new. Статические классы по сути являются некой разновидностью простанства имен — только в отличие от последних предназначены для размещения статических переменных и методов а не типов.

Готовимся к собеседованию дальше?

Принцип самурая

Reading time3 min
Views7.4K
В мире разработки софта существует много идей и «метафор», позаимствованных из других, казалось бы, не сильно связанных с программированием областей. Можно вспомнить паттерны проектирования, позаимствованные у архитекторов, или понятие «технического долга», пришедшее из финансовой индустрии, да и «эффектом второй системы» страдают проектировщики любых систем, а не только программных (*). Все это упрощает коммуникацию между разработчиками или между разработчиками и заказчиками, а также упрощает понимание той или иной проблемы в разработке ПО.

Еще одной метафорой, или скорее принципом разработки, является «принцип самурая», призванный описать «контракт» между функцией и вызывающим ее кодом и заключается в следующем. Любая функция, реализующая некоторую единицу работы должна следовать тому же кодексу чести «бусидо», по которому живет любой самурай. Так, самурай не будет выполнять никаких заданий, противоречащих его «кодексу чести» и если к нему подойти с «непристойным» предложением, то он снесет вам башку раньше, чем вы успеете глазом моргнуть. Но если уж самурай возьмется за дело, то можно быть уверенным в том, что он доведет его до конца (**).
Читать дальше →

Кроссплатформенная разработка для мобильных с Xamarin

Reading time11 min
Views61K

Введение


Совсем недавно компания Xamarin анонсировала выход новой версии своего инструментария для кроссплатформенной разработки мобильных приложений, но вменяемых статей на русском по этой тематике так и нет. На Хабре появился небольшой обзор, не связанный с кодингом, там же была пара попыток рассказать об этом чуть подробнее, но дальше процесса создания Hello World приложения дело не зашло. А жаль. В этот раз мы попробуем исправить это досадное недоразумение.
Читать дальше →

Подробно о Xamarin

Reading time12 min
Views447K
Вы неплохо владеете языком C# и платформой .NET в целом? Вам надоело стоять в стороне и смотреть, как кто-то другой пишет крутые мобильные приложения вместо вас? У меня есть для вас кое-что интересное! То, что поможет вам изменить сложившуюся ситуацию и позволит писать отличные мобильные приложения, не требуя отдельного изучения Objective-C и Java. Я расскажу вам о продукте Xamarin. Подробно и правдиво.

Что это?



Xamarin — это фреймворк для кроссплатформенной разработки мобильных приложений (iOS, Android, Windows Phone) с использованием языка C#. Идея очень простая. Вы пишете код на своем любимом языке, с применением всех привычных для вас языковых фич типо LINQ, лямбда-выражений, Generic`ов и async`ов. При этом вы имеете полный доступ ко всем возможностям SDK платформы и родному механизму создания UI, получая на выходе приложение, которое, строго говоря, ничем не отличается от нативных и (по крайней мере по заверениям) не уступает им в производительности.

Фреймворк состоит из нескольких основных частей:
Читать дальше

Information

Rating
Does not participate
Location
Днепр, Днепропетровская обл., Украина
Date of birth
Registered
Activity