Не вижу мой сайт в Яндекс Вебмастер

Мне дали доступ к сайту, но я его не вижу в списке своих сайтов на Яндекс Вебмастере, в чем причина? Как добавить новый сайт?

Оказалось, что если вам дают доступ к управлению сайтом, то он автоматически не появляется в вашем списке сайтов. Его нужно добавить вручную, нажав плюсик:

Читать далее

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

Python: подготовка к работе с БД MySQL

Я часто «переезжаю» от одного окмпа на другой и приходится с нуля настраивать энвайромент для работы с MySQL. В итоге я каждый раз смотрю видос Штукенции на эту тему (он будет внизу этой статьи), что не очень удобно, когда ты в сотый раз это делаешь. Решил сделать шпаргалку по Питону 🙂

Итак, допустим, у нас есть скрипт на Питон.

  1. Первым делом — устанавливаем сам Питон.
  2. Далее надо, чтобы скрипт открывался в IDLE. Для этого:
    — ПКМ на файл -> Open with… -> More apps… -> Look for another app… -> C:\Python310\Lib\idlelib\idle.bat
  3. Также зайдем сразу в настройки IDLE и выберем там тёмную тему: Options → Configure IDLE → Highlights → жмяк на кнопку IDLE Classic → выбираем IDLE Dark
  4. Теперь обновляем Пип в CMD: py -m pip install --upgrade pip
  5. Ставим MySQL коннектор: pip install mysql-connector-python
  6. Наслаждаемся и пишем коммент к этомук посту 😉 А вот и видео с наглядным гайдом:

Читать далее

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

Создаем Makefile для gcc в Visual Studio Code

  1. устанавливаем MinGW (как настроить MinGW — см. мое видео на англ.)
  2. устанавливаем Visual Studio Code (VSC)
  3. сразу можно VSC интегрировать с Git, чтобы все автоматически синхронизировалось. Для этого просто сделайте репозиторий на Github и клонируйте его в какую-то папку у себя на компе. Эту папку откройте в VSC и он автоматически подхватит этот репозитозий, предложив синхронизацию 🙂 Соглашайтесь, чего уж там. Коммитить можно через кнопку в VSC (см. скриншот справа) или автоматом.
  4. теперь устанавливаем тамошний плагин «C/C++ for Visual Studio Code»:

Читать далее

Рубрика: Visual Studio Code, С (Си) | 2 комментария

Язык Си: проверка правописания по словарю

В конце пятой недели курса CS50 Harvard мы изучили хэш-таблицы, с помощью которых можно решить задачу хэширования слов из текста, чтобы проверить правильность их написания по словарю (speller.c). Дается словарь, в котором на каждой новой строке перечислены слова. В отдельном файле дается текст, который программа должна проверить — какие слова в тексте написаны не правильно. Считается, что все слова, которых нет в словаре, — это неправильные слова.

Нужно не только создать код программы, который сверяет слова из текста со словарем, но и минимизировать скорость выполнения этой программы. Чтобы программа работала быстро, нужно придумать свою хэш-функцию и подобрать оптимальное количество «ведерок» в хэш-таблице (изначально предлагается 26 «ведерок»). Задание находится в файле словаря (dictionary.c) и состоит из четырех функций: загрузка словаря (load), хэш-функция (hash), проверка слов (check) и освобождение памяти (unload). Читать далее

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

Язык Си: наследование группы крови членов семьи

На пятой неделе курса Computer Science — CS50 (Harvard) мы изучили структуры данных и научились обращаться к элементам структур по их адресу. Чтобы выполнить домашнее задание (лабораторная работа 5 — inheritance.c), нужно разобраться в научном принципе наследования группы крови от родителей к детям. Задача: написать программу, которая запускает симуляцию семьи из трех поколений и присваивает каждому ее члену группу крови на основании группы крови родителей.

Как наследуется группа крови:

  • есть всего три возможных формы гена (их называют «аллель» или строительный блок), определяющих тип группы крови — это A, B, и O;
  • сама группа крови — это всегда два аллеля (всевозможные комбинации A, B, и O), например, AO, AA, OB и т.д.;
  • группа крови «передается» от родителей к ребенку следующим образом: от каждого родителя случайным образом отбирается один аллель и затем они объединяются в новую пару — это и есть группа крови ребенка (например, у родителей было AO и OB -> у ребенка может быть AB, OO, OB или AO).

Читать далее

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

Половина курса Computer Science пройдена!

Новые слова в моем лексиконе:

🔸 поинтер (указатель на ячейку памяти; что-то типа карточки книги в ящиках библиотеки, где указано название книги и ее место на полке);

Пример из жизни:
Не соблаговолите подвинуться, здесь мой поинтер!

🔸 хэш-функция (алгоритм преобразования данных; отправляешь туда сообщение, а на выходе получаешь хэш-код, который для этого сообщения всегда одинаковый); Читать далее

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

Язык Си: простой генератор случайных чисел

Генератор случайных чисел на C при помощи srand() и time(). Srand() является вспомогательной функцией для функции rand(), генерируя семя (seed) начала последовательности (псевдо)случайных чисел. Т.к. время, возвращаемое функцией time() меняется раз в секунду, при вызове этого кода чаще — рандома не будет. Чтобы был — юзайте наносекунды через timespec_get().

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
    int n, r;

    printf("Rng at your service:\n\n");
    srand((unsigned)time(NULL));

    for (n = 0; n < 10; n++)
    {
            r = rand();
            printf("%d\t", r % 100);
    }

    return 0;
}

 

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

Язык Си: восстановить фотографии с карты памяти

Представьте, что вы удалили фотографии с карты памяти, а потом захотели их восстановить. Оказывается, что в некоторых случаях это возможно сделать, ведь когда мы удаляем фото кнопкой «delete», то что происходит на самом деле больше похоже не на удаление, а на забывание. Связи между байтами пропадают, но сама информация все еще находится в памяти, пока не будет перезаписана новыми  фотографиями. Проходя курс CS50 (Harvard) — в конце четвертой недели нам выпало задание recover.c, в котором нам дается исходный файл карты памяти card.raw и нужно написать программу, которая восстановит все фотографии.

Цифровые камеры зачастую хранят фотографии друг за другом в соответствии с файловой системой FAT, где вся информация разделяется на блоки одинакового размера по 512 байт. И каждая фотография записывается при помощи этих блоков. Учитывая, что фотографии могут незначительно отличаться по размеру друг от друга, но при этом записываться одинаковым количеством блоков, позволяет написать код, который последовательно пройдет по каждому блоку памяти карты и скопирует эти данные в новые файлы. «Лишние» байты называются «незанятым пространством», и в нем может сохраниться что-то даже из древних фотографий. Читать далее

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

Аналог Notepad++ (форк)

Долго искал стабильный форк Numpad++, который бы мог жить параллельно с ванильной версии npp. Зачем? Чтобы иметь возможность запуска двух инстансов моего любимого редактора 🙂 К сожалению, использование портабл версии вместе с установленной не дает возможность сохранять открытые проекты. 

Искал, искал.. и нашел! Встречайте — NotePad Next. Кроссплатформенное воплощение npp.. подойдет и тем, кто искал аналог Notepad++ на линуксе 🙂

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

Язык Си: фильтр, выделяющий края объектов на изображении

В конце четвертой недели курса CS50 (Harvard) нам выпало интересное задание: сделать программу, которая принимает исходное изображение и накладывает на него фильтр с выделением краев объектов (filter-more). Этот эффект достигается применением оператора Собеля — вокруг каждого исходного пикселя берется сетка 3х3 (еще 8 пикселей, кроме исходного) и рассчитывается по формуле сначала значения Gx и Gy, а затем вычисляется квадратный корень из суммы квадратов полученных значений. Значения Gx и Gy возводятся в квадрат, чтобы избежать отрицательных чисел.

Что из себя представляет квадрат из чисел Gx и Gy? Это вычисление значений производных по вертикали и по горизонтали, что на практике выглядит как умножение значений цветов RGB каждого пикселя на число в заданных Gx и Gy матрицах. Суть таких вычислений сводится к тому, что мы сравниваем значения по каждую сторону от нулей, если разницы нет — значит цвет не изменяется, если есть переход от меньшего к большему, значит, и есть градиент и чем больше разница, тем сильнее меняется цвет на изображении. Следовательно, в том месте, где есть переход, на новом изображении будет нарисована «граница». 

Читать далее

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

Язык Си: наложить фильтр на изображение

На 4 неделе курса CS50 (Harvard) мы изучили принципы работы с памятью и массивы данных. Перед нами встала задача — написать программу, которая будет накладывать фильтры на исходное изображение (filter-less). Нужно сделать 4 фильтра: черно-белый, сепия, зеркальный и размытие. Исходная картинка представляет собой 24-битный .BMP файл, это означает, что каждый пиксель этой картинки содержит информацию в 24 бита, кодирующую RGB цвет (на каждый отдельный цвет — красный, зеленый, синий — выделяется по 8 бит).

Кодировка цвета может рассматриваться в шестнадцатеричной системе как, например, 0xff — что в десятеричной системе соответствует 255 (если так кодируется красный цвет, то 255 — это означает «максимально много красного»). Каждое изображение содержит в своем коде не только сами цвета, но и метаданные в заголовке (14 байт BITMAPFILEHEADER и 40 байт BITMAPINFOHEADER). Сразу после заголовков начинается кодирование цветов в bitmap. Учитывая, что шестнадцатеричное число кодирует 4 бита, для кодирования одного цвета (например, красного) потребуется два шестнадцатеричных числа. Читать далее

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

Язык Си: изменить громкость звука файла

На четвертой неделе курса CS50 (Harvard) мы изучили работу с памятью, что поможет выполнить лабу (лабораторную работу) по изменению громкости звука в файле .wav при помощи программы, которая получает исходный файл с музыкой и через командную строку получает значение фактора (во сколько раз нужно изменить громкость). Так если пользователь введет фактор 2 — то это значит, что полученный файл должен стать в два раза громче (volume.c).

Чтобы выполнить это задание, нужно учесть, что у музыкального файла есть заголовок из 44 байтов, в котором содержатся метаданные, и только после этого идут значения по 2 байта (16 бит), описывающие звуки. Чтобы перезаписать новый файл с измененной громкостью, нужно прочитать и изменить значения каждый двух байтов, описывающих звук. Чтобы отделить значения заголовка, можно ввести новый массив данных uint8_t header[44], а остальные значения записать в int16_t buffer (это два специальных типа переменных, которые затем можно использовать как аргумент в функциях fread и fwrite). Читать далее

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

Язык Си: адреса и указатели

Пример того, как хранятся адреса в памяти:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int* x = NULL;

    printf ("address of new pointer-type variable x: %p\n", &x);
    printf ("value of variable x: %p\n", x);

    x = (int*) malloc(sizeof(int));

    printf ("now pointer-type variable x value exists and it is: %p\n", x);

    printf ("address of new pointer-type variable x: %p\n", &x);

    return 0;
}

Более сложный пример из cs50, который мы подробно разобрали при помощи комментариев: Читать далее

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

MySQL шпаргалка для админа

Большинство вещей удобнее делать через MySQL Workbench. Но чтобы изначально создать и настроить БД, а также бекапить ее — требуется терминал. Поэтому эта шпаргалка поможет вспомнить необходимые команды терминала для MySQL, без лишнего.

Чтобы залогинится в MySQL с локалки — делаем ярлык на рабочий стол со следующим путем:

"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysql.exe" "--defaults-file=C:\ProgramData\MySQL\MySQL Server 5.6\my.ini" "-uroot" "-p"

Теперь при даблклике на ярлык вам предстоит ввести только рутовый пароль 🙂

Если не запускается MySQL: проверяем services.msc и делаем  netstat -na | find "3306"

Теперь команды: Читать далее

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

Язык Си: поменять местами переменные

Любопытная фича — как просто поменять местами числовые переменные без буфера при помощи побитовой операции XOR (побитовое исключающее ИЛИ):

#include <stdio.h>

int main(void)
{

    int a = 3;
    int b = 5;

    printf("a = %d, b = %d\n", a, b);
    a = a ^ b;
    // a   =   11
    // b   =  101
    // a^b =  110
    printf("a = %d, b = %d\n", a, b);
    b = a ^ b;
    // a   =  110
    // b   =  101
    // a^b =  011
    printf("a = %d, b = %d\n", a, b);
    a = a ^ b;
    // a   =  110
    // b   =  011
    // a^b =  101
    printf("a = %d, b = %d\n", a, b);

    return 0;
}

Уличная магия, в рот мне ноги!

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

Язык Си: лаба по сортировке

Продолжаем курс cs50, неделя третья, алгоритмы сортировки. Настало время лабораторки. Она очень простая:

  • скачать тестовый сетап: https://cdn.cs50.net/2021/fall/labs/3/sort.zip
  • внутри архива лежат три уже скомпилированные программы на C: sort1, sort2 и sort3 — это бинарники, т.е. файлы с двоичным кодом, поэтому мы не можем просмотреть их исходный код на C.
  • каждая из этих программ работает по одному из алгоритмов сортировки: сортировка выбором (selection sort), пузырьковая сортировка (bubble sort) или сортировка слиянием (merge sort). В каком файле какая — мы не знаем. Наша задача — определить, какой алгоритм сортировки используется в каждом бинарнике.

Читать далее

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

Язык Си: упражнения на рекурсию

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

  1. печать чисел от 1 до n
  2. печать четных/нечетных чисел до n
  3. возведение n в степень
  4. печать n! (факториал — произведение чисел до n)
  5. печать суммы чисел от n до m
  6. печать чисел Фибоначчи (каждое следующее — сумма двух предыдущих)
  7. печать чисел Коллатца (чётное: n/2; нечетное: n*3+1)
  8. копирования строки из одной в другую
  9. печать элементов массива
  10. печать строки наоборот
  11. конвертация десятичного числа в двоичное
  12. бинарный поиск
  13. сортировка «пузырьком»
  14. сортировка слиянием

Читать далее

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