Куликовская байка

И Куликовская битва, и Невская придуманы во времена Ивана III и Ивана Грозного, когда надо было славить предков, и этими предками стали Александр Невский и Дмитрий Донской. Видно, как от Краткого летописного свода к «Задонщине» и «Сказанию о Мамаевом побоище» нарастает количество деталей о Куликовской битве: чем позднее источник, тем их больше.

Московские князья вели себя по отношению к татарам довольно трусливо, а героически себя вели, например, тверские и черниговские. Чтобы утвердить значимость Александра Невского, который был просто татарским вассалом, надо было найти какую-то дату, вот ему и придумали победу над шведами и над немцами.

— из статьи «23 мифа, которые раздражают ученых». Вот уж неожиданно.

28 комментариев

Мартин Фефилович Степанищев

В 1632 году указом Михаила, первого русского царя из династии Романовых,  был сформирован первый ре́йтарский полк — конница с огнестрельным оружием. Пётр Великий начал преобразование конницы в драгунские полки, но тем не менее, рейтары ещё успели повоевать в Великой северной войне (1700—1721 гг).

Как примерно выглядели рейтары, можно увидеть на картинке художника Олега Петровича Фёдорова:

Реконструкция: рейтар (130.03КиБ)

В самом начале 18-го века в рейтарах служил мой прямой предок Мартин Фефилович Степанищев. Родился Мартин в 1675 году, по всей видимости минимум два раза был женат, его последняя жена Авдотья была старше его на десять лет — обычно такое случалось во втором или более поздних браках.

Кроме моего прапрапрапрапрапрапрадеда Костентина, мне пока известно ещё трое детей Мартина: Яков и Сергей, умершие в 1717-м и Афонасей, которого в 1721 забрали в Киев солдатом. Я знаю, что на Украине встречаются Степанищевы, возможно это его потомки.

Интересно, что в той местности — в селе Средней Опочки, как оно тогда называлось (я о нём уже писал) Староосколького уезда Заровенского стана в начале 18-го века числилось всего две семьи Степанищевых (вторую я всё ещё исследую). Такая малочисленность, скорее всего, указывает, что мои предки — мигранты.

Степанищевы (36.63КиБ)

Через 40 лет Степанищевых там было уже очень много — то ли расплодились, то ли остальные перехали вслед за своими родственниками.

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

Отроду мне, Мартину, сорок четыре года, у меня дети: Афонасей петнатцати, Костентин осми лет. Да у меня ж во дворе моем старинной крепосной дворовой человек Федот Яковлев сын Пузиков осмидесят девяти лет. Да дяди моего драгуна Семена Маркова сына Степанищева дворовые люди: Фефил Евдокимов сын Зиновьев пятидесят одного году, у него дети: Кирьян двенатцати, Василей двенатцати, близнята.

И оные дворовые люди своей пашни не имеют, а пашут мой человек на меня, а дяди моего драгуна — дворовые ево люди на него, драгуна, мою помесную землю. А окроме того в доме у меня детей и братьев и свойственников, крестьян и бобылей, задворных и деловых людей и никаких наемных работников нет. А буде я сказал ложно или кого утаил, и за то указал бы Великий Государь учинить мне жестокое наказанья: бить кнутом, и за всякою утаеную душу взять из двора моего по лутчему человеку в салдаты не в зачет положенных рекрут, а утаеных дворовых людей взять на себя, Великого Государя, вдвоя и на оных против числа их выделить в том же селе из дач земли моей равною часть, что на них принадлежит по розмеру безповоротно.

Интересно бы выяснить откуда приехали мои предки в Среднюю Апочку, но как это сделать я пока не представляю. Когда этот населённый пункт был основан, мне неизвестно, но в Писцовой книге Староосколького уезда 1698 года он упоминается в составе Ублинского стана (по названию реки Убля, которая существует до сих пор). Может мои предки были одними из основателей? Пока сказать невозможно.

26 комментариев

🐦, где ты был? На Фонтанке 🍺 пил, выпил 🍺, выпил 🍻…

Я уже писал несколько раз на эту тему, но меня всё время просят рассказать не изменилось ли что-то, поэтому я опять вернусь к той же теме — «жаворонки против сов».

Если верить моей анкете на «Моём круге» (сам я в датах постоянно путаюсь), я четыре года как переехал из Москвы в Казань и, как следствие, вынуждено сменил племя — из сов, приходящих на работу к 12, к жаворонкам, встающим в семь утра. Превращение чисто внешнее — я просто все четыре года невысыпающаяся сова и уж тем более прозелитизмом не заразился.

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

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

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

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

21 комментарий

Об оппозиции

— Раз мы говорим об оппозиции, могу я спросить, почему Вы не хотите приоткрыть систему? Вы не видите никакой необходимости в двухпартийной системе?

— Вы просто повторяете взгляды учившейся на западе интеллигенции, что нам необходима оппозиция, чтобы она могла сменить правительство. Но в оппозиции не может быть достаточно много способных людей для того, чтобы взять власть в свои руки. Вот и все. Даже мы не можем найти достаточное количество подходящих людей для работы в правительстве, мы находимся в постоянном поиске таких кандидатов.

«Суровые истины во имя движения Сингапура вперед» Ли Куан Ю.

Вот такой ещё взгляд на оппозицию существует. Ли Куан Ю — первый премьер-министр Республики Сингапур, один из создателей сингапурского «экономического чуда». Кусочек процитирован из его книги, которую я сейчас читаю.

16 комментариев

Иннополис

Не знаю, слышали ли вы про Иннополис — новый город под Казанью, строящийся специально для айтишников. У нас этот Иннополис — притча во языцех, в среде айтишников вряд ли есть человек, кому не знакомо это название.

В воскресенье съедили с одним коллегой туда на велосипедах, интересно было посмотреть на то, что есть. Несмотря на то, что там уже живут студенты, смотреть пока особо не на что.

Готовы, квартал жилых домов, без магазинов, кафе и аптек, но с детскими площадками:

Жилые дома (153.01КиБ)

Университет «Иннополис», в котором как говорят мои знакомые, даже поесть негде (столовая в четвёртом корпусе, куда я заходил, действительно закрыта):

Университет «Иннополис» (192.20КиБ)

И техно-парк, который обычно чаще всего фотографируют по приезде в этот городок. Со всех сторон он выглядит одинаково, хотя и достаточно грандиозно.

Техно-парк Иннополиса (205.20КиБ)

Помимо этого есть спортзал (вчера он был закрыт) и пара зданий, которые ещё строятся. Больше нет ничего. Весь город можно осмотреть за 10 минут (это не шутка). А ещё, ничего, буквально ничего не сделано для того, чтобы по городу можно было передвигаться на велосипеде или с коляской — велодорожки и пандусы отсутствуют, как класс. Это очень странно — ведь город стоится прежде всего для молодёжи.

Резюмируя: смотреть не на что, поесть и остановиться негде, но чувствуется, что если строительство не забросят, через несколько лет учиться там будет интересно.

17 комментариев

«Эль-Капитан»

Никогда в жизни не ставил бета-версию «МакОСи», но пришлось. Я уже писал в твитере, что «Йосемити», текущая версия — худшее, что случалось с «Маками». Тормоза и глюки — это я понимаю, но пять минорных версий подряд не мочь исправить проблему с вай-фаем — это неимоверные перебор. Последнее обновление только ухудшило ситуацию — домашняя сеть 5 ГГц отваливается минут через 10, приходится переключаться на 2,4.

В общем, поставил себе третью бету «Эль-Капитана», пока полёт нормальный. Тормоза ушли, глюков не видно, с вай-фаем если всё и не идеально, то уж точно стало гораздо лучше. Если у кого-то схожие проблемы, крайне рекомендую перейти на бету.

13 комментариев

«Впути»

Впути (72.25КиБ)

Эта история случилась с моим близким родственником и его другом, другим моим близким родственником, но рассказана, для простоты, от первого лица.

Возвращались вчера с коллегой-другом из Москвы в поезде, от нечего делать решили поломать местную сеть вайфая. Мы берём только вагоны «ТКС», а у них на борту есть платная сеть, где можно за небольшую денежку — 150 рублей, посмотреть несколько сотен фильмов на специальном сайте «Впути.ру».

Не то, чтобы нам было жалко 150 рублей, мы и фильмы-то смотреть не собирались, просто было скучно. В общем, легли мы по своим полкам и попробовали пролезть без денег. Друг — сетевик, он занялся анализом трафика (нашли только один айпад, который подцепился к сети, но подключение всё не оплачивал), а я решил помедитировать над сайтом.

Вкратце, у меня путь оказался продуктивнее. Мозги, плюс несколько скриптов на «баше» и список фильмов лёг в файл. На скриншоте открыто три штуки для демонстрации. Надо признаться, что доступ ко всем фильмам получить не удалось (только к трети, примерно), просто дальше интерес потерялся — усилия того не стоят.

13 комментариев

Велосипедное

Cube Reaction GTC SL 29 (189.62КиБ)

Меня можно поздравить сразу с двумя вещами. Во-первых, 27 июня приобрёл себе новый велик, на этот раз это карбоновая рама на шинах 29 дюймов, с воздушной вилкой и трансмиссией 2×10. Вес — чуть меньше 11 кило.

Долго выбирал и примеривался, например, не был уверен, что при моём росте мне подойдут колёса на три дюйма больше и что 2×10 после 3×9 будет удобна. Первое время, конечно, пришлось попривыкать, но сейчас уже чувствую себя уверенно.

150 км (167.28КиБ)

Во-вторых, ещё приблизился к цели проехать 200-километровый бревет — проехал сегодня 150 км. Насколько я знаю, время прохождения вычисляется из расчёта средней скорости 15км/ч, у меня на 150 км средняя — 22, так что есть все шансы.

Конечно, операция сильно выбила меня из колеи (сначала ездил потихоньку — меньше 20 км, позавчера решился на 50, а сегодня сделал рывок), но удалось быстро вернуться в форму.

33 комментария

Марксизм-ленинизм

Храм Всех Религий (168.34КиБ)

Сегодня съездил на велике в Старое Аракчино, посмотреть на Храм Всех Религий. На стене одной из башен увидел серп и молот и вспомнил, как мы спорили с одним моим приятелем — является ли комунизм религией. Мой визави считал, что нет, мне казалось и кажется, что да.

Ну смотрите, некое учение без строгого доказательства — имеется, есть проповедники, есть общины, есть культовые места (очень рекомендую дом Ленина в Ульяновске и дом Сталина в Го́ри), заповеди, соответствующая литература и даже святые мощи, до сих пор лежащие не в музее, а на Красной площади (если убрать из оттуда вам кажется кощунственной мыслью, святотарством, то вглядитесь в это чувство — что оно вам напоминает?).

Кажется, что только богов как таковых нет. Но это только на первый взгляд. Я прожил при советсткой власти только 14 лет, но хорошо помню насколько силён был культ «дедушки Ленина» — я как-то уже писал, что (не шучу) в начальной школе пару раз плакал в подушку, потому что не был с ним знаком. Ленин — нечто доброе, потустороннее, встретится с ним нельзя, но его благость осеняет всех, на ком символ его веры — октябрятский значок с его изображением. Вот примерные мои ощущения в тот период. Конечно, богом его никто не называл, но какая, в сущности, разница?

Признаться, моя точка зрения несколько шаткая и даже спекулятивная — потому что я не специалист ни в советском периоде, ни в религиях. Буду рад вашим комментариям, особенно тем, кому есть что вспомнить о советских временах и культе руководителей того времени.

15 комментариев

Lukøje

Мой сон (46.41КиБ)

Я каким-то образом создал и поддерживал внутри себя миф, что я очень, очень, очень много сплю, куда больше нормы. Серьёзно, мне всегда так казалось. Мониторинг сна в моих часах наглядно показывает глубину моих заблуждений. Людям моего возраста рекомендован сон продолжительностью 7—9 часов, по графику видно, что я сплю, в среднем (график за три месяца) 7—8 часов в сутки, то есть вполне нормальное время.

2 комментария

Чтобы расплавленный автомат не капал на казённые сапоги…

Прочитал надысь на «Пакабу» «Попурри лайфхаков для армии» (кто и зачем, кстати, начал называть хитрости лайфхаками?), заинтересовал пункт номер 12:

Если после прыжка основной и запасной парашют не раскрывается — достань парашютную сумку и засунь туда ноги, согнутые в коленях — так тебя легче будет собрать

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

Интересно, кто изобретатель данного метода и как он его популяризировал? Есть ли у метода евангелисты? А самое главное — есть ли те, у кого такой гемохроматоз в гонадах, чтобы при падении с парашютной высоты вспомнить этот совет и начать хладнокровно его выполнять, дабы на последнем пути осчастливить людей внизу хотя бы такой малостью?

17 комментариев

«Кремниевая долина»

Пока отхожу от операции, смотрю сериал «Кремниевая долина» и дабы не заржавел мозг, сделал расшифровку надписи на футболке Эрлиха — одного из героев сериала, на трёх языках: Перле, Пайтоне и Тикле. Листинг один для трёх языков:

#\
"@{[$\=qq{\n},\
print map {chr $_} (0b1000010, 0b1101001, 0b1110100, 0b1100011, 0b1101111, 0b1101001, 0b1101110)]}";#\
__END__ = 1;\
print(''.join(chr(b) for b in (0b1000010, 0b1101001, 0b1110100, 0b1100011, 0b1101111, 0b1101001, 0b1101110))); #\
"""
foreach name {01000010 01101001 01110100 01100011 01101111 01101001 01101110} {
    puts -nonewline [binary format B* $name]
}
puts {} ;#"""

Дольше всего с Перлом возился, пока не вспомнил, что у него есть вычисление выражений внутри строк через конструкцию @{[…]}. Нужно рассказать как всё работает?

Оставить комментарий

МРТ

МРТ (98.78КиБ)

Я тут на операцию сходил, в качестве основного участника. Как оказалось в чём-то даже забавный опыт, хотя перед ней переживал зверски, но, слава премедикации, из самой операции я помню только один момент — что я нёс какую-то чушь и спрашивал доктора «ничего, что я с вами разговариваю?». Потом провал и вот меня уже будит жена, чтобы забрать домой.

Но речь не об этом. Перед операцией я делал МРТ, причём на определённом аппарате, куда почему-то в последнее время доктора буквально сгоняют пациентов — меня, жену и маму по разным поводам направляли делать сканирование именно на этот аппарат. Я поинтересовался у очередного врача в чём тут дело и он мне показал разницу, взяв в руки два моих снимка.

Разница, оказывается, в детализации. На снимке слева — обычный аппарат, справа — тот, который так полюбили врачи нашего города, обратите внимание на то как хорошо справа видны сосуды.

10 комментариев

Политкорректный Unicode 8

Я всё ждал, когда это появится, и вот наконец в восьмом Юникоде обнаружились модификаторы цвета кожи. Модификаторов в Юникоде — пруд пруди, это специальные символы, которые сами по себе ничего не значат — они привносят что-то новое в символ, с которым комбинируются. Простой пример — модификатор ударения, вот вам ударная буква «й»: «й́».

Модификаторы цвета (57.52КиБ)

Вот восьмой Юникод вводит модификаторы цвета (на картинке выше), при комбинировании с которыми цветные «эмоджи», которые уже давно входят в Юникод, могут менять свой цвет:

Смена цвета (12.86КиБ)

Юникод всё усложняется и усложняется, чувствую, однажды они придут к чем-то похожему на ХТМЛ+ЦСС — будут базовые элементы и стилевые таблицы для их изменения.

6 комментариев

Изучаю TCL

Учу «Тикль» потихонечку — вечерами, урывками. Язык нравится очень простым синтаксисом, который позволяет делать крутые штуки — всё в языке считается строкой, а вопросом интерпретации строки занимается код. Это даёт возможность, например, расширять язык по необходимости.

Попробую пояснить как это работает. В данном случае все три параметра, передаваемых команде puts эквивалентны:

puts Hello; # это строка
puts "Hello"; # это тоже строка
puts {Hello}; # и это строка!

То есть фигурные скобки — это не «блок кода», а строка, правда со своими особыми правилами интерполяции. Это, вместе с конструкциями изменения уровня выполнения и позволяет создавать собственные дополнения к языку. Например, добавил в язык конструкцию unless (это такой if, только проверяется не истинность, а ложность условия):

proc unless {condition body} {
    ;# uplevel — конструкция, позволяющая выполнить блок выше по стеку
    ;# то есть, в данном случае, мы выполняем код в контектсе вызвавшего
    ;# процедуру unless кода, что позволяет увидеть все переменные, которые там определены
    uplevel [list if !($condition) $body]
}

set var false

;# Это наша новая команда
unless { $var } {
     puts "False: $var" ;# напечатает «False: false»
}

set var true

;# А это обычный if, которые есть в языке
if { $var } {
    puts "True: $var" ;#  напечатает «True: true»
}

Надо бы, конечно, что-то пописа́ть, чтобы лучше понять язык, задумки есть, скоро приступлю.

11 комментариев

Tcl/tk и Retina

О, оказывается, можно «ретинизировать» интерпретатор Тикля — сделать так, чтобы программы на этом языке хорошо смотрелись на маковской ретине (см. скриншот).

Ретинизированный Тикль (24.29КиБ)

Для этого нужно скачать программу Retinizer и бросить в неё Wish.app, который находится в /System/Library/Frameworks/Tk.framework/Versions/Current/Resources/

Оставить комментарий

Странный PHP

А вот ПХП, в отличие от ДжаваСкрипта действительно странный. Давайте посмотрим на такой вот код и его результат:

$ php -a
Interactive shell

php > $a = 1; echo $a + $a++;
3
php > $a = 1; echo $a + $a + $a++;
3

Как видите, в том и другом случае у нас один результат — «3». Даже первая «тройка», казалось бы, противоречит здравому смыслу, а вторая — тем более. Что же происходит? Давайте разбираться.

Как работает первый пример?

Операция сложения левоассоциативна — разбор агрументов начинается слева направо. Двигаясь таким образом, парсер видит выражение в котором две операции — сложение и постинкремент, у постинкремента приоритет выше, поэтому вычисляется сначала он — возвращая в качестве значения «1» и увеличивая переменную на единицу, потом вычисляется операция сложения, складывая полученную единицу с двойкой (так как постинкремент увеличил значение переменной на единицу). Получается «три».

Похожим образом обрабатывается умножение вместе со сложением: 2 + 2 * 2 = 6, а не 8, потому что умножение имеет более высокий приоритет.

Во втором случае всё происходит похожим образом, но чуть иначе — парсер, обрабатывая левоассоциативное сложение, берёт первые два аргумента, складывает их, получает «двойку», двигается дальше, видит двойку, сложение и постинкремент переменной. Постинкремент более приоритетный, он его вычисляет раньше, возвращая в сложение «единицу», значение переменной увеличивается, но его уже никто не использует — складываются числа «2» (от предыдущего сложения) и «1» (вернул постинкремент). Получается «три».

В байт-кодах всё перечисленное выглядит следующим образом:

Байт-коды (23.90КиБ)

Тут с восьмой строки начинается второй пример (правда присваивание единицы во втором примере я опустил — как видите второй операции ASSIGN нет).

12 комментариев

Кристина в красном

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

«Кристина в красном» — серия цветных (!) фотографий 1913 года, которые сделал Мервин О’Горман, британский авиационный инженер по методу автохрома. На фотографиях дочь Мервина — Кристина. Такие фото делались на стеклянные пластины, покрытые крахмалом, по методу запатентованному братьями Люмьер в 1903 году.

6 комментариев

«Странный» JS

В ДжаваСкрипте полно странностей, да, но популярная картинка, которая получила сейчас широкое хождение (не буду её приводить, просто суть перепишу) имеет отношение только к безграмотности её авторов. Суть такова:

[] + [] // массив + массив
"" // результат — пустая строка

[] + {} // массив + объект
"[object Object]" // В результате получаем объект? Ну ок

{} + [] // объект + массив
0 // 0? Реально?

{} + {} // объект + объект
NaN // Not a Number? WAT?

Выглядит очень всё ооочень странно, если думать, что происходит именно то, что написано в коментариях справа. На самом деле происходящее неверно интерпретировано авторами.

В ДжаваСкрипте фигурные скобки, помимо объекта, задают ещё и блок кода. В данном случае все «объекты» слева — на самом деле блоки кода. Откроем консоль и попробуем это доказать:

Вот что происходит на самом деле (9.90КиБ)

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

С массивом, возвращающим пустоту при суммировании (конкатенации) всё ещё проще — в данном случае производится попытка вызвать метод toString, который у массива выводит строку его значений через запятую. Так как значений нет, строка пустая.

В общем, ничего сильно странного не происходит.

42 комментария

PHP/FI

На ПХП я начинал программировать с третьей версии, предыдущую, вторую, никогда в глаза не видел. Занялся сегодня археологией, что интересно, интерпретатор собрался под «Мак» без каких-либо проблем, а я уже настроился его патчить.

По описанию, вторая версия — удивительно бедный язык, я попытался написать подобие функции var_dump (которой тогда в языке не было), описал в комментариях с чем столкнулся. Надо сказать, некоторые вещи очень сильно удивили.

Вообще, я хотел написать одну функцию, а отступ для вывода скаляра передавать вторым параметром, но оказалось, во-первых, что не указанный параметр при первом вызове сохраняет своё состояние — в каждый следующий вывод он попадает через какую-то магию (причём это работает не всегда), а во-вторых, если не указать второй параметр, то он получит значение первого, а первый станет не заданным (isset вернёт «ноль», булевского типа нет, поэтому «ноль»).

В общем, пришлось сделать две разные функции.

#!php.cgi -q
<?
# однострочные комментарии только такие, два слеша не работают

    /* так описываются функции */
    function var_dump_scalar $var, $indent (
        if ($indent) {
            /* вот так выглядит конкатенация строки — плюс, а не точка */
            /* интерполяции нет, а одинарные кавычки вернут код символа в них */
            $indent = strtr(sprintf("%' '" + $indent + "d", 0), "0", " ");
            /* функции str_repeat тоже нет, приходится вот так выкручиваться */
        } else {
            $indent = "";
        }

        /* всего три типа данных, нет булевого типа, нет ресурсов — fopen вернёт число */
        /* объектов тоже нет, конечно же */
        switch (gettype($var)) {
            case "integer"; /* после case точка с запятой, а не двоеточие */
                echo "%sint(%d)\n" $indent, $var;
                break;
            case "string";
                echo "%sstring(%d) \"%s\"\n" $indent, strlen($var), $var;
                break;
            case "double";
                echo "%sfloat(%f)\n" $indent, $var;
                break;
        }
        /* можно было бы вернуть всё через return, но мне не удалось бы продемонстрировать несколько вещей */
    );

    function var_dump $var (
        /* смотрим — передан ли параметр */
        if (isset($var)) {
            /* пытаемся определить — не массив ли это, отдельного типа нет */
            $cnt = count($var);
            if ($cnt > 1 || key($var) != "0") {
                reset($var);
                /* echo умеет принимать форматирующую строку */
                echo "array(%d) {\n" $cnt;

                /* других способов проверять конец массива нет — только итерировать по длине */
                /* цикла for в языке тоже нет */
                while ($cnt > 0) {
                    $key = key($var);
                    echo "  [\"%s\"]=>\n" $key;
                    next($var);

                    /* тут только скаляры, так как массивов, кроме одномерных не бывает */
                    var_dump_scalar($var[$key], 2);

                    $cnt--;
                }

                echo "}\n";
            } else {
                var_dump_scalar($var, 0);
            }
        } else {
            echo "Warning:  var_dump() expects exactly 1 parameter, 0 given\n";
        }
    );

/* ассоциативный массив */
$b["aaa"] = "aaa";

/* числовой массив, отдельного типа массива нет, любой тип является нулевым элементом массива */
/* конструкции array(...) тоже нет, массивы задаются только так — в строку */
$a = 1;
$a[1] = 2;

/* двухмерных массивов у нас нет, это просто операция слияния массивов */
$a[] = $b;

var_dump($a);

/* Результат работы:
array(3) {
  ["0"]=>
  int(1)
  ["1"]=>
  int(2)
  ["2"]=>
  string(3) "aaa"
}
*/

/* вот так заканчиваются PHP-скрипты, знака вопроса у закрывающего тега нет */
>

Но самый сок, конечно, это две функции — ClearStack и SecureVar. Их я не использовал, просто не придумал как. Первая является костылём к парсеру (почитайте описание, у меня нет сил это описывать), вторая — фильтрует переменные из ГЕТ- (но почему-то не из ПОСТ-) запроса через маску. Секюрити!

2 комментария