Home

Advertisement

Customize

Глубоко в Джунглях

Jul. 8th, 2009

11:46 am - История одной любови

Она началась в 1998-м году. Случайно.

На книжкой ярмарке в ДК Крупской я зачем-то купил книжку "Страсти по Фоме" неизвестных мне авторов: Сергей Осипов, Константин Малышев. И немедленно выпил запоем прочитал. За ночь. Но, по тем временам в этом не было ничего необычного. Необычным было то, что я почти полночи ржал. И то, что кроме "поржать" там, пожалуй, было и что-то более тонкое. Было б только "поржать" -- я бы об этом не писал через 11 лет.

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

Одиннадцать лет, одиннадцать зим )

26-го июня 2009 я получил письмо:

Здравствуйте, Сергей…

Мне понравился ваш отзыв на мою книгу о Фоме. Спасибо за рекомендацию, хотя это было 7 лет назад, когда я тщетно «бился об» различные издательства, но думаю это не важно. Решил написать, потому что эпопея началась снова – в Москве вышла первая книга «Страстей» (новая композиция, редакция и оформление), и вполне возможно, что на этот раз удастся издать все четыре книги о рыжем.

С уважением, Осипов Сергей

Найти книжку в продаже оказалось непросто, но я справился.


Продолжений пока нет, но есть надежда :)

Правда ли сразит Ланселот дракона?
Правда ли подвески вернутся в срок?
Правда ли любовь выше всех законов? -
Это я спрошу у последних строк.

Йовин
:)

Я не читал "Фому" лет шесть, и тем более не читал новую редакцию, я не знаю, понравится ли мне сейчас новый или даже старый, и я совсем ничего не знаю про продолжения :) Но, я надеюсь, я вас заинтриговал :)

P.S. )

Jul. 1st, 2009

01:08 pm - Спасибо!

Всем спасибо, все решили правильно, моя вера в человечество основательно укрепилась :)
Комменты открыл.

Jun. 30th, 2009

01:09 pm - Задачка

Други! Особенно гуманитарии :) Но и остальные тоже. У меня к вам просьба. Пожалуйста, попробуйте решить задачку.

Осенью цена на морковь снизилась на 10% по сравнению с летом. На сколько процентов больше нужно продать морковки осенью, чтобы выручка от её продажи увеличилась на 8% по сравнению с летом?

Это из ЕГЭ по математике этого года, задача B9 одного из вариантов (вариант 1 по ссылке). Задачка хороша тем, что формулировка не содержит непонятных слов, и для решения не требуется никакой особой техники: знать, что такое 'процент' и немного подумать.

При этом, по статистике, на ЕГЭ задачу B9 решило менее 0,1% детей. Собственно, интересно посмотреть, кто из взрослых без высшего математического-технического сможет решить. Но и те, кто с высшим математико-техническим тоже могут написать, мне будет приятно :)

Комменты скринятся. Если есть идеи, но до конца не довести -- напишите идеи, в конце концов на экзамене её можно хоть час мучать. Если и идей нет -- напишите что ничего не получается, это бывает, у 99,9% школьников не получилось.

Upd: Поступило предположение, что формулировка была слишком пугающа :) Исправил, как мог.

На данный момент имеем 14 правильных ответов и одну в целом правильную, но почему-то отвергнутую автором идею.

Upd2:
К концу:
-- ответов 25
-- недоделанная идея одна.
-- гуманитарии среди отвечающих есть, хотя и немного. Остальные, наверное, всё же не решились :)

Всем спасибо!

Jun. 28th, 2009

04:10 am - А теперь про школьное образование

Интереснейшая дискуссия очередной флейм со мной в главной роли (по количеству комментов) только что тихо умер.

Список участников и краткое содержание )



Итак, собственно, что же говорит Маша.

Самое главное: ничего не изменится, пока в министерстве не начнут думать зачем нужно изучать тот или иной предмет. Они этого не делают совершенно.

В яблочко! Абсолютно очевидная постановка вопроса, и никаких даже следов обсуждения! О чем-то это говорит... Ну, т.е. это коррелирует с моими предыдущими двумя постами (три подряд про образование! Пора завязывать :)), но так явно [даже :)] я это не формулировал.

Нет цели. Хоть как-то очерченной. На первый взгляд это может показаться несущественным -- мол, физика и есть физика, какая разница, в чём цель, физика-то остаётся одна и та же? Учим физике чтобы был образованным!

Во-первых, ссылка на "чтобы был образованным" это ссылка в никуда. Непонятно ни что такое "образованный", ни зачем им быть.
Во-вторых, про физику не скажу, но математик много разных точно. И много способов её преподавать. Эта тема живо обсуждалась в помянутой дискуссии :) Там как минимум два варианта. Ещё есть смешной вариант. Ну и много чего ещё можно придумать.

Пример подобной переориентации, произошедшей на наших глазах: информатика эволюционировала от программирования до MS офиса. Изменилась цель -- изменилось направление.

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

Нужно понимание чего хотим, куда стремимся. Зачем мучаем детей, кого хотим воспитать. Что такое человек, каким он должен быть :) Сложные вопросы, проще не отвечать и продолжать пихать в детей ту же программу потому что "так делали наши предки" и "советское образование было лучшим в мире". Но, дело в том, что его мы уже почти разрушили (об этом наглядно говорят результаты ЕГЭ) и надо в любом случае что-то новое создавать. И, мне кажется, даже приблизительные и не полные ответы могли бы сделать обучение гораздо более эффективным.

Upd: Немного о собственном опыте. Я иногда студентами балуюсь... :) На тему ассемблера x86.

Важнейшее, что я пытаюсь объяснить -- факт наличия внутренней логики. Мы изучаем систему, разработанную инженерами, у которых были задачи и ограничения. Исходя из задач и ограничений они поступили так-то и так-то. Т.е. это не совсем произвольные, не случайные решения. Помогает вопрос "как бы решили эту задачу Вы?" Но это когда времени много.

Я не знаю, насколько успешно я объясняю. Обычно я объясняю что-то студенту при сдаче отчёта по лабораторной, т.е. это как раз тот момент, когда надо было бы проверять :) И после моего объяснения проверять уже особо некогда. Но зато в такие моменты они очень внимательно слушают :) И у меня складывается ощущение, что что-то понимают.

Да, и важны здесь не знания конкретного процессора, а подход к изучению системы. Через цели, задачи и ресурсы-ограничения.

May. 19th, 2009

03:33 pm

Продолжая тему предыдущего поста :) Вообще, исходно он был совсем не про образование, а немного шире, именно про пользу от теории... Но потом куда-то свернули. Ну да ладно, свернули так свернули.

Вывод будет в конце.



... именно из-за этого, как мне кажется, в программировании столько "дилетантов" :) Чтобы стать физиком нужно много учиться, чтобы стать строителем нужно много учиться, чтобы стать химиком нужно много учиться... Чтобы стать программистом? Уважаемые [info]lumag и [info]ran_dom оба физики, оба с Политеховского Физтеха [и ещё одна особенность обучения у них общая, кстати; ребята, знакомьтесь :)]. На кого учился [info]ushastyi я не знаю. [info]lazy_frog лингвист и психолог. Я, ребята, единственный из вас учился на что-то типа программиста :)

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

Ну да, допустим Политех suxx, особенно наша кафедра, и это действительно недалеко от истины. Но как же эти физики, химики (есть соответствующий знакомый) и лингвисты (вот позор на нашу "техническую" специальность!) программируют?!

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

  • Железо, ассемблер, регистры, двоичная система счисления -- все такие вещи абсолютно не нужны. Мы используем языки высокого уровня, а часто и вообще скрипты.

  • Алгоритмы, математику вообще. В любом языке есть функция sort, есть hashmap, есть ассоциативный массив какой-нибудь. Что там ещё надо-то?

  • SQL и реляционную алгебру. Современные ORM прекрасно справляются.

  • Как устроены сети ниже уровня "поток байт". Концепция сокета прекрасно маскирует всё нижележащее начиная с 80-х. А по последним данным сетей вообще нет, удалённые вызовы ходят прозрачно.

  • Концепция файла эффективно скрывает все детали реализации файловых систем, все эти сектора и кеши.

  • Выделение памяти происходит тоже само.

  • Без многопоточности можно прекрасно обойтись в 99% случаев. Более того, это таки действительно хороший стиль -- без неё обходиться.

  • Детали реализации ОС тоже не нужны.

  • Пролог, хаскель, схема и прочая такая же ботва

Что там осталось?

  • Синтаксис языка программирования

  • Любимая библиотека

Всё! Это, вообще-то, с трудом тянет на двухгодичное обучение в ПТУ.

Да, действительно, есть особые отряды программистов специального назначения... Некоторые из них, например, знают SQL. Таких днём с огнём ищет [info]plugimz (точнее, раньше искал). Или кто-то знает низкий уровень, такие нужны [info]ran_dom. Для разработки игр требуется примерно один человек, который сечёт в алгоритмах и оптимизации. Хорошо бы он принимал участие в написании движка. Для собственно конкретной игры он не нужен. Когда пишут ОС кто-то должен знать про процессор, кто-то другой про файловые системы, ещё кто-то -- про сети, про алгоритмы распределения памяти. Ну и т.п.

Конечно, при прочих равных, приятно, когда у тебя умные коллеги, с которыми можно пообсуждать что-нибудь в перерыве. Как выясняется, в среднем физики и математики и лингвисты более чем удовлетворяют этому требованию. Конечно, редко-редко бывают ситуации, когда мифологические представления (о железе, об ОС), складывающиеся у сферического прикладного программиста оказываются неадекватны, причём настолько, что это влияет на код, причём так, что код не работает. В этом случае он попадает в затруднение, ему нужна кратковременная помощь эксперта. Но, если человек обучаем, обычно это не проблема. Физики и математики и лингвисты в среднем обучаемы.



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

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

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

Да, и я думаю, программирование через некоторое время выйдет из этого странного промежуточного состояния. Например, останется 1% "программистов" от сегодняшнего, а остальное будет настолько упрощено, что с задачами прикладного программиста будут справляться пользователи без подготовки вообще.

May. 18th, 2009

12:48 am - Теория

Почувствовал пользу от теории :) Весьма, гм, специфическую.

Был у нас такой предмет "Перспективные микропроцессоры", вёл его Юрий Евгеньевич Шейнин. Рассказывал про конвейеры, кеш, предсказание переходов, векторные инструкции, VLIW прочее подобное. Мужик он умный, знает много, рассказывал интересно. Да и материал благодатный: это как раз тот случай, когда нужно понимать логику архитекторов, т.е. думать головой.

Но курс, очевидно, бессмысленный и беспощадный: всё это слишком далеко от практики, практически ничего из описываемого невозможно пощупать, даже если специально стараться. Будь ты аппаратчик или программист, если ты не занимаешься разработкой процессоров, предсказалка переходов тебе параллельна, применить знания о ней не получится никак. А если ты разрабатываешь процессоры, то уж как-нибудь объяснят, наверное (с кешем столкнуться проще, но и это тоже очень нетривиальная задача).

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

А теперь посмотрим, как эта общая образованность мне пригодилась.

Я сейчас читаю доки по POWERx/PowerPC. И там довольно много пишут про кеши, конвейер, переходы и т.п. И благодаря тому, что я в курсе, что это такое, я понимаю, что по сути ничего особенного они не пишут :) Так вот, поинт в том, что развив здоровый пофигизм в отношении непонятных деталей, интуицию и уверенность в себе, этого результата можно было бы достичь и без теории вообще :) Более того, в 99% случаев можно и без интуиции.

При этом я-то как раз подобные штуки очень люблю. Мне только волю дай -- буду сидеть и разбираться, как оно работает, сам ничего не делая :) Но я отношу это на счёт своих психологических комплексов и стараюсь себя как-то контролировать.

Upd: Как обычно, в комментах пришёл к сути того, что хотел сказать.

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

Как заметил многоопытный [info]lumag, существуют ситуации, когда подобные знания оказываются полезны. И тут я не могу с ним спорить. Но, на мой взгляд, проблема в том, что в таких ситуациях знаний оказывается нужно гораздо больше, и более конкретных: не про вообще, а про вот этот вот процессор. Конечно, владение общим контекстом облегчает задачу получения конкретных знаний. Но по идее, можно и этот контекст изучить тогда, когда понадобится, благо в данном случае всё вполне тривиально, всего пара идей на всю индустрию.

Да, и конечно, общее образование полезно, и мозги развивает, и вообще. Но, может быть, это не самый эффективный способ расходования [учебного] времени?

Я правда не знаю. Общие слова про расширение кругозора и сознания я и сам могу сказать. И мне тоже кажется, что это важно. И я сам этим для себя занимаюсь. Но мало ли чем я занимаюсь. У есть некоторые сомнения в собственной адекватности, так что это не аргумент. Ещё у меня нет никаких экспериментальных данных, и я даже не знаю, какие измерения могли бы решить проблему, т.е. нет даже никаких конкретных утверждений. Есть пока только вот такие вот смехуечки над практической полезностью теории :)

Upd2: В данном случае в кои-то веки вопрос не "что мне пригодилось из того, чему нас учили", а что-то типа "мог бы я освоить это без отрыва от производства, если бы мне понадобилось". Если ответ "да", то допвопрос: "насколько и куда это расширяет поле моей возможной деятельности". Если ответ "да в общем-то и никуда особенно", то "для чего мне это изучать сейчас". Вот с этих позиций.

May. 12th, 2009

03:46 am - История с математиком

Вот такая: http://fregimus.livejournal.com/54710.html

Пост [info]fregimus написан в расчёте на образованных людей, которые и так всё знают и по намёкам поймут; в комментах гораздо подробнее, загляните.



Вкратце, в чём поразившая меня суть:

Англия. 1953-й год. Алан Тьюринг, один из величайших математиков 20-го века (общепризнанно, в частности есть премия Тьюринга -- это такая "нобелевка" в области computer scince). Осуждён по закону о гомосексуализме, приговорён к принудительному лечению, лишён допусков к секретным разработкам (помимо прочего он занимался криптографией, во время второй мировой ломал немецкие шифры, получил за это Орден британской империи). Оказался в изоляции. Через год покончил жизнь самоубийством.

Это известные факты. Дальше идут предположения.

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

Во-вторых, в 1951-м были раскрыты и сбежали из Англии в СССР два советских шпиона Гай Берджесс и Дональд Дюарт Маклин. Первый был гомосексуалистом, второй просто любил всех подряд, не обращая внимания на половые признаки. Это, собственно, не предположение, а факт; предположением является связь этого события с делом Тьюринга.

Объединяя первое и второе: есть версия, что Тьюринг попал под раздачу контрразведки, избавляющейся от элементов подозрительной сексуальной ориентации. При этом, видимо, ничего конкретного ему предъявить не могли, иначе бы просто предъявили.



Да, и особенно меня удивило, что в Англии в то время гомосексуализм был запрещён законом, и вплоть до принудительного лечения. Я потому что помню это как одну из особенностей тоталитарного Советского Союза, а тут оказывается. Вот есть интересный список по странам, с датами отмены.

May. 11th, 2009

04:02 pm - Свобода от для

[info]ushastyi поднял тему которую я не могу игнорировать, т.к. сам неоднократно грешен. Прочитайте, небесполезно и поучительно. Особенно вместе с моими комментариями :)

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

Прочитали? Тогда поехали дальше.



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

а на самом деле )

На этом можно считать фигуру Милля выведенной из дискуссии: оспариваемая точка зрения ему никогда не принадлежала. Тут же можно закончить обсуждать текст: автор применил слишком гнусный полемический приём (обратите внимание, что "автор" и [info]ushastyi это два разных человека).

Но я же не текст обсуждать собираюсь, текст -- это только повод.



В сухом остатке: "либеральной свободе от" противопоставляется "Ницшеанская свобода для".

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


Ницше, конечно, жжот напалмом. Но вариантов ответа он не предлагает :) Ну, ясен перец, "читатель должен самостоятельно подумать над вопросом, задуматься о своей жизни, пересмотреть её" и т.п.

что мы можем сказать про ответ )

Несложно заметить, что всё описанное выше это глубокая теория. Такие абстрактные вещи как "полная свобода от" или "служение Богу" хотя и более конкретны, чем "животворящий мрак" и "метафизические бездны", но потрогать всё равно нельзя. И даже куда идти чтобы достигнуть -- непонятно.

И вот тут рулит Ницше и "свобода для".

куда же он рулит )

May. 7th, 2009

12:16 pm - Виртуальная память - 1 (дополнение)

Предыдущая часть тут.

Intel x86 (32-битные): дополнительные главы


Описанные до сих пор возможности относятся примерно к 486-му. Но прогресс не стоит на месте! Иначе же не впарить лохам новые процессоры. Много нового и интересного было реализовано инженерами Intel в последующих поколениях x86.

Глобальные страницы (начиная с Pentium Pro)

Начнём с простого. На картинках, изображавших PTE и PDE серым цветом был закрашен 8-й бит. Сорвём же покров.

Сорвём же, сорвём же! )

Пробиваем барьер 4 Гб: зачем и как

Сначала рассмотрим постановку задачи. Проблема в том, что линейный адрес у нас по прежнему 32 бита. А, поскольку для нормальной работы приложений преобразование линейного адреса в физический должно быть однозначным, больше чем в 32 бита его преобразовать не получится. И зачем нам тогда 36 разрядов на шине и 64 Гб памяти?

Затем, что преобразование действительно должно быть однозначным, но может быть переключаемым. И есть два основанных на этом юз-кейса:

  • Посредством каких-нибудь ОС-специфик заклинаний пользовательский процесс может попросить ОС отобразить часть его адресного пространства куда-нибудь в другое место в ОЗУ. Поработать там, а потом переключиться обратно. А потом ещё раз обратно. А потом ещё куда-нибудь... Так, манипулируя отображением на разные части ОЗУ, можно делать вид, что много-много памяти доступно почти напрямую. Очень неудобно, но куда деваться на 32-х разрядном процессоре. В Windows есть система соответствующих заклинаний.

  • Менее извращённый вариант. По 64-м доступным гигибайтам можно распределить разные процессы. Переключение будет происходить естественным образом при переключении контекста. Больше данных влезет в ОЗУ, будет меньше свопинга и больше счастья, и всё абсолютно прозрачно для приложений. Это умеют все уважающие себя ОС.

Перейдём к вопросу "как". В рамках существующей схемы преобразований адресовать 64 Гб нам мешают только слишком короткие адреса в CR3, PDE и PTE. С PDE и PTE всё должно быть понятно, а регистр CR3 я вам раньше не показывал. Вот он какой (до решительных изменений):

4.10 КБ

На адрес отведено 20 бит, именно поэтому каталог страниц должен быть выровнен по границе 4 Кб.

Больше в процессоре физические адреса не употребляются нигде (точнее, я долго вспоминал, но ничего не придумал, если кто знает -- подскажите). Все остальные адреса -- логические, в крайнем случае -- линейные (в инструкциях lgdt, lidt, в отладочных регистрах). А, значит, если разрулим тут -- разрулим везде, остальные даже и не заметят?

.. нет, не значит :) На процессоре жизнь не заканчивается. Проблемы с поддержкой адресов старше 4 Гб могут быть у всякой периферии в режиме DMA. Ну и у драйверов, соответственно. Вот немного на эту тему. Но не будем о грустном.

Пробиваем барьер 4 Гб - I (начиная с Pentium Pro)

Очередной флаг из регистра CR4 называется Physical Address Extension (PAE, бит 5). И он всё меняет.

и что же теперь? )



Всё, вроде про виртуальную память в x86 больше сказать нечего :) Нас ждёт PowerPC.

12:15 pm - Виртуальная память - 1

Пора платить долги. Теоретическое введение было тут. Перейдём к реализации.

Вам не повезло. Или наоборот -- повезло. Как посмотреть. В общем, тему защищённого режима x86 я знаю довольно туго. Поэтому получилось длинно, подробно и с кучей ссылок свои на собственные статьи :) Вот только код пока заленился писать. Придётся, конечно, но чуть позже.

Разбил на две части, иначе как-то многовато, слишком высока вероятность, что не прочитает никто :)


Intel x86 (32-битные)


Про устройство памяти в защищённом режиме Intel x86 с отключенной страничной адресацией я подробно писал тут.

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

Кратко напомню основные тезисы.
  • Адрес, выставляемый процессором на системную шину называется физическим. В рассматриваемой серии Intel x86 максимум -- 36-и разрядов. Для краткости "физическое адресное пространство" я буду по бытовому называть "ОЗУ".

  • Адреса, которые используют прикладные программисты -- логические, имеют форму <сегмент>:<смещение>. Смещение -- 32 разряда.

  • Логические адреса преобразуются в линейные, по формуле <база сегмента> + <смещение>. В типичной современной ОС базы типичных сегментов -- 0 (могут быть специальные сегменты, например сегмент FS в Windows NT). Линейный адрес тоже ограничен 32-я разрядами (да, действительно можно устроить переполнение).

  • Линейные адреса преобразуются в физические. Если страничная адресация отключена, то <физический> = <линейный>. Если включена, то начинается то, ради чего мы тут собрались :)

Итак, табличная адресация включена.

а дальше? )



На этом мы завершили основную стройную картину. Дальше -- всякие подробности.

Mar. 19th, 2009

11:15 am - Короткой строкой

Мой ЖЖ всё больше похож на блог блондинки? Добавим ссылок, фоточек и мувиков с котятами :)



Мувики представлены выступлением hdds в Главклубе на Дне Святого Патрика. Точнее, не всем hdds, а сетами. Имхо, это лучшее, что там было. Правда, меня там не было, я только видео смотрел.


Если кто-то впечатлён -- скоро новый набор. Ю а велкам. На сеты я бы и сам пошёл, да всё никак не получается.



На rsdn выложили в онлайн мою статью HOWTO: Свой поток ввода-вывода. Здесь она обсуждалась полгода назад.



Шин О'Монтаж

Это я сочинил баян. Правда, я думал, что он древний и всем известный, а оказывается нет. При поиске по фразе в кавычках Яндекс находит ровно одну ссылку, она релевантна и замечательна. Гугл находит две, но обе мимо :) Правда, новые записи в блогах гугл обрабатывает шустрее, так что когда вы это читаете, скорее всего он уже проиндексирует мою запись, и по ссылке сходит.



В CSClub-е идёт очень интересный (судя по первым двум лекциям) курс Параллельное программирование (изумительно информативная страничка :)). Вопреки ожиданию, это вовсе не про мифические мониторы Дейкстры и использование объектов ядра для синхронизации, а (повторюсь -- судя по началу) про lock-free решения. Ссылки на видео первых двух лекций доступны отсюда. Планирую ходить, или хотя бы регулярно смотреть.

Остальные курсы этого семестра кажутся мне чересчур эзотеричными.



Я уехал. Приблизительно сюда. Вернусь 29-го, если будет на то воля Аллаха.



Обещанные фоточки.

на отдыхе )

Это я и Хелви, который в спальнике тот я.
Дело было в прошлый раз.

10:31 am - О свободе

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

'Функция всех структур — сохранять форму и служить опорой — требует, по определению, в известной мере пожертвовать свободой. Можно привести такой пример: червяк может согнуть свое тело в любом месте, где пожелает, в то время как мы, люди, можем совершать движения только в суставах. Но мы можем выпрямиться, встать на ноги — а червяк не может' (Конрад Лоренц).

Зато червяк может саму способность встать на ноги объявить несерьезным делом и дорогой к рабству. ...»

Владимир Шинкарев. «Митьковские пляски. Краткое руководство для хореографических кружков художественной самодеятельности»


Цитата по http://www.inr.ac.ru/~info21/blackbox/disciplina/welcome.html Дальнейший текст по этой ссылке я не читал, и, подозреваю, не вполне с ним согласен.

Гениально.
Мегареспект Шинкарёву и Лоренцу.

Upd: с другой стороны :)
У медали всегда две стороны, да.

Mar. 13th, 2009

12:39 am - Алексей Архиповский

И ещё один ролик послушайте :) Я выбрал покороче.


Сегодня был на квартирнике Алексея Архиповского у Гороховского. Архиповский внушаеть.

Очень живой. У него такая рожа... :) Простецкая совершенно, деревенская, "с хитрецой", ужасно выразительная. А когда играет, он просто прётся :) И с балалайкой делает чёрти что.

Выглядит он

так )

Офигенное интервью с ним.

...Мне кажется, степень правдивости – это и есть степень талантливости человека.

Я тут и выпал.

Правда, мне кажется, что это всё чудесно, но ... всё-таки больше шоу, чем музыка. И репертуара мало, везде (на всех концертах) почти одно и то же (на мой неискушенный слух). Впрочем, как и у Ивана Смирнова. Смирнова спасает то, что он там не один, Архиповского -- собственная артистичность, но это какие-то кривые обходные пути.

Кстати, есть ещё третий чем-то похожий музыкант. Скорее по ассоциации или внешне :) Потому что он как раз не виртуозит, а пишет новые песни, это прекрасный [info]ilisov, и 17-го марта у него концерт в Революции. И на него я как раз попаду.

Mar. 8th, 2009

11:25 am - Золушка

Я вижу женщину, я слышу стук часов
Все замерло, все так кристально ясно
Вот полночь бьет и женщина прекрасна
Скажи ей сам - мне не хватает слов

Случится день, когда средь суеты
Где кажется чудесного так мало
Я вдруг увидел очертанья бала
Ты должен знать - там был и я и ты

Ты должен знать. И если жить любя
Здесь волшебство завязано судьбою
Принцесса, Золушка, вот женщина с тобою
А кто она - зависит от тебя


Б.Г.

послушать...

Сойдёт за поздравление? :)

Mar. 5th, 2009

10:51 am - Виртуальная память - 0

Скорее всего, все знают, как устроена виртуальная память в Intel x86 ...

Не. Это вряд ли.

Скорее всего, многие видели картинки, более-менее изображающие устройство виртуальной памяти в Intel x86. Как выясняется, есть и другие забавные и поучительные варианты того же самого.

Это должен был быть один большой пост. Но он получается слишком большой и я его уже пишу слишком долго. Поэтому пусть будет много маленьких.

[Ликбез] Виртуальная память: что это и зачем

Вдруг кто-то не знал или забыл.

Итак: процессор, память, многозадачная операционная система, много задач (ака процессов). У каждого процесса есть какой-то исполняемый код, какие-то данные, чтобы всё это работало оно должно находиться в памяти. И тут возникает несколько проблем:
  • Процессы не должны мешать друг другу. В частности один процесс не должен иметь возможность случайно поменять данные/код другого процесса, иначе из-за ошибок в одном процессе будут падать все остальные (если такая возможность нужна, пусть попросит явно, это отдельный разговор).

  • Памяти мало. Всем сразу не хватает.

  • Памяти мало. А она ещё и фрагментируется. Допустим, загрузили процесс в память, за ним загрузили следующий, потом первый выгрузили. Осталась дырка. Эту память можно использовать только если будет загружаться процесс, по размеру не превышающий первый.

  • Вообще, "размер процесса" понятие очень условное. Память выделяется из кучи, памяти нужно то мало, то много, дать процессу один кусок навсегда -- очень не гибко

  • Памяти мало. Часто разные процессы используют один и тот же код. Разделяемые библиотеки, или просто одна и та же программа выполняется. Хорошо бы что бы при этом в памяти была только одна копия кода.

Для всего этого придумали сегментную виртуальную память, но она не удобным образом решала не все проблемы. Поэтому ещё немного подумали и придумали страничную виртуальную память. Это было настолько давно, что даже старики уже помнят только последнюю. И когда говорят "виртуальная память" имеется ввиду именно она. Но я начну свой рассказ с начала.

Сегментная виртуальная память

Сегментная виртуальная память требует сегментной адресации.

Простите, но что это такое я описывать не буду. Длинно, нужно рисовать картинки, не очень важно, да и по ходу разберётесь.

Т.е. процесс использует свои сегменты и в чужие не лезет. Это не сложно, это проверяется на уровне сегментных регистров: при попытке использовать сегмент, который нельзя, ОС получает тревожный сигнал (ака исключение), а процесс получает по башке (например, segmentation fault). Этим отличается защищённый режим от реального.

Термины реальный и защищённый режим вообще-то относятся к x86. В данном случае я применяю их нестрого, отношу к "защищённому режиму" те возможности, которые необходимы для реализации многозадачной ОС и которых не было в реальном режиме x86.

Это решение первой проблемы, но это ещё не виртуальная память.

Тут важно отметить, что процесс адресует память относительно начала сегмента, а где это начало он, по хорошему, понятия не имеет. А если имеет, то это ошибка проектирования ОС: не должен. Это ещё одно отличие защищённого режима от реального. А виртуальная память начинается с того, что ОС может временно выгрузить какой-то сегмент процесса из памяти, а когда этот сегмент опять понадобится процессу -- снова загрузить, возможно -- в другое место физической памяти (это термин; да, вот такое странное представление о физике).

Ну, допустим, как-то так:
  • Есть редко работающий процесс. Например, он отзывается на какие-то внешние события, типа прихода данных из сети.

  • ОС частично выгружает его из памяти. Содержимое сегментов данных этого процесса сохраняются на диске в специальном файле, сами сегменты помечаются как выгруженные (в таблице сегментов), занимаемая ими память -- как свободная (ОС должна где-то помнить, что у неё занято, а что свободно).

  • И вот доходит дело до этого процесса. Он пытается обратиться к своему сегменту данных... Но тот помечен как выгруженный. ОС получает тревожный сигнал, загружает сегмент в память (возможно, выгрузив для этого что-то не нужное), помечает сегмент как нормальный, прописывает ему новый базовый адрес и просит процесс повторить попытку. Как в жизни.

Кто понимает, почему x86 не может так работать -- респект и уважуха :) Ну да, там всё будет немного сложнее, но это уже будет глубокий оффтопик.

Таким образом, выгружая и загружая, можно выполнять больше процессов, чем у нас памяти. Более того, разные процессы могут ссылаться на один и тот же сегмент кода, значит можно и сэкономить. Сложно с:
  • динамическим выделением памяти (в принципе решаемо, но тяжело)

  • фрагментацией физической памяти (хотя сегменты и можно перемещать, это довольно затратно)

Но главное -- это очень грубый инструмент, с низкой разрешающей способностью. Можно выгрузить/загрузить только целый сегмент, это много.

Страничная виртуальная память

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

Итак, процессу предоставляется виртуальное адресное пространство (ВАП), каждому своё. Оно большое. По нонешним прогрессивным временам адресуемая область от 0 до 264-1, недавно стандартом было от 0 до 232-1. Это много, особенно если учесть что процессов не один, а физической памяти, скажем, 256 Мб, т.е. даже на одного не хватает.

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

Дальше, ВАП разбито на небольшие блоки одинакового размера. К примеру, по 4096 байт. И на такие же блоки разбита физическая память. Блоки называются страницами.

Соответствие между используемыми островками ВАП и физической памятью происходит постранично. Т.е. ОС знает, что такой-то странице из ВАП такого-то процесса соответствует такая-то страница физической памяти. Есть какая-то таблица или что-то в этом роде. Неиспользуемым частям ВАП не соответствует ничего.

Это и есть дополнительный уровень косвенности.

Точно так же как и с сегментами, ОС может выгружать страницы, снова загружать, перемещать их в физической памяти, совмещать страницы разных процессов в одной физической. Только теперь это легче и эффективнее, т.к.:
  • все страницы одинакового размера

  • меньше дискретность

  • В пределах ВАП элементарно регулируется объём используемой памяти, с точностью до страницы можно помечать память как используемую или как неиспользуемую процессом.

Что ещё интересного нужно отметить в этом красивом решении:
  • Адресное пространство других процессов оказывается за пределами языка. Оно просто не адресуемо, нет таких адресов, которые ссылаются на другой процесс. Чтобы как-то читать/писать в память других процессов нужно специально думать.

  • При попытке обратиться к неиспользуемой памяти, процесс тоже получит от ОС по башке.

To be continue... Следующая серия про x86, а дальше начнётся что-нибудь более интересное

06:02 am - Yo! Каста.

Вот, гляньте.


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

Как-то я до сих пор пристрастно относился к рэпу. Почему-то казалось, что это обколотые негры, пропаганда наркотиков, насилия, бандитизма и разврата.

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

Всё-таки сначала клип посмотрите, а потом дальше, ок? :) )

22-го марта у них концерт в Питере, в Главclub-е. Но я на него не попаду.

Upd: Резюме после невнимательного прослушивания: всё немного хуже. Из последнего альбома выбросить 2/3, остальные выбросить почти полностью. В "остальных" музыки совсем почти нет, чисто начитка. Брр-фуу-буээ. Очень специфично, не переваривается вообще.

Feb. 18th, 2009

05:49 pm

Отличный ролик.


via [info]sanchos_f & [info]comte_de_varand

Feb. 4th, 2009

12:07 pm

Что-то я давно не писал про просветление. А ведь оно неизбежно, как коммунизм! А тут и повод.



Главная задача на этой Земле -- быть собой, продолжать быть собой, не прекращать быть собой ни на секунду. Это приоритет номер один. Всё остальное -- где-то ниже.

Что это значит, гм, практически? Это значит, что всё, что происходит снаружи -- это просто потоки информации. Кричит начальник "быстро ищи ключи", часы тикают, у него морда красная, сквознячок колышет занавески, яд по клыкам стекает, слюни во все стороны, в оконном стекле отражается вечность... Это всё воспринимаемые потоки информации. Это не команды. Команд не существует. Информация не вызывает никакой реакции, она просто падает куда-то внутрь тебя через глаза, уши, нос... Действие вызывается внутренним импульсом, который рождается сам, когда ему нужно.

Речь не идёт о том, что нужно обдумать! Хотя слово "информация" и провоцирует. Обдумывать иногда полезно, но далеко не всегда. Всегда нужно слушать импульс.

Быть собой, сохранить себя -- не пытаться реагировать до импульса, не блокировать импульс, не делать больше, чем требует импульс, но и не меньше. Это и будет просветление. Для тех кто ещё не -- хотя бы не противоречить.

В любом случае, если тебе кричат "быстро давай", это не значит, что нужно тут же "быстро давать". Это значит, что нужно принять к сведению, что вот этот человек кричит тебе "быстро давай". Это может значить как очень мало так и очень много. Может быть действительно нужно всё бросить и бежать изо всех сил, потому что о потраченных на сомнения и доделывания текущих дел секундах потом будешь жалеть всю жизнь. Ну, может такая ситуация случиться. Спасать там кого-нибудь надо или ещё что-нибудь в этом духе. Но обычно бывает наоборот, я как-то давно никого не спасал.

  • Бросаться "быстро давать" потому что "он сказал" -- терять себя. Потому что задача "выполнить его требование" поставлена на более приоритетное место по сравнению с "быть собой".

  • Жрать по привычке, когда не голоден -- терять себя. Вообще привычки -- от лукавого.

  • "Тратить все силы на ..." -- по разному, но скорее всего оно самое.

  • Быть вежливым -- ага. Подробнее -- см. ниже, про дао.

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

  • Придавать слишком большую важность некоторому событию -- опять оно. "Я не смогу жить если ..." -- сможешь. Ты только человек, не тебе решать что будет. Ты можешь приложить максимум усилий, если этого требует внутренний импульс, и принять результат. Победить, если повезёт. Или проиграть. Результат не главное. Главное следовать себе.

Я, когда научусь, -- напишу сюда. Если это не будет противоречить.

Раскроем тезисы на классических изречениях )

Да, в чём очевидная теоретическая трудность: описана односторонняя модель, не ясно, куда тут всунуть "работу мозга". Или её совсем нет? Или как там вообще у просветлённых? Нет ясности в этом вопросе. Впрочем, это типичная для меня закавыка.

Feb. 2nd, 2009

07:52 pm - Блог Медведева

А вы в курсе, что у Д.А.Медведева есть видео-блог? Вот тут: http://blog.kremlin.ru/ Я, когда узнал, слегка оху удивился очень. Там даже комментарии оставлять можно.

Так что по демократичности Обама пока сосёт. Не уверен, что это хорошо... Посмотрим.

Upd: В каком смысле "демократичность"

Upd2: Да, я только две последние посмотрел, ничего особо интересного для себя не нашёл. Это не удивительно, жанр немного не тот. Не позволяет ни "жечь", ни читать познавательные лекции. А что ещё бывает интересного? :) Но меня сам факт поразил.

Upd3: И тут Обама впереди. В прочем, и к лучшему.

Upd4: Почему не уверен, что хорошо

Jan. 28th, 2009

12:45 am - Хачу в Африку...

Пейзаж в Намибе

В смысле "теперь и в Африку тоже, с новой силой".

Весь альбом нереальный совершенно, рекомендую.

Navigate: (Previous 20 Entries)