Как стать автором
Обновить
4
0
xRay @xRay

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

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

Оптимизация скорости исполнения кода

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


Данная статья о том, как классические алгоритмы позволяют сделать наш код быстрее. Мы рассмотрим алгоритм поиска нулевого бита и то как он нам может помочь повысить эффективность алгоритма поиска символа из диапазона (например найти первое вхождение символа из диапазона 0-9 в строке).
Т.е. просто сферический конь в вакууме довольно распространенная ситуация при обработке текста, когда необходимо найти положение первой цифры в произвольном тексте. То, с чего многие начинают учить регулярные выражения.
В статье описывается использование gcc. При желании все можно повторить под другие компиляторы и языки с небольшими переделками. Осторожно, под катом есть ассемблер!
Читать дальше →

Борьба с одновременным перестроением кеша с помощью RED

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

Описание проблемы


Представим среднестатистический высоконагруженный сайт. Обычно на таких сайтах между backend'ом и DB ставят прослойку кеша. С увеличением количества посетителей, вероятность того, что несколько пользователей одновременно наткнутся на "протухший" кеш увеличивается. Если такое случается, то нагрузка на backend и DB возрастает, что в свою очередь увеличивает время обработки запроса и увеличивает вероятность возникновения подобной ситуации. Вот такая вот система с положительной обратной связью:Маленькие красные горбики — это "затупившие" на множественном обновлении кеша запросы. Эта статья будет описывать один из подходов к решению проблемы на примере(patch attached) связки PHP/APC, однако теоретическая база применима к любому языку и системе кеширования.
Читать дальше →

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

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

Совсем недавно я побывал на мини-конференции местного разлива, где я размышлял на тему фриланса, с точки зрения веб-дизайнера. Даже подготовил для этого действа презентацию (на украинском). Здесь же попробую описать то, что хотел донести до слушателей Coffee Design Code.
Читать дальше →

Учебный курс. Сортировка, фильтрация и разбиение по страницам с Entity Framework в приложении ASP.NET MVC

Время на прочтение11 мин
Количество просмотров25K
Это продложение цикла статей, посвященого разработке с помощью Entity Framework и ASP.NET MVC 3. Первые главы вы можете найти по следующим ссылкам: Создание модели данных Entity Framework для приложения ASP.NET MVC и Реализация базовой CRUD-функциональности с Entity Framework в приложении ASP.NET MVC.

В предыдущем уроке мы реализовали страницы для совершения CRUD-операций для сущностей Student. В этом уроке мы добавим сортировку, фильтрацию и разбиение по страницам, а также создадим страницу, на которой будет простая группировка.

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

image

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

Всесторонняя оптимизация сайта на WordPress

Время на прочтение8 мин
Количество просмотров57K
Уважаемые жители Хабра!

Вашему вниманию представляется история о том, как мы оптимизировали свой сайт. Сайт работает на движке Wordpress (на этой фразе большинство читателей должны поморщиться, зная, как обстоят дела у WordPress со скоростью). Однако все-таки у нас получилось, и сайт стал летать. Сразу скажу, что меня вряд ли можно считать профессионалом по серверной оптимизации, однако то, чего удалось достичь, меня сильно радует. Также, был получен бесценный опыт, которым я хочу поделиться с читателями Хабра.
Читать дальше →

Твой личный YouTube: новый дизайн стартовой страницы

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

YouTube — это хранилище терабайт интересного видео: от кино-шедевров до легенд балета и видеорепортажей о научных экспериментах. По последним данным, ежедневное количество просмотров роликов на YouTube достигло 3-х миллиардов. У выдающихся видео есть свои не менее выдающиеся каналы. И таких каналов становится все больше! Платформа постоянно развивается, и мы хотим максимально упростить поиск и добавление видео в закладки.

Сегодня мы представляем сразу несколько нововведений. Они касаются главной страницы, дизайна каналов и самого сайта. Эти изменения помогут вам чувствовать себя на YouTube еще комфортнее.

1. Новый интерфейс главной страницы
Главная страница YouTube — это ваш проводник в мир развлечений. Мы упростили поиск по каналам и систему подписки, чтобы вам было легче найти все самое лучшее. Теперь вы можете создать собственную, настраиваемую ленту интересующих вас каналов в левой части главной страницы. Создайте новый аккаунт или войдите в уже существующий, и просматривайте рекомендуемые каналы и настраивайте расположение видео на домашней странице под себя. Вы также можете интегрировать свой YouTube аккаунт с Google+ и Facebook и узнать, какими видео делятся ваши друзья. Новый фид на главной странице, который мы запустили ранее в этом году, теперь находится посередине экрана. Переключаться между фидами просто — достаточно кликнуть на другие каналы с левой стороны экрана.

Узнать больше о том, как пользоваться новой главной страницей YouTube можно в нашем справочном центре.

2. Каналы на YouTube стали проще, а возможности персонализации — интереснее
После того, как мы упростили процесс поиска и организации любимых каналов на главной странице, было бы неправильно не обратить внимание на интерфейс самих каналов. Мы обновили и его. Прежде всего, поиск нужных вам видео стал более простым и понятным. Разные пользователи размещают ролики по-разному — кто-то добавляет одно видео в неделю, а у кого-то их тысячи. Мы создали новые шаблоны для каналов, удобные как для владельцев самих каналов, так и для просматривающих их пользователей.

Чтобы узнать больше и протестировать новый интерфейс главной страницы, посетите наш справочный центр.

3. Новый дизайн
Специально для запуска обновленной главной страницы и дизайна каналов мы подготовили и свежее цветовое оформление всего сайта. В июле мы представили экспериментальный дизайн Cosmic Panda. Ваши отзывы помогли нам его усовершенствовать — теперь он стал проще и чище: ровный серый фон, увеличенные иконки предпросмотра роликов и более обтекаемая форма окна самого плеера.

Не терпится посмотреть обновления? Заходите на YouTube.com. Мы подготовили для вас специальное руководство и обучающее видео. Ведь у новой игрушки обязательно должна быть инструкция по применению!



Мы постоянно работаем над улучшениями и хотим, чтобы вам было удобно пользоваться сервисом. Поэтому мы будем ждать ваших комментариев, чтобы узнать, что вам нравится, а над чем еще нужно работать. Расскажите нам, что вы думаете!

Создание API

Время на прочтение3 мин
Количество просмотров3.9K
Несколько недель назад, мы публично выпустили Gauges API. Несмотря на уже существующий Gauges, было не мало работы во время написания API. Необходимо подробно разобраться с деталями.

1. Пишите документацию во время создания API

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

2. Будьте постоянным

При написании документации нашего API, мы заметили много не согласующихся моментов. Например, в некоторых местах мы возвращали хэш, а в других ― массив. Понимая проблему мы начали создавать некоторые правила.

Чтобы решить массив/хэш проблему, мы выбрали в качестве ответа всегда возвращать хэш. Это самое гибкое решение, ориентируясь на наши будущие задачи. Мы смогли ввести новые ключи, без нужды конвертировать ответ от нашего сервиса или выпуска новой версии API.

Замена массивов на хеши означала то, что нам нужно пространство имен (namespace) для массивов с ключами. Далее мы заметили, что не все имело свое пространство имен. И снова, мы придумали правило. В этом случае, все объекты верхнего уровня должны иметь пространство имен, но детям этих объектов или наборам нескольких объектов не обязательны пространства имен.
{users:[{user:{...}}, {user:{...}}]} // нет
{users:[{...}, {...}]} // да
{username: 'jnunemaker'} // нет
{user: {username:'jnunemaker'}} // да

Ну вы поняли. Постоянство ― важно. Всегда следует придерживаться одного формата.
Читать дальше →

Спецслужбы Великобритании GCHQ запустили конкурс взлома кода для привлечения новых талантов

Время на прочтение2 мин
Количество просмотров1.4K
image
Организация пригласила потенциальных работников для решения визуальный задачи (код размещен на веб-сайте)

Задача была также опубликована в социальных сетях, блогах и форумах.

Как заявил пресс-секретарь кампании, данный тест направлен на повышение значимости GCHQ у целевой аудитории, что иначе было бы трудно сделать.

«Целевой аудиторией для этой конкретной кампании являются те, которые не могут быть привлечены традиционными методами рекламы и могут не знать, что GCHQ набирает для данной работы сотрудников», сказал собеседник агентства.

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

Конкурс начался в тайне 3 ноября и продлится до 12 декабря.

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

Миникостыли: склеиваем строку из фрагментов

Время на прочтение3 мин
Количество просмотров801
Многим, наверно, знакома задачка, которую часто решают на скорую руку: добавить в строку фрагмент, если выполнено очередное условие.

Типичный кусок кода (немного надуманный пример, но все же):
void SomeFunc(string arg1, string arg2, string arg3)
{
  string msg = "";
  if (arg1 == null) msg += "ARG1 ";
  if (arg2 == null) msg += "ARG2 ";
  if (arg3 == null) msg += "ARG3 ";
  if (msg != "") throw new ArgumentNullException(msg);
  //...
}

На выходе, если все аргументы нулевые, получим строку "ARG1 ARG2 ARG3 ".
А если мы захотим "ARG1, ARG2, ARG3"? Или даже "ARG1, ARG2 and ARG3"?
Читать дальше →

Еще один open source аналог Github

Время на прочтение2 мин
Количество просмотров20K
На данный момент времени, есть следующие альтернативы github:
  • Сам github fi (стоит 5000$, не open source)
  • Gitorious (open source, написан на RoR, использует ActiveMQ, короче — зверь машина)
  • Недавно появившийся gitlab (open source, написан на ruby)

В этот список я хотел бы добавить мое приложение. Может быть, оно еще кому то пригодится. Что у него внутри:
Читать дальше →

Оптимизация запросов MySQL с использованием пользовательских переменных

Время на прочтение14 мин
Количество просмотров66K
Введение. В современном мире существует большое количество задач, в рамках которых приходится обрабатывать большие массивы однотипных данных. Яркими примерами являются системы для анализа биржевых котировок, погодных условий, статистики сетевого трафика. Многие из этих систем используют различные реляционные базы данных, в таблицах которых содержатся такие объемы данных, что правильное составление и оптимизация запросов к этим таблицам становится просто необходимым для нормального функционирования системы. В этой статье описаны методы решения ( и сравнительные временные характеристики используемых методов ) нескольких задач по получению данных из таблиц СУБД MySQL, содержащих статистику о проходящем через маршрутизаторы одного из крупных российских сетевых провайдеров сетевом трафике. Интенсивность потока данных, поступающего с главного маршрутизатора такова, что ежесуточно в таблицы базы данных используемой системы мониторинга сетевого трафика поступает в среднем от 400 миллионов до миллиарда записей, содержащих информацию о транзакциях TCP/IP (рассматриваемый маршрутизатор экспортирует данные по протоколу netflow). В качестве СУБД для системы мониторинга используется MySQL.
Читать дальше →

Госпоиск состоялся: по Рунету начал ходить бот электронного правительства или госпоисковика

Время на прочтение3 мин
Количество просмотров9.1K
Roem.ru обсуждает теперь уже далеко не слух:
За последние дни в несколько раз вырос входящий трафик. Логи показывают что сайт начал посещать некий бот именующий себя «SearchBot». IP-адрес указывает на то что это некий проект электронного правительства.

«Ведомости» около года назад писали (копия статьи в открытом доступе):
Об идее «государственного поисковика» стало известно летом [2010 г.], когда сотрудники «Яндекса», Mail.ru и Rambler стали получать от некоей «окологосударственной» структуры предложения о переходе на работу в этот проект. Его цель, как объяснял высокопоставленный источник в Кремле, — стимулировать развитие отечественных технологий в перспективной сфере. Позднее советник президента Леонид Рейман заявил, что созданием поисковика занимаются частные компании, а Минкомсвязи лишь курирует проект. Министр же Игорь Щеголев всегда опровергал возможность господдержки для поисковой системы. Однако отсутствие финансирования национального поисковика в ФЦП еще не значит, что проект закрыт — возможно, деньги будут выделены из другого источника, предполагает руководитель одной из интернет-компаний.

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

Десяток ресурсов, которые помогают быть дизайнером

Время на прочтение2 мин
Количество просмотров37K
Работать дизайнером очень интересно. Это творческая работа. И как любому творческому человеку, дизайнеру нужна муза или вдохновение.

Я уверен, что у каждого дизайнера есть набор сайтов, на которые они периодически заходят для того что бы черпать это самое вдохновение. У меня так же есть такой список. И я хочу им с вами поделиться.

Естественно, если вы расскажите о своих ресурсах, я буду благодарен.

Хочу сразу предупредить, что практически все ресурсы, собранные мной — англоязычные. Только лишь один на русском. Так же я не очень приветствую узкопрофильные ресурсы (речь о ресурсах, на которых можно скачать только кисти для photoshop и прочее).
Читать дальше →

Госдума представила доходы депутатов в новом виде

Время на прочтение3 мин
Количество просмотров1.1K
Продолжаем серию статей о нововведениях на сайте Государственной Думы. Предыдущие статьи: первая и вторая.

На этот раз на сайте Госдумы был запущен целый ряд новинок: обновленный раздел доходов депутатов и госслужащих, единый поиск по сайту, расширение страницы депутата, мобильной версии сайта и раздела Парламентское ТВ. Обо всем этом подробнее под катом.
Читать дальше →

Защита от DDOS атаки подручными средствами. Получение доступа к своему серверу

Время на прочтение4 мин
Количество просмотров77K
За последнее время, наш сайт часто подвергается достаточно мощным DDOS атакам, к слову последняя атака была самой крупной за последнее время, размер ботнета по нашим оценкам — около 10 тысяч машин, мощность — 100 Mbits/s.

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

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

Атака была типа HTTP Flood. Система на которой у нас работает сайт — Apache под Linux. Мы написали несколько скриптов, которые будут приведены в тексте статьи. В принципе аналогичный подход можно применять и для Windows/IIS.

Попытаюсь рассказать, какие основные шаги мы сделали для отражения атаки, и какие проблемы возникали по ходу:
Читать дальше →

Локальное и удаленное предотвращение атак класса DDoS: особенности, преимущества, недостатки, мониторинг

Время на прочтение5 мин
Количество просмотров30K
Угроза отказа в обслуживании (Denial of Service, DoS) является особой категорией сетевых атак, чьей целью является недоступность того или иного веб-сервиса для легитимных пользователей. Атака реализуется за счет создания массы обращений на сервер-жертву (victim). Такие атаки легко распознаются, и сам инициатор атаки обнаруживается и блокируется достаточно просто. Поэтому сейчас в такие игрушки никто не играет, а новое поколение атак носит распределенный характер (Distributed Denial of Service). Инициатор атаки использует зараженные системы, расположенные по всему миру, чтобы одновременно скрыть свое местонахождение и сделать атаку более мощной и результативной. Тому, как происходит борьба с атаками, а также новому способу удаленной борьбы с DDoS и посвящен этот пост.

image

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

Сравнение производительности JSON-сериализаторов для .NET

Время на прочтение5 мин
Количество просмотров21K
Json в .NET может использоваться для разных целей. В моём случае это формирование ответа на Ajax-запрос в ASP.NET Mvc приложении. Конечно, конвертация ответа в JSON — не самое тонкое место, но мне стало интересно, как можно ускорить эту операцию. Настоящая статья не является детальным обзором существующих JSON-сериализаторов для .NET/Mono. Меня интересовало в первую очередь время, затрачиваемое на сериализацию относительно простых структур данных, и во вторую очередь маппинг. То есть, хочется чтобы сериализация легко и гибко программировалась и быстро работала.

В исследование попали следующие средства сериализации:
  1. Простая конкатенация строк
  2. JavaScriptSerializer (.NET Framework)
  3. DataContractJsonSerializer (.NET Framework 3.5)
  4. Newton Json.net (json.codeplex.com, james.newtonking.com/pages/json-net.aspx)
  5. JsonEx (code.google.com/p/jsonexserializer)
  6. Fluent Json (fluentjson.codeplex.com, code.google.com/p/fluent-json)

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

Как Confluence используется в SAP

Время на прочтение3 мин
Количество просмотров28K
confluence logosap logoХочу немного рассказать о том, как Confluence используется в SAP: www.sdn.sap.com/irj/scn/wiki

Для тех, кто не знает, пара слов о том, что это. “Конфа” как ее часто называют — традиционная вики-система. Для каждой статьи хранит список изменений в удобной форме: можно посмотреть какие изменения внесла Маша неделю назад, а что поменял Петр полгода назад. Фишка именно в удобстве сравнения разных версий статьи. Развитые системы документооборота тоже хранят разные версии скажем doc файла, но их неудобно сравнивать. Приходится, например, выделять свои комментарии другим цветом. В вики такое зачастую не требуется. На примере википедии видно что это самый удобный способ хранить и коллективно редактировать некую систему знаний (статей).

Confluence платная. Цены сильно различаются от 10 баксов за 10 пользователей, до $12 000 для крууупных компаний. Бесплатно предоставляется проектам с открытым исходным кодом, благотворительным организациям (Non-profits and Open Source projects).

Покупаешь лицензию — получаешь исходники. Можно посмотреть как все внутри устроено, поменять что-то, если надо.
Читать дальше →

Расширения для Google Chrome. Часть первая. Getting started

Время на прочтение7 мин
Количество просмотров60K
Добрый день, Хабр.

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

В первой (этой, то бишь) статье, на примере простейшего расширения, будут рассмотрены все основные моменты, связанные с разработкой, отладкой и использованием расширения, конфигурационный файл manifest.json и начала chrome.* API. Первая же статья, думаю, будет не очень полезна опытным разработчикам (это дисклеймер).
Читать дальше →

Баг при различных сохранениях в админке MODX Revolution в Opera (Вечная загрузка)

Время на прочтение1 мин
Количество просмотров4.8K
По мне неясным причинам (если кто-то значет истинную причину и почему ее не устраняют — скажите, буду очень благодарен), при использовании Opera для администратировании сайта на MODX Revolution в момент сохранения ресурса появляется окно «вечной» загрузки.

Это окно можно убрать одним способом — обновив страницу. А так как административная часть работает по принципам «AJAX» это очень замедляет работу.

Баг проявляется на момент написания статьи в последней версии Opera 11.10, MODX Revolution 2.1.5-pl (advanced) и Ext JS Library 3.4.0.

Предлагаю временное решение этого вопроса (до выхода новой версии Ext JS Library в состав пакета MODX Revolution или пока MODX (или Opera) это не пофиксят).

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

Информация

В рейтинге
5 501-й
Зарегистрирован
Активность