Как работать с пул-реквестами в личном репозитории GitHub
Обычно в инструкциях по пул-реквестам GitHub рассматривают примеры на базе форков. Мы же попрактикуем работу с пул-реквестом исключительно в пределах личного репозитория.
С одной стороны, работать в личных репозиториях через пул-реквесты кажется избыточным. Куда проще коммитить в репозиторий напрямую.
С другой стороны, с помощью пул-реквестов можно группировать вносимые изменения, давать им заголовки и краткие описания. Таким образом, мы получаем самодокументирующийся проект и некоторую организацию рабочего процесса. Порядок бьет класс, как говорится.
Читайте полную статью в лонгриде:
https://mediocre-developer.ru/kak-rabotat-s-pul-rekvestami-v-lichnom-repozitorii-github
Также в этот раз я подготовил видео-версию:
📱 YouTube | 📱 ВКонтакте
Обычно в инструкциях по пул-реквестам GitHub рассматривают примеры на базе форков. Мы же попрактикуем работу с пул-реквестом исключительно в пределах личного репозитория.
С одной стороны, работать в личных репозиториях через пул-реквесты кажется избыточным. Куда проще коммитить в репозиторий напрямую.
С другой стороны, с помощью пул-реквестов можно группировать вносимые изменения, давать им заголовки и краткие описания. Таким образом, мы получаем самодокументирующийся проект и некоторую организацию рабочего процесса. Порядок бьет класс, как говорится.
Читайте полную статью в лонгриде:
https://mediocre-developer.ru/kak-rabotat-s-pul-rekvestami-v-lichnom-repozitorii-github
Также в этот раз я подготовил видео-версию:
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍1
#include <iostream>
class A
{
public:
A() : m_a( 10 ) {}
A( A& from ) : m_a( from.m_a ) {}
virtual int value()
{
return m_a;
}
protected:
int m_a;
};
class B: public A
{
public:
B() : m_b( 20 ) {}
B( B& from ) : m_b( from.m_b ) {}
virtual int value()
{
return m_b;
}
protected:
int m_b;
};
template<class T>
T* CreateCopy( T* from )
{
return new T( *from );
}
int main()
{
A a;
B b;
A* aCopy = CreateCopy<A>( &a );
A* bCopy = CreateCopy<A>( &b );
std::cout << aCopy->value() << " " << bCopy->value();
delete aCopy;
delete bCopy;
return 0;
}
🤯4
Выше дан код на C++. Какой вывод будет у программы?
Anonymous Quiz
14%
10 20
27%
10 10
18%
Никакой. Ошибка компиляции
41%
Неопределенное поведение
😢5
Коллектив в творчестве Санина
Да, опять Санин. Но не могу не поделиться этой заметкой. Большой заметкой. Надеюсь, осилите и даже дополните.
Во всех сюжетах, что я перечитал у Санина, красной нитью идут рассуждения о взаимоотношениях в рабочем коллективе. Коллективы у него, конечно, отличаются от наших: полярные зимовщики, экипажи воздушных и морских судов, спасатели. Но человек есть человек, поэтому я все равно нахожу это занимательным для любых профессий.
Итак, к тезисам 👇
🔜 Подбор коллектива
Подбор команды на длительную полярную зимовку в условиях изоляции проходит особенно тщательно. Очевидно, что люди должны друг другу подходить. И как бы то ни было, у Санина руководитель экспедиции ставит приоритетом профессиональные качества человека, а не его бесконфликтность. В команду попадают люди, которые друг друга недолюбливают, и это учитывается руководителем: он будет сглаживать эти углы, получая при этом необходимый результат труда.
🔜 "Дистанция" руководителя от подчиненных
Коллектив, по сути, состоит из двух сторон: руководитель и подчиненный. Стороны могут как дружить, так и противоборствовать. Одна из причин напряженных взаимоотношений - это желание руководителя "держать дистанцию" от подчиненных.
🔽
Да, опять Санин. Но не могу не поделиться этой заметкой. Большой заметкой. Надеюсь, осилите и даже дополните.
Во всех сюжетах, что я перечитал у Санина, красной нитью идут рассуждения о взаимоотношениях в рабочем коллективе. Коллективы у него, конечно, отличаются от наших: полярные зимовщики, экипажи воздушных и морских судов, спасатели. Но человек есть человек, поэтому я все равно нахожу это занимательным для любых профессий.
Итак, к тезисам 👇
Подбор команды на длительную полярную зимовку в условиях изоляции проходит особенно тщательно. Очевидно, что люди должны друг другу подходить. И как бы то ни было, у Санина руководитель экспедиции ставит приоритетом профессиональные качества человека, а не его бесконфликтность. В команду попадают люди, которые друг друга недолюбливают, и это учитывается руководителем: он будет сглаживать эти углы, получая при этом необходимый результат труда.
Коллектив, по сути, состоит из двух сторон: руководитель и подчиненный. Стороны могут как дружить, так и противоборствовать. Одна из причин напряженных взаимоотношений - это желание руководителя "держать дистанцию" от подчиненных.
Опыта и личного мужества у него не отнимешь, всю полярку прошел с низовки, во всех переделках побывал, а зимовать с ним не любили. Почему? Трудно сказать, какие-то штрихи, пустяки. Ну, хотя бы то, что за общий стол не садился, подчеркивал дистанцию. Или с самого начала зимовки выбирал человека послабее и делал из него "мальчика для битья". Или: спиртное разрешал коллективу только по праздникам, а себе - когда появлялось желание.Кстати, похожий момент про "дистанцию" я видел в фильме "Ледокол". Там какие-то матросы посмеиваются между собой над своим капитаном из-за того, что он не гнушается рядовой работы вместе со всеми остальными. Мол их учили, что капитан должен "держать дистанцию". Позже они получают желаемое. Текущего капитана снимают и назначают вместо него человека с установкой по "дистанции". После этого жизнь на судне заиграла совсем другими красками. "Дистанция" никому не зашла.
Санин В.М. "В ловушке"
🔽
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2👍1
🔼
🔜 Не каждый должен быть руководителем
Это расхожий тезис, и у Санина он тоже эксплуатируется. Так, например, бывалый зимовщик, близкий друг начальника станции, объясняет новичку, почему он сам не руководит экспедицией:
Но "решительность, дерзость" - это одно. А другое - необходимость принимать решения, что тоже останавливает иных идти в руководители:
"Поднимать в атаку" тоже надо уметь. Найти нужные слова, донести идею, зажечь:
🔽
Это расхожий тезис, и у Санина он тоже эксплуатируется. Так, например, бывалый зимовщик, близкий друг начальника станции, объясняет новичку, почему он сам не руководит экспедицией:
- Видишь ли, Веня, я просто не гожусь в руководители. Я уже давным-давно определил свои возможности: довольно квалифицированный полярный метеоролог, ну, если очень потребуется, - максимум - заместитель начальника зимовки.
- Не понимаю, чем вы хуже Семёнова...
- Могу сказать. - Гаранин улыбнулся. - В нем есть решительность, дерзость, которых у меня нет. Он прикажет там, где я смогу только просить. Он из тех, кто поднимает в атаку, а я - кого поднимают.
Санин В.М. "В ловушке"
Но "решительность, дерзость" - это одно. А другое - необходимость принимать решения, что тоже останавливает иных идти в руководители:
Впрочем, помощники сплошь да рядом бывают и способнее, и умнее своего капитана, работают больше и спят меньше, но лишь самые дальновидные из них понимают, что участь капитана куда тяжелее: решения принимать ему. И морщин, и седины у Мастера больше, чем у его штурманов, если он даже и не старше их: ибо ничто так не сжигает человека, как необходимость решать. Бывает, пока его примешь, такое решение, месяц жизни проживешь в одну минуту.
Санин В.М. "Трудно отпускает Антарктида"
"Поднимать в атаку" тоже надо уметь. Найти нужные слова, донести идею, зажечь:
Но подлинное чувство долга овладевает человеком лишь тогда, когда исчезает сомнение.
"Собаку накорми, человека убеди, - говорил Георгий Степаныч. - Поверит - море переплывет, не поверит - в луже утонет".
Санин В.М. "В ловушке"
Как ничтожная пылинка может остановить механизм часов, так одно непродуманное слово может непоправимо расколоть коллектив. Одно слово - и вспыхнут страсти! А страсти как ветер на море: может надуть парус и спасти, а может и опрокинуть, утопить лодку - все зависит от того, кто стоит на руле...
Санин В.М. "За тех, кто в дрейфе"
🔽
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2👍1
🔼
🔜 Коллектив не без недостатков
Раз литература художественная, то конечно же все повести насквозь пронизаны драмой, проблемами, конфликтами и прочим. Иначе было бы просто скучно. Но и в нашей жизни мы вряд ли найдем коллектив без недостатков:
А если кажется, что у кого-то недостатков совсем нет, то вы их просто плохо искали 😁
Еще заметил у "Санинских" начальников особенное отношение к проступкам своих ребят. Главными виновниками они часто считают не провинившихся, а себя:
Думаю, на этом достаточно. И так слишком много букв со всякой философией 🤓
Держите 👍 все, кто дочитал)
А что вам нравится или не нравится в вашем коллективе?
P.S. Коллектив... Слово то какое, вспомнил же. Кажется, что я его со школы больше и не слышал ни разу.
#КнижнаяПолка
Раз литература художественная, то конечно же все повести насквозь пронизаны драмой, проблемами, конфликтами и прочим. Иначе было бы просто скучно. Но и в нашей жизни мы вряд ли найдем коллектив без недостатков:
Если под идеальным коллективом понимать группу людей, у которых нет недостатков, то такого коллектива нет и быть не может. Человек без недостатков безлик и скучен, как унылый, позабытый людьми заболоченный пруд; соблюдая букву неписаных правил человеческого общежития, он становится не личностью, а эталоном, которому место не в общежитии, а в музее.
Санин В.М. "Трудно отпускает Антарктида"
А если кажется, что у кого-то недостатков совсем нет, то вы их просто плохо искали 😁
... Одно скажу, бойся людей без недостатков: десять к одному, что они ловко их скрывают. Люди же, которые своих недостатков не прячут, по крайней мере честнее...
...
Самое трудное - понять человека, подумал Семенов. В деле ошибся - сам виноват, а если в человеке - значит он что-то от тебя прятал, не всю душу показывал. То есть вина с тебя все равно не снимается, но и человек, заставивший тебя ошибиться, несет свою долю ответственности.
Санин В.М. "За тех, кто в дрейфе"
Еще заметил у "Санинских" начальников особенное отношение к проступкам своих ребят. Главными виновниками они часто считают не провинившихся, а себя:
Железным принципом Пашкова было никогда не корить подчиненных за проступки, совершенные в его присутствии: видел, что водитель разошелся, не унял его - сам виноват.
Санин В.М. "Точка возврата"
Думаю, на этом достаточно. И так слишком много букв со всякой философией 🤓
Держите 👍 все, кто дочитал)
А что вам нравится или не нравится в вашем коллективе?
P.S. Коллектив... Слово то какое, вспомнил же. Кажется, что я его со школы больше и не слышал ни разу.
#КнижнаяПолка
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2
Соцопрос. Как вы реагируете на конструкции с goto в коде C++?
Anonymous Poll
28%
Никак, читаю код дальше
17%
Недопустимо! Срочно переписать!
11%
Безобразие! Кто-то не умеет в best practices...
11%
М-да, с этого проекта надо уходить
6%
О, всё как я люблю!
28%
Не знаю, хочу посмотреть результаты
0%
Другое, напишу в комменты
Кнопки vs сенсорный экран
Поговорим немного про интерфейсы: сначала автомобильные, а потом и для ПК.
Видел пару лет назад исследование, где оценивали как быстро водители могут выполнить некоторые операции на ходу:
Все действия выполнялись на скорости 110 км/ч. Для испытаний был подобран ряд современных автомобилей с преимущественно сенсорными интерфейсами и, как контраргумент, авто с классическими "крутилками"🚗 без сенсоров.
Результаты меня впечатлили. Тачка с "крутилками" оказалась абсолютным рекордсменом. Все действия на ней были выполнены водителем за 10 секунд, когда современные авто могли мучать своего пользователя чуть ли не минуту! Я, конечно, подозревал, что разница будет не в пользу сенсоров, но чтобы настолько...
А дело всего лишь в механической памяти. "Крутилки" можно нащупать не глядя, просто протянув руку. На сенсор же надо бросить взгляд и тыкнуть в неосязаемую кнопочку. Благо в автомобилях они обычно довольно крупные.
Аналогичную ситуацию я вижу и с интерфейсами на ПК. Грамотно выстроенная система горячих клавиш ⌨️ может значительно улучшить производительность пользователя. Вспомните, как шустро вы начинали работать с Midnight Commander или Far Manager, когда освоили хоткеи. Инструмент становится продолжением рук. Сочетания клавиш нажимаются мгновенно, не задумываясь.
Поэтому при разработке своих инструментов рекомендую все таки уделять внимание горячим клавишам. Причем они должны быть не просто назначены на определенные действия, а неразрывно связаны с бизнес-процессом, который обеспечивается инструментом. Тогда действительно можно добиться быстрой и непрерывной работы пользователя.
А вы помните какой-нибудь софт, где вам не хватало хоткеев? Я, кажется, часто с таким сталкиваюсь в веб-приложениях.
#Авто
Поговорим немного про интерфейсы: сначала автомобильные, а потом и для ПК.
Видел пару лет назад исследование, где оценивали как быстро водители могут выполнить некоторые операции на ходу:
- Включение подогрева сиденья, увеличение температуры салона на два градуса и запуск антиобледенителя.
- Включение радио и настройка станции на определённый канал.
- Сброс бортового компьютера.
- Снижение подсветки приборов на самый низкий уровень и выключение центрального дисплея.
Все действия выполнялись на скорости 110 км/ч. Для испытаний был подобран ряд современных автомобилей с преимущественно сенсорными интерфейсами и, как контраргумент, авто с классическими "крутилками"
Результаты меня впечатлили. Тачка с "крутилками" оказалась абсолютным рекордсменом. Все действия на ней были выполнены водителем за 10 секунд, когда современные авто могли мучать своего пользователя чуть ли не минуту! Я, конечно, подозревал, что разница будет не в пользу сенсоров, но чтобы настолько...
А дело всего лишь в механической памяти. "Крутилки" можно нащупать не глядя, просто протянув руку. На сенсор же надо бросить взгляд и тыкнуть в неосязаемую кнопочку. Благо в автомобилях они обычно довольно крупные.
Аналогичную ситуацию я вижу и с интерфейсами на ПК. Грамотно выстроенная система горячих клавиш ⌨️ может значительно улучшить производительность пользователя. Вспомните, как шустро вы начинали работать с Midnight Commander или Far Manager, когда освоили хоткеи. Инструмент становится продолжением рук. Сочетания клавиш нажимаются мгновенно, не задумываясь.
Поэтому при разработке своих инструментов рекомендую все таки уделять внимание горячим клавишам. Причем они должны быть не просто назначены на определенные действия, а неразрывно связаны с бизнес-процессом, который обеспечивается инструментом. Тогда действительно можно добиться быстрой и непрерывной работы пользователя.
А вы помните какой-нибудь софт, где вам не хватало хоткеев? Я, кажется, часто с таким сталкиваюсь в веб-приложениях.
#Авто
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2
#include <iostream>
class Base
{
public:
virtual void print( double x )
{
std::cout << "Base: " << x;
}
};
class Derived : public Base
{
public:
void print( float x ) override
{
std::cout << "Derived: " << x;
}
};
int main()
{
Derived a;
a.print(10);
}
Выше дан код на C++. Какой вывод будет у программы?
Anonymous Quiz
14%
Base: 10
46%
Derived: 10
11%
Base: 10Derived: 10
29%
Никакой. Ошибка компиляции
Практика ООП на C++: Абстракции, классы, наследование
Записал ребятам видео на проектный семинар в университете. Рассматриваем объектно-ориентированное программирование на C++ на примере создания классов и их наследовании, работаем с абстракциями и интерфейсами.
Это исключительно практическое видео. Пересказывать теорию я не хочу, да и в этом нет необходимости. Всё уже отлично рассказано в онлайне и книгах.
Об этом же когда-то говорил физиолог Павлов:
📱 YouTube | 📱 ВКонтакте
Записал ребятам видео на проектный семинар в университете. Рассматриваем объектно-ориентированное программирование на C++ на примере создания классов и их наследовании, работаем с абстракциями и интерфейсами.
Это исключительно практическое видео. Пересказывать теорию я не хочу, да и в этом нет необходимости. Всё уже отлично рассказано в онлайне и книгах.
Об этом же когда-то говорил физиолог Павлов:
Сколько я обращался к своим слушателям, столько я говорил им, что не читаю вам физиологию, я вам показываю. Если бы я читал, вы бы могли меня не слушать, вы могли бы прочесть это по книге, почему я лучше других! Но я вам показываю факты, которых вы в книге не увидите, а потому, чтобы время не пропало даром, возьмите маленький труд. Выберите 5 минут времени и заметьте для памяти после лекции, что вы видели.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍2
#include <iostream>
int main(int argc, char* argv[])
{
std::cout << int(argv[argc]) << std::endl;
return 0;
}
Выше дан код на C++. Какой вывод будет у программы?
Anonymous Quiz
25%
0
39%
Неизвестно (неопределенное поведение)
31%
Никакой. Ошибка компиляции
6%
Никакой. Ошибка времени выполнения
🤯6
Хэширование или шифрование
Иногда эти понятия путают, и причина путаницы понятна. При обоих операциях исходный текст превращается в нечитаемый набор символов. Происходит своего рода кодирование информации.
При этом хэширование - это однонаправленная функция. То есть то, что было захэшировано, обратно "расхэшировать" уже нельзя.
Шифрование же - функция двунаправленная. Зашифрованный текст мы можем расшифровать.
#Словарь
Иногда эти понятия путают, и причина путаницы понятна. При обоих операциях исходный текст превращается в нечитаемый набор символов. Происходит своего рода кодирование информации.
При этом хэширование - это однонаправленная функция. То есть то, что было захэшировано, обратно "расхэшировать" уже нельзя.
Шифрование же - функция двунаправленная. Зашифрованный текст мы можем расшифровать.
#Словарь
🔥2😁1
#include <iostream>
int foo()
{
return 1;
}
double foo()
{
return 2.0;
}
int main()
{
std::cout << foo() << " " << foo() << std::endl;
return 0;
}
Выше дан код на C++. Какой вывод будет у программы?
Anonymous Quiz
9%
1 2.0
6%
2.0 1
21%
По-разному. Неопределенное поведение
64%
Никакой. Ошибка сборки
Делай проще, говорили они.
Согласен, конечно. Но делать проще как-то ... сложновато 😐
📍 Career Advice: Simplifiers Go Far, Complexifiers Get Stuck
Согласен, конечно. Но делать проще как-то ... сложновато 😐
📍 Career Advice: Simplifiers Go Far, Complexifiers Get Stuck
😁2
Соискатели
В канун Нового года предлагаю поговорить о действительно важных вещах🤨
Помню, в аспирантуре помимо аспирантов были соискатели. Соискатель - это тот, кто тоже хочет защитить кандидатскую диссертацию, но не учится при этом в аспирантуре.
И меня всегда забавляло это слово, соискатели. Ну есть же, например, слова "сотрудники" и "сослуживцы". Сотрудники совместно трудятся над чем-то, а сослуживцы совместно служат где-то.
Что же тогда совместно ищут соискатели, и, главное, совместно с кем? Диссертации то, по сути, авторские.
Наверное, все ищут научную истину. Только аспиранты делают это в стенах университета, а соискатели - дома за компом. Но тогда и аспиранты тоже должны называться соискателями 🤨!
Но не называются.
Короче, вопрос открыт 🤷♂️
---
А пока вы раздумываете над "соискателями", принимайте поздравление с наступающим Новым годом!
🧦 🎁 🌲
В канун Нового года предлагаю поговорить о действительно важных вещах
Помню, в аспирантуре помимо аспирантов были соискатели. Соискатель - это тот, кто тоже хочет защитить кандидатскую диссертацию, но не учится при этом в аспирантуре.
И меня всегда забавляло это слово, соискатели. Ну есть же, например, слова "сотрудники" и "сослуживцы". Сотрудники совместно трудятся над чем-то, а сослуживцы совместно служат где-то.
Что же тогда совместно ищут соискатели, и, главное, совместно с кем? Диссертации то, по сути, авторские.
Наверное, все ищут научную истину. Только аспиранты делают это в стенах университета, а соискатели - дома за компом. Но тогда и аспиранты тоже должны называться соискателями 🤨!
Но не называются.
Короче, вопрос открыт 🤷♂️
---
А пока вы раздумываете над "соискателями", принимайте поздравление с наступающим Новым годом!
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉9🔥3
#include <iostream>
struct A
{
int a1;
int a2;
void afoo() {}
};
struct B
{
int b1;
int b2;
};
int main()
{
std::cout << (sizeof(A) == sizeof(B)) << std::endl;
return 0;
}
CMake. Подключение внешних библиотек
По просьбетрудящихся учащихся записал видео-инструкцию по подключению внешних библиотек в проектах на CMake.
Рассмотрены 2 способа подключения:
1. С использованием функции find_package(). Способ самый простой и лаконичный.
2. Прямое подключение заголовочных файлов и библиотек с использованием функций target_include_directories(), target_link_directories().
Второй способ подойдет, если библиотека поставляется без конфигурационных файлов вида
В качестве примера подключается библиотека Qt.
В следующий раз рассмотрим организацию проекта на CMake с созданием и подключением собственных библиотек.
📱 YouTube | 📱 ВКонтакте
По просьбе
Рассмотрены 2 способа подключения:
1. С использованием функции find_package(). Способ самый простой и лаконичный.
2. Прямое подключение заголовочных файлов и библиотек с использованием функций target_include_directories(), target_link_directories().
Второй способ подойдет, если библиотека поставляется без конфигурационных файлов вида
*Config.cmake. В остальных случаях лучше использовать первый способ.В качестве примера подключается библиотека Qt.
В следующий раз рассмотрим организацию проекта на CMake с созданием и подключением собственных библиотек.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5