Search
Write a publication
Pull to refresh
0
max7 @max7read⁠-⁠only

User

Send message

Нужны ли в JavaScript классы?

Reading time6 min
Views105K
JavaScript принято считать прототип-ориентированным языком программирования. Но, как ни странно, этим подходом практически никто не пользуется: большинство популярных JS-фреймворков явно или неявно оперируют классами.
В этой статье я хочу рассказать об альтернативном способе программирования на JavaScript, без использования классов и конструкторов — чистым прототипным ООП и особенностях его реализации на ECMA Script 5.
Читать дальше →

Десять возможностей C++11, которые должен использовать каждый C++ разработчик

Reading time12 min
Views541K
В данной статье рассматривается ряд возможностей С++11, которые все разработчики должны знать и использовать. Существует много новых дополнений к языку и стандартной библиотеке, эта статья лишь поверхностно охватывает часть из них. Однако, я полагаю, что некоторые из этих новых функций должны стать обыденными для всех разработчиков С++. Подобных статей наверное существует много, в этой я предприму попытку составить список возможностей, которые должны войти в повседневное использование.

Сегодня в программе:
  • auto
  • nullptr
  • range-based циклы
  • override и final
  • строго-типизированный enum
  • интеллектуальные указатели
  • лямбды
  • non-member begin() и end()
  • static_assert и классы свойств
  • семантика перемещения
Читать дальше →

Общественный совет при ФСБ предлагает запретить Tor и сайты-анонимизаторы, привлечь к ответственности их создателей

Reading time5 min
Views144K
Сегодня я прочёл на русском националистическом сайте «Спутник и Погром» новость «ФСБ хочет запретить защиту от электронной слежки», основанную на опубликованной сегодня же «Известиями» новости «Силовики предлагают запретить ПО, скрывающее пользователя в Сети». И новость эта такова, что от неё волосы должны дыбом стать на голове!

Общественный совет при ФСБ России (его логотип я привожу справа) счёл нужным (вероятно, на заседании 29 мая) предложить Госдуме внесение таких поправок в закон «Об информации, информационных технологиях и о защите информации», которые сделают противозаконными все программы, маскирующие информационные данные и IP-адреса пользователей. Это касается и браузера Tor, и анонимизирующих сайтов, позволяющих при помощи обычного браузера переходить с изменённым IP-адресом на некоторый другой сайт (заблокированный за «экстремизм», за «пропаганду суицида», за «пропаганду наркотиков», за «педофилию») и читать этот сайт невозбранно (быть может, втайне язвительно посмеиваясь над Роскомнадзором — кто знает?…). Теперь будет не до смеха.

Интересны приведённые «Известиями» реплики отдельных лиц в связи с этой инициативою.

Анатолий Григорьевич Кучерена (член Общественного совета при ФСБ, на выборах 2012 года ставший доверенным лицом Путина) заявил непосредственно «Известиям», что они готовят рекомендации депутатам о необходимости введения ответственности за создание программного обеспечения, позволяющего посещать запрещённые сайты. «Принять чёткий закон, в котором будут прописаны санкции, способные удержать программистов от желания создавать вредоносные программные продукты», — обозначил Кучерена намерения борцов с сетевою анонимностью.

Мнение Леонида Леонидовича Левина (первого заместителя комитета Госдумы по информационной политике) сводится к тому, что анонимайзеры используют люди, которые намереваются совершить какие-то незаконные действия, или те, кому есть что скрывать.

Сайт «Спутник и Погром» прибавляет, что после Tor и анонимизаторов неизбежно начнётся борьба против VPN — и это мнение я полагаю вполне справедливым, даже с прибавкою: не только VPN, но и SSH, а за ними и HTTPS, вероятно, и SSL в целом.

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

Путешествие через вычислительный конвейер процессора

Reading time16 min
Views138K
Так как карьера программиста тесно связана с процессором, неплохо бы знать как он работает.

Что происходит внутри процессора? Сколько времени уходит на исполнение одной инструкции? Что значит, когда новый процессор имеет 12, или 18, или даже 31-уровневый конвейер?

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

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

Эта статья рассказывает, как устроен вычислительный конвейер x86 процессора.
Читать дальше →

Как запустить программу без операционной системы: часть 4. Параллельные вычисления

Reading time18 min
Views30K
После долгого перерыва продолжаем делать интересные штуки, как всегда на чистом железе без операционной системы. В этой части статьи научимся использовать весь потенциал процессоров: будем запускать программу сразу на нескольких ядрах процессора в полностью параллельном режиме. Чтобы провернуть такое, нам потребуется многое сделать для расширения функциональности программы полученной в части 3.

Просто так выполнять какие-то вычисления на ядрах процессора – скучно, поэтому нужна задача, которая требует больших вычислительных ресурсов, хорошо раскладывается на параллельные вычисления, да и выглядит прикольно. Предлагаем сделать программу, которая рендерит простенькую 3D-сцену, используя алгоритм обратной трассировки лучей, или, по-простому, Ray Tracing.

Начнем с самого начала: наша цель параллельные вычисления на всех ядрах процессора. Все современные процессоры для PC, да и ARM уже тоже (я молчу про GPU) – это многоядерные процессоры. Что же это означает? Это означает, что вместо одного вычислительного ядра у процессора на одном компьютере присутствует несколько ядер. В общем случае, все выглядит несколько сложнее: на компьютере может быть установлено несколько сокетов (чипов процессора), в рамках каждого чипа (в рамках одного кристалла) может находиться сразу несколько физических ядер, а в рамках каждого физического ядра может находиться несколько логических ядер (например, те, что возникают при использовании технологии Hyper Threading). Все это схематично представлено на рисунке ниже, и называется топологией.


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

Три-пятнадцать

Reading time2 min
Views34K
image Готовь сани летом, а телегу зимой. Копиразм крепчает. А значит самое время готовится к трудным временам, и позаботиться о создании альтернативной Windows-совместимой операционной системы. Поэтому команда проекта ReactOS c гордостью представляет очередной релиз:

ReactOS 0.3.15



Наиболее значимые нововведения этого выпуска:

  • «Расово верная» реализация поддержки USB-мыши, клавиатуры и устройств хранения данных.
  • Переписана подсистема управления сессиями.
  • Alternate ReactOS Memory Management Module взял на себя все практически обязанности управления памятью.
  • Обновленный драйвер UniATA с поддержкой SATA-1/2/AHCI.
  • Предварительная поддержка для отладки компонентов ReactOS с помощью WinDbg.
  • Virtual PC (и потенциально Hyper V) возвращена в список поддерживаемых платформ виртуализации (если не считать бага с видеодрайвером).
  • Различные улучшения благодаря внедрению набора тестов приложений на основе AutoHotKey.
  • Багфиксы по результатам сканирования утилитой Driver Verifier встроенных в дистрибутив драйверов.


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

Механизм атомарного коммита в SQLite

Reading time23 min
Views29K
Эта статья — частичный перевод одной интересной статьи с sqlite.org, в которой подробно рассматривается реализация транзакций в SQLite. На самом деле я очень редко работаю с SQLite, но тем не менее мне очень понравилось это чтиво. Поэтому если хотите просто развить кругозор — будет интересно почитать. Первые две секции не включены в перевод, так как там нет ничего интересного, да и мне лень их набивать (пост и так огромный).

3.0 Однофайловый коммит

Мы начнём с обзора шагов, которые SQLite предпринимает, чтобы совершить атомарный коммит транзакции, которая затрагивает только один файл базы данных. Детали формата файлов, которые используются для защиты от повреждения БД и техники, которые применяются для коммита в несколько БД будут показаны ниже.

3.1 Начальное состояние


Состояние системы, когда соединение с БД только что было поднято, поверхностно изображено на рисунке справа. Справа показана информация, которая хранится на энерго-независимом носителе. Каждый прямоугольник — это сектор. Синий цвет говорит о том, что этот сектор содержит оригинальные данные. Посередине изображён дисковый кеш операционной системы. В самом начале нашего примера кеш холодный, это изображено белым цветом. На левой части рисунка — содержимое оперативной памяти процесса, который использует SQLite. Соединение с БД только что было открыто, и никакой информации прочитано не было.

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

Будущее анонимности: Какое оно?

Reading time3 min
Views52K


Мы живем в очень интересное время, совсем недавно интернет был свободен от правообладателей органов регуляции правопорядка.
Да и даже на torrents.ru неугодные раздачи не удаляли
Но теперь все изменилось, Skype теперь прослушивается ФСБ, по первой заявке к любому сервису органы получат всю доступную им информацию.

То обладателя форума который стал не угодный чиновнику строительной компании решили засудить на 1.7 миллиона долларов.

Недавно была хорошая попытка проверку волнения публики ошибочная блокировка vk.com

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

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

Осталось 27 дней до вывода на орбиту первого спутника O3b

Reading time2 min
Views48K


Финансируемая гуглом компания O3b Networks подготовила первый из 8-ми спутников к запуску. На главной странице их сайта уже можно видеть обратный отсчет времени до запуска.

На хабре уже был топик об этом «провайдере будущего», который планирует предоставить быстрый, доступный и качественный доступ в интернет для 70% населения планеты. Данный провайдер является «оптовым» поставщиком канала, то есть он будет предоставлять трафик посредникам (например, сотовым операторам), которые уже смогут распределять его между своими клиентами через имеющиеся сети.

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

Помочь GNU/Linux — это просто!

Reading time3 min
Views46K
Эта статья рассказывает о том, как я, внезапно для себя, перешел с уровня простого пользователя GNU/Linux на уровень контрибьютора в мир open source. Надеюсь что она сможет послужить еще кому-то примером для собственного роста.

Начало

Все началось с того, что я, как всегда, перешел на новый релиз Ubuntu, на этот раз на 13.04. У меня оказалась не самая удачная материнка для линуксоида, так как в дистрибутивах из коробки редко есть дрова для ее сетевой карты (RLT8168E). Но ведь это не большая беда, верно? Раздобыв сопутствующие для компилирования пакеты, скачал с офф сайта последние дрова на Linux. Я уже делал так с Ubuntu 12.10 и ничто не предвещало подвоха.

Подвох

Внезапно эти «дрова» не компилируются. Немного повтыкая в текст ошибок, я пошел просить совета на linux@conference.jabber.ru. Там мне рассказали, что брать дрова с сайта — не всегда хорошая идея и что для моей сетевой карты в репозитории есть пакет. Приятный сюрприз. И действительно, стоило начать с поиска пакета с дровами в репозитории. Но, как оказалось, в нем код того же модуля и при компиляции он точно так же падает.
Читать дальше →

Вертикальная черта, затем ноль

Reading time3 min
Views41K
Заголовок, выраженный словами, понадобился только для поисковой находимости. Но речь пойдёт о роли символьной конструкции «|0» в JavaScript.

Впервые на неё я обратил внимание, когда переводил FAQ про asm.js и читал спецификации этого подмножества языка JavaScript. Там «|0» служит, например, для указания типа значения, возвращаемого из функции: увидели «|0» после значения — значит, перед нами знаковое целое.

Вдругорядь я заметил конструкцию «|0» в примере кода на Гитхабе, где происходило преобразование к целому числу результата деления на 1024².

Тогда глаза мои открылись, и я увидел прекрасные возможности:

( 3|0 ) === 3;       // целые числа не изменяет
( 3.3|0 ) === 3;     // у дробных чисел отбрасывает дробную часть
( 3.8|0 ) === 3;     // не округляет, а именно отбрасывает дробную часть
( -3.3|0 ) === -3;   // в том числе и у отрицательных дробных чисел
( -3.8|0 ) === -3;   // у которых Math.floor(-3.3) == Math.floor(-3.8) == -4
( "3"|0 ) === 3;     // строки с числами преобразуются к целым числам
( "3.8"|0 ) === 3;   // при этом опять же отбрасывается дробная часть
( "-3.8"|0 ) === -3; // в том числе и у отрицательных дробных чисел
( NaN|0 ) === 0;     // NaN приводится к нулю
( Infinity|0 ) === 0;     // приведение к нулю происходит и с бесконечностью,
( -Infinity|0 ) === 0;    // и с минус бесконечностью,
( null|0 ) === 0;         // и с null,
( (void 0)|0 ) === 0;     // и с undefined,
( []|0 ) === 0;           // и с пустым массивом,
( [3]|0 ) === 3;          // но массив с одним числом приводится к числу,
( [-3.8]|0 ) === -3;      // в том числе с отбрасыванием дробной части,
( [" -3.8 "]|0 ) === -3;  // и в том числе с извлечением чисел из строк,
( [-3.8, 22]|0 ) === 0    // но массив с несколькими числами вновь зануляется
( {}|0 ) === 0;                // к нулю также приводится пустой объект
( {'2':'3'}|0 ) === 0;         // или не пустой
( (function(){})|0 ) === 0;    // к нулю также приводится пустая функция
( (function(){ return 3;})|0 ) === 0;    // или не пустая

Итак, во-первых, перед нами удобное средство отбрасывания дробной части.

  • По отношению к отрицательным числам оно полезно тем, что дробное число превращается не в ближайшее меньшее целое число (возрастая по модулю), как это случилось бы после «Math.floor()», а в ближайшее меньшее по модулю целое число (возрастая по значению). Нередко именно это и требуется.
     
  • По отношению к положительным числам оно полезно уж тем одним, что конструкция «|0» более чем на порядок короче по сравнению с «Math.floor()». Поэтому она может и должна вызывать у разработчиков привыкание не меньшее, чем та принятая в jQuery запись «$()», о которой я говорил четыре дня назад, что с неё никто добровольно не перейдёт обратно на «document.getElementsByClassName()», например.

Во-вторых, перед нами удобное средство преобразования различных типов к целым числам.

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

Зачем разрабатывать электронный протокол совещаний на Sharepoint 2013

Reading time5 min
Views7.7K
Прошлая статья на тему интеграции проектов на базе Sharepoint получила довольно интересный резонанс. И по многочисленным заявкам на e-mail меня попросили продолжить мое литературное творчество.

Сегодня попробую показать что нибудь интересное из области бывших реализаций в области Sharepoint 2013 в нашей компании.
Не буду проводить сравнения с различными мастодонтами в области СЭД, просто опишу и покажу реализацию примера одной из доработок для Sharepoint 2013 на базе Worklite Docs которая будет небезинтересна страждующим.
Читать дальше →

Боремся со спамом стандартными средствами почтовика (на примере Exim)

Reading time7 min
Views18K
Регулярно натыкаюсь на статьи про прикручивание к почтовикам антиспамовских систем (например spamassassin и подобных). Каждый раз, смотря на эти связки и кучу проблем которые они приносят, «пожимаю плечами» и искренно не понимаю зачем все это? Спам можно очень эффективно рубить непосредственно силами почтовика, без привлечения сторонних программ, некоторые из которых еще и требуют длительного обучения (насколько я знаю, но могу и ошибаться — не использую я их).

Метод отлова спама, который я опишу в этой статье, дает эффективность, примерно 97%. Он опробован на 10-ке серверов, и работает уже как минимум лет семь.
Читать дальше →

EVE Online, битва при Asakai, что же произошло на самом деле

Reading time3 min
Views87K
Навеяно постами:

3000 кораблей схлестнулись в бою в EVE Online
Сражение при Asakai: как EVE Online справляется с гигантскими битвами

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

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

Справедливые ожидания вашего технического директора

Reading time10 min
Views35K
Я – ваш новый технический директор.

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

Профессионалы ли мы?

Это главный вопрос. Я расскажу, чего я от вас жду, и это определит ответ на вопрос, профессионалы ли мы.
Читать дальше →

Чем опасен rebase, или как получилось, что 2*3=5

Reading time2 min
Views96K
Однажды старший программист Антон искал причину очередного бага в очень важном проекте компании:
git bisect start
git bisect bad
git bisect good
…

В компании использовали rebase, история коммитов была линейной, и поиск по ней доставлял Антону одно удовольствие.
— Ага, нашел. Ну конечно: в коде написано «2*3=5», ещё бы оно работало с этим бредом! Какой @#$%^ это написал?
Читать дальше →

Единорог вновь готов к общению с Си++ программистами

Reading time2 min
Views29K
Единорог вернулся
Приглашаю Си/Си++ программистов присоединиться к блогу PVS-Studio. Вы узнаете о разных интересных вещах из мира Си/Си++ и о том, кто, где и как программирует. Расскажу немного о том, что не было опубликовано на Хабре за время нашего отсутствия здесь.
Читать дальше →

Хаос внутри нас

Reading time5 min
Views7.2K
Теория динамического хаоса давно является популярной (можно сказать, «модной») темой среди интеллектуалов — технарей, айтишников, даже гуманитариев.
Околонаучные книги и интернет-страницы о хаосе экплуатируют одни и те же модели, известные чуть ли не с XIX века: фракталы, турбулентность, логистическое отображение…
Между тем, в последние 10 лет стало понятно, что динамический хаос (наравне с самоорганизацией) —
ключ к пониманию мироздания, в том числе происхождения и работы нашего сознания.
Серьёзные монографии на эту тему требуют высокого уровня подготовки и математической культуры.
(У кого таковой имеется, рекомендую:
А.Б. Каток, Б. Хасселблат «Введение в современную теорию динамических систем»).
Разумеется, есть примеры сбалансированного подхода:
  • Г.М. Заславский, Р.М. Сагдеев «Введение в нелинейную физику»
  • С.П. Кузнецов «Динамический хаос»
  • А. Лихтенберг, М. Либерман «Регулярная и стохастическая динамика»
расчитанные на уровень 2-3 курса техвуза.
Есть и сайты содержательные:
Саратовская группа нелинейной динамики
Загадочный сайт

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

Лентикулярные билборды со скрытым текстом для маленьких людей

Reading time1 min
Views38K


На улицах Мадрида установили щиты, которые показывают «скрытое» послание для детей ростом ниже 1,35 м.

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

Чёрный список 2.0, теперь с уголовными наказаниями

Reading time5 min
Views102K
Великий китайский файрвол — сидит 10 миллионов китайцев и фильтруют пакеты.
Великий русский файрвол — сидит 10 миллионов русских.
Именно эту мрачную шутку, которую огласили на Linux.org.Ru 16 декабря 2010 года, приходится вспомнить нынешнею весною. Из-за длинных праздников в начале мая сообществом Хабрахабра совершенно была проигнорирована статья «Кремль введёт уголовное наказание за "вредоносный" контент в Интернете», появившаяся 29 апреля в «Известиях». Меж тем статья эта, несомненно, заслуживает обсуждения: в ней сообщают, что администрация Президента прямо сейчас деятельно готовится ко внесению в Госдуму пакета поправок в законодательство, так что к существующей возможности блокировки сайтов за пропаганду «экстремизма», «детской порнографии», «наркотиков» и «самоубийств» будут добавлены новые меры — крупные штрафы и лишение свободы (тюремное заключение).

Термины «экстремизм», «детская порнография», «наркотики» и «самоубийства» приходится брать в кавычки. Все мы поневоле стали живыми свидетелями того, как за «наркотики» закрыли сайт про игру EVE Online (где описывалось применение вымышленных химических веществ к вымышленным персонажам), за «самоубийство» — безобидный юмор наподобие статьи из Абсурдопедии или творчества Каганова (а в так называемом реальном мире под предлогом детского самоубийства изымают из продажи мангу «Death Note» в Свердловской области, хотя там вся область названа в честь одного из организаторов убийства детей Императора, но это никого не волнует), за «экстремизм» — национально-таргетированную антиалкогольную пропаганду (№1568 в федеральном Списке экстремистских материалов). Что же касается «детской порнографии» (на самом деле предназначенной для вполне взрослых педофилов), то необходимость борьбы с её потреблением в Интернете (вместо борьбы с её производством в реальном мире, неизбежно связанным с реальным растлением реальных детей, для которого нелицензионные раздачи в Интернете как раз представляют собою прямую экономическую угрозу, лишают финансирования) является не совершенно очевидною — а вопрос, заданный об этом министру, оказался проигнорированным.

Истошные вопли негодования, вызванные закрытием нескольких сайтов по небесспорным основаниям, остались без ответа. Раскрутка маховика репрессий продолжается — теперь закрывать станут не только сайты, но и людей. К чему это приведёт? Думаю, что продолжится преследование вымышленных произведений, подобных вышеперечисленным случаям фантастической «наркомании» и нарисованного «суицида». Об этом можно успешно догадываться не только посредством экстраполяции совершившихся событий, но также и через проведение аналогии с зарубежьем. Старожилы Хабрахабра наверняка припомнят, что последствия произвольного и непубличного пополнения чёрного списка (содержимое которого скрывают от общества под предлогом непропагандирования) я обсуждал на Хабрахабре ещё летом 2009 года на примере Австралии. И сбылось, хотя и не в полном объёме. А теперь о том, как может выглядеть подобный произвол, когда он начинает прибегать к реальным тюремным срокам, предлагаю поглядеть на примере другой страны Южного полушария — Новой Зеландии. Там лишь недавно вышел из тюрьмы (но всё ещё находится под угрозой десяти лет условного срока) гражданин, выложивший в Интернете всего-навсего аниме о половой жизни вымышленных (и лишь частично человекоподобных) персонажей — эльфов и фей, которые благодаря особенностям японской анимации (крупные глаза, крупные головы и проч.) и особенностям японской озвучки (тонкие голоса, яркие эмоции) показались экспертам «похожими на детей».

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

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity