По поводу все той же дискуссии про C и Pascal

Вот ЖЖ другого преподавателя, сторонника скорейшего перехода на C: [info]avchernov. Там в комментариях приводится ссылка на статью 1992 года, описывающая опыт Стенфордского университета по переходу во вводном курсе Computer Science с Pascal на ANSI C.

Не означает ли это пресловутого «отставания на 20 лет»?

Про опенсорсников

Заметил, что фанаты всяческого опенсорса обычно совсем не знакомы с «проприетарным» софтом и даже почему-то гордятся этим. Например, позволяют себе нести вот такую чушь в учебнике (точнее, брошюрке-«методическом пособии» с гордым названием «Введение в операционные системы«):

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

По мощности брызганья ядом в сторону «коммерческих компаний» несравнимо даже с газетой «Советская Россия». Но это можно перетерпеть.

Интересно вот что. «Отдельная коммерческая компания» Microsoft (всякого труЪ-фаната опенсорса при упоминании этого слова, видимо, корячит) использует в MSDN и WinAPI слово Directory, а не Folder. «Папка» — это несколько более сложная штука, чем просто список файлов («каталог» или «директория»). Даже в Windows 95, где впервые появилось это слово, можно было обратить внимание на то, что «папкой» является и «Панель управления», и «Мой компьютер», и «Корзина» — причем нет никакой очевидной связи содержимого этих объектов с объектами файловой системы. «Папка» — это то, что может отобразить в виде окошечка с красивыми значками файловый менеджер, встроенный в Windows. В частности, все директории (в их обычном понимании) — это папки, но ими понятие folder не исчерпывается. Если не верите — читайте то же самое разъяснение за авторством Raymond-а Chen-а.

Windows NT была спроектирована людьми, которые до этого работали над операционной системой VMS. В их квалификации сомневаться не стоит, а уж Unix и все его «фичи» им были прекрасно знакомы — и, кстати говоря, реализованы, иногда даже лучше, чем в Unix. Так что всякие заявления о том, что в Windows нет разграничения доступа к файлам или всяких там symlink-ов (да, я такое встречал) — это пример вопиющей безграмотности. «Воинствующие линуксоиды» пытаются воевать с давно умершей Windows 98 — продукте «компромиссном» во всех отношениях, и к современным версиям «венды» отношения не имеющей.

Кстати, касается это не только Microsoft. Например, когда я сдавал курс «Базы данных» (ничего особенного из себя не представляющий — немножко поговорили про реляционную алгебру, про SQL, про разработку бизнес-приложений в контексте RUP и прочего UML, немножко про OLAP и восстановление зависимостей — программа есть на dmvn), лектор упоминал в нем такие программы, как IBM Rational Rose и тому подобные. Разумеется, перед сдачей экзамена всякие там линуксоиды ворчали в плане того, что в учебном процессе нельзя упоминать проприетарный софт. ЕМНИП, больше тройки из них никто не получил.

Два мира, две системы

У них (из книги Питера ван дер Линдена Expert C Programming: Deep C Secrets), перевод мой.

В Йельском университете профессор Алан Перлис (один из авторов Алгол-60) давал такое задание (на неделю) своим студентам.

Решите каждую из следующих задач:

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

На каждом из следующих языков:

1) C
2) APL
3) Lisp
4) Fortran

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

У нас (преподает сей деятель на ВМК МГУ), перевод не требуется.

…язык Си категорически недопустимо использовать в качестве языка начального обучения программированию

Подробнее — в PDF того же автора:

http://www.stolyarov.info/files/anti_c_v03.pdf

Вкратце — студенты не хотят учиться, а хотят, чтобы преподаватель «разжевал» им весь материал.

Сам не раз был свидетелем того, как студенты уже на зачете (!) начинали «качать права», мол, преподаватель был обязан научить лично их решать те задачи, которые будут даваться в качестве зачетных (это вообще безотносительно предмета). Кроме того, слышал о печальной истории изучения Java на втором курсе мехмата МГУ. Оказывается, на третьем-четвертом курсе, когда курс «Программирование и работа на ЭВМ» (с Java) превращается в «Практикум на ЭВМ» (не очень сложные с точки зрения программирования вычислительные задачи на C или FORTRAN), студенты жаловались, что их не научили языку C. Необходимый для сдачи «Практикума» объем языка C — это максимум две первых главы тоненькой книжечки Кернигана и Ритчи. Ничего сложного даже для бывшего джависта там нет. Тем не менее, надо нажаловаться, вместо того, чтобы хоть немного «самообразовываться».

PS Естественно, что даже в случае изучения на первом курсе C и C++ вместо Java подавляющее большинство студентов даже к третьему курсу совершенно не умеет программировать даже в том минимальном объеме, который требуется на мехмате. Но формальных поводов нажаловаться на «злого препода» — меньше.

Вкалывают роботы?

Вот по поводу этой «программистской задачки«.

В комментах было предложено решение на ASP.NET с использованием специальной библиотеки iTextSharp. Сложность «решения» была оценена в 1-3 человекомесяца. Думаю, что если стоит задача получить более-менее качественную («книжную») верстку PDF — то тут и трех человекомесяцев не хватит.

А задачка, как это не странно, уже была решена гораздо более скромными средствами. В принципе, с моей стороны немного нечестно раскрывать этот ответ, но и вопрос я задавал в надежде услышать именно «правильное и современное» решение. Ну а для «несовременного» достаточно написать три буквы: TeX.

Поясню. TeX — это хорошо известная система компьютерной верстки, довольно старая, но популярная в «околонаучном» мире — прежде всего из-за удобства верстки в ней математических формул, а также из-за очень развитого «макропакета» LaTeX, который позволяет довольно легко писать большие тексты, не заботясь о сложностях вроде автоматической нумерации параграфов, составления оглавления и списка литературы, нумерации формул, теорем, таблиц, рисунков и всего в этом роде. TeX — это не WYSIWYG-система, наподобие MS Word, поэтому считается несколько неудобным для набора простых текстов. Исходные файлы LaTeX, выглядящие примерно так:

\documentclass{article}
\usepackage{amsfonts, amsmath}
\begin{document}
This is a sample \TeX file.
$$\iint_{\mathbb R^2}e^{-(x^2+y^2)}\,dx\,dy = \pi$$
\end{document}

обрабатываются специальной программой (обычно так и называется — latex или latex.exe), которая выдает уже «обработанный» файл в TeX-овском же формате dvi (device-independent), который предназначен для просмотра или печати. Я немножко сократил описание всего процесса, но он сравнительно прост и выполняется в автоматическом режиме. Кроме того, во все современные варианты TeX входит и программа pdflatex, генерирующая по тем же TeXовским файлам PDF или же программы dvips и ps2pdf, которые конвертируют соответственно dvi в PostScript и PostScript в PDF. Из написанного выше файла получится страничка A4, на которой шрифтом 10 кегля будет написано следующее:

texsample

К чему все это длинное введение? А к тому, что генерация текстовых файлов и запуск несложных программ с этими файлами в качестве аргумента — это прекрасный способ «не изобретать велосипед». Я оцениваю систему, которая может по введенным в веб-форму данным генерировать несколько pdf по готовым шаблонам (кстати, в LaTeX есть «класс документа» «письмо», автоматически создающий письмо по канонам американской деловой переписки — сложите лист A4 втрое, суньте в конверт с «окошечком» и несите на почту) в один человекомесяц работы PHP-шника «средней руки» (по 10 копеек пучок на каком-нибудь «фрилансерском» сайте), включая сюда и изучение TeX в необходимом объеме. А если хочется еще сэкономить — не берите PHP-шника, возьмите человека, умеющего писать shell-скрипты.

«Околокомпьютерные» технологии, разработанные в 80-е, были рассчитаны на то, что пользователь сам может научиться немного программировать и использовать это умение для решения своих задач. Это и shell-скрипты, и язык SQL (первоначально предполагалось, что SQL-ем будет пользоваться пользователь самостоятельно, без «посредников» в виде кривых программ), и TeX, и BASIC как непременный атрибут «персоналки», и даже программируемые калькуляторы. Предполагалось, что «профессиональное» программирование будет нужно только для каких-то особо сложных задач.

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

Если утрировать, то «счастье человечества», по Марксу, связано прежде всего с развитием «производительных сил», которое определяет экономическую структуру общества, а через нее — и все остальные стороны общественного устройства. «Социалистическая» мораль не допускала (хотя бы на словах) эксплуатацию меньшинства большинством. Многих удивляет, особенно после просмотра передачи How it’s made по каналу Discovery, почему китайские товары собирают практически вручную — ведь по Discovery показали таких забавных роботов, станки с ЧПУ и прочие радости. А мораль проста — относительное благополучие «золотого миллиарда» достигалось и достигается тем самым «ограблением колоний». Это СССР мог себе позволить строить в диком Афганистане школы и больницы и отучать крестьян от выращивания мака и конопли — НАТО действует другими методами. «Американец» может позволить себе счастливую жизнь благодаря тому, что на него работает 5 китайцев.

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

А что мы имеем в реальности? «Компьютеризация» превращается в удвоение объема бумажной работы. Программирование превращается в занятие немногочисленных «профессиональных программистов». Даже 30 с лишним лет назад «обычные пользователи» могли освоить, к примеру, ДВК в такой степени, что писали свои несложные рассчетные программы. Сегодня даже макросы Word кажутся чем-то страшным.

Когда говорят о Unix и Windows, очень часто упоминают «порог вхождения» — мол, работать в юниксообразных ОС сложнее. Но ведь «порогов вхождения» можно выделить два — один — «для решения простейших задач» — в интернете полазать, видео посмотреть и т. п., другой — «для сложных задач» — типа «написать маленькую программулечку, которая берет файл и форматирует его». И вот что интересно — в Unix всех видов расстояние от первого порога до второго меньше, чем в Windows. Да, первый порог в Unix выше, чем в Windows, но вот второй — определенно ниже.

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

Интересно, а как правильно и «по-майкрософтски» эта же задача будет решаться через 5 лет?

Достижения в Visual Studio

Уже довольно давно хочу дать ссылку на список «достижений» (по образцу achievement во всяких флешевых играх), которые можно «сделать» в Visual Studio. Лично я могу похвастаться следующими:

The Sword Fighter – 5 Consecutive Solution Rebuilds with zero code changes
Shotgun Debugging – 5 Consecutive Solution Rebuilds with a single character change
The Mathematician – Defined 15 local variables with a single character name
Spaghetti Monster – Written a single line with more than 300 characters
Wild One – Mixed tabs and spaces for indentation more than 5 times in a single line
The Portal – Created a circular project dependency
The Explainer – Written a comment with more than 100 words
Just a Test – Nested multiline C-style comments that caused a compilation error
The Cloner – Copy-pasted more than 50 lines

Кроме того, в софте, над которым я жестоко измываюсь, есть:

Pasta Chef – Created a class with more than 100 fields, properties or methods
The Poet – Written a source file with more than 10,000 lines
The Enterprise – Build Solution took more than 10 minutes
Every Option Considered – Created an enum with more than 30 values

А чем можете похвастаться вы?

Задачка погромистская

Вводная такая. Проводится некая конь-ференция с регистрацией участников через Интернет. Естественно, сие действо должно закончиться невиртуальной встречей части участников где-нибудь, скажем в Москве, банкетом и пьяной дракой тупоконечников с остроконечниками.

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

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

Вопросы такие:

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

В качестве отдельного задания — реализовать все исключительно на технологиях, предлагаемых Microsoft.

Про журнал «Мурзилка»

В свежем номере мурзилки под названием «Ксакеп» увидел замечательный совет в рубрике «Вопросы и ответы». Человек пишет какую-то утилитку для мониторинга (мониторинга чего — не называет), жалуется на то, что необходимо реализовать отправку «админу» SMS в случае, если «что-то упало», и просит совета — чем заменить прицепленный по COM-порту «старенький мобильник». В ответ ему рекомендуют использовать интернет-сервис Clickatell, предназначенный для отправки SMS через интернет.

Интересно, что в данном случае надежней — интернетовский сервис или пресловутый «старенький мобильник»? Что-то мне подсказывает, что второе. Но вот последует человек совету, и ведь даже не подумает. Или, может, «Хацкеру» приплачивают за рекламу «кликателя»?

PS Хотя параноидальный ретроград, сидящий во мне, подсказывает еще лучшее решение — повесить на админа телефонный аппарат ТА-57 и катушку с проволокой, а то мало ли, у сотового оператора сеть отвалится. Можно еще посадить админа на цепь перед сервером, чтоб не шлялся непонятно где.

Правильные инновации, или русская Кремниевая Долина

Этот пост — своего рода «приквел» к большому параноидальному посту, который я пишу по заказу [info]radarytch. Как и «параноидальный», он был заказан в комментах [info]golergka, хоть и в неявной форме. Ну что делать? Я вытащил одну из «заготовок», слегка «доработал напильником» и готов пообещать, что у многих по прочтении этого поста волосы в заднице встанут дыбом.

По интернетам гуляет вот такая фотография:

innovator

Естественно, над ней смеются, употребляя выражения типа «христоз головного мозга». А знаете ли вы, что Русская Православная Церковь — единственная организация, способная обеспечить информационную безопасность РФ?

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

Любой нормальный параноик прекрасно знает, что все без исключения импортное «железо» для компьютеров и весь без исключения софт содержат «закладки». Как основной производитель софта и железа, США не стесняется применять их против своих политических противников. Помните историю со Stuxnet? Для того, чтобы сорвать иранскую ядерную программу, были использованы три ранее неизвестных «бага» в ОС Windows. Точно так же «недекларированные возможности» (так на казенном языке называют глюки) присутствуют и в «железе». Когда их случайно (!) обнаруживают всевозможные хакеры и эксперты по безопасности — производитель стыдливо натягивает на коленки порванную юбочку и прикрывает срам соответствующими пунктами в лицензионном соглашении.

Интересно, что современная методология разработки ПО нацелена не на уменьшение количества ошибок, а на увеличение скорости разработки. Лучше выпустить «навороченную» и глючную программу, чем «убогую», но безглючную. «Ошибки» считаются просто неизбежным злом, а их существование — чем-то естественным. А ведь в 70-е годы считалось, что хорошая программа ошибок не содержит, а Дональд Кнут даже был готов платить (пусть даже символически) тем, кто нашел ошибку в TeX или METAFONT. Представляете, что пришлось бы делать Биллу Гейтсу, если бы за ошибку в Windows он платил бы пусть даже по одному доллару? Да Microsoft просто задолбалось бы проверять багрепорты!

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

Кто-то сейчас закричит «Опенсорс, опенсорс, даешь опенсорс!» А вы знаете, что ястребы Пентагона своими волосатыми щупальцами внедрили во всю такую модно-опенсорсную и мега-защищенную OpenBSD свои «закладки», которые оставались там незамеченными в течение многих лет? Те же китайцы перешли на RedFlag Linux — а теперь задаются вопросом: а намного ли он «безопасней» Windows?

Правда, говоря про Китай, нельзя не упомянуть, что китайцы очень активно «продвигают» свои микропроцессоры Loongson — как минимум на внутреннем рынке и в госучреждениях, тем самым устраняя свою зависимость от Intel или AMD. Пусть Loongson и совместим с известной архитектурой MIPS, но он полностью разработан в Китае, китайскими специалистами. Естественно, это не приравнивает к нулю вероятность внедрения «закладки», но намного снижает ее. Как говорит [info]infowatch, национальная принадлежность разработчиков и слово «свой» никак не связаны с наличием или отсутствием ошибок. Более того, готов поспорить, что разработка некой «национальной ОС» так, как это обычно представляют, в нынешних российских реалиях закончится «пшиком».

А вот теперь — о разработке национального компьютера и национальной ОС силами РПЦ. История знает три типа «крупных исследовательских организаций», занимавшихся разными «инженерными» вопросами. Условно говоря, это частная фирма, это советский НИИ (Говна и Торфа, разумеется) и «шарашка». Все три имеют свои недостатки. Например, частная фирма, разрабатывающая «собственный процессор» или «собственную ОС» просто не выдержит конкуренции. НИИ Говна и Торфа окажется просто неспособен создать что-либо по причине низкой квалификации и нулевого желания работать у несбежавших к «коммерсантам» сотрудников. Наконец, организовать «шарашку» ныне проблематично, пусть даже это один из самых эффективных вариантов организации НИОКР.

Ну а РПЦ прекрасно может использовать свои ресурсы для разработки пресловутой «Русской ОС». Как заметил все тот же [info]infowatch,

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

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

Собственно, об этом говорил и глава Ассоциации православных экспертов Кирилл Фролов:

Лично я считаю, что русские компьютеры должны создаваться при русских монастырях: умные молитвы, умное делание, умное монашество

Конечно, лучше не Сколково, а, например, Соловецкий монастырь, но идея ясна. А как показывает та же китайская практика, за несколько десятков человеколет вполне можно разработать, к примеру, RISC-процессор (если не устраивает пример с Loongson — вспомните про Ingenic, недавно проведший беспрецедентную рекламную кампанию в журнале Vogue) и «допилить» для него какую-нибудь небольшую ОС (или не небольшую, но «экзотическую», вроде какого-нибудь Plan 9).

Вот это и называется «атомным православием». Можете, конечно, продолжать смеяться в этих ваших интернетах, а я отправлю копию этой записи патриарху Кириллу, депутату Алкснису и прочим известным деятелям.

Еще про опенсорс

Как известно любому любителю почитаь интернетовский треп на околоайтишные темы, Apple и Microsoft — «корпорации зла», а Google — «белый и пушистый». Вообще, конечно, гугловский лозунг «не причинять никому зла» может казаться очень хорошим и привлекательным, но сколько подобных замечательных фраз было придумано за всю историю человечества?

А что делает Google на самом деле? Да ровно то же самое, что и любая другая большая фирма. И прикрываться отмазкой «мы белые и пушистые» тоже в реальном мире особо не получается.

Или вот возьмем главный гугловский проект последнего времени — операционку Android. Кто может внятно объяснить, чем она лучше iOS или Windows Phone 7? Ответы обычно предсказуемы — она якобы «свободная» и «опенсорсная». Если честно, я не понимаю, как опенсорсность прошивки мобильника или «планшета» может влиять на его потребительские качества.

Да и если разобраться — опенсорсности как таковой нет. Как писал Шнайер в «Прикладной криптографии»,

Если я возьму письмо, запру его в сейфе где-нибудь в Нью-Йорке, а затем прикажу вам прочитать это письмо, то это не безопасность. Это полный мрак. С другой стороны, если я возьму письмо, закрою его в сейфе, затем вручу этот сейф вам вместе с подробными спецификациями, а также сотней таких же сейфов с их комбинациями, чтобы лучшие в мире «медвежатники» могли изучить механизм блокировки, но вы все равно не сможете открыть сейф и прочитать письмо — это и есть безопасность.

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

Доводя до абсурда: никто не мешает написать программу на каком-нибудь высокоуровневом языке, затем дизассемблировать ее и выдавать дизассемблированный код за те самые «открытые исходники». Нравится? А ведь большая программа на C (да и вообще на любом языке, даже на «идеально приспособленных» для больших проектов современных языках типа Java или C#) по сложности понимания может не уступать ассемблеру.

Мне очень понравилась статья Is Android Open на Wired.com. А еще больше — комментарии, где люди с пеной у рта защищают Android, удовлетворяющий лишь формальным критериям опенсорсности. В общем, ситуация с Android и каким-нибудь WinMobile напоминает тот анекдот про крысу и хомячка: «Знаешь, крыса, мне кажется, у тебя пиар хуже».

Google вообще прекрасен своим пиаром, направленным на всяких гиков и хацкеров. Собственно, лишь за это его и любят.

Кстати, про 640 килобайт

Наткнулся на такую фразу:

… в свое время, около 30 лет назад, сам Билл Гейтс (Bill Gates) объявил, что «640 килобайт хватит всем» (имея в виду оперативную память), а потом стал от этого открещиваться

Хочется немножко это все «подправить».

О чем идет речь? В первых моделях IBM PC предел доступной оперативной памяти составлял около 640 килобайт. Это было обусловлено тем, что используемый в них процессор Intel 8088, в отличие от более ранних Intel 8080, имел не 16, а целых 20 адресных линий. 16 адресных линий позволяют адресовать 216=65536 ячеек памяти, на интеловской линейке процессоров ячейка равна байту. Получившиеся 64 килобайта — это много, реально много, особенно для начала 80-х, когда память была очень дорога. В суперпопулярных ZX81, предшественниках «Спектрумов», размер ОЗУ составлял лишь 16 килобайт. В первых «Спектрумах» размер оперативной памяти составлял 48 кБ — и этого было достаточно для всех задач, которые тогда мог выполнять персональный компьютер.

Конечно, IBM, разрабатывая свою «персоналку», не могло пойти по пути каких-то там нищебродов и выбрало гораздо более передовой процессор. 20 адресных линий хватает для того, чтобы получить доступ уже к целому мегабайту памяти, причем без каких-либо плясок с бубном типа переключения банков памяти (как было сделано на более поздних «Спектрумах», которые поддерживали до 128 кБ памяти, а in Soviet Russia — вообще до 4 мегабайт). Правда, в этом мегабайте пришлось «вырезать» небольшую часть — под видеопамять, под устройства ввода-вывода и т. п. Это называется memory-mapped I/O — «отображаемый на память ввод-вывод» и применяется почти во всех архитектурах компьютеров. В конечном итоге, осталось 640 килобайт — и для 1981 года это было действительно очень-очень много.

При чем тут Билл Гейтс? В 1981 году он был не гендиром мега-корпорации, а обычным «стартапщиком», получившим (как утверждают злые языки, не без привлечения «родственных связей» в виде работавшей в IBM тетушки) контракт на адаптацию к IBM PC интерпретатора Бейсика, а затем, когда IBM поругалась с Гарри Килдаллом — и на всю операционную систему. Так или иначе, Гейтс подобного рода решений не принимал — кто бы его пустил? — так что «объявлять» подобное он не мог (и не надо тут никаких ассоциаций с Генри Фордом, сказавшим «вы можете купить Ford Focus любого цвета, если он будет серебристым металликом», ну или что-то в этом роде).

Потом, Гейтс действительно всячески открещивается от этой фразы — мол, не говорил он такого. И есть все основания считать, что на самом деле не говорил. Но вот отчего-то повелось считать, что Microsoft — корень всех зол, а Гейтс — вообще конченый подонок, намеревавшийся оставить всем эти жалкие по нынешним меркам 640 килобайт.

Кстати, про веб-программизм

Одной из самых неудачных черт PHP (да и вообще современного сайтостроительства) лично я считаю то, что очень неудобно хранить настройки где-либо, кроме базы данных. Конечно, почти всегда существует текстовый файлик с назанием типа config.php или config.inc, но в нем прописываются только параметры, необходимые для доступа к БД. В вордпрессе, например, такие параметры, как часовой пояс, название темы оформления и тому подобные хранятся в отдельной таблице БД, имеющей очень простую структуру — имя+значение. Если надо «узнать» один из этих параметров — пишите запрос :)

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

Хорошо спроектированная база данных вообще не нуждается в PHP-обертке, роль скриптов должна сводиться к «красивому» форматированию данных, полученных SELECT-ом. Может, конечно, я заново изобретаю велосипед (во всяком случае, идеи очень похожи на принцип Model-View-Controller), или призываю к «экстремизму», но вот мне кажется, что большинство движков веб-сайтов можно заменить на PHP MyAdmin :) Наверное, вряд ли это новость, но недавно я видел одну систему, построенную по довольно оригинальному принципу: есть база данных с кучей таблиц. Каждая таблица соответствует страничке сайта, которые строятся одним и тем же скриптом. Данные в таблицы можно добавлять через автоматически генерируемые веб-формы.

В принципе, это еще один шаг в сторону «веб-программирования мышкой«. Уже есть автоматизированные средства создания структуры БД (например, на основе Entity-Relationship диаграмм). При желании можно определить «визуализаторы» для различных типов SQL-запросов (например, запись в блоге или лента записей выводятся с указанием заголовка, автора, даты и т. п., комментарии — «лесенкой» или линейно), «вставить» их мышкой на страничку и получить готовую CMS для блога. Например, страничка, содержащая запись и комментарии к ней, полностью генерируется за два запроса:

SELECT author, title, text FROM entries WHERE entryid=$id;
SELECT author, text FROM comments WHERE entryid=$id;

Достаточно правильно отформатировать то, что вернула нам СУБД — и все готово!

Конечно, реальные запросы будут сложнее, например, явно стоит сделать таблицу authors (с полями типа name, surname, avatar), которую надо «соединять» с entries и comments, но все содержимое страницы определяется только SQL-запросами.

Есть, конечно, шутки об уникумах, которые сооружали сайты только на SQL-запросах (да-да, добавляя туда HTML-форматирование), и тем самым обеспечивали себе свое рабочее место до глубокой старости (потому что ни один пэхэпист ни в жисть не поймет, что это за извращение), но разве нельзя так делать сайты? И разве всем так нужны возможности тьюринг-полного PHP, когда вся его роль может быть сведена к форматированию отданных СУБД данных?

Про линуксы и наше компьютерное будущее

В ЖЖ наткнулся на такое типично «технарьское» мнение:

один и тот же линух с одинаковым ABI и, чуть ли не с одними и теми же либами и бинарной совместимостью обзывается то «пальмос», то «макось Хэ», то «Моэмо», то еще как

Почему заблуждение «технарьское»? Потому что только неравнодушному к технике человеку известно, что, например, Volkswagen Golf, Volkswagen Bora и Skoda Octavia — это «одна и та же машина» чуть ли не с одинаковыми запчастями (а конструктивно очень похожая на «девятку», да и вообще на любую переднеприводную таратайку). Человеку же «обычному» известно, что Golf — это small family car немецкой сборки, Octavia — что-то непонятное класса C+ (из C выросла, до D не доросла) для чешских пенсионеров, а Bora — «спортивный седан» (что само по себе странно, но чего только маркетологи не придумают). Точно так же и с ОС на базе ядра Linux. Ни потребителю, ни прикладному программисту не интересно, как именно на его мобильнике или «планшете» рисуются красивые окошки, цветные картинки и происходит переключение между интернет-браузером и писалкой SMS.

Скажу даже больше — само слово Linux очень сильно дискредитировано «технарями». На одном и том же ядре ОС построено огромное количество непохожих друг на друга «дистрибутивов», причем многие из них, мягко говоря, не отличаются дружественностью к пользователю. Собственно, нормальные дистрибутивы, на которых люди зарабатывают деньги, а не реализуют свои детские комплексы, от слова «Linux» в названии уходят.

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

Да, конечно, до POSIX-layer при известной хитрожопости можно добраться, но нужно ли это? Уже давно созданы более удачные программные интерфейсы — по той простой причине, что пользоваться старым и примитивным POSIX по нынешним временам неприлично сложно.

А сегодня в подтверждение своей точки зрения наткнулся на nomobile.ru на статью «Тоталитарный Linux«. Автор вот удивляется, что один из самых приличных дистрибутивов Linux — а именно, MeeGo — «на деле» больше похож на «страшный проприетарный виндовс» из тех сказок, которыми линуксоиды пугают детей на ночь.

…поставил и работай. Точнее — развлекайся, слушай музыку, смотри видео, серфи в Сети да общайся в социальных сетях.

Спрашивается: где пляски с бубном, где возня с драйверами, где перекомпиляция ядра? Если, по мнению Максима Макаренкова в этом и состоит главный принцип «свободного ПО» — то в MeeGo ему этого найти не удалось. Строго говоря, и «линуксом» ее называть не стоит — там для «пользовательских» приложений имеется свой API. Мало ли, что «под ним» скрывается некая вариация на тему POSIX?

Горяздо интереснее другое. В своем время, например, Microsoft сделала в «обновленном» меню Windows XP возможность разместить пару ярлычков с подписями «Интернет» и «Электронная почта». Вообще, это очень «правильный» шаг, который сейчас используют все «мобильные» системы. Зачем пользователю запоминать, что такое, например, Mozilla, The Bat!, IrfanView, Winamp, когда «ярлычки» подобных программ можно подписать проще, например: Интернет, Электронная почта, Рисунки и фото, Музыка. Что такое название программы? В лучшем случае — показатель наличия фантазии у ее авторов. Для пользователя это такая же лишняя информация, как, например, заводское обозначение двигателя автомобиля. Конечно, автомеханику набор букв типа 4G13 скажет о многом, тогда как потребителю достаточно лишь информации о том, что это бензиновый двигатель мощностью 75 л. с. (он с них налог платит).

Так вот, идея называть программы в соответствии с их функциональным назначением — она естественная. Для миллионов пользователей «Интернет» — это синяя латинская буква «E». Подозреваю, что впервые увидев программу с названием Opera, многие подумают, что это такой музыкальный плеер.

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

eshop

А лет через десять — нам «популярно» объяснят, что «персональный компьютер» 1980-2000-х годов — это нечто странное. Кому нужно устройство с интерпретатором Бейсика? Как ужасна сама возможность запускать разные сомнительные программы! А то, что эти программы мог писать любой хулиган? Это же просто страшно! Идея хранить пользовательские данные на таком ненадежном устройстве, как жесткий диск — это же грозит потерей данных! Да и сама идея держать дома вычислительную машину с ОС, требующей квалифицированного администрирования и ведущей свою «родословную» от многопользовательских систем (с многопользовательскими «атавизмами») — разве это не странно? Вы бы еще БЭСМ-6 под кроватью собрали :)

Я более чем уверен, что относительная «свобода» пользователя ПК ставить и (о ужас!) писать собственные программы в ближайшие несколько лет будет сильно ограничена. Помнится, в свое время «антимонопольщики» рвали на себе рубаху из-за того, что в Windows 98 был включен — о ужас! — интернет-браузер, который было немного затруднительно удалить из системы. Он не мешал установке других аналогичных программ и не навязывался пользователю, как единственный. Во всяких Android и MeeGo, даром что они на базе «открытого» Linux, дело обстоит с точностью до наоборот.

Интересно, как поведут себя в этой ситуации линуксоиды? С одной стороны, они искренне считают MeeGo и Android вариантами своей любимой ОС, а с другой — должны противиться всяким «ограничениям». Хотя… Ни в Android, ни в MeeGo никто не запрещает «докапываться» до ядра ОС или конфигурационных файлов. Правда, это занятие сильно напоминает копания в реестре 98 винды, но линуксоидам не запретишь :)

Собственно, это и есть один из способов коммерческого использования GNU GPL. Вроде как все «открытое-свободное», а посмотришь — реально там такой «тоталитарный контроль корпораций» (фраза из очередной завлекательной статьи «N причин установить Linux»), что богомерзкой венде и не снилось.

Про PHP и базы данных

В который раз убеждаюсь, что изложение SQL в «непрофильных» книжках по всякому там PHP приводит разве что к бесконтрольному распространению похапешных кодеров.

Недавно наблюдал замечательное — из базы данных извлекаются все записи таблицы (SELECT * FROM foo.bar;), затем сортируются пузырьком (!) в PHP-скрипте (про usort() аффтар был не в курсе), а затем выводятся те из них, которые имеют значение некоторого числового поля, равное 0 и 1. Про существование WHERE и ORDER BY мега-похапешник был не в курсе.

Собственно, осуждать похапешника и обвинять того в быдлокодерстве не стоит — я и сам был таким, делал сайты на самописном подобии CMS. Все это даже работало — с посещаемостью два недочеловека в день и не такое работать будет. Впрочем, некое «оправдание» у меня есть — я «изучал» SQL и PHP по статьям в журнале «Мурзилка» «Ксакеп». С гордостью могу заявить, что никаким SQL Injection у меня никогда не пахло! Впрочем, больше ничего хорошего сказать нельзя. Чему можно научиться вот из такого?

$sql2="select * from xforum";
$res2=mysql_query($sql2);
$a=mysql_num_rows($res2); #считаем количество тем в форуме
$b=ceil($a/30); # считаем количество страниц с результатами запроса
echo "Страницы: "; for ($i=1; $i<=$b; $i++) {if ($i!=$page) {echo "<a href=forum.php?page=$i>";} echo "$i"; if ($i!=$page) {echo "</a>";} echo " ";}
# выводим в цикле список доступных страниц с сообщениями
$sql="select * from xforum order by 'pid' desc limit $from,29"; #запрос на постраничный вывод дискуссий форума
$res=mysql_query($sql);

Собственно, самые продвинутые похапешники, которые даже знают «классические» алгоритмы, могут не заморачиваться со вторым запросом, а, как я уже говорил, отсортировать все «пузырьком». А представляете, что творится, когда в таблице xforum хранятся не короткие заголовки тем, а что-то более содержательное?

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

И эти люди запрещают нам ковыряться в носу :)

UPD Все было еще круче! Сортировка пузырьком понадобилась ровно по той причине, что чел просто не разобрался, как использовать usort(). Интересно, а лет пятнадцать назад, такие же монстры писали на C?

Про опенсорс

Две мысли.

Первая. Что бы там ни говорили Столлманы и типа сочувствующие про «эффективность открытых исходников как метода разработки, модернизации и сопровождения программ», открытые исходники — это фикция. Прежде всего необходима «внутренняя» документация, а она у многих опенсорс-разработчиков либо держится в голове (разбудите человека, занимающегося, к примеру, ядром Linux, и спросите, где реализована функция printk() — и он вам ответит: «Трактат десятый Тайного Писания, страница двести семьдесят шестая, третья строчка сверху!»), либо доступна «избранным». Да что говорить про «внутреннюю» документацию, когда в коде напрочь отстутствуют комментарии, а пользовательская документация написана десять лет назад для версии 0.0.1! Как говорит [info]vitus_wagner, копание в коде — это «грязная работа, которой хотелось бы избежать«, а во многих случаях — еще и совершенно ненужная.

Кстати, существуют ли обфускаторы Сишного кода? Думаю, от Microsoft не убудет, если они выложат «обфусцированные» исходники какого-нибудь Word 7.0. Зато Open Source и прочие радости :) Да и вообще хороший совет — хотите быть модными и опенсорсными? Выложите нечитаемые исходники!

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

Думаю, многие ковырявшие плеер из Vogue склоняются к мысли, что в качестве софта там стоит вариант MPlayer, распространяющегося на условиях GNU GPL. Кто видел в Vogue копию лицензии? Ответ: никто. Нет, конечно, если на плате в полнолуние нажать третью и четвертую кнопки одновременно, при этом замкнув пятую и двадцать пятую ноги флешки, то может быть, нам и покажут полный текст GNU GPL на китайском, но по-хорошему делавшие плеер китайцы плевать хотели на все лицензии.

Если хорошенько «поковырять» китайские «девайсы» — уверен, можно найти такие нарушения GPL, что всех китайских производителей быдлодевайсов можно отправить на урановые рудники. А реально GPL остается примером идеализма, мешающего использованию GPL-нутого кода теми, кто в этом заинтересован.

Еще про Pavo и ее эмулятор

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

В настройках линуксового драйвера для NAND флешек есть возможность задать размер «логической» страницы. Например, в ядре Linux с сайта Ingenic он равен 4096 байтам + 128 байт «служебной информации», или OOB — out of band. «Физическая» страница используемой в Pavo флешки — это 2048 байт + 64 байта OOB, то есть «логическая» страница состоит из двух физических. Так вот, в ядре с сайта qemu-JZ размер логической страницы равен размеру физической и никаких «косяков» на данном этапе загрузки не происходит. Если подкинуть этому ядру ФС, собранную Ingenic-овцами, то ядро паникует на другом этапе — ФС не монтируется, и, соответственно, не находятся конфигурационные файлы.

Можно попробовать собирать файловую систему «напрямую» из tar, не «распаковывая» архив в локальную файловую систему (я пробовал — получается фигня, именно поэтому у konst.cranky не получилось «работающих» ФС). Времени у меня все равно мало, так что дальнейшие извращения с Ingenic-овскими чипами ждите после Нового Года.

В планах: собрать работающую ФС для тамошнего Linux и разобраться с toolchain-ом — как минимум, вывести в UART Hello, world!

Неудачный результат — тоже результат

Так и не выходит запустить эмулятор PAVO, скомпилированный под MinGW. Сам эмулятор, видимо, работает, но ничего, кроме черного экрана от него добиться не удалось. Как предлагает Библия, седьмой день недели надо посвятить Богу своему, поэтому, как русский православный человек, ничего делать в воскресенье я уже не буду (есть, конечно, те, кто начинает отсчет дней недели с воскресенья, по-американски, и посвящяет своему Б-гу субботу, но таких мы единогласно осуждаем). Для очистки совести напишу, с чем конкретно я столкнулся. Все это делалось в MinGW под Windows 7, так что «костыли и подпорки» касаются только этого «build environment».

Для компиляции QEMU я воспользовался пошаговой инструкцией с qemu-forum.ipi.fi, творчески ее модифицировав. Шаги с первого по пятый выполняем без изменений. Проблемой может стать поиск старой версии MinGW. Я нашел MinGW 3.1.0-1 на сайте Kudzu World.

Затем я установил пакет directx-devel, как описано на седьмом шаге, а при установке SDL столкнулся с трудностями — он не компилировался, какие-то странные глюки возникали при копировании файлов. Поэтому вместо восьмого шага руководства я скачал уже готовую библиотеку SDL 1.2.1.14 для MinGW с официального сайта. Распаковываем архив и выполняем make install.

Девятый шаг — установка zlib, там все нормально и соответствует инструкции. Дальше начинаются пляски с бубном. Скачиваем с jz-hacking исходники qemu-jz. Распаковываем, запускаем ./configure --target=mipsel-softmmu. Если теперь попытаться выполнить make, вылетит ошибка — используемая версия gcc не знает об одном из параметров командной строки. Поэтому в файлах config-host.mak и mipsel-softmmu\Makefile надо убрать параметр компилятора -Wendif-labels. Заодно в файле qemu-sockets.c на 155 и 273 строках надо заменить вызов функции gai_strerror на любую строку — этой функции почему-то нет в MinGW, да и не пригодится нам ее выдача. После этого делаем make. На этом qemu готов, перемещаем файлик qemu-system-mipsel.exe в какое-нибудь более пристойное место и подкладываем к нему SDL.dll.

Кстати, иногда configure «на ровном месте» спотыкается при определении наличия zlib. Не паникуем, а просто запускаем еще раз. Иногда просветление настигает железного болвана на третий-четвертый раз.

Теперь займемся изготовлением прошивки для флешки. Она состоит из трех частей — загрузчик на основе u-boot, ядро Linux и файловая система. Загрузчик и ядро Linux уже «собраны», их достаточно только скачать.

Файл u-boot-nand-pavo-20090207.bin переименовываем в u-boot-nand.bin, uImage-pavo-20090207 — в uImage.

Файловую систему предлагают построить из ее же, но заархивированной, с помощью утилиты mkyaffs2image, но не оригинальной версии, а чуть-чуть модифицированной. В MinGW собрать работающую версию мне не удалось, но konst.cranky любезно поделился собственноручно сделанным файлом, скачать его можно отсюда — http://files.mail.ru/6DBIGD.

Так или иначе, разжившись файлами u-boot-nand.bin, uImage и rootfs.yaffs2 складываем их в одно место и готовимся делать образ флешки. Для этого надо скомпилировать утилиту pavo_nandflash. Как водится, начнем продираться через dependency hell. Для утилиты требуется библиотека libconfuse. Займемся ее сборкой. Китайцы советовали версию 2.5, скачиваем ее в архиве и распаковываем. Дальше, казалось бы, все просто — ./configure, make — и тут спотыкаемся. В исходниках не предусмотрено, что бывают Win32-системы без dllimport — а конкретно, MinGW. Лезем в файл confuse.h и заменяем там конструкцию

# ifdef BUILDING_DLL
# define DLLIMPORT __declspec (dllexport)
# else /* Not BUILDING_DLL */
# define DLLIMPORT __declspec (dllimport)
# endif /* Not BUILDING_DLL */

на кошерную

#ifndef __GNUC__ /* Not MINGW */
# ifdef BUILDING_DLL
# define DLLIMPORT __declspec (dllexport)
# else /* Not BUILDING_DLL */
# define DLLIMPORT __declspec (dllimport)
# endif /* Not BUILDING_DLL */
#else /* MINGW */
# define DLLIMPORT
#endif /* MINGW */

Кроме того, надо отредактировать examples/Makefile — примеры использования библиотеки кривые и не компилируются. Заменяем all: all-am на

all:
  echo "foo"

В начале второй строки должен стоять Tab. Теперь с чистой совестью выполняем make и make install.

Теперь можно попытаться собрать утилиту от братьев-китайцев. Скачиваем архив, распаковываем, чистим от мусора.

wget http://jz-hacking.googlecode.com/files/jz_tools_20090207.tar.gz
tar zxvf jz_tools_20090207.tar.gz
cd jz_tools/nand_flash
make clean

В файле pavo_nandflash.c после всех define-ов добавляем typedef unsigned int uint32_t;. Теперь make моментально соберет pavo_nandflash.exe. Перекидываем его в директорию с «частями» прошивки и пишем файл pavo_nandflash.conf, примерно такой:

#
# pavo board nand flash configuration file.
# Copyright (C) 2008 yajin(yajin@vm-kernel.org)
#

# comment the unwanted part
flash_image = pavo-nand.bin

uboot_image = u-boot-nand.bin
uboot_start = 0x00000000
uboot_end = 0x00400000
uboot_add_ecc = 0

kernel_image = uImage
kernel_start = 0x00400000
kernel_end = 0x00800000
kernel_add_ecc = 0

rootfs_image = rootfs.yaffs2
rootfs_start = 0x00800000
rootfs_end = 0x08000000
rootfs_oob = 1
rootfs_add_ecc = 0

Запускаем исполняемый файл, получаем гигабайтный образ флешки — pavo-nand.bin. Подкладываем его к эмулятору и пытаемся запустить командой

qemu-system-mipsel -M pavo -mtdblock pavo-nand.bin

К сожалению, мне удалось получить лишь черный экран. С помощью Ctrl+Alt+(цифры) можно переключаться между несколькими «консолями» — в том числе и «монитором». Дамп памяти показывает, что u-boot загружается, а вот ядро Linux — уже нет.

Если кто-то будет более удачлив — то после загрузки ядра надо набрать в консоли runqpe, тогда запустится qtopia.

В общем, предлагаю желающим опробовать китайский рецепт на «полноценном» линуксе.

Просьба к товарищам линуксоидам

Извращаюсь с PAVO, благополучно собрав эмулятор. Точнее, пытаюсь извращаться — у меня не запускается собранный для него Linux. Я скачал u-boot и образ ядра, но не могу сделать файловую систему — MinGW не поддерживает symlink-ов и утилитка mkyaffs2image не хочет работать правильно. Может кто-нибудь выполнить описанные в Make the yaffs2 image шаги и выложить куда-нибудь получившийся файл rootfs.yaffs2?

Смело нырнул в волшебный мир GNU-того софта

Теперь главное вынырнуть.

Круче бесконечных ./confugure, make и make install по мозгоразрывающему действию могут быть лишь макросы ворда.

Хочу извращений

Так и не нашел я в окрестных лабазах пресловутого номера Vogue, думаю, что в ближайшее время аналогичная реклама вряд ли где появится (хотя не исключаю рекламу водки «Погань» в журнале «Ксакеп»). А вот всякой документации на процессоры фирмы Ingenic почитал порядочно.

Довольно интересная штука за авторством этой фирмы — демо-плата PAVO на процессоре Jz4740.

ingenicdemo

Самое замечательное — то, что эта демо-плата эмулируется в QEMU, точнее, в доработанном китайцами QEMU. Их страничка так и называется — JZ Hacking. Там можно скачать работающий (ладно, компилящийся) QEMU с доработками, прошивку для девайса, а также несколько утилит для создания «правильного» образа флешки из файлов *.bin.

mipsel-qemu

Кстати, никто не «подкидывал» эмулятору образ флешки, вытащенный из Vogue? Или наоборот — никто не заливал в Vogue прошивку от PAVO? Впрочем, я не про это. Лично мне кажется, что в портировании Линукса на очередную китайскую плату нет какого-то «драйва». Китайцы все равно это уже сделали, и не хуже многих. Потом, мне Линукс не нравится из религиозных соображений :)

А вот поковырять платку (или эмулятор) в плане запуска на ней Minix 3 — довольно забавное, с моей точки зрения, занятие. Насколько я понимаю, разные процессоры Jz47xx отличаются в основном набором периферии — которую можно вынести в драйверы. Процессорное ядро там одинаковое, причем совместимое с MIPS.

К сожалению, Ingenic-овский FTP огородили от любителей халявы, и теперь он требует пароль :( Придется еще и заниматься reverse engineering-ом по исходникам QEMU.

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