Муза сопротивления

Вышел новый альбом «The Resistance» мною нежно и трогательно любимой английской альтернативно-роковой группы MUSE. Что тут сказать — видно, что мужики работают и это хорошо. Ортодоксальным фанатам, типа меня, видно что они иногда работают немного не в том (IMHO, конечно) направлении, которое было раньше, но — се ля ви, так сказать: все мы личностно растем и развиваемся и ожидать от Мэтью Бэллами (лидер и солист группы), что он вечно будет тем депрессивным и рефлексирующим нытиком-истериком-страдальцем, каким мы его любим, было бы неправильно и несправедливо. 😉

Что же касается самого альбома — то слушать вполне можно. Более того, слушать настоятельно рекомендуется и желательно несколько раз — лично я с первого «проникся» и «въехал» далеко не во все и со вторым-третьим прослушиванием альбом воспринимается все лучше и лучше.

Некоторые говорят, что в The Resistance меньше драйва — это не вполне верно. Практически нет откровенно лиричных/балладных вещей, но и хардкорно-драйвовых тоже не много — динамика в целом выровнена и усреднена. Альбом атмосферный — его надо слушать от начала до конца, а не в режиме случайного воспроизведения, — он постепенно «раскручивается», градус нарастает, драйва и надрыва становится больше… Немного похоже на ставший уже иконой фанатов классический трек «Showbiz», но там это сделано в рамках одной песни, а тут — в процессе всего альбома. Драйв достигает максимума где-то в районе «Unnatural selection», после чего на «MK Ultra» переходит в типично Мьюзовскую «тянущуюся тоску» (не знаю как это иначе назвать, характеристика на уровне эмоций и ощущений), которая высасывает слушателя, а «I belong to you» становится в какой-то степени happy end’ом всего предшествующего.
Мелодика действительно стала проще — свойственной предыдущим альбомам насыщенности и достаточно большого «веса» композиций стало меньше. Собственно, даже в Wikipedia пишут об этом и что делается это с целью охвата более широкой аудитории. С другой стороны по сравнению с большинством представителей «популярного рока» это все равно небо и земля. Но жалко, что определенному упрощению подвергся и вокал — в новом альбоме он, на мой субъективный взгляд, тоже менее интересный (только в среднем — отдельные места просто отличные), чем раньше. Хотя, возможно, позже я изменю свое мнение, но сейчас мне кажется, что Мэтью реже пользуется своим голосом — как будто экономит… Это расстраивает.

А вот что действительно радует — так это три последних трека «Exogenesis…»! Тут нечего даже обсуждать — это просто отлично! Пусть Muse завоевывает широкие аудитории первыми восемью треками, а фанатам оставит «Exogenesis…» и им будет достаточно! Этот тяжелый давящий насыщенный звук (еще бы он был ненасыщенный, учитывая что треки записывались с целым оркестром!), обволакивающий и проникающий в мозг, высокий, работающий на контраст, голос Мэтью… Просто супер! Позволю себе процитировать Википедию: «Much of the album’s praise has been directed towards the album-ending three-part «Exogenesis» which used over 40 musicians in the recording process. The Fly gave the album two scores, awarding the three-part «Exogenesis» 5/5 but 3.5/5 for the rest, saying that «‘Exogenesis…’ is a streak of utter brilliance across ‘The Resistance’s beguiling, inconsistent sky.»» Одним словом, это надо слушать однозначно.

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

[audio:https://skylord.ru/wp-content/uploads/2009/09/07-MK-Ultra.mp3|titles=Muse — MK Ultra]

MUSE — MK Ultra (The Resistance)

Завтра будет лучше, чем вчера

Вчера была — задница, сегодня — тоже задница, завтра — уж точно будет задница. Похоже, что ситуация стабилизируется.
(с) народное

Меня положительно радуют изменения в политике руководства страны! Президент сегодня выложил статью в чуть менее чем оппозиционной Газете.Ру. Статья достаточно жалобная, на призыв не тянет (вспомним хотя бы классические советские агитки — небо и земля!), конкретики не содержит, но сам факт того, что с народом начали в принципе разговаривать — радует безмерно. Если отбросить «шелуху» и цитаты из предыдущих материалов президента и «стратегии 2020», то останется по сути лишь предложение писать президенту на почту со своими предложениями, а также обещание чуть позже все-таки обнародовать конкретику («У меня есть ответы на эти вопросы. И прежде, чем их сформулировать…» (с) Медведев Д. А.), которую и будем теперь ждать. Очень хочется, чтобы эта конкретика была лучше, чем упомянутая стратегия, где экономическая аналитика зачастую вообще ошибочна (в интернете чаще всего встречаются ссылки на соответствующую статью Глазьева, которая действительно написана неплохо и без зауми — простым, понятным и адекватным языком, а то терпеть не могу, когда пытаются потешить ЧСВ и компенсировать необразованность и неумность намеренным усложнением текста и кучей специфичных терминов), а конкретные пути вообще не обозначены. Вообще, это все находится где-то на уровне третьего-четвертого курса экономического ВУЗа, когда студенты уже худо-бедно «въехали» в макроэкономику и могут начать сами на этой базе думать и делать выводы или на худой конец — хотя бы воспринимать слова преподавателей о вариантах неравновесия в моделях AS-AD и IS-LM и возможных путей развития и действий государства в этих ситуациях. Но радует опять же то, что теперь есть хотя бы этот уровень — что было раньше, вообще страшно вспоминать. 🙂

В поисках Wiki

Делаю социально-политический сайт для совместной разработки различных проектов. Напрашивается сама собой форма Wiki, с которой до этого практически не работал как разработчик. Сел искать движок, раскурил WikiMatrix… Требования достаточно простые: wiki, наличие скинов, WYSIWYG-редактор, встроенная система статей/блогов и форум (потому что прикручивать и стыковать отдельно форумы/блоги — это выше моих сил), ну и чтобы написано было на perl или php — поддерживать будет проще.

Из предложенного WikiMatrix’ом ортодоксальную MediaWiki отмел сразу — она уныла чуть более, чем полностью, слишком сложна для простого человека, а интерфейс — это вообще ужас какой-то — о usability там явно никто никогда не слышал. Посмотрел доступные скины — и совсем пригорюнился. Это, наверное, какой-то отдельный подвид сознания у людей — любители MediaWiki.

Самое функциональное из предложенного WikiMatrix’ом — TikiWiki. Впечатлился перечнем функций и количеством документации/информации на сайте. Поставил и даже потратил три дня на ее доковыривание, правку шаблонов и т.п. все время ловя себя на ощущениях, что во-первых, TikiWiki как-то постоянно подтормаживает, а во-вторых, что писали ее студенты и задача была — сделать УниверсальнуюСистемуВсегоНаСвете, что в итоге — как обычно, — выливается в невозможность выполнять адекватно ни одну функцию… Система раздроблена на огромную кучу php-файлов, в которых черт ногу сломит, используются одновременно Mootools и Jquery, а в добавок еще и кучка самописных и посторонних Javascript’ов. Возможности расширения отсутствуют как класс — нет ни хуков ни иных способов навешивания собственного функционала — только править код. Настраиваемость в целом огромная, но только из-за количества функций — некоторые базовые вещи настроить нельзя и надо опять лазать в код. Возможности по скинам неплохи и выбор их тоже есть — это плюс. Шаблонизатор — Smarty. Но вообще общее впечатление от системы (речь, кстати, идет о последней версии — 3.1) — недоделанность во всем. А самый шок был для меня, когда я включил вывод отладочной информации и увидел, что в процессе вывода одной wiki-страницы сайта делается от 30 до 300 (!!!) запросов в базу данных. Это уже выше моего понимания…

Теперь на очереди Bitweaver — тоже порекомендованный WikiMatrix’ом. Вроде хвалят и дизайн основного сайта выглядит неплохо. Буду смотреть…

Личность, как критерий асоциальности

— После… я, наверное, брошусь в пропасть без парашюта. Вообще чудо, что мы еще здесь — на свободе. Хочу закончить все так, как началось. Ну ты знаешь — броситься и все — и пока.
Ты знаешь, меня придется в пропасть пихать — я не смогу сама. Не знаю, не думала…
Не волнуйся, я тебя подтолкну.
Слушай, может в агенство France Press сообщить? «Они бросились в пропасть без парашюта». И пускай печатают, уроды.
Да, можно об этом подумать.

Посмотрел в отсутствие жены (она не любит подобные драмы/триллеры/мочилова) французский фильм «Baise Moi» (по-русски — «Трахни меня»). Типа, авторское кино и все такое, но, как мне кажется, если бы половые органы актеров не показывали бы так часто крупным планом, это авторское кино вполне могло бы стать более чем массовым — типа приснопамятной «Танцующей в темноте» (кстати, манера съемки абсолютно аналогичная, хотя кто ее только не использовал в последнее время…). Впрочем, если отвлечься от упомянутых половых органов, а также от общей кровавости, то исходные причины и посылки ленты окажутся более чем вторичными. Собственно, примерно из того же места образовался в свое время мой же старый подростковый рассказ «Nop». Это вообще очень благодатная тема — асоциальность личности, которая исторгла себя из социума (ну или социум ее из себя исторг — это уже не суть важно). Ну в самом деле — если в человеке 30% личного и 70% социального, то разве стоит удивляться, что будучи лишенным этих 70% человек полностью перестанет соотносить свое поведение хоть с какими-то нормами морали и общества в целом? А даже если что-то и будет соотноситься, то исключительно потому, что эти соотносящиеся моменты свойственны непосредственно его личности, а социум тут опять же не при чем…

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

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

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

Про экзамены

Очень не люблю сдавать экзамены. Любые — будь то поступление в ВУЗ или собеседование при приеме на работу. Собственно, наверное именно поэтому я ни разу не устраивался на работу… 😉

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

Так вот эта самая «внятность» у современной молодежи (это жесть — в 25 лет я себя современной молодежью уже не ощущаю) отсутствует совершенно. Четко сформулировать и связно изложить свои мысли, даже если они вполне верные, могут очень немногие — практически единицы, а большинство изливает на преподавателя чистый и незамутненный поток сознания, в котором преподаватель-экзаменатор должен типа сам найти то, что его интересует. Если экзаменатор задает вопрос и получает в ответ любую осознанную и законченную фразу, хотя бы отдаленно имеющую отношение к обсуждаемой теме — то отвечающий уже может рассчитывать на условную «четверку» (условную потому, что системы оценивания и количества баллов везде разные). Если же речь идет об иностранном языке и эту самую осознанную фразу экзаменуемый способен озвучить на нем, а при этом еще соблюсти правила грамматики и обеспечить отсутствие «рязанского» произношения (я люблю Рязань, просто идиома такая 😉 ) — то он вообще «король» и все дороги ему открыты. 😉

Спросил у жены (преподаватель в ВУЗе, кандидат психологических наук), является ли столь ужасающее состояние гуманитарных способностей у молодежи типичным по ее повседневному опыту преподавания и экзаменовки студентов/магистрантов или же у меня просто так совпало, а на самом деле все получающие высшее гуманитарное образование мальчики и девочки — умники и умницы. Ан нет — жена подтвердила — ситуация более чем плачевная. Говорить и адекватно выражать свои мысли сейчас не может почти никто из учащихся. И это воистину печально…

Можно подумать, что я всего лишь хочу потешить свое ЧСВ и поэтому картинно всплескиваю руками и хватаюсь ими за голову. Но нет — я действительно под впечатлением. Я понимаю, что не все должны быть ораторами, писателями и т.п., но для человека учащегося/поступающего на какое-то гуманитарное (не техническое и не естесственнонаучное, хотя, конечно, и там это все не повредит) направление, умение формулировать свои мысли должно быть априори основным. У него может быть плохая память, он может быть тугодумом, он вообще может быть замкнутым интравертом (мы, гуманитарии, вообще почти все такие), но когда у него есть мысль, он должен взять ее и выдать наружу так, чтобы она не выглядела SMS’кой или надписью на заборе. И в обратном меня никто не убедит.

Прошивки телевизоров Samsung

Мечтая о новом телевизоре читаю тему: http://forum.ixbt.com/topic.cgi?id=62:15456

Хочется модельку типа 46B652, чтобы был DLNA и можно было на фиг убрать комп-который-типа-медиа-центр. Пусть даже глюки есть при чтении файлов… Но не суть. Суть в том, что в телевизоре — Linux и значить можно/нужно все это ковырять. Хотя телевизора еще нет, но в поисках того, как бы покачественнее поотлынивать от подготовки к поступлению в магистратуру, зашел в дебри Самсунговского сайта и скачал последнюю прошивку (ver.T-CHL7DEUC-2001.0), чтобы посмотреть, как это вообще со стороны выглядит. Выглядит как несколько файликов — образы (appdata.img.enc и exe.img.enc) и, судя по всему, загрузчики этих самых образов (ELF’овские бинарники снаружи, а смотреть внутри было неинтересно). Образы — зашифрованы, но шифрование — обычный XOR со строкой. Какой в нем смысл — загадка, ведь простой человек все равно не сможет с этими образами ничего сделать, а для имеющего хоть минимальный опыт в реверсинге, XOR поверх файлов — это какое-то неуважение и издевательство. Особенно учитывая то, что «пароль» считывается просто глядя на содержимое файлов — как и полагается для типичных image’ей — в них полно нулей, поверх который, будучи отXORенным пароль лежит открытым текстом. 🙂 Пароль — T-CHL7DEUC.

Поискал в интернете — найти простой программки для разXORивания (чтобы тупо брала строку и проходилась ей по всему файлу) не смог. Написал сам на VB.NET, благо это единственный desktop’ный язык, на котором я могу что-то сделать. 🙂

РазXORил образы. appdata — SquashFS, exe — FAT16. Почему так? Никогда не видел этого на Линуксовых девайсах, ибо априори лишено смысла. Но так есть. В SquashFS всякая фигня типа подготовленных сеток каналов для стран и картинок интерфейса. Самое интересное — виджеты и весь их API. Даже документации не надо — все прилично откомментировано и много примеров. Пиши — не хочу. В FAT16 же наоборот — хардварные библиотеки (so’шки), телевизионный модуль для ядра Линукса (samdrv.ko), всякие EDID’ы для DCC и здоровые файл exeDSP (ELF), который запускается из прилагающегося rc.local. Судя по названию — не иначе, как что-то обслуживающее встроенный медийный процессор.

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

Что со всем этим делать дальше — ХЗ. Просто расковырял для самоудовлетворения. Реальный результат только один — написал программку для быстрого разXORивания. Пригодится еще…

Для захода внутрь образа FAT16 использовал файл-менеджер Altap Salamander. SquashFS поленился копировать в Линуксовую виртуальную машину и тупо разжал через скомпилированные под cygwin squashfs-tools. Они вместе с программкой для разXORирвания — во вложении.

Консольный лог загрузки D-Link DIB-120

От включения и до вывода на экран пользовательского интерфейса.
Собственно, вот:

BCM97401
AB
FFFFFFFF
1s
K1
K2

K3

K4

K5
2
Copy Code...34TUCV

BCM97402 CFE v1.8, CFE core v1.6, Endian Mode: Little
Build Date: Fri Jan 23 21:50:11 2009 (Rance@Rance-AsusU5F)
Copyright (C) Broadcom Corporation.

CPU speed: 297MHz
Total memory: 256MB
Total flash: 32MB

Total memory used by CFE: 0x87000000 - 0x87044890 (280720)
Initialized Data: 0x8703C990 - 0x87044548 (31672)
BSS Area: 0x87044548 - 0x87044890 (840)
Local Heap: 0x87044910 - 0x87A44910 (10485760)
Stack Area: 0x87A44910 - 0x87A46910 (8192)
Text (code) segment: 0x87000000 - 0x8700F264 (62052)

flash0.splash=1FCC0000
JPEG size=42494, mode=1
JPEG decoding
Decode done
Splash Width = 720 Height = 480
Loader:elf Filesys:raw Dev:flash0.kernel File: Options:root=/dev/mtdblock0 ro
Loading: 0x80001000/3219589 0x80313085/139143 Entry address is 0x802f3000
total= bytes
Starting program at 0x802f3000
<5>Linux version 2.6.12-4.2-brcmstb build version 2612-4.2 (root@localhost.localdomain) (gcc version 3.4.6) #2 Thu Jun 18 18:20:20 CST 2009
c->processor_id == 00020000
MIPs 7401 id = 20000
Before: firmhandl=8704c410, firmentry=8701da34, seal=43464531,bootParmsAddr=803145a8
The cmdline args were:
@803145a8=root=/dev/mtdblock0 ro
Done initializing UARTC at b0400b00
HI WORLD!!!
gathering mode: 0x00000264 at 0x0xb000040c
split mode: 0x00000001 at 0xb0000410
board_init_once: regval=44a16102, ddr_strap=3, 4 chips, pci_size=2
Detected 256 MB on board
cfeBootParms ===> root=/dev/mtdblock0 ro
Number of Nand Chips = 0
Kernel boot options: root=/dev/mtdblock0 ro console=ttyS0,115200
gFlashSize=00000000, query[0]=0051, [1]=0052, [2]=0059
**********BOOTEDFROMFLASH, Base=1e000000
Initial CP0 22 value : 0x00010020
Updated CP0 22 value : 0x00000020
CP0 reg 22 sel 0 to 5: 0xe3800000 0x00000020 0x00000000 0x00000020 0x00000000 0x00000020
Sundry 0xb0404000, chipId 0x00007401, bcm7401Cx 0x21
CPU revision is: 00020000
Determined physical RAM map:
memory: 10000000 @ 00000000 (usable)
Using 128MB for memory, overwrite by passing mem=xx
User-defined physical RAM map:
node [00000000, 08000000: RAM]
node [08000000, 08000000: RSVD]
<4>bootmem_init: map 0 type 1
<4>bootmem_init: curr_pfn 0x00000336 last_pfn 0x0000ffff max_low_pfn 0x00010000
<4>bootmem_init: Done
<7>On node 0 totalpages: 65536
<7> DMA zone: 65536 pages, LIFO batch:31
<7> Normal zone: 0 pages, LIFO batch:1
<7> HighMem zone: 0 pages, LIFO batch:1
Before resource_init
After resource_init
Built 1 zonelists
<5>Kernel command line: root=/dev/mtdblock0 ro console=ttyS0,115200
before init RAC 0x02a00000 0x00000000
after init RAC 0x02a0000f 0x0fff0000
Primary instruction cache 32kB, physically tagged, 2-way, linesize 16 bytes.
Primary data cache 32kB, 2-way, linesize 16 bytes.
MIPS_CACHE_ALIASES = ON
end of ld_mmu_r4xx0
end of local_tlb_init
Wired: 17
Index: 0 pgmask=16Mb va=d0000000 asid=00
[pa=d0000000 c=2 d=1 v=1 g=1]
[pa=d1000000 c=2 d=1 v=1 g=1]

Index: 1 pgmask=16Mb va=d2000000 asid=00
[pa=d2000000 c=2 d=1 v=1 g=1]
[pa=d3000000 c=2 d=1 v=1 g=1]

Index: 2 pgmask=16Mb va=d4000000 asid=00
[pa=d4000000 c=2 d=1 v=1 g=1]
[pa=d5000000 c=2 d=1 v=1 g=1]

Index: 3 pgmask=16Mb va=d6000000 asid=00
[pa=d6000000 c=2 d=1 v=1 g=1]
[pa=d7000000 c=2 d=1 v=1 g=1]

Index: 4 pgmask=16Mb va=d8000000 asid=00
[pa=d8000000 c=2 d=1 v=1 g=1]
[pa=d9000000 c=2 d=1 v=1 g=1]

Index: 5 pgmask=16Mb va=da000000 asid=00
[pa=da000000 c=2 d=1 v=1 g=1]
[pa=db000000 c=2 d=1 v=1 g=1]

Index: 6 pgmask=16Mb va=dc000000 asid=00
[pa=dc000000 c=2 d=1 v=1 g=1]
[pa=dd000000 c=2 d=1 v=1 g=1]

Index: 7 pgmask=16Mb va=de000000 asid=00
[pa=de000000 c=2 d=1 v=1 g=1]
[pa=df000000 c=2 d=1 v=1 g=1]

Index: 8 pgmask=16Mb va=e0000000 asid=00
[pa=e0000000 c=2 d=1 v=1 g=1]
[pa=e1000000 c=2 d=1 v=1 g=1]

Index: 9 pgmask=16Mb va=e2000000 asid=00
[pa=e2000000 c=2 d=1 v=1 g=1]
[pa=e3000000 c=2 d=1 v=1 g=1]

Index: 10 pgmask=16Mb va=e4000000 asid=00
[pa=e4000000 c=2 d=1 v=1 g=1]
[pa=e5000000 c=2 d=1 v=1 g=1]

Index: 11 pgmask=16Mb va=e6000000 asid=00
[pa=e6000000 c=2 d=1 v=1 g=1]
[pa=e7000000 c=2 d=1 v=1 g=1]

Index: 12 pgmask=16Mb va=e8000000 asid=00
[pa=e8000000 c=2 d=1 v=1 g=1]
[pa=e9000000 c=2 d=1 v=1 g=1]

Index: 13 pgmask=16Mb va=ea000000 asid=00
[pa=ea000000 c=2 d=1 v=1 g=1]
[pa=eb000000 c=2 d=1 v=1 g=1]

Index: 14 pgmask=16Mb va=ec000000 asid=00
[pa=ec000000 c=2 d=1 v=1 g=1]
[pa=ed000000 c=2 d=1 v=1 g=1]

Index: 15 pgmask=16Mb va=ee000000 asid=00
[pa=ee000000 c=2 d=1 v=1 g=1]
[pa=ef000000 c=2 d=1 v=1 g=1]

Index: 16 pgmask=16Mb va=f0000000 asid=00
[pa=f0000000 c=2 d=1 v=1 g=1]
[pa=f1000000 c=2 d=1 v=1 g=1]

$$$$$$$$$$ 1394 dev id ffffffff
$$$$$$$$$$ mini slot dev id ffffffff
$$$$$$$$$$ external dev id ffffffff
Synthesized TLB refill handler (20 instructions).
Synthesized TLB load handler fastpath (32 instructions).
Synthesized TLB store handler fastpath (32 instructions).
Synthesized TLB modify handler fastpath (31 instructions).
timer irq 67 end 57
PID hash table entries: 2048 (order: 11, 32768 bytes)
mips_counter_frequency = 148000000 from Calibration, = 148500000 from header(CPU_MHz/2)
Using 148.500 MHz high precision timer.
Console: colour dummy device 80x25
################## brcm_serial_console_init, sercon=802ce88c
Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
free_all_bootmem_core: Free allocator bitmap
Memory: 125060k/262144k available (2577k kernel code, 136836k reserved, 434k data, 128k init, 0k highmem)
Mount-cache hash table entries: 512
get_RSVD_size: Returning Size 0x08000000
Checking for 'wait' instruction... available.
NET: Registered protocol family 16
usbcore: registered new driver usbfs
usbcore: registered new driver hub
squashfs: version 3.2-r2 (2007/01/15) Phillip Lougher
JFFS2 version 2.2. (NAND) (C) 2001-2003 Red Hat, Inc.
Broadcom serial driver version 1.00 (2000-11-09) with SERIAL_PCI enabled
Serial: 8250/16550 driver $Revision: 1.90 $ 1 ports, IRQ sharing disabled
ttyS0 at MMIO 0x0 (irq = 66) is a 16550A
io scheduler noop registered
io scheduler anticipatory registered
io scheduler deadline registered
io scheduler cfq registered
loop: loaded (max 8 devices)
Broadcom BCM740121 Ethernet Network Device v1.0 Jun 18 2009 18:17:59
: Reading MAC address from BFFFF824, FLASH_BASE=be000000
: MAC address 00:1E:58:B3:11:23 fetched from addr BFFFF824
: MAC Address: 00:1E:58:B3:11:23
SUNDRY revision = 74010021, have IP Hdr Opt=1
init_buffers: 104 descriptors initialized
init_buffers: 00000068 descriptors initialized, from flowctl
BCMINTMAC: 100 MB Full-Duplex (auto-neg)
PPP generic driver version 2.4.2
PPP Deflate Compression module registered
PPP BSD Compression module registered
NET: Registered protocol family 24
BCM97XXX flash device: 0x 2000000 at 0x1e000000
Broadcom 9xxxx mapped flash: Found 1 x16 devices at 0x0 in 16-bit bank
Amd/Fujitsu Extended Query Table at 0x0040
fixup_use_write_buffers
Broadcom 9xxxx mapped flash: CFI does not contain boot bank location. Assuming top.
fixup_use_erase_chip
number of CFI chips: 1
cfi_cmdset_0002: Disabling erase-suspend-program due to code brokenness.
Creating 10 MTD partitions on "Broadcom 9xxxx mapped flash":
0x00000000-0x01200000 : "a0_rootfs"
0x01200000-0x01400000 : "html"
0x01400000-0x01600000 : "vmlinux"
0x01600000-0x017c0000 : "a0_kernel"
0x017c0000-0x01c00000 : "b0_rootfs"
0x01c00000-0x01cc0000 : "cfe"
0x01cc0000-0x01d40000 : "splash"
0x01d40000-0x01fc0000 : "a0_config"
0x01fc0000-0x01fe0000 : "variable"
0x01fe0000-0x02000000 : "misc"
usbmon: debugs is not available
ehci_hcd_brcm_init: Initializing 1 EHCI devices
10 Dec 2004 USB 2.0 'Enhanced' Host Controller (EHCI) Driver (EHCI-brcm-0)
drivers/usb/host/ehci-brcm.c: starting brcm EHCI USB Controller
- USB h/w setup mode
- USB power enable set for active LOW mode
- Resetting at b0480310
<-- brcm_ehci_hw_init brcm-ehci brcm-ehci.0: BRCM EHCI brcm-ehci brcm-ehci.0: new USB bus registered, assigned bus number 1 brcm-ehci brcm-ehci.0: irq 62, io mem 0x10480300 brcm-ehci brcm-ehci.0: park 0 brcm-ehci brcm-ehci.0: USB 0.0 initialized, EHCI 1.00, driver 10 Dec 2004 hub 1-0:1.0: USB hub found hub 1-0:1.0: 2 ports detected 2004 Nov 08 USB 1.1 'Open' Host Controller (OHCI) Driver (OHCI-brcm-0) drivers/usb/host/ohci-brcm.c: starting brcm OHCI USB Controller - Resetting at b0480408 <-- brcm_start_hc brcm-ohci-0 brcm-ohci-0.0: BRCM OHCI brcm-ohci-0 brcm-ohci-0.0: new USB bus registered, assigned bus number 2 brcm-ohci-0 brcm-ohci-0.0: irq 63, io mem 0x10480400 hub 2-0:1.0: USB hub found hub 2-0:1.0: 2 ports detected pegasus: v0.6.13 (2005/11/13), Pegasus/Pegasus II USB Ethernet driver usbcore: registered new driver pegasus drivers/usb/net/rtl8150.c: rtl8150 based usb-ethernet driver v0.6.2 (2004/08/27) usbcore: registered new driver rtl8150 usbcore: registered new driver asix NET: Registered protocol family 2 IP: routing cache hash table of 2048 buckets, 16Kbytes TCP established hash table entries: 16384 (order: 5, 131072 bytes) TCP bind hash table entries: 16384 (order: 4, 65536 bytes) TCP: Hash tables configured (established 16384 bind 16384) NET: Registered protocol family 1 NET: Registered protocol family 17 VFS: Mounted root (cramfs filesystem) readonly. free_initmem: init_begin=802f3000, init_end=80313000 Freeing unused kernel memory: 128k freed Algorithmics/MIPS FPU Emulator v1.5 Restore RW directories Mount /proc fs Mount /dev/pts Mount /etc/sysmgmt Mount /html Mount /tmp Mount /sys Mount /proc/bus/usb Cleaning up utmp and wtmp Start syslog daemon Start USB service SCSI subsystem initialized NTFS driver 2.1.22 [Flags: R/W MODULE]. Initializing USB Mass Storage driver... usbcore: registered new driver usb-storage USB Mass Storage support registered. usbcore: registered new driver usbhid drivers/usb/input/hid-core.c: v2.01:USB HID core driver insert module usbhid success Configure Network interface start services telnetd: starting port: 23; interface: any; login program: /bin/login start user services Creating nodes in /dev ln: dsp: File exists Done Press any key to return to linux prompt total words=13710 DEFINED: xcinrc path=tabs/xcinrc open data path=tabs open_data=sys.tab open_data=phone.tab Input method is ê`í¦ rmmod: bcmdriver: No such file or directory rmmod: bcm7401: No such file or directory rmmod: bcmkni: No such file or directory bcmdriver: module license 'Proprietary' taints kernel. Initializing bcmdriver version $ 25 $ MCK - Using Interrupt Definition for 7402c0 (uname -a) chipConfigs[5].maxNumIrq = 65 Global Interrupt Mask Low: 0xD15F7FFF, High: 0x1C0C11F3 Initialization complete... Apply : idle=0 UTL_Init>
UTL_Pars_Init>
Apply : dec=0 hex=0 string=(null) none=
UTL_Sys_Init: Timer Initialize...

sema_id=010DC100, mutex=010DC130OS_Task_CreateThread: Thread timer_task(1026) has been created!

UTL_Dbg_Init>
DRV_Adpt_Init...
Copying /etc/sysmgmt/bak_config.xml to /tmp/user_config.xml ...OK!
User_Config.XML Size=2163
Loading config file /tmp/user_config.xml(2163 byte)
no config at all, create root
cmdstr=killall syslogd

###### sys_kill PID=197, Signal=15 ######

cmdstr=syslogd -b 0
cmdstr=dhcpcd -HDd eth0 -i DIB120
===================== timer_task / PID=316 =====================
eth0 Link UP.
DRV_Adpt_Init - Open display device... 2afcaf74 OK!
DRV_Adpt_Init - Open graphics device... 2afc1374 OK!
DRV_Adpt_Init - Open component device... 2afa20e0 OK!
DRV_Adpt_Init - Open composite device... 2afa20d8 OK!
DRV_Adpt_Init - Open S-Video device... 2afa20c8 OK!
DRV_Adpt_Init - Open DVI/HDMI device... 2afa2040 OK!
DRV_Adpt_Init - Open RF device... 2afa2030 OK!
DRV_Adpt_Init - Open S-PDIF device... 2afc133c OK!
Create ConfigDB Semaphore

sema_id=0111F7D8, mutex=0111F808FB Handler 111fc98 has been created!
[INIT_Graphics_Mode]Surface 720x1080 scale to 720x576
[INIT_Graphics_Mode]Clip 720x576 to display
Can't get data from file
Can't get addr & port from dhcp, try get from config
Can't open /etc/sysmgmt/update.ini
Fail to read mtd default ip and port, use hardcode
ipAddr = 224.0.42.251
port = 23301
block_name = a0_rootfs
version = 00403013
img_len = 13000704
chksum = 5aac8d8579079c80dc66656260b496f4
addr_port = fb2a00e0065b
block_name = kernel
version = 00403013
img_len = 1602649
chksum = 26dcb331769b2b7e93bd738dfdbcab03
addr_port = fb2a00e0075b
block_name = cfe
version = 00403013
img_len = 279876
chksum = 731608c42f9de1276c5521bda7c75c4f
addr_port = fb2a00e0085b
block_name = a0_config
version = 00403013
img_len = 2621440
chksum = a393ecfb0faf563ccf7f5e6064e5c275
addr_port = fb2a00e0095b
block_name = splash
version = 00403013
img_len = 37617
chksum = 728cf99079d637377971361a597b947b
addr_port = fb2a00e00a5b
block_name = html
version = 00403013
img_len = 4096
chksum = 49be98c398ed146cd1c6a301886c4d1a
addr_port = fb2a00e00b5b
encounter reserver field
224.0.42.251 : given address is multicast, leave group==< DRV >== GUI fb mem=36b65a40
Graphics [720x576:720]
identifier 0x4d42 filesize 159510 offset 54
height 151 width 352 planes 1 pixels 24
format 0 size 159456
Execute external sh /etc/hotplug/mount_device
Jan 1 00:00:13 IP-STB[308]: Execute external sh /etc/hotplug/mount_device

Execute external sh /etc/link_drm.sh
mkdir: Cannot create directory `/data/share/': Read-only file system
tar: chdir(/data/share/security): No such file or directory

INP_Init>
INP_Eng_Init>OS_Task_CreateThread: Thread inp_eng_task(7176) has been created!
OS_Task_CreateThread: Thread inp_tty_task(8201) has been created!

DB_Init>
DB_Epg_Init>
sema_id=01121238, mutex=01121268CONTROL_Init - Initialize
Set Volume................0=>SET volume:0
OK(O)
CONTROL_Config_Init() end

sema_id=0112A140, mutex=01121288
sema_id=0112A170, mutex=0112A1A0
sema_id=0112A1C0, mutex=0112A1F0
=== DRV_SA_Init ===
@@@ SA_SETUP_FILE=/etc/sysmgmt/VERIMATRIX.INI SA_SETUP_DEFAULT=/etc/def_sa_VM.ini

###### sys_kill PID=308, Signal=5 ######

###### sys_kill PID=308, Signal=5 ######

=== DRV_SA_Init: init finished ===
PLY_Init>
play_task>OS_Task_CreateThread: Thread play_task(10251) has been created!
BGRA32 format selected
Graphics [720x576:720]
[opera_alarm_basetime_init] TimeTick Per Second: 100
[opera_alarm_basetime_init] System starup tick: 429468260
==< DRV >== GUI fb mem=36b65a40

sema_id=01138AF8, mutex=01138B28===================== inp_eng_task / PID=341 =====================
===================== inp_tty_task / PID=342 =====================

sema_id=01137CF8, mutex=010DEAD8adding font: /usr/bin/fonts/albw.ttf
adding font: /usr/bin/fonts/san_m_21.ttf
===================== play_task / PID=344 =====================

DRV_Resrc_Init...

sema_id=0115B6C0, mutex=0115B6F0
sema_id=0115B710, mutex=0115B740
sema_id=0115B760, mutex=0115B790adding font: /usr/bin/fonts/san_p_21.ttf
adding font: /usr/bin/fonts/srf_m_21.ttf
adding font: /usr/bin/fonts/srf_p_21.ttf
OS_Task_CreateThread: Thread browser_task(11276) has been created!
Can't read data from /etc/dhcpc/dhcpcd-eth0.infoCan't read data from /etc/dhcpc/dhcpcd-eth0.infoOS_Task_CreateThread: Thread NTP_Task(12301) has been created!

FWUP_Init>==< DRV >== GUI fb mem=36b65a40
framebuf = 36b65a40
OS_Task_CreateThread: Thread fwup_eng_task(13326) has been created!

Input key simulation: "help" for more information
Command: ===================== browser_task / PID=345 =====================
Setting input mode to raw
===================== NTP_Task / PID=346 =====================
NTP server hostname error!
NTP server hostname error!
-NTP- Connecting to pool.ntp.org
===================== fwup_eng_task / PID=347 =====================
OSD_VOL_CHANGE(1)
OSD Inited()
@@@@@@@@@@@ Checking Customer HTML @@@@@@@@@
Checking Customer HTML...............OK ['/html/index.htm' exists]
----Use [ CUSTOMER ] Page!----
Copying /tmp/user_config.xml to /etc/sysmgmt/bak_config.xml ...OK!
Copying /tmp/user_config.xml to /etc/sysmgmt/bak_config.xml ...OK!
Copying /tmp/user_config.xml to /etc/sysmgmt/bak_config.xml ...OK!
Copying /tmp/user_config.xml to /etc/sysmgmt/bak_config.xml ...OK!
Copying /tmp/user_config.xml to /etc/sysmgmt/bak_config.xml ...OK!
-NTP- Time: Sat Jul 18 2:52:40 2009
OS_Task_TerminateThread: Thread NTP_Task(346) has been terminated!
Copying /tmp/user_config.xml to /etc/sysmgmt/bak_config.xml ...OK!
Set Result:0Same timezone .No need to change time
OS_Task_TerminateProcess: Thread NTP_Task(346) has been terminated!
Copying /tmp/user_config.xml to /etc/sysmgmt/bak_config.xml ...OK!
Can't read data from /etc/dhcpc/dhcpcd-eth0.infoCan't read data from /etc/dhcpc/dhcpcd-eth0.infoOS_Task_CreateThread: Thread NTP_Task(14349) has been created!
cmdstr=killall syslogd

###### sys_kill PID=324, Signal=15 ######

cmdstr=killall syslogd
killall: syslogd: no process killed
cmdstr=syslogd -b 0
Copying /tmp/user_config.xml to /etc/sysmgmt/bak_config.xml ...OK!
CONTROL_EventDispatcher - Command 12 received!
Set Content Mode to 0
SAVE OSD:display-[7 7 16 7 0]
SAVE OSD:prefermode-[-1 -1]
SAVE OSD:video-[11 11 11 11 11]
SAVE Volume:[0]
Copying /tmp/user_config.xml to /etc/sysmgmt/bak_config.xml ...OK!
CONTROL_EventDispatcher - Command 12 received!
Set Component Type to 0
SAVE OSD:display-[7 7 16 7 0]
SAVE OSD:prefermode-[-1 -1]
SAVE OSD:video-[11 11 11 11 11]
SAVE Volume:[0]
Copying /tmp/user_config.xml to /etc/sysmgmt/bak_config.xml ...OK!
===================== NTP_Task / PID=356 =====================
NTP server hostname error!
NTP server hostname error!
-NTP- Connecting to pool.ntp.org
-NTP- Time: Sat Jul 18 2:52:41 2009
Jul 18 02:52:41 IP-STB[356]: -NTP- Time: Sat Jul 18 2:52:41 2009

OS_Task_TerminateThread: Thread NTP_Task(356) has been terminated!
OS_Task_TerminateProcess: Thread NTP_Task(356) has been terminated!

Кучу косяков видно сразу, но самый главный — это то, что splash подгружается ДО полной инициализации CFE, когда можно с клавиатуры нажать Ctrl-C и творить что угодно. В итоге, если splash дохлый или не дай Бог — с JPEG, который сохраняли в прогрессиве, — то все. Финита. У меня один такой уже лежит. Очевидно, только JTAG’ом поднимать. Жесть, одним словом. Кто их учил писать загрузчики — неизвестно.

Интерфейс для просмотра IPTV-каналов на D-Link DIB-120

Update -> https://skylord.ru/2010/07/19/interfejs-dlya-iptv-stb-d-link-dib-120-s-onlajn-servisom/

Более-менее продакшн. Пусть и с минимальными функциями (прямо скажем — не Нетрис), но с интерфейсами московских контент-агрегаторов вполне может поконкурировать. 🙂

Видео записал на скорую руку — просто чтобы было.

Основной функционал показан, отдельно отмечу пару нюансов:

  • все находится внутри приставки, снаружи она подгружает только перечень каналов (чтобы можно было их оперативно менять без смены прошивки) и программу передач.
  • интерфейс поддерживает скины. Пока есть только один, т.к. не хотелось время тратить на рисование, но программно все подготовлено — достаточно нарисовать картинки, написать css и добавить пункт меню для смены скина. 🙂
  • главное меню и меню настроек не мудрствуя лукаво позаимствовал из оригинальной прошивки. Надо будет тоже переделать, конечно…. Хотя мне и так нравится…
  • каналы листаются по одному и страницами (чтобы быстро куда-то дойти). Быстрый переход к номеру канала цифровыми кнопками. Возврат к предыдущему каналу кнопкой back.
  • программа передач подгружается раз в несколько часов с сервера, где стоит скрипт и ее генерирует
  • у меня сейчас вещается только три канала, а остальные в список просто для красоты загнал.

Новая формация литературных героев

Дочитал последнее произведение С. В. Лукьяненко — фэнтези-сказку (если словосочетание «фентези-сказка» не звучит как «масло масляное») «Недотепа». Ну что тут можно сказать… Все-таки последними более-менее нормальными произведениями Сергея остаются «Черновик»«Чистовик», а последним действительно сильным — «Спектр». Собственно, опрос в ЖЖ автора это же и показывает — «Неплохая книга» — это максимальная и одновременно наиболее справедливая оценка данного романа, который, чует мое сердце, может ненавязчиво перерасти в серию…

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

Хочется, конечно же, сказать, что все это пошло с Гарри Поттера и что дело вообще не в литературе, а в социуме, который эту самую литературу потребляет, но это было бы слишком просто — вообще, всегда легче всего все свалить на социум. Однако же, с социума и взятки гладки — он в принципе всегда идет по пути наименьшего сопротивления, а вот писателей хотелось бы и пожурить. Ведь в самом деле — подобная литература обладает даже не нулевым, а отрицательным мотивационным влиянием на читателя! Читая про Супермена читатель хотя бы не расслабляется, а думает — «Вот это люди! Эх, было бы круто иметь сверхспособности! Но у меня-то их нет, поэтому пора идти вкалывать…» А вот подобные всенародному любимцу Гарри или новорожденному Триксу герои откровенно разрушают всю человеческую (а главным образом — подростковую) мотивацию на корню. Зачем чего-то делать, к чему-то стремиться и ставить себе какие-то цели, если «днём или ночью чудо откроет дверь» (с), после чего все будет «в шоколаде»? Никто, конечно, не говорит, что все книжки должны быть по типу «Как закалялась сталь», но почему-то когда я читаю Дивова (у которого герои не только супермены, но еще и к тому же — какая-то из сторон личности автора — оторопь берет, когда представляешь, что за человек автор, если у него из каждой черты характера по супермену рождается!) или того же Лукьяненко, но чуть более раннего (взять хотя бы вечных антогонистов — «Лабиринт отражений» и все тот же «Спектр»), — у меня подобных вышеописанным ощущений не появляется…

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

Радует лишь одно — судя по всему Сергей прекрасно осознает все вышесказанное, иначе бы он не стал добавлять в «Недотепу» совершенно на мой взгляд искусственные последние страницы, где Трикс решает «заниматься делом», а не просиживать штаны дома. К сожалению, конец действительно достаточно искусственный и натянутый, а весь его эмоционально-мотивационный заряд проходит мимо читателя, так как перечеркнуть парой страниц все предыдущее повествование достаточно трудно. Хотелось бы только, чтобы автор это самое осознание использовал во благо и следующей книжкой мы получили не продолжение «Конкурентов», а что-нибудь более серьезное. Тем более, что Сергей прекрасно умеет сочетать качественный экшен с более «высокими» литературными задачами. 🙂

ps: Кто-то скажет, «А как же магия! Главный герой не просто такой весь из себя счастливчик! Он просто ни фига себе маг!». Что тут можно ответить… Магия в этой книжке — это вообще дань стереотипам и требование жанра. Лучше бы ее там вообще не было — было бы интереснее.

pps:  Любопытно то, что несмотря на большую библиографию в своем ЖЖ С.В. Лукьяненко цитирует не что-нибудь, а «Осенние визиты» — старый роман 95 года (а, скорее всего, написанный еще раньше), который безусловно исполнен не так профессионально и качественно, как современные творения автора, но — черт побери! — насколько он искренен и пронзителен!