Monday, July 16, 2012

Хабрахабр

КупиКупон - скидки от 50% до 90%

Хабрахабр:

Почти в каждом более менее динамическом проекте бывает возникает необходимость выполнять очереди задач в фоне (отправка email, обновления кеша, реиндексация поиска и т.д.). Job сервера (Gearman и т.п.) хороши, но для большинства простых задач они избыточны. Классическая реализация очередей в MySQL (при помощи SELECT ? LOCK FOR UPDATE) при росте нагрузки со временем начинает приводить к проблемам с блокировкой. Потому, как это обычно бывает, пришлось написать свой ?велосипед? для работы с фоновыми задачами, который бы ?точно работал? и был предельно прост. Читать дальше →


На прошлой неделе бывшие и настоящие конкуренты известного социального сайта digg.com распространили информацию о том, что сервис был куплен американской медиа-компанией BetaWorks за $500 000 ? другими словами, за сумму, никак не сравнимую со стоимостью Digg в пору его расцвета в 2008 году, когда Кевин Роуз (создатель сайта) пытался продать его Google за $200 млн. Сейчас же BetaWorks намерена объединить покупку со своим малоизвестным социальным сервисом news.me и перезапустить проект. Появившийся осенью 2004 года digg.com почти сразу был признан одним из самых перспективных проектов года и уже в 2005-м Кевину Роузу и его коллегам Оуэну Бирну и Рону Городецкому удалось успешно провести раунд финансирования и получить инвестиции в размере $2.8 млн. Удачно найденная ?фишка? с голосованием, дающая иллюзию власти, способствовала немалому росту популярности сайта, и Роуз уже мог планировать инвестиции на более значимый срок ? в 2006 году сайт получил еще почти $9 млн. Почти сразу после этого исполнительный директор Digg Джей Аделсон начал переговоры с Google о покупке его компании поисковым гигантом за $200 млн (об этом как о свершившемся факте также шла речь на Хабре). Однако, некоторое время спустя стало известно о том, что в Google решили не покупать сайт ? согласно слухам, якобы из-за неудовлетворительного технического состояния ресурса и его инфраструктуры. Тем не менее, даже сам факт возможной покупки новостного сайта поисковыи гигантом оказал положительное влияние на ожидания инвесторов, и Адельсон успешно завершил третий раунд финансирования, получив в своё распоряжение еще $29 млн венчурного капитала. Узнать подробности


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


Известный проект Роскосмоса и Российской академии наук "Марс-500", в ходе которого был сымитирован пилотируемый полёт на Марс шести ?космонавтов?, согласившихся 520 суток просидеть в замкнутом помещении и стоивший $15 млн, судя по всему, в ближайшее время не получит реального применения. Генеральный конструктор и генеральный директор научно-производственного объединения имени С.А. Лавочкина Виктор Хартов признал, что пилотируемый полёт на Марс является нецелесообразным как с экономической, так и с научной точки зрения. На вопрос журналистов о планах покорения космоса, он ответил в том смысле, то лететь на Марс просто, чтобы оставить там свой след (подобно тому, как США предприняла ряд лунных миссий, чтобы не выглядеть по сравнению с СССР аутсайдером) не имеет смысла. Узнать подробности


Крис Уилкинс передает фотографию с помощью цифрового передатчика Hasselblad Dixel во время атаки ракет на Дхаран (Саудовская Аравия) в первую ночь войны в Персидском заливе, 17 января 1991 года. Ремесло фотокорреспондента в середине и конце XX века требовало не только мужества в свете постоянной опасности, таланта фотографа, знания новостей, политики, спорта, умения успевать думать и фотографировать на ходу, также требовалось быть отличным редактором, способным выбрать лучшие снимки для передачи в газеты на других концах мира, и, что самое главное, нужны были мощные спина и руки. Сегодня мы уже привыкли к огромным размерам файлов фотографий и, благодаря Интернету, чудовищно быстрым скоростям их передачи. Профессиональному фотографу для запечатления и доставки изображений на другой конец света нужен набор оборудования, способный уместиться в рюкзак. Однако, ситуация с багажом выездных фотографов более ранней эпохи ? каких-то двадцать лет назад ? была куда менее приятной. Читать дальше →


Как можно было заметить из моей предыдущей статьи со сравнением библиотек LINQ для PHP, библиотек много, а качества мало: ленивые вычисления не реализованы ни в одной библиотеке, тесты есть в половине случаев, типы коллбэков ограничены, а иногда и вовсе незнамо что выдаётся за LINQ. Поэтому я написал свою библиотеку. Встречайте: YaLinqo ? Yet Another LINQ to Objects for PHPВозможности: Самый полный порт .NET LINQ на PHP, со многими дополнительными методами. Некоторые методы отсутствуют, но работа ведётся. Всего реализовано более 70 методов. Ленивые вычисления, текст исключений и многое другое, как в оригинальном LINQ. Детальная документация PHPDoc к каждому методу. Текст статей адаптирован из MSDN. 100% покрытие юнит-тестами. Коллбэки можно задавать замыканиями, ?указателями на функцию? в виде строк и массивов, строковыми ?лямбдами? с поддержкой нескольких синтаксисов. Ключам уделяется столько же внимания, сколько значениям: преобразования можно применять и к тем, и к другим; большинство коллбэков принимает на вход и то, и другое; ключи по возможности не теряются при преобразованиях. Минимальное изобретение велосипедов: для итерации используются Iterator, IteratorAggregate и др. (и их можно использовать наравне с Enumerable); исключения по возможности используются родные похапэшные и т.п. Пример кода: // Отфильтровать продукты с ненулевым количеством, поместить в соответствующие категории, // отсортированные по имени. Продукты отсортировать сначала по убыванию количества, потом по имени. from($categories) ->orderBy('$v["name"]') ->groupJoin( from($products) ->where('$v["quantity"] > 0') ->orderByDescending('$v["quantity"]') ->thenBy('$v["name"]'), '$v["id"]', '$v["catId"]', 'array("name" => $v["name"], "products" => $e)' ); Детальное описание, обсуждение архитектуры, ссылки




В операционной системе от Microsoft предусмотрена глубокая интеграция с популярными социальными сетями, и сервис микроблогов Twitter в их числе. Чтобы читать ленту и общаться в пределах 140 символов, достаточно всего лишь ввести данные своей учетной записи в разделе настроек. Тем не менее, сторонние клиенты для доступа к Twitter стремительно набирают популярность, отчасти обусловленную поддержкой дополнительных, а порой и попросту уникальных возможностей. Всего в Marketplace уже более ста тысяч приложений, а программ для работы с Twitter больше десятка. Постараемся рассмотреть некоторые из них. Mehdoh Начнем, пожалуй, с одного их самых известных клиентов, скрывающегося под непривычным на слух названием. Основные разделы приложения привычны и знакомы любому пользователю социальной сети ? это лента, упоминания и личные сообщения. В лучших традициях Metro-интерфейса, канонам которого подчинены практически все программы из Marketplace, с помощью горизонтального пролистывания вы можете быстро получить доступ к любому из разделов. Читать дальше →


В последнее время приходится все больше задумываться о сохранности анонимности и безопасности относительно прав на информационную собственность. В этой заметке я предложу довольно интересное решение относительно шифрования, позволяющего сохранить несколько различных объектов в одном контейнере с разными мастер-ключами, и гарантирующее отсутствие ?следов? других сущностей при получении какой-либо одной. Более того, в силу конструктивных особенностей алгоритма ? даже наличие расшифрованной сущности можно всегда списать на ?случайность? (то есть, нет никаких средств проверить, были ли изначально зашифрованы эти данные или нет). Кроме того, алгоритм имеет чрезвычайную стойкость к атакам ?подбора ключа?. Правда у метода есть и существенный недостаток ? катастрофически низкая скорость работы, но в ряде особенных случаев он все равно может быть полезен. Читать дальше →


Первая часть статьи ?Разработка технического задания ?Что это такое, зачем оно нужно, с чего начать и как должно выглядеть?? вызвала немалый интерес. Кроме своей рассылки, я ее опубликовал и на известном сайте разработчиков Инфостарт, где она вызвала еще больший интерес, что не может не радовать. Как и обещал, пишу продолжение. Подробности



Привет, коллеги! Сегодня я хотел бы продолжить свое повествование о Citrix XenServer 5.6 и о разных аспектах работы с ним. В этот раз мне пришлось решать довольно простую (казалось бы!) проблему: исполнение команд в dom0 без применения SSH. Изучение возможностей для реализации привело к обнаружению некоторых забавных нюансов HTTP API данной ОС: способов получения /etc/passwd, удаленного выполнения rsync и набросков XenSource thin CLI protocol. Сейчас я расскажу вам, что называется, историю одного ресёрча? Читать дальше →



Привет дорогой друг! В прошлой статье я говорил, что больше не буду затрагивать тему 2D игр на XNA. Пожалуй, я вас обманул, но не совсем. Многие начинающие геймдевелоперы используют в своих физических головоломках ? физический движок Box2D, о нем довольно много писали на хабре. Да что уж там новички, многие довольно опытные геймдевелоперы ? его используют. Но вот мало кто знает, как на самом деле он работает. Остальное под хабракатом. Читать дальше →


Под стеком web-приложений мы будем подразумевать множество программных продуктов с открытым исходным кодом: операционная система, web -сервер, сервер БД и среду исполняемого кода. Наиболее известным и обыденным стеком является LAMP. Это акроним для стека web-приложений на базе бесплатных решений с открытым исходным кодом. Название составлено из первых букв входящего в его состав продуктов: Linux (операционная система), web -сервер Apache, база данных MySQL, и PHP (иногда Perl или Python). Опубликованные нами ранее материалы, посвященные вопросам безопасности, рекомендуют держать различные сетевые службы на выделенных под эти цели серверах или виртуальных машинах. Это позволит изолировать скомпрометированные и взломанные злоумышленником элементы системы, в случае если последний получит возможность эксплуатации ошибок в одном из звеньев сети обслуживания. Статья также является ответом на наиболее часто задаваемые нашими читателями вопросы, присланными нам по электронной почте. В руководстве я объясню, как построить решение на базе физических или виртуальных серверов, одинаково подходящих для раздачи статического и динамического контента, для приложений, требующих наличие БД и кэширования. Читать дальше →


На Хабре, скорее всего, не так много юристов, которые ежедневно обращаются к справочно-правовым системам в поисках решений и постановлений судов с целью получения разъяснений той или иной нормы права. Однако, все наши сервисы разрабатываются не только для специалистов, но и для граждан, которые могут ознакомиться со своими правами и подготовиться отстоять их в суде. Как раз в этом поможет новый бесплатный сервис подбора судебной практики. Перейти к нему можно с главной страницы справочно-правовой системы ?Право.ru?. Обратите внимание, что вы должны быть зарегистрированы в СПС или в одном из других наших сервисов, как ?Картотека арбитражных дел?, ?Мой арбитр? или ?Календарь судебных заседаний?. Читать дальше →




Захотелось мне написать файлообменник (для личных нужд, с нуля), да не простой, а с красивым прогресс-баром, ? с отображением процесса загрузки файлов на сайт. И остановился я на чисто серверном решении nginx с модулями nginx-upload и nginx-upload-progress. nginx не нуждается в описании; nginx-upload управляет процессом загрузки данных, который затем может передать результат на бэкенд, ? ваш PHP скрипт (или еще куда); nginx-upload-progress же отвечает исключительно за информирование о процессе загрузки, ? все написано в документации, но в кратце лишь скажу, что со страницы выполняется ajax-запрос на сервер со специальным http-заголком, в котором хранится уникальный id, и в json-ответе по этому id мы можем узнать состояние загрузки данных. Но а теперь, хочу поделиться с вами, как легко и просто организовать загрузку файлов с прогресс-баром. С нуля. Для нетерпеливых, что должно получиться: загрузка нескольких файлов сразу, определение скорости, времени и рисование самого прогресс-бара. Читать дальше →


Отписаться от этой рассылки

No comments:

Post a Comment