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

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

Контент: https://taplink.cc/atrotsenko
Download Telegram
👀 Один я здесь вижу, что чел пашет в своем GitHub как бешеный, отдыхая лишь иногда по воскресеньям?
🤣7
Зачем нужны UML диаграммы?

Честное слово, студенты никогда не дадут мне засохнуть 😊👇

Зачем рисовать ваши схемы, если можно сразу писать код? Бюрократия какая-то!


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

Читать статью: https://mediocre-developer.ru/zachem-nuzhny-uml-diagrammy

Кстати, вы как считаете, UML - это норм 👍 или стрем 👎?
👍7👎1
#include <iostream>

template <typename T>
class Animal {
public:
void speak() {
static_cast<T*>(this)->sound();
}
void sound() {
std::cout << "Ops!";
}
};

class Cat : public Animal<Cat> {
public:
void sound() {
std::cout << "Meow!";
}
};

class Dog : public Animal<Dog> {
};

int main() {
Cat cat;
cat.speak();
Dog dog;
dog.speak();
return 0;
}
🙏3
Выше дан код C++. Какой вывод будет у программы?
Anonymous Quiz
65%
Meow!Ops!
5%
Ops!Ops!
10%
Meow!
20%
Ошибка сборки
👏4
Графический интерфейс в PlantUML

Видели, что в PlantUML можно создавать схемы графических интерфейсов?

На днях попробовал собрать там схему новой вкладки для YouTube Analyzer (на картинке выше). Резюмируя, инструмент вполне юзабельный. Учитывая время на изучение, на все про все я потратил чуть больше часа.

Кому-то может показаться, что схема слишком далека от реальности. Но схема на то и схема. Здесь важен тип элементов и их взаимное расположение.

Для таких схем я обычно использовал drawio, либо просто рисовал их от руки. Теперь в арсенале будет еще и PlantUML.

В комментах оставлю код схемы с картинки.
👍5
#include <iostream>

int main() {
int a[3][3] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
int* aPtr = &a[1][1];
std::cout << aPtr[0]
<< aPtr[1]
<< aPtr[2];
return 0;
}
🤯4
Выше дан код C++. Какой вывод будет у программы?
Anonymous Quiz
14%
456
33%
567
29%
123
24%
147
🙏3
Путаница в интерфейсах (часть 7)

Открываю настройки в Яндекс Книгах (слева), чтобы что-то переключить и... начинаю всматриваться, что тут вообще включено, а что нет.

Так много переключателей и так мало контраста. Визуально почти не отличить.

А ведь можно же и по-другому. В Яндекс Музыке (справа) с этим никаких проблем 👍

—

Ранее в сериале Путаница в интерфейсах (часть 6)
👍4❤1
#include <iostream>

int main() {
const int factors[6] = {4, 4, 7, 1, 7, 19};
int val = 0;

for (int i = 0; i < 6; ++i) {
val += factors[i];
std::cout << val << " ";
}

return 0;
}


Для ленивых подсказка на картинке 👇
😁2
Выше дан код C++. Какой вывод будет у программы?
Anonymous Quiz
17%
4 4 7 1 7 19
78%
4 8 15 16 23 42
6%
4 8 11 13 22 26
0%
4 11 8 8 26 23
Хронологическая организация документации

Вдохновился статьей Isaac Lyman "Documents: The architect’s programming language" и запилил главную мысль на карточках. Ну, то есть главную мысль для меня. Для вас главная мысль может быть другая 🤓

Рекомендую пробежаться по самой статье, если работаете с документацией (а кто ж с ней не работает то).

—

P.S. Прорыв, я научился делать карточки! Как вам?
👍 - норм, еще
👎 - не, лучше текст
👍8
Тест на формальную логику 👇

1. A и (B или C) = (A и В) или (А и C)

2. A или (B и C) = (A или В) и (А или C)
😱5
Выше даны логические выражения. Какое из них истинно?
Anonymous Quiz
41%
Первое
18%
Второе
27%
Оба истинны
14%
Оба ложны
Нет, это не майнкрафт

Мне показали на днях тулзу Grappl, которая на основе кода проекта строит вот такие блочные города ☝️
Небольшой городок на картинке - это наш проект YouTube Analyzer.

Домики обозначают папки, файлы, пространства имен, классы, структуры и функции. А размер домика или района отражает объем кода этих элементов.

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

Единственное, где такая визуализация может помочь, - это протаскивание рефакторинга в план производства. Картинка с небоскребами на фоне одноэтажной застройки наглядно покажет необходимость разбиения компонентов))

Попробовать инструмент самостоятельно можно с помощью расширения к VS Code. Посмотрите на свои проекты.
🔥4