Пограмист 21 века: редактор

Чатжпт и иже с ним сделали из пограмистов — редакторов. Писать код больше не нужно. Нужно его редактировать. Сейчас (пока) задача — из 7овнокода делать код. Потом уже и этого не надо будет делать. Достаточно будет ставить задачи (эффективно их формулируя).

Ну и норм. Не вижу смысла ломать руки и биться в истериках, как это практикуют некоторые. Приспосабливайтесь, господа.

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

Git: как запретить публиковать ветку репозитория

Бывает, что нужно держать приватную ветку.. и чтобы обезопасить себя от случайного жмяка на Publish Branch, имеет смысл запретить её публикацию. Под виндой делается так…

В папке .git/hooks делаем файл pre-push (без расширения) и кладем туда

#!/bin/sh

# List of branches to protect
PROTECTED_BRANCHES="local-branch-name"

# Get the name of the branch being pushed
current_branch=$(git symbolic-ref HEAD | sed -e 's,.*/,,')

# Check if the current branch is in the list of protected branches
if echo "$PROTECTED_BRANCHES" | grep -w "$current_branch" > /dev/null; then
    echo "Pushing to branch '$current_branch' is not allowed."
    exit 1
fi
Рубрика: Git, Остальное | Оставить комментарий

Главное в программировании: ПОИСК ОШИБОК

Код по мотивам моего недавнего видео: https://youtu.be/ewhlgo1B8dI

Три этапа развития программиста:

  1. Сначала мы учимся реализовывать ФУНКЦИОНАЛ
  2. Затем — проектировать грамотную СТРУКТУРУ кода
  3. И наконец, постигаем искусство ПОИСКА ОШИБОК

Пример кода из видео:

Читать далее

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

[решение] VLC вне экрана (не видно окна)

Статья обновлена в 2024 году, чтобы пофиксить эту байду раз и навсегда

АРРРГГХ! Вот уже несколько лет одна и та же байда — плеер VLC уползает «за экран». Я все время забываю как его от туда достать, приходится гуглить. Вот памятка, как это быстро делается:

  1. Откройте VLC и сделайте его «активным» (кликните на него снизу, на панели задач), чтобы оно было текущим выбранным приложением (даже если вы его не видите)
  2. Отложите мышь, она вам не понадобится 🙂 Нажмите комбинацию клавиш Alt+пробел
  3. Сбоку экрана должно появиться небольшое всплывающее меню. Там будет опция «Переместить» (если ее нет — используйте «восстановить»). Выберите ее.
  4. Теперь используйте клавиши-стрелки, чтобы «вытащить» плеер из-за края экрана. У меня VLC съезжает всегда налево, поэтому я использую стрелку влево. Когда закончите, нажмите Enter.

Если это не помогает — можно просто заново поставить программу.

Далее… Теперь как сделать, чтобы это не происходило снова (у меня такое на низком DPI и 4к видео): Читать далее

Рубрика: Проблемы и решения | 5 комментариев

Пропала настройка «Select which icons appear on the taskbar»

Уже дюжину лет в винде есть настройка — что отображать в трее. Зовётся: «Select which icons appear on the taskbar«. И вот в Windows 11 она пропала. ЧИТО ДЕЛАТЬ?

Без паники. Билли в очередной раз «улучшил» нам жизнь. Я уже полез в

HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify

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

# Export the TrayNotify key
$regPath = "HKCU:\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify"
$exportPath = "C:\path\to\output\TrayNotifyBackup.reg"
Reg export $regPath $exportPath
Write-Output "TrayNotify key exported to $exportPath"

Ну и потом этот айдишник всобачить:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\TrayNotify]
"YourAppIdentifier"=dword:00000002

Но… потом ОКОЗАЛОСЬ, что Билли типа сделал удобную вещь. Можно МЫШКОЙ Б497b перетаскивать из скрытых значков в активный трей. @#$%я мышка. И почему нельзя было написать об этом, в том месте, где убрали эту настройку?

Прашу прасчения за тон, но когда имеешь дело с Билли — по другому писать непалучаитса.

Рубрика: Windows 11 | 1 комментарий

Windows server по RPD: проблема с разрешением и DPI

Когда коннектишься по RDP к серверу на винде — винда автоматом подбирает тебе разрешение и DPI, основанное на то, которое стоит на клиенте.

Т.е. RDP «зеркалит» клиента. И если вы коннектитесь с машиной с высоким DPI — то и на сервере RDP выставит высокий DPI. Что может помешать установить какую-то апку (нопример).

При чем, если вы тупо поменяете DPI на клиенте — это не поможет (сразу). Надо перегрузить _клиент_, а потом еще перегрузить и _сервер_. Тогда все отзеркалится корреткно. Ээ.. Ну собсно об этом эта статья. Надо поменять и ту и там и.. и тут и там заребутиться. Извращенец Билли как обычно удивляет.

Ищо есть варик:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\IgnoreClientDesktopScaleFactor
DWORD32
Value: 1

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

Отключить телеметрию языка Go

Оказывается, Го (а именно gopls aka местный language server) собирает телеметрию, поганец. Сбор типа ононимных данных о том, как мы прогаем. Чтобы отключить:

  1. C:\Users\<user>\AppData\Roaming\go\telemetry
  2. создаем там файл mode (без расширения!)
  3. внутри файла пишем одно слово: off

Такие вот шторки на вебку. Хотя в плане телеметрии винды я давно забил болт — надоело её вычищать. Но если есть какая-то телерастия, которую просто отключить раз и навсегда — надо это делать. Ну чисто чтобы комп поменьше тормозил.

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

Архитектура в программировании

По следам прошлого видео: «Архитектура в программировании: грабли и шишки«.

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

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

[Windows] Убрать разные «типы» папок в проводнике

Худшее, что есть в Винде — отображение деталей медиа файлов в Проводнике (file explorer). Проводник Билли любит навязывать юзерам якобы нужный тип папки (музыка, фото и т.д.). Изменения в настройках типа папки слетают. Скотство, одним словом. Чтобы убрать эту ересь раз и навсегда, вбиваем:

REG ADD "HKCU\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags\AllFolders\Shell" /V FolderType /T REG_SZ /D NotSpecified /F

Спасибо за внимание.

Рубрика: Windows 10, Windows 11 | 1 комментарий

Прототип — ключ к успеху в программировании

Если вы разрабатываете сложный (соло) проект из множества компонентов, не пытайтесь сразу все эти компоненты полноценно реализовать. Делайте заглушки-прототипы. Это сохранит вашу стамину и не даст выгореть на проекте раньше времени.

Также используйте бумагу. МНОГО БУМАГИ. Делайте таблицы и схемы, рисуйте ручками и карандашами. Это поможет вам писать хороший код.

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

Превратить Windows 11 в Windows 10 (UI)

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

ExplorerPatcher — позволяет откатить некоторые элементы ужасного интерфейса Винды 11 до нормального классического периода десятки или даже семёрки: вернуть классический «Пуск»; настроить таскбар, трей, эксплорер; убрать всякие идиотские функции и добавить обратно полезные 🙂

Ссылка выше идет на гитхаб, качаем из релизов, ставим. Потом чтобы запустить ПКМ на таскбар -> «Properties»:

Также можно запустить из run:
C:\Windows\System32\rundll32.exe "C:\Program Files\ExplorerPatcher\ExplorerPatcher.amd64.dll",ZZGUI

Я долгое время юзаю версию 22621.608.51.1; полёт нормальный. При апдейтах винды ничего не слетает. Нынче обновил сам ExplorerPatcher (ни разу этого не делал); всё ок 🙂

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

Язык Go. Про руны (тип данных), PostgreSQL и JS

Если вы делаете на Go сетевое приложение, которое работает с базами данных и/или javascript — нужно быть аккуратным при использовании типа данных rune.

К примеру, в PostgreSQL нет типа данных, который соответствует rune; там такие варианты хранение rune:

  1. хранить в CHAR(1) — тогда нужно будет каждый раз конвертировать при выгрузке из БД вот так: []rune(symbolStr)[0]
  2. хранить в BYTEA; выгружать через ж…. make([]byte, 4)
  3. или же несколько менее очевидный вариант — хранить в БД в виде INT; что наиболее релевантно.

Плюс… Javascript тоже не умеет работать с рунами. Приходится приводить вывод вот так: String.fromCharCode(.Icon);

Кстати… Забавно, что далеко не все emoji (unicode символы вроде 🐻) можно хранить в rune. Потому что некоторые из них превышают размер rune, т.к. используют дополнительный (т.н. вариативный) селектор Unicode:

  • «🏘️» дома (U+1F3D8 U+FE0F)
  • «⛰️» гора (U+26F0 U+FE0F)
  • «🏔️» гора со снегом (U+1F3D4 U+FE0F)

И это не только emoji, но и просто некоторые базовые символы Unicode.

Так что с rune надо быть аккуратным..

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

VS Code — кастомные горячие клавиши для терминала

Увлекся я тут VS Code. Полюбил эту скотину мелкософтовскую. Удобно для Go, что поделать. Ну и для этого самого Go нужно постоянно терзать консоль, чтобы запускать проект через go run . Делать это каждый раз руками — это, конечно, некошерно. Посему делаем вот что, Михалыч:

  • Ctrl+Shift+p
  • Preferences: Open keyboard shortcuts
  • справа сверху тычем на иконку Open keyboards shortcuts (JSON)
  • присовываем туда что-то вроде

Читать далее

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

Git Extensions — поиск по коммитам

Вопрошал я тут бояр — кто каким Git GUI пользуется для поиска по заголовкам коммитов?.. Тишина в ответ 🙂 Проблема в том, что на гитхабе поиск по коммитам в форке не работает, если у форка меньше звезд, чем у основы. А часто приходится искать именно по актуальному форку. Ну и вообще была идея переползти с нубского Github Desktop на что-то более интересное ибо приходится искать через git grep из консоли, что, конечно, неудобно. В итоге перепробовал добрую половину списка https://git-scm.com/downloads/guis и первое что нашел с поиском — GitFork. Клиент достойный, всё хорошо, но платный. В итоге…

Тада! Нашел! Git Extensions — лучший бесплатный open-source клиент. Есть поиск по коммитам и еще 100500 всяких полезнейших фич. Пользуйтесь на здоровье!

Рубрика: Git | 9 комментариев

Отзыв на CS50 курс по программированию

Изучение программирования с нуля может быть сложным, но полезным опытом, и прохождение курса CS50 — отличный способ начать. CS50 — это популярный вводный курс по компьютерным наукам, предлагаемый Гарвардским университетом, который охватывает широкий спектр концепций и инструментов программирования. Делюсь своим опытом изучения программирования практически с нуля на курсе CS50.
 

Читать далее

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

Postgresql — грабли новичка

1) Все время требует пароль при запуске pgAdmin 4 (что неактуально для локалхоста)

Решение:
идем в C:\Program Files\PostgreSQL\15\pgAdmin 4\web\
делаем копию файла config.py
называем эту копию config_local.py
меняем там параметр MASTER_PASSWORD_REQUIRED на False

2) Забиндив папку bin в PATH, можно вызывать из терминала
psql
выдает ошибку: psql: error: connection to server at «localhost» (::1), port 5432 failed: FATAL: password authentication failed for user «vasya»

Решение:
запускать от юзера psql -U postgres

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

Язык Go. Сумма последовательных чисел

Задача состоит в том, чтобы найти в массиве целых чисел последовательность последовательных чисел, сумма которых равна n.

Наша программа будет считывать список целых чисел (например, 5 2 3 4 6 1 4 10 1), за которым следует одно целое число n (например, 7). Пример вывода:

5 2 3 4 6 1 4 10 1
7
5 + 2 = 7
3 + 4 = 7
6 + 1 = 7

Читать далее

Рубрика: Go | 8 комментариев