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

Как читать технические книги

Как читать технические книги

yurembo

 

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

 

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

 

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

пятница, 31 октября 2025 г.

Про травму №2

Про травму

yurembo 

Основная часть

 

11-го января 2000-го года был первым учебным днем в школе после зимних каникул. В этот день я поехал на «Огонёк» утром, так как во втором полугодие стал учиться во вторую смену.

 

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

 

Первый заезд на санной трассе я проехал идеально. На втором – запоздал со входом в 12-й вираж, меня подкинуло под козырек, его я зацепил, и меня со всей дури бросило к нижнему бортику, который и сыграл со мной злую шутку. Безусловно на мне был шлем, и он остался невредимым, но мой череп был разбит, височная кость вошла в мозг. По льду мое тело доехало до конца 13-го виража, раскрасив его кровью. Наверное я сразу потерял сознание.

 

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

 

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

 

Прошло 20 дней, я вышел из комы — начал самостоятельно дышать, но по-прежнему был без сознания. Вызвали вертолет, на котором мое тело транспортировали в Пермь в неврологическую больницу. Там через некоторое время мне сделали вторую операцию, целью которой было удаление гигромы (скопление жидкости), образовавшейся в результате первоначального удара.

 

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

 

Еще через какое-то количество дней меня на инвалидном кресле привезли в кабинет массажа и ЛФК, где было установлено зеркало во всю стену. Увидев свое отражение, я расплакался. От моей физической формы не осталось ни следа. Еще я был лысым, а отсутствие кости на правом виске придавало моей голове несимметричный вид.

 

Так прошел еще месяц. Положительной динамики не было, большее время я спал или был без сознания, потому что об этом периоде у меня очень обрывистые воспоминания. Наконец было решено выписать меня домой.

 

В конце апреля я был доставлен в Чусовой. Дома, как говорится, стены лечат. Первое время я лежал в постели. Немного погодя, стал пробовать ползать на коленях с опорой на руки. Проблема была в том, что у меня сильно болели колени от стояния на них. К слову, при непосредственном упоре на колени, они болят до сих пор. Вторая проблема была в том, что у меня не разгибалась правая рука. В результате повреждения мозгового ствола во время травмы было перекрестное повреждение функционирования конечностей: правая рука, левая нога. Пришлось приложить массу усилий и средств: физические упражнения, массаж, озокерит и прочее, чтобы наладить правильную работу конечностей. Этот процесс занял не один год. Таким образом я все еще хромаю, и правая рука словно не моя.

 

Постепенно, благодаря родительскому уходу и бабушкиной помощи, я вновь научился говорить и передвигаться на двух ногах.

 

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

 

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

 

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

Про травму №1

Про травму

yurembo 

Преамбула

 

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

 

В конце декабря 99-го года на «Огоньке» прошли крупные соревнования: «Первенство России по санному спорту», на которых yurembo занял шестое место – лучшее достижение в своей спортивной карьере на всероссийских соревнованиях.

 

Несколько слов о тогдашнем yurembo. Это прозвище у него было уже в то время. Оно происходит от имени героя боевиков 80-х Джона Рэмбо, которого сыграл Сильвестр Сталлоне. Кстати, кличка у пса, который был у нас в то время, была Рокки. Но здесь имя происходит не от первого фильма Сталлоне, а от сыроеда из мультсериала «Чип и Дейл».

 

До того, как в 1997-м году заняться санным спортом, yurembo был слабаком с плохим зрением на правый глаз. Хулиганы в школе часто его обижали. Это не слишком ему досаждало, но он и не думал, что занятие спортом ему в этом поможет. Школьнику 90-х из приличной семьи как само собой разумеющееся надо было чем-то заниматься, кроме школы: мастерить самоделки в клубе юных техников, посещать музыкальную школу, какую-либо спортивную секцию. Да, приставка у yurembo в то время уже была, но окулист запрещал ему смотреть телевизор / играть на приставке более 40 минут в день. Родители за этим строго следили. Считалось, что просмотр телевизора негативно влияет на остроту зрения. С этим нельзя не согласиться, но в таком случае течение жизни ухудшает зрение, так как с возрастом зрение постепенно падает.

 

Когда yurembo выбирал, чем бы ему заняться, выбор был широк: тут и каратэ со всякими другими единоборствами, лыжные гонки (речь о беговых лыжах), разные станции юных техников/натуралистов, на «Огоньке» три вида спорта: горнолыжный спорт, санный спорт, фристайл (к середине 90-х осталась только дисциплина могула). Однако решилось все тем, что у yurembo папа — тренер по санному спорту. Он не агитировал yurembo заняться санным спортом, но yurembo представлял, что так будет лучше.

 

К удивлению yurembo с первых тренировок у него стало всё получаться на трассе, это подстегнуло его интерес к спорту и заставило усерднее им заниматься. Менее, чем за три года, yurembo сильно вырос в физическом плане, хулиганы в школе к нему больше не лезли. В связи с успехами в спорте он часто по уважительным причинам пропускал уроки.

 

Но на дворе 2000-й год. В первый учебный день после зимних каникул yurembo как обычно поехал на «Огонек», на этот раз перед школой, так как учиться предстояло во вторую смену.

понедельник, 6 октября 2025 г.

PDF_bookmark

Python-скрипт PDF_bookmark

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

Скрипт можно скачать с моего github'a: yurembo/PDF_bookmark 

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

Между тем многие бесплатные PDF-редакторы, среди которых Acrobat Reader, не умеют создавать закладки. Для того, чтобы научить их делать закладки, придется раскошелиться для их обновления до состояния полноценных PDF-редакторов, которые способны не только создавать закладки, но и различным образом редактировать/создавать содержимое PDF-документов. Однако мне нужны только закладки.

Какое-то время назад закладки умел создавать Foxit Reader, но после очередного обновления он перестал это делать.

Другие PDF-читалки, такие как: Books для macOS или кросс-платформенный Sumatra PDF хотя позволяют создавать закладки, но при этом сохраняют их в своих базах. Если потом взять этот PDF-файл, в котором закладки были созданы с помощью упомянутых выше программ и открыть его на другом компьютере/устройстве, закладки отображены не будут.

Напротив, мой скрипт записывает закладки в этот же PDF-файл, в виду чего одни и те же закладки будут открыты на любом устройстве.

Как пользоваться скриптом?

Скрипт имеет интерактивную природу.Запускаем скрипт из командной строки (должен быть установлен Python): python <полный путь к скрипту>/PDF_bookmark.py
В консоли появится приглашение: «Полное имя файла для создания закладки:». Вводим полный путь к PDF-файлу, в котором надо создать закладку.
Следующее приглашение: «Полное имя итогового файла:». Вводим полный путь к итоговому PDF-файлу. Можно ввести путь к прошлому файлу для сохранения закладки в нем.
Следующее приглашение: «Название закладки:». Здесь надо ввести название закладки, которое будет отображаться в программе для чтения PDF-файлов (на вкладке Bookmarks).
При последнем приглашении: «Номер страницы для закладки:» надо ввести номер страницы, куда поставить закладку.

Готово!

среда, 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 считается символом конца строки, и по умолчанию, достигнув такого символа, терминал прекращает вывод.

 

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