CodeBlocks: дебагинг и глобальные переменные

Я люблю юзать CodeBlocks IDE для своих проектов на языке Си… Но самая большая ошибка CodeBlocks IDE в том, что там вы должны вручную добавлять в ‘Watch’ глобальные переменные каждый @#$% раз во время дебагинга. Например, в C++ Builder и других IDE такой проблемы нет… Зачем, зачем они это сделали?…

Ну хорошо… «Надо избегать использования глобальных переменных», — скажут многие. Но использование глобальных переменных для маленьких программ — это самый удобный способ что-то быстренько накодить. ИМХО большинство проектов, использующих CodeBlocks, это небольшие проекты энтузиастов… Так что там это действительно не актуально. Печаль.

Рубрика: IDE | Оставить комментарий

Вернуть прежний терминал после апдейта KB5019509 Windows 11

Поставил нынче апдейт для Винды — KB5019509 и у терминала оторвало руку. То бишь он перестал нормально показывать программы консольные, вроде моего рогалика. Апдейт, который это поломал добавляет в консоль табы, при этом ломая все остальное.. ну не суть (кстати, чтобы посмотреть апдейты Винды последние, в cmd вбейте wmic qfe list).

Чтобы починить:

ПКМ по заголовку окна терминала -> Свойства

Выставляем в Default Terminal Application -> Windows Console Host

Перезапускаем консоль и аллилуйа! Мы вернули взад нашу папскую консоль. Старина Билли вновь остался с носом ;P

Рубрика: Windows 11 | Оставить комментарий

Добавить в контекстное меню «New» .txt в Windows 11

Создаем .reg файл и суём туда:

Windows Registry Editor Version 5.00
 
[-HKEY_CLASSES_ROOT\.txt\ShellNew]
 
[HKEY_CLASSES_ROOT\.txt\ShellNew]
"NullFile"=""
 
[-HKEY_CLASSES_ROOT\txtfilelegacy]
 
[HKEY_CLASSES_ROOT\txtfilelegacy]
@="Text File"
 
[HKEY_CLASSES_ROOT\txtfilelegacy\shell]
 
[HKEY_CLASSES_ROOT\txtfilelegacy\shell\printto]
"NeverDefault"=""
 
[HKEY_CLASSES_ROOT\txtfilelegacy\shell\printto\command]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
  00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,6e,00,6f,00,\
  74,00,65,00,70,00,61,00,64,00,2e,00,65,00,78,00,65,00,20,00,2f,00,70,00,74,\
  00,20,00,22,00,25,00,31,00,22,00,20,00,22,00,25,00,32,00,22,00,20,00,22,00,\
  25,00,33,00,22,00,20,00,22,00,25,00,34,00,22,00,00,00

Запускаем, убиваем эксплорер и наслаждаемся возможностью создавать .txt файлы 😉

Читать далее

Рубрика: Windows 11 | Оставить комментарий

Убрать из контекстного меню «New» типы файлов в Windows 11

Перешел со скрипом на 11 винду. Кошмарный интерфейс. Билли, за что?!

В общем, один из костыльков, которые приходится подставлять, чтобы не сойти с ума — убирание @#$% типов файлов из контекстного меню «New» (в русской винде будет что-то типа «Создать…). Делается так (работает и на 10 Винде):

  • regedit
  • HKEY_CLASSES_ROOT
  • ищем нужное расширение, например, .odg (упаси б-же, зачем опенофис добавляет туда свои дырявые шляпы).
  • Там ищем раздел ShellNew и удаляем его ко всем чёртям (Билли, они тебя ждут).

Читать далее

Рубрика: Windows 10, Windows 11 | Оставить комментарий

Язык Си: основы Ncurses

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

Итак… NCURSES (1993) — переписанный старый несвободный терминал CURSES, который был сделан для разработки игры Rogue (1980).

В общем, фича курсОв (далее ударение не ставлю) — управление курсором терминала. Эта статья основана на руководстве tldp NCURSES и некоторых других ресурсах. Давайте начнем!

Читать далее

Рубрика: С (Си) | Оставить комментарий

Что программируют на Python? Реальное практическое использование с примерами библиотек

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

Рубрика: Python | 3 комментария

Топ-3 языка программирования для начинающих. Какой первый язык программирования выбрать?

Вы как начинающие программисты скорее всего уже сломали всю голову думая какой же язык программирования выбрать. Я выбрала три варианта, и сейчас объясню какой из них подойдет именно тебе.
 
Три лучший первых языка программирования прямо сейчас:
 
  • язык Си (C language)
  • Python
  • JavaScript

Читать далее

Рубрика: Программирование | 1 комментарий

Ассемблер: памятка для новичков

Ассемблер — язык программирования низкого уровня. Ниже него только машинный код (нули и единицы).

Зачем учить ассемблер?

  1. понимание функционирование компьютера. Любой программист должен знать Си. Любой программист, знающий Си — должен знать ассемблер.
  2. умение реверсить ПО (мы живем в копирастическом мире). Для меня это в первую очередь старинные игры 90-х годов, исходников к которым не сохранилось.
  3. ок. коммерческая разработка. Если у вашего устройства мало памяти. — вы пишете на асме. Микроконтроллеры, загрузчики, встраиваемое ПО. Если вам надо чтобы все работало быстрее молнии под конкретную систему — вы тоже пишете напрямую под процессор, это эффективнее.
  4. WebAssembly (wasm) 🙂 Это не язык программирования, а технология, которая сейчас захватывает веб. На ассемблере там писать не нужно, но для оптимизации кода понимание ассемблера может пригодится.
  5. Ну и анализ всякой вирусной дряни. Компьютерная безопасность и антивирусные лаборатории — вот где ассемблер идет только в путь.

Читать далее

Рубрика: Assembler | Оставить комментарий

Hello World на ассемблере

Hello World на ассемблере. Как много в этом звуке. Для начала, вот, что мы будем лопатить в асме, классика:

#include <stdio.h>
int main(void)
{
    printf("Hello, world\n");
    return 0;
}

На GNU assembly это будет примерно так: Читать далее

Рубрика: Assembler | Оставить комментарий

Язык C: Проблема «невозможно привязаться к порту» (Windows)

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

Couldn’t bind to the port

Итак, у нас есть подобная проверка в коде C:

if (bind (socket_desc, (struct sockaddr*)&server_addr, sizeof(server_addr)) < 0)
printf("Couldn't bind to the port\n");

И он возвращает отрицательное значение. Как это исправить?

  1. найдите, какой процесс использует этот порт через cmd:
    netstat -ano | findstr :<port number>
    Пример:
    C:\Users\n>netstat -ano | findstr :2000
    Видим там:
    TCP 127.0.0.1:2000 0.0.0.0:0 LISTENING 3560
  2. последнее число — это идентификатор процесса. Чтобы убить процесс:
    taskkill /pid <process ID> /F
    Пример:
    C:\Users\n>taskkill /pid 3560 /F
    SUCCESS: The process with PID 3560 has been terminated.

Ура! Получилось 🙂

Рубрика: С (Си) | Оставить комментарий

Язык Си: компиляция и запуск программ в Notepad++

В верхнем меню жмём «Run» и вбиваем… Пример:

cmd /c cd "C:\Users\n\Desktop\" && gcc 1.c -o 1.exe && 1.exe

В этом примере мы говорим Notepad++:

cmd — запустить cmd

/c означает закрыть консоль после выполнения программы; можно сделать /k (чтобы не окно не закрывалось)

cd "C:\Users\<USERNAME>\Desktop\" перейти в место, где у нас лежит файл исходного кода (в данном случае — рабочий стол винды).

&& — выполнить следующую команду

gcc 1.c -o 1.exe — компилируем файл в исполняемый

1.exe запускаем исполняемый файл (чтобы посмотреть как программа себя ведет)

Моя видео инструкция (там будет бонус — как запускать команду горячей клавишей!):

Читать далее

Рубрика: Notepad++, С (Си) | Оставить комментарий

HEX editor под Винду и не только

Долго искал нормальный быстрый open-source HEX редактор. Наконец, нашел: https://sourceforge.net/projects/wxhexeditor/

Наслаждайтесь 🙂

Рубрика: Софт и инструменты | Оставить комментарий

Питон: генерация строк с конкатенацией

Задача сгенерировать полтос строчек такого вида:

hello 1 world
hello 2 world
hello 3 world
hello 4 world
...

Попробовал с напрыга (я уже к чертям забыл Питон после Си): Читать далее

Рубрика: Python | 2 комментария

Правильный перенос истории git в новую ветку

Сквашим свои нубские коммиты

Возникла необходимость оптимизировать историю моего первого репозитория (форка другой репы), который (естественно) был весьма корявым. За 3 года там собралось множество мусора; данные, которых там быть не должно и сотни лишних коммитов, которые затрудняли навигацию по истории репы.

Обычно можно все сквашить прямо «на горячем». Однако из-за множества мержей уже не посквашить.

Горсточка вишенок

Первое, что я попробовал — тупо клонировал upstream-master в новую ветку. Начал туда cherry-pick’ать коммиты из своего origin-master (см. скрин слева). Но тут возникла неприятность. Мой основной форк-origin переплетался с upstream. В итоге, приходилось при resolve конфликтов затирать куски коммитов. Ну и вообще каша вышла полная — снизу 2019, сверху 2020+ (см. скриншот снизу). Читать далее

Рубрика: Git | Оставить комментарий

Отключение следующего слайда (предварительного просмотра) для многократного показа в LibreOffice Impress

Как убрать когда презентация показывается на двух экранах сразу… скрыть панель управления слайдшоу:

  1. ИнструментыПараметрыLibreOffice ImpressОбщие
  2. Раздел Презентация справа вверху
  3. снимите флажок Включить консоль презентации

Рубрика: Офисные программы | Оставить комментарий

[Решение] Не запускается cmd из powershell

Что делать, если у вас не запускается cmd из powershell. Вылетает ошибка:

cmd : The term ‘cmd’ is not recognized as the name of a cmdlet, function, script file, or operable program. Check the
spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ cmd + ~~~ + CategoryInfo : ObjectNotFound: (cmd:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

Скорее всего вы напортачили с путями в переменной окружения PATH. Удалили или нажали «Browse…» до того, как создали новую переменную.. В итоге вы удалили самую главную и опасную системную переменную C:\WINDOWS\system32

Вот как я только что сделал 🙂
Починить это просто: добавьте C:\WINDOWS\system32 обратно.

Рубрика: Windows 10, Windows 7 | Оставить комментарий

Лайфхаки Excel для подвинутых на примере LibreOffice

Полезные приемы и трюки по работе с таблицами в Excel, которые меняют жизнь!

Здравствуйте, я Штукенция. Сегодня я покажу вам лайфхаки для Excel с использованием бесплатного libreoffice с открытым исходным кодом. Начнем с идей, которыми я пользуюсь каждый день — зажмите Ctrl и покрутите колесико мышки, чтобы масштаб в excel менялся.
 
Следующая идея: есть возможность автодобавления значения на основе данных из соседних ячеек — ставишь несколько значений, выделяешь их, тащишь за правый угол и таким образом таблица автодополняется.

Читать далее

Рубрика: Офисные программы, Софт и инструменты | Оставить комментарий