Так себе программист
98 subscribers
185 photos
7 videos
1 file
183 links
Меня зовут Александр Троценко. Разработчик, преподаватель, к.т.н. Пишу о программировании и профессии.

10 лет в разработке desktop на C/С++

Контент: https://taplink.cc/atrotsenko
Download Telegram
YouTube Analyzer 3.0

Выпустили новую версию YouTube Analyzer - анализатора поисковой выдачи YouTube.

Добавлено:
- Боковая панель с превью и тегами выбранного видео.
- Экспорт данных в таблицу HTML.

YouTube Analyzer - классическое desktop-приложение, написанное на Python/PySide(Qt). Его решения можно использовать как шаблон для своих приложений.
🔥2
Когда заменять легаси на новую технологию?

Понятно, что переписывать легаси “только потому что” не нужно. Надо понимать, что мы хотим получить от новой технологии и какие преследуем цели.
А цели и их предпосылки могут быть такие:

1. Снижение стоимости изменений. Когда внесение изменений обходится дорого или легаси-система начинает диктовать объем доработок.

2. Улучшение бизнес-процессов. Когда ограничения легаси-системы не позволяют улучшить продуктовые бизнес-процессы.

3. Отказ от устаревшей системы. Когда сложно и дорого поддерживать старый софт или железо.

4. Предотвращение неминуемой катастрофы продукта. Когда внешние факторы, будь то регуляторика или конкуренты, ведут систему к неизбежному провалу.

5. Приоритетные новые технологии. Когда новая технология лучше соответствует потребностям бизнеса сейчас и в будущем.

Patterns of Legacy Displacement
👍2
Внедрение DLL в EXE

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

Написал этот вопрос в комментарии автору статьи и... вопрос не прошел модерацию😁 Потёрли.

Полазил по сети, может кто-то так делал. И да, конечно делал. Мотивов, в общем-то, два:

1. "Кидаю дружбану exe-шник, а он у него не запускается из-за отсутствия dll. Как встроить эти dll в exe-шник?". Это самый популярный мотив. Оставим его сразу в покое.

2. "Требования/коллеги/заказчик не допускают, чтобы конкретная dll была видна пользователю. Как спрятать ее в exe-шник?". В этом мотиве веса больше. Но это скорее "костыль", прикрывающий проблемы реализации.

Поэтому вопрос остается открытым.
Может ли внедрение DLL в EXE быть действительно полезным на практике?

Есть идеи?
👍1😁1
Управление памятью: “парашют”

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

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

Макконнелл С - Совершенный код (глава 13.2)
👍1
"Голос науки"

Зарегистрировался на платформе “Голос науки”. Это социальная сеть для российских ученых.
Как раз для меня 😉
https://golos-nauki.ru/u/2495217

Говорят, эта платформа должна импортозаместить ResearchGate. Ну, посмотрим-посмотрим. Понаблюдаю в режиме read only. Пока.

Интересно, что в процессе регистрации нужно доказать, что ты действительно имеешь отношение к науке. Только в этом случае заявка на регистрацию может быть одобрена... А как же будут следить за обновлениями обычные читатели?

Тем не менее, система в бетке. Все впереди.
🔥3👍1
Путаница в интерфейсах (часть 2)

Писал уже кое-что про неоднозначности в графических интерфейсах, теперь коснусь и командных.

Моя самая больная троица: git restore / git revert / git reset.
Ну когда бы не вводил одну из команд, обязательно перепутаю! Как проклятие. Осложняется еще и тем, что используешь их не каждый день. Не получается запомнить.

Но, стоит сказать, других подобных штук в консоли мне больше не попадалось.
👍2
Композиция или агрегация

В ООП оба термина описывают отношение между классами как “часть-целое”. Но у каждого своя оговорочка.

Агрегация - это отношение по ссылке, когда оба объекта могут существовать сами по себе, независимо.

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

Новичкам это надо запомнить. Как минимум для собеса. Как максимум, чтобы не впадать в ступор после фразы “давай здесь наследование композицией заменим”.

В википедии в принципе норм примеры, можно почитать поподробней.

P.S.
Получается уже целая серия постов с терминами - студенты сами подсказывают примеры😉
Хорошая кладовочка для быстрых ответов)

#Словарь
🔥2
void Transmogrify( int, int );

int count = 5;
Transmogrify( ++count, ++count );
Иногда я отхожу от основной темы канала. Бывает редко, но бывает. Я писал и про технику, и про природу, и про людей.

Чем шире наш кругозор, тем лучше. Особенно в тех сферах деятельности, где есть место творчеству и изобретательству. А в разработке ПО этого хоть отбавляй.

В общем… киты.
Киты

Киты, конечно, не обезьяны и не тигры, но тоже очень интересные. Это млекопитающие, которые устали ходить по земле и эволюционировали обратно в воду. Это самые крупные животные за всю историю жизни на Земле. Да-да, крупнее синего кита мы не знаем никого!

Еще несколько фактов о синем гиганте:

- За один выдох он выпускает столб пара высотой с двухэтажный дом.

- Воздухом, прошедшим через его легкие, можно наполовину заполнить бетономешалку.

- Его сердце с сосудами размером с суповую тарелку питает тело сквозь 500 млн км артерий, капилляров и вен.

- Среди всех организмов он издает самый мощный звук, распространяющийся более чем на 1500 км.

- Самая большая зафиксированная длина тела - 33,22 м.

- Самая большая зафиксированная масса тела - 136,4 т при длине 27 м.

Палеонтологи уверяют, что киты никогда не были такими крупными как сегодня. Самостоятельно изучить останки древних китов можно по 3D-сканам в открытом доступе. Кстати, просмотр 3D-моделей там вертится на Voyager, написанном на TypeScript. Опенсорс.

Ник Пайенсон - Наблюдая за китами
#КнижнаяПолка
👍4❤1
void func( std::vector<int>& v )
{
v[ 0 ]; // A
v.at( 0 ); // B
}
Как запустить приложение на PySide6 под Windows 7

Если вкратце, то никак 🤷‍♂️

PySide6 (Qt6) использует рантайм Windows 10 и выше. Поэтому на старых виндах он работать не будет. Но если очень надо, то можно попробовать откатить проект до PySide2 и Python 3.8. Это последние версии, поддерживающие Windows 7.

В статье я начал собирать чек-лист по миграции проекта с PySide6 до PySide2 на примере YouTubeAnalyzer. Там сейчас есть такая необходимость. Чек-лист будет пополняться, пока не прекратим поддержку Windows 7.

Чек-лист преследует цель не только показать как перейти на PySide2, но и остудить горячие головы, которым вдруг вздумается это делать. YouTubeAnalyzer - это маленький проект. На проектах побольше я бы перед началом хорошо подумал.
👍4
В каком паттерне проектирования при изменении состояния одного объекта, все зависимые объекты получают оповещения?
Anonymous Quiz
68%
Наблюдатель
18%
Нет такого паттерна
0%
Одиночка
14%
Команда
Шаблонный UI

Если шаблоны кодирования у всех на слуху, то с шаблонами UI (user interface) ситуация поскучнее. И хорошо, что предпринимаются попытки шаблонизировать UI для систем определенной направленности. Например, систем разработки неважно чего.

Это отличная статья, мастрид. Шаблон описан детально, с вредными и полезными советами.

Ключевые пункты:

1. Вверху окна располагаются вкладки для переключения рабочего контекста.

2. Чуть ниже - панель с рабочими инструментами (тулбар).

3. Слева - панель навигации по структуре документа, проекта, директории и т.п.

4. Справа - панель свойств для выбранных элементов.

5. Центральное пространство занимает основная рабочая область с самой ценной информацией.

Кстати, последнее время наблюдается тенденция к расширению рабочей области до размера окна (Blender). Все панели при этом остаются на своих привычных местах, но отображаются поверх рабочей области.

Keep it together: 5 essential design patterns for dev tool UIs
👍4🔥1
Мем в презентации

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

Цель - повеселить публику, привлечь внимание, дать отдохнуть. Это с одной стороны. А с другой - чем-то занять пустоту. Пустоту на слайдах и в материале.

Бывает, что весёлые вставки действительно имеют место. Редко-редко. Юмор автора должен подходить аудитории. Чтобы было весело, должно сойтись много факторов: возраст, специализация, настроение, фаза луны...

Поэтому я рекомендую сводить хохмочки в презентациях к минимуму. Лучше сделать сам материал интересным и доступным. Хотя это очень непросто.
😢4🔥1
Вот так в ежегодном опросе StackOverflow контролируют внимание респондента 🙂

Просто между делом появился вопрос с единственным правильным вариантом ответа. Ответил правильно - двигаешься дальше.
int value = 12345;
char buf[5];
sprintf(buf, "%4d", value);
printf( "%s\n", buf );
printf( "%d\n", value );
Выше дан код на С++. Какой ожидаете вывод программы? (в постах можно найти подсказку)
Anonymous Quiz
8%
Первая строка "12345", вторая строка "12345"
0%
Одна строка "1234512345"
25%
Первая строка "1234", вторая строка "12345"
67%
Неопределенное поведение
Зачем нужна ротация логов

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

Вопрос логичный, если бы не некоторые “но”. Когда мы не используем ротацию, то:

1. Рискуем потерять весь файл логов при ошибке записи (например, при внезапном отключении питания).

2. Рискуем заполнить логами всё дисковое пространство.

3. Рискуем снизить производительность своего софта (что проявится у клиента, когда файл логов “разжирнеет”).

4. Делаем практически невозможным бэкап логов.

5. Усложняем запрос логов у клиента (164 гигабайта?! 😳 У меня нет такой флешки… Сейчас спрошу в отделе матобеспечения…)

6. Усложняем анализ логов (тут есть и техническая сторона, и психологическая).
👍1