Search
Write a publication
Pull to refresh
5
2
Владислав Щапов @phprus

Манул

Send message

Одна маленькая проблема скачивания файлов на медленных соединениях

Reading time5 min
Views30K


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

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

Ищем замену Digital Ocean среди отечественных хостинговых компаний

Reading time14 min
Views74K
Я поклонник виртуальных серверов, так как в большинстве случаев они дают больше свободы и возможностей чем классический виртуальный хостинг и при этом удобнее в эксплуатации по сравнению с выделенными серверами.
Всего три года назад практически не было альтернативы виртуальным серверам от Digital Ocean. В России аналогичных сервисов практически не было. А цены на зарубежные предложения начинались с 5 долларов США в месяц, что в пересчёте по тогдашнему курсу составляло около 150 рублей и было сравнимо с обычным хостингом. Однако, когда доллар и евро подскочили в цене в два раза пользоваться услугами зарубежных провайдеров стало весьма накладно.
Читать дальше →

Исследуем «Ревизор» Роскомнадзора

Reading time17 min
Views181K
ФСБшник хороший
Aqua Mine
Ревизор — программно±аппаратный комплекс для мониторинга доступа к сайтам из реестра со стороны провайдеров — берет свое начало в октябре 2015 года, когда компания «МФИ Софт», та же компания, что сделала СОРМы, выиграла тендер на разработку ПО за 84 миллиона рублей. Согласно условиям тендера, разработчик должен был предоставить работоспособное ПО под Windows и Linux и 700 аппаратных «Агентов» в срок до 14.12.2015, всего через 2.5 месяца, и, похоже, все было готово даже на пару недель раньше дедлайна. Провайдерам в добровольно-принудительном порядке уже в начале декабря предлагалось установить один из трех вариантов Ревизора: в виде образа виртуальной машины VMWare, основанной на OpenWRT 14.07, в виде программы-сервиса под Windows, либо же в виде железного «Агента», который представлял из себя маршрутизатор TP-Link MR3020 с установленным на него OpenWRT и необходимым ПО. Многие провайдеры отказывались от установки комплекса из-за того, что он не сертифицирован, а использоваться будет только им во вред, а другим устройств просто не досталось, и им пришлось установить софтовую версию.

Итак, у меня в руках последняя версия VMWare-образа и exe-файла Ревизора. Давайте же посмотрим, что внутри!
image
Читать дальше →

C/C++: как измерять процессорное время

Reading time10 min
Views83K

image
КДПВ


От переводчика:
Большинство моих знакомых для измерения времени в разного вида бенчмарках в С++ используют chrono или, в особо запущенных случаях, ctime. Но для бенчмаркинга гораздо полезнее замерять процессорное время. Недавно я наткнулся на статью о кроссплатформенном замере процессорного времени и решил поделиться ею тут, возможно несколько увеличив качество местных бенчмарков.


P.S. Когда в статье написано "сегодня" или "сейчас", имеется ввиду "на момент выхода статьи", то есть, если я не ошибаюсь, март 2012. Ни я, ни автор не гарантируем, что это до сих пор так.
P.P.S. На момент публикации оригинал недоступен, но хранится в кэше Яндекса


Функции API, позволяющие получить процессорное время, использованное процессом, отличаются в разных операционных системах: Windows, Linux, OSX, BSD, Solaris, а также прочих UNIX-подобных ОС. Эта статья предоставляет кросс-платформенную функцию, получающую процессорное время процесса и объясняет, какие функции поддерживает каждая ОС.

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

Создание сверхдлинных плоских панорамных изображений из видео

Reading time6 min
Views35K


Предыстория


Пару лет назад на Хабре была статья, посвящённая Адаму Мадьяру Камера Эйнштейна: как один фотограф изображает время. Мне она показалась очень интересной, но, если честно, то я так и не понял технологию для съёмки видео Stainless. Особенно меня восхитили его фотографии поезда метро. После чего я задался мыслью: а могу ли я сам создать нечто подобное?
Читать дальше →

Рогозин: нужна коллективная разработка ПО по примеру Китая, с участием государства

Reading time4 min
Views15K

Для создания российской ОС и СУБД предлагается образование государственно-частных партнёрств и освоение миллиардов из бюджета


18 апреля был опубликован фундаментальный меморандум председателя Следственного комитета РФ Александра Бастрыкина о гибридной войне, развязанной США, и необходимости цензуры интернета в России по китайской модели. По мнению юристов, реализация таких планов очевидно приведёт к широкому ущемлению прав граждан.

Но власти продолжают гнуть свою линию и опять предлагают перенять китайский опыт. Сегодня с другой программной статьёй выступил ещё один рупор официальных властей — заместитель председателя правительства РФ Дмитрий Рогозин. Его статья «Русский чип» посвящена импортозамещению в секторе программного обеспечения и микроэлектроники «в условиях внешнеполитической напряжённости».
Читать дальше →

Длительное архивное хранение данных, или Как посмотреть селфи моей прабабушки?

Reading time7 min
Views27K
Пожалуй, мало найдётся в вычислительной технике областей, привлекающих всеобщее внимание, и, вместе с тем, окружённых таким количеством мифов и недопонимания, как длительное архивное хранение данных. Как человек, сталкивавшийся в своей профессиональной практике с актуализацией данных многолетней давности и с организацией долговременных архивов, рискну также высказаться на этот счёт.

Краткое резюме для тех, кому лень читать всю статью: серебряной пули нет.

Для тех, кому интересно более детальное обсуждение вопроса, предназначен дальнейший текст.
Читать дальше →

v3.14.1592-beta2: все, что вы хотели знать о семантическом версионировании

Reading time5 min
Views35K
Усилия и деньги, вкладываемые в продвижение языка Go, часто приносят пользу и другим разработчикам. В конце прошлого года на сайте gopheracademy была опубликована очень удачная статья о семантическом версионировании. Том самом, которое используется в npm, начинается с домика ^ и все ломает. Под катом спрятан перевод, который поможет вам быстро осмотреть сад граблей версионирования и как сейчас принято им пользоваться. И немного примеров на Go. Передаем слово автору!
go? какой go? зачем go?!

Серверы IBM/Lenovo и сторожевой таймер: эпизод II

Reading time6 min
Views9.7K
Более чем полгода я потратил на совместное с аппаратной и программной технической поддержкой IBM расследование по поводу работы сторожевого таймера на серверах IBM/Lenovo в Linux. Начало этой детективной истории было описано в моей статье SLES 12, сторожевой таймер и серверы IBM/Lenovo. Сейчас, похоже, ситуация разъяснилась, и можно дать конструктивные рекомендации счастливым обладателям железа IBM/Lenovo xSeries.
Читать дальше →

Стандартная библиотека Visual Studio 2015 и телеметрия

Reading time7 min
Views39K

Преамбула


Программы на C и C++, как правило, проводят бо́льшую часть своей жизни внутри функции main() и функций, прямо или косвенно вызываемых из main(). Тем не менее, на самом деле выполнение программы начинается вовсе не с main(), а с некоторого кода из стандартной библиотеки, поставляемой вместе с компилятором. Таковой код, по идее, должен подготавливать окружение для других функций стандартной библиотеки, которые, возможно, позовёт main(), а также параметры самой main() (под Windows; Unix-системы имеют тенденцию передавать argc/argv/envp в подготовленном виде прямо при запуске процесса, но речь не о них). Симметрично, завершающий return в функции main() — вовсе не последняя инструкция программы, после него следует ещё немного кода из стандартной библиотеки.
В Visual Studio «настоящая» точка входа в программу называется mainCRTStartup. В комплекте с VS идут исходники стандартной библиотеки, в VS2015 определение mainCRTStartup находится в %PROGRAMFILES(X86)%\VC\crt\src\vcruntime\exe_main.cpp, но, впрочем, всю работу выполняет exe_common.inl рядом. Давайте туда посмотрим.
...
        // If this module has any thread-local destructors, register the
        // callback function with the Unified CRT to run on exit.
        _tls_callback_type const * const tls_dtor_callback = __scrt_get_dyn_tls_dtor_callback();
        if (*tls_dtor_callback != nullptr && __scrt_is_nonwritable_in_current_image(tls_dtor_callback))
        {
            _register_thread_local_exe_atexit_callback(*tls_dtor_callback);
        }

        __telemetry_main_invoke_trigger(nullptr);

        //
        // Initialization is complete; invoke main...
        //

        int const main_result = invoke_main();

        //
        // main has returned; exit somehow...
        //

        __telemetry_main_return_trigger(nullptr);

        if (!__scrt_is_managed_app())
            exit(main_result);

        if (!has_cctor)
            _cexit();

        // Finally, we terminate the CRT:
        __scrt_uninitialize_crt(true, false);
        return main_result;
...

Ой, а что это за вызовы __telemetry, обрамляющие вызов main?

Увеличиваем производительность с помощью SO_REUSEPORT в NGINX 1.9.1

Reading time3 min
Views43K
В NGINX версии 1.9.1 появилась новая возможность, позволяющая использовать сокетную опцию SO_REUSEPORT, которая доступна в современных версиях операционных систем, таких как DragonFly BSD и Linux (ядра 3.9 и новее). Данная опция разрешает открывать сразу несколько слушающих сокетов на одном и том же адресе и порту. При этом, ядро будет распределять входящие соединения между ними.
Читать дальше →

Объясняя необъяснимое. Часть 4

Reading time8 min
Views23K
Конференция PG Day’16 с каждым днем всё ближе, а мы продолжаем публиковать серию статей Hubert Lubaczewski об анализе explain и его основных операциях.

В этом, надеюсь, предпоследнем посте серии я расскажу об оставшихся наиболее распространенных операциях, которые вы можете встретить в выводе explain.


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

Zenity на службе у системного администратора

Reading time5 min
Views37K
Задумала как-то одна компания перейти на ПО свободное. И скачали себе линукс на все компьютеры, и сервер с дисками заморскими поставили, и учетные записи для пользователей сделали. И приказал начальник чтобы все сотрудники поставили себе пароли заковыристые. А они хоть и послушали рассказы о том, что за зверь перед ними, а вот где поменять пароль не знают. Или в настройках найти не могут. А от консоли бегут сломя голову. И начинают бегать к админу со словами «админ-админушка, помоги найти кнопочку», и начинает админушка бегать да нервничать, от дум важных отвлекается...

Не секрет, что для многих пользователей (особенно не связанных напрямую с IT) переход на новую операционную систему и ПО часто проходит болезненно. И во многом это связано с привычками. Люди запоминают что где находится на их компьютере и, если все переставить — они теряются. В результате многие простые действия могут вызывать сложности, такие как потеря времени и нервов.

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

Palantir: торговля оружием и распространение пандемии

Reading time7 min
Views22K
Как данные в руках разведчиков аналитиков Palantir превращаются из неструктурированных в структурированные.



Palantirчастная американская компания, четвертый по капитализации (после Uber, Xiaomi и Airbnb) стартап в мире (данные на начало 2016 года). Основные заказчики — ЦРУ, военные, ЦКЗ и крупные финансовые организации.

По-моему, как-то так видели пользу информационных технологий «отцы-основатели» Вэнивар Буш («As We May Think»), Дуглас Энгельбарт («The Mother of All Demos») и Джозеф Ликлайдер («Интергалактическая компьютерная сеть» и «Симбиоз человека и компьютера»), о которых я писал немного ранее.

Под катом — два кейса (2010 года).
  • Первый — анализ распространения вируса во время национальной пандемии на основе пятнадцати миллионов записей обращений в больницу и трехсот пятидесяти семи тысячах записей о смерти.
  • Второй — анализ сотни отчетов из расследования по глобальной сети торговцев оружием.

(За помощь с переводом спасибо Ворсину Алексею)

Проверка проекта Samba с помощью PVS-Studio под Linux

Reading time7 min
Views15K
Проверка Samba с помощью PVS-Studio под LinuxЕсли вы следили за новостями о последних разработках в области инструментов анализа C/C++ кода, то, должно быть, слышали про инструмент PVS-Studio. Я узнал о нем благодаря статьям, которые разработчики публикуют на своем сайте и в которых они рассказывают о проверках проектов с открытым кодом. К настоящему времени уже проверено внушительное число проектов, включая ядро Linux, Qt, Unreal и т.д., и каждый раз им удается находить интересные ошибки, подолгу живущие в коде, никем не обнаруженные. Опечатки, неаккуратное копирование, неопределенное поведение, бессмысленный код, синтаксические ошибки, которые чудесным образом пропускаются компилятором…

Как сказал Джон Кармак, "Все, что является допустимым с точки зрения синтаксиса и пропускается компилятором, в конце концов окажется в вашей кодовой базе".
Читать дальше →

Трассировка ядра с ftrace

Reading time12 min
Views25K
PR-1801-2-2

Проблемы трассировки и профилирования ядра мы уже затрагивали в предыдущих публикациях. Для анализа событий на уровне ядра существует много специализированных инструментов: SystemTap, Ktap, Sysdig, LTTNG и другие. Об этих инструментах опубликовано много подробных статей и обучающих материалов.

Гораздо меньше информации можно найти о «родных» механизмах Linux, с помощью которых можно отслеживать системные события, получать и анализировать отладочную информацию. Эту тему мы хотели бы рассмотреть в сегодняшней статье. Особое внимание мы уделим ftrace — первому и пока что единственному инструменту трассировки, добавленному в ядро. Начнём с определения основных понятий.
Читать дальше →

Создание писем с возможностью отписки через заголовок «List-Unsubscribe» в Яндекс и Gmail (Mail.ru — не рекомендуется)

Reading time3 min
Views46K
Сразу оговорюсь и скажу, что метод работает и с другими почтовыми сервисами. В данной статье были протестированы только Яндекс, Gmail и Mail.ru.

image

Современные почтовые сервисы поддерживают обработку заголовка List-Unsubscribe. Если этот заголовок есть, то сервис выведет кнопку для отписки от вашей рассылки.

Почему это нельзя использовать для писем mail.ru, описано в самом конце статьи.

Это полезно и удобно. Полезность кнопки «отписаться» заключается в следующем: те, кому ваша рассылка неинтересна, нажмут «Отписаться» вместо «Это спам» с большей долей вероятности, чем если бы этой кнопки не было. В итоге довольный подписчик и чистая карма вашей рассылки и домена рассылки в целом.
Читать дальше →

Сертификация в Apple Developer Center простым и понятным языком

Reading time12 min
Views140K

Кратко о главном


В Apple Developer Center с незапамятных времен применяется довольно мудреная система сертификации ваших приложений на каждом из ключевых этапов — разработка, тестирование и публикация.

Зачастую при первом погружении в эту систему у начинающих (и не только) разработчиков возникают серьезные проблемы с пониманием того, как функционирует Apple Developer Center (будем называть его «девцентр» для простоты). В результате, мне в процессе профессиональной деятельности не раз приходилось наблюдать на новых местах работы огромные свалки из профилей и сертификатов в девцентре, в результате чего приходилось приступать к «разбору завалов».

При этом, в сети довольно не такой большой выбор материалов на эту тему. Конечно, в официальной документации Apple все хорошо структурировано и очень подробно описано, но зачастую просто не хватает времени на изучение такого количества материала. Как правило, хочется быстро понять, что именно и в каком порядке нужно сделать для корректной работы приложения на этапах разработки, тестирования и при публикации его в магазин App Store. В русском же сообществе подобных материалов, собранных в одном месте и в удобном доступе, я не видел вовсе, поэтому и решил написать эту статью. Для всех интересующихся — добро пожаловать под кат.
Читать дальше →

Диалоги о Java Performance

Reading time11 min
Views37K
Каждый год на JPoint эксперты выступают с хардкорными докладами о производительности Java. И ни разу не было скучно — вопрос сохраняет актуальность на протяжении многих лет. О том, откуда растут ноги у мифов, что делает JVM, как измерять производительность, при чём тут бизнес-требования заказчика и как обойти часть граблей мы поговорили с экспертами, для которых Java performance — не проблема, а работа.

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

18-летний энтузиаст купил и установил в подвале мейнфрейм IBM z890 (2004 год)

Reading time2 min
Views41K
Владелец мейнфрейма приводил систему к рабочему состоянию в течение нескольких месяцев


Первый шаг: покупка системы

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

Новые мейнфремы стоят тысячи, десятки и сотни тысяч долларов — в зависимости от моделей. Сколько же стоит б/у система прошлых лет? Скажем, IBM z890? Новый мейнфрейм этой модели стоил $200000 к моменту старта продаж в 2004 году. Сейчас такую же систему один из энтузиастов старого железа купил на сайте «GovDeals» всего за $237. Продавцом выступил какой-то университет, обновлявший парк оборудования. Зачем энтузиасту мейнфрейм? Конечно же, для того, чтобы установить в подвале собственного дома и привести в рабочее состояние.
Читать дальше →

Information

Rating
408-th
Location
Пермь, Пермский край, Россия
Date of birth
Registered
Activity