Не смотря то, что Apple предоставляет довольно полный SDK для iPhone, иногда необходимо приложение, выходящие за рамки документированных возможностей. Пример такого приложения — Veency, VNC сервер для джейлбрейкнутых iPhone'ов.
Я бы хотел поделиться опытом компиляции Veency «с нуля». Надеюсь, что этот пост окажется познавательным.
Проблема
Необходимо внести небольшие изменения в код VNC сервера для джейлбрейкнутого iPhone'а, перекомпилить и установить на девайс. Имеется: девайс, Ubuntu 9.04 и мак.
Не так давно развлёк коллег интернет-охотой. До добычи добрался только один. Мне кажется, что получилось интересно, так что представляю охоту хабрапользователям.
Цель охоты — найти хорошо спрятанный e-mail адрес и отправить на него сообщение.
За последнее время скопилось несколько различных мыслей. Надеюсь, какие-то из них покажутся интересными.
Итак, в солянке:
1. Java: что такое ThreadLocal и InheritableThreadLocal
2. Palm Pre: личные впечатления
3. Android: как развернуть сервер на телефоне
4. Интерфейсы: концепция страницы «про нас»
5. Книжки: впечатления от Pragmatic Thinking and Learning: Refactor Your Wetware
На протяжении некоторого времени я активно читал книжки и статьи про различные методы достижения успеха. Материалы эти были совершенно разные: брошюры «как изменить себя за 10 дней», статьи на некоторых интернет-ресурсах, книжки из серии «помоги себе сам», простенькие учебники по психологии, записки успешных людей.
Прочитав, осознав, и кое-что попробовав, я пришел к выводу: я не стану успешным.
В последнее время на Хабре было предложено довольно много идей для капчи. Сложная, умная, смешная, капча остаётся одним из основных способов защиты формы от ботов.
Однако, одновременно с этим, капча является проблемой юзабилити, поскольку заставляет пользователя выполнять лишнее действие.
В этом обзорном посте я бы хотел рассмотреть незаметные для пользователя методы защиты от ботов.
Мне очень не нравится заполнять капчи. Хотя я вроде не робот, у меня частенько возникают проблемы с распознаванием букв (и чисел), решением арифметических задач, поиском спрятанных кошек и т. п.
Однако, как разработчик, я понимаю, что капча — это один из фронтов борьбы со спам ботами. Лучше методов пока немного, так что капча является не очень приятной необходимостью.
В этом посте хотел бы предложить идею для капчи которая, с моей точки зрения, является чуть более естественной для человеков.
1. Пользователь заходит на сайт
2. Пользователь находит что-то, что он хочет купить/скачать/сохранить
3. Пользователь переходит на страницу регистрации
4. Пользователь вводит свою информацию и ждёт письма с ссылкой активации
5. Пользователь получает письмо и переходит по ссылке
6. Пользователь попадает либо на страницу активации, либо на страницу логина, либо на страницу, откуда он начал регистрацию
7. Пользователь снова находит то что он хотел купить/скачать/сохранить
8. Пользователь покупает/скачивает/сохраняет
Суть проблемы: пользователь теряет контекст своего действия. После регистрации он вынужден снова искать то, что он изначально хотел купить/скачать/сохранить.
Я работаю с удивительным человеком. Каждый раз, когда я смотрю в bugzill'у или проверяю почту, я им поражаюсь. Иногда мне кажется, что он мог бы стать неплохим писателем. Во всяком случае графоман из него отличный.
Этот разработчик принимает документирование очень близко к сердцу.
Я иногда провожу интервью кандидатов на работу. Помимо определения профессиональных навыков кандитата в мои обязанности входит «погонять человека по задачкам».
Я бы хотел поделиться набором задач, которые были собраны мною по интервью, знакомым, интернет ресурсам, просторам собственного воображения. Хотелось бы услышать мнение о сложности/адекватности этих задач и, возможно, пополнить свою коллекцию.
Внимание: это довольно простая задачка. Она хорошо подходит для интервью и решатся в уме минут за 10.
Итак, не так давно я путешествовал на поезде из Питера в Анапу и обратно. Из Питера поезд вышел в 17:00, был в пути ровно 49 часов и пришел в Анапу в 18:00 через два дня. Обратный поезд выходил из Анапы в 21:00, был в пути тоже 49 часов и пришел в Питер в 22:00 через два дня.
По дороге я поглядел на расписание и заметил, что поезда выходят из Питера в Анапу и из Анапы в Питер каждый день недели в 17 и 21 час соответственно. Я задался вопросом: каково минимальное количество поездов необходимое, для того, чтобы придерживаться расписания?
Замечание 1: поезда идеальны (всегда ходят из П в А и из А в П за 49 часов, не ломаются, могут быть переиспользованы сразу); поезда всегда отправляются в 17:00 и 21:00 (пассажиры не опаздывают, машинист не уходит в запой)
Замечание 2: правильный ответ этой задачи есть в точности число поездов, которое использует РЖД (я спрашивал у проводницы); увы, замечание 1 на РЖД не распространяется :)
Не так давно мне пришлось поработать с Android и iPhone SDK. Многое мне понравилось, многое удивило. Я решил сравнить оба SDK с точки зрения разработчика: