Обновить
4

Программист

1
Подписчики
Отправить сообщение

Уходя — уходи? Ночной разговор об увольнениях

Время на прочтение6 мин
Охват и читатели123K
Нашло. Нет, накатило. 7 мест работы, 7 перемен, и ещё неизвестно, что впереди — увы, в мире корпораций нет такого, чтобы раз — и навсегда, одна запись в трудовой, одна любовь и полностью отданные душа и ум. Сейчас всё круто и завтра утром я с радостью выйду в офис, но who knows, who knows, не всё зависит от нас с вами. Так вот, увольнения бывают разные: плохие, хорошие, вынужденные, скандальные. А давайте обсудим, как оно бывает, как уйти красиво или не уйти вовсе.


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

Архитектура как бремя

Время на прочтение10 мин
Охват и читатели8K

За время своей карьеры я поработал с разными legacy-проектами, каждый из которых страдал от тех или иных изъянов.


Разумеется, часто главной проблемой было низкое качество программного обеспечения (отсутствие модульных тестов, отказ от использования принципов чистого кода…), но были также и трудности, чьим источником являлись архитектурные решения, принятые в начале работы над проектом или даже в период зарождения корпоративной системы. На мой взгляд, этот класс проблем является причиной наибольшей боли для многих проектов.


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


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


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

Получение ссылок на аудио без VKApi

Время на прочтение3 мин
Охват и читатели45K
Данная страница будет полезной для тех, кто решил взять заказ на парсер аудио-треков VK и резко понял, что ничего не понял.

В чем проблема


Знакомо?

https://m.vk.com/mp3/audio_api_unavailable.mp3?extra=AeL2rMfFyZzlD3HkyvfnvNvLx1KOqw5UDfuXCOTvttm4ts1OBJnYELvHyxvODI9fnM9YztD5A3iOyI14sxv2mNiXt3iTzdLInduXzvG9C2uVr3b5mezinfj2lJbpDhGYC25rDxbwsOPQmg1eu2Pbyxr3ntPowNLhDMrrDs8XnKu2sOuOyO8XzMf1otDmBtL6BNvllNjZx3aZuLHpq3aOBvvhzenJnZKTzKnMuwfKBI4TquffrtzKv2nymMyVDu1LzJnuwMLxwMm/BeTcserWlun3ExLVBG#AqSZntu

Если да — то вы пытались парсить мобильную версию сайта и успешно доставали ссылки. Неверные ссылки. Ссылки на 25-секундный голос, сообщающий что все идет не по плану.
Читать дальше →

Советы и секреты № 1

Время на прочтение4 мин
Охват и читатели34K

Удаление своего досье в Google; прямые ссылки в поиске; новый user.js для Firefox; просмотр программ, которые обращаются к конкретному файлу под Windows; запись анимированного GIF с экрана


В этой рубрике мы будем публиковать небольшие хитрости и полезные советы, которые могут пригодиться в повседневной работе.

Как отредактировать/удалить историю своих действий в Сети, которые собирает Google?
Неделю назад Google представила новый инструмент MyActivity («Мои действия»). Здесь представлена разнообразная информация, в том числе:

  • история поиска в Google, Google Play, на картах Google Maps и прочих сайтах Google;
  • список просмотренных видео на YouTube;
  • список действий в браузере Chrome, в том числе список поисковых запросов в других поисковых системах через омнибар;
  • информация с мобильного телефона Android (Google сохраняет ваши контакты, календари, информацию о приложениях, музыке, сведения об устройстве).
Читать дальше →

19 команд ffmpeg для любых нужд

Время на прочтение3 мин
Охват и читатели606K
От переводчика:
Многие знают, что ffmpeg — это сила, но не все знают, какая именно. Он многогранен и безграничен, а его man объёмен и местами малопонятен, лишь немногие постигли дао профессиональной работы с ним. И тем не менее, этот инструмент может быть полезен почти всем, кто хоть иногда работает с видео и звуком, даже на бытовом уровне. О некоторых полезных консольных командах ffmpeg и пойдёт речь в статье. В некоторых местах я взял на себя смелость вставить ссылки на поясняющие статьи.


ffmpeg — это кроссплатформенная open-source библиотека для обработки видео- и аудиофайлов. Я собрал 19 полезных и удивительных команд, покрывающих почти все нужды: конвертация видео, извлечение звуковой дорожки, конвертирование для iPod или PSP, и многое другое.

1. Получение информации о видеофайле

ffmpeg -i video.avi

2. Превратить набор картинок в видео

ffmpeg -f image2 -i image%d.jpg video.mpg

Эта команда преобразует все картинки из текущей директории (названные image1.jpg, image2.jpg и т.д.) в видеофайл video.mpg

(примечание переводчика: мне больше нравится такой формат:
ffmpeg -r 12 -y -i "image_%010d.png" output.mpg

здесь задаётся frame rate (12) для видео, формат «image_%010d.png» означает, что картинки будут искаться в виде image_0000000001.png, image_0000000002.png и тд, то есть, в формате printf)
Читать дальше →

Опасное видео: как я нашёл уязвимость в видеохостингах и не умер через 7 дней

Время на прочтение6 мин
Охват и читатели107K


Всем привет! Я Максим Андреев, программист бэкенда Облака Mail.Ru. В свободное время я люблю искать баги. В сегодняшнем посте я хочу рассказать об одной довольно интересной уязвимости, которую я нашёл и зарепортил в bug bounty нескольких крупных компаний, за что получил солидное вознаграждение. Уязвимость заключается в следующем: если сформировать специальный видеофайл и загрузить его на сервер, то:

  • можно получить на нём SSRF;
  • можно получить local file read;
  • если пользователь скачает этот файл, то автоматически будет подвержен уязвимостям, даже если его не откроет: можно будет получить доступ к данным на компьютере пользователя и узнать его имя.

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

Зацените: сделал стол

Время на прочтение6 мин
Охват и читатели164K


TL;DR В статье описывается мой опыт постройки стола c нуля из фанеры. От проектирования до сборки.

Я очень долго страдал от плохих столов. Все они неудобные, плохого качества, маленькие и, самое главное, ШАТКИЕ. Более-менее приличные столы стоили тысячи долларов. В итоге я решил изготовить стол самостоятельно.

Основные требования к столу:

  • Устойчивость! Предметы на столе не должны трястись, если резко положить руки на стол или оттолкнуться от него. Мой стол весит ~120кг. С его края можно делать сальтухи, при этом на другом конце паять SMD компоненты.
  • Ширина и глубина столешницы. Столы шириной 60 см — это унижение. Мне нужно иметь запас по глубине, чтобы можно было отодвинуть ноутбук вперед, и при этом получить достаточное рабочее пространство.
  • Вместительность. Мне нужны полки, чтобы разместить там оборудование: паяльники, лабораторный блок питания, осциллограф, аудио усилитель и т.д. При этом полки должны быть так же устойчивы, как и стол.
  • Цена. Я не готов выложить за стол несколько тысяч долларов. Мой стол обошелся в ~$300 с учётом покупки всего инструмента для сборки и покраски.

Исследование мобильного jar трояна

Время на прочтение2 мин
Охват и читатели17K
Бывает так, что вам приходит смс следующего содержания: «Вам пришло MMS-сообщение, которое можно посмотреть по ссылке: ...» Хотя сейчас мобильные вирусы уже полностью переключились на Android-устройства, все же остались старинные «динозавры», которые до сих пор терроризируют мирных жителей.

В мои руки попал файл «mms5.jar», который был мгновенно детектирован Антивирусов Касперского как «троянская программа Trojan-SMS.J2ME.Smmer.f». Его мы и разберем подробно.
Читать дальше →

Хабро-медведи и краб

Время на прочтение13 мин
Охват и читатели7.8K
История основана на реальных событиях. Все имена, образы, и совпадения случайны. Кроме одного. С ним согласовано.

— Стоять! – раздался громкий голос из кустов.

— А? Чего?

— Стоять, говорю! Кто такой?

— Ну это… Краб.

— Из моря?

— Из моря.

— Первый раз тут?

— Да.

— В песочницу.

— Чего?

— Вон болото видишь? Туда греби.

— И чего?

— Сиди и жди. Если кто-то захочет… Как ты сказал тебя зовут?

— Краб.

— Если кто-то захочет краба, вытащат из болота и пустят в Хабро-реку.
Читать дальше →

Хеджирование успеха

Время на прочтение10 мин
Охват и читатели15K
Термин «хеджирование успеха» – довольно странный. Поиск по этой ключевой фразе в интернете ничего особо не дает. Откуда же он взялся?

Я его узнал от одного очень толкового собственника, на котором я и пытался применить этот метод. Он меня раскусил, и объяснил мне, что это – хеджирование успеха. Мне термин понравился, запомнился, и я его теперь с удовольствием применяю. Как и сам метод.

Суть метода проста: попросить чего-то для себя в момент достижения промежуточного успеха.

Важным отличием является применение именно в момент промежуточного успеха. Если вы, например, договорились с начальником о повышении должности или зарплаты при выполнении каких-то критериев, достижении какого-то конкретного результата или срока, то это – не хеджирование успеха, а другой стероид.

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

Разработка интерфейсных классов на С++

Время на прочтение24 мин
Охват и читатели108K

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



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

Семантика копирования и управление ресурсами в C++

Время на прочтение28 мин
Охват и читатели62K

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



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

Забирайте свои данные, отвязывайте почту и бегите с qip.ru

Время на прочтение4 мин
Охват и читатели221K
image

Потому что QIP похоже RIP


Прочитав два предложения из заголовка, некоторые гости Хабра испытают на себе разновидность "эффекта Манделы". Ведь согласно распространенному мнению проект QIP уже давно мертв. А вот и нет! Он вполне себе существовал и даже работал более-менее, до недавнего времени…

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

image

В один из моментов «просветления», когда сайт вновь заработал, текущие владельцы вывесили объявление о продаже доменов, формирующих почтовый пулл портала. Объявление провисело пару дней между несколькими даунтаймами, а потом пропало.

Техническая поддержка пользователям не оказывается. Раздел техподдержки недоступен. Никаких предупреждений об EOL (End of Life — завершение обслуживания) или длительных технических работах не рассылалось. Вот такой вот бесславный конец.

UPD В комментариях предложили инструкцию по выживанию.
UPD от 29 сентября 2018 Сейчас портал относительно работоспособен, и на нем появилась надпись:
Проект был продан ООО «Престиж Медиа». Мы обновляем серверное оборудование. С 1 октября 2018 года проект продолжит полноценную работу и развитие. Всё будет хорошо :) Всем мир! :)

UPD от 21 декабря 2018 Почту киповских доменов перенесли на Яндекс!
Читать дальше →

В криптопочте ProtonMail зарегистрировано уже 5 млн аккаунтов

Время на прочтение4 мин
Охват и читатели24K
В 2013 году сотрудники Европейской организации по ядерным исследованиям (ЦЕРН) с участием коллег из Гарвардского университета и Массачусетского технологического университета разработали ProtonMail — почтовый сервис с шифрованием. Он находится в Швейцарии. По мнению разработчиков, сервис защищён от действия американских и европейских законов, в первую очередь, от контроля АНБ. Главная цель — обеспечить безопасность и уважение к частной жизни пользователей. В каком-то смысле ProtonMail стал ответом на закрытие криптопочты Lavabit после атаки американских спецслужб на её создателя Ладара Левисона. Швейцарская компания Proton Technologies AG не попадает под действие американских законов, что сводит к минимуму вероятность подобного сценария.

В сентябре 2018 года ProtonMail достиг значительного рубежа: 5 миллионов зарегистрированных пользователей. «Мы хотим, чтобы вы смогли полностью дегуглифицировать свою жизнь, — сказал сооснователь и исполнительный директор компании Энди Йен в интервью изданию Inverse. — ProtonMail даёт все [необходимые] функции, а также безопасность и конфиденциальность, которые Google не может предоставить. Это наше долгосрочное видение». Кроме почты, в будущем появится шифрование документов, электронных таблиц и всего остального.
Читать дальше →

Git: распространённые ошибки и способы их исправления

Время на прочтение4 мин
Охват и читатели49K
Если вы когда-нибудь работали над большим проектом, в котором, помимо вас, участвуют и многие другие программисты, тогда вы, очевидно, применяли Git в роли системы контроля версий. В ходе использования чего-то, по уровню сложности похожего Git, все совершают ошибки.


Автор материала, перевод которого мы публикуем сегодня, собирается обсудить распространённые ошибки, которые совершают программисты при работе с Git, и поговорить о том, как с этими ошибками бороться.
Читать дальше →

Основные концепции библиотеки chrono (C++)

Время на прочтение6 мин
Охват и читатели140K

Работа со временем как с безразмерной величиной может приводить к недоразумениям и ошибкам конвертации временных единиц измерения:


– Слушай, ты не помнишь, мы в sleep передаем секунды или миллисекунды?

– Блин, оказывается у меня в часе 360 секунд, ноль пропустил.

Для избежания таких ошибок предусмотрена библиотека chrono (namespace std::chrono). Она была добавлена в C++11 и дорабатывалась в поздних стандартах. Теперь все логично:


using namespace std::chrono;

int find_answer_to_the_ultimate_question_of_life()
{
    //Поиск ответа
    std::this_thread::sleep_for(5s); //5 секунд
    return 42;
}

std::future<int> f = std::async(find_answer_to_the_ultimate_question_of_life);

//Ждем максимум 2.5 секунд
if (f.wait_for(2500ms) == std::future_status::ready)
    std::cout << "Answer is: " << f.get() << "\n";
else
    std::cout << "Can't wait anymore\n";

Библиотека реализует следующие концепции:


  • интервалы времени – duration;
  • моменты времени – time_point;
  • таймеры – clock.
Читать дальше →

О реле замолвим мы слово

Время на прочтение4 мин
Охват и читатели49K

— Его убил пусковой ток!

Самый часто используемый компонент для коммутации цепей — это старое доброе электромагнитное реле. Однако правильный выбор реле — дело, зачастую, непростое. Что ж, давайте попробуем осветить этот вопрос.

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

Краткое руководство по сложным вычислительным задачам

Время на прочтение5 мин
Охват и читатели20K

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



Различные классы сложности сортируют задачи в иерархическом виде. Один класс может содержать все задачи другого, плюс задачи, требующие дополнительных вычислительных ресурсов.

Какова фундаментальная сложность задачи? Такова постановка базовой задачи специалистов по информатике, пытающихся рассортировать задачи по т.н. классам сложности. Это группы, содержащие все вычислительные задачи, требующие не более фиксированного количества вычислительных ресурсов – таких, как время или память. Возьмём простой пример с большим числом типа 123 456 789 001. Можно задать вопрос: является ли оно простым числом – таким, которое делится только на 1 и себя? Специалисты по информатике могут ответить на него при помощи быстрых алгоритмов – таких, что не начинают тормозить на произвольно больших числах. В нашем случае окажется, что это число не является простым. Затем мы можем задать вопрос: каковы его простые множители? А вот для ответа на него быстрого алгоритма не существует – только если использовать квантовый компьютер. Поэтому специалисты по информатике считают, что две этих задачи относятся к разным классам сложности.
Читать дальше →

Mod и остаток — не одно и то же

Время на прочтение4 мин
Охват и читатели307K


Приготовьтесь, вас ждёт крайне педантичная статья, которая вполне может спасти вас на собеседовании или сэкономить несколько часов при вылавливании бага в продакшне!

Я сейчас активно работаю над вторым сезоном «Руководства для самозванца» и пишу о шифре RSA для SSH, который, очевидно, является самым загружаемым фрагментом кода в истории IT.

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

Вероятностный метод майнинга Bitcoin

Время на прочтение19 мин
Охват и читатели25K


Думаю немного бреда на вторник не сильно повредит рабочей неделе. У меня хобби, на досуге я пытаюсь придумать, как взломать алгоритм майнинга bitcoin, избежать тупого перебора нонсе и находить решение задачи подбора хэша с минимальным расходом энергии. Сразу скажу результата я, конечно, пока не достиг, но тем не менее, почему бы не изложить в письменном виде идеи, которые рождаются в голове? Куда-то же их нужно девать…

Несмотря на бредовость изложенных ниже идей я думаю эта статья может быть полезна тому, кто изучает

  1. язык C++ и его темплейты
  2. немного цифровой схемотехники
  3. немного теории вероятности и вероятностной арифметики
  4. детально алгоритм хэширования bitcoin
Читать дальше →

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность