• На чём написан язык программирования C?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Учтите, что язык программирования - это просто набор спецификаций и правил. Он написан на английском языке.

    Если же вас интересует на чем запрограммированы компиляторы языка С, то самые популярные нынче развивающиеся компиляторы написаны на C и C++ соответственно:
    gcc: https://github.com/gcc-mirror/gcc
    clang: https://github.com/llvm/llvm-project/tree/main/clang

    Вы спросите, а как компилятор языка Си написали на самом Си? Ответ прост - первые компиляторы были написаны на ассемблере. Они были очень простыми и тупыми, возможно не умели понимать все тонкости языка. Когда появился достаточно работающий компилятор с минимальным набором функций, можно было переписать его на Cи и скомпилировать первым компилятором. После этого стало можно компилировать компилятор на Си самим собой.

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

    А так, наверно, есть куча неподдерживаемых устаревших компиляторов Си на всевозможных языках.
    Ответ написан
    2 комментария
  • В чем суть ассиметричного графа?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Суть в том, что в графе нет одинаковых вершин или групп вершин. Их нельзя как-то переставить, что граф останется выглядеть точно так же. Вот пример граф из 4 вершин в виде квадрата. Его крутить можно как угодно и отражать - он выглядит точно так же - квадрат он и есть квадрат. А вот треугольник из одной вершины которого торчит путь длины 1, а из другой вершины - путь длины 2 - он несимметричный. Каждая вершина по своему уникальна. Одна вершина на треугольнике имеет степень 2. Одна имеет степень 3 и до ближайшей вершины-листа путь длины 1, Одна имеет степень 3 и до ближайшей вершины листа путь длины 2. Есть только одна вершина степени 2 не на цикле. Оставшиеся 2 вершины имеют степени 1, но от одной до цикла путь длины 1, а от другой - 2. Вы эти вершины как-то поменяйте местами и у вас граф будет выглядеть по другому.

    Не обязательно все вершины должны иметь разную степень. Но их нельзя поменять местами, потому что они связаны с другими вершинам по разному.
    Ответ написан
    2 комментария
  • Как одержать победу над свежим Botnet вирусом?

    EPIDEMIASH
    @EPIDEMIASH
    Человек швейцарский нож
    Уверен нужен комплекс. От базы: перепрошивка BIOS и чистая установка ОС, изоляция устройств, проверка и мониторинг системных каталогов на изменение и тд, настройка фаерволов и установка антивирусов. Но в вашем случае, вы даже можете обратиться к лабе Kaspersky, ESET и тд. Возможно вам не откажут.
    Ответ написан
    4 комментария
  • Важно ли сообщение "LF will be replaced by CRLF in" или можно не обращать внимания?

    @Vitsliputsli
    Нет правильного, все зависит от того, что вы хотите. Какие разделители строк вы хотите видеть в репозитории? Есть несколько вариантов, lf,crlf,cr, либо не преобразовывать, а записывать как есть. Сейчас вы выбрали преобразовывать в crlf, соответственно если git обнаружит другие переводы строк, то автоматом их преобразует, о чем и пишет в сообщении.
    Ответ написан
    3 комментария
  • Почему переменная класса становится undefined при обращении из метода?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Стрелочная функция не имеет своего this, соответственно возьмет его из скоупа выше:
    MyFunc = (e) => {
      console.log("MyVariable: " + this.MyVariable); // oh yes
    }
    Ответ написан
    Комментировать
  • Как добавить либу с гитхаба к проекту в Visual Code?

    AlexXYZ
    @AlexXYZ
    O Keep Clear O
    может вы имеете в виду вызов из консоли?

    npm install NAME_OF_LIBRARY

    Без консоли в VSCode библиотеки вроде как не ставятся.
    Ответ написан
    Комментировать
  • Как добавить либу с гитхаба к проекту в Visual Code?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Я вообще не понимаю как добавить что-то тут в область видимости

    раньше писал скрипты на пэйчарм где подобное происходило автоматически

    Не происходило. Все равно приходится создавать локальную среду и выбирать интерпретатор Python, а потом ставить через консоль или package manager нужные библиотеки.
    Я вообще не понимаю как добавить что-то тут в область видимости и импортировать в нужный мне скрипт

    Классическим импортом скрипта в html:
    You can use simple-keyboard as a < script> tag from a CDN, or install it from npm.

    Или со сборщиком:
    0. Открыть консоль.
    1. Перейти в директорию с проектом.
    2. Выполнить npm init, указав необходимые данные.
    3. Выполнить установку библиотеки npm install simple-keyboard --save.
    4. Запустить проект, выполнив npm run start (сборщик уже должен быть настроен).
    5. (опционально) Если будет несколько версий NodeJS, то рекомендую использовать MVM.

    Кстати, зачем Вы перешли в VS, если в PyCharm можно продолжать работать с фронтом?
    Ответ написан
    1 комментарий
  • В чем преимущества bs4 перед регулярками?

    Maksim_64
    @Maksim_64
    Data Analyst
    bs4 и regex -нельзя сравнивать. bs4 это интерфейс для работы с html, xml документами, а regex - это инструмент для работы с паттернами в тексте.

    Обычно их используют вместе, я не припомню что бы я использовал BeautifulSoup без регулярок.
    HTML - структурированный документ. Для эффективного взаимодействия со структурой есть BeautifulSoup для эффективного взаимодействия с элементом структуры текстом есть regex.
    Ответ написан
    Комментировать
  • Python+BeautifulSoup. Возможен ли поиск с помощью регулярных выражений?

    hottabxp
    @hottabxp Куратор тега Python
    Сначала мы жили бедно, а потом нас обокрали..
    Если вы передадите объект с регулярным выражением, Beautiful Soup отфильтрует результаты в соответствии с этим регулярным выражением, используя его метод search(). Следующий код находит все теги, имена которых начинаются с буквы «b»; в нашем случае это теги body и b:
    import re
    for tag in soup.find_all(re.compile("^b")):
        print(tag.name)
    # body
    # b

    Этот код находит все теги, имена которых содержат букву «t»:
    for tag in soup.find_all(re.compile("t")):
        print(tag.name)
    # html
    # title

    Виды фильтров
    Ответ написан
    Комментировать
  • Как найти стоп-слово в заголовке?

    @TulerDyrden
    =MAP(G2:G;LAMBDA(tx_;ЕСЛИОШИБКА(ЕСЛИ(ЕПУСТО(tx_);;
    let(x_;ArrayFormula(REGEXMATCH(tx_;K2:K));
         m_;HSTACK(K2:K;x_);
         fl_;CHOOSECOLS(FILTER(m_;CHOOSECOLS(m_;2);CHOOSECOLS(m_;1)<>"");1);
         JOIN(", ";fl_)));"Стоп-слов нет")))
    Ответ написан
    1 комментарий
  • Регулярка для удаление текста через строку?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Мне кажется тут проще реализовать удаление строк, длина которых 42 символа.
    Учитывая, что ни ЯП, ни IDE не указаны, то просто даю регулярку

    ^[\d\w]{42}\n

    На regex101 она работает как надо (во вкладке Substitution попробуй)
    Ответ написан
    3 комментария
  • Регулярка для удаление текста через строку?

    @rPman
    по количеству символов
    /^.{42,42}$/
    Ответ написан
    1 комментарий
  • Есть ли бесплатная база данных с фильмами?

    @alexalexes
    Торрент-форумы очень хорошо структурированы, как каталог фильмов.
    Если приложить некоторые усилия в плане парсинга такого форума, то можно получить дамп .torrent файлов - а это практически прямые источники видеопотока, но нужен торрент-клиент.
    Ответ написан
    Комментировать
  • Использовать в цикле булевой маски это норм, стрём?

    @U235U235
    Можно так: arr[bool_mask]=42
    Старайтесь не использовать циклы for, если работаете с массивами.
    Ответ написан
    Комментировать
  • Как отследить блокировку бота пользователями в телеграмме?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Приходит update со следующими ключевыми полями:
    {
         "my_chat_member": {
             "chat": {
                 "id": 5181600575,
             },
             "old_chat_member": {
                 "status": "member"
             },
             "new_chat_member": {
                 "status": "kicked",
             }
         }
     }
    Ответ написан
    2 комментария
  • Как добавить данные в Series через ссылку на объект?

    Maksim_64
    @Maksim_64
    Data Analyst
    Вообще так с pandas не работают.
    1. pandas имеет мощный I/O как следствие эксель в том числе читают прямо в фрейм. Есть функции read_excel и другие, дополнительно перед этим установив различные reader's writer's например openpyxl и др.

    2. Если ты собираешься создать series из python объекта, с числовыми индексами то это list. Если с именованными индексами но это словарь. То есть собирай в словарь или лист. Seires это однородный массив и с именованными индексами, и for циклами их не процессируют.
    Ответ написан
    2 комментария
  • Скажите пожалуйста почему выдает разные ответы?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    В первом случае ты подсчитываешь все a, которые с любым x дают false.
    Во втором случае, ты подсчитываешь все пары a, x, которые удовлетворяют условию.
    Ответ написан
    4 комментария
  • Метод insert не работает, как исправить?

    Vindicar
    @Vindicar
    RTFM!
    Ну тут сразу возникает вопрос: какую задачу выполняет этот метод. Ты говоришь, что метод используется другим классом. Окей, это норма. Для чего он используется? Какую задачу другой класс хочет решить вызовом этого метода?
    Вопрос связан с тем, что ты почему-то создаёшь элементы управления в методе put_wigets(). По идее, если твой класс представляет собой группу элементов управления, он должен создавать дочерние элементы в своём конструкторе, и сохранять ссылки на них в приватные (ну, насколько это можно в питоне) поля класса. Методы класса должны к этим полям обращаться. Исходи из того, что локальная переменная в методе (как Ent_numberBox ) живёт только во время вызова этого метода, и не должна содержать ничего, что переживёт этот метод (если это не возвращаемое значение).

    Например, так:
    import tkinter as tk
    
    class InputBox(tk.Frame):
        def __init__(self, master, **kwargs):
            # вызываем унаследованный конструктор
            super().__init__(master, **kwargs)
            # переменные tkinter можно связывать с элементами управления
            # тогда изменение в переменной отобразится в элементе, и наоборот
            # это бывает удобнее, чем дёргать элемент напрямую
            # а ещё можно самим реагировать на изменения значения такой переменной
            self.__value = tk.StringVar()
            # наше поле ввода
            self.__entry = tk.Entry(self, justify=tk.RIGHT, width=22, textvariable=self.__value)
            self.__entry.pack(side=tk.RIGHT, padx=10, pady=15)
            # метка с пояснением
            self.__helptext = tk.Label(self, bg=self['background'], height=3, text="Введите мат. выражение:")
            self.__helptext.pack(side=tk.LEFT)
        
        def get_value(self) -> str:
            """Возвращает введённую строку."""
            return self.__value.get()  # метод get() позволяет прочитать значение переменной tkinter
        
        def set_value(self, value: str) -> None:
            """Заменяет содержимое введённой строки новым."""
            self.__value.set(value)  # метод set() позволяет задать новое значение для переменной
            
        def append(self, symbol: str) -> None:
            """Добавляет символ(ы) к уже введённой строке."""
            self.__value.set(self.__value.get() + symbol)
    
    
    if __name__ == '__main__':
        root = tk.Tk()
        box = InputBox(root)
        box.pack(side=tk.TOP, expand=True, fill=tk.BOTH)
        box.set_value('Hello')
        box.append(', world!')
        root.mainloop()


    Я в этом примере исходил из своего понимания твоей задачи.
    Если это поле ввода, то мы хотим иметь возможность получить введённое значение. Поэтому метод get_value().
    Также ты упомянул необходимость в том, чтобы изменить это значение извне, из другого класса. Значит, нужен метод set_value().
    Также, если это - часть калькулятора, у тебя будет часто встречаться задача "добавить один символ в конец строки". Это можно реализовать через пару get_value()/set_value(), но будет удобнее иметь отдельный метод append().
    Один метод - одна решаемая задача.
    Ответ написан
    3 комментария
  • Кнопка и окно ввода в разных классах, не получается добавить кнопке возможность вставлять знаки в Entry объект?

    Vindicar
    @Vindicar
    RTFM!
    Во-первых, какой виджет за что отвечает? Что такое inputBox? В чём его роль? В идеале одним предложением.

    Во-вторых, не следует лазать в кишки класса без нужды. Вместо этого имеет смысл добавить этому классу удобный метод, который сделает всё что нужно, с пониманием внутреннего устройства класса. Тогда те, кто класс использует, не должны будут знать его внутреннее устройство - только его видимый интерфейс (методы, свойства). Это называется инкапсуляция.
    Ответ написан
    2 комментария
  • Как менять вид рабочего стола, панель задач через питон?

    Vindicar
    @Vindicar
    RTFM!
    Разве что менять параметры в реестре через модуль winreg. Гуглинг указывает на ключ
    HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StuckRects3
    , но там еще нужно разбираться со структурой данных.
    Ответ написан