Как стать автором
Обновить
17
0
Алексей Катаев @deusdeorum

Team lead

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

Функция без явного определения

Время на прочтение1 мин
Количество просмотров1.5K
Изучаю C++. Балуясь с указателями придумал интересный для себя пример. Вероятно, опытных людей он не заинтересует, но я все же рискну.
typedef int (*pf)(int, int);
char c[] = {85,-119,-27,-117,69,12,3,69,8,93,-61,-112};
pf sum = (pf)c; //reinterpret_cast здесь не работает.
cout << sum(2,3); //Вывод 5.


* This source code was highlighted with Source Code Highlighter.
Теперь sum — функция сложения, являющаяся аналогом этой:
int sum(int a, int b){return a+b;}

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

UPD. Как мне подсказал iley, это в общем-то относится к C.

UPD. Одной строкой:
cout << ((int (*)(int, int))"\x55\x89\xE5\x8B\x45\x0C\x03\x45\x08\x5D\xC3")(2,3)
(спасибо 0lympian за мысль и halyavin за поправку)
Всего голосов 55: ↑39 и ↓16+23
Комментарии92

Концентрирующиеся ярлыки качества дизайна

Время на прочтение3 мин
Количество просмотров981
Вчера на Хабре появился текст 10 полезных выводов и принципов юзабилити — перевод статьи с сайта Smashing Magazine.

Smashing Magazine славится своими гигантскими обзорами из серии «Еще 250 плагинов для Вордпресса, которые мы нашли на этой неделе». Такие тексты составляются по принципу «поискать в Гугле красивые картинки и придумать к ним подписи». Для серьезных статей такой метод не подходит.

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

Под катом будет подробный разбор каждого пункта.

Читать дальше →
Всего голосов 109: ↑100 и ↓9+91
Комментарии42

Неисправный пиксель

Время на прочтение1 мин
Количество просмотров5K
Бороздя просторы рунета, наткнулся на интересную задачу.
На электронном табло отображается верное математическое равенство. Но один пиксел табло неисправен. Какой?

image

По мотивам braingames.ru

P.S. Решил сам, не лишай удовольствия ближнего своего, не нужно в комментах сразу ответы.

UPD: тут хайвмайнд получился, но я всяко первее.
UDP2: в комментариях две явные подсказки + ссылка на решение, будьте осторожны!
Всего голосов 171: ↑133 и ↓38+95
Комментарии175

Интернет магазин на Google App Engine (UPD: 20.01.2010)

Время на прочтение2 мин
Количество просмотров4K
Магазин работает уже почти пол года — добро пожаловать :)
http://www.digital-mode.ru

Как это все работает.

Фронт-офис — генерирует страницы с группами и товарами, а также позволяет добавить товар в корзину и оформить заказ.
Хранилище картинок — отдает фотографии товаров в нужном размере. Все остальные картинки статические, загружаются с сервера GAE.
Бэк-офис — административная часть, позволяет редактировать товары и группы, просматривать заказы, загружать фотографии для товаров, а также загружать обновления цен, наличия и новые позиции.

Для генерации почти всех страниц используется Django templates.

В целом ничего сложного :)

Проблемы с которыми пришлось столкнутся при разработке.

На текущий момент есть проблемы с загрузкой/выгрузкой большого количества данных. На данный момент использую CSV для загрузки обновлений (цены, товары, наличие). При большом объеме данных превышается тайм-аут 30 сек на выполнение. Кроме этого в GAE ограничение на 30 запросов на запись (put). Соответственно обновлять больше 30 товаров за один проход не получается. Этот момент можно оптимизировать и обновлять данные не поштучно, а сразу пачками т.к. в GAE запись в хранилище может производится целыми массивами.

Выгрузка данных для Яндекс.Маркета занимает почти 10 секунд (200 товаров), 90% времени это генерация HTML.

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

Преимущества GAE

Отсутствие необходимости покупки/настройки/поддержки собственного сервера.
Автоматическое масштабирование.
Одинаковое время доступа к приложению при разных нагрузках.
Удобство разработки.

Итого

Скорость работы магазина не зависит от количества посетителей.
На данный момент при 500-600 хитов в сутки используется 0,3-0,4 часа процессорного времени из 6,5 бесплатного.

После публикации в комментариях к топику: "Стоит ли вам использовать Google AppEngine?" ссылки на магазин было использовано ресурсов:
— 0,44 часов CPU из 6,5
— 28000 запросов из 1,3 млн
— 210 Мб из 1 Гб исходящего траффика
— 5,59 Гб из 116 Гб получено из API
— 0,22 часа из 62,11 использовано хранилищем
Всего за 12 часов — 700 хитов (180 хостов).

Это микрохаброэффект:
image
Читать дальше →
Всего голосов 48: ↑39 и ↓9+30
Комментарии62

Правила Ярослава Грешилова

Время на прочтение3 мин
Количество просмотров1.1K
Сегодня наткнулся во френдфиде исследователя фонда inVenture Ярослава Грешилова на 9 интереснейших правил проектной работы. Оговорюсь, что далеко не со всем здесь согласен, но пища для размышлений тем не менее превосходнейшая. Привожу здесь в удобном для чтения виде.

UPD от Ярослава: «Это не «правила Ярослава Грешилова», а правила *для* Ярослава Грешилова. И направлены они вовсе не на проектную работу, а на то, чтобы не потерять себя. Обсуждение того, что происходит с проектами при применении этих правил, не входило в мою задачу.»


Правило первое: работать имеет смысл не «над проектами», а «с людьми». Проекты всё равно имеют свойство со временем мутировать до неузнаваемости, а вот люди, как правило не меняются.

Например, работа над разными проектами за последние три года с одним моим другом имеет такие объективные итоги: из четырёх проектов завершено — ноль, денег заработано — близко к нулю, времени потрачено — довольно много, собственное развитие — существенное, отношения с человеком — улучшаются и развиваются, желание и дальше делать что-то вместе — только растёт.

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

Правило второе: нельзя полностью растворяться в том, что ты делаешь, и ассоциировать себя с этим делом. Мои проекты — это не я. Они — лишь средство моего движения, самовыражения, исследования этого мира.

В этом смысле всегда помогает заниматься несколькими малосвязанными друг с другом вещами одновременно. Необходимость постоянного переключения из одной действительности в другую позволяет удерживать самоидентификацию «над ними» и требует постоянного вопрошания «А я-то здесь кто?»
Читать дальше →
Всего голосов 70: ↑58 и ↓12+46
Комментарии32

Неочевидная особенность в синтаксисе определения переменных

Время на прочтение3 мин
Количество просмотров6.6K
Предлагается совершенно невинный на вид кусок кода на C++. Здесь нет ни шаблонов, ни виртуальных функций, ни наследования, но создатели этого чудесного языка спрятали грабли посреди чистa поля.

struct A {
  A (int i) {}
};

struct B {
  B (A a) {}
};

int main () {
  int i = 1;
  B b(A(i)); // (1)
  return 0;
}


* This source code was highlighted with Source Code Highlighter.


Вопрос: какой тип у переменной b? Совсем не тот, который можно было бы предположить на первый взгляд.

Ответ под катом
Всего голосов 87: ↑75 и ↓12+63
Комментарии70

Nested Sets + MySQL TRIGGER

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

Задача


Задача такая же как и в предыдущей статье, только применимо к MySQL.

Грабли


Хорошая новость ребята! В MySQL нет проблемы с рекурсивными триггерами! Разработчики MySQL просто тупо лочат изменяемую таблицу даже на уровне триггера, вот редиски. Но, собственно, нас может остановить только отключение электричества.
Есть небольшая лазейка, с… объединенными таблицами. Хотя я не нашел в документации подтверждения того, что это так специально было задумано, но и отрицания тоже не было. Правда есть вероятность того, что эту лазейку могут прикрыть, хотя я не вижу в этом смысла.
Увы, механизм триггеров в MySQL новый и довольно сырой, что накладывает некоторые ограничения на его использование, но все же его достаточно для решения нашей задачи.
Читать дальше →
Всего голосов 37: ↑33 и ↓4+29
Комментарии47

Своя веб-студия: от идеи до реализации

Время на прочтение4 мин
Количество просмотров13K
Последнее время на хабре стали появляться истории об организации собственного бизнеса. Решил написать аналогичную историю нашей студии создания сайтов «Web++».
Как мы начинали свою деятельность, являясь студентами, откуда брали первые заказы и деньги? К вашему вниманию: краткий рассказ о формировании собственной студии создания сайтов.
Читать дальше →
Всего голосов 75: ↑57 и ↓18+39
Комментарии82

Создание веб-студии: это просто

Время на прочтение6 мин
Количество просмотров4.2K
Прочитав топик История моей компании: от хобби-проекта до интернет-компании я решил рассказать о том, как мы открывали веб-студию в Волгограде в марте этого года.

У студии три учредителя, все мы работали в одном интернет-агентстве (программист, проект менеджер и я, специалист по интернет-рекламе). В какой-то момент осознали, что нам стало тесно в существующих условиях, пора сменить обстановку. Учитывая, что в Волгограде в нашей сфере карьерный рост практически невозможен (менять шило одной студии на мыло такой же резона нет) решили поиграть в свой бизнес. Сказано – сделано.

Для начала стоит определиться с названием. При мозговом штурме мы учитывали три условия: 1. Компании с таким названием не должно существовать. Или на крайний случай их не должно быть много в РФ. 2.Свободное доменное имя в зоне ru.
В итоге, через несколько дней поиска у нас появилась целая куча странных и не очень названий типа: Мурака-Барака, Ник Кейв, Огенри, Кейтбланш, Магвай, Донни Дарко.

Мы выбрали Магвай. В тот момент я не подозревал о существовании фильма Гремлины, двое других о нем просто забыли. Так появилась веб-студия Магвай — создание сайтов в Волгограде.
Основные виды нашей деятельности: разработка сайтов, реклама (seo, контекстная и пр.), фирменный стиль + в дальнейшем создание и развитие собственных проектов.

Поиск офиса
Мы искали необшарпанную комнату до 25 метров, с умеренной ценой и не слишком далеко от центра города. Несколько советов для тех, кто сейчас в поиске, на что следует обратить внимание:
1. Цена, планировка, состояние офиса, наличие-отсутствие кондиционера, с какой стороны восходит солнце, куда дели жалюзи – все что должны узнать в первую очередь.

Читать дальше →
Всего голосов 138: ↑119 и ↓19+100
Комментарии170

Музыкальный плеер на основе Vkontakte API

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

Привет, уважаемые Хабралюди. Хочу представить вам нашу маленькую разработку. Это легковесный музыкальный плеер (около 100кб), написанный на Flash для социальной сети вконтакте с использованием Vkontakte API. Он умеет проигрывать музыку с вашей страницы, или страниц ваших друзей, поддерживет скробблинг на last.fm, визуализацию, отображение обложек альбомов, текстов песен (lyricwiki.org), и различные режимы проигрывания (shuffle, repeat, и repeat track).
Читать дальше →
Всего голосов 108: ↑84 и ↓24+60
Комментарии95

Составляем договор дизайн-студии, часть 1

Время на прочтение2 мин
Количество просмотров14K
Итак, начинаю публикацию целой серии долгожданных заметок о договорах и прочей документации дизайн-студии. Сразу скажу, что договор студии Made выкладывать сюда или куда-нибудь еще я не буду, у нас политика такая. Хотя, какие-то его части, быть может, и появятся в открытом доступе. Вместо рыбы я дам вам удочку.
Читать дальше →
Всего голосов 55: ↑39 и ↓16+23
Комментарии37

Атака на беспроводные сети. Чуть меньше теории и чуть больше практики

Время на прочтение6 мин
Количество просмотров314K
image
В общих чертах теорию и процесс атаки хорошо описал юзер n3m0 в своих статьях «Атаки на беспроводные сети», поэтому я не буду заострять внимание на многих теоретических моментах.
Я же хочу описать самые простейшие способы обхода защиты, но более подробно.
Читать дальше →
Всего голосов 199: ↑189 и ↓10+179
Комментарии103

Regexp — это «язык программирования». Основы

Время на прочтение4 мин
Количество просмотров26K
Несколько лет назад я думал, что regexp осуществляет линейный поиск по тексту, но какое моё удивление было, когда я понял, что это не так. Тогда я убедился на собственном опыте, что от простой смены местами а и b в схеме (...a...)|(...b...) поменялся полностью результат.

Поэтому сейчас я расскажу, как на самом деле работает regexp.
Поняв эти простые принципы и как оно работает, вы сможете писать любые запросы.
Для примера, я разберу сложную при первом приближении, но на самом деле простейшую задачу – выявление всех строк в кавычках.
Читать дальше →
Всего голосов 114: ↑101 и ↓13+88
Комментарии35

Прогрессивные технологии, как способ выжать из сервера максимум

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

Вступление


Просто красивый rrdtool =)
Забавно, но когда программист разрабатывает какой-либо продукт, он редко задумывается над вопросом могут ли на одну кнопку в один момент времени нажать одновременно 2000 человек. А зря. Оказывается могут. Как ни странно но большинство движков, написанных такими программистами, очень плохо ведут себя под большими нагрузками. Кто бы подумал, а всего один лишний INSERT, не проставленный index, или кривая рекурсивная функция могут поднять load averages чуть ли не на порядок.

В этой статье я опишу как мы, разработчики проекта, сумели выжать из одного сервера с Pentium 4 HT / 512Mb RAM, максимум, держа одновременно 700+ пользователей на форуме и 120,000 на трекере. Да, проект этот — торрент трекер. Предлагаю сразу оставить в стороне разговоры о копирайтах и правах, мне это не интересно, что действительно интересно — это HighLoad.
читать дальше
Всего голосов 318: ↑314 и ↓4+310
Комментарии184

JS Charts — генератор графиков и схем.

Время на прочтение1 мин
Количество просмотров16K
image
JS Charts является бесплатным JavaScript-генератором графиков и схем, который требует минимум знаний программирования. С JS Charts рисование диаграмм становится простой и легкой задачей. Он не требует никаких дополнительных плагинов и серверных модулей. Просто подключите скрипты, подготовьте данные для схемы в XML или массиве JavaScript и ваша таблица готова.
Читать дальше →
Всего голосов 71: ↑66 и ↓5+61
Комментарии33

Памятка дизайнеру сайтов

Время на прочтение10 мин
Количество просмотров245K
Вторая версия статьи, расширенная и дополненая.

Большая часть готовилась для моего выступления на «РИТ: Клиентские технологии», куда я, к сожалению, не доехал.

 

Памятка дизайнеру сайтов

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

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

Читать дальше →
Всего голосов 453: ↑444 и ↓9+435
Комментарии231

Как попасть в терминал QIWI за два дня?

Время на прочтение2 мин
Количество просмотров20K
Компания ОСМП – лидер на рынке платежных терминалов. По всей России установлено уже более 80 000 штук. Думаю, что многим интересна возможность получить в свое распоряжение столько касс, принимающих оплату 24 часа в день за ваши заказы! Для сравнения, у Сбербанка всего порядка 20 000 отделений по всей стране.

Ну как туда попасть?
Читать дальше →
Всего голосов 92: ↑59 и ↓33+26
Комментарии256

Информация

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