Как стать автором
Обновить
0
0

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

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

[Фреймворк формирования полезных привычек] и максимального вовлечения юзеров на примере изучения английского языка

Время на прочтение14 мин
Количество просмотров13K
Возможно, вам знакомо чувство (особенно, если вы разработчик), когда на глаза попадается отличная статья/идея с интересной теорией, которую непременно хочется протестировать на практике. К сожалению, часто рутинные обязанности и задачи отвлекают от внедрения самых интересных фич.

В течение многих лет я жадно собирал всевозможные материалы о привычках, которые складировались на уютных виртуальных полках в Pocket и Workflowy. Но год назад я наконец-то заставил себя начать мини-исследование, чтобы протестировать, насколько легко заставить теорию работать на практике.

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

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


Всего голосов 15: ↑15 и ↓0+15
Комментарии5

Библиотека быстрого поиска путей на графе

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

Привет, Друзья!


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


Пример использования на огромном графе:



Поиграться с демо можно здесь


В библиотеке используется мало-известный вариант A* поиска, который называется NBA*. Это двунаправленный поиск, с расслабленными требованиями к функции-эвристике, и очень агрессивным критерием завершения. Не смотря на свою малоизвестность у алгоритма отличная скорость сходимости к оптимальному решению.


Описание разных вариантов A* уже не раз встречалось на хабре. Мне очень понравилось вот это, потому повторяться в этой статье я не буду. Под катом расскажу подробнее почему библиотека работает быстро и о том, как было сделано демо.

Читать дальше →
Всего голосов 114: ↑112 и ↓2+110
Комментарии53

Взлом Wi-Fi

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

Взлом маршрутизаторов WPA/WPA2 Wi-Fi с помощью Airodump-ng и Aircrack-ng/Hashcat


Это краткое пошаговое руководство, которое демонстрирует способ взлома сетей Wi-Fi, защищённых слабыми паролями. Оно не исчерпывающее, но этой информации должно хватить, чтобы вы протестировали свою собственную сетевую безопасность или взломали кого-нибудь поблизости. Изложенная ниже атака полностью пассивна (только прослушивание, ничего не транслируется с вашего компьютера) и о ней невозможно узнать, если вы только реально не воспользуетесь паролем, который взломали. Необязательную активную атаку с деаутентификацией можно применить для ускорения разведывательного процесса. Она описана в конце статьи.
Читать дальше →
Всего голосов 77: ↑64 и ↓13+51
Комментарии51

Best practices от Google по разработке Android приложений

Время на прочтение8 мин
Количество просмотров45K
В данной статье я хотел бы вкратце рассказать про самые последние best practices от Google. Я постарался выделить самые основные моменты, чтобы читатель сразу мог понять, что именно какая-либо фича дает разработчику. Не удивляйтесь, если где-то повторяюсь. Конспектировал + добавлял от себя по ходу просмотров видео в www.youtube.com/channel/UCVHFbqXqoYvEWM1Ddxl0QDg

Также к каждому пункту приводятся все необходимые ссылки для более подробного ознакомления с конкретной best practice.
Читать дальше →
Всего голосов 32: ↑30 и ↓2+28
Комментарии18

Ещё раз (надеюсь, последний) про double-checked locking

Время на прочтение4 мин
Количество просмотров52K
Статей про double-checked locking на Хабре было столько, что казалось бы ещё одна — и Хабр лопнет. Вот только по Java неплохие публикации: Реализация Singleton в JAVA, Правильный Singleton в Java, А как же всё-таки работает многопоточность? Часть II: memory ordering или вот замечательный пост от TheShade (слава web-archive!). В наши дни, наверно, каждый Java-разработчик слышал, что если используешь DCL, будь добр объявить переменную volatile. Найти сегодня в коде известных опенсорсных проектов DCL без volatile довольно трудно, но оказалось, что проблемы ещё не полностью решены. Поэтому я добавлю небольшую заметку по теме с примерами из реальных проектов.

Иногда складывается ощущение, что программисты не включают мозги и не пытаются понять, как что работает, а просто следуют простым и понятным правилам вроде «объяви переменную volatile, используй DCL, и всё будет хорошо». К сожалению, такой подход в программировании не всегда работает.
Читать дальше →
Всего голосов 54: ↑49 и ↓5+44
Комментарии116

Элегантный Builder на Java

Время на прочтение7 мин
Количество просмотров145K
Наверняка большинство сколько-нибудь опытных программистов знакомы с паттерном Builder. Он позволяет сделать инициализацию структур данных более наглядной, гибкой при этом сохраняя такое полезное их свойство как неизменяемость (immutability). Вот классический пример с первой страницы выдачи гугла на запрос «java builder pattern example». При всех своих преимуществах, самый главный недостаток данной реализации паттерна — в два раза больше кода, по сравнению с обычным плоским бином. Если генерация этого дополнительного кода не проблема для любой популярной IDE, то редактировать такой класс становится достаточно утомительно и читабельность страдает в любом случае.
Что же делать?
Всего голосов 31: ↑21 и ↓10+11
Комментарии86

ObjectManager в API Яндекс.Карт. Как быстро отрисовать 10 000 меток на карте и не затормозить всё вокруг

Время на прочтение10 мин
Количество просмотров111K
Перед разработчикам, которые используют API Яндекс.Карт, довольно часто встаёт задача отобразить много объектов на карте. Действительно много — порядка 10 000. Причем эта задача актуальна и для нас самих — попробуйте поискать аптеки на Яндексе. На первый взгляд кажется: «А в чем собственно проблема? Бери да показывай». Но пока не начнешь этим заниматься, не поймешь, что проблем на самом деле целый вагон.



Вопросы по большому количеству меток с завидной регулярностью поступают в наш клуб и техподдержку. Кто все эти люди? Кому может быть интересно показать на карте больше 10 меток? В этом посте я подробно рассмотрю весь вагон проблем и расскажу, как в API появились инструменты, помогающие разработчикам оптимально показать большое количество объектов на карте.
Читать дальше →
Всего голосов 93: ↑89 и ↓4+85
Комментарии85

Слушаем Pandora.com с использованием бесплатного VPN

Время на прочтение2 мин
Количество просмотров4.7K
Наверняка многие хабражители уже давно распробовали на вкус замечательный музыкальный сервис, под названием Pandora.com. Наверняка многие из них, проживающие за пределами США, ни раз видели сообщение о «неверном» IP, забыв вовремя заплатить за VPN. Сегодня я попытаюсь рассказать, как избежать таких ситуаций раз и навсегда.
Читать дальше →
Всего голосов 42: ↑34 и ↓8+26
Комментарии75

Все ходы записаны

Время на прочтение20 мин
Количество просмотров51K
   Я считаю, что одним из главных устройств, которое должно быть в любом автомобиле, является видеорегистратор. Что это такое и для чего он нужен? По большому счету, это небольшая штука, основная задача которой – записывать всё то, что видит водитель в лобовое стекло своего автомобиля. За этот «бесполезный» кусок китайской пластмассы иной раз хотят очень много денег, поэтому многие считают его покупку нецелесообразной, предпочитая купить какой-нибудь сабвуфер. Однако в жизни любого водителя может случиться (тьфу-тьфу-тьфу) такой момент, когда подобное устройство может оказаться единственным спасением – пройдет всего какой-то миг, а видеорегистратор, в отличие от того же сабвуфера, успеет многократно окупиться. От приключений на дороге никто не застрахован, просто одни вздохнут с облегчением, а к другим моментально придет понимание, что регистратор все-таки нужен. Был.

image

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

Читать дальше →
Всего голосов 263: ↑223 и ↓40+183
Комментарии179

Архитектура Adobe Flex 3 компонентов для новичка

Время на прочтение7 мин
Количество просмотров3.3K
Знакомиться со Adobe Flex мне пришлось в почти боевых условиях. Неожиданно понадобилось писать что-то работающее, пользуясь лишь примерами из Интернета и помощью старших товарищей. Поблизости не было ни одной книги по Flex, да и времени на чтение тоже, что сильно сказалось на теоретической базе. Многое делалось на ощупь простым русским методом проб и ошибок. Чтож, попробовать пришлось порядочно. Сейчас, глядя назад, я понял, что многие грабли можно было избежать, если бы имелась под рукой простая вводная статья объясняющая что к чему. Под катом собраны 3 вопроса, из-за недопонимания которых у меня чаще всего возникали проблемы. Надеюсь, ответы на них помогут начинающим быстрее разобраться в тонкостях построения компонентов этого фреймворка.

Читать дальше →
Всего голосов 41: ↑34 и ↓7+27
Комментарии12

Я разрежу тебя на тайлы. Часть первая

Время на прочтение5 мин
Количество просмотров11K
image Несмотря на все мои попытки к исправление ситуации с технологиями загрузки данных на карту, люди все продолжают и продолжают работать по старинке, загружая либо все данные вьюпорта при малейшем движении карты, либо просто загружая все данные вообще.
Покуда метры направления растеризует маркеры в картинки, строят супер системы группировок и кластеризаций и дрожат над каждым лишним килобайтом в скриптах, давайте я расскажу самый простой, стабильны, и банальный способ сделать жизнь свою, своих пользователей, своих карт и своего сервера чуть прекрасней.
Как будет сказано чуть позже покорение карт состоит из 5ти шагов.
Первый из них это загрузка карты( не все так просто как думается ), а вот второй — это загрузка на эти самые карты данных.
Он то нам и интересен.
Читать дальше →
Всего голосов 60: ↑43 и ↓17+26
Комментарии11

Почта на 5 минут или temp mail box

Время на прочтение2 мин
Количество просмотров12K
Думаю знакомая ситуация, когда необходимо где то зарегистрироваться, но светить свою почту желания нету. Например что бы просто посмотреть на функционал какого нибудь сервиса, или что бы получить ссылку с форума, администрация которых любит их прятать от гостей.

Для таких случаев существует несколько почтовых сервисов, которые предоставляют «временный» почтовый ящик.
Суть заключается в том, что вы просто вводите имя ящика или сервис генерирует его вам и получаете в распоряжение mailbox в который можно получить письмо, а потом о нём забыть.

Подобные сервисы делятся на два типа, те которые просто предоставляют ящик и те которые предоставляют форвардинг на ваш email. К второму типу я отношусь скептически ибо зачем оставлять свой ящик, не известно кому, если цель всех этих действий его скрыть. Но всё таки ссылки на них приведу ведь не стоит забывать, что если вы сделали себе ящик с именем 'asd', то его кроме вас посетят ещё много-много людей.

Read more →
Всего голосов 15: ↑15 и ↓0+15
Комментарии17

HL7 — электронный медицинский документооборот

Время на прочтение8 мин
Количество просмотров44K
В рамках одного исследования возникла потребность в описании стандарта электронного медицинского документооборота HL7. Как результат появилась эта статья. Делюсь с хабра-сообществом, надеюсь будет интересно.

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

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

Тестирование поведения приложения в условиях нехватки памяти

Время на прочтение2 мин
Количество просмотров7.3K
В android мы можем перехватить событие low memory для нашего приложения или активити, путем установки им через registerComponentCallbacks в качестве обрабочика наследника от интерфейса ComponentCallbacks переопределив ему метод onLowMemory.

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

Так же система гарантирует что после вызова onLowMemory будет вызвана системная сборка мусора (garbage collector)

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

И есть и второй способ — изменить данный лимит, о чем собственно и речь пойдет ниже.
Читать дальше →
Всего голосов 31: ↑31 и ↓0+31
Комментарии12

Дюжина логических задач с собеседований

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

Не знаю, как у вас, но у меня любимая часть интервью — логические задачи.
Довелось пройти немало собеседований на вакансию разработчика, поэтому набралась небольшая коллекция.
Спешу поделиться с вами!

Некоторые задачи проще и широкоизвестные, другие заставляют хорошенько задуматься.
Ответы пока что публиковать не буду, надеюсь, вы сами сможете всё решить.
Предлагаю размять свой мозг…
Читать дальше →
Всего голосов 71: ↑55 и ↓16+39
Комментарии244

Собеседование на должность JavaScript разработчика

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


Недавно прочитал неплохой пост на тему поиска работы QA и подумал, что похожий пост был бы полезен для JavaScript разработчиков. В конечном счёте, веб движется вперед семимильными шагами, и соискателей на позицию JavaScript программиста хоть отбавляй (разумеется, хороших всегда меньше).
Читать дальше →
Всего голосов 126: ↑115 и ↓11+104
Комментарии313

Google Maps clustering

Время на прочтение7 мин
Количество просмотров47K
Если вы занимаетесь разработкой приложений, использующих Google Maps, то вполне можете столкнуться с ситуацией, изображенной на картинке слева. И, если вы считаете, что картинка справа выглядит лучше, то вам сюда.

image
Читать дальше →
Всего голосов 29: ↑27 и ↓2+25
Комментарии7

Горизонтальное масштабирование небольших Web-приложений на Java (вопросы собеседований)

Время на прочтение4 мин
Количество просмотров35K
Эта тема была поднята в ходе нескольких (3+) собеседований который я прошёл за последние полтора месяца — в разных вариациях но примерно об одном. Казалось бы, известные вещи — но собрав все ответы и объяснения какие я давал (и кое-что что нашёл позже в гугле), решил сохранить их не у себя в гугл-драйве, а написать краткий обзор.

Речь шла о небольших и типовых приложениях Enterprise / Web на Java, каких пишется множество (ну такие, на 10-100 тысяч клиентов, миллион посещений и т.п.). Пусть это будет обобщённый диалог в виде вопросов и ответов.

 

В: Допустим, у вас есть приложение (самое обычное — JSP, Spring, Hibernate например) развернутое на томкате (Apache Tomcat) и вы однажды замечаете что сервер с томкатом загружен на 80% в среднем. Что делать?

Читать дальше →
Всего голосов 53: ↑44 и ↓9+35
Комментарии87

FileAPI 2.0: Загрузка файлов на сервер год спустя

Время на прочтение11 мин
Количество просмотров70K
FileAPI 2.0Привет Хабр! Примерно год назад я представил вашему вниманию первую версию open-source библиотеки FileAPI, предназначенную для работы с файлами на клиенте и последующей загрузки на сервер.

За это время был пройден долгий путь. Библиотека заработала 670+ звезд и 90+ форков. С помощью github-сообщества удалось исправить множество «детских» проблем и внести ряд улучшений. Было закрыто более 100 тасков, и благодаря Илье Лебедеву сделана загрузка файлов по частям. Сегодня я с гордостью хочу представить вам FileAPI 2.0.
Читать дальше →
Всего голосов 166: ↑157 и ↓9+148
Комментарии85

Десятка лучших консольных команд

Время на прочтение2 мин
Количество просмотров198K
imageВ данном посте я расскажу о наиболее интересных командах, которые могут быть очень полезны при работе в консоли. Однозначных критериев определения какая команда лучше другой — нет, каждый сам для своих условий выбирает лучшее. Я решил построить список команд на основе наиболее рейтинговых приемов работы с консолью от commandlinefu.com, кладовой консольных команд. Результат выполнения одной из таких команд под Linux приведен на картинке. Если заинтересовало, прошу под кат.
Узнать больше
Всего голосов 382: ↑346 и ↓36+310
Комментарии215

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность