• Как организовать быстрый поиск по 78 млн строк?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    • Отразить файл в память memory-mapped-file System.IO.MemoryMappedFiles, это примерно 30x быстрее чем просто читать с диска
    • Сделать и постоянно обновлять поисковый индекс ключ_поиска->file_offset, прямое решение - ассоциативный массив System.Collection.Generics Dictionary
    Ответ написан
    Комментировать
  • На своем сайте надо организовать возможность онлайн трансляции через iр камеры. Как это сделать?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    На сайте понадобятся nginx для раздачи и ffmpeg для конвертирования видеопотоков (или готовое платное решение).
    Если зрительская аудитория большая то вы вряд ли справитесь силами своего сервера. Нужно будет использовать вещательную платформу вроде youtube или steam.
    Гуглить video streaming.
    Компетенций медика тут не хватит. Задача довольно сложная. Бесплатно вряд ли получится.
    Ответ написан
    Комментировать
  • Как сделать вывод данных после ввода с использованием рекурсии(без циклов и goto)?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    Можно без циклов и без аллокации слайса. Только печатать будет задом наперёд))
    func process_test_case(test_cases int, reader *bufio.Reader) {
    	fmt.Println("int number")
    	_, _ = reader.ReadString('\n')
    	fmt.Println("integers")
    	input, _ := reader.ReadString('\n')
    	input = strings.TrimRight(input, "\r\n")
    	arr := strings.Split(input, " ")
    	test_cases -= 1
    
    	if test_cases != 0 {
    		process_test_case(test_cases, reader)
    	}
    	fmt.Println("answer =", process_array(arr, 0))
    }
    Ответ написан
    Комментировать
  • Как расставить точки над i, по вопросу использованию Bash и Python для DevOps?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    Трудно сказать, ещё ведь точно не решили что такое DevOps)) Docker и Kubernetes вообще на Go написаны.
    Моё оборудование, домашнее и хобби, работает на *nix. Администрирую я его понятно сам. Вполне обхожусь shell. И это must have, без знания sh просто не обойтись, в том числе при виртуализации и в облаках. Python не понадобился ни разу. Наверное сложные задачи администрирования лучше решаются на Python, но видимо я с такими не сталкивался...
    Ответ написан
    Комментировать
  • Является ли передача переменной по указателю затратной операцией?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    В Go все параметры передаются функции копированием. То есть функция не может изменить оригинал аргумента, а работает с копией. Если вы хотите его в функции изменять у вас есть два варианта
    • передавать ссылкой, тогда функция может поменять значение по переданному адресу
    • или возвращать значением

    func myFunc(arg type) type
    ...
    bigArg = myFunc(bigArg)

    В первом случае вы увеличиваете нагрузку на коллектор по подсчёту ссылок.
    Во втором случае делаете аллокацию и два копирования, что тоже затратно, особенно если аргумент занимает много места в памяти.
    Ответ написан
  • Почему не могу закинуть открытый ключ SSH из Линукса в Windows?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    1. Нужно в %programdata%\ssh\sshd_configпрописать
    Match User YOU
                 AuthorizedKeysFile C:/Users/YOU/.ssh/authorized_keys

    2. ssh-copy-id не будет работать с windows. Попробуйте
    cat ~/.ssh/id_rsa.pub | ssh USER@WINDOWS 'mkdir -p ~/.ssh && type con >> C:/Users/YOU/.ssh/authorized_keys'

    если не получается пробуйте scp
    scp ~/.ssh/id_rsa.pub WINDOWS_IP:C:/Users/YOU/.ssh/authorized_keys

    если не получается переносите флешкой.
    Ответ написан
  • Многократное использование len() или кеширование в переменную?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    А зачем вообще может понадобиться такая конструкция когда есть встроенный оператор
    for i:= range data {}
    компактно и идиоматично
    Ответ написан
    Комментировать
  • Как использовать импортированный пакет без дублирования импорта?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    Так задумано. Импортированный пакет виден только в файле в который импортирован. Это не баг, а фича)) Это документировано.
    Ответ написан
    3 комментария
  • Можно ли установить Linux на разные диски?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    Вы можете замонтировать диск в /home в конф файле /etc/fstab. mount будет делаться при запуске системы. Что нибудь вроде
    /dev/sdb1    /home/yourname    ext4    defaults    0    1
    Ответ написан
    Комментировать
  • Go get - connection refused, какие порты открывать?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    Go get под капотом использует git.
    git в качестве транспорта умеет использовать:
    • http - 80
    • https - 443
    • собственный протокол git - 9418
    • ssh - по умолчанию 22, но часто для безопасности меняют на кастомный(например 2222)

    Для связи протоколами git и ssh вы ещё должны иметь пару rsa ключей -- приватный у себя и публичный на git сервере.
    Ответ написан
    Комментировать
  • Вычислить сумму ряда с заданной точностью?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    Ряд, понятное дело, убывающий, и быстро)) Можно считать что точность достигнута, когда член ряда стал < eps. Как нибудь так:
    import math
    
    Sum = 0
    eps = 1e-4
    i = 1
    a = 1
    while a > eps:
        a = 10 ** i / math.factorial(i)
        Sum += a
        i += 1
    print(Sum)
    Ответ написан
  • Как передавать большие файлы между микросервисами?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    Самый быстрый способ передачи между nix системами командой nc. Можно её использовать вместо scp.
    Если профиль процессинга таков что микросервис часто использует одни и те же тяжёлые файлы, то можно держать на машине с сервисом локальную копию такого часто используемого файла. Синхронизировать с хранилищем командой rsync. При этом будут передаваться только сделанные изменения, трафик существенно сократится, работать будет быстрее.
    Ну и первым приходит в голову очевидный вопрос -- а почему не запускать обработки на машине хранилища, что бы тяжёлые файлы не гонять?
    Ответ написан
  • Почему цапы в китайском исполнении не звучат?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    Разница между ними - космос.
    Да, разве? ES9038Q2M это мобильный вариант чипа ES9038 который с успехом устанавливается в дорогие брендовые модели DAC. Мобильный вариант конечно урезан но не чересчур. Качество аналогизирования от обвески конечно зависит, но опять не черезчур, да и поменяли вы конденсаторы. Я бы сказал, что гораздо больщую разницу даёт наушниковый усилитель, его качество можно оценить/услышать объективно, в слепом тесте. Тонкие недостатки ЦАПа, мне кажется, можно уловить только на очень хороших bitperfect записях в очень приличном(в целом) аудиотракте очень хорошими наушниками и музыкальными ушами. Не может быть, что это у вас субъективное? Звук ведь вообще очень субъективное...
    P.S. Читал недавно, что самый честный ЦАП это RC фильтр из двух деталей просто сгладить высокочастотный цифровой сигнал)))
    Ответ написан
  • Как работать с модулем vim-orgmode?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    Точного ответа дать не могу и вряд ли кто нибудь станет отвечать. Потому что плагин не очень популярен и давно UNMAINTAINED! Всё же orgmode -- это для emacs. На vim вы постоянно будете с ним ощущать недоделанность. Самый популярный и хорошо проработанный organiser для vim -- vimwiki https://github.com/vimwiki/vimwiki
    Ответ написан
    Комментировать
  • Как выполнить go run main.go при рестарте ubuntu?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    "Чтобы сервер запускался сразу при включении системы" вам не нужно выполнять go run main.go. go run -- это тестовые компиляция и запуск при эскизировании. Вам нужно сделать нормальный бинарник вашего сервера go build -o myserver main.go или go install. Полученный бинарник при включении системы можно запускать стандартными средствами -- юнитом systemd, записью cron или, самое простое, поместив команду в profile
    myserver &
    Ответ написан
    1 комментарий
  • Можно ли как то добиться включения/стопа/рестарта golang сервера через консоль?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    Не совсем понятен вопрос. А чем вам собственно не нравится Ctr+c Shutdown из доки? Если вы хотите, что бы сервер не блокировал консоль просто так его и запустите
    $ myserver &
    при таком применении вы можете
    • для тушения отвести отдельный endpoint в rest api. То есть поставить тушащий Handler на domain.com/admin/shutdown
    • или предусмотреть вызов с флагом myserver --quit который будет связываться с уже запущенным инстансом через net/rpc или unix pipe или unix socket или тот же http и вызывать процедуру тушения
    • или прописать юниты systemd обычным порядком
    Ответ написан
    1 комментарий
  • Самый продуктивный сетап с Macbook M1?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    Владелец 15" прошки. Отлично сбалансированный ноут и органолептически приятный, может лучше и не видел. Внешнего монитора для комфортной работы мне вполне достаточно. И ещё не так то просто найти внешний монитор большей диагонали и не уступающий по качеству, что бы глаза не резало. Клавиатура, по мне, не уступает дешёвым полноразмерным. Реверс трекпада делается одной настройкой, забыл как называется, что то там inverse. И вы никакой мышью не получите комплекс удобств(многопальцевые свайпы) предоставляемый трекпадом при управлении макбуком.
    В качестве стационарной машины использую сборку на платформе Lga2011 с двумя камнями Xeon и серверной ECC памятью , два монитора Dell серии U, видюха Nvidia Quadro(Quadro доступней чем ST, потому что на них не майнят), в ящике LIAN LI, полноразмерную клавиатуру с механическими(щёлкающими) кнопками, игровую мышь на проводочке (мне подошла SteelSeries). Всё куплено на вторичке. По цене сборка обошлась дешевле машинки из Купертино, по производительности обходит на корпус))
    Резюмируя, у вас отличный ноут который при необходимости и возможности можно подключить к хорошему внешнему монитору. Идею сделать из него стационарную машину считаю не плодотворной.
    Ответ написан
    9 комментариев
  • Почему большой/объемный pull request это плохо (или хорошо)?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    не поддаются пониманию
    кажется это главное требование к PR -- что бы поддавался пониманию.
    А по трудозатратам, разве вам есть разница ревьювить один большой или 10 маленьких? То есть, может быть, неудобства обусловлены просто неравномерностью вашей загрузки. Месяц ждёте, потом надо отревьювить вчера... Тогда за это и топить -- за равномерное распределение нагрузки, сбалансированные бизнес-процессы, эффективное использование ресурсов бла-бла-бла.
    Ответ написан
    Комментировать
  • А как выглядит настоящее, большое, корпоративное "Энтерпрайз" веб-приложение?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    как выглядит настоящее, большое, корпоративное «Энтерпрайз» веб-приложение?

    Оно тяжёлое, глючное, подтягивает с CDN мириады зависимостей, постоянно куда то асинхронно стучится и всё мерцает как рождественская ёлка. В нём есть плавающая со скроллом большая кнопка "Купить сейчас". Ещё обязательно есть кнопка "Наши ценности", но она может и не плавать.
    для фронта какой сложности нужны фреймворки вроде ангуляра?

    Для сложности > 50 разработчиков
    Ответ написан
  • Влияет ли IP на доставляемость почты?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    Не знаю, как работают Spark или Canary, никогда не пользовался, а вот протоколом SMTP пользовался.
    • gmail.com очень неохотно доставляет письма от частных smtp серверов даже (с настроенным DKIM, SPF, и т.п.) , только от авторитетных и wellknown. Поэтому после плясок я отказался от идеи поднимать свой smtp сервер.
    • gmail.com вообще гораздо охотней и надёжней доставляет через web интерфейс чем от smtp клиента. Для smtp клиентов есть тонкости настройки. Адреса, порты и SSl/TLS требования периодически меняются.
    • Конечно smtp сервер знает IP адрес клиента который к нему обращается. Это первая после рукопожатия smtp команда в обмене -- `EHLO 100.500.000.000` И если у сервера есть основания считать адрес ненадёжным, вполне может на этом и прекратить общение.
      Всему этому есть здравое объяснение -- smtp древний, слабо защищённый протокол, разработанный в старые времена когда интернет был дружелюбным. Сегодня для защиты от атак и злоупотреблений smtp серверы не имея гарантий протокола вводят искуственные ограничения.
    Ответ написан
    Комментировать