myDC.ru

Здравствуйте, гость ( Вход | Регистрация )

 
История благодарностей участнику Setuper. Спасибо сказали: 1708
Дата поста: В теме: За сообщение: Спасибо сказали:
27.6.2013, 19:48 Вопросы Разработчикам Скриптов
вопросы по скриптам (мелкие вопросы)
lfs в помощь http://mydc.ru/topic1970.html
MIKHAIL
30.3.2013, 15:36 Способы Повышения Производительности
методы оптимизации lua кода
Ну да, что в Lua идет копирование всей строки при конкатенации, что в коде - тоже копирование всей строки.
Действительно, в Lua кроме копирования при каждом создании строки ещё и рассчитывается её хеш код.

Другое дело что в хабе лишнее копирование строк можно было бы исключить, что, однако, PPK не делает big_smile.gif
MIKHAIL
24.3.2013, 21:10 Способы Повышения Производительности
методы оптимизации lua кода
проблема не в символе, а в лишнем копировании данных

не смотрел реализацию функции UserSendCharDelayed, но возможно стоило написать так:

Код
UserSendCharDelayed(u, sData, szLen);
if(sData[szLen-1] != '|') {
  UserSendCharDelayed(u, "|", 1);
}
MIKHAIL
19.3.2013, 9:57 phazeus ddos
ddos phazeus
В русхаб будет встроена защита от отправки через скрипт соответствующих команд ддоса.
Это мой ответ на борьбу против ддоса.
Ksan, dka, KT315, Saymon21, Aлзим, mod
18.3.2013, 22:18 Ddos
Информация к размышлению
Не, ну сплошной оффтоп. Ни одного слова по делу нету.

Успокойтесь уже.

Закрыто.
Nickolya
18.3.2013, 22:04 Ddos
Информация к размышлению
мне уже надоедает говно из темы убирать!
прекращаем говно лить!
Nickolya
18.3.2013, 10:15 Предложения для развития
Функции Core.RestartScript и Core.StartScript отлавливают на данный момент исключительно синтаксические ошибки.
Runtime ошибки они не отлавливают.

Возможно отлов runtime ошибок этими функциями в событии OnStartup будет реализован big_smile.gif
Saymon21
12.3.2013, 15:26 Способы Повышения Производительности
методы оптимизации lua кода
Это не единственный грабли. Если присмотреться к исходникам, то там их можно очень много найти. Я уже не говорю о "макаронности" кода.
По всей видимости у них действует правило: "Работает - не трогай!", и поэтому рефакторинг кода никогда не делается.
мамин_парень
28.2.2013, 21:39 Вопросы по RusHub
Технические вопросы
Ничего не остановил, просто релизы реже стали выходить.
Otshelnik-Fm
6.2.2013, 8:52 Вопросы Разработчикам Скриптов
вопросы по скриптам (мелкие вопросы)
%s равносильно следующему регулярному выражению:
Код
[ \f\n\r\t\v]

Другими словами, %s это набор символов, который кроме пробела включает ещё и другие символы.

Конечно, если ожидается, что там всегда будет пробел, то нет смысла писать %s, так как, во-первых, это незначительная, но все же оптимизация, во-вторых, с пробелом более наглядно и понятно.
MIKHAIL
2.2.2013, 14:18 Strong DC не сохраняет настройки
Скачать какую-нибудь другую версию.
мамин_парень
23.1.2013, 9:58 PtokaX в OpenWrt (Linux)
Ребята как собрать под эту систему?
Ну и как думаете сколько пользователей сможет выдержать такое хилое железо?
По мне так хаб на роутере это бесперспективное решение.
мамин_парень
22.12.2012, 18:37 Вопрос по регулярным выражениям (не относится к lua)
Логично, что регулярное выражение [a-zA-Zа-яА-Я ]+ захватить всё до цифр.
В данном случае нельзя регулярным выражением захватить все, кроме подстроки.
Нужно либо захватывать по частям, например, так: ([a-zA-Zа-яА-Я ]+)\d*([a-zA-Zа-яА-Я ]+)
и после этого сконкатенировать два полученных отрезка, либо же нужно использовать какую-то функцию, которая делает замену по регулярному выражению. Что-то типа:
Код
ReplaceAll(str, "[\d]*", "")
если такая есть в приведенным тобою языке.
Accelerator
15.10.2012, 9:06 Несколько Слов О Захватах И Регулярных Выражениях
исключительно для разработчиков
\" - это Lua экранирование, так как кавычка является символом синтаксиса Lua (в отличие от символа %, который является экранирующим символом в регулярном выражении).
Захватить символ можно скобками:
Код
str:find"(\")"

можно написать так:
Код
str:find'(")'


То есть, экранировать кавычки нужно в том случае, когда эти же кавычки обозначают строку.
GULAM33
5.10.2012, 9:19 Скрипты API 2. Защита хаба. Базы TTH
Скрипты защиты от спама, флуда, рекламы, порно
компактнее написать так:
Код
"[0-9].[1-9][0-9].[1-9][0-9].[0-9]"
GULAM33
10.7.2012, 10:49 RusHub
Кроссплатформенный консольный DC хаб
rushub v 2.3.10
lua plugin v 2.9


Fixed: Обновлен Zlib 1.2.7.
Fixed: Обновлен Lua 5.1.5.
Fixed: Устранены некоторые незначительные баги, утечки, глюки.
Fixed: Рефакторинг кода и частичная поддержка стандарта ISO C++.
Nickolya, Setuper, ShadoWx, CrazyKiller, AfLc, werwolf.zw
29.5.2012, 16:59 Verlihub
Описание
CDM отладчик в руки и вперёд!
Lamo
29.5.2012, 16:58 вопрос по NMDC.
.
Вместе с EXTENDEDPROTOCOL.
Неужели так сложно проверить и сравнить с тем, что возвращает клиент?
Lamo
23.5.2012, 11:09 Вопросы по RusHub
Технические вопросы
то, что в транке действительно на 64 битном линуксе не собирается (чуть позже будет исправлено).

2.3.8 на x64 должен собираться!
Axiator
21.5.2012, 12:19 С Днюхой Тебя!
поздравления
Присоединяюсь к поздравлениям feel_good.gif
Успехов и удачи во всём!
Nickolya
17.5.2012, 9:39 Greylink API userinfo
гг.
Думаю для начала следовало бы прочитать вот это: http://greylink.freewebspace.com/lua.html

ME - это признак тебя (если этот юзер ты, то равно "1", иначе nil).
NI - это ник юзера.

Функция DC():GetUserInfo(uid) возвращает объект "юзер" по его uid.
uid можно получить из аргумента функции-события:
Код
dcpp = {}
function dcpp.OnPublicMessage(uid, data)
  local user = DC():GetUserInfo(uid)
  DC():SendPublicMessage(user.HL, "test")
end
Lamo
5.4.2012, 21:13 Бан по ID компа
Прошу не создавать больше тем про незнамо что!
Nickolya, ke(x)one
3.4.2012, 9:15 Скрипт для пингеров
В русхабе есть настройки антифлуда:

Код
<Item Name="iFloodTimeUnknown">3.0</Item>
<Item Name="iFloodTimeUnknown2">60.0</Item>
<Item Name="iFloodCountUnknown">1</Item>
<Item Name="iFloodCountUnknown2">10</Item>


Описание:
Код
iFloodTime... и iFloodCount.. — ряд параметров защиты от флуда (количество iFloodCount за время iFloodTime (в сек.)). При обнаружении флуда вызывается событие OnFlood



Поставь так:
Код
<Item Name="iFloodTimeUnknown">3.0</Item>
<Item Name="iFloodTimeUnknown2">60.0</Item>
<Item Name="iFloodCountUnknown">1000</Item>
<Item Name="iFloodCountUnknown2">1000</Item>
и никаких проблем не будет
ShadoWx
1.4.2012, 12:37 ChatHistorySQL
История чата (MySQL)
Код
path = Core.sScriptsDir.."ChatHistorySQL/"
ShadoWx
1.4.2012, 12:24 Вопросы Разработчикам Скриптов
вопросы по скриптам (мелкие вопросы)
Лучше лишний раз не дёргать сбоку мусора, так как эта функция тратит ресурсы процессора. Lua интерпретатор сам время от времени производит сборку мусора, поэтому не нужно об этом так уж заботиться.
MIKHAIL
24.3.2012, 21:20 crypto
RusHub | Библиотека криптографии
не нравится - не юзай big_smile.gif
Saymon21
24.3.2012, 16:35 crypto
RusHub | Библиотека криптографии
Название: crypto
Версия: 0.3.0
Хаб: RusHub
Автор библиотеки: Keith Howe
Описание: Библиотека для работы с методами криптографии.
Использование: Файл crypto.dll кладём в папку libs. Файл libeay32.dll кладём рядом с исполняемым файлом (rushub.exe). В скриптах библиотека подключается так: require"crypto".


Библиотека win32: [attachment=6408:crypto_win32.zip]
Библиотека win64: [attachment=6409:crypto_win64.rar]
Мануал: [attachment=6405:manual.html]
Исходники для *nix систем: [attachment=6463:luacrypto.tar.gz]
Проект для сборки на vs2008: [attachment=6413:luacrypt..._src_vs9.zip]
Nickolya, Saymon21
5.3.2012, 21:04 Вопросы по RusHub
Технические вопросы
Действительно для некоторых 64 битных систем могли возникать конфликты.
Поправил, написав более универсальную функцию. Теперь должно собираться. Скачать можно из trunk
KT315
4.3.2012, 13:16 Несколько Слов О Захватах И Регулярных Выражениях
исключительно для разработчиков
Реверс делать не эффективно. Эффективнее ограничиться правильной регуляркой.
Замена gsub тоже не эффективный вариант, так как заменять каждый символ затратно.

Вариант 1:
Код
local sFileName = sFilePath:match".+/(.*)$"


Вариант 2:
Код
local sFileName = sFilePath:match"[^/]*$"


В случае если после последнего слеша ничего нету, то в обоих вариантех получим пустую строку.
В случае если слешей вообще нету, то в первом варианте получим nil, во втором варианте получим всю строку.

Какой вариант лучше - решать самому скриптописателю.
MIKHAIL
3.3.2012, 13:37 RusHub
Кроссплатформенный консольный DC хаб
rushub v 2.3.9
lua plugin v 2.8


Added: Добавлен показ сообщения при первом отключении после частых переподключений.
Added: Добавлен языковый файл English.xml.example.
Added: Добавлен единственный таймер на длительность входа и соответствующая настройка: iTimeoutLogon.

Fixed: Модифицирован формат времени в логах.
Fixed: Исправлена ошибка, возникающая при ipv6 коннекте.
Fixed: Исправлен баг в отключениях при антифлуде (несоответствие с настройками).
Fixed: Обновлен tinyxml до версии 2.6.2.
Fixed: Удалены таймеры, а также соответствующие им настройки: iTimeoutKey, iTimeoutNick, iTimeoutLogin, iTimeoutMyinfo. iTimeoutGetpass.
Fixed: Исправлен баг в проверке ника. Теперь если входит юзер с профилем -1, а на хабе пользователь с таким ником уже есть, то входящий отключается. Если же входит юзер с профилем не равным -1, то отключается тот, кто находится на хабе с его ником (защита для зарегистрированных от обрыва соединений).
Nickolya, ShadoWx, PomanoB, KT315, CrazyKiller
29.2.2012, 19:39 Defend PM, RusHub edition
Полностью автоматическая защита ЛС от спама
В русхабе в командах никогда нету разделителя на конце |. Возможно поэтому и не работает. Нужно убрать разделитель из регулярки.
Enyby
16.2.2012, 22:53 base32 Encoder
костыль алгоритма
Итак, найден очень неприятный костыль, который тянется из оригинального DC++ клиента, и который перенесён в производные от него клиенты, а также в ADC хабы, которые используют base32 для CID.

Косяк заключается в неправильно алгоритме преобразования из и в base32.

Берется некий ADC CID: "ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ".
Он состоит из 39 символов.
Преобразовываем этот CID по алгоритму DC++ из base32 (размер dst равен 24):
Код
Encoder::fromBase32(src, dst, sizeof(dst))

а потом опять в base32:
Код
Encoder::toBase32(dst, sizeof(dst), newSrc)

По идее должны получить тот же CID, однако получаем следующее: "ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZY"

Почему это возникает?
В base32 кодировке каждый символ имеет всего 32 комбинации, поэтому может занимать 5 бит, вместо 8. Отлично! Умножаем 39 на 5 и делим на 8, получаем 24,375. Однако размер dst равен 24, то есть мы теряем хвост данных.

Дальше ещё интереснее. Если мы возьмём размер dst с запасом - 25, вместо 24, то хвост мы не потеряем, однако на стадии преобразования в base32 мы получим лишние данные, ибо по алгоритму преобразования 0 в пяти битах преобразуется в символ base32 'A'.

Однако, алгоритм может срабатывать правильно. Это возникает тогда, когда хвост не имеет значимой величины (биты хвоста все равны 0). Хвост равен 3 бита. Получаем, что для того чтобы срабатывал алгоритм нужно чтобы последний символ был равен A (00000), I (01000), Q (10000) или Y (11000), в противном случае получаем значимые биты в хвосте, и обратное преобразование ломается.
Nickolya
15.2.2012, 9:21 Аналог в verlihub
Действительно, не корректно работало. Спасибо. Исправил.

Сообщения от хаба и не будет. Хаб тупо отключает юзера.
Отсутствие сообщения связано с минимизацией со стороны хаба времени на обработку таких реконнектов. Хотя при первом реконнекте возможно сообщение нужно сделать.
ShadoWx, KT315
9.2.2012, 8:48 Протокол IPv6 в протоколе NMDC
Спецификация и тестирование IPv6 в NMDC
Вот поэтому разумнее сделать хаб, который поддерживает оба протокола одновременно. Понятное дело, что в ADC протоколе больше разнообразных фич, но всё же нужно сделать минимум - набор команд NMDC, максимум - набор команд ADC. Народ будет видеть новые возможности ADC и постепенно переползать на него.

Русхаб продвигается в этом направлении.
IRainman
7.2.2012, 14:44 FirstRusHubBot
приводим RusHub к рабочему виду функционалом скриптов
Просто не сохраняется удаление. В файле cmds.lua перед строчкой:
Код
local tMsg = {"*** ", tUser.sNick, ", регистрация ника \"", sData, "\" с профилем №", iProfile, " (", tProfiles[iProfile].tNames[1], ") удалена!"}
добавь строчку:
Код
SaveTable(sThisScriptDir.."RegUsers.dat", tRegUsers, "tRegUsers")


Перезалил исправленную версию.
ShadoWx
7.2.2012, 9:07 Вопросы Разработчикам Скриптов
вопросы по скриптам (мелкие вопросы)
Советую не браться за это дело. Оно гиблое. Настройки клиентов у всех разные. Найти что-то универсальное невозможно.

Единственная универсальная штука для выравнивания - это табуляции.

Табуляции следует использовать только в начале строки. Конечно можно использовать и в середине, но тогда опять же возникают зависимости от шрифтов и в особенности от размера шрифта, так как число символов, которые укладываются в табуляцию зависит именно от этого.
MIKHAIL
5.2.2012, 16:38 Протокол IPv6 в протоколе NMDC
Спецификация и тестирование IPv6 в NMDC
Ты изобрёл свой велосипед. Этот велосипед уже изобретён и называется ADC протокол.

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

То есть, хочешь ipv6 - переходи на ADC!
Нужно продвигать новый протокол, а не продолжать накручивать что-то на старый.
Otshelnik-Fm
4.2.2012, 14:37 Сборка Rushub на платформе SUN (Oracle). OpenSolaris, Nexenta для x86
Патч для Rushub 2.3.8
Попробуй сейчас скачать из trunk и собрать, должно собираться безо всяких патчей
KT315
3.2.2012, 23:56 Вопросы Разработчикам Скриптов
вопросы по скриптам (мелкие вопросы)
функцией table.remove можно удалить только элементы с числовым ключом.

В твоём случае следует делать так:
Код
tTable["nick"] = nil
LoT
2.2.2012, 17:23 Ipv6 Test Hub RusHub
Если подключаться к хабу по локальному ipv6 (::1), то должно пахать.

Кстати, для ipv6 я исправил выхлоп в лог при возникновении ошибки (в ревизии 675), так как раньше показывалась не та ошибка, поэтому диагноз возникновения ошибки мог быть неправильным.

Только что проверил... Действительно была ошибка, из-за которой хаб сбрасывал ipv6 соединение.
Устранил её только что. Качайте исходники из trunk - теперь должно входить по ipv6 big_smile.gif


Кстати, для тестирования ipv6 можно использовать консольного клиента stress-test, но только для NMDC, для ADC он ещё не адаптирован.
mariner, ShadoWx, PomanoB, KT315, CrazyKiller

23 страниц V  < 1 2 3 > » 
RSS Сейчас: 4.4.2025, 3:45