Pull to refresh
4
0
Евгений @Jek_Rock

Java Developer

Send message

Spatial hashing для самых маленьких

Reading time5 min
Views41K


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

Предположим, что у вас есть несколько объектов и вам нужно узнать нет ли между ними столкновений. Простейшим решением будет посчитать расстояние от каждого объекта до всех остальных объектов. Однако, при таком подходе количество необходимых вычислений растёт слишком быстро. Если на десятке объектов приходится делать сотню проверок, то на сотне объектов выходит уже десяток тысяч проверок. Это и есть печально известная квадратичная сложность алгоритма.
Можно улучшить ситуацию, если...
Total votes 88: ↑82 and ↓6+76
Comments21

Как стать ведущим разработчиком. Часть 1

Reading time8 min
Views142K
Это перевод статьи, написанной Джоном Оллспоу, который на данный момент является старшим вице-президентом технического отдела в Etsy.

Продолжение перевода здесь

В нашей сфере деятельности нам доступны огромные объёмы знаний, в особенности тех, которые позволяют разработчику стать эффективным. Но почему-то, несмотря на существование множества книг о специфических задачах и обязанностях менеджеров в нетехнических областях, я практически не вижу новых книг или статей о том, как стать хорошим ведущим разработчиком. Замечательным исключением, конечно, являются статьи Кейт Maцудайры [от переводчика: на фотографии, кстати, именно она], немало написавшей о культурных составляющих инженерии.

Но в то же время, все мои знакомые преуспевающие разработчики помнят своих наставников, которые научили их тому, что значит быть „ведущим“.
Читать дальше →
Total votes 233: ↑203 and ↓30+173
Comments76

Автоматический светильник для аквариума на МК PIC12

Reading time3 min
Views63K
В рамках изучения 12 серии PIC микроконтроллеров решил сделать небольшое, но очень полезное устройство.
У моей дочки живет аквариум. Подсветка сделана на люминесцентных лампах, которые каждое утро надо включать и вечером выключать. А так как мы семья заядлых туристов, то чтобы не устраивать рыбам пытку светом или темнотой на дней 5-7 решил сделать освещение LED лентой с автоматом включения/выключения от солнечного освещения.
Попутно попытаться выжать из микроконтроллера максимум, по функционалу.
Читать дальше →
Total votes 44: ↑41 and ↓3+38
Comments46

5 правил верстки email-писем от Печкина

Reading time2 min
Views75K

Сегодня мы хотели бы рассказать о базовых правилах верстки HTML в email-письмах. Как известно, на свете существует множество почтовых клиентов:
  • веб-версии у почтовых провайдеров (Gmail, Yandex, Mail, Yahoo итд.)
  • десктопные почтовые клиенты (Outlook, Bat, Thunderbird, Mac Mail)
  • мобильные почтовые клиенты (Blackberry, Android, Iphone, Ipad итд)


К сожалению, не существует обязательного стандарта верстки писем, который бы универсально поддерживался бы всеми клиентами. Часть поддерживает CSS3, часть нет, какие-то теги и аттрибуты поддерживаются, какие-то нет, не говоря уже о том, что поддержка HTML и CSS меняется даже в пределах одного почтового клиента от версии к версии. Последнее особенно заметно на примере Outlook (от Express и 2003 к Outlook 2011).

Что же необходимо знать тем, кто собирается самостоятельно верстать HTML-код для email-писем?
Посмотреть 5 правил верстки email
Total votes 56: ↑46 and ↓10+36
Comments24

Хабраобзор Highscreen Boost – пять дней без розетки (осторожно — женский взгляд!)

Reading time5 min
Views45K
Cегодня у нас будет строгий женский взгляд :)


Да, неделю назад уже вышел обзор Highscreen Boost товарища tozx Однако мир и прекрасен тем, что есть множество точек зрения и все они имеют место быть. Тем более, что взгляды парней и девушек отличаются ;-) Поэтому хочу поделиться своим женским взглядом на «кирпичик» Highscreen Boost.

Мой первый взгляд на этот смартфон был полон недоумения. Это ведь странно: при моде на большие, тонкие, легкие телефоны выпускать большой, толстый (14,2 мм) и тяжелый (185 г). Это ж целый кирпич, как древняя Nokia 9300! Но с каждым новым взглядом градус недоумения снижался, а удивление нарастало.

Читать дальше →
Total votes 100: ↑65 and ↓35+30
Comments80

Десять возможностей C++11, которые должен использовать каждый C++ разработчик

Reading time12 min
Views536K
В данной статье рассматривается ряд возможностей С++11, которые все разработчики должны знать и использовать. Существует много новых дополнений к языку и стандартной библиотеке, эта статья лишь поверхностно охватывает часть из них. Однако, я полагаю, что некоторые из этих новых функций должны стать обыденными для всех разработчиков С++. Подобных статей наверное существует много, в этой я предприму попытку составить список возможностей, которые должны войти в повседневное использование.

Сегодня в программе:
  • auto
  • nullptr
  • range-based циклы
  • override и final
  • строго-типизированный enum
  • интеллектуальные указатели
  • лямбды
  • non-member begin() и end()
  • static_assert и классы свойств
  • семантика перемещения
Читать дальше →
Total votes 133: ↑125 and ↓8+117
Comments115

Facebook — от сервера до сети дата-центров за 8 лет

Reading time7 min
Views41K

В статье пойдет речь о ЦОДах одного из самых коммерчески удачных стартапов, который стремительно развивается и в сеть которого вовлечена 1/7 часть всего населения земли.

Наверное, мало кто мог подумать в 2004 году, что идея студентов из Гарварда сделать скромный сайт для общения внутри университета превратится в глобальную социальную сеть с аудиторией свыше 1 млрд человек. ИТ-инфраструктура компании также росла достаточно бурно: если в 2004 году достаточно было одного арендованного сервера, то уже через пять лет Facebook стал наиболее посещаемым сайтом, количество обращений к нему составило уже более 1 триллиона в месяц (по данным сервиса Google Double Click), а на его трафик приходилось около 9 процентов всего интернет-трафика в глобальной Сети при загрузке 300 миллионов ежедневно и с базой более 550 тысяч приложений, работающих на платформе Facebook Connect.

Чтобы поддерживать такую активности, на сегодняшний день в активе компании три действующих дата-центра и один — в процессе строительства. Дополнительно арендуются площади в девяти дата-центрах — до сих пор Facebook не может отказаться от арендованных площадей. Арендуются площади в шести дата-центрах Силиконовой долины, расположенных в Санта-Кларе (аренда 4,5 тыс. квадратных метров в ЦОД CoreSite Realty, площади Terremark Worldwide(TMRK), Equinix (EQIX)) и Сан Хосе (более 2 тыс. квадратных метров в ЦОД Fortune), в трех дата-центрах в Вирджинии (суммарная площадь — 12,5 тыс. кв. метров в ЦОДах Digital Realty Trust и 15 % площадей ЦОД DuPont Fabros Technology), а также в европейском ЦОД, принадлежащем Telecity Group.
Читать дальше →
Total votes 50: ↑46 and ↓4+42
Comments24

PocketBook Touch 2 — читалка с E-Ink Pearl и сенсором

Reading time8 min
Views47K
Очень часто в наших обзорах появляются планшеты, созданные китайскими брендами. Но родина героя сегодняшнего обзора — Украина. Ведь именно там была основана компания PocketBook в 2007 году группой энтузиастов из одной крупной полиграфической фирмы.



Итак, сегодня мы во всех подробностях рассмотрим новую модель PocketBook Touch 2 популярного производителя Obreey Products, который добавил в свой ридер экран E-Ink Pearl HD, оснащенный подсветкой. И к тому же он сенсорный с поддержкой мультитач. Коммерческое название 623-й модели — «ПокетБук Тач 2». Появилась читалка 25 апреля 2013 года, но в продажу поступила совсем недавно. Предлагаю познакомиться с ней в нашем сегодняшнем обзоре.
Читать дальше →
Total votes 42: ↑36 and ↓6+30
Comments101

«Нужна надежная беспроводная сеть»

Reading time6 min
Views36K
Тип точки AP-105
В последнее время в нашу компанию стали чаще приходить не просто запросы «посчитайте мне N точек доступа и контроллер», а уже — «нам нужна надежная беспроводная сеть, в которой пользователи смогут использовать собственные гаджеты в работе». Сегодня мы расскажем, что мы делаем и какими инструментами пользуемся в таких случаях.
Читать дальше →
Total votes 32: ↑28 and ↓4+24
Comments36

Инфографика — Tor, HTTPS и безопасность

Reading time2 min
Views82K
На волне охватившей жителей США паники «наше правительство следит за нами» (сюрприз!), Electronic Frontier Foundation выложили в доступной графической форме описание того, что скрывает Tor, что скрывает протокол шифрования HTTPS, и что они могут скрыть, вместе взятые.

Итак, всю информацию, передаваемую через интернет от пользователя к сайту и обратно, можно разделить на (как обозначено на картинках):

site.com — адрес сайта
user/pw — логин и пароль на сайте
data — данные, передаваемые между пользователем и сайтом
location — информация о пользователе (ip-адрес, и в потенциале — его идентификацию)
tor — информация о том, что пользователь использует сеть tor
Читать дальше →
Total votes 72: ↑67 and ↓5+62
Comments81

Hyperboria: Как все устроено

Reading time4 min
Views66K


В прошлой статье был общий обзор сети Hyperboria, в этой мы рассмотрим её структуру, какие она решает проблемы и её прямое назначение — Mesh сеть между wi-fi устройствами.
Читать дальше →
Total votes 58: ↑56 and ↓2+54
Comments42

Создание QR-кодов на C/C++

Reading time4 min
Views36K
image
Это простой пример использования библиотеки libqrencode от FUKUCHI Kentaro для генерации bmp-файла с QR-кодом для какого-то текста. В интернете полно ссылок на эту библиотеку, но ни одного примера ее использования. libqrencode поддерживает QR Code model 2, описанный в JIS (Japanese Industrial Standards) X0510:2004 или ISO/IEC 18004. В настоящее время не поддерживаются режимы ECI и FNC1 QR Code model 1.
Читать дальше →
Total votes 43: ↑31 and ↓12+19
Comments14

Фотографии рабочих мест хабражителей и…

Reading time6 min
Views411K
image
Хабражители редко ходят друг к другу в гости. И, в то же самое время, хотят взглянуть на то, как устроились другие. Может быть, даже, позаимствовать разные интересности.

Пока вы дома, самое время вооружиться фотоаппаратом и поделиться видом своего рабочего места (домашнего).

По возможности, описываем:
1. 7 любимых гаджетов.
2. 7 ежедневных программ.
3. 7 интересных открытий, которыми вы часто пользуетесь.

Приоткройте занавесу тайны в своей обители.

PS: Бонус для владельцев ноутбуков — подключаем 2 монитора.
Читать дальше →
Total votes 286: ↑210 and ↓76+134
Comments676

Xamarin + PCL + MVVM — как облегчить написание мобильных приложений под разные платформы

Reading time5 min
Views35K
Как-то совершенно незаслуженно обделена вниманием платформа Xamarin 2.0, и я б хотел начать описание всех его замечательных свойств

Прежде всего, что такое Xamarin?

Xamarin это коммерческий продукт, основанный на open-source проекте Mono, который позволяет использовать .Net framework, в том числе язык C#, для кроссплатформенных разработок.

Основные свойства:
  • C# для написания приложений под Android, iOs и Windows8. Поддержка LINQ и async/task
  • Native UI, Native Peformance — код компилируется под конкретную платформу и использует native UI контроли
  • Visual Studio и все его plugins, включая ReSharper, NUnit testing…
  • Xamarin Studio, которая похожа на Visual Studio, но доступна также и для Mac
  • Использование .Net библиотек
  • Использование других готовых native компонент, обвернутых в C#
  • Графический редактор для Андроида

image
Подробности и пример приложения для Андроида
Total votes 40: ↑30 and ↓10+20
Comments35

Скорости разработки и исполнения, не достижимые на С

Reading time20 min
Views59K
В продолжении статьи о кроссплатформенной и кросс-аппаратной оптимизации, на примере задачи поиска полным проходом по таблице из 5 полей и 10 000 000 строк, и неизбежности этой задачи даже при индексном поиске, я покажу как ускорить такой поиск в 3.5-5.3 раза с использованием C++ независимо от аппаратной платформы.
В предыдущей статье нам удалось ускорить поиск в 1.3 раза: GitHub.com
Мы не будем банально описывать конструкции языка, а покажем преимущества C++ при решении одного из этапов реальной задачи.
Мы по-прежнему пишем кроссплатформенно под MSVC11(MSVS2012) и GCC 4.7.2, и используем в них C и частично реализованный стандарт C++11.
Для упрощения понимания мы все ещё пишем без индексного поиска, но это решение в дальнейшем будет использоваться при индексном поиске.
Читать дальше →
Total votes 165: ↑150 and ↓15+135
Comments41

Возможности оптимизации в языках C и C++

Reading time12 min
Views61K
Существует мнение, что C++ имеет заметные накладные расходы по сравнению с C и поэтому он медленнее. Помимо этого, даже, существуют статьи показывающие преимущества в скорости языков с компиляцией налету (JIT — Just-in-time compilation), таких как Java и C#. Сравнить последние мы оставим тем, кто считает их быстрыми, но мы объясним почему это не так. А C и C++ мы сравним на примере задачи поиска данных.
Задача поиска данных часто встречается в: веб-сервисах, системах управления баз данных (СУБД), гео-поиске и аналитике.
Сначала для простоты объяснения поставим задачу поиска элементов полным проходом по массиву из 10 000 000 элементов (структур), содержащих 5 полей с диапазонами значений: amount_of_money(0-1000000), gender(0-1), age(0-100), code(0-1000000), height(0-300). А в следующих статьях добавим в решение индексный поиск.
Мы будем писать кроссплатформенно под MSVC11(MSVS2012) и GCC 4.7.2, и использовать в них частично реализованный стандарт C++11.
Читать дальше →
Total votes 102: ↑89 and ↓13+76
Comments93

Программирование, быстрое и медленное: разработчики и психология самоуверенности

Reading time10 min
Views52K
Сегодня я собираюсь рассказать о том, что происходит в головах разработчиков программ, в тот момент, когда они делают предварительные расчеты; о том, почему им так сложно зафиксировать все задумки в своей голове; а также о том, как лично я разрешил для себя эту ситуацию, узнал, как жить и писать ПО (для счастливых владельцев бизнеса), но, уверен, мои собственные оценки трудоемкости ненадежны как никогда.

Но сначала история…

Это было <вставьте период времени, который не будет делать меня нелепо старым> в то время, когда я был молодым разработчиком (1). В колледже я был лучшим на занятиях по программированию, будучи младшим разработчиком, я мог взломать код и решить любую поставленную передо мной задачу быстрее, чем кто-либо ожидал. За выходные я мог изучить новый язык и продуктивно на нем работать (или, по крайней мере, мне так тогда казалось).

Таким образом, как и должно было произойти, у меня появился свой собственный проект. Менеджер по работе с крупными клиентами объяснил мне в общих чертах, чего хочет клиент, мы это обсудили, и я сказал: «На эту работу уйдет 3 недели.» «Хорошо», — ответил он. И так я приступил к программированию.

Как вы думаете, сколько времени у меня ушло на этот проект? Четыре недели? Может быть пять?

Мм, вообще-то: три месяца.

У меня остались четкие воспоминания о том времени – мое представление о себе было тесно связано с ощущением, что я — «хороший программист», в чем я сильно разочаровался. Я потерял сон, у меня случались небольшие приступы паники. И этому Не Было Конца. Я помню, что у меня сосало под ложечкой при разговоре с тем менеджером, я снова и снова объяснял, что у меня до сих пор нет ничего, что можно ему показать.

В один из таких черных периодов я решил, что Больше Никогда Не Буду Совершать Подобных Ошибок.

К сожалению, в ходе своей карьеры, я уяснил нечто очень тяжелое: я постоянно совершаю подобные ошибки.
Читать дальше →
Total votes 62: ↑51 and ↓11+40
Comments36

Когда-то я говорил…

Reading time2 min
Views173K
Когда-то я* говорил, что без идеального задокументированного кода с многоуровневой плагинной архитектурой заказчик будет мучиться в конвульсиях каждый раз, когда его пальцы будут соприкасаться с клавиатурой. Теперь я заказчик и понимаю, что мне нафиг не нужен идеальный код, депенденси инджекшены и два синьора по цене одного. Главное, чтобы работало и было сделано в срок. И желательно бесплатно.

Когда-то я говорил, что к собеседованию должен готовиться не только соискатель, но и интервьювер. Теперь я сам провожу собеседования, но после десятого интервью все соискатели выглядят как китайцы – одинаково.

Когда-то я говорил, что опаздывать на встречи могут только пид$расы. Теперь я сам часто опаздываю на встречи, но в то же время не сплю с мужиками.

Когда-то я говорил, что главное в любом проекте – правильный процесс. Ну и еще печеньки. Теперь у меня только православный скрам, настоянный на канбане, но проекты факапятся с таким же успехом.
Читать дальше →
Total votes 530: ↑347 and ↓183+164
Comments161

Как начать работать над личным проектом

Reading time3 min
Views93K
Этот пост был написан для технической аудитории, но его ключевые моменты могут также использоваться и в других сферах.

Существует множество причин, из-за которых программист может начать работать над сторонним проектом. Это хороший способ держать руку на пульсе современных технологий, которые сейчас на пике популярности в отрасли. Это может помочь вам отточить свои навыки программирования. И это весело! Ну или должно быть весело.
Но то, что мы привыкли называть “жизнью” может не только усложнить вам завершение проекта, но даже не дать начать работать над ним. Мы часто тратим много времени чтобы придерживаться напряженного графика, и может показаться невозможным использовать хотя бы минутку для личного проекта.
Я начал работать на моим первым сайд-проектом два года назад, и я не эксперт в этом вопросе, чтобы это не значило. Спустя два года, я сделал несколько наблюдений о начале работы над сторонними проектами, которые я начал, почему я смог некоторые закончить, а некоторые нет. То, что я попытаюсь описать не претендует на новаторство, ни на пошаговое руководство, а является исключительно лишь наблюдениями, которые могут оказаться полезными.
Читать дальше →
Total votes 74: ↑62 and ↓12+50
Comments18

Пусть боятся, лишь бы замечали… Создаем выдающийся Appeal в Appstore

Reading time3 min
Views9.1K
Представьте себе подростка, единственная цель которого — не потеряться в толпе. Он готов продать душу и родителей лишь бы ловить на себе взгляды. Лучше восхищенные, но на самом деле это не обязательно. Сойдут и гневные и испуганные, даже взгляды отвращения. Только бы не равнодушие.

Представили?

Теперь вы понимаете, что чувствует человек, отвечающий за маркетинг приложения в AppStore. В месте, где приложение гарантированно может рассчитывать только на равнодушие.

image

Несколько месяцев назад я познакомился с замечательной командой, сделавший самый банальный для AppStore продукт – детскую интерактивную книгу. Причем не просто книжку – а сказку, да еще братьев Гримм. Гензель и Гретель. 71 приложение в американском сторе. Хуже только Красная шапочка…

На ноги — ботиночки, на глаза челочку, взгляд потупил и на улицу… Иконка пироженкой, «волшебная сказка» в названии. 25 установок в день…
Ухмыльнись и пройди мимо.

Но у книги был один маленький недостаток — внутри она была прекрасна.

что мы сделали
Total votes 70: ↑55 and ↓15+40
Comments22

Information

Rating
Does not participate
Registered
Activity