Search
Write a publication
Pull to refresh
0
0

User

Send message

История одного проникновения

Reading time8 min
Views4.2K
Топики о ловли хакеров заставили меня написать этот пост.

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

Сразу скажу, мое увлечение — безопасность веб-приложений.

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

Читать дальше →

Mantis + Subversion у себя на компьютере с Windows XP. Пошаговая инструкция для удобной организации работы с кодом

Reading time6 min
Views5.7K

Исторически сложилось, что багтрекер в нашей команде – это Mantis. Для работы над ошибками очень хорошая и простая в обучении система. Буквально садись и работай. Но для удобной организации работы ей явно не хватает связки с Subversion. В связке Subversion+Mantis помогают организовать работу с кодом небольшой команды программистов. Более подробно про организацию работы у нас я описал в прошлой статье.
А сейчас давайте поговорим, как установить Subversion у себя на компьютере и связать его с Mantis на сервере.
Читать дальше →

Фокус с HeadScript (сборка в один файл)

Reading time8 min
Views3.2K
Если сделать так:
<?php $this->headScript()->appendFile('/js/my1.js');?>
<?php $this->headScript()->appendFile('/js/my2.js');?>
<?php $this->headScript()->captureStart() ?>
  var action = '<?php echo $this->baseUrl ?>';
<?php $this->headScript()->captureEnd() ?>

<?php echo $this->headScript(); ?>
<?php echo $this->magicHeadScript(); ?>


то вместо чего-то типа такого:
<script type="text/javascript" src="/js/my1.js"></script>
<script type="text/javascript" src="/js/my2.js"></script>
<script type="text/javascript">
  var action = '/123';
</script>

получим на выходе:
<script type="text/javascript" src="/cache/js/1b1004a203..._compressed.js"></script>

Читать дальше →

«Наследование» не от классов

Reading time5 min
Views5.2K
image
В Питоне совсем не важно, что вы поместите в определение класса. Это могут быть строки, числа, объекты, переменные. В третьем Питоне можно даже передавать именованные аргументы.
Реализация

Материалы продвинутого уровня по Питону

Reading time5 min
Views46K
PythonВ мире все примерно распределяется в соответствии с принципом Паретто. Меньшая часть — богатые, большая часть — бедные (читающий, ты входишь в золотой миллиард). Тоже касается и материалов о программировании. Порой очень сложно найти хоть что-нибудь не начального уровня.

После прочтения Dive into Python или подобной ей и ознакомления с документацией возникает вопрос, а что читать дальше? Можно обратиться к списку книг на python.org. Там есть раздел Advanced Books, но в нем всего лишь 6 книг (седьмая не выходила), и только одну я бы назвал по-настоящему стоящей.

К счастью, у Питона есть очень подробная и качественная документация. Но даже в ней многие темы либо только поверхностно затронуты, либо их очень сложно найти (потому что документация большая, и если не знаешь, куда смотреть, не найдешь).

Ниже собраны сложные материлы про Питон, его устройство и возможности. Все на английском (грех, не знать технический английский). Про Dive into Python я слукавил. Большинство приведенных материалов требуют хорошее знание Питона и наличие опыта программирования на нем.

Подробнее

iLoad 3 — javascript галерея изображений

Reading time1 min
Views13K
Я разработал хорошую на мой взгляд галерею изображений под названием iLoad. Сегодня опубликовал уже 3 версию. Галерея может достаточно много всего, хотя и работает только с изображениями. Подробнее можно прочитать в большущем посте вот тут или посмотреть на работу галереи на странице скачивания. Надеюсь, вы оцените.

UPD

Подготовил версию 3.2.5. Теперь галерея стабильно работает в IE9. Пофиксены все найденные баги.

Стартап Интернет-магазина (опыт и советы)

Reading time9 min
Views16K
Сей пост про некий опыт электронной коммерции. Проще — история создания и развития интернет-магазина. Так что, прощай карма. :)
Цель — поделиться опытом. Постараюсь по мере развития сюжета делать акцент на том, на что стоит обращать внимание при развитии бизнеса с нуля.
На хабре уже не раз писали о том, кто да как что сделал. Писали из цифрами и без. Я не ставлю своей целью в этом посте выложить готовый бизнес-план, т.к. у нас его не было в том виде в котором он должен быть. Будут цифры (пусть не все, но ключевые), будут выводы, ну и, конечно, каснемся темы магазинов. Этот пост скорее для тех, кто совершенно ничего не знает (или очень мало знает) о том, как заняться чем то своим… бизнесом вроде.
Читать дальше →

Веб-аналитика: анализируй это! Часть 4. От статистики к аналитике

Reading time3 min
Views8.5K
Прошу простить за большую паузу между выпусками рассылки: мне нужно было время на подготовку к проведению большого тренинга и разгребание новых материалов. Что ж, много времени прошло, многое изменилось — даже слово “Интернет” теперь нужно писать с большой буквы! Больше такого не повторится, так что продолжим наше путешествие. Напомню адреса прошлых выпусков:

Часть 1. Вступление.
Часть 2. Сбор данных.
Часть 3. Базовые метрики.

Перед тем, как перейти к описанию метрик и технологий анализа, хочу еще раз напомнить о том, зачем мы тратим на это своё время.
Читать дальше →

Что такое стартап? Основы от Стива Бланка

Reading time3 min
Views4.4K
Успех состоит из пути от одной ошибки к другой без потери энтузиазма.
Уинстон Черчиль


Каждый знает, что такое стартап. Разве нет?
Я бы предложим новое объяснение тому, почему появляются стартапы: стартап – это организация, созданная для поиска повторяемой (в англ.оригинале «repeatable» – в значении «не одноразовая модель», а НЕ «бизнес-модель, которую можно повторить») и масштабируемой бизнес-модели.

Бизнес-модель


Хорошо, а что такое бизнес-модель?
Бизнес-модель описывает, каким образом ваша компания создает, достигает и завоевывает ресурсы.
Простым языком, бизнес-модель описывает, как ваша компания зарабатывает деньги (в вашей системе координат это могут быть успех, новые пользователи, прирост трафика и т.п.)
Представьте, что бизнес-модель – это диаграмма, на которой показаны все связи между различными частями вашей организации. Эта диаграмма показывает и то, как ваша продукция попадает к покупателям и как оплата за эти продукты попадает к вам. Также она демонстрирует структуру затрат, как каждый отдел компании взаимодействует с другими, как ваша компания интегрирована в рынок и взаимодействует с партнерами. Слова словами – проще отобразить на схеме.

Схема бизнес-модели


Много людей пытались понять, как лучше отобразить диаграмму или схему бизнес-модели. Мои студенты занимались этим годами, но работа Александра Остерволдера (Alexander Osterwalder) это лучшее, что я увидел за последние десять лет. Его диаграмма – это универсальный образец бизнес-модели. Ваша собственная бизнес-модель будет иметь свойственные только ей нюансы.
Читать дальше →

Рекомендации друзей для социальных сетей

Reading time2 min
Views1.8K
Не давно писал как можно рекомендовать товар в Интернет-магазинах или других местах, используя информацию о пользователе. Сейчас хочу показать алгоритм, который позволяет рекомендовать друзей, например в социальных сетях.

Первый шаг, представим информацию о пользователя в интервальной шкале и рекомендуем пользователю друзей используя коэффициент корреляции Пирсона, который будет измеряет степень линейной зависимости между двумя интервальными переменными. Например, у нас есть 4 пользователя: Дима, Анна, Петя и Саша. Мы знаем о них информацию, которую представляем в виде чисел в массиве (интересы, блоги, возраст и т.д.)
Читать дальше →

Как стать успешным фрилансером

Reading time12 min
Views35K
Это статья о работе фрилансеров. Сам я много раз выступал как в роли заказчика, так и в роли исполнителя работ; наш аккаунт на free-lance.ru занимает 5 место в рубрике "сайты под ключ", хотя ему всего 9 месяцев (пока писал, сместился на 6-ое место).
Хочу поделиться с вами некоторыми соображениями об успешном фрилансе.

1. Правильное взаимодействие с заказчиком – половина успеха.

Грамотное общение с заказчиком – это половина успеха проекта. Помните, недостаточно быть хорошим программистом или дизайнером, чтобы быть успешным фрилансером. Вы еще и менеджер. Много зависит от того, как вы сумеете продать свои услуги, как будете общаться с заказчиком в процессе выполнения работы.
Заказчика в основном интересуют три вещи: адекватность исполнителя, его опыт (портфолио) и цена. Чуть менее – сроки работ.
Показать то, что вы вполне адекватный человек, с которым можно работать – это самое легкое из этого списка. О некоторых простых вещах при общении многие фрилансеры забывают. Не выставляйте заказчика дураком, даже если он действительно совершенно не разбирается в вопросе. Не дайте почувствовать ему себя ламером. Объясните ему суть вопроса без использования узкопрофессиональных терминов, посоветуйте лучший вариант реализации. При общении не используйте сленг, обращайтесь к заказчику на «вы», пишите без грамматических ошибок. Особенно актуально, когда вы говорите с потенциальным клиентом — вы ничего о нем не знаете. Может он старше вас в два раза и обращение «привет» его коробит.

Покажите похожие проекты, если такие имеются. Это сильно повышает шансы на то, что заказчик выберет вас. Называйте адекватные сроки, не занижайте их в угоду заказчику. Рассчитывайте свою загруженность, сможете ли реально уложиться в срок. Лучше планировать с запасом, так как часто возникают непредвиденные обстоятельства – друг позвал в гости, заболели, интернет вырубился.

Каждый заказчик хочет заплатить поменьше, получить побольше. Это нормальное желание каждого клиента и покупателя. Но все имеет свою стоимость. И не каждый это понимает, пытаясь сильно сбить цену. Держите свою планку. Можно сделать небольшую скидку, но если заказчик хочет сбросить цену вдвое – значит, это просто не ваш клиент. Цените свой труд. У заказчика может быть масса надуманных причин, с помощью которых он станет просить изменить цену. Самые популярные:
Сейчас я у меня только эти деньги на проект, но в будущем у меня будет много денежных заказов для вас. Когда-нибудь, может быть. Это не повод снижать цену.
Давайте вы поработаете за % от прибыли будущего проекта. А заказчик тогда вообще зачем нужен?
Мой начальник выделил определенный бюджет, я бы рад заплатить больше, но не могу. Практически любой бюджет можно пересмотреть. Нет? Но тогда это проблема заказчика.
А у Васи Пупкина дешевле. Что же вы тогда не заказываете у него?

Читать дальше →

Все о 960gs — отличном css-фреймворке для построения модульных сеток

Reading time6 min
Views54K


Я хочу дать исчерпывающее описание замечательному фреймворку для построения модульных сеток 960gs. Недавно где-то в комментариях сказали, что 960gs сложнее в понимании, чем blueprint, что меня удивило. Я не хочу заниматься сравнением этих фреймворком, хотя бы потому, что они выступают в разных весовых категориях, однако, для построения модульной сетки ничего легче и проще в понимании, чем 960gs я не видела.


Читать дальше →

Создаем объёмный блок с тенью средствами CSS3

Reading time3 min
Views14K
День, когда стандарт CSS3 будет официально утвержден, а все популярные браузеры начнут его отображать приблизит нас, верстальщиков, к нашему же «раю верстальщиков» в несколько раз. Пока же заглянем в будущее и узнаем, как можно создать псевдо-3D блок используя только css и html.
показывай, кудесник

Учись говорить

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

Однако, есть тонкость: пусть вы сформулировали все в голове очень точно, правильно подобрали слова. Осталось сказать. И вот тут то часто кроется коварный враг — наш, как говорят профессионалы ораторского искусства, речевой аппарат.

Признайтесь себе, только не лукавьте: бывали ли у вас случаи, когда какой-нибудь «лохоманагер» со школьной скамьи пренебрежительно отзывался о вас как о скованном, нелюдимом человеке или «умнике» себе на уме? Да кто он такой? Что он может — только языком молоть… Стоп!

Читать дальше →

Склад бесплатных иконок

Reading time1 min
Views164K
Прошелся по закладкам и образовалась такая толстенькая подборочка ресурсов с бесплатными и качественными иконками, с которой спешу поделиться с тобой %username%!

Iconfinder


image


Читать дальше →

Межсайтовая авторизация 2

Reading time2 min
Views28K
По итогам поста, сделанного в июле 2009 и продолжительным испытаниям, мы пришли к простой и оптимальной для нас схеме межсайтовой авторизации.
Спешу поделиться с общественностью

phpDaemon — фреймворк асинхронных приложений

Reading time6 min
Views45K
Сегодня речь пойдет о phpDaemon — асинхронном модульном демоне-фреймворке, который берёт на себя обработку I/O (libevent) и другие низкоуровневые задачи, присущие демонам. С его помощью легко писать правильные сетевые приложения с блэкджеком и шлюхами.
Из коробки идут сервера FastCGI, HTTP, CGI, FlashPolicy, Telnet, WebSocket (!) — да-да тот самый волшебный пендаль новый протокол от Google. И клиенты mysql, memcached, mongodb… И многое другое, полный список под катом. Работать с сетью действительно просто. Программист средней руки может написать, к примеру, IRC-бота за считанные часы.
В качестве наглядного примера я реализовал вот этот чат на phpDaemon + WebSocket + MongoDB + jQuery. Он наглядно демонстрирует преимущества этой технологии: доставка сообщений мгновенна, накладные расходы при обмене данными минимальны, высока производительность, приложение масштабируется горизонтально. Исходники этого чата (в данный момент 17 кб). Прошу заметить, чат тестировался и работает в Chrome, FF, IE6+, Iron, Safari.
Читать дальше →

Сервер на стероидах: FreeBSD, nginx, MySQL, PostgreSQL, PHP и многое другое

Reading time16 min
Views40K
Нравится мне эта картинка, у меня, вот никогда такие красивые графики в какти не получались =(

Введение


С момента написания мной предыдущей статьи по оптимизации этой связки прошло довольно много времени. Тот многострадальный Pentium 4 c 512Мб памяти, обслуживающий одновременно до тысячи человек на форуме и до 150,000 пиров на трекере уже давно покоится на какой-нить немецкой, свалке, а клуб сменил уже не один сервер. Всё сказанное в ней всё ещё остаётся актуальным, однако есть вещи которые стоит добавить.
Статья большая, так что будет поделена на логические блоки:

0. Зачем вообще что-то оптимизировать?
  
1. Оптимизация ОС (FreeBSD)
  1.1 Переход на 7.х 
  1.2 Переход на 7.2
  1.3 Переход на amd64
  1.4 Разгрузка сетевой подсистемы
  1.5 FreeBSD и большое кол-во файлов
  1.6 Softupdates, gjournal и mount options
  
2. Оптимизация фронтенда (nginx)
  2.1 Accept Filters
  2.2 Кеширование
  2.3 AIO
  
3. Оптимизация бэкенда
  3.1 APC
  3.1.1 APC locking
  3.1.2 APC hints
  3.1.3 APC fragmentation
  3.2 PHP 5.3
  
4. Оптимизация базы данных
  4.1 MySQL 
  4.1.1 Переход на 5.1
  4.1.2 Переход на InnoDB
  4.1.3 Встроеный кеш MySQL - Query Cache
  4.1.4 Индексы
  
4.2 PostgreSQL
  4.2.1 Индексы
  4.2.2 pgBouncer и другие.
  4.2.3 pgFouine
  
4.3 Разгрузка базы данных
  4.3.1 SphinxQL
  4.3.2 Не-RDBMS хранилище
  4.4 Кодировки
  4.5 Асинхронность
  
Приложение. Мелочи.
  1. SSHGuard или альтернатива.
  2. xtrabackup
  3. Перенос почты на другой хост
  4. Интеграция со сторонним ПО
  5. Мониторинг
  
 6. Минусы оптимизации

Кому что-нибудь из этого списка интересно, жмём сюда...

Побит рекорд самого короткого кода по определению IE

Reading time1 min
Views3.3K
Без малого год назад, я уже писал (http://habrahabr.ru/blogs/javascript/50544/) о самом коротком способе определение браузера Internet Explorer, но вот некто Aleko нашел еще более короткий вариант:

-[1,]

Всего 5 байт. Пример использования:
if(-[1,]){
alert("Not IE!");
}

Information

Rating
Does not participate
Location
Алма-Атинская обл., Казахстан
Date of birth
Registered