LINUX.ORG.RU

PHP 5.3.6

 , ,


0

1

17 марта вышел PHP 5.3.6.

В данном релизе устранено 5 уязвимостей:

  • Выход за допустимые границы памяти при обработке изображений со специально оформленным тегом в блоке EXIF-параметров.
  • Ошибка форматирования строки (format-string) в расширении Phar.
  • Целочисленное переполнение в функции shmop_read.
  • Переполнение буфера при указании большого значения в параметре «precision».
  • Нарушение границ памяти при использовании ZipArchive с опцией FL_UNCHANGED при обработке пустого ZIP-архива.

Кроме того, усилена безопасность в коде обработки протокола fastcgi в fpm SAPI.

Другие изменения:

  • Обновлены версии библиотек SQLite3 (3.7.4) и PCRE (8.11).
  • Добавлена возможность соединяться с сайтами по HTTPS через прокси-сервер, поддерживающий basic-метод аутентификации, используя stream_context/http/header/Proxy-Authorization.
  • Изменено значение serialize_precision по умолчанию с 100 на 17.
  • Устранена регрессия при обработке обратных слешей в open_basedir.

Также отмечается, что ветка 5.2 больше не поддерживается.

Полный список изменений

>>> Подробности

★★★★

Проверено: maxcom ()
Последнее исправление: Dendy (всего исправлений: 1)
Ответ на: комментарий от annonymous

> Это единственное преимущество? Так оно, строго говоря, не относится ни к фреймворку, ни к языку. И в чём кайф? Радость тем, кто сидит в голой ОС?

Конечно. Я вот, вспомнив о своей прихоти трёхлетней давности, добавил в свой «десктоп в 50 мб» python 2.5, bottle, sqlite+gui, mercurial 1.6.x, и оно всё равно не привысило размер в 50 мб. Что это, если не ощущение радости? :-)

Если серьёзно, то мы рассматриваем все стадии php и php-шника, от школьной скамьи до (я не знаю, какой там самый высокий ранг у php-разработчика). И смотрим в каждом случае, а вот на этой стадии чем php лучше. И получается, что на этапе вхождения и первого знакомства, о чём очень любили говорить (стремительно тающие в популярности) большевики, bottle.py намного предпочтительнее php, и, тем более, php с обвязками.

Там же ясно написано: встроенный сервер для разработки. Его кто-то запускает в production?

А зачем тогда вообще это средство есть в rails, в django, раз оно никому нигде не нужно? И вообще, кроме вебрика в рельсах, написанного на ruby, и сервера в django на python, такое же средство есть и в cakephp. Только написано оно (барабанная дробь) на python.

Кроме того, вот и скажи мне, как человеку бесконечно далёкому от production и прочих страшных слов, чем связка python bottleapp.py + nginx + mod_proxy + разумное кэширование маловолатильных данных - так плохо для продакшна? И в случае с run(), и в случае с run(server='cherrypy')?

kid_lester
()
Ответ на: комментарий от anonymous

Какие тролли, какие фиги, значит я не зря мчался сюда из Парижа. Какой php, какой python, если уже 17 сообщений идёт обсуждение персонально меня. Мальчик (девочка), а тебя точно интересует python, а не желание получить у меня, скажем, автограф?

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

И да, не обещал. Не верьте жёлтой прессе. Особенно про меня. Особенно тому, что я сам написал. :-)

kid_lester
()
Ответ на: комментарий от user_id_68054

> это нас (питонщиков) — не красит :-)

Не скромничайте вы, питонщики. Комментировать питономагию часто не имеет смысла, настолько там всё понятно. :-)

$hs = «htmlspecialchars»; echo $hs(«Tes't»);

А это разве не относится к eval-хакам? Получается какой-то препроцессор в рантайме, на php-шников иногда просто страшно смотреть, как они любят страдать неэлегантностью под девизом «зато работает!».

kid_lester
()
Ответ на: комментарий от user_id_68054

а почему в задачи на PHP (я про №1 .. так как №2 это вообще какаято не-в-темная фигня) — берётся просто _первые_ 30 тэгов...

....а не 30 самых клёвых (самых рейтинговых) тэгов? %) %) %)

Потому что там на каждый запрос идёт 2 цикла для поиска max и min, на каждой странице, на каждом запросе, и если там вогнать 1000 тэгов, всё это будет тормозить.

Да и вообще, в php с его «ожили, получили скрипт, померли» нельзя без промежуточных хранилищ-мемкешей (которые суть костыли и лишние затраты и имеют смысл только на серьёзных объёмах данных), иметь, когда нужно дешёвое быстродействие (скажем, при проектировании web-интерфейса), простые быстрые хранилища. Зачем? Чтобы по 50 раз не дёргать одну и ту же базу или выяснять одно и то же число. Т.е., в php, насколько я понимаю, без внешних обёрток нельзя сделать вот так:

from bottle import route, run

counter = 0

@route('/count')
def cnt():
    global counter
    counter += 1
    return str(counter)

run()

$ wget http://127.0.0.1:8080/count -o /dev/null -O -
1
$ wget http://127.0.0.1:8080/count -o /dev/null -O -
2
$ wget http://127.0.0.1:8080/count -o /dev/null -O -
3
$ wget http://127.0.0.1:8080/count -o /dev/null -O -
4

kid_lester
()
Ответ на: комментарий от anonymous

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

Хм. Интересно, неужели это добровольно кто-то читает, такое может быть и интересно писать, но чтобы читать — для меня это сюрприз. Заодно поправил откровенный бред, переписать бы всё начисто поскандальнее да поинтереснее, но лень.

kid_lester
()
Ответ на: комментарий от kid_lester

> Потому что там на каждый запрос идёт 2 цикла для поиска max и min, на каждой странице, на каждом запросе, и если там вогнать 1000 тэгов, всё это будет тормозить.

Фея, прежде чем коментить - изучи хотябы один ЯП (2-3 летний опыт работы с этим языком тоже сюда входит), вниматеольно выкури условие задачи, а потом не мение внимательно, желательно пошагово с багтрекером посмотри выполнение.

Если бы в условии сказано было, что массив на входе сортированный и нужной длянны, то осталось бы 4 строчки, но в условии сказано, что на входе ассоциативный масссив типа: «тэг => число вхождений», про его сортированность и длинну ничего не сказано, значит они могут быть любыми. В первой же строке функции от массива отрезается «хвост», так как его максимальная длинна ограничена условием задачи, и о каких тысячах ты говоришь?

anonymous
()
Ответ на: комментарий от anonymous

> Фея, прежде чем коментить - изучи хотябы один ЯП (2-3 летний опыт работы с этим языком тоже сюда входит), вниматеольно выкури условие задачи, а потом не мение внимательно, желательно пошагово с багтрекером посмотри выполнение.

Когда на php напишут вменяемый багтрекер - тогда и посмотрю. А ты имел ввиду дебагер?

Для д., у., м., и в.с. с в. повторяю: если у тебя в секунду запросили 1000 страничек, то этот цикл выполнится 1000 раз, это раз.

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

Надоел унылый пафос анонимусов, у которых один аргумент «а ты кто такой». Было бы что сказать, вещали бы не взирая на личности, творили бы обезличенную лекцию для всего мира, а коль сказать нечего, то и остаётся «а ты кто такой». Что я, анонимуса не знаю, что-ли. Это ппц.

kid_lester
()
Ответ на: комментарий от anonymous

> Лурка интересней тебя в 100500 раз.

Да чего там меня, она интереснее Пушкина, Чехова и Достоевского вместе взятых. Ведь там отражены все типичные школьные мечты о больших бабках, большом сексе, крутых чиксах и всеобщей зависти. И главное, думать не надо, вообще. Ещё бы мне с вашими лурками соревноваться.

ЗЫЖ Показывай _свой_ код на чистом питоне.


- А почему последняя строчка ушла вниз?
- Это подпись
// Анекдот.

kid_lester
()
Ответ на: комментарий от kid_lester

>если уже 17 сообщений идёт обсуждение персонально меня

Ты именно за этим сюда и приперся, что же тебя не устраивает?

И да: показывай _свой_ код на чистом питоне.

anonymous
()
Ответ на: комментарий от kid_lester

Показывай _свой_ код на чистом питоне.

anonymous
()
Ответ на: комментарий от kid_lester

Показывай _свой_ код на чистом питоне. Свой код. А не копипасту.

anonymous
()
Ответ на: комментарий от anonymous

> Ты именно за этим сюда и приперся, что же тебя не устраивает?

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

Потому что умные php-шники после этого события закончились, а остались только какие-то примитивные клоуны, несущие примитивную чушь. Где нормальное обсуждение? Где джентльмены, рассуждающие о мировых судьбах в контексте python и php, и делающие это грамотно и обоснованно?

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

kid_lester
()
Ответ на: комментарий от kid_lester

Клоуна ты можешь посмотреть в зеркале, для это даже интернет не нужен, прикинь.

Показывай _свой_ код на чистом питоне.

anonymous
()
Ответ на: комментарий от anonymous

[python] #!/usr/bin/python import random

class User(object):    def __init__(self, uid):       self.lenOfDices = 5       self.uid = uid       self.dices = { 1 : 0, 2 : 0, 3 : 0, 4 : 0, 5 : 0 }

class Pure(object):        def __init__(self):       self.userFirst = User(1)       self.userSecond = User(2)       self.users = [self.userFirst, self.userSecond]       self.startGame()        def startGame(self):       self.dropDices()       print «First» + str(self.userFirst.dices)       print «Second» + str(self.userSecond.dices)

      self.dropDice(self.userFirst, 4)       self.dropDice(self.userFirst, 5)              self.dropDice(self.userSecond, 2)       self.dropDice(self.userSecond, 3)       print «First» + str(self.userFirst.dices)       print «Second» + str(self.userSecond.dices)           def dropDice(self, user, numberOfDice):       user.dices[numberOfDice] = random.randint(1,6)        def dropDices(self):       for user in self.users:          for i in range(1, user.lenOfDices + 1):             self.dropDice(user, i)                     if __name__ == «__main__»:    p = Pure() [/python]

слишком жирные похапе троле, не ведитесь граждане.

anonymous
()
Ответ на: комментарий от anonymous

поправил форматирование: [code=python] #!/usr/bin/python import random

class User(object): def __init__(self, uid): self.lenOfDices = 5 self.uid = uid self.dices = { 1 : 0, 2 : 0, 3 : 0, 4 : 0, 5 : 0 }

class Pure(object): def __init__(self): self.userFirst = User(1) self.userSecond = User(2) self.users = [self.userFirst, self.userSecond] self.startGame() def startGame(self): self.dropDices() print «First» + str(self.userFirst.dices) print «Second» + str(self.userSecond.dices)

self.dropDice(self.userFirst, 4) self.dropDice(self.userFirst, 5) self.dropDice(self.userSecond, 2) self.dropDice(self.userSecond, 3) print «First» + str(self.userFirst.dices) print «Second» + str(self.userSecond.dices) def dropDice(self, user, numberOfDice): user.dices[numberOfDice] = random.randint(1,6) def dropDices(self): for user in self.users: for i in range(1, user.lenOfDices + 1): self.dropDice(user, i) if __name__ == «__main__»: p = Pure() [/code]

anonymous
()
Ответ на: комментарий от anonymous

поправил форматирование:

#!/usr/bin/python
import random

class User(object):
   def __init__(self, uid):
      self.lenOfDices = 5
      self.uid = uid
      self.dices = { 1 : 0, 2 : 0, 3 : 0, 4 : 0, 5 : 0 }

class Pure(object):
   
   def __init__(self):
      self.userFirst   = User(1)
      self.userSecond  = User(2)
      self.users = [self.userFirst, self.userSecond]
      self.startGame()
   
   def startGame(self):
      self.dropDices()
      print "First" + str(self.userFirst.dices)
      print "Second" + str(self.userSecond.dices)

      self.dropDice(self.userFirst, 4)
      self.dropDice(self.userFirst, 5)
      
      self.dropDice(self.userSecond, 2)
      self.dropDice(self.userSecond, 3)
      print "First" + str(self.userFirst.dices)
      print "Second" + str(self.userSecond.dices)
      
   def dropDice(self, user, numberOfDice):
      user.dices[numberOfDice] = random.randint(1,6)
   
   def dropDices(self):
      for user in self.users:
         for i in range(1, user.lenOfDices + 1):
            self.dropDice(user, i)
            
      
if __name__ == "__main__":
   p = Pure()

anonymous
()
Ответ на: комментарий от anonymous
#!/usr/bin/python
import random

class WTF(object):
	def __init__(self, tags, limit = 30, fontsize = (50, 150)):
		self.body = ''
		self.headtag = '<div>'
		self.closeheadtag = '</div>'
		self.limit = limit
		self.fontsize = fontsize
		self.cnt = 0
		for name in tags.iterkeys():
			self.generateHref(name, tags[name])
		
	def generateHref(self, name, cnt):
		for i in range(0, cnt):
			self.body += '<a href="#" style="font-size: %i">%s</a>'%(random.randint(self.fontsize[0], self.fontsize[1]), name)
			self.cnt += 1
			if self.cnt > self.limit:
				break

	
	def printHtml(self):
		print self.headtag + self.body + self.closeheadtag

if __name__ == "__main__":
	tags = { "vasya" : 10, "petya" : 10, "katya" : 30}
	p = WTF(tags)
	p.printHtml()
anonymous
()
Ответ на: комментарий от anonymous

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

anonymous
()
Ответ на: комментарий от anonymous

ты что, он же - Ъ-Проффи, ему впадлу такой ерундой маяться, лучше 100500 коментов ниочем написать ;)

anonymous
()
Ответ на: комментарий от anonymous

> ты что, он же - Ъ-Проффи

Признание анонимуса - вкуснее и твёрже гороха

kid_lester
()
Ответ на: комментарий от anonymous

> да, понял, выше ифник нужно было ставить и в tags в ините в = {} хотя бы пустой ставить.

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

kid_lester
()
Ответ на: комментарий от anonymous

> и это говорит Главный Троль Всея Интернета?

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

kid_lester
()
Ответ на: комментарий от anonymous

> Ты не трепись, а свой вариант показывай, пока что всем и вся здесь слил ты.

Я уже перечислил, что нужно помыть и постирать. Вообще-то здесь всем и вся слил PHP, но анонимус, увлекшись созерцанием, этого и не заметил. Хорошая вещь анонимус - можно каждый раз себе новую реальность выдумывать и в ней жить.

kid_lester
()
Ответ на: комментарий от kid_lester

Ты же говорил, что писал на пыхе, долже знать как работает switch case. А если он тебе из двух третье выдавал, то тебе нужно руки пересаживать.

anonymous
()
Ответ на: комментарий от kid_lester

Показывай _свой_ код на чистом питоне.

anonymous
()
Ответ на: комментарий от anonymous

> Ты же говорил, что писал на пыхе, долже знать как работает switch case. А если он тебе из двух третье выдавал, то тебе нужно руки пересаживать.

Достоевский не знал, что такое свитч кейс. Но его знает весь мир, а тебя не знает никто.

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

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

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

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

kid_lester
()
Ответ на: комментарий от kid_lester

> Ты не мне докажи, что ты круче меня, потому что мне без разницы результат.

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

И, да: покажи _свой_ код на чистом питоне.

Аня.

anonymous
()
Ответ на: комментарий от anonymous

> Тут приводили ссылку на твой профаил, и доказать кому-то свою крутость перед тобой - более чем просто.

Так почему же ты не можешь даже это? Ты же ведёшь себя как бездарность, серость, посредственность. И вдобавок ещё и ксерокс.

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

kid_lester
()
Ответ на: комментарий от kid_lester

> нужно написать не похожий ни на какой другой из существующих скрипт на python

Так почему же ты не можешь даже это?

ты сам с собой разговариваешь?

anonymous
()
Ответ на: комментарий от anonymous

> ты сам с собой разговариваешь?

Я понимаю, почему тебе нужно доказать всему лору, что ты самый умный, и что php самый лучший, и что все питоны - змеюки подколодные.

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

kid_lester
()
Ответ на: комментарий от kid_lester

Правильно, не умеешь ничего делать - надо паразитировать (на своих же(?) собратьях-питонщиках) и страдать неконтролируемыми словоизвержениями.

anonymous
()
Ответ на: комментарий от anonymous

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

По комнате, среди всей этой суеты и пыли, распространялся странный запах. Неужели это тот самый, чудесный, неужели тут запахло логикой. Но увы, нет, нет и нет, анонимус принес тот самый, знакомый всем аромат, где логикой никогда и не пахло.

Смеркалось. Шли третьи сутки увлекательного разговора. Ну не может анонимус дать отдохнуть фонтану.

kid_lester
()
Ответ на: комментарий от kid_lester

Я не пытаюсь никому ничего даказать, просто дисер по психиатрии пишу ;)

а у нас библиотеки есть

То есть, если ты не найдешь нужной либы - откажешься доделывать проект?

ЗЫЖ Показывай _свой_ код на чистом питоне.

anonymous
()
Ответ на: комментарий от anonymous

> Я не пытаюсь никому ничего даказать, просто дисер по психиатрии пишу ;)

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

И да, я прекрасно понимаю, что когда я спорю с дураком, между нами не видно разницы. Ну и пусть, если даже 1 из 1000 поумнеет и начнёт думать собственной головой, значит уже хорошо, а если нет... значит он превратится в тыкву, и это уже будет на моей совести.

kid_lester
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.