Как стать автором
Обновить
1
0
Данил Скачков @xVir

Пользователь

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

Конвертирование шрифтов на WebFont.ru

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

Всем привет!

Полтора года назад вышла статья о тестировании конвертеров шрифтов, в которой мы сказали, что будем делать свой конвертер. И вот неделю назад он был успешно запущен.
Читать дальше →
Всего голосов 14: ↑14 и ↓0+14
Комментарии9

9 фактов, которые знают программисты, и не знают все остальные

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

Факт 1


Под капотом самых критичных программ, которые вы используете на ежедневной основе (Mac OS X или Facebook) содержится ужасное количество хаков и костылей, которые с трудом уживаются друг с другом. Это как если бы вы разобрали боинг 747 и увидели, что топливопровод держится вешалкой для одежды, а шасси смотаны изолентой.

Бен Черри
Читать дальше →
Всего голосов 237: ↑164 и ↓73+91
Комментарии88

Чисто-функциональный REST API на Finagle/Finch

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


История библиотеки Finch началась около года назад «в подвалах» Конфеттина, где мы пытались сделать REST API на Finagle. Не смотря на то, что finagle-http сам по себе очень хороший инструмент, мы стали ощущать острую нехватку более богатых абстракциий. Кроме того, у нас были особые требования к этим самым абстракциям. Они должны были быть неизменяемыми (immutable), легко композируемыми (composable) и в тоже время очень простыми. Простыми как функции. Так появилась библиотека Finch, которая представляет собой очень тонкий слой функций и типов поверх finagle-http, который делает разработку HTTP (micro|nano)-сервисов на finagle-http более приятной и простой.

Шесть месяцев назад вышла первая стабильная версия библиотеки, а буквально на днях вышла версия 0.5.0, которую я лично считаю pre-alpha 1.0.0. За это время 6 компаний (три из них еще не в официальном списке: Mesosphere, Shponic и Globo.com) начали использовать Finch в production, а некоторые из них даже стали активными контрибьюторами.

Этот пост рассказывает о трех китах на которых построен Finch: Router, RequestReader и ResponseBuilder.
Читать дальше →
Всего голосов 23: ↑23 и ↓0+23
Комментарии13

Unity3D — написание плагинов для Android

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

Предисловие


Здравствуйте!
Тут находятся инструкции, как расширить возможности Unity3D в работе с Android-приложениями. Другими словами, мы можем в Eclipse виде библиотеки на языке программирования Java написать нужный функционал для Android, экспортировать его в .jar и использовать в Unity3D. В основном пишут то, что отсутствует в возможностях Unity3D — такие вещи, как включение/выключение фонарика или длительная вибрация

image

Что нам понадобится


  • Установленные Android SDK и Eclipse (либо другая IDE на ваш выбор и усмотрение)
  • Минимальные познания в Java и C#
  • Немного терпения


Читать дальше →
Всего голосов 20: ↑19 и ↓1+18
Комментарии9

Вот что будет, если установить топ-10 программ с Download.com

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


Мы установили десять самых популярных программ с Download.com, и вы не поверите, что произошло! Впрочем, наверное, вы и сами можете догадаться: что-то ужасное. Что-то ужасное — вот что произошло. Присоединяйтесь к нашему веселью!

Уже не первый год мы сетуем на то, что нельзя спокойно порекомендовать скачать бесплатную программу, а недавно мы рассказали, как можно безопасно испытывать любое ПО при помощи виртуальной машины. И мы подумали: а почему бы не повеселиться и не посмотреть, что же, в самом деле, произойдёт, если скачивать программы как обычный ничего не подозревающий пользователь?

Ради эксперимента мы будем просто прощёлкивать все экраны установки с настройками по умолчанию на чистой виртуальной машине. Мы установим десять приложений из списка самых популярных загрузок. И предположим, что наш персонаж — рядовой пользователь.
Читать дальше →
Всего голосов 358: ↑324 и ↓34+290
Комментарии381

Идея большой инфосистемы для Российской Академии Наук

Время на прочтение4 мин
Количество просмотров11K
Я как фанат всякой каталогизации знаний уже давно держу в голове идею информационной системы для РАН. Но вот именно сейчас назрело изложить её в виде текста. Назрело в связи с последними событиями и с попыткой эту самую РАН жёстко реформировать сверху.

Итак, Российской Академии наук очень сильно не хватает открытости. А именно, что там происходит плохо понятно. Даже официальный сайт ras.ru несет мало полезной информации, а найти там что-то чрезвычайно сложно. Попробовать освещать перспективные исследования интересно и доступно для обывателей вообще никто не пытался (по аналогии с той же НАСА). У каждого отделения и института РАН свой сайт, разной степени убогости. Пресс-центр если есть, то работает плохо. В СМИ ничего значимого из РАН не попадает, обычно перепечатки из англоязычной прессы. Да и наши успешные ученые почти поголовно пишут и публикуются за рубежом. Более того РАН это поощряет, поскольку в последних отчетах которые я готовил по своему отделу, например, фигурирует зарубежный Web of Science и публикации в цитируемых зарубежных журналах, а значимость публикаций в российских журналах тает на глазах. В связи с этим, когда поднялась буча большинству людей в стране, в общем-то было пофиг. Мало кто знает, что это за РАН и что она вообще делает.


Итак, с чего можно начать
Всего голосов 15: ↑10 и ↓5+5
Комментарии46

Поговорим про отличия Mono от MS.NET

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


С каждым днём кроссплатформенная разработка под .NET становится всё более реальной. А после недавнего анонса официальной поддержки Linux/MacOS счастливое будущее стало ещё немножечко ближе. Вышеприведённая картинка утратила свою былую актуальность, ведь исходники теперь будут под MIT. Впрочем, писать кроссплатформенные .NET-приложения можно достаточно давно — в этом нам помогает Mono. Но вот отношение к нему в сообществе довольно неоднозначное. Мне зачастую приходится слышать изречения вроде «Mono тупит, под него всё в три раза медленнее работает» или «Под Mono вообще нормально ничего не запускается». Причём очень редко доводится слышать от этих людей конкретные факты. Вопросы «А что конкретно тупит?» или «А что конкретно не работает?» повергают их в ступор. Не всех (некоторые способны на конструктивную дискуссию), но большинство. Чаще всего начинаются возмущённые ответы в духе «Да вообще ничего не работает! А если и работает, то очень медленно!». В конце беседы создаётся впечатление, что каждая конечная машинная команда под Mono работает в несколько раз медленнее, а в половине исходников стоят throw new Exception().

В этом посте мне хотелось бы немножко поделиться опытом. Не так давно мы портировали наш продукт PassportVision (анонс на Хабре) под Linux. Могу заявить, что работает он вполне нормально. Да, чутка медленнее, чем под Windows на классическом .NET от Microsoft (далее — MS.NET). Но работает вполне стабильно, а падение производительности не принципиальное. При этом продукт у нас достаточно большой и вполне попадает под категорию enterprise, а возможности C#/.NET мы используем на полную катушку. Так что завести большое серверное приложение под .NET реально — было бы желание. Также мне довелось беседовать с разными разработчиками, которые пишут что-то под Mono — истории в большинстве своём успешные.

Но почему же тогда встречается столько негатива в сторону Mono? Я считаю, что проблема в том, что люди не особо хотят разбираться в разнице между рантаймами. Запустили разок какое-нибудь .NET-приложение под Linux на Mono 2.4, а оно с ходу не запустилось — всё, Mono целиком плохой, не будем его использовать. А в итоге виноват оказывается один-единственный метод, у которого реализация немного отличается от MS.NET. Новые версии Mono выходят раз в пару месяцев, реализацию уже давно поправили, но люди всё равно продолжают ходить и хаять бедный Mono, не желая разбираться в деталях.

Сегодня я приведу несколько примеров того, чем вообще могут отличаться разные рантаймы.
Читать дальше →
Всего голосов 92: ↑88 и ↓4+84
Комментарии77

Проблемы с дисплеем в MacBook Air 2013

Время на прочтение3 мин
Количество просмотров151K
Так вышло, что радость от приобретения нового MacBook Air 13" 2013 в топовой комплектации была сильно омрачена, мягко говоря, странной работой дисплея. Чтобы сразу было понятно, о какого рода проблеме идёт речь, вот видео (смотреть в 1080p).



В этом обзоре MacBook Air 11" 2013 года глюк виден с 1:54 до 2:24 и с 2:42 по 2:54. Есть 1080p версия. Про тормоза экрана в обзоре ни слова. Не знаю, как надо смотреть на экран, чтобы не видеть этого.



Я начал обсуждение этой проблемы в комментариях к обзору MacBook Air 2013, но потом понял, что она заслуживает отдельного поста.

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

Проблема бросилась в глаза сразу же. У меня было достаточно разных ноутбуков, от дешёвых до дорогих, чтобы сделать вывод, что такая работа дисплея, особенно в одном из самых дорогих ноутбуков, не может считаться нормальной. На следующий день я позвонил в Apple…
Читать дальше →
Всего голосов 100: ↑74 и ↓26+48
Комментарии212

Теория и Практика Поиска Работы в Канаде (часть первая)

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

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

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

Вот это как раз следует прочитать обязательно!

Я сам из тех самонадеянных персон, которые любят пропускать вступление!

С первого, второго и последующих взглядов может показаться, что данное вступление содержит набор прописных истин. К сожалению, моим извилинам потребовалось больше трех лет, чтобы впитать эти простенькие пунктики и, обсуждая эту тему с другими, я невольно отметил, что некоторые преуспели здесь еще меньше. Начнем, пожалуй.
Читать дальше →
Всего голосов 96: ↑88 и ↓8+80
Комментарии116

Некоторые тонкости GetHashCode

Время на прочтение3 мин
Количество просмотров15K
При чтении «Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries» натолкнулся на такую фразу:

«Ensure that GetHashCode returns exactly the same value regardless of any changes that are made to the object».

Хм… подумал я, о чем это они? Перед глазами всплыла стандартная реализация, которая генерируется ReSharper'ом и я осознал, что генерируемое значение не будет постоянным на протяжении жизни объекта при его изменениях.
Читать дальше →
Всего голосов 50: ↑30 и ↓20+10
Комментарии16

Аспектно ориентированное программирование в Android

Время на прочтение3 мин
Количество просмотров12K
Услышав об аспектно ориентированном программировании я, как Android разработчик, сразу подумал, что на Android это вряд ли заработает, однако, решил попробовать. Я был очень удивлен, когда уже через 5 минут приложение, использующее AspectJ, успешно заработало на телефоне.

Не буду убеждать в необходимости использования аспектов в Android и приводить примеры «uses cases», просто приведу пример того, как добавить к своему приложению возможность использования аспектов. Что такое аспекты и для чего их использовать прекрасно описано, например, на wiki.
Кому интересно - добро пожаловать под кат
Всего голосов 19: ↑16 и ↓3+13
Комментарии9

С чего начать своё расширение для Photoshop, Illustrator и др. на HTML5

Время на прочтение5 мин
Количество просмотров38K
Hello Habrahabr Panel

В этой статье я расскажу как при помощи HTML и JavaScript сделать своё собственное расширение для Photoshop, Illustrator, Premier, Flash, Prelude или InDesign.

Читать дальше →
Всего голосов 41: ↑37 и ↓4+33
Комментарии13

WinPhone: пути к совершенству

Время на прочтение7 мин
Количество просмотров9.2K
Внимание!
Более свежие и прогрессивные материалы по MVVM паттерну представлены в статье Context Model Pattern via Aero Framework и подробно разобраны в следующем цикле статей

В этой статье я расскажу о том, как сделать не сложный, но интерактивный и функциональный графический редактор-рисовалку под Windows Phone. Думаю, даже опытные разработчики смогут найти для себя что-то интересное и новое. Уникальной фишкой редактора будет история, которую можно в буквальном смысле отматывать на нужный момент с помощью ползунка-слайдера. И да, в завершение мы нарисуем радугу! Поехали…

Конечно же, я подготовил качественный пример.

image
Читать дальше →
Всего голосов 30: ↑19 и ↓11+8
Комментарии16

MVVM Framework для Windows Phone своими руками. Часть 1

Время на прочтение11 мин
Количество просмотров13K
Разработка приложений для платформ WPF, Silverlight, Windows Store и Windows Phone, почти всегда подразумевает использование паттерна MVVM. Это закономерно, так как базовой философией этих платформ, является разделение представления (так же я буду использовать термин интерфейс пользователя) и остальной логики программы. Этот подход позволяет получить следующие преимущества:

  1. Разделение пользовательского интерфейса и логики представления: что позволяет дизайнерам работать над пользовательским интерфейсом, а программистам над бизнес логикой приложения используя для взаимодействия абстрактный интерфейс модели представления
  2. Расширенные возможности автоматизированного тестирования: отделение пользовательского интерфейса от остальной логики, позволяет полностью протестировать логику представления без ограничений накладываемых автоматизацией тестирования через пользовательский интерфейс
  3. Множественные представления для одной модели представления: одна модель представления может использоваться многими реализациями интерфейса пользователя. Например, сокращенный и полный вариант представления данных, интерфейс зависящий от прав пользователя. Возможность использовать одну реализацию модели представления на различных платформах
  4. Расширенные возможности повторного использования компонентов: так как модели представления отделены от реализации представления, возможны любые варианты их использования, наследование от базовых моделей, композиция нескольких моделей и т.п.


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

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

Вещи, которые должен делать каждый: Code Review

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

Самая значимая вещь, которая делает код в компании Google таким хорошим проста — code review (далее CR). Google не единственная компания, использующая CR. Всем известно, что это хорошая идея и множество разработчиков делают это. Но я не видел ни одной другой большой компании, в которой CR был бы так грамотно внедрен. В Google ни одна линия кода не уходит в production пока не получит позитивную оценку на CR.

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

Что же вы получите от использования CR?
Читать дальше →
Всего голосов 66: ↑49 и ↓17+32
Комментарии32

Переходы наличности и переходы на личности

Время на прочтение12 мин
Количество просмотров85K
Представьте, что мы живем в мире криптографии, электронной коммерции и свободных экономических отношений. Пользуемся электронными средствами платежей, где в корзине и кошельке операции осуществляет калькулятор, где микроскопические суммы и огромные средства проводятся в многочисленных транзакциях без каких-либо проблем за ничтожное количество времени, с автоматическим учетом налогов, сборов и отчислений, где нам привычны покупки в электронных супермаркетах и доставка до порога по одному прикосновению к экрану телефона или клику мышкой. И вот, в наш прекрасный, удобный и отлаженный мир электронных платежей, построенный на принципах безопасности и криптографии, со всеми присущими ему технологиями и образу мышления, впитанными с молоком матери, приходит причудливый и странный механизм, которым, как говорят средства массовой информации, пользуются только анархисты, конспираторы и преступники.
Любопытное нажатие для путешествия в этот мир
Всего голосов 288: ↑263 и ↓25+238
Комментарии229

Критика книги Боба Мартина «Принципы, паттерны и методики гибкой разработки на языке C#»

Время на прочтение15 мин
Количество просмотров50K
Если спросить у десяти разработчиков о лучшей (или достойной) книге о проектировании, то как минимум 6 из них назовет книгу Боба Мартина «Принципы, паттерны и методики гибкой разработки». Если же после этого показать им на некоторые интересные моменты писанины «дядюшки» Боба, то большая часть из них с недоумением почухает лоб и несколько изменит свое мнение.

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

Читать дальше →
Всего голосов 43: ↑33 и ↓10+23
Комментарии15

«Запах» проектирования: излишний атрибут Required

Время на прочтение2 мин
Количество просмотров8.5K
Это четвёртый пост из серии о Poka-yoke проектировании – также известном, как инкапсуляция.

Недавно, я прочитал из какого-то технологического события Microsoft пост, написанный с энтузиазмом:
Атрибут [Required] в коде автоматически создаёт запись в БД, которая не может принимать null, а также создаёт валидацию на веб-странице – симпотично […]

Читать дальше →
Всего голосов 26: ↑17 и ↓9+8
Комментарии23

«Запах» проектирования: одержимость примитивами

Время на прочтение2 мин
Количество просмотров9.7K
Это второй пост из серии о Poka-yoke проектировании – также известном, как инкапсуляция.

Множество классов имеют тенденцию к потреблению или раскрытию примитивных значений, таких как int, или string. В то время как такие примитивы существуют на любой платформе, их использование может приводить к процедурному коду. Более того, они обычно нарушают инкапсуляцию, допуская присвоение некорректных значений.
Читать дальше →
Всего голосов 23: ↑16 и ↓7+9
Комментарии24
1

Информация

В рейтинге
Не участвует
Откуда
Россия
Дата рождения
Зарегистрирован
Активность