Огромные эта скока? Здравствуй, мама Алаева, приятно познакомиться)))
И вот мне интересно, как инженеры Бурана помогают бороться с санкциями? Сколько полетов в космос совершил этот буран? А сколько Шатл?
Каким образом? Вы посмотрели в код и увидели что там есть переадресация какая-то? В документации прочитали? Что за привычка гадать на кофейной гуще, вместо того, чтоб посмотреть, как работает? Нет там никакой тайны - залезьте в исходники и почитайте. Чай, не на ассемблере написано.
Ну слушай, это час-другой покурить доку по nginx - там все ответы есть. и какие переменные используются и как настраивается и из каких частей состоит.
Нет. Предложение не изменится, спрос сократится. ЦБ не будет делать интервенции и продавать валюту, он просто до НГ не станет ее покупать.
Ну да, я не так выразился. Я имел ввиду, если уходит один покупатель, для остальных предложение валюты бужет больше. Это будет работать, если есть стабильно большое предложение от продавцов, тогда курс будет падать?
Просто Центробанк объявил, что с 28.11.2024 до конца года не будет покупать валюту. Это немного снизит дефици, но не полностью. И это временно.
Правильно ли я понимаю, что это увеличит предложение валюты на торгах, но по факту начнется вымывание( в лучшем случае не пополнение) валютного резерва ЦБ?
Интерпретатор тут не причем. Если в настройках у тебя адрес с www, то вордпрес и будет ждать роут с таким адресом. Протокол http - это не магия, почитай как он работает. <www.site.com> ---> DNS -->Nginx(redirect) ---> wordpressты ввел адрес <site.com> в строке браузера. DNS ищет соответствующую запись и возвращает ip сайта.
А запись должна быть вида A --- example.com -- 1.2.3.4
Дальше уже нжинкс слушает 80 порт и если на него приходит запрос начинают работать его редиректы. то есть:
server { listen 80; server_name example.com; # Перенаправление с www на без www return 301 http://www.example.com$request_uri;}
Если в вордпрес у тебя адрес- www.example.com - то на него и придет запрос
Если ты делаешь запрос вида www.exapmle.com то DNS ищет CNAME запись, потому что по сути это обычный поддомен и переадресует ее на А запись, дальше все тоже самое.
Также переадресация может быт не в твоем nginx.conf а в базовом. То есть панель управления хостингом может это делать незаметно для тебя.
Если ты до сих пор не понял, то для
Но вот этот перл обьясняет все:
Это догма твоего подхода ко всему. И очередная просьба - не засорять тему. Она для тех, кому интересно разобраться а не плюнуть. Продолжай мыть пол грязной тряпкой ручками.
Чтобы немного развеять мракобесие, сгустившееся над этим топиком, проведу небольшой ликбез и на простом примере расскажу, как могут генерироваться слова в нейросетях.
Для примера возьму уже приведенный выше алгоритм "Цепи Маркова" Он был описан, если не ошибаюсь в ... 1906 году. Это информация для тех, кто рассказывает сказки о том, что знает, как улучшить нейросети))). Возможно, по ходу станет понятно, почему только сейчас это все получается реализовать.
Что бы вам не гуглить:
Це́пь Ма́ркова — последовательность случайных событий с конечным или счётным числом исходов, где вероятность наступления каждого события зависит только от состояния, достигнутого в предыдущем событии[1].
Еще проще - на основе имеющихся данных высчитывается вероятность появления следующего символа. Как это работает.Возьмем конечный набор данных:
words = ["apple", "banana", "orange", "grape", "melon", "kiwi", "peach", "ananas", "grapefruit", "pepper", "melon", "watermelon", "potatoes", "pineapple", "coconut"]
В нашем алгоритме мы будем строить вероятности на основе одного или двух символов, соответственно составляем словарь всех одно- и двухбуквенных сочетаний и количество появлений следующей буквы для них.На выходе имеем следующий словарь( использую питоновские термины, но думаю их несложно интерпретировать в любой известный вам язык)Код:
for word in words: for i in range(len(word)): key = word[max(0, i - 1):i + 1] # use two symb next_letter = word[i + 1] if i + 1 < len(word) else None if key not in transitions: transitions[key] = {} if next_letter: transitions[key][next_letter] = transitions[key].get(next_letter, 0) + 1
Результат:
{'a': {'n': 1, 'p': 1}, 'ac': {'h': 1}, 'an': {'a': 4, 'g': 1}, 'ap': {'e': 2, 'p': 2}, 'as': {}, 'at': {'e': 1, 'o': 1}, 'b': {'a': 1}, 'ba': {'n': 1}, 'c': {'o': 1}, 'ch': {}, 'co': {'c': 1, 'n': 1}, 'ea': {'c': 1, 'p': 1}, 'ef': {'r': 1}, 'el': {'o': 3}, 'ep': {'p': 1}, 'er': {'m': 1}, 'es': {}, 'fr': {'u': 1}, 'g': {'r': 2}, 'ge': {}, 'gr': {'a': 2}, 'in': {'e': 1}, 'it': {}, 'iw': {'i': 1}, 'k': {'i': 1}, 'ki': {'w': 1}, 'le': {}, 'lo': {'n': 3}, 'm': {'e': 2}, 'me': {'l': 3}, 'na': {'n': 2, 's': 1}, 'ne': {'a': 1}, 'ng': {'e': 1}, 'nu': {'t': 1}, 'o': {'r': 1}, 'oc': {'o': 1}, 'oe': {'s': 1}, 'on': {'u': 1}, 'or': {'a': 1}, 'ot': {'a': 1}, 'p': {'e': 2, 'i': 1, 'o': 1}, 'pe': {'a': 1, 'f': 1, 'p': 1, 'r': 1}, 'pi': {'n': 1}, 'pl': {'e': 2}, 'po': {'t': 1}, 'pp': {'e': 1, 'l': 2}, 'ra': {'n': 1, 'p': 2}, 'rm': {'e': 1}, 'ru': {'i': 1}, 'ta': {'t': 1}, 'te': {'r': 1}, 'to': {'e': 1}, 'ui': {'t': 1}, 'ut': {}, 'w': {'a': 1}, 'wa': {'t': 1}, 'wi': {}}
Обратите внимание, что для 15 базовых слов мы получили словарь из 57 элементов. Дальше поймете, почему я это отметил.Но это пока еще сырой список. Нам же нужно понимать вероятность появления следующей буквы, поэтому несложным путем высчитаем ее:
for letter, next_letters in transitions.items(): total = sum(next_letters.values()) for next_letter in next_letters: next_letters[next_letter] /= total
В результате наш псеводнейрон уже выглядит так:
{'a': {'n': 0.5, 'p': 0.5}, 'ac': {'h': 1.0}, 'an': {'a': 0.8, 'g': 0.2}, 'ap': {'e': 0.5, 'p': 0.5}, 'as': {}, 'at': {'e': 0.5, 'o': 0.5}, 'b': {'a': 1.0}, 'ba': {'n': 1.0}, 'c': {'o': 1.0}, 'ch': {}, 'co': {'c': 0.5, 'n': 0.5}, 'ea': {'c': 0.5, 'p': 0.5}, 'ef': {'r': 1.0}, 'el': {'o': 1.0}, 'ep': {'p': 1.0}, 'er': {'m': 1.0}, 'es': {}, 'fr': {'u': 1.0}, 'g': {'r': 1.0}, 'ge': {}, 'gr': {'a': 1.0}, 'in': {'e': 1.0}, 'it': {}, 'iw': {'i': 1.0}, 'k': {'i': 1.0}, 'ki': {'w': 1.0}, 'le': {}, 'lo': {'n': 1.0}, 'm': {'e': 1.0}, 'me': {'l': 1.0}, 'na': {'n': 0.6666666666666666, 's': 0.3333333333333333}, 'ne': {'a': 1.0}, 'ng': {'e': 1.0}, 'nu': {'t': 1.0}, 'o': {'r': 1.0}, 'oc': {'o': 1.0}, 'oe': {'s': 1.0}, 'on': {'u': 1.0}, 'or': {'a': 1.0}, 'ot': {'a': 1.0}, 'p': {'e': 0.5, 'i': 0.25, 'o': 0.25}, 'pe': {'a': 0.25, 'f': 0.25, 'p': 0.25, 'r': 0.25}, 'pi': {'n': 1.0}, 'pl': {'e': 1.0}, 'po': {'t': 1.0}, 'pp': {'e': 0.3333333333333333, 'l': 0.6666666666666666}, 'ra': {'n': 0.3333333333333333, 'p': 0.6666666666666666}, 'rm': {'e': 1.0}, 'ru': {'i': 1.0}, 'ta': {'t': 1.0}, 'te': {'r': 1.0}, 'to': {'e': 1.0}, 'ui': {'t': 1.0}, 'ut': {}, 'w': {'a': 1.0}, 'wa': {'t': 1.0}, 'wi': {}}
И собственно, уже все готово для генерации слова.
Как это происходит? Запускаем код и вводим первые 2 буквы, из которых мы хотим сгенерировать слово, например "pe" В словаре находим сочетания для него:
'pe': {'a': 0.25, 'f': 0.25, 'p': 0.25, 'r': 0.25},
Недалекий фрефоркер увидел в коде random, не удосужился почитать, что это за функция. А random.choice выбирает не случайную букву из последоваиельности, а на основе весов. В данном случае веса одинаковы, значит выбирается первая буква. Получаем "pea". Помним, что наш алгоритм использует 2 последних буквы. Значит ищем следующее сочетние для "ea":
'ea': {'c': 0.5, 'p': 0.5},
Получаем: "peac", продолжаем поиск для "ac":
'ac': {'h': 1.0},
Тут уже без вариантов. Получаем: "peach"Ищем для "ch":
'ch': {},
Вариантов нет, генерация закончена, полученное слово - персик) Можно еще добавить проверку на наличие слова в словаре исходном и останавливать генерацию при совпадении.Это простейший механизм генерции слов. Без дополнительного обучения системы, исправления ошибок и прочего. Просто? Да! А теперь подумаем - а не так ли работает наш мозг? Точно так же мы обрабатываем подходящие варианты и получаем результат.Почему я в начале привел длины исходного списка и результирующего словаря? Это почему алгоритмы, известные в начале прошлого века, получилось реализовать только сейчас. Я использую только 15 исходных слов и для генерации беру последних 2 буквы. А попробуйте создать словарь, например из 100 слов и анализировать 4 буквы? Надеюсь все знают что такое декартово множество и смогут посчитать результирующий словарь. А это самый простой и понятный механизм. Тензор использует более сложные алгоритмы для исключения ошибок, например.
Поэтому все это полезно в образовательных целях. На практике нужно учиться использовать LLMs и механизмы работы со своими данными.