• Как вы относитесь к ответам-ссылкам?

    Zoominger
    @Zoominger
    System Integrator
    Можно и ссылками, но с комментарием, что по этой ссылке будет то-то и то-то.
    Не у всех есть время разбираться, что там по ссылке лежит, да иногда ссылки бывают не в тему.
    Ответ написан
    Комментировать
  • Какой алгоритм текстового калькулятора лучше?

    @dsadso
    Посмотрите на обратную польскую запись. Самое простое что может быть.
    https://habr.com/ru/post/100869/
    Ответ написан
    Комментировать
  • Как сменить версию Python с Anaconda Custom на default?

    prostranstvovremya
    @prostranstvovremya Автор вопроса
    Решил:
    Надо отредактировать переменную среды $PATH в Linux.
    В Linux (также UNIX) $PATH — это переменная среды, используемая для указания оболочке, где искать исполняемые файлы. Программы/скрипты, расположенные в каталоге $PATH, могут быть выполнены непосредственно в вашей оболочке без указания полного пути к ним.
    Можно посмотреть какие каталоги используются для поиска исполняемых файлов (каталоги перечислены через двоеточие):
    echo $PATH
    В моем случае оболочка Bash и мне пришлось отредактировать файл ~./.bashrc

    По шагам:
    1. Редактируем файл .bashrc в домашней директории
    gedit .bashrc
    2. В самом низу можно увидеть вот такие строки
    # added by Anaconda3 4.2.0 installer
    export PATH="/home/max/anaconda3/bin:$PATH"

    3. Закомментировать последнюю строку и добавить каталог со стандартным Python. Выглядит это вот так:
    # added by Anaconda3 4.2.0 installer
    #export PATH="/home/max/anaconda3/bin:$PATH"
    export PATH="/usr/bin:$PATH"

    4. Сохраняем файл и перезагружаем компьютер.
    Итог
    qrVrppRXRvWElgedfbDU8g.png
    Источник
    Ответ написан
    Комментировать
  • В чем хранить вектора (эмбендинги) для быстрого сравнения?

    sgjurano
    @sgjurano
    Разработчик
    Вот статья про методы приближенного поиска ближайших соседей:
    https://m.habr.com/ru/company/mailru/blog/338360/

    Если вкратце, то поиск по HNSW-индексу из 500к векторов будет укладываться в 5 миллисекунд. Библиотеку лучше взять faiss, она поприличнее написана, чем оригинальный nmslib. У обеих есть Python-биндинги.
    Ответ написан
    2 комментария
  • Опечатка в задаче python?

    @sv00 Автор вопроса
    РЕШИЛ!! Все таки использовал конструкцию список в словаре, получилось вот что:
    favorite_places = {
        'john'  : ['moscow', 'krasnoyarks'],
        'peter' : ['sweden', 'mayami'],
        'ivan'  : ['kaliningrad', 'everest']
    }
    
    for name, places in favorite_places.items():
        print("\n" + name.title() + "`s favorite places is: ")
        for place in places:
            print("\t" + place.title())
    Ответ написан
    6 комментариев
  • На каких технологиях разрабатывать чат?

    Привет

    Если хочешь сделать более-менее адекватный чатик, то тебе понадобится:

    react/vue на фронт
    symfony/django/RoR/Spring/Net Core для бекенда
    node.js для чат-посредника
    Go для сбора и обработки тяжелой статитической информации (типа сбор экшенов по юзерам в реальном времени), можно и на плюсах, но на ГО это сделать проще.
    Redis - для хранений хешей, сесий и прочей реал-тайм шняги
    MySQL/POSTGRES - для хранений юзеров и самих чатов
    Плюс придется выложить еще порядка 5к-10к долларов для подключения к разными 3rd-party дата-провайдерам, чтобы получить жирные опции типа региональных зависимостей и прочее.

    ___

    Если хочется просто сделать чатик, то условно хватит

    symfony/django/RoR/Spring/Net Core + Jquery
    Ответ написан
    Комментировать
  • Есть ли для питона IDE на подобии как Delphi?

    longclaps
    @longclaps
    Такой IDE нет.

    ps Ваш вопрос мне очень понравился, и я дам на него развёрнутый ответ. Многолетней давности рыночный успех Delphi был обусловлен нехитрым трюком: кривая обучения "программиста" в её начальной фазе была очень пологой, и одолеть её мог любой кретин. Эта лёгкость обеспечивалась именно визуальным редактором форм.
    У низкого порога вхождения, разумеется, была своя цена. Рынок наводнили говнокодеры, не отягощённые общей програмистской культурой, а содаваемые ими продукты были безнадёжно одноразовы. Код-лапша, в котором бизнес-логика упихивалась в контролы, был неподдерживаем.
    С тех пор прошли эпохи, новые поколения говнокодеров освоили концепцию MVC (вместе с паттернами, хех), но говнокодеры старой закваски всё еще не вымерли. И когда я увидел ваш вопрос, я с ностальгией вспомнил старые времена.
    Сейчас на рынке рулят IDE, поощряющие создание поддерживаемого, документированного кода. Жалобы на необходимость прописывания вручную по пол страницы кода только для создания GUI главного окна вызывают лишь снисходительную усмешку: что с него возьмёшь, он - кодер старой школы. А по аватарке не скажешь )
    Ответ написан
    12 комментариев
  • Кто подскажет примеры крутых вещей на Celery?

    alfss
    @alfss
    https://career.habr.com/alfss
    Sentry
    Ответ написан
    Комментировать
  • Как в Django модель сразу добавить много записей из файла?

    Prognosticator
    @Prognosticator
    TODO: Здесь будут ворованные умные мысли, типа мои
    По началу всё было нормально, но сегодня клиент задаёт вопрос

    Тут улыбнулся. Изменение ПО и есть "нормально".

    Есть ли возможность всё залить через автомат?

    Формулировка задачи тоже веселая.

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

    Да и сам вопрос веселый.

    Абстрагируюсь и отвечу безотносительно ЯП и веб-фреймворка (т.е не буду писать код за вас - в режиме эремотерия).

    Думаю с парсингом файла вы и так разберетесь, напишите воркер (выполняемый в отдельном процессе, "против зависонов") запускаемый по сабмиту формы загрузки файла. В воркере обойдете файл построчно, сохраните извлеченные данные через пакетную (batch) вставку в используемую базу данных (сегодня 2500, завтра вдруг мильоны.). И не суть txt, csv, xlsx, заказчику кстати можно предложить и то и это вместе. Ну и как-то уведомите менеджера, она ведь будет ждать окончания загрузки, переживать будет. А вдруг загружаемый файл содержит форматирование которое ломает процесс парсинга файла? Нужно отловить ошибку, сохранить внятный текст ошибки и показать ее менеджеру, ведь она должна знать что нужно исправить файл и попробовать снова его загрузить? Ведь мы люди, не звери.
    Ну и тесты написать надо бы, вы же хотите спать более глубоким сном сознавая, что при изменении кода эта добавленная фича продолжает работать?

    Вам нужно сделать механизм обновления записей? Тогда в загружаемом файле должны быть уникальные идентификаторы. Вы же будете как-то определять какой "color" из файла соответствует "color"у в БД.
    Или нужно записи пересоздавать? В зависимости от этого и пишите логику.
    Ну а UI сами продумайте, где ссылку добавить, где форму вывести.
    Ответ написан
    Комментировать
  • Книга по распределенным отказоустойчивым системам?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    "Чистая архитектура" не про распределенные отказоустойчивые системы. А вот "Высоконагруженные приложения" Клеппмана - в самую точку, очень хороший учебник, толковый и доходчивый.

    Про надёжность могу посоветовать два шикарных букваря:

    Крис Клирфилд и Андраш Тилчик - "Неуязвимость"
    Duy5BJHWwAEL3_D.jpg
    Майкл Нейгард - "Release it!"
    1770007.jpg?t=20180111160337
    Ответ написан
    4 комментария
  • Есть ли Стратегия борьбы со сбросом состояния RabbitMQ?

    @yarkin
    1) Разработчики RabbitMQ ко всем потерям данных на стороне самого RabbitMQ относятся критично, так что, если в какой-то момент будете уверены, что теряет данные именно он, то смело создавайте баг (с подробностями как повторить).
    2) Если админы не умеют настраивать стейтфул приложения в контейнерной среде или куча ручных операций, то это больше административная задача, чтобы научиться и, например, использовать шаблоны/чарты/т.п. для предотвращения сюрпризов. Но также RabbitMQ в контейнере нужно настраивать, чтобы не получать деградации и дампов.
    3) Со стороны самого RabbitMQ есть зеркалирование очередей (queue mirroring) для дублирования данных, что позволит внезапно терять ноды (но восстановление может обойтись высоким потреблением процессора).
    4) Также рекомендую логировать и идентифицировать каждое отправленное и полученное сообщение, чтобы оценивать проблему. Для большей достоверности можно включить логирование ещё и на уровне RabbitMQ (если позволяют ресурсы). На прошлой работе у нас был свой плагин для RabbitMQ, который получал копию всех полученных и отправленных сообщений, выгребал из них нужную метаинформацию и отправлял в Graylog.
    5) Ну и конечно нужно делать отправку и приём с подтверждением, но это, я думаю, Вы и без меня уже делаете.
    Ответ написан
    4 комментария
  • Есть ли Стратегия борьбы со сбросом состояния RabbitMQ?

    dkrylov
    @dkrylov
    а держать очередь в бд в каком либо виде если? И оттуда цеплять, перенаправлять на раббита. А по истечении проставлять статус. Экосистема небольшая, зато, я думаю, стабильно.
    Ответ написан
    4 комментария
  • Как правильно выполнить http.NewRequest с кириллицей?

    igorzakhar
    @igorzakhar
    1. Случай, когда в запросе кириллические символы:
    У автора был url вида:
    https://domain.name/data.json?searchtext=Запрос+На+Кириллице

    Строка запроса является частью url и по стандарту не может содержать не-ASCII символы (RFC 1738). Так как в url присутствут кириллические символы то url нужно кодировать (URL encoding), что и делает функция QueryEscape из пакета net/url.

    package main
    
    import (
    	"fmt"
    	"net/url"
    )
    
    func main() {
    	q := "Запрос+На+Кириллице"
    	u := "https://domain.name/data.json"
    	fmt.Println(u + "?searchtext=" + url.QueryEscape(q))
    }

    $ go run main.go 
    https://domain.name/data.json?searchtext=%D0%97%D0%B0%D0%BF%D1%80%D0%BE%D1%81%2B%D0%9D%D0%B0%2B%D0%9A%D0%B8%D1%80%D0%B8%D0%BB%D0%BB%D0%B8%D1%86%D0%B5

    https://ru.wikipedia.org/wiki/URL#Кодирование_URL

    2. Случай когда в url доменное имя на кириллице:

    go get golang.org/x/net/idna

    package main
    
    import (
    	"fmt"
    	"golang.org/x/net/idna"
    )
    var p *idna.Profile
    
    func main() {
    	p = idna.New()
    	fmt.Println(p.ToASCII("россия.рф"))
    }

    $ go run main.go 
    xn--h1alffa9f.xn--p1ai <nil>

    https://ru.wikipedia.org/wiki/IDN
    https://ru.wikipedia.org/wiki/Punycode
    Ответ написан
    Комментировать
  • Что здесь с математикой не так?

    @AVKor
    И. М. Виноградов. Основы теории чисел. стр. 8.
    Ответ написан
    Комментировать
  • Как подобрать 5 рандомных чисел если есть только срерднеарифметическое этих чисел?

    @imhuman
    Генерируете число из диапазона 60-100, потом высчитываете ему пару, с условием, что среднее арифметическое пары чисел было близко к целевому (ввести какой-то коэффициент отклонения X). Потом еще пару чисел по тому же принципу, и последнее число высчитываете как вам советовал Сергей Тихонов . На серии экспериментов подбираете X, чтоб числа казались случайными и в тоже время не было выбросов за предел 60-100 у последнего 5го числа. Как-то так можно попытаться.
    Ответ написан
    Комментировать
  • Как сделать единый аккаунт для своих сервисов?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Реализовать свой сервис авторизации. Называется CAS, работает примерно так:
    5bd748db6d572869658821.png
    Ответ написан
    6 комментариев
  • Разработчики, вы больше думаете, чем пишете, или наоборот?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Если Вы спрашиваете правильных разработчиков, то:
    1. Они строят и продумывают архитектуру
    2. Читают официальную документацию
    3. Оптимизируют стыки, логику, алгоритмы
    4. Они отвечают на Тостере

    Если про всех остальных, то:
    1. Они спрашивают на Тостере
    2. Пытаются найти исходники или статьи, похожие на их задачу
    3. Пытаются найти тех, кому перепродать проект.
    Ответ написан
    4 комментария