Pull to refresh
69
0
Никита @Nikita

Большие данные, большие нагрузки

Send message
Скорее всего потерянные 88 байт – это ещё одна «магическая» оптимизация php.

При создании объекта, если в нём не было изменений («объект не понадобился») он затем используется, при создания объекта повторно. Звучит запутано, но вот пример:
$a = new stdClass();
echo spl_object_hash($a); //000000007843f529000000002ad1ffeb
unset($a);
echo spl_object_hash(new stdClass()); //000000007843f529000000002ad1ffeb


Тоже самое без unset вернёт разные хеши объектов.

При этом если использовать какой-то класс имеющий конструктор – объект не будет создан повторно (в хе таблице), но будет вызван повторно конструктор.

Это будет иметь высасаный из пальца сайд эффект в случае если вам зачем-то нужно хеши созданных объектов где-нибудь хранить (зачем я не смог придумать):
<?php
class A {
public function __construct() {
echo ' [construct] ';
AllA::addHash(spl_object_hash($this));
}
}

class AllA {
static protected $_hashes = array();
static public function addHash($hash) {
self::$_hashes[] = $hash;
}

static public function getHashes() {
return self::$_hashes;
}
}

echo 'new A: '; $a = new A();
echo 'a hash: ', spl_object_hash($a), PHP_EOL; //new A: [construct] a hash: 000000001b77b1850000000057548e86
echo 'unset a', PHP_EOL;
unset($a);
echo 'object with no referance hash: ',
spl_object_hash(new A()), PHP_EOL;
//object with no referance hash: [construct] 000000001b77b1850000000057548e86

echo 'All hashes:', PHP_EOL, join(PHP_EOL, AllA::getHashes());
//здесь будут два одинаковых значения 000000001b77b1850000000057548e86

Нет, нет.

По второму можно только хаками, например, в каждом типаже объявлять свойство, типа $__trait_[TraitName]. Затем, вытащив массив всех свойств класса, распознать подключённые типажи (это достаточно сделать для каждого класса только один раз). Возможно что-то можно получить рефлексией.

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

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

Конечно чистым множественным наследованием это назвать нельзя, т.к. без грязных хаков вызвать метод любого из родителей мы не можем, а сбор конечных методов для класса происходит в момент его инициализации, а не за счёт MRO, как например в python.

Тем не менее некоторые не сложные задачи, которые можно было бы решить множественным наследованием типажи покрывают.
Такое поведение не является особенностью типажей. Если взять «чистый» класс, внутри метода написать при объявлении переменной static, затем сделать класс наследованный от первого – поведение будет аналогичным, переменная будет инициализирована отдельно в родительском классе и в дочернем.

Хуже всего, что это поведение, не документировано и на php.net я встречал комментарии, что это ошибка. А что не документировано, может быть изменено в последующем.
Пожалуй, это будет тема отдельного топика, но не раньше чем через полгода-год, когда я смогу с типажами поработать «в поле».
И кажется не только Опера.

Про Оперу была статья на Хабре — habrahabr.ru/company/opera/blog/56887/, а в новом Сафари в меню Develop есть пункт «Disable Site-specific Hacks».
Это была ирония :)

Для чего будут использовать Сколково и так понятно. Я это могу оценить по размахам того, как в Зеленограде развивают «нано»-технологии. Офис компании, где я раньше работал занимает сейчас одна из таких «нано»-компаний, размах затеи виден издалека.

Я из Зеленограда и работаю в местной IT-компании. Что действительно, по-моему мнению, нужно в Зеленограде или любой другой кремневой долине – это дороги, дешёвые офисы, инфраструктура, упрощённые схемы образования юр. лиц, грамотные налоговые льготы и пр. Всё остальное вырастет само, никакого нажима сверху и приглашённых зарубежных менеджеров не нужно.
Не спешите. В данный момент «кремневое поле» решено создавать не в Зеленограде или Долгопрудном, в которых уже есть какая-никакая научная база, а в Сколково, где по сути всё нужно делать с нуля.
www.rb.ru/topstory/business/2010/03/25/082831.html
От Александра: Под заголовком «одна секунда» речь идет о фактическом времени выполнения запроса, а не о затраченном процессорном времени. Как и многие вы введены в заблуждение русской версией документации, которая неактуальна. Одновременно с выходом SDK 1.3.3 поменялась система учета параллельных динамических запросов: code.google.com/intl/en/appengine/docs/java/runtime.html#Quotas_and_Limits

Приложение может обслуживать 500 (и даже больше) запросов при среднем фактическом времени выполнения каждого запроса не более секунды. Сколько при этом процессорного времени будет затрачено — роли не играет.
От Александра: Про технику шардинга в GAE есть отличная статья:
code.google.com/appengine/articles/sharding_counters.html
От Александра: В группы объединяются именно объекты. Обычно они объединяются автоматически, когда между ними появляется отношение зависимости (owned relationship). Про отношения очень хорошо написано в документации: code.google.com/appengine/docs/java/datastore/relationships.html
От Александра: С ссылками на документацию, увы, есть проблемы. Система развивается, выходят новые версии SDK, но документация имеет всего одну версию, которая по-тихому (без каких-либо анонсов) меняется. Например, одновременно с выходом GAE SDK 1.3.3 была изменена система
масштабирования приложений (1 секунда на обработку запроса). В Change Log об этом не было сказано ни слова, так же как и о том, что изменения кратко изложены в документации.

Кроме того, часто информация в документации размазана и неполна — знания буквально приходится собирать по крупинкам, регулярно выходя далеко за её рамки. Что-то узнаешь через google groups, что-то приходится проверять с помощью кода. В основном статься собрана как раз из таких знаний. Собрана без картинок и примеров кода. Ну что ж. Учту на будущее.
От Александра: Для обоих. В статье приведены цифры для приложений с включенным биллингом.
Видео записи докладов ожидаются?
На сайте Sun пока обещают только трансляции трёх потоков.
Вероятно, автор (оригинала) опустил 6-ю стадию на которой программист пишет подобную статью: )
В текущей редакции tinyMce есть стд. плагин paste, который автоматически очищает оформление при вставке из ворда. В том числе по CTRL+C, CTRL+V. Плагин был тотально переработан в версии 3.2.3 и работает вполне неплохо, хотя имеет некоторые проблемы в webkit.
Видно было, что журнал испытывал проблемы с финасами и популярностью. Сначала стало слишком мало рекламы, потом количество страниц уменьшилось с 32 до 28.

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

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

Буду скучать по Киви, Голубицкому, Козловскому, Шепневу, Андрееву и другим. Многие из них наверняка уйдут (или уже ушли) в Компьютерру-онлайн, буду пытаться ловить их там.
Да, тем более есть потенциальная возможность подключения к HDMI. (Пока не пробовал т.к. у меня вообще телевизора нет ;) )

Information

Rating
Does not participate
Location
Черногория
Date of birth
Registered
Activity