Sly32

Рейтинг
372
Регистрация
29.03.2012
ardova #:
И з/п огромные. У меня старший сын закончил Бауманку

Огромные эта скока? Здравствуй, мама Алаева, приятно познакомиться)))

И вот мне интересно, как инженеры Бурана помогают бороться с санкциями? 
Сколько полетов в космос совершил этот буран? А сколько Шатл?

 Это что, в Виндах такие проблемы? На маке как расположил мониторы в настройках - так и мышка бегает. Мне, кстати, очень зашла фишка, когда можно одной мышью и выносной клавиатурой работать сразу на двук компах. Иногда приходится, очень спасает от лишних девайсов.
Сегодня наконец-то дошли руки до Клауд и Copilot. Пописал код с помощью Cloud 3.5 Sonnet. Что сказать - Большой разницы с gpt-4o не вижу, примерно тоже самое, неплохо, но надо править.
А вот Copilot прям сходу облегчил написание кода. Неплохо понимает с чем работать, предлагает хорошие имена, сам код на уровне уверенного мидла.
Подключил его  в VSCode/Pycharm, в основном использовал его для code completions, но и с поиском ошибок он неплохо помогал.
estic #:
Теоретически может.

Каким образом? Вы посмотрели в код и увидели что там есть переадресация какая-то? В документации прочитали? Что за привычка гадать на кофейной гуще, вместо того, чтоб посмотреть, как работает? 
Нет там никакой тайны - залезьте в исходники и почитайте. Чай, не на ассемблере написано.

Dmitriy_2014 #:
И то там не то что www, не указан, там и домен не прописан, там переменная $host, откуда она его берет тоже не ясно, может с server_name, но там указаны два домена один без www другой типа как алиес с www. Фиг знает может это.

Ну слушай,  это час-другой покурить доку по nginx - там все ответы есть. и какие переменные используются и как настраивается и из каких частей состоит.

Artem189 #:

Нет. Предложение не изменится, спрос сократится. ЦБ не будет делать интервенции и продавать валюту, он просто до НГ не станет ее покупать.

Ну да, я не так выразился. Я имел ввиду, если уходит один покупатель, для остальных предложение валюты бужет больше. Это будет работать, если есть стабильно большое предложение от продавцов, тогда курс  будет падать? 

Artem189 #:

Просто Центробанк объявил, что с 28.11.2024 до конца года не будет покупать валюту. Это немного снизит дефици, но не полностью. И это временно.

Правильно ли я понимаю, что это увеличит предложение валюты на торгах, но по факту начнется вымывание( в лучшем случае не пополнение) валютного резерва ЦБ?

Dmitriy_2014 #:
Ну даже и так, настройки в движке(которые по факту в базе данных), но работает то интерпретатор php, а не веб-сервер, так сам по себе и WordPress не может.

Интерпретатор тут не причем. Если в настройках у тебя адрес с 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 а в базовом. То есть панель управления хостингом может это делать незаметно для тебя.

plab #:
Но зачем?

Если ты до сих пор не понял, то для

plab #:
экономя свое время и ресурсы,

Но вот этот перл обьясняет все:

plab #:
На вскидку без вникания в то

Это догма твоего подхода ко всему. И очередная просьба - не засорять тему. Она для тех, кому интересно разобраться а не плюнуть. Продолжай мыть пол грязной тряпкой ручками. 

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

Для примера возьму уже приведенный выше алгоритм "Цепи Маркова" Он был описан, если не ошибаюсь в ... 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 и механизмы работы со своими данными.

Всего: 7407