myDC.ru

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

 
53 страниц V  « < 41 42 43 44 45 > »   
Ответить в данную темуНачать новую тему

> Вопросы Разработчикам Скриптов, вопросы по скриптам (мелкие вопросы)

Ksan
сообщение 29.12.2011, 1:25
Сообщение #841


Белый Волк
*********

Группа: Пользователи
Сообщений: 1 723
Регистрация: 11.9.2008
Из: г.Томск
Пользователь №: 516
Спасибо сказали: 657 раз




MIKHAIL, заранее не парься.
Пиши скрипт спокойно. Вот когда появятся проблемы, тогда и будем решать. big_smile.gif

И да, ты смотри моё предыдущее сообщение, я там подправил кое-что.


Спасибо сказали:
Go to the top of the page
+Quote Post
MIKHAIL
сообщение 29.12.2011, 1:33
Сообщение #842


KEEP CLEAR AT ALL TIMES
****

Группа: Пользователи
Сообщений: 141
Регистрация: 4.9.2011
Из: Беларусь, Минск
Пользователь №: 9 667
Спасибо сказали: 3 раза




Сообщение #927
Код
:sub(3,4)

Ksan, что это означает? Числа "3" и "4" какие-то параметры?
Go to the top of the page
+Quote Post
Ksan
сообщение 29.12.2011, 1:42
Сообщение #843


Белый Волк
*********

Группа: Пользователи
Сообщений: 1 723
Регистрация: 11.9.2008
Из: г.Томск
Пользователь №: 516
Спасибо сказали: 657 раз




Код
Stroka:sub(3,4)
- тут от строки Stroka выделяется кусок от 3-го по 4-е число символов.
Для изучаемого числа 0.141592654 это будет пропуск первых двух символов "0." и захват цифр "14" из "141592654"

Можно брать и отрицательные значения для этих аргументов:
Код
Stroka:sub(3,-4)
- тут у нас захватятся с 3-го по 4-е с конца, то есть, получим число "141592"
Знак минус при аргументе означает - с конца строки.


Спасибо сказали:
Go to the top of the page
+Quote Post
Setuper
сообщение 29.12.2011, 10:09
Сообщение #844


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Такой метод округления не хорошо использовать, так как возможен вариант, когда целая част состоит не из одной цифры, а например из 2 или 3
Код
n = 356.3695876


Лучше использовать функцию format:
Код
string.format("%.3f", 356.3695876) -- 356.370


Спасибо сказали:
Go to the top of the page
+Quote Post
Ksan
сообщение 29.12.2011, 18:47
Сообщение #845


Белый Волк
*********

Группа: Пользователи
Сообщений: 1 723
Регистрация: 11.9.2008
Из: г.Томск
Пользователь №: 516
Спасибо сказали: 657 раз




Setuper, ты не был внимателен, и, возможно, не всё читал выше (возможно, читал только последнее сообщение).
1. Я и этот метод тоже предлагал:
Цитата
MIKHAIL, а ещё есть это:
Код
local Pi = 3.141592654  --  твоё обрабатываемое число
local sUnit = ""  --  единица измерения, в данном случае пусто (а может быть и метр, и процент и что угодно)
Core.SendToAll(string.format("%0.2f %s", Pi, sUnit))  --  где 2f - нужное число знаков после запятой, то есть, 2 в данном случае

2. И там же второй метод, его я предложил только чтоб записать, раз уж пришёл в голову (не пропадать же методу). Да и вдруг ему покажется прощё. big_smile.gif
К тому же, при чем тут
Цитата
когда целая част состоит не из одной цифры, а например из 2 или 3
?
Целая и дробная части обрабатываются по отдельности, предварительно выделив их функцией
Код
local M, N = math.modf(Pi)
Далее уже работаем с целой частью любого размера и с дробной в виде "0.123456789"
Go to the top of the page
+Quote Post
Setuper
сообщение 29.12.2011, 21:52
Сообщение #846


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Ну по-моему всё равно корявый метод.

Кстати, вот ещё пара методов тогда до кучи:

Код
function floor(num, precision)
  precision = math.pow(10, precision)
  return math.floor(tonumber(num) * precision + 0.5) / precision
end

function ceil(num, precision)
  precision = math.pow(10, precision)
  return math.ceil(tonumber(num) * precision - 0.5) / precision
end

floor(456.456556, 3) -- 456.457
ceil(456.456556, 3) -- 456.457


Спасибо сказали:
Go to the top of the page
+Quote Post
MIKHAIL
сообщение 30.12.2011, 21:14
Сообщение #847


KEEP CLEAR AT ALL TIMES
****

Группа: Пользователи
Сообщений: 141
Регистрация: 4.9.2011
Из: Беларусь, Минск
Пользователь №: 9 667
Спасибо сказали: 3 раза




Скажите, пожалуйста, возможно как-либо предоставить в локальной сети пользователям хаба доступ в Интернет (расшарить, вообщем), который есть на машине, на которой стоит хаб, разумеется, основной упор сделать на реализацию посредством Lua, по возможности без сторонних программ (WinGate/UserGate и т.п.)? Если будут необходимы такие монстры как MySQL/PHP – ничего, поставим. Допустим с таким вариантом: каждый месяц 10-ти пользователям хаба предоставлять по 50 МБ трафика. Быть может с учётом трафика не так всё просто будет, как вариант организовать сессии с возможностью ограничения по времени, либо предоставить определённое количество переходов/запросов. Скорость работы не так важна, сколько сама возможность раздавать Интернет, предположительно данная фишка хаба предполагает работу с почтой (посмотреть, отправить), само собой, немного посерфить по сайтам...
Предполагаю, что реализовать можно по-разному, но хотелось бы услышать дельные советы.
Go to the top of the page
+Quote Post
mariner
сообщение 30.12.2011, 22:27
Сообщение #848


Местная ТехПоддержка
**********

Группа: Администраторы
Сообщений: 1 875
Регистрация: 18.7.2008
Из: Моск. Обл, г. королев, район Болшево
Пользователь №: 221
Спасибо сказали: 220 раз




будут необходимы такие монстры как Linux + дельная биллингсистема. Например раньше юзал Traffpro (щас она закрылась, но на рутрекере есть от меня раздача со стабильным релизом)
Go to the top of the page
+Quote Post
MIKHAIL
сообщение 31.12.2011, 3:54
Сообщение #849


KEEP CLEAR AT ALL TIMES
****

Группа: Пользователи
Сообщений: 141
Регистрация: 4.9.2011
Из: Беларусь, Минск
Пользователь №: 9 667
Спасибо сказали: 3 раза




Столкнулся с данными в кодировке UTF-8 (если не ошибаюсь):
Код
"\u041d\u0430\u0443\u043a\u0430 \u0438 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438"

Функция Utf8ToAnsi (Сообщение #1) ранее работала исправно, но и данные, как мне кажется, были предствлены "по-другому" (без \u), хотя, вроде как, тоже были в кодировке UTF-8. Теперь вышеуказанная функция, естественно, уже не работает.
Слабо я в этом пока разбираюсь. Подскажите, пожалуйста, что изменилось, ведь и раньше кодировка была той же?
Go to the top of the page
+Quote Post
Enyby
сообщение 31.12.2011, 9:26
Сообщение #850


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 391
Регистрация: 4.11.2009
Из: Дом
Пользователь №: 4 923
Спасибо сказали: 239 раз




Код
"\u041d\u0430\u0443\u043a\u0430 \u0438 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438" == "Наука и технологии"

http://dukehome.kiev.ua/docs/JavaScript/Ja...ialsymbols.html


Спасибо сказали:
Go to the top of the page
+Quote Post
MIKHAIL
сообщение 31.12.2011, 15:12
Сообщение #851


KEEP CLEAR AT ALL TIMES
****

Группа: Пользователи
Сообщений: 141
Регистрация: 4.9.2011
Из: Беларусь, Минск
Пользователь №: 9 667
Спасибо сказали: 3 раза




Enyby, так функцию Utf8ToAnsi (Сообщение #1) реально подправить, чтобы она вновь заработала, но уже с Unicode-последовательностью?..
Go to the top of the page
+Quote Post
Enyby
сообщение 31.12.2011, 19:13
Сообщение #852


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 391
Регистрация: 4.11.2009
Из: Дом
Пользователь №: 4 923
Спасибо сказали: 239 раз




Реально все. Это лишь вопрос времени и ресурсов.

Это не кодировка. Это способ эйскепирования символов юникода в кодировках, его не поддерживающих.
В данном конкретном случае надо разбить шестнадцетиричное число, идущее после "/u", на две части, перевести эти части в байты. Полученная последовательность байт будет юникодом, который можно прогнать через Utf8ToAnsi.


Спасибо сказали:
Go to the top of the page
+Quote Post
MIKHAIL
сообщение 1.1.2012, 22:19
Сообщение #853


KEEP CLEAR AT ALL TIMES
****

Группа: Пользователи
Сообщений: 141
Регистрация: 4.9.2011
Из: Беларусь, Минск
Пользователь №: 9 667
Спасибо сказали: 3 раза




Скажите, пожалуйста, какой вариант кода в данном случае будет быстрее работать?
Вариант №1:
Код
local sData1 = "0"
local sData2 = "0"

или вариант №2:
Код
local sData1 = "0"
local sData2 = sData1

Слышал, что есть копирование по значению и по ссылке. Вот, интересуюсь...

И ещё такой вопрос. Быть может показаться пустым, но всёже хочется узнать подробнее, глубже, чтоли. Есть ли, опять же, в данном случае разница (существенная, на глубинном уровне) в коде и какова в данном случае?
Вариант №1:
Код
local sData = "0"

Вариант №2:
Код
local sData = 0

Понимаю, что можно присвоить, заключив только в кавычки, то не присвоишь без них... Но тут строго одно и то же значение – "ноль". А вот кавычки влияют на работу кода?
Где-то видел мельком разницу между одинарными и двойными, не обратил внимания. Теперь ищу.)
Go to the top of the page
+Quote Post
Enyby
сообщение 1.1.2012, 23:19
Сообщение #854


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 391
Регистрация: 4.11.2009
Из: Дом
Пользователь №: 4 923
Спасибо сказали: 239 раз




Это не принципиально.

Оба варианта достаточно быстры, а различия между ними минимальны.
Go to the top of the page
+Quote Post
MIKHAIL
сообщение 2.1.2012, 0:46
Сообщение #855


KEEP CLEAR AT ALL TIMES
****

Группа: Пользователи
Сообщений: 141
Регистрация: 4.9.2011
Из: Беларусь, Минск
Пользователь №: 9 667
Спасибо сказали: 3 раза




Согласно Сообщение #1, п. 4 нижеуказанная замена подпадает под этот метод оптимизации? А именно, имеющийся код:
Код
local data = string.sub(data,1,-2)

заменить на:
Код
local data = data:sub(1,-2)
Go to the top of the page
+Quote Post
Ksan
сообщение 2.1.2012, 1:45
Сообщение #856


Белый Волк
*********

Группа: Пользователи
Сообщений: 1 723
Регистрация: 11.9.2008
Из: г.Томск
Пользователь №: 516
Спасибо сказали: 657 раз




MIKHAIL, ты копаешься на таком микроскопическом уровне, что разница твоих вариантов может себя проявить, только если она повторится миллион раз подряд..что в том твоём сообщении, что в этом.
Go to the top of the page
+Quote Post
MIKHAIL
сообщение 3.1.2012, 1:50
Сообщение #857


KEEP CLEAR AT ALL TIMES
****

Группа: Пользователи
Сообщений: 141
Регистрация: 4.9.2011
Из: Беларусь, Минск
Пользователь №: 9 667
Спасибо сказали: 3 раза




Вопрос: есть ли существенная разница между
Код
function GetData(sData)

и
Код
GetData = function(sData)

???
Go to the top of the page
+Quote Post
Enyby
сообщение 3.1.2012, 2:16
Сообщение #858


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 391
Регистрация: 4.11.2009
Из: Дом
Пользователь №: 4 923
Спасибо сказали: 239 раз




Это вопрос или утверждение?

ADD:
Цитата(MIKHAIL @ 1.1.2012, 23:46) *
Согласно Сообщение #1, п. 4 нижеуказанная замена подпадает под этот метод оптимизации? А именно, имеющийся код:
Код
local data = string.sub(data,1,-2)

заменить на:
Код
local data = data:sub(1,-2)

Тест
Код:
Код
function ChatArrival(tUser, sData)
  local iLimit = 10000000
  
  local sData = 'Sample text'
  local sResult= '';
  
  local iStart = os.time()
  for i = 0, iLimit, 1 do
    sResult = string.sub(sData, 1, -2)
  end
  Core.SendToAll(" " .. os.difftime(os.time(), iStart));
  
  iStart = os.time()
  for i = 0, iLimit, 1 do
    sResult = sData:sub(1, -2)
  end
  Core.SendToAll(" " .. os.difftime(os.time(), iStart));
end

Результат:
Код
[00:57:07] * 11
[00:57:07] * 9

Вывод:
ООП вариант быстрее (это тот, который через двоеточие).


PS Если охота заниматься "блошиной" оптимизацией, то пиши сам подобные скрипты и проверяй что быстрее, не так уж они и сложны.
И да, "выигрыш" нереально "крут" - 2/10 000 000 секунд с одного оператора на моей машине. Так что не стоит заморачиваться.

ADD:
Цитата(MIKHAIL @ 1.1.2012, 21:19) *
Скажите, пожалуйста, какой вариант кода в данном случае будет быстрее работать?
Вариант №1:
Код
local sData1 = "0"
local sData2 = "0"

или вариант №2:
Код
local sData1 = "0"
local sData2 = sData1

Тест
Код:
Код
function ChatArrival(tUser, sData)
  local iLimit = 100*1000*1000
  
  local sData1 = ''
  local sData2 = ''
  
  local iStart = os.time()
  for i = 0, iLimit, 1 do
    sData1 = "0"
    sData2 = "0"
  end
  Core.SendToAll(" " .. os.difftime(os.time(), iStart));
  
  iStart = os.time()
  for i = 0, iLimit, 1 do
    sData1 = "0"
    sData2 = sData1
  end
  Core.SendToAll(" " .. os.difftime(os.time(), iStart));
end

Результат:
Код
[01:08:04] * 15
[01:08:04] * 18

Вывод:
Первый вариант быстрее. На три секунды. При 100 миллионном повторении. extreme_sexy_girl.gif

Цитата(MIKHAIL @ 1.1.2012, 21:19) *
Есть ли, опять же, в данном случае разница (существенная, на глубинном уровне) в коде и какова в данном случае?
Вариант №1:
Код
local sData = "0"

Вариант №2:
Код
local sData = 0

Тест
Код:
Код
function ChatArrival(tUser, sData)
  local iLimit = 30*1000*1000
  
  local iData1 = ''
  local iData2 = 0
  
  local iStart = os.time()
  iData2 = "0"
  for i = 0, iLimit, 1 do
    iData1 = "1"
    iData2 = iData2 + iData1
  end
  Core.SendToAll(iData2 .. " " .. os.difftime(os.time(), iStart));
  
  iStart = os.time()
  iData2 = 0
  for i = 0, iLimit, 1 do
    iData1 = 1
    iData2 = iData2 + iData1
  end
  Core.SendToAll(iData2 .. " " .. os.difftime(os.time(), iStart));
end

Результат:
Код
[01:14:33] *30000001 18
[01:14:33] *30000001 6

Вывод:
Если у вас число, то быстрее будет как число. Не будете лишний раз конвертировать.


Спасибо сказали:
Go to the top of the page
+Quote Post
MIKHAIL
сообщение 3.1.2012, 2:36
Сообщение #859


KEEP CLEAR AT ALL TIMES
****

Группа: Пользователи
Сообщений: 141
Регистрация: 4.9.2011
Из: Беларусь, Минск
Пользователь №: 9 667
Спасибо сказали: 3 раза




Enyby, спасибо, что уделяете на такие вопросы своё драгоценное время. Теперь хоть знать буду, как составлять и тестить простейшие, но в то же время изящные алгоритмы!
baffle.gif
Go to the top of the page
+Quote Post
Enyby
сообщение 3.1.2012, 2:43
Сообщение #860


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 391
Регистрация: 4.11.2009
Из: Дом
Пользователь №: 4 923
Спасибо сказали: 239 раз




Цитата(MIKHAIL @ 3.1.2012, 0:50) *
Вопрос: есть ли существенная разница между
Код
function GetData(sData)

и
Код
GetData = function(sData)

???

Тест

Код:
Код
function ChatArrival(tUser, sData)
  local iLimit = 10*1000*1000
  
  local iStart = os.time()
  for i = 0, iLimit, 1 do
    function GetData(sData)
        sData = "0"
    end
  end
  Core.SendToAll(" " .. os.difftime(os.time(), iStart));
  
  iStart = os.time()
  for i = 0, iLimit, 1 do
    GetData = function(sData)
        sData = "0"
    end
  end
  Core.SendToAll(" " .. os.difftime(os.time(), iStart));
end

Результат:
Код
[01:40:49] * 10
[01:40:49] * 11

Вывод:
Все естественно. Во втором случае создается безымянная функция, которая присваивается в переменную, а во втором случае, все то же самое, только функция имеет имя сразу. На этом и выигрыш.



Спасибо сказали:
Go to the top of the page
+Quote Post

53 страниц V  « < 41 42 43 44 45 > » 
Ответить в данную темуНачать новую тему
33 чел. читают эту тему (гостей: 33, скрытых пользователей: 0)
Пользователей: 0

Collapse

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
No new ВАЖНО: Topic has attachmentsМодули для скриптов RusHub
26 Setuper 45 394 21.3.2017, 17:31 Посл. сообщение: Alexey
No new ВАЖНО: Topic has attachmentsВаши Вопросы И Предложения По Поводу Форума
447 Svyat 322 163 20.10.2015, 19:39 Посл. сообщение: Ksan
No New Posts От: Вопросы Разработчикам Скриптов
От темы с ID: 173
0 MIKHAIL 4 337 23.1.2015, 0:56 Посл. сообщение: MIKHAIL
No new Topic has attachmentsВопросы по протоколу NMDC
Делаю программу
26 Master255 29 751 12.1.2015, 0:38 Посл. сообщение: Master255
No New Posts Вопросы к Phazeus по Экзекутору
Мастер может забанить мастера, как решить в Экзекуторе?
1 AndreiDC 5 373 31.10.2014, 19:20 Посл. сообщение: Ksan
No New Posts От: Установка скриптов
От темы с ID: 5657
0 MIKHAIL 4 800 29.7.2014, 23:37 Посл. сообщение: MIKHAIL
No New Posts Установка скриптов
Нужна помощь по установке
2 _wRz_ 7 309 29.7.2014, 16:11 Посл. сообщение: Артём
No new От: Вопросы Разработчикам Скриптов
От темы с ID: 173
29 Wariner 25 996 28.1.2014, 13:11 Посл. сообщение: Alexey
No new Topic has attachmentsВопросы по RusHub
Технические вопросы
316 Jaska 269 300 19.12.2013, 13:59 Посл. сообщение: mod
No new Topic has attachmentsМелкие вопросы
44 Wariner 50 989 19.9.2013, 12:34 Посл. сообщение: Alexey
No New Posts От: Ваши Вопросы И Предложения По Поводу Форума
От темы с ID: 753
3 anila 9 130 28.3.2013, 16:02 Посл. сообщение: настя
No New Posts Единая платформа для скриптов
Обсуждения вопроса создания единой платформы скриптов
5 Enyby 9 056 18.1.2012, 20:15 Посл. сообщение: Setuper
No new Topic has attachmentsПеределка скриптов
Прошу помощи
47 Fe(one)X 41 396 26.12.2011, 15:04 Посл. сообщение: Ksan
No new Topic has attachmentsВопросы Разработчикам Скриптов с SQL
вопросы по скриптам (мелкие вопросы)
101 Wariner 62 320 6.12.2011, 0:34 Посл. сообщение: Enyby
No New Posts От: Вопросы по RusHub
От темы с ID: 2902
4 Otshelnik-Fm 8 471 19.10.2011, 9:23 Посл. сообщение: Mangust

 



RSS Сейчас: 27.11.2024, 1:52