Search
Write a publication
Pull to refresh
19
0
Send message

Как научиться писать книги

Reading time9 min
Views534K
Полгода назад здесь была опубликована статья, которая меня возмутила. В комментариях я обещал, что напишу свою версию. С другой стороны мне не хотелось этого делать, так как получу закономерные вопросы: «А ты собственно кто такой?». Не люблю подписываться в интернет-постах, у меня портилось мнение о многих писателях после того, как читал их жж-блог. Читаешь книгу, думаешь: «Классный чувак!», почитаешь блог, мнение меняется: «Что за кретин?». Такая разница возникает из-за того, что книга проходит пост-обработку, много раз редактируется.
Данная статья переписывалась несколько раз, в этом варианте, считаю, что она получилась наиболее взвешенной. Статья вполне подходит для хабрахабр, так как от людей технической направленности выходило немало известных произведений. И кому-то из вас захочется написать свою историю.

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

Лучшее в мире PHP за 2012 и дайджест интересных материалов за последние две недели №7 (15.12.2012 — 28.12.2012)

Reading time6 min
Views29K


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

Приятного чтения!
Читать дальше →

Организация High-Load cluster с несколькими нодами

Reading time8 min
Views21K
В ответ на этот этот топик решил написать свои соображения по тому, как стоит строить кластер для высоко нагруженных проектов.

Топик очень хорош. Очень приятно почитать подобное с точки зрения разработчика.

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

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

— 2 WEB сервера

— 1 DB сервер

— 1 балансировщик нагрузки.

Совсем не ново, но соображения связаны именно с балансировщиком нагрузки
Читать дальше →

Баллада о «Мультиклете»

Reading time22 min
Views22K
Нет, я не раскрою вам загадку, скрывающуюся в названии MCp0411100101, но постараюсь развёрнуто ответить на комментарий nerudo, записанный в топике Процессоры «Мультиклет» стали доступнее:

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


Если кратко, то MCp — это потоковый (от dataflow) процессор с оригинальной EPIC-архитектурой. EPIC — это Explicitly Parallel Instruction Computing, вычисления с явным параллелизмом инструкций. Я применяю этот термин здесь именно в этом смысле, как аббревиатуру, а не как ссылку на архитектуру Itanium-ов. Явный параллелизм в MCp совсем другого рода.
Узнать, какой именно EPIC в MCp

Об одном методе распределения памяти

Reading time17 min
Views29K
image
Не секрет, что иногда выделение памяти требует отдельных решений. Например — когда память выделяется и освобождается стремительным домкратом потоком, в параллельных задачах.

В результате стандартный консервативный аллокатор выстраивает все запросы в очередь на pthread_mutex / critical section. И наш многоядерный процессор медленно и печально едет на первой передаче.

И что с этим делать? Познакомимся поближе с деталями реализации метода Scalable Lock-Free Dynamic Memory Allocation. Maged M. Michael. IBM Thomas J. Watson Research Center.

Самый простой код что я сумел найти — написан под LGPL камрадами Scott Schneider и Christos Antonopoulos. Его и рассмотрим.

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

Распределенный мониторинг и географическая доступность

Reading time4 min
Views7.7K
Большинство из нас регулярно сталкивается с вопросом технической доступности сайтов, которые мы посещаем ежедневно. Хотя кажется, что надежные каналы доступа и высокая скорость связи уже давно решили эту проблему, но появление мобильных устройств, облачной инфраструктуры, распространение Интернета в регионы заставляют по-прежнему задумываться: а почему для меня (или для моих пользователей) этот сайт не открывается или работает некорректно? И как открывается (и вообще выглядит) мой сайт для моих пользователей?

Как ответить на эти вопросы?
Читать дальше →

Собираем wi-fi устройство управления электроприборами с веб-сервером и JS-фронтэндом

Reading time12 min
Views255K
Добрый день, уважаемые хабровчане. В этой статье я несколько отойду от своего традиционного подхода к DIY – нашей основной целью станет быстрое и эффективное получение результата, а не изобретение велосипедов с целью самообучения, поэтому даже люди, впервые держащие паяльник, смогут все это повторить и получить готовое устройство за ~1000 рублей и один день.
Читать дальше →

Yet another classifier

Reading time8 min
Views12K

Вместо вступления


Лень — двигатель прогресса. Не хочешь сам молоть зерно — сделай мельницу, не хочешь сам кидать во врагов камни — сооруди катапульту, надоело гореть на кострах инквизиции и гнуть спину под феодалом — замути с ребятами ренессанс… впрочем, о чем это я.
Автоматизация, господа. Берешь какой-нибудь полезный процесс, в котором участвует человек, заменяешь человека на сложный механизм, получаешь профит. Относительно недавно также стало модно заменять человека куском кода. О, сколько благородных профессий может пасть под натиском информатизации. Особенно если учесть, что кусок кода в наше время способен не только на заранее определенное поведение, но и на «обучение» какому-то поведению.
Читать дальше →

Portable Components, кроссплатформенная библиотека для C++

Reading time13 min
Views28K
«Система должна быть спроектирована так,
чтобы оставаться как можно проще
после серии внесенных в нее изменений»

Бьярне Строуструп – программист, автор языка C++

Преамбула


В данной статье мне бы хотелось бы рассказать о довольно популярной, но так редко освещаемой на Хабре библиотеке Portable Components (сокр. POCO). Она будет полезна как разработчикам бизнес-логики программного продукта, так и в решении большинства прикладных задач. При всем изобилии кроссплатформенных библиотек для C++ всё больше людей сталкиваются с POCO лицом к лицу и не знают с чего начать. В данной статье я постараюсь описать технологии, заложенные в библиотеке и дать простейшие примеры решения некоторых задач. Также хотелось бы отметить, что за плечами библиотеки множество успешных как Open Source, так и коммерческих проектов.
Читать дальше →

Canoniсal анонсировала Ubuntu WebApps

Reading time1 min
Views3.3K
Сегодня Марк Шаттлворт объявил о том, что октябрьский релиз Ubuntu 12.10 Quantal Queztal будет включать в себя технологию работы с web-приложениями без явной работы пользователя с браузером — Ubuntu WebApps.

Для пользователя работа новой функции выглядит следующим образом — при посещении некоторого популярного сайта, поддерживаемого системой как часть WebApps, браузер (помимо Firefox поддерживается также Chrome и Chromium) предложить установить сайт как веб-приложение в систему для запуска через ланчер или просто значок на десктоп. В дальнейшем при запуске WebApp-приложения будет или открываться, собственно, сайт, или будет поддерживаться работа с ним без браузера — например, Gmail WebApp будет сигнализировать о приходе нового письма или Last.fm WebApp даст возможность управлять потоковым воспроизведением прямо из виджета управления звуком в системе. Важно отметить, что работа с удаленным сайтом всё равно обеспечивается браузером, поэтому закрыть его и получить нечто вроде standalone-приложения не получится.

На данный момент Canonical обеспечила поддержку WebApps для более чем 40 сайтов, таких как Facebook, Twitter, Last.FM, Google+ и ряда других. Пользователи Ubuntu 12.04 получат обновление в ближайшие несколько дней.

Видео-презентация Ubuntu WebApps под катом.
Посмотреть

Занимательное функциональное программирование в Ruby

Reading time13 min
Views10K

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

Предположим, что единственный способ представления кода — лямбда-выражение, а единственная доступная структура данных — массив:

square = ->(x) { x * x }
square.(4) # => 16

person = ["Dave",:male]
print_person = ->((name,gender)) {
  puts "#{name} is a #{gender}"
}
print_person.(person)

Это самые основы функционального программирования: функции — единственное, что у нас есть. Давайте попробуем написать что-то более похожее на реальный код в таком же стиле. Посмотрим, как далеко мы сможем зайти без особых мучений.
Читать дальше →

20 вещей, которые я должен был знать в 20 лет

Reading time3 min
Views718K
1. Мир пытается оставить тебя тупым. Начиная от банковских платежей и процентов и заканчивая чудо-диетами — из необразованных людей легче вытрясти деньги и ими проще управлять. Занимайтесь самообразованием столько, сколько можете — для того, чтобы быть богатым, независимым и счастливым.
Читать дальше →

Введение в CQRS + Event Sourcing: Часть 1. Основы

Reading time8 min
Views187K
В первый раз я услышал о CQRS, когда устроился на новую работу. В компании, в которой работаю и по сей день, мне сразу сказали что на проекте, над которым я буду работать используется CQRS, Event Sourcing, и MongoDB в качестве базы данных. Из этого всего я слышал только о MongoDB. Попытавшись вникнуть в CQRS, я не сразу понял все тонкости данного подхода, но почему-то мне понравилась идея разделения модели взаимодействия с данными на две — read и write. Возможно потому что она как-то перекликалась с парадигмой программирования “разделение обязанностей”, возможно потому что была очень в духе DDD.

Вообще многие говорят о CQRS как о паттерне проектирования. На мой взгляд он слишком сильно влияет на общую архитектуру приложения, что бы называться просто “паттерном проектирования”, поэтому я предпочитаю называть его принципом или подходом. Использование CQRS проникает почти во все уголки приложения.

Сразу хочу уточнить что я работал только со связкой CQRS + Event Sourcing, и никогда не пробовал просто CQRS, так как мне кажется что без Event Sourcing он теряет очень много бенефитов. В качестве CQRS фреймворка я буду использовать наш корпоративный Paralect.Domain. Он чем-то лучше других, чем то хуже. В любом случае советую вам ознакомиться и с остальными. Я здесь упомяну только несколько фреймворков для .NET. Наиболее популярные это NCQRS, Lokad CQRS, SimpleCQRS. Так же можете посмотреть на Event Store Джонатана Оливера с поддержкой огромного количества различных баз данных.

Начнем с CQRS


Что же такое CQRS?
CQRS расшифровывается как Command Query Responsibility Segregation (разделение ответственности на команды и запросы). Это паттерн проектирования, о котором я впервые услышал от Грега Янга (Greg Young). В его основе лежит простое понятие, что вы можете использовать разные модели для обновления и чтения информации. Однако это простое понятие ведет к серьёзным последствиям в проектировании информационных систем. (с) Мартин Фаулер
Читать дальше →

Как я дружил MatLab и C++ в Linux

Reading time4 min
Views45K

Прошла пора дипломов и я хочу поделиться своим рецептом его выполнения. Итак: тема сложная, времени мало, писать все «с нуля» или искать готовые библиотеки — нет большого желания, тем более что мне важна скорость работы системы, а от левых самописных библиотек можно ждать любого подвоха.
Надо сказать что размышлял я недолго и пришел к следующим выводам:
  1. Операционная система — тут думать особо не пришлось: т.к. я являюсь поклонником Debian (к слову: мое решение можно перенести и на Windows).
  2. Интерфейс будущей программы — C++, Qt.
  3. Логика программы — MatLab.

О том, как я объединял этот зоопарк в одну систему - прошу под кат.

“Книжная полка хакера” — библиотека бесплатной компьютерной литературы

Reading time1 min
Views13K
Сайт Hackershelf.com — коллекция официально бесплатных электронных книг компьютерной тематики. Библиотека наполняется сообществом — зарегистрированные пользователи могут добавлять книги и редактировать информацию о существующих. В ней уже больше двухсот наименований книг, есть поиск по категориям и популярности.

Стримим радиоэфир или полицейская волна онлайн

Reading time3 min
Views191K
Когда я купил рацию, две недели ходил с гарнитурой и слушал все подряд. Такси, судовые диспетчеры, железнодорожники, полиция, строители, охранники. Потом пришла идея, что слушать просто не так интересно. Надо дать послушать остальным!

Интересно?
Читать дальше →

ПИД-регулятор своими руками

Reading time17 min
Views287K

I. Постановка задачи


Нужно держать температуру на заданном неком уровне и менять задание. Есть микроконтроллер, к которому прицеплены измеритель температуры, и симистор для управления мощностью. Не будем греть голову на ТАУ, ни разностными схемами, просто возьмём и сделаем «в лоб» ПИД-регулятор.
Читать дальше →

Анализ возможностей массового аудита на основе утечки хешей из LinkedIn

Reading time6 min
Views4.6K
Неделю назад утекла база хешей с LinkedIn, для других это событие может быть примечательным само по себе, но для меня, в первую очередь, это означает возможность провести анализ современных возможностей взлома паролей. И я не собираюсь рассказывать о том сколько раз слово «password» было встречено среди паролей и о том, сколько времени занимает перебор шестисимвольных комбинаций. Скорее буду пугать пользователей тем, насколько сложные пароли можно «взломать» за несколько часов. А программистам расскажу как это возможно эффективно реализовать, и в качестве небольшого подарка приложу программу, которую я написал для массового аудита. Присутствует и некоторый ликбез по использованию радужных таблиц с простыми выводами.

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

Защита веб-сервера Apache от атаки медленного чтения, а так же некоторых других направленных атак

Reading time3 min
Views48K
Приветствую.
Хочу поделиться опытом защиты веб-сервера Apache от атаки медленного чтения. О том, что это за атака можно почитать тут (английский), а так же тут (русский).

Рассмотренный способ позволяет обезопасить работу сервера с помощью расширений mod_evasive и mod_security, а главное — требует менее получаса времени на реализацию. Настройка производилась на Ubuntu версии 12.04 + Apache 2.2. Настройка для других версий веб-сервера, а так же для других операционных систем отличается, в основном, особенностями установки программных пакетов и, собственно, версиями устанавливаемых программ и модулей для них.


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

Класс для реализации UNIX-демонов на PHP

Reading time5 min
Views2.5K
Ну начнем с того, что довольно часто приходится сталкиваться с тем, что необходимо реализовывать какую-либо серверную часть для обработки каких-то данных и т.д. Естественно, что сервеную часть удобней всего было бы реализовать в виде демона. В свое время я наткнулся на подобный класс реализации демонов написанного на Python. И вот на прошлой неделе решил написать такое же творение на PHP, вроде получилось не плохо, оценивать Вам.
Читать дальше →

Information

Rating
Does not participate
Date of birth
Registered
Activity