|
Какой рейтинг вас больше интересует?
|
Главная /
Каталог блоговCтраница блогера RMCreative.ru - Блог/Записи в блоге |
|
RMCreative.ru - Блог
Голосов: 1 Адрес блога: http://rmcreative.ru/feed/ Добавлен: 2008-06-12 21:34:00 блограйдером ZaiSL |
|
Yii 1.1.15 (исправление безопасности)
2014-06-30 10:01:39 (читать в оригинале)Вышел Yii 1.1.15, исправляющий проблему безопасности, найденную в 1.1.14. Более ранние версии не затронуты. Если вы используете его, следует обновиться. 1.1.15 полностью совместим с 1.1.14.
Уязвимость затрагивает CDetailView. Если ваше приложение берёт значение value от пользователя, то атакующий имеет возможность выполнить произвольный PHP скрипт на вашем сервере. Мы не раскрываем подробностей сразу чтобы дать время обновиться. По нашим данным детали пока известны только основной команде разработчиков фреймворка.
Уязвимости присвоен номер CVE-2014-4672.
Забрать дистрибутив можно, как обычно, на yiiframework.com или обновиться через Composer.
Иллюстрированное руководство по рефакторингу
2014-06-26 15:21:51 (читать в оригинале)На хабре анонсировали отличное иллюстрированное руководство по рефакторингу. Объяснения простые и понятные, примеры пока на Java и PHP.
Рекомендую
PHP 5.6.0RC1
2014-06-20 14:14:25 (читать в оригинале)Вышел первый кандидат в релизы PHP 5.6.0. Можно помочь разработчикам, проверив свои проекты на этой версии (не на боевых серверах, конечно) и сообщив о проблемах.
Изменения радуют. Рассмотрим самое интересное.
Можно использовать простые выражения в константах и значениях по умолчанию:
class PostCache { const EXPIRE_HOUR = 60 * 60; const EXPIRE_DAY = self::EXPIRE_HOUR * 24; public function put($data, $expire = 3 * EXPIRE_HOUR) { // ... } }
Аргументы переменной длины:
function queue($name, $delay = null, ...$data) { foreach ($data as $item) { Queue::put($name, $item, $delay); } }
Можно на лету распаковать массив в аргументы функции:
function updatePerson($id, $firstName, $lastName) { // ... } $person = ['Alexander', 'Makarov']; updatePerson(42, ...$person)
Ввели оператор для возведения в степень:
echo 2 ** 8; // 256 $n = 2; $n **= 8; echo $n; // 256
При помощи use теперь можно импортировать функции и константы:
namespace My\Space { const FOO = 42; function f() { echo __FUNCTION__."\n"; } } // global namespace namespace { use const My\Space\FOO; use function My\Space\f; echo FOO."\n"; f(); }
- В ядро включили phpdbg.
- Кодировка для htmlspecialchars и других функций, которым она нужна теперь берётся из default_charset. По умолчанию используется UTF-8.
iconvофициально помечен какdeprecated.- Можно повторно использовать
php://input. - Можно загружать файлы больше двух гигабайт.
- Уменьшили потребление памяти при обработке POST-запросов.
Об остальных изменениях можно почитать на соответствующей странице документации, которая ещё будет дописываться.
GitHub Octicons
2014-06-19 14:21:47 (читать в оригинале)Команда GitHub выложило набор значков, используемых в проекте, в свободный доступ под лицензией SIL OFL 1.1. Значки векторные. Выполнены в виде шрифта, использовать который очень просто:
<link rel="stylesheet" href="/octicons/octicons.css"> ... <span class="octicon octicon-flame"></span>
Пользуемся
Android, фрагмент в фрагменте и startActivityForResult
2014-06-12 20:21:30 (читать в оригинале)Одна из самых раздражающих недоработок Android проявляется когда нужно из фрагмента получить изображение с камеры или выбрать из готовых. Для этого используется Fragment.startActivityForResult(), а результат приходит в Fragment.onActivityResult(). Всё бы хорошо, но если фрагмент является потомком другого фрагмента, onActivityResult() не вызывается. Решается не очень тривиально:
startActivityForResult() вызываем не для текущего фрагмента, а для родителя:
private Fragment getActivityStarterFragment() { if (getParentFragment() != null) { return getParentFragment(); } return this; } getActivityStarterFragment().startActivityForResult(...);
В фрагменте-родителе явно вызываем onActivityResult() потомков:
@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); callOnActivityResultOnChildFragments(this, requestCode, resultCode, data); } // реализовано коллегами после изучения https://gist.github.com/artem-zinnatullin/6916740 public static void callOnActivityResultOnChildFragments(Fragment parent, int requestCode, int resultCode, Intent data) { FragmentManager childFragmentManager = parent.getChildFragmentManager(); if (childFragmentManager != null) { List<Fragment> childFragments = childFragmentManager.getFragments(); if (childFragments == null) { return; } for (Fragment child : childFragments) { if (child != null && !child.isDetached() && !child.isRemoving()) { child.onActivityResult(requestCode, resultCode, data); } } } }
|
| ||
|
+557 |
564 |
Виктор Имантович Алкснис |
|
+548 |
625 |
Все для людей |
|
+520 |
561 |
krodico |
|
+519 |
560 |
sich |
|
+500 |
511 |
Выводы простого человека |
|
| ||
|
-2 |
15 |
dandr |
|
-6 |
11 |
Записки океанолога |
|
-7 |
12 |
Internet business in Ukraine |
|
-8 |
10 |
Markup |
|
-9 |
73 |
Кукуц Шмукуц |
Загрузка...
взяты из открытых общедоступных источников и являются собственностью их авторов.
