среда, 24 сентября 2025 г.

Велозагон до скалы Гребешок

Велозагон до скалы Гребешок

yurembo

В чусовском округе на реке Чусовой есть природная достопримечательность — скалы Гребешки — скопление красивых скал, вытянувшихся на несколько сотен метров по левому берегу. Их высота достигает 30 метров. Они представляют собой живописные башенки, столбы и выступающие из скального массива рёбра. Среди них есть наиболее выделяющая скала, которую и прозвали Гребешком в единственном числе.


Уже некоторое время я собирался там побывать. А примерно месяц назад мой лучший друг — Никита Постников сказал, что до туда можно легко доехать на велике: «Стартуешь от деревни Архиповки и километров пять – семь вдоль реки».


20 сентября – хорошая не дождливая погода, прекрасный день для продолжительной велопрогулки. Надо полагать, стартанул я с Красного поселка, быстро добрался до Архиповки. Некоторое время петлял там в поисках выезда в сторону верха реки Чусовой.


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

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


Несколько сотен метров спустя, обрыв прекратился, тропа стала равномерной — без резких перепадов, почти поравнявшись с рекой. Здесь Чусовая небольшим островом делится надвое. 

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

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


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

Мой путь лежал еще дальше. Сразу после поселка находится месторождение природного газа, на котором возведена станция для его добычи. Трубы для его передачи проброшены по дну реки Чусовой и словно по очищенной от деревьев аллее уходит вверх от противоположного берега реки.


Отсюда было уже рукой подать до скалы Гребешок. 

Несколько сотен метров, и я в пункте назначения. Возле Гребешка я познакомился с туристами из Волгограда: юноша с девушкой пришли сюда пешком. Они поторапливались вернуться на вокзал – на электричку до Перми.



Чуть поодаль на возвышенности находится пещера Гребешок, также известная как Очи Черные, благодаря входу, разделенному вертикальной перегородкой на две части – два ока.

Я проехал вперед еще некоторое расстояние: сначала был крутой спуск, затем относительная ровная дорога. Последняя вскоре закончилась, и началась тропа среди трав и растений. Я выехал на открытую поляну, где тропа раздвоилась: один путь шел дальше вдоль реки, второй – уходил в лес в противоположную от реки сторону.


Я взглянул на часы: нахожусь в пути уже три часа. За это время я преодолел жалкие 14 км.  Примерно столько же времени мне понадобится на обратный путь. Мне не хотелось возвращаться по тропинке, что длится первую половину пути. Рядом с поселком Архиповские бараки к месту добычи газа проложена вполне адекватная дорога, отсыпанная щебнем, но если следовать по ней, то я попаду в поселок Всесвятская, что совершенно не входило в мои планы, так как, чтобы добраться до Красного поселка, придется делать лишний крюк на 30 км. И это тоже не входило в мои планы, и я направился назад уже проторенной дорогой. Вдобавок у меня закончилась припасенная питьевая вода.


За два часа я добрался до п. Архиповка и еще час мне понадобился, чтобы доехать до Красного поселка, потому что сил уже не было. В итоге весь путь растянулся на 27 км.

суббота, 6 сентября 2025 г.

О романе Герберта Уэллса «Когда спящий проснётся»

О романе Герберта Уэллса «Когда спящий проснётся»

yurembo

 

Роман повествует о человеке, который уснул в 19-м веке, а проснулся — в 22-м. Немыслимая история. Но это фантастика.

 

Автор написал свое произведение в 1899-м году. Поэтому крайне любопытно, как он видит будущее человечества. Действия разворачиваются в родном для автора Лондоне, поэтому описывается  исключительно Лондон. Главное опасение автора – это вымирание села. Всё население земного шара проживает в нескольких гигантских городах. Люди, по сути, стали их узниками. Все здания находятся под одной общей крышей, на которой находится верхний уровень города. Вместе с тем есть и нижний уровень, где выполняют свою работу чернорабочие. В романе они – люди в голубых платьях. Здания опутаны проводами и туннельными троссами, с помощью которых осуществляется перемещение по городу.

 

После своего двухсотлетнего сна наш герой просыпается и узнает, что он стал самым богатым человеком в мире, и полмира принадлежит ему. Первые несколько дней он находится в вынужденном своим внезапным пробуждением заточении, потом происходит мятеж, при котором «спящий» сбегает вместе с повстанцами. «Спящий» известен на весь мир, ему поклоняются словно Богу.

 

Оказавшись без надзора на улице, человек из 19-го века через беседы с бездомными узнает, что мир и социум не стали лучше, скорее наоборот. Расслоение общества только усилилось, богачи стали богаче, бедняки — беднее, английский язык хотя и стал языком для общения номер один в мире, стал упрощенным и в разных точках мира переизобретенным заново. Обучение в школах было упрощено, домашнее задание теперь не задают, учить что-либо наизусть не заставляют. Обучение проходит под гипнозом. Разные категории общества учатся по-разному: бедняки проходят укороченную школьную программу и отправляются на завод или другие перерабатывающие предприятия, богачи, независимо от знаний, попадают в высшие учебные заведения, где вместо образования ведут праздный образ жизни. В итоге во взрослую жизнь выходят совсем неподготовленными к труду обормотами.

 

«Спящий» переходит на сторону ополчения, где его так же высоко ценят и уважают. Его впечатляют аэропланы. Он загорается идеей научиться ни них летать. В описанном будущем полеты аэропланов сильно зависят от направления и силы ветра.

 

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

четверг, 28 августа 2025 г.

Собес с Ростелекомом

Собес с Ростелекомом

yurembo

 

На прошлой неделе у меня было собеседование с компанией Ростелеком на позицию C++-программиста в отдел передачи видеоданных. Со мной беседовал только один человечек посредством Яндекс.Телемоста, и после моего рассказа о себе любимом было только две вполне простые задачки.

 

В первой задачке надо было улучшить код в многопоточном приложении отправитель/получатель. Код для нее по памяти мне писать лень, поэтому я расскажу только о своих предложениях по улучшению, которые вспомню. Во-первых, я бы заменил класс потоков с std::thread на std::jthread. Главное преимущество последнего — это остановка потока в любое время, не дожидаясь завершения выполнения алгоритма, к нему привязанного.

 

Поток-получатель находится в бесконечном цикле, беспрерывно проверяя содержимое дека. Дек оставим в покое, хотя в данном случае можно было бы использовать стек. Тем не менее мне не нравится бесконечный цикл. Он имеет смысл только в играх, при бесконечной перерисовке экрана. Всё. А в случае рассматриваемого приложения можно воспользоваться сокетами, чтобы не гонять бесконечный цикл.

 

Вторая задачка: объяснить, что делает, и улучшить код класса, содержащий два указателя на строки. Ненавижу строки C. Первым делом их надо заменить строками класса std::string. От этого упростится деструктор, который написан тоже не верно: delete[] c. Квадратные скобки не нужны, так как в конструкторе создается простой указатель. Если оставить как есть и создать объект этого класса, то при его разрушении возникнет неопределенное поведение. В остальном класс содержит конструкторы копирования и перемещения, которые используются для копирования и перемещения объектов, включающих две строки. Ну, как бы всё. Комментировать здесь больше нечего.

 

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

Собес с Ядром

Собес с Ядром

yurembo

 

На этой неделе у меня был собес с Ядром на позицию C/C++-программиста в отдел разработки операционных систем (отдел деградации Linux). В последние годы эта компания, образованная под влиянием первых санкций в 2014-м году, стала лидером рынка IT в РФ, благодаря перекрытию общения с внешним миром и запрету на использование заграничного ПО в государственном секторе. Лидерами в отрасли на российском рынке являются четыре компании: Ядро, VK, Ростелеком, Яндекс. Остальные — более мелкие или не совсем российские, например, Касперский. Но речь не об этом.

 

О собесе. Он проходил посредством Контур Толк — аналог Google Meet. Со мной на связь вышли три человека. Расписание собеса было вполне обычным, ничего нового. Сначала один из группы собеседующих рассказал про компанию, и чем она занимается. Оказалось, что они готовят операционные системы для десктопов (на основе Linux) и мобильников (на основе Android), которые будут использоваться в гос. учреждениях. Для продажи/использования среди прочего населения продукты не предназначены.

 

После этого я рассказал о своем опыте, чем по жизни занимаюсь. Далее, пошли вопросы про C/C++ вперемешку. Меня удивило отсутствие вопросов про построение операционных систем (ведь меня нанимают их разработчиком), про ядерный/пользовательский режимы, планирование процессора, работу с памятью и тому подобное. Зато меня огорчили вопросы про арифметику указателей в C. Нафига писать сложно, если можно писать код проще и понятнее, не выдумывая, как усложнить жизнь человеку, читающему твой код?

 

Под конец собеса были две практические задачки. Первую из них я решил правильно, вторую – нет. После собеса я проверил решение, отправил правильный вариант, да только после драки кулаками не машут. А, вообще, во время собеса задачки надо было решать в уме, проверять компилятором было запрещено. И это зря. Я ведь, устраиваюсь программистом, чтобы писать код, транслируемый компилятором, а не чтобы компилировать его в уме.

 

Я запомнил эти задачки и предлагаю их разобрать:

 

1) Дан следующий код: 


        int main()

{

    std::cout << "name is";

}


Надо дополнить его так, чтобы на экран выводилась строка: «My name is Yuriy», не внося изменений в функцию main.

 

Мне пришлось подумать над решением этой задачки. Можно создать два класса: в конструкторе первого вывести «My », в деструкторе второго вывести « Yuriy». В итоге получилась следующая программа:

 

#include <iostream>

 

class CBegin {

    public:

        CBegin(){

            std::cout << "My ";

        }

};

 

class CEnd {

    public:

        ~CEnd() {

            std::cout << " Yuriy";

        }

};

 

CBegin b;

CEnd e;

 

int main()

{

    std::cout << "name is";

}

 

Её вывод:




2) Вторая задачка выглядела так. Дан код:

 

#include <stdio.h>

 

int main()

{

char a[] = "11111111";

*((int*)a + 1) = 0;

printf("%s", a);

}

 

Вопрос: что выведет оператор printf?

Ответ: оператор printf выведет «1111».



Пояснения. Массив char a[] состоит из восьми элементов, следовательно занимает восемь байтов. В результате преобразования: *((int*)a + 1) получается указатель на второй элемент массива элементов типа int. И ему присваивается 0. Как мы знаем, значение типа int в памяти занимает четыре байта. Значит обнуляются четыре байта. В итоге содержимое массива a будет выглядеть так: «11110000». Но в терминал будут выведены только единицы, поскольку 0 типа char считается символом конца строки, и по умолчанию, достигнув такого символа, терминал прекращает вывод.

 

Будет новый собес, будут новые задачки! Всем пока!

четверг, 14 августа 2025 г.

Собес с G5 Entertainment

Собес с G5 Entertainment

yurembo

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


Итак, в июле я прошел собес на позицию C++-программиста в компании G5 Entertainment. Интервьюрер пообещал отчет. Жду неделю, две. Эйчарка не отвечает в Телеграмме. Нашел ее емайл. Отправил письмо. Она: «Наш специалист был на больничном. В ближайшее время составит отчет, отправит.»


Через несколько дней приходит письмо со стандартными фразочками. Я говорю: «И это все, на что он способен?» Проходит еще несколько дней. И в отчете: «Вы неправильно рассказали про ключевое слово override». Я тут же на эмоциях отвечаю: "Ваш специалист никчемный болтун и пиздабол".


На собесе про override я сказал, что это факультативное слово, для визуальной пометки переопределения унаследованной виртуальной функции базового класса. Его можно не писать, его добавили только в C++11, раньше без него обходились. И было норм.


Меня больше всего пугает, что «специалисты» этой компании не вдупляют, что это слово необязательное.


По пунктам расскажу об их претензиях, и какие еще ошибки они мне нарисовали:

1) возникли сложности с описанием действия модификаторов доступа при наследовании (по умолчанию);

a) Я ему подробно описал действия модификаторов доступа. Только забыл их использование по умолчанию при наследовании. Потому что всегда задаю их явно. Чтобы читающему мой код было удобнее сопровождать.


2) определение статического метода не удалось сформулировать сразу;

a) На этот вопрос я ответил не сразу. Понадобилось несколько секунд, чтобы вспомнить. Но ответил-то я правильно. Потому что цитирую Мэйерса.


3) вопрос по работе с константными и неконстантными методами вызвал затруднения;

a) Чушь! Я сразу ответил на этот вопрос! Со всеми пояснениями. Отвечая на такие вопросы, цитирую Скотта Мэйерса. Современное поколение программистов его не читает? Это же не устаревающая истина! Скотт Мэйерс, кстати, у меня в переписке. Душевный человек.


4) определение виртуального метода, а также принцип действия ключевого слова override и пример его применения вызвали трудности.

a) Чушь! Не было никаких трудностей! Я сразу ответил на этот вопрос. Также упомянул стандарт языка, в котором это слово было введено. Более подробно этот необоснованный наезд рассмотрен выше.


Кроме того были вопросы:

1) Как выкинуть исключение?

a) На что я ответил: с помощью throw.


2) Как убрать константный признак?

a) Я ответил: есть ключевое слово mutable.

        b) Я считаю, что если надо нарушать константнось, то всё это неправильно спроектировано. Гнать в шею надо тех, кто это задумал. Очень близорукое видение проекта.

c) Еще для удаления константности значения можно использовать шаблонную функцию std::remove_const, появившуюся в C++11. Но об этом на собесе я не сказал, так как интервьюрера устроило слово mutable.


3) Какие инструменты вы используете для оптимизации работы с кодом?

a) Об этом можно целую статью написать, какие я использую инструменты для оптимизации работы с кодом. На собесе я остановился на двух плагинах для Visual Studio: Visual Assist и Deleaker.


Кого они пытаются нанять? Таких же дураков, как сами?

От этого становится понятным застой, а местами регресс в области современного программного обеспечения.

Гнать в шею надо этих недоумков!