Архив Январь 9, Понедельник, 2012
Январь 9, Понедельник, 2012
Здравствуй, %habrauser%.
Сегодня я покажу как не надо закрывать от индексации зеркало сайта, и как правильно надо.
Предыстория
Я работаю web-мастером в одной крупной для нашего города компании.
Мы сделали клиенту сайт, для рекламирования и продажи своей продукции.
Клиент выбрал доменное имя, и сайт около года успешно работал, и сайт по настоящее время у нас обслуживается и редактируется.
Затем клиент захотел второй домен для сайта, но в зоне РФ.
Он самостоятельно нашёл «профессиональных продвижителей», который стояли на первом месте в выдаче яндекса по определенным запросам.
С ними он заключил договор, и ежемесячно отгружал немалую сумму денег в seo компанию.
Спустя пару недель сеошники наконец проснулись, связались с нами и получили ftp доступы к сайту, а так же пароль от админки сайта.
Началась «оптимизация»
Всё началось с того, что они не разобрались в движке сайта PHPShop.
Отправили нам письмо, мы им сообщили где что редактируется и что в каком файле находится, а так же в довесок дали немного ссылок на официальную документацию.
Январь 9, Понедельник, 2012
Я хочу описать простой минималистский подход к разработке сложных JavaScript приложений. Из внешних библиотек будут использоваться только jQuery и мой js-шаблонизатор, причём из jQuery используются только $.ready(), $.ajax() и $.proxy() — т.е. суть не в библиотеках (их тривиально заменить на предпочитаемые вами), а в самом подходе.
В основе подхода лежат две идеи:
- JavaScript виджеты — небольшие модули, каждый из которых «владеет» определённой частью веб-странички (т.е. всё управление этой частью странички происходит исключительно через методы этого модуля, а не через прямую модификацию DOM — инкапсуляция). Виджет отвечает исключительно за функциональность, но не за внешний вид; поэтому прямая модификация части DOM, которым «владеет» виджет, снаружи виджета допускается — но только для чисто дизайнерских задач (для архитектуры и общей сложности приложения нет принципиальной разницы между коррекцией внешнего вида через CSS или jQuery).
- Глобальный диспетчер событий. Взаимодействие между виджетами осуществляется путём посылки сообщений глобальному диспетчеру (слабая связанность, паттерн Mediator/Посредник), а уже он принимает решение что с этим сообщением делать — создать/удалить виджеты, дёрнуть методы других виджетов, выполнить дизайнерский код, etc. В отличие от динамического подхода к обработке событий (когда обработчики конкретного события добавляются/удаляются в процессе работы) статический диспетчер сильно упрощает понимание и отладку кода. Безусловно, есть задачи, для которых нужны именно динамические обработчики событий, но в большинстве случаев это избыточное усложнение, поэтому всё, что можно, делается статическими обработчиками.
Январь 9, Понедельник, 2012
Вышла новая версия знаменитой уже карты мира С++ от Алёны Сагалаевой и Джима. На карте отражены последние изменения, пришедшие к нам со стандартом С++11 — обратите внимание на хамелеона auto, Пресловутые Врата Анонимности, руины крепости std::auto_ptr и новые боевые юниты STL. Наслаждайтесь!

Оригинальный размер (18 Мб)
Зеркало
P.S. Копирайт Алёны позволяет делать с картой что-угодно.
Январь 9, Понедельник, 2012
В начале прошлого года мною уже поднималась тема пост-эксплуатации в домене Microsoft Active Directory. В предложенном ранее подходе рассматривался вариант ориентированный больше на случай утери административных привилегий, нежели их непосредственное использование. При этом само действо по возврату этих привилегий подразумевало «шумные» события и визуально палевные манипуляции в каталоге. Другими словами, для того, чтобы вернуть себе административные привилегии в домене, требовалось стать участником соответствующей группы безопасности, например, группы «Domain Admins».
Надо сказать, что администраторы очень волнуются, когда неожиданно осознают присутствие в своей системе кого-то еще. Некоторые из них бросаются всеми силами обрабатывать инцидент безопасности. Порой, самыми непредсказуемыми действиями
)
Январь 9, Понедельник, 2012
Буду краток:

Подробности, что еще не работает, и как это установить — под катом.
Январь 9, Понедельник, 2012

Цель данного подкаста – дать всем, кого интересует профессия «разработчика ПО» или «программиста», информацию, достаточную для обдуманного принятия решения относительно развития своей карьеры. В этом подкасте, я опишу основные понятия в разработке ПО, ситуацию на рынке, особенности работы, и другие полезные вещи, которые лучше знать сейчас, пока вы еще не пошли учиться или работать.
Подкаст на PodFM • RSS • Мой блог
Январь 9, Понедельник, 2012
KCaptcha – довольно распространенная PHP библиотека для генерации CAPTCHA. Я довольно давно знаком с этим проектом, и так же давно меня не покидает одна мысль: «как там внутри все работает, как оно все устроено»? Да, бывает такое: мозг выделяет что-то, на первый взгляд крайне неприметное и непритязательное, но затем долгое время не упускает это что-то из головы. Так было с программированием, когда я впервые увидел кусочек кода на JavaScript, так стало и с библиотекой от Сергея Круглова, которую я и решил изучить.
Но обо всем по порядку. Не буду скрывать, разобрать и понять KCaptcha я пытался много раз. Мои попытки заканчивались неудачей. Этому способствовали, и минимум свободного времени, и очень малое количество комментариев в коде, и проблемы с мотивацией (она держалась только на интересе), но главным образом, конечно, отсутствие хоть какого-то опыта за плечами.
Шло время, я то брался за KCaptcha, то опять бросал. Но раз за разом, по маленьким шажочкам приходило понимание кода. Общая картина постепенно вырисовывалась. Возможно, кому-то это покажется смешным: подумаешь, генерация случайного ключа плюс вывод на изображение! Мне так не казалось. Сейчас я смотрю на данные алгоритмы немного свысока, но память о попытках понять, казолось бы запутанный и временами не поддающийся осмыслению код, не дает возможности посмеяться над собой.
А зачем вообще ковыряться в коде? Подключил, и используй себе на здоровье! Благо, библиотека позволяет легко абстрагироваться от ненужных деталей. Этот вопрос я задавал и себе, пока мне не пришлось работать над одним ASP.NET проектом. Тогда возникла необходимость в защите некоторых страниц от спаммеров. Думаю, не нужно объяснять, что самый простой и распространенный способ защититься от ботов это каптча.
Раньше я не использовал в работе ничего кроме PHP и, рузумеется, никогда не видел CAPTCHA-решений под .NET. Быстрый поиск в гугле ничего кроме оберток ReCaptcha на C# не дал. Более глубокий анализ хостингов для opensource проктов привел к некоторым результатам, но то были давно заброшенные, незаконченные поделки. Они даже отдаленно не напоминали знакомую и уже частично изученную KCaptcha.
За все предыдущее врямя я немножко поднабрался опыта, да и с мотивацией теперь был полный порядок. Решено! Мне предстоит перенос KCaptcha с PHP на .NET.
Январь 9, Понедельник, 2012
На Хабре неоднократно обсуждалось использование SL4A (Android Scripting) — интерпретатора, который запускает под Android скрипты на Python, Perl, JRuby, JS, PHP и др. Однако, чтобы эти скрипты заработали, нужно установить на телефон SL4A. Ещё один недостаток — вы не можете упаковать приложение в формат .apk.
Разработчики из компании Kivy сделали удобный инструмент, который помогает создать готовый .apk с всеми необходимыми модулями и библиотеками Python и вашим приложением внутри. Для создания GUI используется OpenGL ES 2.0.
См. Python for Android на github, там же есть инструкция по созданию дистрибутива Python и компиляции APK на его основе.
Похожий проект: PGS4A.
Январь 9, Понедельник, 2012

На днях Apple запатентовала метод, который призван повысить безопасность данных пользователей, если, к несчастью, их устройство было потеряно или украдено.
В патенте под номером 2012/0005747 приводится следующее рассуждение: "… Если пароль для устройства или сложный или его трудно восстановить, то покупатель или вообще от него откажется или будет использовать слишком простой". Поэтому, в случае потери или кражи устройства, злоумышленник с большой долей вероятности получит неограниченный доступ к Macbook или iPhone без особых проблем.
Далее, рассуждают в Apple, поскольку покупатели чаще всего лишаются самих устройств, а не их «зарядок», то предлагается поступить следующим образом: зарядное устройство снабжается неким модулем памяти, который хранит или зашифрованный пароль или кодовую фразу («Как звали Вашу первую учительницу»). При включении злоумышленником краденного ноутбука при стандартном приглашении ввести пароль, он увидит помимо обычной кнопки подтверждения и кнопку «Забыл пароль», которая потребует от него подключить «зарядку», в которой сохранен или пароль или ключ кодовой фразы. Если это произойдет, то будет выполнена аутентификация с использованием данных подключенной «зарядки» и, очевидно, что с ноутбуком работает или законный хозяин или предусмотрительный вор, который смог украсть сразу всё у зазевашегося владельца.
Технология будет работать также и со смартфонами.
[Патент — pdf]
Январь 9, Понедельник, 2012

1. Прошу прощения, что долго не писал.
2. Готов PS2 SDK.
Я хотел не упускать CD(DVD)-ROM Library, поэтому ссылки и гайд по установке PS2 SDK вы найдете в конце второй части этой статьи.
Тема достаточно сложная. Также буду благодарен, если кто-нибудь перельет на другой не платный хостинг PS2 SDK.
PS2 SDK доступен тут. Narod.ru.
Магнет (ссылка нормально не вставляется благодаря хабра-парсеру): magnet:?xt=urn:btih:F6114E45C5E392E6D213F2547C466FADB5DA5A13&dn=sce.zip&tr=udp%3a//tracker.openbittorrent.com%3a80/announce
Еще одна ссылка. Спасибо Konstantinus и ahmpro