Ычан: [d | au / b / bro / hr / l / m / mi / mu / o / r / s / sci / tran / tu / tv / vg / x | a / aa / c / fi / jp / rm / tan / to / vn / vo]
[Назад] [Вся нить] [Первые 100 сообщений] [Последние 50 сообщений]
Ответ в нить [Последние 50 сообщений]
Имя
Animapcha image [@] [?]
Тема   ( ответ в 25965)
Сообщение flower
Файл 
Пароль  (для удаления файлов и сообщений)
Параметры   
  • Прежде чем постить, ознакомьтесь с правилами.
  • Поддерживаются файлы типов 7Z, BZ, BZ2, GIF, GZ, JPG, MO, MP3, MP4, OGG, OGV, PDF, PNG, PSD, RAR, SVG, SWF, TXT, WEBM, WEBP, XCF, ZIP размером до 5000 кБ.
  • Ныне 3674 unique user posts. Посмотреть каталог
  • Предельное количество бампов нити: 500
junior_developer_nene.png - (648.30KB, 720×720)
25965
No. 25965  
Здесь можно получить помощь и консультацию по любому языку программирования, в любой сфере разработки. Не важно, программируете ли вы собственного робота, пишете серверную приблуду, интегрируете чужие API, ковыряете игру, или пытаетесь сделать сайт на Wordpress - если аноним что-то об этом знает, он обязательно поможет.

Пополняемая база знаний: http://pastebin.com/AGhLZppH

Не знаете, какой язык и библиотеки взять для вашей задачи? Вам сюда.
Не знаете, где клиент, а где сервер? Вам сюда.
Не понимаете, что такое ООП? Вам сюда.
Написали код, и не понимаете, почему не работает? Вам сюда.
Обнаружили кусок кода, и не понимаете, как оно вообще могло работать? Вам тоже сюда.
Не знаете, как подступиться к проблеме? Вам обязательно сюда.

Другие тематические нити (иногда обновляется): https://pastebin.com/psy43ibG

Примеры кода лучше выкладывать в виде ссылок на http://pastebin.com или http://ideone.com
Фронтендные вещи лучше выкладывать на http://jsfiddle.net

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

Чтобы не сбивать новичков с толку, а также не разбавлять полезную информацию мусором, беспредметные споры типа "какой язык / парадигма / библиотека / етц лучше" здесь запрещены. Для подобных вещей теперь есть отдельная диспутов нить >>/dev/21353

Если здесь поселится достаточное количество программистов на одном языке / одной сферы, можно будет их выделить в отдельную нить, а в этой оставить на неё ссылку.
По мере поступления вопросов можно составлять FAQ и базу знаний.

Архив нитей:
http://410chan.org/dev/arch/res/14160.html
http://410chan.org/dev/arch/res/15681.html
http://410chan.org/dev/arch/res/17424.html
http://410chan.org/dev/arch/res/19666.html
http://410chan.org/dev/arch/res/21641.html
http://410chan.org/dev/arch/res/23830.html

Прошлая нить пока тонет тут: >>/dev/23830
162 сообщений пропущено. Показаны 50 последних сообщений
No. 26475  
>>26473
Если размер массива увеличится, то только копировать. Если ты уверен, что места хватит, то можешь пикрелейтед. Это называется placement new.
No. 26476  
Вот что на эти вопросы отвечает Страуструп: https://www.stroustrup.com/bs_faq2.html#realloc
No. 26480  
>>26464
Тратить время так по полной! Лучше тогда сделать два прохода по докам: первый - ознакомительный, второй - практический.
No. 26487  
>>26480
Это круто только если ознакомление не задерживается на миллионы лет.
No. 26507  
Всем привет! Решил вкатиться в бэкенд разработку на ноде, ибо работаю девопсом, а нихуя кроме баша и базы питона не знаю, подскажите пожалуйста, с чего лучше начинать? Писал программы последний раз лет 6 назад, на C# и ABC.Pascal лол, писал всякую прикладнуху, решал задачи по оптике или матмоделированию.
No. 26508  
>>26507
>Подскажите пожалуйста, с чего лучше начинать бэкенд разработку на Node.js
Тут бы знать, насколько ты уже продвинулся.
Если совсем еще не брался, то учитывая что последний раз программы ты писал 6 лет назад, начать предлагаю с установки всей оснастки:
https://nodejs.dev/learn/how-to-install-nodejs

И затем пройти быстротуториал:
https://nodejs.org/en/docs/guides/getting-started-guide/
Очень маленький туториал, а в конце уже рабочий сервер!

Потом стоит разобраться с npm, node package manager, считай внутренняя утилита для установки JS-библиотек в твой проект, как pip в Питоне:
https://nodejs.dev/learn/an-introduction-to-the-npm-package-manager
По умолчанию npm тянет библиотеки отсюда:
https://www.npmjs.com/
Они тут есть на все случаи жизни.
Попробуй подключить что-то к своему сервачку.
Если ничего в голову не приходит, научи его отдавать и принимать файлы в CSV:
https://www.npmjs.com/package/csv

Тебе естественно понадобится эти данные где-то хранить, т.е. нужна будет работа с базой данных.
Можно пойти по пути NoSQL базы, например вкатившись в Mongo DB: https://www.npmjs.com/package/mongodb
Или пойти традиционным путем и пользуватся SQL-базами, например MySQL: https://www.npmjs.com/package/mysql
Возможно, тебе захочется повозиться с ORM, но мне кажется это в начале пути будет слишком муторно

Путем этих нехитрых манипуляций с данными ты научишься добавлять эндпоинты, принимать на них данные, складывать данные в базу, доставать их из базы, и отдавать назад на эндпоинт. А это считай и есть 99% суть бэкенда. Разве что работы с очередями, стриминга данных, кеширования, авторизации, и контроля доступа не хватает

После этого надо решить, что же собственно ты хочешь написать чтобы руку набить, и дергать из гайдов вещи предметно для себя:
https://nodejs.org/en/docs/guides/
https://nodejs.dev/learn
https://nodejs.org/api/

Это если вот так совсем базово.
Уточняй, если что-то конкретнее интересует.

>нихуя кроме баша и базы питона не знаю
А почему не посмотреть в сторону бэкенд разработки на Питоне?
No. 26510  
1622237188421.png - (396.39KB, 712×712)
26510
>>26508
>советовать носкуль в наше время
>>>советовать Мускуль в наше время
No. 26511  
>>26510
Сразу PostgreSQL тоже не хотелось советовать, мне кажется с ней больше мороки начинающему. А перейти можно всегда.

>>26507
>>26508
Впрочем, вот клиент и для нее тоже:
https://www.npmjs.com/package/postgres
No. 26513  
>>26508
>Тут бы знать, насколько ты уже продвинулся.
У нас на галере 95% проектов на ноде, обычно на несте с тайпормом (постгря и редис ещё, на одном проекте есть сцилла), но есть приколы с graphql и аполло. Я например могу спокойно установить какой-нибудь пакет и инициализировать его внутри кода, проверить как работает вариация переменных (на бэке через joi, фронт вообще не трогал), но вот ума чтобы запиздячить нормальное логирование и сделать так чтобы APM агент NewRelic отправлял логи из приложения в контейнере - пока не могу.

Конечная цель - понимать как и что работает в любом бэковом приложении, уметь дебажить основные проблемы с производительностью и писать нагрузочные тесты, такие дела.
No. 26514  
>>26513
>вариация переменных
Конечно же валидация. простите за сумбурный стиль
No. 26515  
>>26513
>могу спокойно установить какой-нибудь пакет и инициализировать его внутри кода
Отлично, значит с оснасткой уже справляешься.

>сделать так чтобы APM агент NewRelic отправлял логи из приложения в контейнере
Судя по этой документации все должно быть достаточно прямолинейно с этим:
https://docs.newrelic.com/docs/apm/agents/nodejs-agent/installation-configuration/install-nodejs-agent-docker
https://docs.newrelic.com/docs/apm/agents/nodejs-agent/installation-configuration/nodejs-agent-configuration
Или оно у тебя не может из контейнера достучаться в сеть?

>запиздячить нормальное логирование
Тут надо знать, каким ты представляешь себе нормальное логгирование.
Просто чтобы приложение твое светило метриками и логами на дашборде NewRelic?

>понимать как и что работает в любом бэковом приложении, уметь дебажить основные проблемы с производительностью и писать нагрузочные тесты
Принимая все сказанное во внимание, первое приложение на Node кажется очевидным, взять пример сервера выше, снабдить реликовским агентом, добавить эндпоинтов, и сделать так, чтобы агент репортил не только CPU, MEM и диск, но и количество запросов в секунду, запросы на конкретный эндпоинт, время обработки запросов на разных этапах, логи событий, результаты обработки запросов, и все остальное что ты хотел бы видеть. Потом можно начать искусственно добавлять в приложение боттлнеки и ошибки с целью увидеть их на дашборде с помощью данных от агента. Это будет полезно, чтобы научиться определять нужную гранулярность этих данных для других приложений которые ты захочешь мониторить и нагружать.

Ты уже делал что-то такое в качестве упражнения?
No. 26516  
>>26515
>Или оно у тебя не может из контейнера достучаться в сеть?
В стандартной установке вне контейнера APM агент работает в связке с инфраструктурным агентом, пересылая логи в него, в случае с использованием контейнера этого не происходит, можно конечно отдельным контейнером рядом поднимать ещё инфраструктурный агент, но хочется без оверхеда такого обойтись, вот линк где раскрываются некоторые вопросы логирования
https://docs.newrelic.com/docs/logs/logs-context/configure-logs-context-nodejs/

>Просто чтобы приложение твое светило метриками и логами на дашборде NewRelic?
Самое главное - это генерация событий по ошибкам в логах и ведение их статистики, так же я использую интеграцию с PagerDuty для доставки сообщений о критичных проблемах, получается бесплатно и очень круто.

>Ты уже делал что-то такое в качестве упражнения?
https://www.udemy.com/course/nodejs-start/ Начал с этого курса, но пока не было времени уйти дальше первого занятия. За советы большое спасибо, очень круто! Жму руку, целую в попу.
No. 26519  
>>26516
Заходи, если что.
No. 26521  
Все гайды в интернете напоминают инструкцию Как нарисовать сову.
No. 26527  
Привет, Стив.
У меня вопрос по алгоритмам.
Дано: набор точек с целочисленными координатами и радиус круга, тоже целый. Надо найти координаты центра круга, покрывающего максимальное количество точек.
Я пытался искать, нашел задачу Гаусса и задачу частичного покрытия круга, но ничего не понял. Есть у тебя на примете что-нибудь понятное по этой теме?
No. 26528  
В общем, задача такая:
Есть 500гб фотографий, в основном jpeg, есть 65-70гб .tiff (600мб макс) и равки (35мб макс) на компьютере (Fedora 35).
Есть сервер на линупсе (Fedora 36), где есть 1.2гб свободного места (ssd) и 3гб RAM, два ядра (12th gen intel), подключён и замонтирован 1tb hdd.
Я пытаюсь скопировать 30 фотографий с клиента на сервер (оба в локальной сети), но скопировалось файлов 20, потом... закончилось место на ssd на сервере, а на hdd сервера были 30 файлов, только 20 имели корректный размер, а остальные 10 - 0мб.
Мне, эээ, как копировать, имея сейчас 3.2гб места на ссд? Пользовался sftp, надо скопировать желательно всё без ошибок.
No. 26530  
>>26527
А какой размер входных данных? Я так сходу об этой задаче сказать не могу, но по входным данным можно прикинуть требуемую сложность.
No. 26532  
>>26530
Самый большой файл - 600мб (.tiff). Папка весит 550гб, в ней по папкам с 2016 по 2022 года разложены по месяцам фотографии.
No. 26533  
>>26532
Бака, я >>26527 отвечал!
No. 26534  
>>26533
Да, бака, да ещё и сильно пожёванная, ты прав. Сорян.
No. 26535  
>>26528
>>26532

>надо скопировать желательно всё без ошибок
Копируй по с помощью Rsync по SSH, сразу в тот раздел что на HDD. Таким образом даже если передача прервется, можно будет дозалить именно недостающие фрагменты файлов и в целом быть уверенным в конце, что скопировалось без ошибок, даже если не за один раз.

Инфа по теме:
https://www.digitalocean.com/community/tutorials/how-to-use-rsync-to-sync-local-and-remote-directories
No. 26536  
durr.jpg - (52.45KB, 640×480)
26536
Heroku кинуло своих юзеров: больше никаких бесплатных сервисов. Платите бабки за пользование или идите нах. Мне на почту только что пришло.
No. 26537  
>>26536
Так из РФ и не заплатишь вроде?
No. 26538  
>>26537
В смысле, после СВО.
No. 26540  
>>26538
Х.з., она у меня года два или три уже с бесплатной машиной — тут в архиве где-то есть обсуждение, на чём хостить жабо-ентырпрайз. Теперь халяву обещают прикрыть в ноябре. Видимо слишком много стало хитрожопых, кто базу подгружал со стороннего файлообменника.
No. 26588  
Привет, Стив.
Продолжение вопроса >>26527, вдруг кто все-таки поможет.
Мои наработки вот тут - https://github.com/sltrs1/angular_sweep
На Стековерфлоу мне подсказали решение https://ru.stackoverflow.com/questions/1444499/ и я попытался его реализовать.
Сначала я реализовал наивный алгоритм, то есть, просто посчитал расстояние от каждой точки плоскости по каждой точки входных данных и посмотрел, какие точки удовлетворяют условиям.
Потом я попытался реализовать angular sweep алгоритм, описанный вот тут - https://www.geeksforgeeks.org/angular-sweep-maximum-points-can-enclosed-circle-given-radius/
Я его немного модифицировал - исходный алгоритм исполнялся только для каждой точки входных данных, я же сделал так, чтобы он исполнялся для всех точек плоскости.
И тут появилась проблема. Наивный и угловой алгоритмы дали разные результаты. Я не могу понять, в чем проблема. То ли я где-то ошибся в реализации, то ли угловой алгоритм делает не то, что я думаю.
Помоги, Стив, пожалуйста, это важно.
No. 26589  
>>26588
Я правильно понимаю, что до модификации углового алгоритма, результат совпадал с результатом наивного алгоритма?
No. 26590  
>>26589
Нет. Наивный алгоритм нашем максимум не точке, не входящей в множество входных данных. До модификации угловой алгоритм в принципе не мог найти эту точку.
No. 26591  
>>26590
>Наивный алгоритм нашем максимум на точке, не входящей в множество входных данных
>Посчитал расстояние от каждой точки плоскости до каждой точки входных данных и посмотрел, какие точки удовлетворяют условиям.

Извини, если трачу твое время зря, но вроде же наивный алгоритм работает попарно по точкам из входных данных, а не по всей плоскости. По крайней мере твоя статья в GeeksForGeeks дает такую информацию:
>Naive Algorithm
>For an arbitrary pair of points in the given set (say A and B), construct the circles with radius ‘R’ that touches both the points. There are maximum 2 such possible circles.
Т.е. ты строишь две окружности радиуса R, зная координаты хорды.
>For each of the constructed circle, check for each point in the set if it lies inside the circle or not.
>The circle with maximum number of points enclosed is returned.
Потом считаешь сколько точек попадает в каждую такую окружность, и возвращаешь ту, где точек больше. Повторяешь это для каждой пары, в конце выбираешь самую вместительную окружность.

Может я тоже неправильно что-то понял, конечно.
No. 26592  
>>26591
> но вроде же наивный алгоритм работает попарно по точкам из входных данных
Посмотри, что я сделал в репозитории https://github.com/sltrs1/angular_sweep/blob/master/main.c строки 117-134.
На Гиксфоргикс наивным называют не очень-то и наивный и очевидный алгоритм. Я по крайней мере наивной называю свою реализацию, где просто считаются расстояния до точек.
No. 26593  
>>26592
>Посмотри, что я сделал в репозитории
Смотрю
1. Ты берешь точку плоскости. Принимаешь ее за центр окружности
2. Затем берешь точку из входных данных. Меряешь расстояние до нее из "центра"
3. Если расстояние меньше радиуса, считаешь что точка попала в окружность

Мелкая проблема: ты выпускаешь случай, когда точка будет лежать ровно на радиусе, надо dist <= radius

Вопрос:
А тебе надо, чтобы вся окружность помещалась в пространство от 0 до MAX_POINTS?
Потому что сейчас не помещается.
Например, если центр окружности у тебя в (0,0), то помещается заведомо только четверть окружности. Решение с таким центром может быть заведомо неверным?
No. 26594  
>>26593
> dist <= radius
Да, не заметил. Спасибо, исправлю.
> А тебе надо, чтобы вся окружность помещалась в пространство от 0 до MAX_POINTS?
Нет. Она может лежать где угодно.
No. 26595  
>>26594
Тогда других особых проблем в этом подходе не вижу, кроме того что он долгий.

Интересно, повлияет ли как-то фикс на совпадение результатов с угловым алгоритмом до / после модификации?
No. 26596  
>>26595
Результаты немного изменились, но все равно не совпали.
No. 26598  
>>26596
Вот сравниваю твой подход со стандартным угловым из туториала.
И действительно, на наборе из первых 10 пар координат при радиусе 10 результаты не совпадают таким образом:
>The maximum number of points (sweep) are: 9
>The maximum number of points (custom-naive) are: 7
Может так быть, что угловой подход может найти центр с большим количеством попаданий, просто потому что ему доступно больше координат (double), в то время как твоему подбору доступны только целые координаты (int)?
No. 26599  
>>26598
Количество координат везде одинаковое. И обоих подходах берутся центры окружностей с целыми координатами от 0 до 99 по оси X и от 0 до 99 по оси Y, всего 100*100 точек и потом для рассчетов все инты приводятся к даблам.
No. 26601  
>>26599
Я скорее о том что сам угловой алгоритм использует большее пространство координат когда заметание угла считает. Ты можешь выяснить, какие итоговые координаты центра окружности выдает угловой алгоритм, и сравнить с координатами центра от твоего собственного алгоритма?
No. 26602  
Вот например, если взять первые 10 точек из твоих данных
https://github.com/sltrs1/angular_sweep/blob/master/coords.txt

Если я все правильно сделал, получается что
>The maximum number of points (sweep) are: 9
>P: (0,23)
>Theta: -0.31756
Т.е. максимальная окружность проходит через точку P(0,23), но эта точка не является центром окружности (!), центр окружности отстоит от этой P на вектор длиной R пущенный под углом Theta. Надеюсь не напутал в определении лучшего Theta
Есть подозрение, что итоговая координата центра такой окружности не будет целочисленной.

При этом твой вариант алгоритма по определению может иметь только целочисленную координату центра окружности.
Интересно, что лучшим центром он считает ту же точку, вокруг которой поворачивает окружность угловой алгоритм:
>The maximum number of points (custom-naive) are: 7
>C: (0, 23)
No. 26637  
Дано: два целых числа. Потенциально неограниченного размера.
Задача: упаковать их в одно целое число. Обратимо.

Самый тупой способ, который сразу приходит в голову — записать в виде строки, и числом считать последовательность ее байт. Или еще как кодировать пробел между координатами через старшие разряды цифр в какой-нибудь N-ричной системе.
Но что-то мне подсказывает, что есть более вменяемые алгоритмы.
No. 26639  
>>26637
Пишем два числа рядом (сперва большее, затем меньшее), затем приписываем длину большего числа. При восстановлении отмерь с конца столько цифр, чтобы полученное десятичное (хотя в двоичной тоже сработает) число было не меньше половины количества оставшихся цифр. Если важно восстановить исходный порядок, то придется потратиться на еще один символ его обозначающий.
No. 26644  
>>26637
Переведи свои числа в систему счисления с основанием 2^31 (2^63), 32(64)-й бит старшего разряда каждого числа установи в единицу.
No. 26645  
>>26644
Круто!
No. 26652  
>>26637
Сделай их одинаковой длины путём добавления нулей слева, попеременно выписывай цифры, чётные из первого, нечёоные из второго.
No. 26655  
Наткнулся в lua вот на такую непонятную хрень:
local function foo(...)

    local str = 'text:'
    local txt = {...}
    for s=1, #txt do
        str = str .. ' ' .. tostring(txt[s])
    end
    print(str)
end

local function bar(a, b, c, d, e, f, g, h, i, j, k)
    foo(a, b, c, d, e, f, g, h, i, j, k)
end

local tt = nil
foo('foo test', 1, foo, 2, nil, 3, tt, 4, 'fin')
bar('bar test', 1, foo, 2, nil, 3, tt, 4, 'fin')
выводит
text: foo test 1 function: 0xb370c0 2 nil 3 nil 4 fin

text: bar test 1 function: 0xb370c0 2
T.e. если у нас nil передаётся в многоточие напрямую или из переменной, то оно нормально проходит. А вот если он берется из аргументов функции, то на этом всё обрывается.
Это что — баг в луа? Или я что-то не понимаю? Можно ли это как-то обойти?
No. 26657  
>>26655
…опытным путем установил, что такая фигня наблюдается, только если выражение оканчивается на аргументы функции, которые не были в нее переданы.
Т.е., если обрезать до foo(a, b, c, d, e, f, g, h, i) — то всё проходит, какие бы там нули внутри не были.
Если добавить foo(a, b, c, d, e, f, g, h, i, j, k, 'end') — тоже всё работает.
А вот foo(a, b, c, d, e, f, g, h, i, j) — обрывается на первом nil.
Такие дела…
No. 26659  
>>26657
Чтобы всё работало, в начало foo, после перевода многоточия в таблице, можно добавить:
repeat

    local sz = #txt
    table.insert(txt, '(nil)')
until(#txt == sz + 1)
Оно заткнет дырки в таблице, и #txt начнет считаться правильно. Правда если два нуля идут подряд, такой фокус не пройдет…
No. 26723  
20211031-DSCF7844-resize.jpg - (3.94MB, 2285×3428)
26723
Можно запостить материалы для вкатывания в C#, которые я за полгода собрал?

1. https://ulearn.me/ - хорошее повторение университетского курса. Ещё упоминает про хорошие практики в программировании.
2. https://metanit.com/ - говорят, есть неточности, но курс по ASP .NET там понятный.
3. https://docs.google.com/spreadsheets/d/1xRdCFNC4iffknGyiUCVYnKYdbkNFt2TUn-iFecOCELo/ - вопросы на собеседование. Примерные, конечно.
4. Есть очень хорошие материалы по Linux, в частности, канал на ютубе tutorialLinux (https://www.youtube.com/c/tutoriaLinux) и курсы CBT Nuggets от Shawn Powers. Я отсмотрел его курсы подготовки к LPIC-201 и, считаю, что понятно, интересно и не скучно (есть на рутрекере).

Если хочется кодить, то есть codewars и leetcode. Если хочется потренироваться в Linux, то можно поставить себе какой-нибудь популярный серверный (чтоб привыкнуть к командной строке) дистрибутив (в них особо не разбираюсь, но пользуюсь Fedora) и развернуть там в docker-контейнерах сервисы вроде Jellyfin (стрим медиафайлов), Kavita (читалка манги), Nextcloud или Seafile (файлохранилище). Умение работать с Linux, как я понимаю, является большим плюсом.
No. 26725  
>>26723
Конечно можно, спасибо! Добавим в общую базу знаний. Вопросы на собеседование надо будет отдельно на pastebin в перекинуть.
No. 26731  
>>26725
Оке, я попробую сделать удобоваримый документ (копию того, что по ссылке на гуглодоке) на пастебине и каком-нибудь текстовом файле и выложу тут.
No. 26732  
>>26731
Спасибо!
Удалить сообщение []
Пароль  
[Mod]