Pull to refresh
8
0
Филя @fareloz

Senior C++ developer

Send message

Подборка подкастов по программированию на русском и английском языках

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

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

И да, есть много интересных и популярных подкастов для разработчиков и программистов. Подкасты невероятно полезны, они будут держать вас в курсе всего что происходит в интересующей вас сфере, а также помогут вам развить более широкий взгляд на постоянно развивающуюся область информационных технологий.
Читать дальше →
Total votes 74: ↑71 and ↓3+68
Comments63

Советы по оптимизации Windows для использования SSD

Reading time5 min
Views61K
Привет, Geektimes! Многие до сих пор продолжают утверждать, что твердотельные накопители ненадежные, поскольку имеют ограниченное количество циклов перезаписи и больше подвержены износу, нежели HDD. Сейчас большинство мифов об этом уже развенчаны, однако некоторые советы по оптимизации Windows для работы с SSD могут оказаться полезными.

image

Многие трюки по оптимизации устарели с того момента, когда SSD были слишком дорогими и ограничивались максимальной емкостью в 128 ГБ. Тем более в погоне за более высокой производительностью накопителя вы можете затронуть другие процессы и в конечном итоге сделать только хуже. Поэтому очень важно знать, какие советы действительно окажутся полезными и будут работать, а какие в современных реалиях бестолковые и не имеют практического смысла.
Читать дальше →
Total votes 55: ↑30 and ↓25+5
Comments39

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

Reading time11 min
Views126K


Внимание! В рецепте с отбеливателем обнаружилась опасность коррозии металла! Не рекомендуется в стандартном применении!

Обзор экспериментов год спустя:
DIY порошок для посудомойки: как не растворить посуду и не повторить моих ошибок. Год экспериментов

В прошлой публикации мы создавали дешевый порошок для посудомойки из желудей и спичек кальцинированной соды и стирального порошка. В этой я расскажу о том, как можно его улучшить с помощью кислородного отбеливателя и где можно купить компоненты для более продвинутой версии. Будем делать упор на эффективности мойки, но даже при этом цена не выйдет за 100 рублей/килограмм. А еще будет рецепт ополаскивателя с себестоимостью в районе 1 рубля за литр. Как справедливо заметил amarao, занятие не для всех и многим проще использовать готовые таблетки. Но в подобных экспериментах с бытовой химией есть что-то от детства, первых опытов по смешиванию соды с уксусом и газировки с мятными конфетами. Так что ощутимая экономия здесь все-таки вторична. Будем развлекаться) Если кому-то лень читать весь текст — в конце поста будут подробные рецепты с рекомендациями.
Читать дальше →
Total votes 123: ↑123 and ↓0+123
Comments356

std::shared_ptr и кастомный аллокатор

Reading time6 min
Views20K

Кто из нас не любит рефакторинг? Думаю, что неоднократно каждый из нас при рефакторинге старого кода открывал для себя что-то новое или вспоминал что-то важное, но хорошо забытое. Совсем недавно, несколько освежив свои знания работы std::shared_ptr при использовании пользовательского аллокатора, я решил что больше забывать их не стоит. Всё что удалось освежилось собрал в этой статье.

Читать дальше →
Total votes 19: ↑18 and ↓1+17
Comments9

SObjectizer: что это, для чего это и почему это выглядит именно так?

Reading time15 min
Views20K
Разработка многопоточных программ на C++ — это не просто. Разработка больших многопоточных программ на C++ — это очень не просто. Но, как это обычно бывает в C++, жизнь сильно упрощается, если удается подобрать или сделать «заточенный» под конкретную задачу инструмент. Четырнадцать лет назад выбирать было особенно не из чего, поэтому мы сами для себя сделали такой «заточенный» инструмент и назвали его SObjectizer. Опыт повседневного использования SObjectizer-а в коммерческом софтостроении пока не позволяет жалеть о содеянном. А раз так, то почему бы не попробовать рассказать о том, что это, для чего это и почему у нас получилось именно так, а не иначе…
Читать дальше →
Total votes 28: ↑27 and ↓1+26
Comments10

300 потрясающих бесплатных сервисов

Reading time11 min
Views1.6M


Автор оригинальной статьи Ali Mese добавил ещё 100 новых бесплатных сервисов. Все 400 потрясающих сервисов доступны здесь. И еще подборку +500 инструментов от 10 марта 2017 г. смотрите здесь.



A. Бесплатные Веб-Сайты + Логотипы + Хостинг + Выставление Счета

  • HTML5 UP: Адаптивные шаблоны HTML5 и CSS3.
  • Bootswatch: Бесплатные темы для Bootstrap.
  • Templated: Коллекция 845 бесплатных шаблонов CSS и HTML5.
  • Wordpress.org | Wordpress.com: Бесплатное создание веб-сайта.
  • Strikingly.com Domain: Конструктор веб-сайтов.
  • Logaster: Онлайн генератор логотипов и элементов фирменного стиля (new).
  • Withoomph: Мгновенное создание логотипов (англ.).
  • Hipster Logo Generator: Генератор хипстерских логотипов.
  • Squarespace Free Logo: Можно скачать бесплатную версию в маленьком разрешении.
  • Invoice to me: Бесплатный генератор счета.
  • Free Invoice Generator: Альтернативный бесплатный генератор счета.
  • Slimvoice: Невероятно простой счет.

Читать дальше →
Total votes 341: ↑325 and ↓16+309
Comments107

Используем HTML и WebBrowser control в качестве UI для обычных windows-приложений на C#

Reading time6 min
Views34K
Как известно, контрол WebBrowser это просто обертка над ActiveX компонентом Internet Explorer. Следовательно он предоставляет доступ к полноценному layout-движку со всеми современными плюшками. А раз так, то попробуем (сам не знаю правда зачем) на его основе сделать пользовательский интерфейс для обычного windows-приложения.

Можно, конечно, было бы запустить в этом же процессе мини веб-сервер (на HttpListener например) и ловить запросы через него, но это слишком просто, скучно и неспортивно. Попробуем обойтись без сетевых компонентов, just for fun.
Читать дальше →
Total votes 10: ↑9 and ↓1+8
Comments27

Эволюция нейросетей для распознавания изображений в Google: Inception-v3

Reading time4 min
Views40K

Продолжаю рассказывать про жизнь Inception architecture — архитеткуры Гугла для convnets.
(первая часть — вот тут)
Итак, проходит год, мужики публикуют успехи развития со времени GoogLeNet.
Вот страшная картинка как выглядит финальная сеть:
image
Что же за ужас там происходит?

Читать дальше →
Total votes 23: ↑22 and ↓1+21
Comments10

FileChangesWatcher

Reading time2 min
Views10K
Написал на днях одну утилиту и мне она показалась достойной вашего внимания. Захотел поделиться. https://sourceforge.net/projects/filechangeswatcher/
Update 2016.06.28:
исходники: https://sourceforge.net/projects/filechangeswatcher/code, https://github.com/satabol/FileChangesWatcher
бинарники: https://github.com/satabol/FileChangesWatcher/releases/tag/1.0.10.32 (дада, на github можно выкладывать бинарные релизы)

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

image

… чтобы затем пользователь мог открыть месторасположение файла в проводнике Windows:
Читать дальше →
Total votes 31: ↑24 and ↓7+17
Comments49

В гостях хорошо, а с XIAOMI лучше: полезные новинки для вашего дома

Reading time6 min
Views40K
Привет, Гиктаймс! Смартфоны, планшеты, экшен-камеры — все это, конечно, хорошо, но не стоит забывать, что и для дома полезных штук компания XIAOMI выпускает не меньше. Как и обещали, публикуем вторую подборку новинок и аксессуаров, которые сделают из вашего дома или квартиры настоящую высокотехнологичную крепость.


Читать дальше →
Total votes 23: ↑15 and ↓8+7
Comments72

Yandex Translate для Visual Studio Code

Reading time4 min
Views16K
Начну с того, что использую vim в качестве редактора файлов. Все удобно и быстро, но есть некоторые проблемы которые выделил при длительном пользовании:

  • Нет асинхронности. Знаю что есть nvim — но он работает не так быстро и не так гладко
  • Сложность написания плагинов. Спорный конечно вопрос для разных гуру — но честно говоря так много «каши», не хватает модульности и какой то структурности из уже реализованных «велосипедов»
  • Когда слишком много плагинов vim стартует — нужно быть честным, довольно долго и это напрягает

Пользуюсь так же по основному своему хобби — Android Studio. Очень прожорлив этот IDE к ресурсам системы, процессор иногда сходит с ума обрабатывая очередной цикл gradle assembleDebug.

Visual Studio Code испытывал скептически. Первое что удивило скорость запуска вместе с большой структурой проекта. Моментальный поиск по файлам и множество плагинов, отличный менеджер плагинов похожий на Sublime. Минимальная загрузка процессора.

Давно в Android Studio не хватало одной полезной штуки — перевод ресурсов strings.xml под другие языки. Делать раньше это было весьма неудобно:

  • Выделить текст
  • Скопировать
  • Перейти в любой онлайн переводчик
  • Вставить текст
  • Выбрать текущий язык перевода
  • Выбрать в какой язык перевести
  • Скопировать перевод
  • Открыть результирующий strings.xml
  • Вставить перевод

Чего хотелось — одной комбинацией клавиш получить моментальный результат.
Читать дальше →
Total votes 16: ↑11 and ↓5+6
Comments18

Кроссплатформенные интегральные типы C++

Reading time6 min
Views16K
В своей библиотеке стараюсь писать кроссплатформенный код, где это возможно, по стандарту C++, так что для интегральных типов использую только стандартную «десятку» (signed char, unsigned char, short, unsigned short, int, unsigned int, long, unsigned long, long long, unsigned long long) и никаких виндовых DWORD, __int64 и т.п. Тем не менее, иногда хочется определить тип именно 4 байта, чтобы точно 4, а не «системное слово», «размер адреса» и т.п. Стандарт C++ по этому поводу лишь говорит нараспев: char не может быть больше short, который не может быть больше int, который не может быть больше long, который не может быть больше long long.

Приобщившись к магии обобщённого программирования с помощью шаблонов, решил реализовать кроссплатформенный класс, который генерирует интегральный тип нужного размера во время компиляции. Основные приёмы, который я для этого использую — это рекурентное переопределение типов и частичная специализация шаблонов.
Читать дальше →
Total votes 31: ↑20 and ↓11+9
Comments73

С++ exception handling под капотом или как же работают исключения в C++

Reading time15 min
Views71K

От переводчика


В мире победили языки высокого уровня и в мирах руби-питон-js разработчиков остается только разглагольствовать, что в плюсах не стоит использовать то или иное. Например, исключения, потому что они медленные и генерируют много лишнего кода. Стоило спросить "и какой же код он генерирует", как в ответ получил мямленье и мычание. А и правда — как же они работают? Ну что ж, компилируем в g++ с флагом -S, смотрим что получилось. Поверхностно разобраться не сложно, однако то, что остались недопонимания — не давали мне спать. К счастью, готовая статья нашлась.

На хабре есть несколько статей, подробных и не очень (при этом все равно хороших), посвященных тому, как работают exceptions в C++. Однако нет ни одной по-настоящему глубокой, поэтому я решил восполнить этот пробел, благо есть подходящий материал. Кому интересно как работают исключения в C++ на примере gcc — запаситесь pocket-ом или evernote, свободным временем и добро пожаловать под кат.
Читать дальше →
Total votes 38: ↑37 and ↓1+36
Comments10

Бэтмен: вселенная Нолана

Reading time16 min
Views57K
Всем привет!

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

По традиции, Q&A

Что это?



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

Мы говорим только о фильмах?



Вселенная DC довольно просторное место, а история Бэтмена тянется уже более 70 лет. Охватить такой объем в одной статье невозможно, не говоря уже о том, что в самих комиксах есть невообразимое количество противоречий и перезапусков. Потому теории будут касаться исключительно трех фильмов Нолана. Это не значит, что я не буду делать отсылки к комиксам, просто сами теории будут базироваться на фильмах.

Спойлеры?



Фильмы, игры, комиксы о Бэтмене + спойлер из книги Бойцовский Клуб.



Читать дальше →
Total votes 46: ↑35 and ↓11+24
Comments126

Английский для работы: советы из собственного опыта

Reading time6 min
Views32K
Английский востребован не только в аутсорсинговых, но и во многих продуктовых компаниях. Вписать языковые курсы в свой и без того насыщенный график – задача не простая, но реальная. В статье мы расскажем о проверенной программе обучения, раскроем особенности разных форматов занятий и перечислим полезные онлайн-ресурсы.


Читать дальше →
Total votes 13: ↑9 and ↓4+5
Comments11

Habrahabr Enhancement Suite

Reading time2 min
Views8.5K

Привет, Geektimes.


Можно считать этот пост своеобразным продолжением поста Натуральный Geektimes от awaik, а также моего поста на хабре с предложением юзать на страницах «натуральные» формулы в чистом TeX и подключать букмарклетом / юзерскриптом MathJax.



Постоянно появляется желание что-то изменить, как-то настроить под себя, и, как видно, я такой не один. Отсюда и идея сделать один юзерскрипт с желаемыми лично мной опциями, а затем позвать сообщество добавлять свои pull-request-ы (и пожелания в issues конечно же).

Github: https://github.com/keyten/HES.
Как установить: клик (нужен GreaseMonkey для Firefox или TamperMonkey для Chrome (и основанных на нём браузеров))…
Читать дальше →
Total votes 32: ↑26 and ↓6+20
Comments38

Удобное преобразование перечислений (enum) в строковые в С++

Reading time4 min
Views25K
У перечислений есть множество способов применения в разработке. Например, при создании игр они используются для программирования состояний персонажа или возможных направлений движения:

enum State {Idle, Fidget, Walk, Scan, Attack};
enum Direction {North, South, East, West};

Гораздо удобнее, когда во время отладки в консоль выводится сообщение типа “State: Fidget” вместо “State: 1”. Также частенько бывает нужно сериализировать перечисления в JSON, YAML или иной формат, причём в виде строковых значений. Помимо того, что строковые воспринимать легче, чем числа, их применение в формате сериализации повышает устойчивость к изменениям численных значений констант перечислений. В идеале, "Fidget" должен ссылаться на Fidget, даже если объявлена новая константа, а Fidget имеет значение, отличное от 1.

К сожалению, в С++ нет возможности легко конвертировать значения перечислений в строковые и обратно. Поэтому разработчики вынуждены прибегать к разным ухищрениям, которые требуют определённой поддержки: жёстко закодированным преобразованиям или к использованию неприглядного ограничительного синтаксиса, наподобие Х-макросов. Кто-то дополнительно использует средства сборки для автоматического преобразования. Естественно, это только усложняет процесс разработки. Ведь перечисления имеют свой собственный синтаксис и хранятся в собственных входных файлах, что не облегчает работу средств сборки в Makefile или файлах проекта.

Однако средствами С++ можно гораздо проще решить задачу преобразования перечислений в строковые.
Читать дальше →
Total votes 31: ↑30 and ↓1+29
Comments7

Другая реализация метафункции is_function<T> для C++98/03

Reading time13 min
Views11K
    Это небольшой отчет о том, как я решил написать метафункцию is_function для С++98/03, таким образом, чтобы не нужно было создавать множество специализаций для разного количества аргументов.
    Зачем, спросите вы, в 2016 году вообще подобным заниматься? Я отвечу. Это challenge. Кроме всего прочего, эта, сперва чисто теоретическая работа из разряда «возможно или нет», вскрыла некоторые проблемы в современных компиляторах. Всех, кому не чуждо подобное настроение, приглашаю взглянуть.
Читать дальше →
Total votes 29: ↑29 and ↓0+29
Comments11

Все способы вертикального выравнивания в CSS

Reading time6 min
Views802K
image

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

Да, для вертикального выравнивания в CSS есть специальное свойство vertical-align с множеством значений. Однако на практике оно работает совсем не так, как ожидается. Давайте попробуем в этом разобраться.

Читать дальше →
Total votes 42: ↑40 and ↓2+38
Comments20

Information

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

Specialization

Software Developer
Senior
Git
Python
OOP
Docker
C++
C++ STL
MFC
Windows API
Visual Studio