Search
Write a publication
Pull to refresh
56
0
Илья @WST

Инженер-программист

Send message

Полезные идиомы многопоточности С++

Reading time25 min
Views83K

Введение

Данная статья является продолжением цикла статей: Использование паттерна синглтон [1], Синглтон и время жизни объекта [2], Обращение зависимостей и порождающие шаблоны проектирования [3], Реализация синглтона в многопоточном приложении [4]. Сейчас я хотел бы поговорить о многопоточности. Эта тема настолько объемна и многогранна, что охватить ее всю не представляется возможным. Здесь я заострю внимание на некоторых практичных вещах, которые позволят вообще не думать о многопоточности, ну или думать о ней в крайне минимальном объеме. Если говорить точнее, то думать о ней только на этапе проектирования, но не реализации. Т.е. будут рассмотрены вопросы о том, как сделать так, чтобы автоматически вызывались правильные конструкции без головной боли. Такой подход, в свою очередь, позволяет значительно уменьшить проблемы, вызванные состояниями гонок (race condition, см. Состояние гонки [5]) и взаимными блокировками (deadlock, см. Взаимная блокировка [6]). Этот факт уже сам по себе представляет немалую ценность. Также будет рассмотрен подход, который позволяет иметь доступ к объекту из нескольких потоков одновременно без использования каких-либо блокировок и атомарных операций!
Еще...

Lua за 15 минут

Reading time1 min
Views341K
image

Для всех, кто хотел разобраться с Lua (скриптовый язык для разработки игр и не только, список), но никак не находил времени, Tyler Neylon приготовил небольшой подарок:

http://tylerneylon.com/a/learn-lua/

Посвящается всем, кто предпочитает один большой список из говорящих самих за себя сниппетов кода (с небольшими комментариями к 95% case'ов) длинным мануалам с огромной иерархией. Очень удобно для тех, кто уже умеет программировать и просто хотел бы разобраться с новым для себя языком. Весь «мега-сниппет» на английском, но примеры несложно читаются.

P.S. А для всего остального есть Hyperpolyglot.

NETMAP (от Luigi Rizzo). Простой и удобный opensource фреймворк для обработки трафика на скоростях 10Gbit/s или 14 Mpps

Reading time22 min
Views49K
Пропускная способность каналов связи непрерывно возрастает, если ещё пару лет назад сервер с каналом 10Gbit/s был привилегией лишь немногих, то теперь на рынке появились предложения, доступные для маленьких и средних компаний. В то же время, стек протоколов TCP/IP разрабатывался во времена, когда о скоростях порядка 10Gbit/s можно было только мечтать. Вследствие этого, в коде большинства современных операционных систем общего назначения имеется множество оверхедов, впустую съедающих ресурсы. В этих условиях, возрастает важность задач высокопроизводительной обработки сетевых потоков.

Статья сделана на основе моего доклада на Highload++ 2012 и предназначена для быстрого введения в удобный и очень эффективный opensource framework, который включен в HEAD/STABLE FreeBSD, называется NETMAP и позволяет работать с пакетами на скоростях 1-10Gbit/s без использования специализированного железа в обычных *nix операционных системах.
Читать дальше →

TCP(syn-flood)-netmap-generator производительностью 1,5 mpps

Reading time14 min
Views21K
Дано:
# pciconf -lv | grep -i device | grep -i network
    device     = I350 Gigabit Network Connection
# dmesg | grep CPU:
    CPU: Intel(R) Core(TM)2 Duo CPU     E7300  @ 2.66GHz (2666.69-MHz K8-class CPU)
# uname -orp
    FreeBSD 9.1-RELEASE amd64

Задача:
Необходимо на данном оборудовании и ОС создать нагрузочную вилку в виде tcp(syn)-генератора трафика производительностью не менее 500kpps.

Решение:
Читать дальше →

Бесплатный курс из 11 лекций про маркетинг, продажи и клиентский сервис в веб-студии/агентстве

Reading time2 min
Views44K
Всем привет! В течение последних пяти лет я (Андрей Терехов) периодически писал на Хабре (и в общие блоги, и с недавних пор в блог проекта Ruward) различные материалы про маркетинг, продажи и клиентский сервис в веб-студиях и агентствах. Как правило, эти статьи получали положительный отклик от пользователей. Мы решили пойти дальше и составили самый полный курс из всех, которые я когда-либо читал (включая оффлайн), по данной тематике.

Мы записали более 8 часов видео, разбитых на 11 лекций, подготовили презентации, кейсы, материалы по теме, кучу разного рода примеров, образцов и шаблонов, которые могут пригодится в жизни веб-студии. Это все превратилось в большой спецпроект, который мы и анонсируем сегодня – www.megaplan.ru/digital.

Итак, какие темы вошли в наш курс из 11 лекций (заодно дам ссылки на мои материалы с хабра по этим же темам там, где они есть):

  1. Структура интернет-агентства. Принципы проектного управления. Треугольник sales-pm-account. (по мотивам http://habrahabr.ru/post/66033/)

  2. Ценообразование в веб-студии. Формирование расчетной сметы. Оправдание цены. Виды демпинга и способы борьбы с ним. (по мотивам http://habrahabr.ru/company/ruward/blog/169559/)

  3. Функции службы маркетинга, основные каналы привлечения клиентов. Работа по разным сегментам ЦА.

  4. Позиционирование — ищем ключевые точки. Собственный сайт студии/агентства — типовые ошибки. (по мотивам http://habrahabr.ru/post/121053/)


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

Используем bower в django проектах с django-bower

Reading time2 min
Views15K


Многим уже надоело лазить по куче сайтов и скачивать js библиотеки и плагины. Да и таскать когда-то скачанные, но уже давно протухшие версии не очень круто. Эти проблемы решает bower.

Но с ним тоже многое нужно делать вручную: следить за components каждого проекта, руками дёргать bower install. После pip с requirements.txt это делать даже как-то лень.

Поэтому представляю вам django-bower, который берёт на себя установку и обновление bower пакетов по списку из settings и прозрачную работу с staticfiles.
Читать дальше →

17-летний подросток опубликовал 0day XSS в PayPal после того, как ему отказали в вознаграждении

Reading time2 min
Views167K
Robert Kugler, 17-летний студент из Германии, который интересуется компьютерной безопасностью, нашел уязвимость на сайте paypal.com, и решил сообщить о ней в рамках программы по награждению за найденные баги. Однако, ему было отказано, т.к. он не достиг 18 лет. В ответ на это, он опубликовал уязвимость на seclists.org.
Читать дальше →

Justify Grid — новое слово в разметке

Reading time2 min
Views35K

Доброго времени суток уважаемые хабражители. На сегодняшний день создание разметки для страницы грубо говоря не автоматизировано. Разметку мы выполняем с помощью float или inline-block (подробнее). Поэтому я хочу поделиться с вами замечательной идей — Justify Grid Framefork.

Проблема


Если говорить о верстке на float, то мы сталкиваемся с проблемой центрирования элемента и нам приходиться скурпулезно указывать все значения ширины и отступов. Эту проблему безусловно решают существующие Grid фреймворки (к примеру 960.gs). Но получается симантически не верная разметка и разработчикам постоянно приходиться использовать .clearfix. Плюс ко всему проблемы могут возникнуть из за дробных пикселей. Если говорить об inline-block, то неудобства появляются из за того, что элементы с этим значением выравниваются по базовой линии, а не по верхнему краю. А если на странице несколько inline-block'ов, каждый из которых расположен с новой строки, то между ними будут некоторые промежутки. Любой пробел повлияет на Ваш layout. Решение есть — CSS Grid Layout или Flexible Box Layout, но эти решения не поддерживаются на большинстве браузеров.
Читать дальше →

Квадрокоптер за вечер не считая доставки

Reading time3 min
Views66K
Идея о постройке квадрокоптера обуревала меня уже год назад. Но как обычно бывает (по крайней мере у меня) идея-фикс, которую не можешь никак выгнать из головы улетучивается, стоит только переждать пару дней. Таких приступов с летающей техникой у меня было несколько. И последний из них был вызван этим постом.
Прочитав пост и комментарии я всё-таки решился на покупку комплектующих. Дело было поздно вечером, а точнее уже рано ночью (я решил, что запал на следующий день уже может пройти и мне будет жалко отдать 400$) и я забыл заказать пару мелочей, которые на следующий день дозаказал второй посылкой (которая, кстати, пришла раньше основной). И начались 20 дней ожидания.
Ещё во время ожидания посылки решил, что сделаю первую раму на скорую руку, т.к скорее всего всё равно разобью её. Идея была в простейшей раме — алюминиевые квадратные трубы и стеклотекстолит по центру.
И вот пришла большая посылка с кучей деталей.
Читать дальше →

Используем Twitter по назначению

Reading time4 min
Views67K
Однажды мне было очень скучно. Настолько, что я решил достать все детали своего «конструктора» и собрать что-нибудь.



В закромах нашлось следующее: Arduino совместимая плата, роутер tp-link mr3020, модуль GPS, гироскоп\акселерометр, и куча всякой прочей ерунды.
Читать дальше →

Беглый взгляд на DesignSpark PCB

Reading time5 min
Views18K
Традиционно, при проектировке печатных плат для электроники разной степени DIY-ности большинством используется практически один и тот же набор софта: Proteus, EagleCAD, SprintLayout и т.д. До недавнего времени все мои потребности удовлетворяла связка Proteus + SprintLayout, однако, Proteus пришлось удались, а с прочими CAD-программами электронной направленности (из тех что «на слуху») хороших отношений у меня не сложилось, а схемки рисовать только на бумаге или на окне не хотелось.
Поиск альтернатив привел меня на сайт буржуйской программы DesignSpark PCB, а дальнейшее использование побудило написать этот небольшой обзор.

С моей, сугубо субъективной точки зрения, удобство использования подобных CAD-программ на 80% складывается из двух пунктов:
  • Удобство создания собственных электронных компонентов
  • Удобство трассировки плат

Об этих двух пунктах речь далее и пойдет.

Дисклеймер


Все чертежи, описанные в данной статье, созданы исключительно для данной статьи. Они не претендуют на оптимальность, проработанность, соответствие каким-либо нормам и стандартам. Они никогда не были и не будут созданы автором, так что даже работоспособность плат ничем не подтверждена. Любые оценки, сравнения, сопоставления и выводы являются на 100% субъективными.
Читать дальше →

Энтропия и WinRAR

Reading time5 min
Views51K
image
Понятие энтропии используется практически во всех областях науки и техники,
от проектирования котельных до моделей человеческого сознания.
Основные определения как для термодинамики, так и для динамических систем и способы вычисления понять не сложно. Но чем дальше в лес — тем больше дров. Например, недавно выяснил (благодаря Р. Пенроуз, «Путь к реальности», стр 592-593), что для жизни на Земле важна не просто солнечная энергия, а её низкая энтропия.

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

77 терабайт в месяц на домашнем анлиме

Reading time3 min
Views91K
Житель Калифорнии и счастливый владелец оптоволоконного доступа в интернет по тарифу Verizon FiOS поставил личный рекорд по трафику: 77 терабайт за месяц. Для него это необычно много, ведь в среднем за последние месяцы получается не более 35 терабайт. Хотя FiOS считается тарифом без ограничения трафика (честный анлим), но парень всё-таки удостоился звонка от менеджеров компании Verizon.

«Я никогда не слышал, чтобы такое с кем-нибудь случалось. Но я наверное использовал больше трафика, чем любой абонент FiOS в Калифорнии, так что я не особенно удивлён», — рассказывает пользователь под ником houkouonchi на форуме DSLReports.com. Вот моя статистика по трафику в этом году:

Январь: 35 ТБ
Февраль: 32 ТБ
Март: 77 ТБ
Апрель: 28 ТБ
Май: 19 ТБ (на 21-е число)
Читать дальше →

Дистрибутив Fedora Linux для Raspberry PI теперь…

Reading time1 min
Views279K

Первый компилятор C от Денниса Ритчи — на Github

Reading time1 min
Views61K

Компьютер DEC с носителем DECtape

На Github выложили last1120c и prestruct-c — ранние версии самого первого компилятора С в истории. Код написан самим Деннисом Ритчи в 1972-1973 гг.

Компиляторы найдены несколько лет назад на старой магнитной ленте DECtape, вставленной в антикварный компьютер VAX производства компании DEC.
Читать дальше →

Дайджест интересных новостей и материалов из мира PHP за последние две недели №17 (06.05.2013 — 21.05.2013)

Reading time6 min
Views20K


Предлагаем вашему вниманию очередную подборку с ссылками на новости и материалы.

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

django-php: PHP в шаблонах Django

Reading time1 min
Views10K
django-phpВ этом посте я расскажу, как подружить Django и PHP с помощью приложения django-php.

Нам понадобится бинарник php-cgi, установленный в системе. Проверить его наличие можно, введя в терминале

$ which php-cgi

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

Советы Google по кодированию на языке Python. Часть первая: советы по программированию

Reading time13 min
Views115K

Хай, Хабр!
Сегодня я хочу представить, дорогому хабрасообществу свой первый хабраперевод. Программировать на языке Python — подобно песне. Но еще лучше, когда Ваш код читаем и понятен, а значит чуть более поэтичен, чем обычно бывает производстве. У каждого свои правила и свои стереотипы относительно написания и оформления исходного кода, на каком бы языке он ни был написан. Множество копий сломано о щиты на форумах, но, как ни крути, нельзя не считаться с мнением авторитетных товарищей. Так что сейчас будет представлен перевод первой части стайл-гайда для языка Python от Google. Коснется он именно постулатов написания кода (вторая часть тоже скоро появится, а посвящена она будет форматированию исходного кода). Сразу предупреждаю: тут много (если не большая часть) прописных истин, которые все знают уже давно. Но я искренне надеюсь, что Вы сможете найти тут что-то новое или хотя бы вспомнить старое. Приступим под катом. И pdf тут как тут.
Читать дальше →

AngularJS для привыкших к jQuery

Reading time4 min
Views165K
AngularJS — прекрасный фреймворк для построения веб-приложений. У него замечательная документация, снабженная примерами. В обучающих «пробных» приложениях (вроде TodoMVC Project) он очень достойно показывает себя среди остальных прочих фреймворков. По нему есть отличные презентации и скринкасты.

Однако если разработчик никогда ранее не сталкивался с фреймворками, подобными Angular, и пользовался в работе в основном библиотеками вроде jQuery, то ему может быть трудно изменить свой образ мышления. Как минимум, так было со мной, и я бы хотел поделиться некоторыми заметками на эту тему. Может быть, кому-то это будет полезно.
Читать дальше →

Формы в Angularjs. Как я обрел любовь

Reading time7 min
Views87K
Мне предстояло в очередной раз сделать это. Казалось бы ничего ужасного, я делал это сотни раз. Но чувство… чувство, что все это неправильно, так не должно быть и должен быть другой выход, не покидало меня. Тогда я еще не знал, что в скором времени мне предстоит встреча, которая навсегда изменит мой мир, откроет глаза и наполнит жизнь смыслом. Смыслом вставать каждое утро, смыслом делать то, что практически перестало доставлять мне удовольствие, смыслом делиться этим чувством с другими.
Читать дальше →

Information

Rating
Does not participate
Location
Красногвардейское, Адыгея, Россия
Date of birth
Registered
Activity