Обновить
160
43.2
Родион Горковенко@RodionGork

IT-энтузиаст

Отправить сообщение

Turbo-Pascal 5.5 (и другие) в браузере — с загрузкой программ по ссылке

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели1.5K

"Эх вот в школе я такую программулину написал, на Паскале" - бывают такие мысли, особенно у тех кто учился, скажем, в 90е. И даже находятся порой эти старые программы на старом диске. Но если запустить их ещё в DosBox у себя на машине можно - то как показать-похвастаться другим, в интернете?

Возьмём эмулятор js-dos (им старые игры в браузере запускают) - и поколдуем над ним, чтобы можно было своими паскальными-бейсиковыми программулинами делиться всем на радость.

Пользоваться этой поделкой вы сможете не вникая в подробности! Там есть страничка для подготовки "ссылок с программами" - хоть сразу делитесь в комментариях :) А для тех кому захочется по аналогии и другие компиляторы-интерпретаторы подключить - будет немножко пояснений что и как там сделано - чтобы форкнув код на гитхабе вы могли быстро внести нужные изменения.

Вспомним молодость :)

Перебор Соседних Клеток — забавные формулы

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели2.3K

Не только в играх вроде "Го" или "Жизнь" - но и в создании фильтров для изображений - часто нужно для клетки или точки (x, y) перечислить её "соседей". Либо только четырех (по горизонтали и вертикали), либо все восемь (с диагоналями).

Можно не задумываясь написать массивчик с 4-мя или 8-ю парами смещений, вроде
[(-1, 0), (0, 1), (1, 0), (0, -1)] - а можно ли вместо него жахнуть какую-нибудь формулу? Давайте попробуем для утренней разминки ума в понедельник :)

В этой статье будет несколько 2-3 строчных примеров кода - уж извините пожалуйста :) зато она довольно короткая.

Вспомним арифметику!

Голый Линукс — запуск ядра-одиночки

Время на прочтение11 мин
Охват и читатели21K

Итак, Linux - не операционная система, а только ядро для неё. Всё остальное приходит от проекта GNU (и других). И вот интересно - на что годится ядро само по себе?

Эта статья - очень "начального" уровня. Устроим маленький эксперимент - создадим чистую виртуальную машину и попробуем запустить ядро Linux "без всего". Или почти "без", т.к. нам понадобится загрузчик ОС - и какая-нибудь "пользовательская программа" (её мы сотворим сами). Конечно, продвинутые пользователи Linux такой "эксперимент" могут провести просто отредактировав параметры запуска при включении - но наш рассказ всё же для тех кто почти (или совсем) не в теме :)

Бонусом чуть-чуть коснёмся системных вызовов и пару слов скажем о других ядрах.

Загружаемся... Погружаемся...

Программирование контроллера звуком с телефона — заметки на полпути

Время на прочтение6 мин
Охват и читатели3.9K

С настольного компьютера или ноутбука мы прошиваем микроконтроллеры обычно через USB, да часто и с каким-нибудь программатором. А что если мы хотим прошить или сконфигурировать поделку с телефона? Некоторые телефоны имеют USB-OTG. Некоторые контроллеры умеют BlueTooth. Существуют системы поддерживающие WiFi. К сожалению всё это не носит массового характера - нужен подходящий телефон, подходящий контроллер и т.п.

Стало интересно - можно ли "пропищать" данные через динамик телефона - и уловить их микрофоном присоединённым к микроконтроллеру? В этой статье я кратенько расскажу о своих жалких попытках в этом направлении. Пока "с полпути" - потому что, предположительно, демонстрация самого принципа для Ардуино может оказаться полезнее для большинства коллег, чем конечный, узконаправленный результат - загрузчик для конкретного проца.

Был "предшествующий этап" - передача через аудиоразъём телефона, по проводу - об этом тоже вкратце расскажу и покажу (можете попробовать).

Бип-бип-бззззззз

Ассемблеры, 5 штук — быстрое знакомство для тех кто не знаком

Уровень сложностиПростой
Время на прочтение15 мин
Охват и читатели15K

Статья для тех кто не знаком с ассемблерами - но хочет взглянуть "одним глазком". Мы не сделаем вас гуру разработки на ассемблере за 15 минут - но покажем ассемблеры для нескольких популярных архитектур микроконтроллеров (ARM32, AVR, MSP430, 8051) - и для настольных наших компьютеров (x86 под Linux и DOS) - чтобы увидеть их различия и сходства - и не бояться погрузиться глубже, если что-то из этого может быть вам полезно.

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

Бонусом - для любопытных - ассемблер для Intel-4004 - 4-разрядного процессора которому уже больше 50 лет. К нему будет также небольшой "интерактивчик".

Кто не боится - давайте посмотрим ближе!

Вопросы по мэпам (map) в Go

Время на прочтение5 мин
Охват и читатели3K

Пару недель назад я собрал в статейку несколько базовых вопросов по массивам и слайсам - и в комментариях было предложено "а теперь надо про мэпы". Хорошая мысль - мы пользуемся ими почти на "интуитивном" уровне и о некоторых нюансах не задумываемся. Довольно много статей посвящено сверхподробному изложению внутреннего устройства - это мы пропустим. А посмотрим на мэпы так сказать "снаружи", с точки зрения их использования. Для знатоков тут вряд ли будет что-то новенькое, а тем кто недавно в языке всё-таки может послужить небольшим "чек-листом" :)

Мы используем жаргонный термин "мэпа" (она же "мапа") вместо того чтобы писать по-английски "map" чисто ради того чтобы иметь возможность пользоваться свойственными русскому языку падежными окончаниями для большей связности текста.

Читать далее

TWM — старый, лёгкий и классный оконный менеджер в *никсах

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели3.5K

Одной из привлекательных особенностей в Linux-ах и прочих unix-like системах является то что оконные менеджеры можно менять как перчатки! Все они, конечно, отображают пользовательские программы в графических окнах - но у каждого свои фишки, настройки и особенности, что вызывает непрестанные дискуссии "KDE против Gnome" и подобные.

Для демонстрации вот мини-обзор (и мини-тьюториал) по TWM - это дефолтный оконный менеджер в разных *nix системах, если ваш дистрибутив не содержал что-то более новомодное. Он очень легковесный, несколько непривычный в управлении - и притом хорошо конфигурируемый. Также в него вы попадаете в некоторых режимах восстановления системы - так что полезно будет узнать как им пользоваться и как из него выйти :)

Что же, посмотрим...

Сыр-бор вокруг Linux и мини-обзор альтернатив

Время на прочтение9 мин
Охват и читатели24K

На днях по чатам, каналам и форумам пронёсся шум "из Linux удалили русских мэйнтейнеров" - с последующими вопросами "останемся ли мы без Linux" и "умрет ли OpenSource". Эта маленькая статья для тех, кто "слабо в теме" - мы вкратце проясним что там случилось, сильно ли это кого-то затрагивает (спойлер - не сильно) - и для любопытствующих - обзор пары вариантов "на замену". Знатокам тут вряд ли удастся что-то почерпнуть (но можете смело вносить поправки или делиться собственным опытом по альтернативам).

Читать далее

Задачки «полуфинала» соревнования МТС (True Tech Arena 2024) — обзор, разбор

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели1K

Немного неожиданно что этот уровень назвали "полуфинал" - участники попадали в него сразу после квалификации, проходившей в первой половине октября. И в квалификации задачки были "не бей лежачего" (коротко упомянем их тоже). В "полуфинале" же предложили 5 задач с тем чтобы решить их за 5 часов, но время можно было выбрать любое в течение нескольких дней. Я решил две, ещё две понимаю как решать и по одной кажется без идей. На решённые задачи затратил минут 20, на нерешенные часа полтора. Давайте посмотрим на них вместе - вдруг вам будет интересно обсудить, поправить или подсказать.

Оговорюсь: я не имею отношения к МТС и не занимаюсь "спортивным/олимпиадным" программированием. Обычный мидл-девелопер из обычной конторы. Отчасти поэтому мне как и большинству из вас подобные задачки в излишних количествах кажутся немного скучными :)

Здесь речь про "алгоритмический трек" - а насчет параллельного соревнования по "роботам" можно посмотреть мою предыдущую статью.

Итак, к задачкам!

Робот в Лабиринте от МТС — можно практиковаться на любом языке

Время на прочтение4 мин
Охват и читатели875

На днях завершился отборочный тур на соревнование от МТС - если вы не успели поучаствовать - не беда :) мне удалось воссоздать задачу про робота в лабиринте - и вы сможете попрактиковаться (теперь - на любом языке!)

Если вы попытались участвовать то возможно были поражены запутанностью инструкций, кривоватой реализацией эмулятора и безответным суппортом. В то же время задачки про роботов были несложными, поучительными и в целом забавными. Их нужно было решать отсылая запросы к АПИ. Я сделал аналог "АПИ-сервера" для первой из трёх - чтобы позже поупражняться самому (мне не очень нравится моё решение) - и чтобы поделиться с соратниками - любителями подобных упражнений. Ниже будет просто небольшая инструкция по использованию с примером отправки команд для робота просто вручную, курлом из командной строки.

Клон МТС-овской задачи я немножко упростил в отношении координат и расстояний - теперь всё измеряется просто в клетках. Лабирит носит незамысловатый характер - он из квадратных клеток, сам размера N*N - и между каждой парой клеток стенка либо есть либо нет (никаких однонаправленных дверей, телепортов и пр.)

Итак, подробности, инструкция и пр...

По следам Жака Арсака — о программировании игр

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели1.9K

Старая книжечка "Программирование Игр и Головоломок" - наверное попадалась многим из нас. Изданная в 1985 в наши дни она смотрится архаично и сподвигнуть кого-то программировать приведённые в ней игры (и подобные им) - затруднительно. А жаль :)

Попробуем немного освежить этот материал. Немного познакомимся с примерами из книжки - и поговорим о реализации таких игр в виде HTML-страничек - либо в виде HTTP-сервера - так что любопытствующие смогут даже попробовать написать код и поиграть против онлайнового злого гения (ну это преувеличение, он далеко не гениален).

Что ж, сыграем?

Отбор на соревнование МТС (TrueTechArena) — противоречивые впечатления

Время на прочтение4 мин
Охват и читатели909

Вчера заметил здесь же на хабре объявление о соревновании от МТС - сейчас как раз идёт отбор, до 15 числа можно влиться. Точнее их там даже два - алгоритмическое и
"программирование роботов". Я продрался сквозь регистрацию и сейчас немного расскажу что внутри, чтобы вы могли легче решиться попробовать (или наоборот).

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

Ну, турбо-поскакали :)

Erlang — классный функциональный язык (или как мы сели в лужу)

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели5.8K

Однажды я устроился в проект на Erlang. Вообще мой профиль тогда был в основном Java и немного BigData. Но по результатам собеседования договорились что я попробую написать небольшое тестовое задание — и сам пойму нравится ли мне язык — и ребята оценят, гожусь ли я им. Ну и за выходные справился — язык непривычный но не очень сложный — и интересный, с необычными «фишками». Команде же, куда меня взяли, оказался удобен мой опыт в бигдате и амазоне.

Сейчас я расскажу на паре примеров про язык — он действительно по‑своему классный (если вам нравится функциональное программирование — это для вас) — и про то как, однако, он оказался неудачным выбором для проекта (данного‑конкретного).

Статья для широкого круга читателей, не знакомых с языком — знатоки же Эрланга в частности и ФП вообще возможно найдут неточности в моём повествовании — дело было лет 6 назад — так что можете смело поправлять и даже ругать при необходимости:)

Вперёд - кто смелый :)

Ваш собственный сайт задач за 30 минут — и совсем бесплатно :)

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели6.6K

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

А может вы набираете стажёров в компанию - на позицию junior разработчика или тестера - или на внутренние курсы - тут не помешала бы возможность провести мини-соревнование - чтобы отфильтровать более целеустремлённых кандидатов. (конечно нужна аккуратность с любителями ИИ-генерации кода, но это отдельная тема) Можно использовать также и для сессий live-coding на собеседованиях.

Это просто! Вы можете за один присест развернуть готовый опенсорсный сайт (моё творение) на бесплатном PHP-хостинге. В зависимости от потребностей этого может хватить на годы. Я расскажу об основных возможностях и недостатках - и вкратце поясню как скачать, как задеплоить, как кастомизировать - так что вы сможете решить, подойдёт ли эта штука для ваших целей.

Читать далее

Девушки, Свиньи и YandexGPT 3

Время на прочтение5 мин
Охват и читатели1.8K

Не сердитесь, друзья - это очередной маленький эксперимент над "могуществом генеративного ИИ" - не только и не столько чтобы позабавиться, а больше чтобы наглядно уяснить "границы применимости". Скормим ИИ незамысловатую задачку и увидим как его "колбасит" - то есть, насколько GPT на самом деле не думает а скорее пробует комбинировать в надежде что пользователю понравится результат. Обратите внимание что YandexGPT 3 это не "новейшая модель" - вы сможете попробовать в более новых.

Я когда-то слегка модифицировал "задачу про гусей и кроликов" и предложил её своим школьникам (это ребята старших классов из умной школы - поэтому оригинальная задача была бы для них смехотворно простой). Всегда интересно смотреть насколько по-разному проворачиваются мозги при её решении. Что же, скормим её ИИ и поглядим какими нелогичными и неконсистентными ответами он пытается в ответ накормить нас :)

Итак, задача о девушках и свиньях

Язык BCPL из которого получился C

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели3.6K

Готовясь к собеседованиям по Go я обратил внимание на то что среди его создателей Кен Томпсон - я смутно помнил что он также стоял у истоков языка C, но без подробностей. На самом деле было примерно так: Мартин Ричардс написал BCPL, Кен Томпсон переделал его в B повыкидывав "ненужное" и улучшив синтаксис, а Деннис Ритчи добавил разнообразие типов чтобы получился язык С который мы уже более-менее представляем.

И вот я решил заглянуть в BCPL - насколько он был похож и в чем отличался. Кратким обзором - сравнением с С я и хочу поделиться! Вы сможете и сами "пощупать" его при желании :)

Начнём с Хелло-ворлд?

Интерактивный Бейсик для Arduino и STM32

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели4.4K

Этот проект был разработан в 2018 для занятий со школьниками - чтобы можно было программировать контроллеры в том числе через Bluetooth с телефона - притом и с интерактивным режимом (ввёл команду - светодиод загорелся). В состав входят простенький самодельный интерпретатор BASIC с версиями прошивок для AtMega328 (arduino) и STM32F103, эмулятор чтобы можно было попробовать/попрактиковаться онлайн - и Bluetooth терминал для Android (на случай программирования с телефона а не по кабелю).

Вещь более менее рабочая - семестр мы с ней поигрались - но всё же результатом я не очень доволен (поясню почему) - и в следующие годы пробовал уже другие затеи в этом направлении (тоже довольно дикие).

Код выложен на GitHub так что можете попробовать сразу - хоть живьём, хоть в эмуляторе :)

Итак, что это за странная штуковина?

Тёплый Ламповый Мультивибратор

Время на прочтение5 мин
Охват и читатели16K

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

Итак здесь мультивибратор на двойном триоде 6Н18Б и неонках (ну некрасиво же светодиоды ставить в ламповую-то технику) - с бестрансформаторным питанием. Сейчас быстренько расскажу что тут к чему :)

Подробности далее - только помните о ТБ!

Массивы и слайсы в Go — для собеседований

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели3.5K

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

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

Ух, понеслись!

Ископаемые ресурсы в интернете

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели4.4K

Когда-то интернет был по карточкам. И по минутам. А то не было и его. Было ФИДО, были ББС-ки. Легенда о Красном Драконе. Я думал все это давно и прочно ушло - ан нет. Так получилось, что под рукой накопилась уже горстка забавных ресурсов (а некоторые и полезные) - которыми хочу поделиться. Развлечения или ностальгии ради. Но и не только :)

Вперед, в прошлое!

Информация

В рейтинге
181-й
Откуда
Санкт-Петербург и область, Россия
Работает в
Зарегистрирован
Активность