Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

UoKit.com Форумы _ Sphere Server 0.56 - Sphere X _ LOCAL

Автор: Sirocco 7.3.2019, 12:06

Решил я попробовать, что такое 56 сфера.Скажите мне как вы живете с local, которые не string?
я раньше проверял открыт ли local или нет. А теперь он всегда 0.и дату в нем хранить тоже нельзя.
local.txt = "2019/01/09"
он сразу делить пытается


ладно нашел dlocal. вроде хоть эта часть отпала.
тогда по аналогии надо еще
slocal.
plocal. - это как ref, только поименованный

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

local. = "123.456.789"

пару часов угробил на разбитие числа на разряды.

Автор: Sirocco 7.3.2019, 17:08

А где тут циклы по TAG с маской?
CLEARTAGS по маске?

чо тут до появления LIST то делать?

где обещанные удобства?


мне кажется это вообще должно идти в комплекте с каждой сферой, но нет.

Код

tag.plr_<uid>
tag.plr_<uid>


for 0 <eval(<tagcount> - 1)>
  if strmatch("plr_*",<tagat.<eval(<local._for>)>.key>)
    ref1 = <tagat.<eval(<local._for>)>.value>
  endif
endfor



вот так:
Код

fortags sample*
  <local._var_value> = <local._var_name>
endfor

Автор: Sirocco 7.3.2019, 18:03

Все кто пишет, что сфера говно. я согласен полностью!
я как будто в каменный век провалился.

Автор: Llirik 9.3.2019, 17:25

Sphere Gauno! smile.gif

Автор: Ozzy Osbourne 10.3.2019, 13:19

Так это псевдоязык уровней аля школьник 8 класса )

Конечно если хочешь удобство и красоту - надо брать РанКу с нормальным шарпом, дебагером и IDE )

Я лично сферу использую потому что: 1) уже набита рука к тому что ты описал и я не трачу время на "разбирательства" как сделать лучше 2) я привык работать с ней без IDE и подсветки кода 3) у меня нет желания делать "правильно и гибко" на шарпе т.к. это дольше для меня, чем из "гомна и палок" слепить готовый mvp

Автор: Sirocco 10.3.2019, 14:00

Ты не понял. Я хотел перейти со своей 55й на 56ю.
И понял что когда "уже набита рука" теперь невозможно работать с local. от слова совсем, невозможно работать с tag.
почему они не string? что за херня?!


я конечно придумал писать
local. = txt 34/24/24

а потом

STREAT

зато

return - выдает все как положено.

Автор: Sirocco 10.3.2019, 19:00

Код

local.y = 40
serv.log <eval((<local.y> / 40) - (<local.y> / 10))> = -3
serv.log <eval((<local.y> / 40) + (<local.y> / 40))> = 2
serv.log <eval((<local.y> / 40) - (<local.y> / 10) + (<local.y> / 40))> = -4
serv.log <eval((<local.y> / 40) + (<local.y> / 40) - (<local.y> / 10))> = -2

что тут вообще творится?
как в 3 строчке получается -4?

у меня раньше никаких проблем с вычислениями не было.

проверил др версию 56 сфера, все также.


я даже проще напишу
Код

serv.log <eval(1 - 4)> = -3
serv.log <eval(1 + 1)> = 2
serv.log <eval(1 - 4 + 1)> = -4 (WAT?)
serv.log <eval(1 + 1 - 4)> = -2



Я конечно понимаю, что видимо он пытается считать как-то так:
serv.log <eval(1 - (4 + 1))> = -4
но это ж неправильно!

Автор: Ozzy Osbourne 10.3.2019, 22:11

Да, такая фишка сферы и очень давно. Спецом отписал в дискорде сферы, таки подтвердили, что она вычисляет с права на лево. Вот такая особенность, поэтому лучше использовать скобки. И вроде как в твоей 55й должно быть тоже самое, если там не модифили код и не переделывали это принудительно.

Как мне написали **Some parts of the source have been untouched for ages** ))

Автор: Sirocco 10.3.2019, 22:20

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

если что я там юлианскую дату считаю.
понятно дело, что если она не будет совпадать, все накроется медным тазом!


P.S. и да я так и сделал, воспользовался скобками

Автор: Sirocco 11.3.2019, 12:23

Смотрите прикол:

Код

local.m = "2019/03/10"
tag.i = <local.m> - ошибка деления на ноль


Код

local.m = "2019/03/10"
tag.i = "<local.m>" - вроде ок


НО вот так уже не работает

Код

serv.newitem
local.m = "2019/03/10"
new.tag.i = "<local.m>" - опять ошибка деления

Автор: Ozzy Osbourne 11.3.2019, 21:37

Ну на самом деле все это обычные ошибки языков без строгой типизации. Тот же ЖС имеет подобные бока постоянно, поэтому я бы советовал по 100 раз перепроверять (как ты и делаешь) переменные и результат, а лучше отказыватся от даты в таком виде, точнее с такими разделителями. Лучше /*:-+% - все это может не правильно быть понято интерпритатором при работе с переменными.

Автор: Sirocco 11.3.2019, 23:26

serv.rtime - к сожалению в таком виде.
и я их просто сравнивал... не осуществляя никаких махинаций.
в др виде ее хранить, это значит и serv.rtime как-то каждый раз модифицировать.

я вообще юлианскую дату вычисляю.

Автор: Ozzy Osbourne 11.3.2019, 23:54

Ну на вскидку пару идей,

1. SERV.RTIME.FORMAT

2. Хранить в юникстайме

3. Вычислять юлианскую через mysql

В любом случае работать с датами в таком формате (сравнивать, модифицировать и тп) не вариант. Обычный юникстайм в помощь, дальше от него плясать или через базу или свои функции навешивать для преобразования. Иначе реально будешь спотыкатся на сферовских приколах ))

Ну и быстрое решение с интернета в псведокоде если мы таки работаем c unixtime. Правда нет под рукой сферы что б точно сказать формат SERV.TIME, но поидеи сфера как то в нем вернуть точно должна смочь

Код
Эпоха Unix (нулевая точка) - 1 января 1970 года. Это соответствует юлианскому дню 2440587.5

function float getJulianFromUnix( int unixSecs )
{
   return ( unixSecs / 86400.0 ) + 2440587.5;
}

Автор: Wap 12.3.2019, 0:12

Когда работал на Сфере, выполнение нетривиальной задачи часто сводилось к "как же мне на**ать Сферу". Самое интересное, что в большинстве случаев получалось. smile.gif Там просто тонны всяких неочевидных фишек в работе функций и кода.

А всю прелесть работы со стрингами я оценил, когда поставил задачу сделать обфускатор скриптов, написанный на сферскрипте. Вот это была жесть. biggrin.gif Я неделю мучался, узнал много нового, а том, как Сфера обрабатывает стринги biggrin.gif потом друг написал его мне за вечер на нормальном языке и с нормальной скоростью работы.
Ну это было очень давно, я тогда ни на чем, кроме сферскрипта писать не умел.

Автор: Sirocco 12.3.2019, 8:04

чтобы вычислять unixSecs, нужно его вычислять ))) ее же там нет.

кстати нашел
RTICKS


но простите это не отменяет того факта, что сфера не работает так как надо.

все почему-то пытаются мне советовать как надо делать.
а ничего что я не могу на 55 сфере сделать так как надо.

Автор: Aimed 12.3.2019, 11:31

Сфера уже давно опен сорс. Не нравится? Форкаешь и делаешь под себя, а ещё можно посмотреть что на самом деле там происходит.

Автор: Sirocco 12.3.2019, 12:16

Да притом что у меня есть исходники 55 сферы, еще до того как это стало мейнстримом.
Я даже могу сравнить изменения и исправления, которые туда за это время внесли.

Но похоже, покуда мы исправляли ошибки и делали сферу юзерфрендли.
На 56 сфере творился полный бардак.

Автор: Aimed 12.3.2019, 13:03

Цитата(Sirocco @ 12.3.2019, 10:16) *

Да притом что у меня есть исходники 55 сферы, еще до того как это стало мейнстримом.
Я даже могу сравнить изменения и исправления, которые туда за это время внесли.

Но похоже, покуда мы исправляли ошибки и делали сферу юзерфрендли.
На 56 сфере творился полный бардак.


Команда разработчиков, которые делают за спасибо, либо под себя. Вот и результат.

Автор: Llirik 12.3.2019, 17:29

Цитата(Aimed @ 12.3.2019, 13:03) *

Команда разработчиков, которые делают за спасибо, либо под себя. Вот и результат.

Надо им шоколадку купить!)

Автор: Aimed 12.3.2019, 18:01

Цитата(Llirik @ 12.3.2019, 15:29) *

Надо им шоколадку купить!)

[+]
?t=3

Автор: Narayan 12.3.2019, 19:30

Не понятно о чем топик. То ли о затыке в скрипте, то ли о хейте сферы. Не нравится - не используй smile.gif

Автор: Sirocco 12.3.2019, 22:59

ничего не понимаю в сфере и вообще в написанном, но свои 5 копеек вставлю. не нравится - не читай.




немножко о типах данных в сфере

local.a = // число 0
local.a = 1 // число
local.a = 2/2 // число 1 - однако!
local.a = 1a // число, ну это понятно 16ричное
local.a = 1z // строка
local.a = 1.1 // строка

я хочу сам решать, что у меня за тип данных!

Автор: Sirocco 12.3.2019, 23:12

вот вам функция деления числа на разряды
f_math_cathegory 12345678
возвращает результат 12.345.678

немножко про этот долбанутый алгоритм.
я ж не могу сразу проверить открыт local.cat или нет, он же всегда возвращает 0, а у меня внутри может и 0 хранится.
поэтому я ввожу еще один дополнительный параметр local.h, чтобы просто приравнять его к 1.
еще мне к local.cat в конце приходится приписывать букву Z, чтобы сумасшедшяя сфера поняла что у меня string.
в конце я избавлюсь от этой буквы с помощью STRSUB.

Пользуйтесь...

Код

[FUNCTION f_math_cathegory]  //делит число на разряды
if strlen(<argn>) <= 3
    return <eval <argn>>
endif
local.cat_argn = <argn>
if (<local.cat_argn> < 0)
    local.cat_m = 1
    local.cat_argn = "<eval(<local.cat_argn> * -1)>"
endif
local.cat_lng = <eval strlen(<dlocal.cat_argn>)>
FOR m <local.cat_lng>
    local.cat_i = "<eval <local.cat_lng> - <local.m>>"
    local.cat_j = "<eval(0<local.cat_j> + 1)>"
    local.cat_chart = "<STRSUB <local.cat_i> 1 <eval(<dlocal.cat_argn>)>>"
    if !(0<local.h>)
        local.h = 1
        local.cat = "<dlocal.cat_chart>z"
    elseif (<local.cat_j> == <eval((<local.cat_j> / 3) * 3)>) && (<local.cat_i> != 0)
        local.cat = ".<dlocal.cat_chart><local.cat>"
    else
        local.cat = "<dlocal.cat_chart><local.cat>"
    endif
ENDFOR
local.cat_lng = <eval strlen(<local.cat>)>
local.cat = "<STRSUB 0 <eval <local.cat_lng> - 1> <local.cat>>"
if 0<local.cat_m>
    local.cat = "-<local.cat>"
endif
return <local.cat>

Автор: Narayan 13.3.2019, 0:00

Цитата(Sirocco @ 12.3.2019, 22:59) *

ничего не понимаю в сфере и вообще в написанном, но свои 5 копеек вставлю. не нравится - не читай.


Я исключительно о твоей подаче. У тебя есть задача, но ты зачем-то хейтишь тупость сферы и обращаешь на это внимание, хотя это никак не решает твою задачу

Автор: Aimed 13.3.2019, 1:15

Цитата(Sirocco @ 12.3.2019, 20:59) *

я хочу сам решать, что у меня за тип данных!


rofl.gif Вызывайте врачей))))

Автор: Aimed 13.3.2019, 1:26

А вобще советую почитать http://wiki.spherecommunity.net/index.php?title=Category:Variables. В Сфере есть функции для каста типов данных.

Цитата(Sirocco @ 12.3.2019, 20:59) *

local.a = // число 0

И? А что тут по твоему должно быть? Учи матчасть. Если это инт, то не инициализированный инт всегда будет равен 0. Если это строка, то пустая, инициализированная, строка в С будет иметь знак-терминации '\0', который в ASCII равен 0. А если её не инициализировать, то сфера вылетит с нулл поинтером.

Цитата(Sirocco @ 12.3.2019, 20:59) *

local.a = 2/2 // число 1 - однако!

Не "однако!", - a все правильно, у тебя там оператор деления используется. Ты вобще хоть какой-нибудь код хоть раз в жизни писал? Всегда сперва операция, потом присвоение. Хочешь строку? Используй квоты.

Цитата(Sirocco @ 12.3.2019, 20:59) *

local.a = 1z // строка
local.a = 1.1 // строка


1z строка, да, а что ещё тут может быть?
1.1 тоже строка, потому что сфера если сфера будет пытаться конвертировать твой скрипт во все типы данных, пока не найдет нужный, там производительности вобще не останется.
Используй float, хотя он как-то очень уж криво работает.

Автор: Aimed 13.3.2019, 2:02

Код

if (<local.cat_argn> < 0)
    local.cat_m = 1
    local.cat_argn = "<eval(<local.cat_argn> * -1)>"
endif


abs() ? не не слышал.

Алгоритм просто отвратительный. Все что нужно сделать, это, - с конца пройти по стринге в while цикле, c использованием обратного каунтера, значение которого было взято от длинны стринги и отщипывать субстрингом по 3 знака сзади + запоминать последнюю позицию отщипывания. Дальше добавляем спереди точку и приклеиваем новый стринг из 3х знаков и точки спереди возвратной стринги. Мега просто, читабельно и раза в 3 меньше кода.

Автор: Sirocco 13.3.2019, 8:24

Ладно, я разобрался. Это какая-то кривая версия сферы была. На работе кривая, дома нормальная. Я чуть с ума не сошел.
Ей плевать было на скобки, она все время считала что у меня hex.

Код

[FUNCTION f_math_2cathegory] //делит число на разряды
if strlen(<argn>) <= 3
    return <eval <argn>>
endif
local.argn = <argn>
if (<local.argn> < 0)
    local.mod = 1
    local.argn = <eval(abs(<argn>))>
endif
local.lng = <eval(strlen(<dlocal.argn>))>
local.cut = 3
WHILE <local.lng> > 0
    local.lng -= 3
    if <local.lng> <= 0
        local.cut = 3 + <local.lng>
        local.lng = 0
    endif
    local.char = "<STRSUB <local.lng> <local.cut> <dlocal.argn>>"
    if <local.emp> == 0
        local.cat = "<local.char>"
        local.emp = 1
    else
        local.cat = "<local.char>.<local.cat>"
    endif
ENDFOR
if 0<local.mod>
    local.cat = "-<local.cat>"
endif
return <local.cat>



Как написать раза в 3 меньше кода?

Автор: Ozzy Osbourne 13.3.2019, 11:58

Нет под рукой сферы что бы проверить, но думаю идея понятна
Было бы интересно взять эти две функции да засунуть в цикл из тысячи итераций и посмотреть на скорость

Код
[FUNCTION f_math_2cathegory]
IF (<DB.Connected>==1)
    DB.Query "SELECT REPLACE(REPLACE(REPLACE(FORMAT('<eval <argn>>', 2), '.', '@'), ',', '.'), '@', ',') as x"
    IF (<DB.ROW.NumRows>>0)
        return <DB.ROW.0.x>
    ENDIF
ENDIF
return <eval <argn>>


===

Моё любопытство взяло верх, провел тесты

Код
FOR i 0 100000
mysql = 12905ms
Sirocco = 13068ms

FOR i 0 10000
mysql = 1495ms
Sirocco = 1320ms


Что говорит нам о том что лучше твой код сократить и использовать возможности mysql smile.gif
Ибо на долгой дистанции она дает бонус в скорости, а на короткой - разница совершенно не заметна, зато нет кода со сложной логикой + есть валидация и возможности sql

Автор: Aimed 13.3.2019, 14:23

Цитата(Ozzy Osbourne @ 13.3.2019, 9:58) *

Нет под рукой сферы что бы проверить, но думаю идея понятна
Было бы интересно взять эти две функции да засунуть в цикл из тысячи итераций и посмотреть на скорость

Код
[FUNCTION f_math_2cathegory]
IF (<DB.Connected>==1)
    DB.Query "SELECT REPLACE(REPLACE(REPLACE(FORMAT('<eval <argn>>', 2), '.', '@'), ',', '.'), '@', ',') as x"
    IF (<DB.ROW.NumRows>>0)
        return <DB.ROW.0.x>
    ENDIF
ENDIF
return <eval <argn>>


===

Моё любопытство взяло верх, провел тесты

Код
FOR i 0 100000
12:12:(a.scp,30)[mysql]
12:12:(a.scp,33) 12905ms

12:12:(a.scp,49)[Sirocco]
12:12:(a.scp,52)13068ms

FOR i 0 10000
2:13:(a.scp,30)[mysql]
12:13:(a.scp,33)TOTAL = 1495ms

12:13:(a.scp,49)[Sirocco]
12:13:(a.scp,52)TOTAL = 1320ms


Что говорит нам о том что лучше твой код сократить и использовать возможности mysql smile.gif
Ибо на долгой дистанции она дает бонус в скорости, а на короткой - разница совершенно не заметна, зато нет кода со сложной логикой + есть валидация и возможности sql


А тут уже зависит от того что ему нужно с этим скриптом делать. Если там одиночный запрос что-бы сделать красивую стрингу и показать её по клику на кучку гп, то тут нет смысла по 10к итераций крутить и тем более 100к.

Автор: Ozzy Osbourne 13.3.2019, 14:26

Ну смысла нет, это был чисто эксперемент не слишком ли медленно мускул отвечает в данном случае и выполняет эти преобразования по сравнению со сферовской работой по строке. Как оказалось - достаточно шустро, поэтому я и предлагаю ему переложить всю работу на него. Даже если редко выводить по клику на кучке гп - решенеи с мускулом имхо покрасивше и погибче.

Редко когда тебе понадобится 10000 раз делать такое преобразование сразу ) А заметить разницу на более мелких значениях я просто не мог ибо её почти нет. Так что это чисто эксперемент, стоит ли юзать мускул в данном случае )

Плюс он спрашивал как сократить его код в "раза три" smile.gif

Автор: Aimed 13.3.2019, 16:29

Цитата(Ozzy Osbourne @ 13.3.2019, 12:26) *

Ну смысла нет, это был чисто эксперемент не слишком ли медленно мускул отвечает в данном случае и выполняет эти преобразования по сравнению со сферовской работой по строке. Как оказалось - достаточно шустро...

Это спорно, если тут речь о кликах по кучкам гп. Там разница будет ощутимой. А ещё он нюбский алгоритм написал в котором внутри главного цикла мега медленные сферовские if проверки стоят.

Цитата(Ozzy Osbourne @ 13.3.2019, 12:26) *

Плюс он спрашивал как сократить его код в "раза три" smile.gif


Вот раза в 3 короче и заодно шустрее. Чем больше число, тем шустрее он будет работать в сравнении с его алгоритмом:
Код
[FUNCTION f_math_2cathegory]
local.lng = <eval strlen(<args>)>
while <local.lng> > 3
    local.lng -= 3
    local.res = ".<strsub <local.lng> 3 <args>><local.res>" //отрезаем по 3 и клеим спереди
endwhile
local.leftover = "<strsub 0 <local.lng> <args>>"//то что осталось спереди, может включать в себя '-'
if (!strcmp(-, <local.leftover>) && strlen(<local.leftover>) == 1)
    //если нашли только '-', отрезаем точку спереди и 0 в конце строки res
    local.res = "<local.leftover><strsub 1 <eval strlen(<local.res>)-2> <local.res>>"
else
    //если спереди осталось больше 1 знака, отрезаем только 0 в конце строки res
    local.res = "<local.leftover><strsub 0 <eval strlen(<local.res>)-1> <local.res>>"
endif
return <local.res>

Автор: Ozzy Osbourne 13.3.2019, 16:41

Цитата
Это спорно, если тут речь о кликах по кучкам гп. Там разница будет ощутимой.

Код
[Mysql] 0,13919
[Sirocco] 0,13388
[Aimed] 0,07185

Так что разница НЕ "будет ощутимой", по сравнению с его кодом smile.gif

Но согласен, твой код в два раза шустрее punk.gif

Автор: Aimed 13.3.2019, 17:01

Цитата(Ozzy Osbourne @ 13.3.2019, 14:41) *

Код
[Mysql] 0,13919
[Sirocco] 0,13388
[Aimed] 0,07185

Так что разница НЕ "будет ощутимой", по сравнению с его кодом smile.gif

Но согласен, твой код в два раза шустрее punk.gif


Да не в два раза там. Говорю же что чем больше будет число, тем быстрее он будет работать относительно его алгоритма. Там и в 5 раз быстрее может быть. Это смотря как тестить.

Поправил свой код, кстати. Там баг был ) и комменты добавил

Автор: Sirocco 13.3.2019, 17:05

local.res = ".<strsub <local.lng> 3 <args>><local.res>"
а что делает эта строчка, когда local.res не объявлен... и следовательно равен 0?


.show f_math_2cathegory 1234 => return "12340"

что меня и бесит!

Автор: Aimed 13.3.2019, 17:13

Цитата(Sirocco @ 13.3.2019, 15:05) *

local.res = ".<strsub <local.lng> 3 <args>><local.res>"
а что делает эта строчка, когда local.res не объявлен... и следовательно равен 0?


А он и так всегда равен 0, даже если сделать local.res = или local.res = "" как только ты используешь local переменную сфера её сразу же обьявляет под капотом.
Поэтому я этот 0 и отрезаю после цикла. И никакого адекватного способа нету в сферскрипте что б инициализировать пустую строку.
Этот сферскрипт это дичь полнейшая. Я пока писал о<вырезано анти-матом>л от количества неопределенного поведения. Как вы вобще на нем пишите, я не понимаю. Это, наверное, мой последний кусок сферскрипта что я написал biggrin.gif

Цитата(Sirocco @ 13.3.2019, 15:05) *

.show f_math_2cathegory 1234 => return "12340"

что меня и бесит!


Скорее всего что у тебя старая, забагованная версия ) Cкопируй ещё раз, сейчас.

О, ещё один баг нашел. Если число имеет 3 или меньше знаков.

Автор: Sirocco 13.3.2019, 17:20

Ну там есть ошибка, при 3х знаках и меньше знаках...

if strlen(<argn>) <= 3
return <argn>
endif

мне не приходила идея отрезать этот лишний ноль. я третий день вообще с этими сложностями борюсь.
мне все говорят иди на 56 сферу, иди на 56 сферу.... все уши прожужжали как это круто...

Автор: Aimed 13.3.2019, 18:15

С багфиксом и комментами

Код
[FUNCTION f_math_2cathegory]
local.lng = <eval strlen(<args>)>
while <local.lng> > 3
    local.lng -= 3
    local.res = ".<strsub <local.lng> 3 <args>><local.res>" //отрезаем по 3 знака с конца args и клеим в начало res вместе с '.'
endwhile

local.leftover = "<strsub 0 <local.lng> <args>>"//то что осталось спереди, может включать в себя '-'

if (!strcmp(0, <local.res>))
    //если число состоит из 3 знаков
    local.res = "<local.leftover>"
elseif (!strcmp(-, <local.leftover>) && (strlen(<local.leftover>) == 1))
    //если нашли только '-', отрезаем точку спереди и 0 в конце строки res
    local.res = "<local.leftover><strsub 1 <eval strlen(<local.res>)-2> <local.res>>"
else
    //если спереди осталось больше 1 знака, отрезаем только 0 в конце строки res
    local.res = "<local.leftover><strsub 0 <eval strlen(<local.res>)-1> <local.res>>"
endif
return <local.res>


Цитата(Sirocco @ 13.3.2019, 15:20) *

if strlen(<argn>) <= 3
return <argn>
endif



Если будет -350 то не поможет это и прийдется писать ту костыльную if логику в цикле как у тебя.

Автор: Llirik 13.3.2019, 19:46

Я тоже хочу шоколад! smile.gif

Да и вообще я не понимаю 0 там или не 0 в конце добавляет сфера или из 10 получилось 16, то всё равно сфера ведь нормально его обрабатывает! Учись читать код, как Нео из матрицы, тогда будет всё ОК!)

А сферу 56c не пробовали?

Автор: Aimed 13.3.2019, 19:58

Цитата(Llirik @ 13.3.2019, 17:46) *

А сферу 56c не пробовали?


Я свой скрипт на 56d nightly билде тестировал.

Автор: Sirocco 13.3.2019, 21:21

Не знаю... я проверял -350 и все работало.
.350
.3500
остаток "-"
-350

Автор: Aimed 13.3.2019, 23:34

Цитата(Sirocco @ 13.3.2019, 19:21) *

Не знаю... я проверял -350 и все работало.
.350
.3500
остаток "-"
-350


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

Автор: Narayan 13.3.2019, 23:44

Сейчас уже есть сфера Х, 56б устаревшая считается

Автор: Sirocco 13.3.2019, 23:55

Да я в твой алгоритм старый это вписал... и даже все промежуточные расчеты тебе скинул. чтобы было наглядно видно как оно работает

Автор: Llirik 14.3.2019, 3:05

Цитата(Sirocco @ 13.3.2019, 23:55) *

Да я в твой алгоритм старый это вписал... и даже все промежуточные расчеты тебе скинул. чтобы было наглядно видно как оно работает

Удали сферу и иди играй в LEGO! smile.gif

Автор: Pagak 14.3.2019, 8:35

Я так понимаю была попытка разделения переменных на типы, т.к. стринги хранить не только накладно по быстродействию, но и они оставляют дыры в памяти (менеджер их хреново подчищает, т.к. блоки маленькие и разной длины).
Но попытка кривая )
С РанУО все бы ничего, но перевод, опять же... и да, там все нахрен переписывать...

Автор: Aimed 14.3.2019, 10:43

Цитата(Pagak @ 14.3.2019, 6:35) *

Я так понимаю была попытка разделения переменных на типы, т.к. стринги хранить не только накладно по быстродействию, но и они оставляют дыры в памяти (менеджер их хреново подчищает, т.к. блоки маленькие и разной длины).
Но попытка кривая )
С РанУО все бы ничего, но перевод, опять же... и да, там все нахрен переписывать...


По моему ты не в теме. Sirocco пытался сделать алгоритм и постоянно жаловался. А когда он его сделал, то алгоритм вышел не очень. Причём тут память и РанУО - хз. Кстати, не важно стринги или инты. Если пулинг не реализован и надо переменную на кучу отложить, то будут дырки в памяти. Но тут весь алгоритм на стеке выполняется, по идее.

Автор: Sirocco 14.3.2019, 11:07

Да не нужен мне этот алгоритм... я сюда именно жаловаться пришел.
чтобы соединить 2 local. нужно использовать функцию для работы со строками... сами не смешно?


Очередной прикол:

Код

local.a = "2019/01/13"
serv.log local <local.a>
tag.a = "<local.a>"
serv.log tag <tag.a> - тут вроде правильно показывает
serv.newitem i_gold
new.tag.a = "<local.a>"
- а тут уже Exp_GetVal: Divide by 0
serv.log tag <new.tag.a> - return 07e3


а не пошел ли ты в жопу как бы намекает мне сфера
ref obj new
одинаковый результат


если написать вот так
new.f_function

[f_function]
return <local.a>
то работает

Автор: Aimed 14.3.2019, 11:41

Цитата(Sirocco @ 14.3.2019, 9:07) *

Да не нужен мне этот алгоритм... я сюда именно жаловаться пришел.


А в чем смысл то? Ты, я так понимаю, на 55 сфере до этого писал? Если да, то там что, все нормально работало, а в 56 все поломали ?

Автор: Sirocco 14.3.2019, 15:05

Вот именно что да.

Автор: Aimed 14.3.2019, 15:12

Цитата(Sirocco @ 14.3.2019, 13:05) *

Вот именно что да.


Если 55 сфера нормально работает и у тебя её исходники даже есть, зачем тебе это?

Автор: Ozzy Osbourne 16.3.2019, 11:44

Кстати мб раздел в 0.56b - 0.56d или 0.56x переименовать?

Автор: Llirik 25.3.2019, 0:36

Ну вы и переименовали ничего не понятно, что за Sphere X такая? Лучше бы просто 0.56x. Читайте выше, как вам сказали!

Автор: Narayan 25.3.2019, 13:42

Цитата(Llirik @ 25.3.2019, 0:36) *

Ну вы и переименовали ничего не понятно, что за Sphere X такая? Лучше бы просто 0.56x. Читайте выше, как вам сказали!

Потому что это не 56 сфера, а ее форк Sphere X, которую разрабатывают другие разработчики

Автор: DKNY 25.3.2019, 18:25

Это как айфон Х

Автор: Llirik 26.3.2019, 16:30

Mortal Kombat X smile.gif

Автор: ЖаК 14.8.2019, 1:26

Откапал для тебя инфы старина. Широко взгляни на этот текст http://wiki.spherecommunity.net/index.php?title=Chapter_5

И еще эти локалы жрут память. ПАМЯТЬ ЖРУТ не забывай об этом в глобальных схемках

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)