Dimanych

Рейтинг
155
Регистрация
05.06.2007

Систему я уже давно понял, мне не понятно вот что:

Почему при любом выводе выводится целое число, а при использовании floor ceil int возникают погрешности, почему бы не проводить операцию над целым числом, тем что выдаёт echo? Как я вообще могу увидеть именно то что в памяти находится? 1019.9999999999

$x=10.2*100;

var_dump($x);

> float(1020)

printf("%f",$x);

> 1020.000000

var_dump((int)$x);

> int(1019)

Может быть так будет понятным, вот не вижу я тут никаких 9ток, округление не правильное. :)

Всё таки считаю в этом моменте есть баг, да ещё какой!

Может быть вам просто не хочется вдумываться глубоко, вы считате что в PHP не может быть таких багов и вы сразу выносите приговор? :)

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

По теме:

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

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

С каких пор мир подстраивается под программирование, а не наоборот?

Вывод из этого только один, не доверять ceil и floor, а также использовать round после операций с такими числами...

Дальше можно не обсуждать, всё и так предельно ясно.

Ух, началось, вы хоть вдумайтесь прежде чем писать!

После 10.20*100, PHP выводит целое число, если оно его выводит, почему бы сразу не представить его в памяти именно целым 1020? PHP ведь всё равно меняет типы на лево и на право. Зачем этот изврат конфликтов? И не умрёт интерпретатор поправив этот косяк ;)

Либо выводить уже как и питон, что подчёркивает этот бинарный глюк, либо править по факту.

Ну вот блин, плохо быть самоучкой :)

Я считаю что это как то должно решаться на системном уровне, а не руками программиста :)

http://xpoint.ru/know-how/Articles/FloatingPointNumbers?comments

Anamnado ну а 3я строка ведь не верна!

Как минимум баг, в 5.3 тоже, посмотрите внимательно.

10.2*100 = 1020, оно так и выводится

Может оно в памяти и как float, но математически и визуально 1020

если уже целое число сделать ещё раз целым (int)1020, почему оно становится таким? 1019

Почему только на некоторые числа такое воздействие, где логическое объяснение?)

Учитывая действие floor, системно ошибку я вижу примерно так: 10.2*100 = 1019.99999999

Это баг привидения чисел, если писать код на Си, такого не возникнет.

Dimanych добавил 09-02-2011 в 15:41

Python подтвердил моё опасение...

>>> str = 10.20*100

>>> str

1019.9999999999999

>>> str = int(str)

>>> str

1019

>>> import math

>>> math.floor(10.20*100)/100

10.19

Это что на всех языках так?

Раз уж тема свзяна с mpm_itk, вопрос до кучи.

Кто-нибудь встречался с такой проблемой что когда апач работает долго без перезагрузки, используется только обновление конфига force-reload, то процесы начинают кушать с каждым днём всё больше и больше памяти. Если делать полный рестарт раз в день, то может возникнуть эффект что апач не перезагрузится, т.к. там какой-то процесс подвисший всё ещё занимает порт.

И от чего такое вообще может быть? :)

myhand, клиенты бегут, только ЗП не растёт так как цены мизерные, всё для народа ;)

Как вариант, дать возможность включать пользователям open_basedir на любую директорию и вкл/выкл шелл функций, у меня это организовано. Но всё ещё предрассутки, что система не идеальна, а именно не хватает запрета для PHP/Perl на запись в пользовательские файлы с правами 644.

myhand:
А как проверить это утверждение? 🍿


Для простоты, рассмотрим suexec. Просто поставьте отдельного пользователя, скажем user-cgi для этого, поместите его в группу user. Правильно поставив права - Вы запретите user-cgi редактировать определенные файлы пользователя user, созданные в SFTP/SSH сеансе или по FTP.

Проблема в другом: рядовой пыхыпы-кодер (а тем более, пользователь, использующий какой-то стандартный движок) не будет разбираться в "этих ваших правах". Он просто сделает chmod -R 0777 на всем, куда руки дотянутся.

И плакало ваше "решение". А в том, что на его сайт из-за этого заползут козявки - он обвинит Вас.

проверять не зачем, стоит просто спец. защита от сетевой активности, по логам сайтов, также куча лимитов что не даёт покушать все ресурсы + самописанный киллер который при высоких нагрузках на сервер временно отключает злые аккаунты и воаля, результат)

На счёт user-cgi, тоже самое имел ввиду только назвал wwwusername, знаю что будет работать, единственное смущает что будет количество пользователей в 2 раза больше :)

Ну и ещё по мимо одного плюса получаем несколько минусов, например когда люди вообще не знаю как выставить права и спрашиваю почему не грузятся файлы)

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

Ладно, буду думать что лучше.

Конечно хорошо исправлять ошибки клиентов, но как мне кажется каждый клиент сам отвечает за безопасность своего аккаунта. И то что к нему пробрался вирус через FTP виноват толкьо он сам. Можно вообще тогда не давать не FTP не SFTP не SSH, а только WebFTP :)

У меня в поддержке несколько серверов где клиентам практически за копейки даётся всё и SSH в том числе. И могу вас заверить что за всё время не один сервер не падал и даже не вис до такого состояния чтобы сайты не открывались, а сисадмин по ночам спокойно спит ;)

Конечно 100 мбитные ДОСы они ещё не видели, а мелкие им не по чём :)

Конечно при использовании ITK на равне с плюсами есть одна проблема - это запуск пхп от пользователя, при уязвимости в PHP скриптах очень легко меняются все файлы на аккануте и после заражения очень сложно вычислить где эта зараза может сидеть, т.к. можно перезаписать любой фаил (вставить свою инъекцию) и скрыть следы изменения.

Я уже подумывал о том чтобы создавать wwwusername для PHP, чтобы в папку пользователя могли зайти только сам юзер и его ввв алиас. Также искал возможность создания файлов через FTP под ftp пользователем, но так чтобы владельцы имели полное право на их изменение. Или может есть другие решения?

myhand, наконец-то хоть 1 граммотный ответ, читал читал, думал не дочитаю до него, а он оказался последним :) Хотя ещё был совет не плохой, закрыть хостинг или платить опытному сисадмину.

Для ПС:

Действительно, по факту на лицо взлом root, сделано это с целью заразить веб.

(не исключено что у вас вирусы, да-да, именно у владеющего паролем root, либо система не обновляется)

Проверяем у себя вирусы и программы для подлючения, бекапим пользователей, переустанавливаем всю систему на сервере, делаем её очень безопасной (это отдельный вопрос) и только потом восстанавливаем пользователей.

По поводу прав на папки, с использование ITK всё-таки правильнее 0710, а не 0701 (это ещё одна уязвимость)

Также важно обновлять сервер, по опыту, если не обновлять его в течении 6 мес, то там начинают появляться вирусы, хоть и не всегда опасные, но чуть ли не с правами root. (элементарно - уязвимости в exim или других службах всплывают довольно не редко)

Из личного опыта, приходилось чистить сервера от подобных взломов, проще сразу переустановить систему, получится в разы быстрее и надёжнее.

И вообще, это не дело, опытный сисадмин на шаред хостинге должен быть в любом случае.

А то как правило понаделают хостингов с дешёвыми ценами с единоразовой настройкой, без сисадминов, а результат мы знаем :)

Всего: 830