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

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

Контент: https://taplink.cc/atrotsenko
Download Telegram
Выше дан код на C++. Какой вывод будет у программы?
Anonymous Quiz
47%
0
16%
0b000001
16%
0b101111
21%
1
🥴2
Моргнул свет и потух комп.

Пробую включать. Он не реагирует. Перещёлкнул блок питания - включился.

Запускаю веб-сервер Apache - не алё. Контрольная панель что-то там ругается, что апача больше нет.
Слабо верится.
Иду смотреть, может конфиги какие слетели, а там... А там реально нет апача. Ну, в смысле нет бинаря httpd. Удалился.

Уже интереснее. Восстановил бинарь. Запускаю его и узнаю, что куча библиотек-зависимостей тоже не в чате...

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

Вот такая фишечка
👍👍👍

Похоже, пятница сегодня у апача. Будьте бдительны 😁
Please open Telegram to view this post
VIEW IN TELEGRAM
😢3
А вы помните свой тот самый мьютекс? 😅

Я вот вспомнить не могу. Чаще в deadlock-и залетал 🙃
🤓2
Библиотека или фреймворк

🔜 Библиотека - это набор функциональности, решающий определенную задачу.

🔜 Фреймворк - это набор функциональности, определяющий структуру приложения.

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

Например, minizip - это библиотека, работающая с архивами, то есть решающая конкретную задачу. А Qt - это уже фреймворк, определяющий все основные элементы приложения: интерфейс, обработка событий, ввод/вывод и др.

#Словарь
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Какой паттерн обеспечивает несколько вариантов алгоритмов, которые легко заменяют друг друга в процессе работы программы?
Anonymous Quiz
6%
Наблюдатель
71%
Стратегия
0%
Одиночка
23%
MVC
🤯1
Продолжая тему проектирования.

Эта картинка - супер-иллюстрация бардака с абстракциями на проекте 😁
Надеюсь, все помнят эту сцену и Гарри Поттера)

Пофантазируем ⤵️

Был проект, где машины ездили, поезда ходили, самолеты летали. Как-то это работало.

Потом в рамках рефакторинга выделили из самолета абстракцию Транспорт и унаследовали от нее Машину, Самолет и Поезд. При этом забыли перенести методы полета в Самолет, оставив их в Транспорте.

Получилось, что теперь Машина умеет летать!
Поезд, кстати, тоже умеет летать, но об этом пока никто не знает. Да никому это и не надо. А вот Уизли докопались и берут от абстракций всё: если есть методы полета, будем их вызывать!

Рон Уизли идет еще дальше и при решении своих задач пробует поставить Машину на Железную дорогу. И ему это удается, так как Железная дорога, оказывается, работает с абстракцией Транспорт 🫢
В итоге в процессе выполнения на проде возникает состояние гонки, и Поезд вступает в конфликт с Машиной.

😨 Все в панике!

Но не понятно из-за чего паника больше: из-за ошибки абстракций или из-за того, что на Поезд подтянулись скины вообще из другого проекта...
😁4😱1
Как начать работать с репозиторием Git на GitHub

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

📱 YouTube | 📱 ВКонтакте

✍️ Другие способы загрузки кода на GitHub описывал в статье
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Скинули вакансию на технического директора с интересным требованием:

Нам подойдут те управленцы, которые читали книжки по инженерии, а поэтому понимают, что:
- Тестировщики не нужны – разработчики должны сдавать работающий код


Уж простите, но не удержался 😁⤵️
😁3🤡2
#include <iostream>

namespace First
{
int var = 1;
}
namespace Second
{
int var = 2;
}

int main()
{
{
using namespace First;
var = 3;
}
std::cout << First::var << Second::var << std::endl;
return 0;
}
Выше дан код на C++. Какой вывод будет у программы?
Anonymous Quiz
30%
12
48%
32
7%
13
15%
Никакой. Ошибка сборки
This media is not supported in your browser
VIEW IN TELEGRAM
😠 Хэй, все знают, что даже у старых жигулей есть душа!
😁4
Так себе программист
😠 Хэй, все знают, что даже у старых жигулей есть душа!
Кстати, про ИИ, нейросети и все такое.

В "Аэлите" Толстого есть эпизод, где прибывшие на Марс люди изучают язык местных с помощью специальной приспособы. Там что-то крутится-вертится, и азбука, фразы и понятия постепенно проникают в сознание.
Лось чувствовал, – мозг его яснеет, будто поднимается туманная пелена, и новые слова и понятия отпечатлеваются в памяти.


После "загрузки" знания в голову, им оставалось лишь вздремнуть для закрепления)

Но я что подумал...

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

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

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

Фантастика

#КнижнаяПолка
👍2😁2🥴1
Путаница в интерфейсах (часть 5)

Рубрика "Нам пишут" 🤓

Прислали диалог подтверждения отмены записи в одной из МИС (медицинская информационная система).

Если подумать, то диалог вполне логичный. Решение понятно. Но это если подумать.

В моменте же красный цвет для утвердительного действия и зелёный цвет для отрицательного вносят путаницу. Так посмотришь, и уже не уверен, хочешь ли отменять😁

🔜 Как вариант, можно было бы оставить кнопки вообще без цветов.

🔜 Другой вариант - это оставить красный цвет на кнопке "Да, отменить", а зеленый цвет и "галочку" с "крестиком" убрать. Тогда конфликтующих элементов интерфейса станет меньше.

—

Читать Путаница в интерфейсах (часть 4)
Please open Telegram to view this post
VIEW IN TELEGRAM
😁2👍1
#include <iostream>

template<class T>
void func(const std::initializer_list<T>& input)
{
for (const auto& val : input )
std::cout << val << " ";
}

int main()
{
func({1, 2, 3});
return 0;
}


Ну да, шаблоны... Но должны же мы были к ним хоть раз зайти!
Выше дан код на C++. Какой вывод будет у программы?
Anonymous Quiz
14%
0 0 0
55%
1 2 3
14%
val val val
18%
Никакой. Ошибка компиляции.
От "научного тыка" к осознанной отладке в C++

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

1. Метод научного тыка - менял какие-то строки и надеялся.

2. Гуглил - иногда везло, но чаще нет.

3. Нагружал код логами - cout << "Я тут! var = " << var << endl;.

4. Отправлялся к ментору - последняя надежда.

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

А про отладчик я знал. Но он казался сложным. Думалось, что проще написать 100 логов, чем нажимать на кнопку с жуком 🤨

Но это не могло продолжаться вечно. После жёсткого нагоняя на 4-м пункте я необратимо узнал, что отладчик это:

- видеть состояние программы на каждой строке кода;

- пошагово двигаться по строкам, заходя во все функции;

- анализировать сложные ситуации, которые невозможно залогировать.

С отладчиком часы мучений превратились в минуты отладки. Но, правда, и баги стали позаковыристей 🤭

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

Видео: 📱 YouTube | 📱 ВКонтакте
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👏1🕊1
😰 Something wicked this way comes
Please open Telegram to view this post
VIEW IN TELEGRAM
😁2🔥1
#include <iostream>

class MyClass
{
int a_ = 0;

public:
MyClass(int value = 0): a_(value)
{
std::cout << a_;
}
};

int main()
{
MyClass s1();
MyClass s2(10);
return 0;
}
Выше дан код на C++. Какой вывод будет у программы?
Anonymous Quiz
20%
10
64%
010
8%
0010
8%
Никакой. Ошибка компиляции
🤯2
Дефицит внимания: кто виноват

Знаете, что это за спонтанное желание проверять телефон каждые 5 минут?

Это не лень - так работает перегруженный мозг. Об этом ещё в 2010 году в своей книге писал Торкель Клингберг.

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

Дело в том, что за наш мыслительный процесс отвечает рабочая память. А она вроде оперативки на компьютере: быстрая, но маленькая. Рабочая память может удерживать одновременно до 7 элементов информации. Её очень легко перегрузить, и эффективность мышления снизится. Поэтому сущая мелочь, одно уведомление в мессенджере, может выбить нас из мыслительного процесса.

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

Поэтому, учитывая доводы Клингберга, со временем я выработал для себя следующие правила концентрации:

1. Уменьшаю "шум". Уведомления развлекательного контента у меня отключены по умолчанию - этого не должно быть в поле зрения. Если надо серьезно сосредоточиться, я отключаю вообще все уведомления на 1 час. Через час вернусь и все просмотрю. Так может продолжаться весь день, а может эпизодически. Зависит от решаемых задач.

2. Фиксирую контексты. Для каждого контекста у меня есть свои заметки. Выключаясь из контекста, я фиксирую в заметке, на чем остановился. Потом легче включиться обратно. Под сменой контекста я подразумеваю переключение с задачи на задачу или, например, с рабочего проекта на домашний проект. Здесь мне очень помогает Obsidian (как-нибудь расскажу подробнее).

3. Делаю перерывы. Например, фитнес-браслет предупреждает меня, если не было движения в течение часа. На него и ориентируюсь. Встал, прошёлся, сел обратно.

4. Тренирую память через чтение сложной литературы. Технические тексты, изобилие терминов, не родной язык здорово нагружают "процессор". Но есть минус: такие вещи не очень хочется читать 😁

—

А вы страдаете от дефицита внимания? Делитесь в комментах или в реакциях 😊👇

😁 - да, и мне норм
🔥 - да, борюсь с этим
👍 - у меня нет такой проблемы

📍Клингберг Т - Перегруженный мозг. Информационный поток и пределы рабочей памяти (2010) #КнижнаяПолка
🔥11😁6👍2