PHP программирование →  Переход от php4 к php5

Переход к PHP5


Краткий обзор возможностей PHP по материалам PHP 5 beta 3.
PHP, фактически, является самым распостраненным языком для Web программирования. В достижении этого статуса он прошел множество этапов, от простого языка для Web программирования который уступал многим (php3), до сегодняшнего быстрого мощного и расширяемого (PHP4). Тем более приятно, что PHP не стоит на месте и продолжает развиваться оставаясь таким-же простым для начинающих и предоставляя все больше возможностей более квалифицированным разработчикам.

Введение

PHP, фактически, является самым распостраненным языком для Web программирования. В достижении этого статуса он прошел множество этапов, от простого языка для Web программирования который уступал многим (php3), до сегодняшнего быстрого мощного и расширяемого (PHP4). Тем более приятно, что PHP не стоит на месте и продолжает развиваться оставаясь таким-же простым для начинающих и предоставляя все больше возможностей более квалифицированным разработчикам. В предверьи выхода PHP5 появляется множество информации о улучшениях в PHP 5, включая информацию от самих разработчиков. Например, замечательная статья от одного из авторов Zend Engine — Zeev Suraski (http://phpclub.ru/detail/article/2004-01-07) и её перевод на phpclub.ru очень помогут в понимании тонкостей изменения работы с объектами. Существуют, конечно, и общие обзоры возможностей PHP5, сделанные как отечественными так и зарубежными авторами. В своем обзоре я попытался дать наиболее полное представление о изменениях в PHP5, на сколько это возможно. Эта статья также является в некотором роде «отчетом о проделанной работе», поскольку обзор каждого изменения собровождался детальным его изучением и попыткой использовать на практике.

На этом заканчиваем введение и приступаем к основной части.

Новые уровни доступа private и public

В PHP5 добавлены новые модификаторы уровня доступа для переменных классов. Как и во многих других языках программирования, они носят названия private, protected и public.

Private — самый ограниченничивающий модификатор. Private переменная класса может быть использованна только в классе, в котором объявленна. К ней невозможно обратиться из другого программного кода.

Protected — расширение области private, добавляющее к ней возможность обращаться к переменной из классов-потомков.

Public — расширяющий protected модификатор, задающий наиболее широкую область доступа. К возможности использовать переменную в классах-потомках, добавляется возможность обращаться к переменной непосредственно из другого кода. Строго говоря, public не является новой областью доступа. Ранее в PHP все переменные классов являлись public переменными.

Private переменные используются для алгоритмов, которые используются только в текущем классе и не могут быть переопределенны в классах-потомках. Protected может быть использован, когда организовывается семейство объектов, обладающих сходными алгоритмами и организованных в иерархию. Использование public переменных, обычно, не является хорошей практикой но иногда оправданно. Их можно использовать, если у класса много свойств, которые должны быть доступны всем алгоритмам, использующим этот класс.

Аналогично, private/protected/public мидификаторы применяются к методам класса. Методы, объявленные без модификатора, являются public методами.

Если метод или переменная переопределяются в классе-наследнике, то уровень доступа должен быть таким-же или выше. Например, protected метод в классе-потомке можно сделать public, но нельзя private.

Для примера рассмотрим классы NewClass и NewClass1.

class NewClass {
// new PHP5 modifiers
private $myPrivateVar = 'myPrivateVar';
protected $myProtectedVar = 'myProtectedVar';
public $myPublicVar = 'myPublicVar';
// old PHP declaration
var $myVar = 'myVar';
}

class NewClass1 extends NewClass {
function getProtectedVar() {
return $this->myProtectedVar;
}
}


NewClass содержит несколько переменных с разными областями доступа. NewClass1 используется для тестирования областей видимости, связанных с наследованием.

Создаем объекты классов:

$c = new NewClass();
$c1 = new NewClass1();


Обращаемся к переменным:
print $c->myPrivateVar;

Непосредственное обращение к private переменной приводит к ошибке.
print $c->myProtectedVar;

Непосредственное обращение к protected переменной приводит к ошибке.
print $c->myPublicVar;

Обращение к public переменной возвращает её значение.
print $c->myVar;

Обращение к переменной, объявленной в старом стиле, равносильно обращению к public переменной.
print $c1->myPrivateVar;

Private переменная не была унаследованна классом NewClass1. Обращение к ней равнозначно обращению к необъявленной переменной.
print $c1->myProtectedVar;

Protected переменная была унаследованна и непосредственное обращение к ней приводит к ошибке. Для проверки, что она была унаследованна вместе с начальным значением, можно вызвать «print $c1->getProtectedVar();».
print $c1->myPublicVar;
Public переменная была унаследованна и обращение к ней возвращает её значение.

Продолжение:
http://php5.com.ua/blog/php-programming/134.html
http://php5.com.ua/blog/php-programming/135.html
http://php5.com.ua/blog/php-programming/146.html
2

Что новенького →  Лебедев рассказывает об "Этоноэксп Украина 2009"

В продолжение темы о возвращении Артемия Лебедева из экспедиции по Украине. Я писал, что были камеры.

Небольшая подборка видео:

Лебедев рассказывает об «Этоноэксп Украина 2009»


Какой же он Тема Лебедев


лебедев — почему Лебедев не дает интервью?


Лебедев про проект в Киеве


Лебедев про схему киевского метро


Как удержать лидерство в компании совет от Лебедева


Как устроиться на работу к Лебедеву в киеве


Лебедев про плакатик

Лебедев о визитке студии ministudio


Вах кукусик пусик пусик!!!
2

Управление проектами →  Как программисты строили дом (Юмор)

1.03. Уpа! Hам пpедложили кpупный контpакт на постpойку 12-этажного жилого дома. У всех буpный энтузиазм. Выпили на pадостях 2 ящика пива.

2.03. Заказчику не нpавится выpажение «как только, так сpазу». Тpебует назвать конкpетные сpоки. Темный, ничего не смыслит в высоких технологиях.

3.03. Обсуждали сpоки. Выпили 3 ящика пива. Петpович говоpит, что тут всей pаботы на 4 месяца. Значит, на самом деле 8. В итоге в контpакте записали 12, хотя pаньше, чем за 16, вpяд ли упpавимся.

6.03. Петpович пошел сдавать бутылки.

8.03. Отмечаем 8 Маpта. Женщин у нас в фиpме нет, так что пpаздник никто не поpтит.

2.04. Петpович говоpит, что поpа начинать pаботать. Сговоpились они, что ли? Обнесли площадку забоpом и повесили кpасивые плакаты «Стpоительство ведет компания „Аllstroу“ (www.аllstгоу.ru)». С чувством выполненного долга игpаем в Quake.

20.04. Пpишел заказчик, интеpесовался, как дела. Посадили его за Quake и позволили нас всех обыгpать.

21.04. Обсуждали пpоект. Сидоpов пpедлагает кpупноблочную аpхитектуpу. Петpович настаивает, что все надо стpоить по стаpинке, из киpпича, не по-ламеpски. Самый pадикальный пpоект пpедложил Алекс: постpоить несколько десятков деpевянных коттеджей и потом соединить их подземными туннелями. Hа Западе сейчас так модно. Hапомнили ему, что заказчик тpебует именно 12-этажный дом. Пытались pешить вопpос дуэлью в Quake. Алекса с его коттеджами завалили сpазу, но между Петpовичем и Сидоpовым вышла ничья. В итоге каждый будет стpоить по своему плану, а потом попытаемся все это соединить, чтоб не pухнуло.

30.04. Пеpвый этаж готов! Показали его заказчику. Он интеpесовался, почему в pазных комнатах pазная высота потолков, почему из стен вываливаются киpпичи и почему в доме нет подъезда, а влезать пpиходится чеpез окно. Объяснили ему, что это специальные огpаничения демо-веpсии. Уходим на пpаздники, гоpдые собой.

10.05. Петpович пpотpезвел пеpвым и долго pугался. Мы думали, что Алекс выпил все пиво. Оказалось хуже: мы забыли пpо фундамент. В пpоекте он, конечно, описан, но ведь документацию читают только ламеpы.

11.05. Ломали пеpвый этаж. Обидно, блин.

11.07. Работаем. Петpович достpаивает втоpой этаж, Сидоpов — пятый. Алекс отгpохал шахту лифта до девятого этажа, она в сильный ветеp подозpительно качается. Вpеменно поставили деpевянные подпоpки.

17.07. Алекс стpоит чеpдак и кpышу. Hа земле. Потом поднимем кpаном.

13.08. У Сидоpова не стыкуются панели. Щель больше метpа. Сидоpов позвал Петpовича, но тот заявил, что у него своих дел по гоpло и вообще без знания внутpенней аpхитектуpы панелей ничего сделать нельзя.

14.08. Разломали несколько панелей, чтобы Петpович мог изучить внутpеннюю аpхитектуpу. Петpович pугается, кpичит, что пpоектиpовщики панелей — полные ламеpы.

17.08. Петpович заделал дыpу. Пpавда, панели пpи этом пеpекосились, но это уже мелочи. Пpоводку из обеих панелей пpишлось вывести наpужу и связать узлом. Петpович замотал узел изолентой и увеpяет, что будет pаботать, если только дождь не пойдет.

1.09. Стpойкомбинат выпустил новую веpсию панелей, улучшенной пpочности и утепленности, со встpоенными стенными шкафами. Пpавда, ни по фоpме, ни по pазмеpу они не совместимы с пpедыдущими и в тpи pаза тяжелее. Hа какую аpхитектуpу они вообще pассчитывают, эти комбинатские?

16.09. Пpибежал Алекс, обуpеваемый идеей. Пpедлагает сделать все окна в доме изменяемого pазмеpа. Говоpит, за-казчик будет тащиться. Сказали ему, чтоб не выпендpивался.

2.10. Петpович добpался до пятого этажа. Гоpд собой. Обpатили его внимание на тот факт, что его стена наклонена под углом 40 гpадусов. Он pугался, кpичал, что мы ламеpы и ничего не понимаем. Потом обещал подумать.

3.10. Пpиходил заказчик. Спpосил, почему стена наклонена под углом 40 гpадусов. Объясняли ему пpо силу Коpиолиса. Он все выслушал, потом сказал, что он, конечно, в стpоительном деле ничего не смыслит, но у него по соседству точно такой же дом, и там стена пpямая. Блин. Потом этот идиот Алекс ляпнул пpи нем пpо свои изменяемые окна. Заказчик, естественно, загоpелся и настаивает, чтоб делали именно так. Дважды блин.

4.10. Спpосили Алекса, пpидется ли все pазбиpать pади его окон. Он увеpяет, что нет — будто бы и у стандаpтных панелей есть такая недокументиpованная функция.

5.10. Петpович пpизнал, что со стеной действительно имеется пpоблема. Говоpит, что непpавильно положил какой-то киpпич. Hо чтобы понять, какой именно, надо пеpебpать их все. Пpоще все снести и постpоить заново.

6.10. Убеждали Петpовича, что постpоить все заново из киpпича он уже не успеет. Демонстpиpовали ему pасчеты на калькулятоpе. Петpович pугался, кpичал, что калькулятоp пpидумали ламеpы. Потом все-таки согласился стpоить из панелей и ушел с гоpя в запой.

8.10. Ломали киpпичную часть. Попутно повpедили панельную. Вся постpойка скpипит и угpожающе шатается. Укpепили деpевянными подпоpками и пошли игpать в Quake.

17.10. Петpович вышел из запоя. Работаем.

7.11. Пpазднуем 7 Hоябpя — или как оно там тепеpь называется? Коммунистов у нас в фиpме нет, так что пpаздник никто не поpтит.

15.11. Вспомнили, что у нас кpан достает только до 8 этажа. Послали Сидоpова доставать новый кpан. Игpаем в Quake. Алекс замочил Петpовича. Растет смена!

24.11. Веpнулся Сидоpов. Кpан не достал, зато достал кpутой экскаватоp. Пpедлагает выpыть глубокую шахту и постpоить дом не в высоту, а в глубину. Говоpит, что нигде в контpакте не сказано, что 12 этажей должны быть над повеpхностью. Еле отговоpили.

25.11. Устpоили мозговой штуpм по пpоблеме кpана. Hа последней бутылке пива нашли pешение. Бpосили основное стpоительство. Стpоим pядом 4-этажный дом. Потом втащим наш кpан ему на кpышу.

25.12. Пpазднуем католическое Рождество. Католиков у нас в фиpме нет, так что пpаздник никто не поpтит.

14.01. Hичего не помню. Голова болит. Мужики, какой сейчас год?

2.02. Hу, кажется, наконец-то достpаиваем 12-й этаж. Завтpа будем пpилаживать свеpху чеpдак и кpышу, что сооpудил Алекс.

3.02. Алекс — ламеp. Кpыша pегуляpно съезжает. Пока подпеpли кpаном. Думаем, что делать дальше.

4.02. Алекс доказывает, что он не виноват. Пpосто 12 этажей Сидоpова на 4 метpа выше и на 5 метpов шиpе, чем 12 этажей Петpовича. Выяснилось, что они стpоили из pазных панелей. Hо Алекс все pавно ламеp, поскольку его кpыша не подходит по pазмеpу ни одному из ваpиантов. Его шахта лифта, кстати, тоже.

5.02. Латали, укpепляли и наpащивали кpышу. Петpович говоpит, что будет деpжаться, если снег не пойдет.

7.02. Снег пошел.

10.02. Соорудили крышу из фанеры, покрасили под жесть. Будем надеяться, заказчик не заметит.

11.02. Тестировали лифт. Его остановки приходятся между этажами, но выбраться из кабины можно. Hа четных этажах ползком, на нечетных — подтягиваясь. Hе забыть описать это в документации.

12.02. А вообще-то лифт ездит крайне медленно. Петрович ругает всех ламерами и собирается заняться оптимизацией.

13.02. Петрович оптимизировал лифт. Тот разогнался, пробил крышу и улетел в неизвестном направлении. Хорошо, что крыша фанерная, и чинить будет легко. После этого шахта лифта рухнула. Вспомнили, что так и не заменили деревянные подпорки на что-нибудь более прочное. Hичего. Ходить пешком полезно.

15.02. Идут отделочные работы. Почему-то куда-то исчезают маляры и штукатуры. Договорились, чтоб прислали еще.

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

20.02. Алекс, наконец, доделал свои изменяющиеся окна. Тестировали. Выяснилось, что при изменении размера окна в нем бьются стекла. Кроме того, наблюдается ряд побочных эффектов. Hапример, в гостиную одной квартиры может въехать унитаз и ванна из другой. Также иногда исчезают двери и осыпаются балконы. Жаловаться на стройкомбинат бесполезно — они скажут, что нечего пользоваться недокументированными функциями.

21.02. Приходил заказчик. Спрашивал, нельзя ли внести в проект небольшие изменения. В частности, вместо 12-этажного дома построить поселок из деревянных коттеджей, соединенных туннелями. Он прочитал, что на Западе сейчас так модно. Hейтрализовали Алекса прежде, чем тот успел открыть рот, и вежливо, но твердо объяснили заказчику, что он неправ.

22.02. Балконы продолжают сыпаться, хотя изменяемые окна мы больше не трогали. Видимо, это какой-то независимый глюк. Какой, искать уже поздно, так что просто отодрали оставшиеся балконы от греха. Попробуем объяснить заказчику, что это сделано в целях оптимизации.

23.02. Праздновали 23 февраля. Военных у нас в фирме нет, так что праздник никто не портил. Женщин тоже нет, так что подарков нам никто не дарил. Обидно.

25.02. Алекс попытался доделать свои окна. В результате половина из них ужалась до нулевого размера и обратно не разворачивается. Сказали ему, чтоб больше не выпендривался, а то будет еще хуже.

27.02. Вспомнили, что так и забыли сделать подъезд. Размышляли, не рухнет ли дом, если прорубить его сейчас. Сидоров сказал, что лучше не рисковать. Петрович обозвал его ламером и согласился. Hе забыть описать в документации вход через окно как особенность дизайна.

1.03. К-как первое марта?! Откуда?! Вчера же еще… Блин. Кто ж знал, что в этом ламерском феврале 28 дней! Выходит, сдача объекта — не через неделю, а послезавтра?!

2.03. Аврал. Работаем 24 часа в сутки, не просыпаясь.

3.03. Убедили заказчика, что нам нужен еще день для финального тестирования. М-да, ну мы вчера и наработали… А в общем, не все так страшно. Hу что с того, что некоторые двери находятся в полу или в потолке, либо ведут с десятого этажа прямиком на улицу, в некоторые квартиры в принципе невозможно попасть, санузел кое-где совмещен с кухней, в половине дома нет воды, в другой половине — электричества, канализация обрывается на шестом этаже, а лестницу между восьмым и девятым пришлось сделать веревочной? Главное — провести заказчика правильным маршрутом. И еще — успеть до завтра развесить на месте исчезнувших окон картинки с изображением заоконных пейзажей…

4.03. Yes! Yes! Мы сделали это! Отмечаем сдачу объекта. Я пью мало, мне надо еще успеть уволиться, прежде чем эта хренотень рухнет к чертовой матери…

Источник: Moskalyuk.com
1

Что новенького →  Отчет по семинару «Производительность MySQL»

Для тех, кто не в теме: http://php5.com.ua/blog/news/128.html

Итак, г. Киев, ул. Мазепы, 34. Утро 9:45.
Пришли, получили бейджик, на ресепшине сидела некрасивая девочка с большими сиськами не имеющая никакого отношения к семинару. Поднимаемся наверх, стоит два куллера, рядом столики с кофе, чаем, сахаром. Утром кофе выпить не успел, беру стаканчик, бросаю кофе, набираю воды из красного краника, кофе растворился, вода холодная, мне объяснили, что вода не успела нагреться (хуй с ним).

10:00 должно начинаться, а нихуя не происходит, сидим (хуй с ним).

10:15 включили проектор, начали настраивать, сидим (хуй с ним).

10:30 вроде как настроили, вышел чувак, представился Java тренером (хуй с ним, но я же про MySql пришел слушать), извинился за клоунаду (как-то так он сказал) и рассказал, что бейджик нужно носить с собой, а то выгонят за педофилию, типа в этом здании много маленьких деток, еще рассказал, где можно пообедать (пульт, который переключал слайды — не работал).



Потом вышел Дмитрий Кравчук, работает в Sun и живет во Франции уже 12 лет. Обратите внимание, у него нет указки, а в картинку тыкает нерабочим пультом.



11:00 Дмитрий заикнулся о том, что ему очень хотелось бы где-то рисовать (ну не подумали сразу как-то, хуй с ним).
На сколько я понял, он тестер на Sun. Т.е. приходят люди и говорят, вот у нас есть проблема, ложится база, а он, как правило, эмпирическим методом решает эту проблему.



12:00 принесли доску для рисования.



Был программер из Percona.



В 13:00 прибежал «Java тренер» (ну так незаметно:)) и махнул Дмитрию, типа обед. Несколько раз он прибегал (ну так незаметно:)) тестил пульт от слайдов. В 13:30 был объявлен перерыв.



Дмитрий отмочил: «Если у вас большой писюк».



После обеда пульт от слайдов починили, но он все равно не работал и слайды переключались голосом при помощи специально обученного «Java тренера», а еще в микрофоне сели батарейки. А доске Дмитрий был рад.



Общее впечатление по пяти бальной шкале.
Организация: 2. Сука, прийдите на час раньше, проверьте микрофон, пульт от слайдов, спросите у человека, что ему нужно на докладе, включите кулеры и не намекайте на педофилию, упоминая о бейджиках.
Доклад: 3 (потому что платно, было бы бесплатно, была бы скидка на неопытность и +1). Ну как-то нудновато. Проблема находится методом тыка, потом ищется логическое объяснение, устраняется тоже, практически, методом тыка. Были интересные моменты. Зал реагировал вяло и вопросы задавались очень вяло.

Вывод: не стоит запрошенных денег.

З.Ы. Оценки это лично мое мнение и ни на что не претендуют.
2

Что новенького →  Скидка на семинар «Производительность MySQL», 22 сентября 2009 года

У кого есть желание получить скидку на семинар http://www.i-klass.com/events/mysql/?

Вход с таким кодом будет стоить 80 грн.

Коды скидок:
1. 309208
2. 311429
3. 311657
4. 315914
5. 317652
6. 318549
7. 321296
8. 328027
9. 336922
10. 337122

Подробнее о том, что делать с кодом можно прочитать там же.

Коды скидок предоставлены w2.com.ua

В комменты пишите пожалуйста забитые коды скидок.
3

Шпаргалки →  Случайный IP адрес

long2ip(mt_rand(0, 65537) * mt_rand(0, 65535))
2

Что новенького →  Сегодня была первая версия линукса и сегодня он совершеннолетний


Ровно 18 лет назад, 17 сентября 1991 года, студент Университета Хельсинки Линус Торвальдс опубликовал в сети исходный код первой версии Linux — 0.01. Хотя официальным днем рождения Linux считается 25 августа — день опубликования сообщения о начале проекта в comp.os.minix — тем не менее, эта дата тоже по-своему знаменательна. Совместное использование компонентов GNU и ядра Linux дало жизнь популярному семейству свободных операционных систем — GNU/Linux. На сегодняшний день, Linux является одним из самых ярких примеров открытой разработки ПО.
3

MySQL →  Письмо веб-разработчика о проблемах времени

Проблема уже исправлена и как оказалось была довольно интересная. Я выявил, что в intranet-е нельзя было сохранить лишь два месяца — апрель и ноябрь. Все остальные месяцы успешно работали и сохранялись. Довольно странная ситуация, правда? Ведь все месяцы обрабатываются
одинаково и нет какого-то условия именно для этих двух месяцев. Немного поразмыслив, мы с Пашей предположили, что это проблема существует из-за… перевода времени и неккоретных настроек MySQL базы; Поскольку мы в админке выбираем только год и месяц (без точного времени), я присваиваю 00:00:00 часов первого дня выбраного месяца и года, тоесть самое-самое начало.

(Для програмистов: mktime(0,0,0,$month,1,$year))
В случае перевода времени, идет сдвиг на час, и таким образом мы получаем уже 23:59:00 31-ое марта в случае выбора апреля…

(Для програмистов: получившийся mktime я сохраняю в базу как
FROM_UNIXTIME(mktime))

Это предварительный анализ,теперь факты, относительно этого:
1) Не работает только на тех месяцах, перед которыми изменяется время (если в марте переводят часы — то в апреле, если в октябре переводят часы — то в ноябре)
2) Обнаружена ошибка только при записи в/из базы, обработка функции FROM_UNIXTIME MYSQL
3) На нашем локальном сервере этот же скрипт успешно работает с любыми месяцами — следовательно проблема именно в настройках MySQL базы.

Для более точного исследования необходимо дополнительное время и более глубинно изучить эту проблему с переводом времени, скажу только что я с таким сталкиваюсь впервые, когда компьютер неверно определяет свою же дату (фактически наблюдается де-синхронизация PHP timestamp с MySQL timestamp)
3

JavaScript программирование →  Добавить страницу в избранное

Работает это в следующих браузерах:
Internet Explorer (Win), FireFox (Win/Mac), Opera (Win), Netscape (Win/Mac), Mozilla (Mac)

Не работает в Safari (Win/Mac). Тех кто знает решение — жду в личке или в комментах.
Вернее в Safari выдает пользователю сообщение: «Что бы добавить страницу в избранное нажмите CTRL-D.»
Ну или Command-D — в зависимости от платформы.

function bookmark(title, url) {
        if (title == undefined)
                title = document.title;
        if (url == undefined)
                url = top.location.href;
        if (window.sidebar) {
                // Firefox
                window.sidebar.addPanel(title, url, '');
        } else if (window.opera && window.print) {
                // Opera
                var t = document.createElement('a');
                t.setAttribute('rel', 'sidebar');
                t.setAttribute('href', url);
                t.setAttribute('title', title);
                t.click();
        } else if(window.external ) {
                // IE
                window.external.AddFavorite(url, title);
        }
        else {
//сюда уже проверку сами вставите, хотя, по идее это условие никогда не выполнится
//но для надежности пусть будет
                alert('Что бы добавить страницу в избранное нажмите CTRL-D.');
        }
        return false;
}
 
if (window.external || window.sidebar || (window.opera && window.print)) {
        document.write('<a href="/#"  onclick="bookmark(\'Сайт о веб-программировании\',
\'http://php5.com.ua\'); return false;">Добавить в избранное<\/a>'
);
}
else {
//проверяем макинтош это или писюк
        this.agent = navigator.userAgent;
        this.mac = this.agent.indexOf("Mac")>-1;
//для макинтоша соответственно выводим
        if (this.mac) document.write('Что бы добавить страницу в избранное нажмите Command-D.');
//для PC выводим
        else document.write('Что бы добавить страницу в избранное нажмите CTRL-D.');
}
3

Что новенького →  Стив Джобс вернулся с новой печенью


Перевод:
Знаете, я очень счастлив быть тут сегодня с вами всеми. Как некоторые из вас может знают, 5 месяцев назад мне пересадили печень. Так что теперь у меня печень человека 20-30 лет, который погиб в автомобильной аварии, и который был настолько добр, что пожертвовал свои органы. И меня бы тут не было без такой доброты. Итак, я надеюсь, что все мы можем быть настолько добры, и могли бы стать органами доноров. Я хотел бы воспользоваться моментом и поблагодарить всех в семье Apple за сердечную поддержку, которую мне оказывали. Это на самом деле много значит.
3
←  сюда    туда  →
1 2 3 4 5 6 7 8 9