Search
Write a publication
Pull to refresh
0
0
Перикл Фемиди @pfemidi

Домосед

Send message

Еще 9 хитростей для работы с Visual Studio

Reading time2 min
Views8.5K
Совсем недавно мы рассказывали о 18 хитростях для работы с Visual Studio. Сегодня мы отобрали еще 9 советов, которые помогут увеличить продуктивность вашей работы с инструментом.

1. Хотите вернуться к последней отредактированной строке кода? Попробуйте сочетание клавиш Ctrl+Shift+Bkspce, чтобы перейти к последнему месту редактирования.

2. Легко перемещайте указатель инструкций (желтая стрелка) во время отладки при помощи Set Next Statement.

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

О строковом форматировании в современном C++

Reading time9 min
Views156K

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

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

Уменьшаем время сборки ваших Android-проектов

Reading time6 min
Views11K
Доброе утро! Начинаем понедельник с материала, перевод которого подготовлен специально для студентов курса «Android-разработчик. Продвинутый курс».



Недавно я переносил кодовую базу Android в Kure на AndroidX. Мне показалось, что это прекрасная возможность поработать над скоростью сборки проекта. У Gradle всегда была плохая репутация из-за медлительности и ресурсоемкости, но я был очень удивлен, что незначительные изменения в конфигурации сборки могут так значительно увеличить ее скорость.
Читать дальше →

Анализ сишного Hello World

Reading time7 min
Views71K
Hello World — одна из первых программ, которые мы пишем на любом языке программирования.

Для C hello world выглядит просто и коротко:

#include <stdio.h>

void main() {
  printf("Hello World!\n");
}

Поскольку программа такая короткая, должно быть элементарно объяснить, что происходит «под капотом».
Читать дальше →

Пришло время заменить GIF на AV1 видео

Reading time7 min
Views25K


Сейчас 2019 год, и нам пора бы принять решение относительно GIF (нет, речь не об этом решении! Здесь мы никогда не договоримся! — тут речь о произношении в английском, для нас это не актуально — прим. перев.). GIFы занимают огромное количество места (обычно по несколько мегабайт!) что, если вы веб-разработчик, полностью противоречит вашим желаниям! Как веб-разработчик, вы хотите минимизировать вещи, которые пользователям нужно скачать, чтобы сайт загружался быстро. По той же причине вы минимизируете JavaScript, оптимизируете PNG, JPEG, а иногда и конвертируете JPEG в WebP. Но что же делать со старичком GIFом?

Лямбды: от C++11 до C++20. Часть 2

Reading time8 min
Views31K
Привет, хабровчане. В связи со стартом набора в новую группу по курсу «Разработчик C++», делимся с вами переводом второй части статьи «Лямбды: от C++11 до C++20». Первую часть можно прочитать тут.



В первой части серии мы рассмотрели лямбды с точки зрения C++03, C++11 и C++14. В этой статье я описал побуждения, стоящие за этой мощной фичей C++, базовое использование, синтаксис и улучшения в каждом из языковых стандартов. Я также упомянул несколько пограничных случаев.
Теперь пришло время перейти к C++17 и немного заглянуть в будущее (очень близкое!): C++20.
Читать дальше →

Лямбды: от C++11 до C++20. Часть 1

Reading time11 min
Views76K
Добрый день, друзья. Сегодня мы подготовили для вас перевод первой части статьи «Лямбды: от C++11 до C++20». Публикация данного материала приурочена к запуску курса «Разработчик C++», который стартует уже завтра.

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



Вторая часть доступна по ссылке:
Lambdas: From C++11 to C++20, Part 2
Читать дальше →

Ключ на старт: лучшие программные и аппаратные средства для компьютерной криминалистики

Reading time12 min
Views67K


Вот так раньше выглядела одна из визиток Игоря Михайлова, специалиста Лаборатории компьютерной криминалистики Group-IB. На ней — аппаратные ключи программ, которыми пользовался эксперт при проведении криминалистических экспертиз. Стоимость только этих программных продуктов превышает 2 миллиона рублей, а ведь есть еще бесплатное программное обеспечение и другие коммерческие продукты. Какой инструментарий выбрать для работы? Специально для читателей «Хабра» Игорь Михайлов решил рассказать о лучших программных и аппаратных средствах для компьютерной криминалистики.
Читать дальше →

Возможности Python 3, достойные того, чтобы ими пользовались

Reading time5 min
Views45K
Многие программисты начали переходить со второй версии Python на третью из-за того, что уже довольно скоро поддержка Python 2 будет прекращена. Автор статьи, перевод которой мы публикуем, отмечает, что основной объём Python 3-кода, который ему доводилось видеть, выглядит как код со скобками, написанный на Python 2. По его словам, он и сам грешит чем-то подобным. Здесь он приводит примеры некоторых замечательных возможностей, доступных лишь тем, кто пользуется Python 3. Он надеется, что эти возможности облегчат жизнь тем, кто о них узнает.



Все примеры, приведённые в этом материале, написаны с использованием Python 3.7. В описании каждой возможности имеются сведения о минимальной версии Python, необходимой для её применения.
Читать дальше →

Сжимаем APK, стараясь сохранить его работоспособность

Reading time5 min
Views7.3K


/ PxHere / PD


Оптимизация веса APK — это нетривиальная, но очень актуальная во времена Instant App, задача. Включение proguard избавит вас от ненужного кода, если ваши зависимости можно определить на этапе компиляции, но в APK есть ещё несколько видов файлов, которые можно исключить из сборки.


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

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

Восемь малоизвестных опций Bash

Reading time3 min
Views45K
Некоторые опции Bash хорошо известны и часто используются. Например, многие в начале скрипта пишут

set -o xtrace

для отладки,

set -o errexit

для выхода по ошибке или

set -o errunset

для выхода, если вызванная переменная не установлена.

Но есть много других опций. Иногда они слишком путано описаны в манах, поэтому я собрал здесь некоторые из наиболее полезных, с объяснением.
Читать дальше →

Где взять аудиосемплы для ваших проектов: подборка из девяти тематических ресурсов

Reading time5 min
Views42K
В прошлый раз мы делали подборку ресурсов с полноценными музыкальными композициями для приложений, игр или видео. Сегодня рассказываем о площадках с библиотеками коротких звуков и семплов, распространяемых в основном по лицензиям класса Creative Commons.

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

Запуск Bash в деталях

Reading time3 min
Views35K
Если вы нашли эту страницу в поиске, то наверняка пытаетесь решить какую-то проблему с запуском bash.

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

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

Диаграмма


Эта блок-схема обобщает все процессы при запуске bash.



Теперь подробнее рассмотрим каждую часть.
Читать дальше →

Ищем уязвимости в UC Browser

Reading time24 min
Views7.1K

Введение


В конце марта мы сообщали, что обнаружили скрытую возможность загрузки и запуска непроверенного кода в UC Browser. Сегодня разберём подробно, как эта загрузка происходит и как хакеры могут использовать её в своих целях.

Некоторое время назад UC Browser рекламировали и распространяли очень агрессивно: его устанавливали на устройства пользователей с помощью вредоносных программ, распространяли с различных сайтов под видом видеофайлов (т. е. пользователи думали, что качают, например, порноролик, а получали вместо него APK с этим браузером), использовали пугающие баннеры с сообщениями о том, что браузер устарел, уязвим и всё в таком духе. В официальной группе UC Browser в VK есть тема, в которой пользователи могут пожаловаться на недобросовестную рекламу, там много примеров. В 2016 году была даже видеореклама на русском языке (да, реклама браузера, блокирующего рекламу).

На момент написания статьи у UC Browser набралось более 500 000 000 установок в Google Play. Это впечатляет — больше только у Google Chrome. Среди отзывов можно увидеть достаточно много жалоб на рекламу и редиректы на какие-то приложения в Google Play. Это и стало поводом к исследованию: мы решили посмотреть, не делает ли UC Browser что-то нехорошее. И оказалось, что таки делает!
Читать дальше →

Сравнение библиотек логирования

Reading time26 min
Views76K


В сети огромное количество площадок формата Q&A где задаются вопросы из разряда:

  • Предложите С++ логер? (C++ logging framework suggestions)
  • Какой наиболее эффективный потоко-безопасный С++ логер? (What is the most efficient thread-safe C++ logger)
  • Библиотека логирования для игр (Logging library for c games)
  • Асинхронный потоко-безопасный С++ логер? (Asynchronous thread-safe logging in C++)

Люди делятся своим опытом и знаниями, но формат таких площадок позволяет лишь показать личные предпочтения отвечающего. К примеру, одним из самых производительных логеров чаще всего называют Pantheios, который даже по тестам производителя тратит больше 100 секунд на запись 1M строк лога, на современном железе это около 30 секунд, быстро ли это?

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

Семь неожиданных переменных Bash

Reading time3 min
Views38K
Продолжая серию заметок о менее известных функциях bash, покажу вам семь переменных, о которых вы могли не знать.

1) PROMPT_COMMAND


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

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

Попробуйте запустить это в новом шелле, и увидите, что произойдёт с сессией:

$ PROMPT_COMMAND='echo -n "writing the prompt at " && date'
Читать дальше →

Расследование по делу одного неизвестного архива

Reading time13 min
Views17K
Переезд. Новый город. Поиски работы. Даже для IT специалиста это может занять длительное время. Череда собеседований, которые, в общем, очень похожи друг на друга. И как оно обычно бывает, когда ты уже нашел работу, через некоторое время, объявляется одна интересная контора.

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


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

Руководство по магическим методам в Питоне

Reading time28 min
Views646K
Это перевод 1.17 версии руководства от Rafe Kettler.


Содержание


  1. Вступление
  2. Конструирование и инициализация
  3. Переопределение операторов на произвольных классах
  4. Представление своих классов
  5. Контроль доступа к атрибутам
  6. Создание произвольных последовательностей
  7. Отражение
  8. Вызываемые объекты
  9. Менеджеры контекста
  10. Абстрактные базовые классы
  11. Построение дескрипторов
  12. Копирование
  13. Использование модуля pickle на своих объектах
  14. Заключение
  15. Приложение 1: Как вызывать магические методы
  16. Приложение 2: Изменения в Питоне 3


Вступление


Что такое магические методы? Они всё в объектно-ориентированном Питоне. Это специальные методы, с помощью которых вы можете добавить в ваши классы «магию». Они всегда обрамлены двумя нижними подчеркиваниями (например, __init__ или __lt__). Ещё, они не так хорошо документированны, как хотелось бы. Все магические методы описаны в документации, но весьма беспорядочно и почти безо всякой организации. Поэтому, чтобы исправить то, что я воспринимаю как недостаток документации Питона, я собираюсь предоставить больше информации о магических методах, написанной на понятном языке и обильно снабжённой примерами. Надеюсь, это руководство вам понравится. Используйте его как обучающий материал, памятку или полное описание. Я просто постарался как можно понятнее описать магические методы.
Читать дальше

Тест: подходит ли тебе удаленка (не фриланс!)?

Reading time15 min
Views43K
Эта статья для тех, кто задумывается, стоит ли пробовать удаленную работу, и взвешивает риски: стиль жизни существенно поменяется, мало ли, что пойдет не так, а вернуться обратно будет непросто. Я не буду преподносить удаленку как райское наслаждение на пляжике под пальмочкой. Таких статей уже написано достаточно, и они не помогают определиться. Постараюсь помочь с ответом ровно на один вопрос: “Как с минимальными рисками выяснить, подходит ли вам удаленка?”.

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

Итак, радости и гадости удаленки и переходного периода. Ретроспектива личного опыта, а под конец – небольшой тест, он же план эксперимента.

image

(осторожно, много картинок)
Читать дальше →

Несколько Gradle фишек для вашего Android приложения

Reading time4 min
Views20K


В одну из последних рассылок Android Weekly попала статья, в которой упомянули интересные особенности организации сборки проекта. После ее прочтения мне захотелось поделиться кое-чем из того, что использую я для настройки сборки Android проекта.

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

Information

Rating
7,597-th
Location
Москва и Московская обл., Россия
Registered
Activity