вторник, 17 июля 2012 г.

Хабрахабр

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

Хабрахабр:

Совсем недавно начал продаваться Nexus 7, и продается вполне актуально. Но в YouTube уже во всю ходит видео, сколько хлопот доставляет он людям только лишь с распаковкой. Jean-Louis Nguyen решил собрать воедино нарезку распаковки нового планшета из встретившихся ему видеообзоров, и, надо признать, ситуация выглядит неутешительно. Но можно признать, что видео вышло довольно весёлым. Вывод таков: Google надо внимательней, или с серьезностью ставиться к запаковке своих продуктов. К примеру, в некоторых продуктах Apple, надо дернуть за специальную плёночку, чтобы достать свой планшет, или любой иной продукт. Но пускай Google также возьмут эту ?плёнку? на заметку.


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



disclaimer Так получилось, что последний месяц я разбираюсь с ZooKeeper, и у меня возникло желание систематизировать то, что я узнал, собственно пост об этом, а не о сервисе блокировок, как можно было подумать исходя из названия. Поехали! При переходе от многопоточного программирования к программированию распределенных систем многие стандартные техники перестают работать. Одной из таких техник являются блокировки (synchronized), так как область их действия ограничена одним процессом, следовательно, они не только не работают на разных узлах распределенной системы, но так же не между разными экземплярами приложения на одной машине; получается, что нужен отдельный механизм для блокировок. От распределенного сервиса блокировок разумно требовать: работоспособность в условиях моргания сети (первое правило распределенных систем ? никому не говорить о распределенных системах сеть ненадежна) отсутствие единой точки отказа Создать подобный сервис нам поможет ZooKeeper В википедии написано, что ZooKeeper ? распределенный сервис конфигурирования и синхронизации, не знаю как вам, но мне данное определение мало что раскрывает. Оглядываясь на свой опыт, могу дать альтернативное определение ZooKeeper, это распределенное key/value хранилище со следующими свойствами: пространство ключей образует дерево (иерархию подобную файловой системе) значения могут содержаться в любом узле иерархии, а не только в листьях (как если бы файлы одновременно были бы и каталогами), узел иерархии называется znode между клиентом и сервером двунаправленная связь, следовательно, клиент может подписываться как изменение конкретного значения или части иерархии возможно создать временную пару ключ/значение, которая существует, пока клиент её создавший подключен к кластеру все данные должны помещаться в память устойчивость к смерти некритического кол-ва узлов кластера Под катом код, данные по производительности и куча wtf-ов


Steam под Linux всё ближе и ближе. Впрочем, не только он: ?Пареные пингвины? (steam ? пар) Это рецепт экзотического блюда на Южном Полюсе? Или одно из странных видео на YouTube, где пингвины в сауне резвятся с шведками в биники? (я не знаю, как перевести ?Swedish Bikini team?) На самом деле это первый пост в нашем блоге Valve Linux. Здесь вы можете найти последнюю информацию от Valve о ходе наших разработок под Linux. Избегайте слухов, что распространяются в интернете. Идите к первоисточнику ? блогу, где люди, заинтересованные в Linux и игрострое с открытыми исходниками могут прочитать про успехи Valve на этой арене.? Читать дальше →


Я не умею программировать на объектно-ориентированных языках. Не научился. После 5 лет промышленного программирования на Java я всё ещё не знаю, как создать хорошую систему в объектно-ориентированном стиле. Просто не понимаю. Я пытался научиться, честно. Я изучал паттерны, читал код open source проектов, пытался строить в голове стройные концепции, но так и не понял принципы создания качественных объектно-ориентированных программ. Возможно кто-то другой их понял, но не я. И вот несколько вещей, которые вызывают у меня непонимание. Читать дальше →


На конференции в Сан-Франциско Стив Балмер со словами ?Мы чувствуем себя как в 1995-ом? объявил о выпуске версии Customer Preview одного из самых популярных продуктов компании ? Microsoft Office. C момента выпуска предыдущей версии прошло уже 3 года. Office 2013, известный также под названием Office 15, не поддерживает Windows XP и Windows Vista. Нет ничего удивительного в том, что новый Office имеет Metro-ориентированный интерфейс. Хотя во многих деталях нового пакета чувствуется ориентированность на планшеты (к примеру, наличие TouchMode, в котором элементы управления увеличиваются в размерах), ключевые особенности так и остались пригодными для использования на персональном компьютере. Компоненты Office будут включаться в планшеты и телефоны на основе Windows, офисный пакет сам умеет определять, на какое устройство он установлен и какие средства ввода есть в наличии. Читать дальше →


Когда появилась самая первая версия Server Core многие администраторы избегали его по той причине, что они могли использовать исклюительно возможности командной строки, а это не всегда удобно. Однако, в Windows Server 2012 ситуация поменялась, теперь стало возможным использовать гибридный режим, т.е. возможно как отключение, так и включение графического интерфейса. Читать дальше →


О технологии Cach? Database Mirroring появилась в продуктах InterSystems Cach? и Ensemble в 2010 году. Технология позволяет снабдить информационные системы(ИС), построенные на Cach? и Ensemble, опцией FAILOVER ? возможностью преодоления некоторых неисправных состояний СУБД, операционной системы или аппаратного обеспечения. Для чего информационной системе необходим failover ? вопрос давно изученный, но в двух словах failover позволяет минимизировать время простоя пользователей в случае неисправностей, приводящих к отказу обслуживания сервера с информационной системой. Читать дальше →





Наручники, копии 3D-печатью и лазерной резкой Как показал отчет немецкого энтузиаста на конференции ?Хакеры на планете Земля? (Hackers On Planet Earth, сокр. HOPE) в Нью-Йорке, технология 3D-печати может найти применения не только в нескольких отдаленных от обычной жизни средах, как то копии окаменевших остатков вымерших животных или создание подробных моделей кровеносной системы. Отныне полагаться на форму какого-то объекта как на ключ будет ошибочным решением: консультант компьютерной безопасности из Германии Рэй, как он сам себя назвал, продемонстрировал дешевые копии пластиковых ключей, способные открыть наручники компаний Bonowi и Chubb. Как известно, обе фирмы делают всё возможное, чтобы ограничить попадание своих ключей только в руки собственных клиентов, как правило, правоохранительных служб. Рэй рассказал о проблеме некоторых производителей наручников, чьи устройства имеют одну форму ключа, что позволяет одному человеку заковать подозреваемого, а другому освободить его, не задумываясь над уникальностью своих комплектов ключей. До того, как у каждого комплекта наручников не будет собственный ключ, безопасность такой системы можно поставить под сомнение. Читать дальше →


Предположим мы решили написать новое Android приложение. В силу же дизайнерских соображений, стандарные UI компоненты нам не подходят и мы будет рисовать много графики через Canvas или OpenGL ES. Последний способ несколько более трудоемкий, поэтому мы его пока рассматривать не будем. Нас интересует производительность вывода графики на Canvas. Можно ли её ускорить? Если зайти на официальный сайт андроида или блог разработчиков, то можно заметить, что начиная с Android 3.0 (API level 11), в платформе появилась возможность включать аппаратное ускорение Canvas для вывода 2D графики. Вы можете подумать: "Супер! Я сейчас же добавлю флаг аппаратного ускорения в мое приложение!". Тем более, некоторые сайты утверждают, что приложение спокойно будет работать на Android 2.x ? такие приложения просто будут игнорировать флаг ускорения. Другие же сайты говорят, что аппаратное ускорение включено по-умолчанию начиная с Android 4.0. На самом же деле все не так. И конечно же нас интересует вопрос, насколько повысится производительность приложения при включении аппаратного ускорения. Читать дальше →



О софистике (софизмах) в дискуссиях и об ООП Поскольку писать комментарии в режиме ?read-only? не положено, снова рискну написать в песочницу. Вступление Читая хабр, споткнулся об один из комментариев. Вернее сказать, споткнулся о цитату в этом комментарии: ?Я уверен, что ООП методологически неверна. Она начинает с построения классов. Это как если бы математики начинали бы с аксиом. Но реально никто не начинает с аксиом, все начинают с доказательств. Только когда найден набор подходящих доказательств, лишь тогда на этой основе выводится аксиома. Т.е. в математике вы заканчиваете аксиомой. Тоже самое и с программированием: сначала вы должны начинать развивать алгоритмы, и только в конце этой работы приходите к тому, что вы в состоянии сформулировать четкие и непротиворечивые интерфейсы. Именно из-за этой неразберихи в ООП так популярен рефакторинг ? из-за ущербности парадигмы вы просто обречены на переписывание программы, уже в тот самый момент, когда только задумали её спроектировать в ООП-стиле?. (с) Александр Степанов, со-автор C++, автор STL Перед тем, как перейти к сути этой заметки (а точнее ? к анализу приведенной цитаты Степанова), также хочу вспомнить небольшую статью с провокационным анонсом (?софистика ? это математика для жуликов?), которая как-то попалась мне на глаза в глянцевом журнале (что само по себе уже странно; нечасто удается в таких журналах на что-то обратить внимание). Электронная версия здесь. Далее я буду ссылаться на термины из этой статьи, поэтому рекомендую ознакомиться. Читать дальше →


В текущем проекте стала часто возникать необходимость конструирования множеств разнообразных объектов по каким-то идентификаторам. Была написана одна фабрика для какого-то множества, другая. Потом пришло понимание, что мы делаем одно и то же и нужно какое-то повторяемое решение. Проект базируется на Qt, который, как известно, имеет развитые механизмы работы с метаданными. Тем не менее конструирование объектов через QMetaObject нас не удовлетворяло по двум причинам: во-первых конструируемые объекты должны быть QObject'ами, а во-вторых при конструировании мы получаем указатель на QObject, который так или иначе придется преобразовывать, что чисто эстетически некрасиво. Проанализировав круг задач пришли к выводу, что мы хотим иметь статическую фабрику в базовых классах некоторых множеств наследников. Т.е. писать что-то в таком духе: BaseClass * instance = BaseClass::factory()->build("derived_name"); При этом, мы не хотим писать каждый раз много однообразного служебного кода. Да, мы ленивые. И конечно же мы не хотим чтобы фабрика или базовый класс знали о всех наследниках. Как нам это удалось...


Предыстория Мы ? сотрудники одной из самых первых компаний, появившихся на рынке продаж техники Apple. Более 18 лет мы радуем жителей Ростова инновационными разработками и передовыми технологиями Apple. Помимо продаж, у нас в компании успешно работает отдел поддержки, который помогает пользователям освоить и полноценно использовать нашу продукцию. Проанализировав основные вопросы, с которыми к нам обращались клиенты, мы поняли, что большинство из них однотипны и вполне могут быть решены пользователями самостоятельно. Это натолкнуло нас на мысль о создании наглядных инструкций, с помощью которых любой пользователь мог бы легко наладить работу с iPhone. Читать дальше →


За время работы администратором баз данных я выработал для себя одно правило, которого придерживаются многие DBA. Это ?золотое? правило всех администраторов баз данных ? не делай ничего серьезного с базой данных, если у тебя нет бэкапа. Если ты собрался серьезно изменить параметры базы данных, провести операции по техническому обслуживанию базы данных и т.п. ? то всегда перед этим надо выполнить операцию резервного копирования. Этот принцип достаточно долго работал и оправдывал себя, и даже в нескольких случаях помогал восстановить базу данных на определенный момент времени. Недавно перед нами была поставлена задача ? разработать процедуру резервного копирования хранилища данных размером в 20 Терабайт. Используя наработанные практики резервного копирования, я попытался разработать такую процедуру и уложиться в то же время в рамки RPO (recovery point objective) и RTO (recovery time objective). Обе эти характеристики измеряются во времени и представляют собой следующее: RPO ? допустимый объем возможных потерь данных, RTO ? допустимое время простоя или за какое время база данных должна восстановиться. Вот тут-то и началось самое интересное ? как бы я не прикидывал и не рассчитывал, но разработанная процедура резервного копирования никак не желала укладываться в эти рамки ? слишком большой объем данных надо было забэкапить. В самом лучшем случае, с многочисленными оговорками и условиями база данных восстанавливалась за несколько часов, а такого бизнес себе позволить не мог. Хотя, у Сбербанка на этот счет несколько иное мнение и они считают, что клиенты могут и подождать. Но тут был не Сбербанк. В обычной же ситуации, когда на базу данных не налагались серьезные ограничения и условия, восстановление заняло бы несколько дней. Это усугублялось тем, что невозможно ?снять? бэкап за приемлемое время ? это также занимало несколько дней и создавало большую нагрузку на базу данных. Сразу оговорюсь, что эта база данных не поддерживает инкрементальный бэкап в текущей версии. Возможно, если бы мы могли получить инкрементальность, то игра и стоила бы свеч, и традиционная процедура резервного копирования имела бы право на жизнь в этом случае. Поняв, что процедура резервного копирования здесь нежизнеспособна, я начал поиск уже существующих решений этой проблемы. Довольно быстро обнаружилось, что такие объемы информации никто не бэкапит ?в лоб?. Существуют несколько подходов, которые позволяют иметь резервную копию базы данных такого объема, более или менее актуальную во времени. Читать дальше →



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

Комментариев нет:

Отправить комментарий