Category: дети

Category was added automatically. Read all entries about "дети".

manandmoon

Конспирологическое

Сегодня я узнал:

* Программа Oracle исходно писалась как база данных для ЦРУ. В конце 1970 годов американская разведка начала постепенно компьютеризироваться, и тут ей очень кстати пригодилась программка, написанная тремя программистами из корпорации Ampex.

* Нынешний хозяин фирмы Oracle, Ларри Эллисон, один из членов этой тройки, никакой не Эллисон. Его мама, Флоренс Спеллман имела роман с неизвестным летчиком, от которого и забеременела в возрасте 19 лет. Папа то ли сбежал, то ли бы отправлен на войну (шел 1944 год), а мамаша, понянчившись с младенцем несколько месяцев, решила, что с нее хватит, и сдала сыночка на руки дяде и тете, Луису и Лилиан Эллисонам. Которые и дали ребенку свою фамилию.
Только на самом деле и они были вовсе не Эллисоны. Лилиан была сестрой отца Флоренс, поэтому в девичестве была тоже Спеллман, а Луис, по происхождению крымский еврей, придумал себе новые имя-фамилию при эмиграции. История умалчивает настоящие паспортные данные дядюшки, только говорит, что Эллисоном он навзвался в честь знаменитого острова Эллис, куда прибывали эмигранты из Европы.

Прямо Галковский какой-то.
manandmoon

Джаваскриптовское

Вот вполне честная работающая программа на Джаваскрипте:

($=[$=[]][(__=!$+$)[_=-~-~-~$]+({}+$)[_/_]+($$=($_=!''+$)[_/_]+$_[+$])])()[__[_/_]+__[_+~$]+$_[_]+$$](_/_)


Можете запустить в браузере, если не верите (не бойтесь, не вирус). Должно вывалиться сообщение с текстом "1", всего-то.

Теперь собираем мозги обратно внутрь черепной коробки и разбираемся, как это работает по шагам. Итак:

$=[]

Все просто. Переменной под названием $ присваивается значение в виде пустого массива.

__=!$+$

__ как и $ - легальное название переменной. Чему она равна? !$ сначала превращает значение $ в булевский тип, потом делает отрицание. Массив (любой) всегда превращается в булевский true, значит, на выходе у нас false. Теперь пытаемся сложить false и [] . Джаваскрипт умеет складывать хоть яблоки с аэростатами, в таких случаях и те, и те сначала конвертятся в строчки, как правило. false становится "false", а [] - пустой строкой. Итого "false"

_=-~-~-~$

~ это побитовое отрицание, а _ это тоже легальное название переменной. Чтоб значение побитово отрицать, его сначала превращают в 32-битное число. Не можешь - научим. Сначала превратим в строку (пустую, как мы уже видели), потом распарсим строку как float (получается 0.0), потом float обрежем до целого, т.е просто 0. Браузеры поумнее обходятся без промежуточной стадии, но стандарт - в принципе - требует, чтоб численные значения представлялись в общем случае с плавающей точкой. Кроме, конечно, исключений, вроде битовых операций.

Да. Мы не еще закончили. ~$ у нас получилось побитовым отрицанием 0, т.е числом изо всех единичных битов, что, как известно, есть -1. -~$ это, стало быть, 1. В качестве несложного упражнения для читателя, оставляю убедиться, что -~x увеличивает любое число на единицу. Инкрементируем таким образом три раза, получаем _ = 3

Следующим шагом мы считаем
(__=!$+$)[_=-~-~-~$] или "false"[3]

Строчки в джаваскрипте ведут (почти) как массивы, поэтому мы берем элемент по индексу 3, и получаем букву "s".

({}+$)[_/_]

3 делим на 3, получаем 1 (обратите внимание, этот трюк используется несколько раз) {} - это пустой объект, + как и в прошлый раз, превращает его в строку. На сей раз строка будет "[object Object]" Так принято. Складываем с пустым-массивом-превращенным-в-пустую-строку, ничего не меняется. У нас получился метод перевода значений в строки. Можно было бы написать ({}).toString() или '' + {} То же самое. (зато {} + '' даст совсем другой результат. Ладно, не будем отвлекаться) Берем от "[object Object]" элемент с индексом 1, это "о"

($_=!''+$)[_/_]

Это уже элементарщина. ! как мы знаем, превращает значение в булевское и логически отрицает. Пустая строчка превращается (в отличие, от пустого массива) в false, а ее отрицание в true, сложение с $ опять превращает значение в строчку, то есть "true" (заодно его сохраняем в переменную $_) , а от строки берется элемент 1, то есть "r"

$$=(($_=!''+$)[_/_] + $_[+$])

Первое слагаемое только что разобрали. Во втором мы считаем +$ что эквивалентно превращению значения переменной $ в число. Как мы уже проходили, это просто 0 Чему равно $_ мы тоже знаем - это "true" нулевой элемент от "true" - это "t" . Складывем с результатом предыдущего шага, выходит "rt". Нам "rt" еще понадобится, поэтому сохраняем его в переменную с мнемоническим именем $$

Теперь мы складываем вместе результаты предыдущих шагов получаем... "s" + "о" + "rt" то есть "sort"

Следите еще? Теперь мы почти выяснили, чему равняется под-выражение

($=[$=[]][(__=!$+$)[_=-~-~-~$]+({}+$)[_/_]+($$=($_=!''+$)[_/_]+$_[+$])])

Это же тоже самое что и

[]["sort"]

Как известно каждому ребенку, все объекты в джаваскрипте - это хэш-мапы, индексированные строчками. В том числе и массивы. У массивов, кроме собственно элементов есть еще и методы, они тоже индексированы строчками. x["sort"] это тоже что и х.sort В случае массива, у нас получается ссылка на функцию сортировки (по-простому можно было бы написать Array.prototype.sort, но кто ж так пишет?). Ее мы пока сохраняем в переменную $, стирая предыдущее значение.

Теперь у нас есть функция sort, которую и исполняем. Это происходит, когда интерпретатор доходит до () посреди выражения. Но sort это функция-метод, она обычно вызывается так:

[2,1].sort()
[1,2]

А что если ее выполнить просто так? Просто так в Джаваскрипте не бывает. Все функции выполняются на каком-то объекте. Если он явно не указан, то им будет глобальный объект window. Что будет, если отсортировать window? Ничего с ним не будет, у него нет элементов с номерами (можно добавить, но в эту степь мы не пойдем) sort вернет объект в исходном виде. Таким образом мы получили себе ссылку на глобальный объект window. Наше выражение сократилось до

window[__[_/_]+__[_+~$]+$_[_]+$$](_/_)

Почти все под-выражения мы уже встречали, кроме

_+~$

_ у нас равно 3, а с ~$ поступаем обычно. Превращаем $, который у нас теперь функция sort, в строчку, выходит "function sort() {\n [native code]\n}" (или что-то в этом духе, в зависимости от браузера). Затем парсим в число. Вообще-то получается NaN (Not a Number), что обычно означает ошибку, но джаваскриптовские побитовые операции так просто не сдаются. Для них NaN это ноль. Отрицание 0, как мы видели, равно -1. Значит, имеем 3+(-1)=2.

Подставляем значения всех переменных:

window["false"[1]+"false"[2]+"true"[3]+"rt"](1)

или

window["alert"](1)

Как уже обсуждалось, это то же самое, что выполнить функцию alert на глобальном объекте window с параметром 1. Иными, неинтересными, словами:

alert(1)

Что и происходит. Вот, собственно, и все дела. Теперь можно шутить про Перл.


Источник: код взят отcюда , куда попал с конференции Blackhat DC 2010, но автор остался не указан. Возможно, кто-то со sla.ckers.org, где третий год растет длиннючий тред на тему обхода защиты от межсайтового скриптинга. Если кто хочет поразбираться в наворотах джаваскрипта и HTML итп, то вам туда. Попробуйте побиться головой об клавиатуру - результат будет удивительно похож на представленный в треде код.

Update: В коментах на реддите дают ссылку на конвертор любого джаваскрипта в эквивалентный скрипт, состоящий только из символов []()+! К примеру, тот же

alert(1)

превращается в

([][(![]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+(![]+[]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+(![]+[]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]()[(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]])(+!+[])
manandmoon

Масонское

На WikiLeaks кто-то выложил годовой отчет масонской ложи Ньюфаундленда.

Как и следовало ожидать, скучно до слез, даром, что всего семь страниц: Провели рождественскую елку. Произвели брата Морли в степень магистра. Собрали $1100 на строительство нового здания ложи. Потеряли $75 членских взносов. В конце трогательная приписка от секретаря, что времени на масонство совершенно не хватает - семья, дети, совсем измотался. Никакой продажи России и даже ни одного человека с сионистской фамилией.

Саентология, ей богу, повеселее будет.
manandmoon

Удивительная история Брук Гринберг

В США живет девочка Брук Гринберг, которая не растет и не стареет. В свои 16 лет она и внешним видом и поведением похожа больше всего на годовалого младенца. Она не умеет ни ходить, ни разговаривать, во рту у нее до сих пор молочные зубы, и на нее до сих пор налезают пижамы 10 летней давности.

Доктора до сих пор не могут понять, что с Брук происходит. Генетические тесты у нее в полном порядке, и хромосомы все на месте. У Брук трое сестер, и они совершенно нормальные девочки. За свою жизнь она перенесла несколько тяжелых заболеваний: язву желудка, рак и кровоизлияние в мозг, но и тут сплошная тайна: опухоль сама собой рассосалась, а инсульт не оставил за собой никаких следов.


Брук Гринберг в 3 года


Брук Гринберг в 12 лет


Брук Гринберг в 15 лет


Слева: Брук Гринберг сегодня. Справа - ее младшая сестра Карли, которой 13 лет.

Теле-репортаж:


Еще:

A case study of “disorganized development” and its possible relevance to genetic determinants of aging
by: Richard F Walker, Lawrence C Pakula, Maxine J Sutcliffe, Patricia A Kruk, Jesper Graakjaer, Jerry W Shay
Mechanisms of Ageing and Development, Vol. 130, No. 5. (May 2009), pp. 350-356.


Про Брук Гринберг на канале ABC

На канале MSNBC
manandmoon

(no subject)

Американцы - вообше страшно пугливая нация. Трусами их при этом не назовешь, нации первопроходцев и ковбоев только дай с кем-ниюудь драку затеять. Они пугливы, скорее, как чересчур беспокойная бабушка. "А вдруг внучок без шапки пойдет гулять и простудится? А вдруг под машину попадет?" Роль внучка при этом играют они же. Поэтому выходят в США публикации вроде Top 10 Most dangerous Toys. Имеются в виду не наборы "юный физик-ядерщик" и не кастеты для детей дошкольного возраста. Самая опасная игрушка в списке - это пластмассовая пчела, у нее могут отломаться усики, а усики ребенок может проглотить. Реальная опасность, кстати. 5 из 398,000 детей подавились. Не насмерть, разумеется, всех успели спасти.
Вторая по опасности игрушка - шарики для стрельбы из игрушечных ружей. 8 из 294,000 детей ушиблось ими. Некторых даже пришлось показать доктору. (А если острым? А если в глаз?)
Ну и так далее.
Отсюда, кстати, мораль: если ехать в США (а хоть и из Канады), то лучшим подарком для аборигенов будет запрещенный Киндер-Сюрприз. По опыту говорю, народ тащщится :)
manandmoon

Лингвистика

До сих пор кое-где имеются еще отдельные товарищи, сомневающиеся в существовании "универсальной грамматики" (т.е. свойств и принципов, присущих всем человеческим языкам и диалектам). Особенно это присуще филологам, которые за изучением причуд отдельных языков иногда ну совершенно теряют общую картину. Среди специалистов по искусственному интеллекту, психологии, и т.д. таких тоже хватает.
Тут даже не надо прибегать к известному аргументу Хомского о недостаточности информации (дети выучиваются говорить, несмотря на то, что информации в их языковой среде явно недостаточно. Следовательно, они еще пользуются какими-то врожденными языковыми принципами) Ведь всегда находятся желающие ответить "Нет, достаточно! Просто дети такие сообразительные и наблюдательные!"
А ответ простой. По большому счету он сводится к "Если вы такие умные, то почему строем не ходите?" Более конкретно: Почему все нормальные дети и даже многие дети с умственной недостаточностью свободно владеют хотя бы одним языком, а тысячи лингвистов, умнейших людей, до сих пор не могут придумать нормальной 100%-но работающей теории языка (о машинном переводе и компьютерной обработке естественных языков я уж не говорю)? Если рассматривать способность к языку как проявление "универсальной мыслительной способности", то приходится делать вывод, что один даунатик умнее всех лингвистов, специалистов по AI, и философов мира. По-моему, все-таки не умнее.
А если так, то, значит, дети знают (подсознательно, естественно) что-то, чего лингвисты и прочие пока не открыли, что нельзя легко вывести при помощи общей сообразительности и наблюдательности. При этом это "что-то" не может зависить от языковой среды: родится ребенок в России - будет говорить по-русски, родится во Франции - будет говорить по-французски, а родится в амазонских джунглях - будет говорить на каком-нибудь хикскарьянском, где вообще все шиворот-навыворот.
Вот это самое "что-то" и есть "универсальная грамматика" - по определению (хотя, наверняка, дело не ограничивается одной грамматикой, там и про морфологию должно быть, и про общие принципы построения речи, и т.д и т.п). Скорее всего, конечно, она состоит не из жестких правил (Правило 23: "Во всех предложениях есть подлежащее и сказуемое"), а из каких-то эвристических принципов, подобно большинству других человеческих знаний. Но то, что она есть - это точно. Иначе babelfish.altavista.com не переводила бы правило в скобках как "In all proposals is a subject the predicate".

(Это все вовсе не я придумал. Насколько я понимаю, первый этот аргумент привел Рэй Джекендофф)