Как стать автором
Обновить
74
0
Алексей Еремихин @alexxz

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

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

Оптимизация ORDER BY — о чем многие забывают

Время на прочтение2 мин
Количество просмотров73K
На тему оптимизации MySQL запросов написано очень много, все знают как оптимизировать SELECT, INSERT, что нужно джоинить по ключу и т.д. и т.п.

Но есть один момент, тоже неоднократно описанный во всех мануалах, но почему-то про него все забывают.
Читать дальше →

Почему проекты в IT занимают в 2-3 раза дольше, чем планируется?

Время на прочтение3 мин
Количество просмотров24K
Мы с другом решаем пойти в поход от Сан Франциско до Лос Аджелеса, чтобы заскочить в гости к нашим друзьям на Ньюпорт Бич. Посмотрим на карту и примерно прикинем путь по берегу:

image

Путь займёт около 400 миль, в день мы можем пройти 4 мили в час по десять часов, так что придём мы туда примерно через 10 дней. Мы звоним друзьям и бронируем столик на 6 вечера в воскресенье.

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

Деобфускация PHP кода

Время на прочтение20 мин
Количество просмотров56K
Деобфускация PHP
Так уж случилось, что на днях мне попался один нужный PHP скрипт, но обфусцированный.
По какой-то причине он никак не работал. Я пишу на PHP достаточно давно, и мне очень нравится отлавливать нестандартные ситуации в скриптах, особенно когда при выполнении в логах нет ошибок, а скрипт просто не выполняет своих предназначенных обязанностей, руки так и чесались расшифровать. Последней каплей стало то, что автора этого скрипта не было в сети, чтобы помочь решить мою проблему. Скрипт кстати куплен моим товарищем, собственно он и попросил помочь.

Цель данной статьи, показать принцип дешифровки, зашифрованных скриптов, чтобы например расшифровать залитый злоумышленником вирус на PHP.

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

Проброс видеокарты в виртуальную машину

Время на прочтение6 мин
Количество просмотров181K
Говорят, что современные аппаратные технологии поддержки виртуализации (VT-d у Intel, IOMMU у AMD) позволяют отдавать физическое устройство на шине PCI в непосредственное управление виртуальной машине. В том числе видеокарту.
Воображение рисует такую конфигурацию: настольный сервер с гипервизором, на нем запускается гостевая пользовательская операционная система, имеющая доступ к необходимым устройствам ввода-вывода, один-два неприхотливых сервера по мере надобности, ну и сколько надо виртуалок для бесчеловечных экспериментов. Управляем гипервизором через консоль в гостевой ОС либо удаленно, с ноутбука, скажем.
Вдохновленный этой картиной, я решил попробовать, но оказалось, что проброс (passthrough) видеоадаптера — задача не совсем тривиальная. Только месяца через три боданий с железом и чтения форумов удалось получить положительный результат. В качестве гипервизора пробовал VMware и Xen. Получилось только с Xen.
Читать дальше →

Открыт репозиторий с играми для Ubuntu 10.04, 10.10, 11.04, 11.10

Время на прочтение1 мин
Количество просмотров9.8K
Вчера на сайте UALinux появилась новость о том, что они подготовили репозиторий с играми для Убунты. Репозиторий содержит 250 игр разного жанра: их можно установить кнопочкой на сайте, или же привычно добавить репозиторий и ставить пакеты.
Сами игры в большинстве своем довольно примитивные: в мире есть уже много чего гораздо круче восстаний антропоморфных кроликов, или шариков в лабиринте, но есть игры из детства, портированные с консоли, аналоги старых добрых Worms, несколько «гоночек» и еще много чего интересного. Ну и, самое главное, что все игры доступны бесплатно: подключай репозиторий, ставь и играй.
Несколько игрушек, кстати, уже есть есть в дистрибутиве самой убунты, но в репозитории версии новее.
В общем, удачного убивания времени.

PS: Судя по комментам к моим предыдущим постам, на Хабре живут люди из UALinux. Поэтому, думаю, можно оставить в комментариях названия игр, которых не хватает в репозитории, но хотелось бы их там видеть.

Songsterr — теперь на Android

Время на прочтение2 мин
Количество просмотров852
C полгода назад songsterr писали об итогах трех лет. А ныне команда рада оповестить Хабрахабр о выходе приложения для Android!

Основная функциональность


— Доступ к огромному каталогу табулатур(400 000)
— Наборы инструментов для каждой песни. Гитары, бас, ударные, голос и прочее
— Список «Популярные»
— Возможность поиска песни по имени исполнителя или названию

В планах добавить проигрывание музыки, избранное и много-многое другое. Следите за новостями тут, в facebook и twitter.

Скачать с маркета:

QR:



Технические моменты

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

Лекториум записал почти тысячу лекций за год

Время на прочтение4 мин
Количество просмотров57K
Дорогой Хабр!



У нас для тебя небольшой подарок. Мы тут работали-работали и вот чего сделали.
Сняли и опубликовали почти тысячу лекций по IT и математике.

UPD2 Помогите, пожалуйста, оперативно решить вопрос насчёт организации торрентов на php.

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

Clustered index в InnoDB и оптимизация запросов

Время на прочтение7 мин
Количество просмотров19K
В последнее время в сети часто пишут про clustered index в InnoDB и таблицах MySQL, но, несмотря на это, на практике используют довольно редко.
В данной статье мы покажем на двух реальных примерах, как мы оптимизировали достаточно сложные системы Badoo, основываясь на понимании принципов работы clustered index.

Clustered index – форма организации таблицы в файле. В InnoDB данные хранятся в дереве, в таком же, в котором лежат обычные B-TREE ключи. Таблица InnoDB сама по себе уже является большим B-TREE. В качестве значений ключа используется clustered index. Согласно документации, в качестве clustered index выбирается PRIMARY KEY. Если PRIMARY KEY отсутствует – выбирается первый UNIQUE KEY. Если и такого нет, то используется внутренний 6-тибайтный код.

Что же вытекает из такой организации данных на диске?
Читать дальше →

На Chaos Communication Congress заявили о DoS-уязвимостях в ряде популярных языков веб-программирования

Время на прочтение2 мин
Количество просмотров2.9K
На международной конференции специалистов по IT-технологиям Chaos Communication Congress был опубликован доклад Александра Клинка (Alexander “alech” Klink) и Джулиана Вэльде (Julian “zeri” Wälde), описывающий ряд серьезных уязвимостей в популярных языках веб-программирования. Большинство проблем исследователи связывают с неверной обработкой веб-форм и возможностью компрометации хэш-таблиц, что может привести к успешной DOS-атаке на веб-серверы с последующим хищением данных, причем значительных ресурсов для организации атаки не требуется.

Суть уязвимостей исследователи описывают таким образом: языки веб-программирования — такие как PHP, ASP.NET, Java, Python, Ruby — имеют прямой доступ к вычислительным ресурсам компьютера; веб-приложения, написанные на этих языках, часто обрабатывают POST-запросы в автоматическом режиме, при этом, если приложение не может использовать рандомизированные хеш-функции, то злоумышленник может специально организованным запросом вызвать коллизию хеш-значений, что может значительно загрузить вычислительные ресурсы сервера.

На данный момент PHP 5, Java и ASP.NET (UPD: патч выпущен) являются полностью незащищенными перед описываемой атакой, тогда как PHP 4, Python, Ruby — частично уязвимы (в докладе говорится, что большинство уязвимостей базируются на концепциях, впервые появившихся еще в 2003 году, однако только в Ruby в 2008 году появилось исправление, частично исключающее эксплуатацию), причем степень опасности зависит от используемой 32-х или 64-битной архитектуры.
Узнать подробности

Уникальный ключ в условиях распределенной БД

Время на прочтение3 мин
Количество просмотров34K
В случае если вы разделяете данные по нескольким физическим базам данных,
поддержка глобально-уникальных идентификаторов становится не такой уж тривиальной задачей.
Я попытался собрать вместе возможные варианты и рассмотреть их плюсы и минусы.
Читать дальше →

Data Mining в онлайн играх

Время на прочтение11 мин
Количество просмотров32K
АионВо всех онлайн сервисах и играх самая большая доля аудитории уходит прямо на старте – в первые же минуты и часы знакомства с продуктом. Этой теме уже посвящены сотни книг и статей с самыми различными гипотезами успеха и причин лояльности аудитории – уникальность, простота, юзабилити, бесплатность, обучение или инструкция, эмоциональность, и еще множество факторов считаются крайне важными.

Мы захотели узнать, почему уходят игроки и можно ли предсказать их уход. Предмет исследования – ММОРПГ Аион, однако наши результаты оказались применимы к широкому кругу игр и онлайн сервисов.
Заглянуть в будущее

Делаем приватный монитор из старого LCD монитора

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


Вы наконец-то можете сделать кое-что со своим старым LCD монитором, который завалялся у Вас в гараже. Превратите его в шпионский монитор! Для всех вокруг он будет выглядеть просто белым экраном, но не для Вас, потому что у Вас будут специальные «волшебные» очки.

Всё что Вам нужно – это пара старых очков, нож для бумаги и растворитель для краски.

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

Коралина. Мир наоборот

Время на прочтение3 мин
Количество просмотров9.4K
Коралина
Друзья, с некоторой периодичностью я делюсь с вами шедеврами современной мультипликации. Сегодня я расскажу вам о фильме, который скрасит ваш пятничный вечер и капнет бальзам на эстетические раны. «Коралина» долгие месяцы лежала на ближайшей полке, именованной: «Смотреть обязательно и срочно». Я боялся не прочувствовать его до конца, не насладиться каждым кадром, упустить настроение.
Но вот земля налетела на небесную ось и я посмотрел. Это поучительная история одной семьи, центральный персонаж которой — Коралина (Coraline). Фильм снят по повести Нила Геймана (чувак, кстати, крайне разносторонен). Если отбросить сюжет, картинку и условности, то суть сводится к фразе: «какими бы не были твои родители, они всё равно твои родители». Но мы не будем их отбрасывать(:
Coraline
Итак, в детали.
Графика фильма очень своеобразная, такую вы не встретите практически нигде: ни в 3д фильмах пиксара, ни в кукольных мультиках СССР. Пейзажи, интерьеры, герои уникальны и неподражаемы по своей красоте. Это очень оправданный шаг со стороны Лайки, и вы, пожалуй очень удивитесь, узнав, что в этом фильме практически, нету 3д и компьютерной анимации. Он чуть более, чем полностью кукольный. Создатели в количестве полутысячи человек провернули гигантскую работу по моделированию и анимации. И результат, надо признать, потрясающий — получился самодостаточный, очень красивый мультфильм.
Coraline
И, разумеется, речь не только о графической составляющей, но и о сценах, невероятной фантазии режиссёра, своеобразном юморе (мальчика — друга Коралины — зовут Вайборн = WhyBorn) и индивидуальности каждого персонажа. Вообще, кстати, местами мультфильм напоминает антиутопии Жёне.
Как это бывает в такого масштаба проектах, музыкальное сопровождение доставляет. Мелодия льётся от начала до конца, почти не прерываясь — она органичная нить повествования, задаёт настроение сцене и зрителю.
Стоит ли говорить, что я крайне рекомендую смотреть, фильм в оригинале?
Пора бы, составить, пожалуй список таких душевных фильмов?
Кстати, у Коралины есть свой интерактивный вебсайт. Живой, приятный. Не сказать, что потрясающий или уникальный, он такой, каким он должен быть: coraline.com
Под катом я чуть-чуть расскажу о сюжете

Алгоритм сортировки Timsort

Время на прочтение6 мин
Количество просмотров158K
Timsort, в отличии от всяких там «пузырьков» и «вставок», штука относительно новая — изобретен был в 2002 году Тимом Петерсом (в честь него и назван). С тех пор он уже стал стандартным алгоритмом сортировки в Python, OpenJDK 7 и Android JDK 1.5. А чтобы понять почему — достаточно взглянуть на вот эту табличку из Википедии.



Среди, на первый взгляд, огромного выбора в таблице есть всего 7 адекватных алгоритмов (со сложностью O(n logn) в среднем и худшем случае), среди которых только 2 могут похвастаться стабильностью и сложностью O(n) в лучшем случае. Один из этих двух — это давно и хорошо всем известная «Сортировка с помощью двоичного дерева». А вот второй как-раз таки Timsort.

Алгоритм построен на той идее, что в реальном мире сортируемый массив данных часто содержат в себе упорядоченные (не важно, по возрастанию или по убыванию) подмассивы. Это и вправду часто так. На таких данных Timsort рвёт в клочья все остальные алгоритмы.
Читать дальше →

Почти идеальная схема мошенничества с использованием Webmoney

Время на прочтение4 мин
Количество просмотров83K
Хочу рассказать о новой схеме мошенничества в рунете, на которую сам чуть не попался.

Задумали мы с другом купить сайт. На специализированном форуме нашли тему с аукционом, сайт понравился, сделали ставку. Автор темы не указал никаких своих контактов, поэтому предполагалось, что дальнейшая связь победителя аукциона и продавца сайта будет осуществляться через личные сообщения форума. Проходит минут 30 и моему другу в аську пишет продавец сайта, уточняя, действительно ли он хочет купить сайт за названную в теме сумму. Получает подтверждение, после чего предлагает приступить собственно к сделке, не дожидаясь результата аукциона, так как деньги нужны срочно.
Читать дальше →

Использование инструмента трассировки событий в Erlang

Время на прочтение4 мин
Количество просмотров2.3K
Вот одна из распространённых проблем многопоточных(concurrent) систем: события возникают постоянно в разных частях программы в разное время, и у вас нет возможности контролировать причину и время их возникновения. Чтобы отследить проблему, мы зачастую можем воспользоваться диаграммой последовательностей. Например, такой (спасибо Wikipedia):



Предназначение данной диаграммы — показать взаимодействие между различными параллельными компонентами системы. В данном примере Fred, Bob, Hank и Renee в ресторане. Каждый может легко нарисовать подобную диаграмму на бумаге. Проблема в том, что наброски на бумаге могут отличаться от того, что происходит во время выполнения вашей программы.

Правда было бы здорово, если бы вы могли строить похожие диаграммы на основе данных трассировки программы автоматически? Что ж, Erlang вам в этом поможет.
Читать дальше →

CodeSniffer и PhpEd

Время на прочтение2 мин
Количество просмотров7.7K
На хабре уже ни раз встречалось описание интструмента PHP_CodeSniffer, который используется для проверки соответствия написанного кода стандартам кодирования. Инструмент очень удобный и полезный, думаю, спорить никто не станет. В интернете есть статьи, которые описывают как интергрировать его с системой контроля версий, чтобы осуществлять проверку перед очередным коммитом, но мне захотелось прикрутить его к своей IDE, чтобы проверять код во время его написания.

Исторически сложилось, что в работе я использую IDE от Nusphere – PhpEd. PhpEd позволяет подключать к себе скрипты на php, которые могут выполнять произвольные операции над кодом в редакторе. Скрипт также может запустить внешнюю программу и вернуть данные со стандартного потока вывода непосредственно в редактор кода.
Читать дальше →

Произносим правильно

Время на прочтение2 мин
Количество просмотров152K
Из знакомых мне айтишников очень немногие стараются правильно произносить английские слова. Конечно, привычнее произносить C++ как «си-плюс-плюс», а не «си-плас-плас» или «опен-бэ-эс-дэ», а не «оупэн-би-эс-ди».
Но когда «echo $value;» читают как «ечо валуй» — это уже не смешно. Другой человек вас может просто не понять, особенно иностранец.

В топике представлен небольшой список «сложных» слов, которые часто произносят неправильно.
Ориентироваться лучше не на мою (весьма приблизительную) транскрипцию, а на аудио.

♫ — прослушать произношение в словаре
► — прослушать произношение на youtube

Начнем с названий:
ABBYY аби
Adobe эдоуби [əˈdəʋbɪ]
Apache эпэчи [əˈpætʃiː] от «a-patchy»
Asus офиц. э́сус
амер. э́йсус

 
BenQ бенкью
Cisco сискоу [ˈsɪskoʊ]
EBay ибэй
Eee PC и писи
Ethernet изэрнэт [ˈiθərˌnɛt]
Itanium айтэйниум [aɪˈteɪniəm]
Juniper джу́нэпэр [ˈdʒunəpər]
LaTeX лэйтех
лэйтек
латех
латек
[ˈleɪtɛk]
['leɪtɛx]
[ˈlɑːtɛx]
[ˈlɑːtɛk]
Linux офиц. линэкс
вар. линукс
[ˈlɪnəks]
[ˈlɪnʊks]

 
Mac OS X мэк оу-эс тэн
MySQL офиц. май-эс-кью-эл
вар. май-сиквел
как «My Ess Que Ell», см. оф. сайт
nginx энджин-икс (от engine-x)
PuTTY пати [ˈpʌtɪ] см. оф. сайт
Qt кьют [kyut] см.
TeX тех
тек
[ˈtɛx]
[tɛk]
не «текс»
XBox 360 экс-бокс фри сискти
Xen зен [ˈzɛn]
Xeon зион
Xerox зирокс [ˈzɪərɒks]
Xilinx зайлинкс [ˌzaɪliːŋks]
ZyXel рус. зайксел
амер. зайзел
см.


Аббревиатуры:
GNU гну вар. гню
GWT гвит [ˈɡwɪt]
ICANN айкэн
IEEE ай-трипл-и как «I triple E»
ISO айсо
PNG пинг [ˈpɪŋ] как «ping», см. спецификацию
PXE пикси [ˈpɪksi]
RUP рап
SCSI скази ['skʌzi]
SOAP соуп [soʊp]
SQL эс-кью-эл [ˈɛsˈkjuˈɛl] неофиц. «сикуел»
SWF свиф [ˈswɪf] см. спецификацию
WYSIWYG визивиг [ˈwɪziˌwɪg]
XAML зэмл [ˈzæməl]
XUL зул [ˈzuːl]
Yii длинное «и» [ji:]

Обычно аббревиатуры произносятся по правилам английского языка: API — эй-пи-ай, PCMCIA — пи-си-эм-си-ай-эй, OpenBSD — оупен-би-эс-ди и т.д.

Обычные слова дальше

Сертификация PHP 5.3 от Zend

Время на прочтение3 мин
Количество просмотров25K
Ну про Zend сертификацию PHP 5.3 никто еще не писал, попробую написать я, надеюсь, будет интересно.

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

Приступим!
Читать дальше →

Как поднять свой уровень в искусстве программирования. План из шести шагов

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

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

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность