Pull to refresh
371.4
Karma
0
Rating

User

  • Followers 55
  • Following 6
  • Posts
  • Comments

Разработка привлекательных реалистичных пользовательских интерфейсов

Design
Translation
Cекрет разработки привлекательных интерфейсов заключается в реализме. Ваша задача — придать плоским элементам объём, используя свойства реальных объектов, вроде неровностей и шероховатостей, бликов и теней, различных текстур поверхностей. В идеале они должны выглядеть как предметы на вашем столе. Создавая классный интерфейс, в первую очередь нужно думать не «как», а «почему».
Читать дальше →
Total votes 212: ↑205 and ↓7 +198
Views 8.2K
Comments 49

Анализируем исходный код с помощью cppcheck

Website development *C++ *Designing and refactoring *
Sandbox
В свете множества недавних статей, посвящённых статическому анализу кода на С++, пользователи неоднократно интересовались анализатором cppcheck. Это относительно молодой проект статического анализа с открытым исходным кодом, ориентированный в первую очередь на нахождение реальных ошибок в коде с минимальным количеством ложных срабатываний.

Совсем недавно cppcheck помог найти уязвимость в проекте Xorg, которая существовала там почти 23 года! Он помог уже тысячам программистов по всему миру, на официальном сайте можно найти информацию о найденных с помощью cppcheck уязвимостях в программах, и этот список постоянно растёт. Итак, если вы хотите знать, почему нужно использовать cppcheck всегда и везде — прошу под кат.
Читать дальше →
Total votes 82: ↑76 and ↓6 +70
Views 33K
Comments 27

Знай сложности алгоритмов

Algorithms *
Translation
Эта статья рассказывает о времени выполнения и о расходе памяти большинства алгоритмов используемых в информатике. В прошлом, когда я готовился к прохождению собеседования я потратил много времени исследуя интернет для поиска информации о лучшем, среднем и худшем случае работы алгоритмов поиска и сортировки, чтобы заданный вопрос на собеседовании не поставил меня в тупик. За последние несколько лет я проходил интервью в нескольких стартапах из Силиконовой долины, а также в некоторых крупных компаниях таких как Yahoo, eBay, LinkedIn и Google и каждый раз, когда я готовился к интервью, я подумал: «Почему никто не создал хорошую шпаргалку по асимптотической сложности алгоритмов? ». Чтобы сохранить ваше время я создал такую шпаргалку. Наслаждайтесь!
Читать дальше →
Total votes 312: ↑296 and ↓16 +280
Views 738K
Comments 99

Полезные штуки для iOS-разработчика #2

Development for iOS *
Некоторое время назад я прочитал интересный пост, посвященный полезным фрэймворкам и библиотекам для разработки под iOS. С вашего позволения и согласия Coder89 представляю «Полезные штуки для iOS-разработчика часть вторая».
Читать дальше →
Total votes 63: ↑57 and ↓6 +51
Views 37K
Comments 19

Wi-Fi в любительском проекте? Нет ничего проще!

DIY
Sandbox
Всем здравствуйте!
В этом посте я постараюсь убедить вас в том, что добавить поддержку Wi-FI к своему устройству на микроконтроллере можно абсолютно без проблем. И для этого не надо ни курочить свой любимый роутер и подпаиваться к выводам отладочного uart'а, ни ставить переходник usb-uart (что, конечно выход).
Я расскажу о двух модулях фирмы WizNet: WizFi220.

Вместо предисловия

Компания WizNet основана в 1998 в Корее и занимается производством сетевых решений. Спектр того, что компания производит, широк. Это и микроконтроллеры на ядре 8051 со встроенный PHY-контроллером, и отдельные SPI-управляемые контроллеры Ethernet, и модули Wi-FI, и макетки почти к каждой микросхеме.
Про первые два вида я мало чего знаю, поскольку с ними не работал. А про Wi-Fi довольно много.
Кому интересно — прошу под кат.
Читать дальше →
Total votes 51: ↑49 and ↓2 +47
Views 57K
Comments 31

Создание двухсторонней платы (видео)

Electronics for beginners
Привет хабр!

Думаю, что технология ЛУТ не является ни для кого секретом. Редкий радиоэлектронный блог обходится без статьи о том, как заутюжить печатную плату. Но тема создания двухсторонних плат почему-то освещается гораздо реже. Хотя они становятся все более востребованы: мы используем микросхемы в мелких и многоногих корпусах, и стараемся уменьшить размеры платы.

Хочу поделиться с вами видео, которое я сделал по ходу производства очередной платы. Оно неплохо демонстрирует один из методов создания двухсторонней платы.


Читать дальше →
Total votes 43: ↑41 and ↓2 +39
Views 23K
Comments 47

Исследуем iOS SDK и используем недокументированные API

Development for iOS *Objective C *
Из этой главы, да и из всей этой книги понятно, что самые лакомые куски программирования под iOS включены в публичные фреймворки, но не в SDK. Неофициальная политика Apple насчет этого проста: вы можете всё это использовать, но только на свой страх и риск. Ваш код может сломаться при следующем обновлении прошивки. Вам самим придётся искать компромисс между риском и прибылью.

Erica Sadun, The iPhone Developer's CookBook
Оригинал
As you’ve seen in this chapter, and throughout this book, some of the nicest bits of iPhone programming are included in the public iPhone frameworks but not in the SDK. Apple’s unofficial policy on this is clear:You can use these items in your programs, but you do so at your own risk.Your code may break at each firmware release. Striking the balance between risk and reward is up to you.

Дисклеймеры


  • Приведенные здесь куски кода работают на обычных iPhone (включая 4S) и iPad (включая new iPad) и не требуют jailbreak.
  • Все решения написаны и протестированы на iOS 5. Все решения также протестированы на совместимость с iOS 4.3, т.е. работают с iOS 4, если не сказано обратное. Основная часть статьи была написана до выхода iOS 6, так что приведенные решения не тестировались на совместимость с iOS 6.
  • Использование недокументированных API может привести к тому, что ваше приложение не допустят в AppStore. А может и не привести :-)
    Для тех, кому интересно, как Apple опрделяет использование приваетных API:«Как Apple узнаёт, что ты используешь приватные API?»
  • Apple может изменить реализацию вместе со следующим релизом iOS, и в вашем коде что-то сломается. Впрочем, это решаемо, и ничем принципиально не отличается от реализации обратной совместимости для документированных API. Ниже я рассмотрел эту проблему чуть подробнее.
  • Я не могу гарантировать, что у найденных мной API нет побочных эффектов. Используйте на свой страх и риск.
  • Лицензионное соглашение Apple Developer Program запрещает реверс-инжинеринг iOS.
  • Статья в процессе доработки. Конструктивная критика приветствуется!

Краткая инструкция по поиску в SDK


Допустим, вам нужно сделать что-то, выходящее за рамки официальной документации.
Читать дальше →
Total votes 59: ↑54 and ↓5 +49
Views 30K
Comments 12

AdWired — Мобильная рекламная сеть

Self Promo
image

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

Представляю вам AdWired: это мобильная рекламная сеть с красивыми интерактивными медийными баннерами, которые работают на всех основных мобильных платформах.

Чем же AdWired лучше остальных?
Total votes 31: ↑17 and ↓14 +3
Views 1.5K
Comments 23

Пишем драйвер для самодельного USB устройства

DIY
Sandbox
Целью этой статьи является пошаговая демонстрация процесса разработки всего набора программного обеспечения необходимого для организации связи самодельного устройства с компьютером посредством USB.

На данный момент, большинство радиолюбителей реализуют такой тип подключения используя чипы переходники USB в RS232 таким образом организуя связь со своим устройством посредством драйвера виртуального COM порта поставляемого с чипом переходником. Минусы такого подхода думаю понятны. Это как минимум лишний чип на плате и ограничения накладываемые этим чипом и его драйвером.
Мне же хочется осветить весь процесс организации такого взаимодействия так как оно и должно быть сделано, и как делается во всех серьезных устройствах.
В конце концов, сейчас 21-й век, модуль USB есть почти во всех микроконтроллерах. Именно о том, как наиболее быстро воспользоваться этим модулем и будет эта статья.
Читать дальше →
Total votes 152: ↑149 and ↓3 +146
Views 87K
Comments 29

Шокирующий Objective-C для Java программистов, часть вторая

Development for iOS *
Продолжаю краткий обзор особенностей Objective-C, удивляющих Java программистов (первая часть). Во второй части немного будет рассказано о философии языка, о поддержке пространств имен и о типе id. Судя по комментариям к первой части, необходимо немного пофилософствовать, поэтому обещанные свойства (property) переносятся в третью часть. Также узнаем какие вопросы задают в американских супермаркетах.

Читать дальше →
Total votes 35: ↑27 and ↓8 +19
Views 4.8K
Comments 19

Я не знаю Си

Abnormal programming *C++ *C *
Цель этой статьи — заставить всех, особенно программистов на Си, сказать «я не знаю Си».
Хочется показать, что тёмные углы в Си значительно ближе, чем кажется и даже тривиальные строки кода несут в себе undefined behavior.
Читать дальше →
Total votes 285: ↑268 and ↓17 +251
Views 45K
Comments 309

Скромное руководство по прохождению интервью: часть 1

Programming *
Tutorial
Пост подготовлен с целью помочь программистам при подготовке к собеседованиям по программированию. Здесь рассматриваются все основные темы, которые, как минимум, желательно знать перед собеседованием. Использован собственный опыт, опыт и рассказы коллег, специализированная литература.
Некоторые рассмотренные здесь темы могут вообще не пригодиться некоторым программистам, а могут и быть обязательными, решать вам. Мой совет – старайтесь как можно больше изучать темы/разделы/аспекты указанные здесь.
И так, в качестве обязательных знаний:
  • Структуры данных
  • Алгоритмы и «концепции»
  • Язык программирования

Читать дальше →
Total votes 124: ↑109 and ↓15 +94
Views 28K
Comments 125

Скромное руководство по прохождению интервью: часть 2

Programming *
Tutorial
Во второй части поста будут рассматриваться “Алгоритмы и концепции”, если вы не читали предыдущий пост или хотите “вспомнить” список тем, то загляните сюда.

Алгоритмы и концепции

Сортировка и поиск

Понимание/знание известных алгоритмов сортировки очень важно, поскольку многие решения связанные с сортировкой или поиском, мягко говоря, требуют владения этими алгоритмами. Хороший способ показать свои знания перед интервьюером, когда дана здача на сортировку – это «пробежать» по известным алгоритмам и увидеть/выяснить какой из них лучше всего подходит для решения данной задачи. Вы получите и решение и то, что интервьюер будет довольным вашими «разными» способов решения одной и той же задачи.
Читать дальше →
Total votes 69: ↑64 and ↓5 +59
Views 18K
Comments 43

Работа с SurfaceView в Android

Development for Android *
Sandbox
Здравствуйте, Хабравчане!
При работе с 2D графикой в Android отрисовку можно выполнять используя Canvas. Проще всего это сделать с помощью своего класса, унаследованного от View. Необходимо просто описать метод onDraw(), и использовать предоставленный в качестве параметра canvas для выполнения всех необходимых действий. Однако этот подход имеет свои недостатки.
Читать дальше →
Total votes 22: ↑20 and ↓2 +18
Views 91K
Comments 20

Синхронные движки RTS и история рассинхронизаций

Game development *
Translation
Случалось ли Вам играть в игру вроде StarCraft или Supreme Commander и получать сообщение об ошибке вроде “Обнаружена рассинхронизация”, за которым следует закрытие игры? Хотите узнать отчего так происходит? Это наследие архитектуры игрового движка, часто используемой стратегиями в реальном времени.1

Мой опыт в этой области происходит из работы с движком Supreme Commander в студии Gas Powered Games. В период бета тестирования в Starcraft и Warcraft 3 тоже были проблемы с синхронизацией, так что можно сказать что в целом они работают так же. Для простоты я буду говорить именно о движке Supreme Commander. Нахождение сходства с другими играми оставлю как упражнение для читателя :)
Читать дальше →
Total votes 118: ↑113 and ↓5 +108
Views 7.9K
Comments 56

Помещаем файлы из Assets на SD-карту с помощью Infles

Development for Android *
Sandbox
Доброго времени суток, Хабравчане!

Описание:


Почти все пользователи ОС Android знают практику приложений использовать файлы с SD карты.
Большинство приложений скачивают с интернета эти файлы и помещают их в свою папку, но не у всех пользователей есть возможность скачивать их из сети и не у всех разработчиков содержать свой сервер, а вручную копировать файлы, согласитесь, неудобно.
Поэтому что бы упростить всем жизнь и была написана программа «Infles», она распространяется бесплатно с открытым исходным кодом и по лицензии MIT. Программа позволяет в 1 клик установить необходимые файлы в указанную в настройках папку на SD карте. Для этого необходимо поместить их в папку «assets», в коде в файле "\Infles\src\ru\boomik\infles\InflesActivity.java" в переменной «COPY_DIR» указать путь на карте памяти и скомпилировать программу.

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



Читать дальше →
Total votes 24: ↑18 and ↓6 +12
Views 7.8K
Comments 22

Алгоритм быстрого нахождения похожих изображений

Image processing *

Введение


Недавно наткнулся на статью, размещенную на Хабрахабре, посвященную сравнению изображений «Выглядит похоже». Как работает перцептивный хэш. Так как я сам достаточно долго занимался этой тематикой (являюсь автором программы AntiDupl), то мне захотелось поделиться здесь своим опытом по данному вопросу. В статье я приведу два варианта алгоритма сравнения похожих изображений — базовый и улучшенный. Все они были проверены автором на практике в рамках указанного выше проекта. Изложение мое будет вестись без строгих доказательств, сложных формул и специальной математической терминологии. Надеюсь, что читатели простят меня за это.

Базовый Алгоритм


Мера схожести изображений


При сравнении похожих изображений первым встает вопрос: что считать мерой схожести изображений? Очевидно, что это величина имеет значение обратное различию изображений друг от друга. Следственно нужно выбрать некую метрику, характеризующую различие изображений друг от друга. Тогда схожими изображениями будут считаться изображения, отличие между которыми меньше некоторого порога. Для изображений с одинаковыми габаритами, обычно такой мерой различия служит среднеквадратическое отклонение пикселей одного изображения от другого. Хотя конечно, нам ни что не мешает выбрать другую метрику, например усредненную абсолютную разность пикселей изображений друг от друга.
Читать дальше →
Total votes 57: ↑55 and ↓2 +53
Views 53K
Comments 20

Методы защиты веб-формы без капчи

Website development *

О чём речь?


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

Однако, одновременно с этим, капча является проблемой юзабилити, поскольку заставляет пользователя выполнять лишнее действие.

В этом обзорном посте я бы хотел рассмотреть незаметные для пользователя методы защиты от ботов.

Методы защиты


Читать дальше →
Total votes 126: ↑117 and ↓9 +108
Views 53K
Comments 227
1

Information

Rating
Does not participate
Location
США
Date of birth
Registered
Activity