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

Движок для сайта своими руками. Вариант первый: если у вас нету базы...

Каждый сайтостроитель в один прекрасный момент вдруг замечает, что он уже занимается не столько подготовкой новых метериалов для своего сайта, сколько банальными и рутинными вещами: там выковырял меню, заменил; там пересохранил, обновил; тут - copy, там - paste, а потом всё это save и upload. «Ну нет - думает вебмастер - так больше нельзя! Но что же делать?». А делать нужно движок для сайта...

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

Движком принято называть набор скриптов и программ, на основе которых держится, живёт и обновляется сайт. Движок может быть как простым PHP-скриптом и статьями, хранящимися в текстовых файлах определённого формата, так и сложным комплексом программных средств в связке с базами данных (MySQL, Oracle, etc.) и веб-службами, написанными на Java.

Лучшим (но при этом не самым сложным) был бы вариант с применением баз данных. Но чаще всего вебмастерам база данных недоступна, поскольку дают её (насколько мне известно) только на платных хостингах. Поэтому наш первый движок мы организуем при помощи PHP и набора файлов. При этом можно себя утешить тем, что на работоспособность нашего сайта не будут влиять дополнительные факторы риска, вносящиеся использованием баз данных (все, я полагаю, уже слышали о истории с дырой в Microsoft SQL Server 2000) (1).

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

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

Функции чтения файлов в PHP

...
$strings = file("myfolder/myfile.txt");
$first_string = $strings;
...

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

function loadTemplate($path)
/* функция загружает шаблон по указанному пути,
и возвращает его в виде строки, например,
для обработки функцией parceTemplate() */
{
$template = fopen($path, "r") or print("Не удалось загрузить файл шаблона [".$path."]");

if ($template)
return fread($template, filesize($path));
else
return false;

Fclose($template);
}

function parceTemplate($template, $params_value s)
/* функция синтаксически разбирает указанный шаблон,
заменяя названия параметров, служащих индексами
масива $params_value s на их значения */
{
while (list($param, $value ) = each($params_value s))
{
$template = str_replace("¤{".$param."}¤", $value , $template);
}

Return $template;
}

function readArticle($path)
/* функция читает указанный файл и возвращает
его содержимое в виде массива частей статьи,
разделенных конструкцией ¤{имя части}¤ */
{
$article = fopen($path, "r") or print("Не удалось загрузить файл статьи [".$path."]");

if ($article)
{
$astring = fread($article, filesize($path));
$result = split("[¤]{1}[{]{1}([ a-z_-]*)[}]{1}[¤]{1}", $astring);

$result = eregi_replace("[ ,]*([ - ]{1})[, ]*", " - ", $result);
$result = basename($path);
return $result;
}
else
{
return false;
}
}

Где-то здесь надо было бы прикрутить гранитную плиту с надписью «Регулярным выражениям от благодарных фанатов», поскольку без этой удобной штуки было бы очень сложно создать вышеприведённые функции. Рассмотрим немного подробнее, как эти выражения устроены.

Писать много раз об одном и том же нет смысла, поэтому я процитирую одну из статей о регулярных выражениях (Источник: http://sitemaker.ru/):

Регулярные выражения

Немного истории

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

С тех пор, регулярные выражения прошли через множество итераций, и текущий стандарт сохраняется ISO (Международной организацией по стандартизации) и определен Open Group, совместным усилием различных технических некоммерческих организаций (2).

Соответствие символов

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

Соответствие символов в регулярных выражениях
Оператор Описание Пример Результат
. Соответствует любому одному символу .ord Будет соответствовать «ford», «lord», «2ord», и т.д. в файле sample.txt.
Соответствует любому одному символу, заключенному в квадратные скобки ord Будет соответствовать только «cord», «nord» и «gord»
[^] Соответствует любому одному символу, не заключенному в квадратные скобки [^cn]ord Будет соответствовать «lord», «2ord» и т.д., но не «cord» или «nord»
Соответствует любой букве ord Будет соответствовать «aord», «bord», «Aord», «Bord» и т.д.
[^0-9] Соответствует любой нецифре в промежутке 0-9 [^0-9]ord Будет соответствовать «Aord», «aord» и т.д., но не «2ord» и т.д.

Операторы повторения

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

Операторы повторения в регулярных выражениях
Оператор Описание Пример Результат
? Соответствует определенному символу единожды, если тот существует ?erd Будет соответствовать «berd», «herd», и т.д. и «erd»
* Соответствует определенному символу многократно, если тот существует n.*rd Будет соответствовать «nerd», «nrd», «neard» и т.д.
+ Соответствует определенному символу один или более раз [n]+erd Будет соответствовать «nerd», «nnerd» и т.д., но не «erd»
{n} Соответствует определенному символу точно n раз {2}erd Будет соответствовать «cherd», «blerd» и т.д., но не «nerd», «erd», «buzzerd» и т.д.
{n,} Соответствует определенному символу минимум n раз .{2,}erd Будет соответствовать «cherd» и «buzzerd», но не «nerd»
{n,N} Соответствует определенному символу минимум n раз, но не более чем N раз n[e]{1,2}rd Будет соответствовать «nerd» и «neerd»

Якоря описывают где соответствовать шаблону. Они могут быть удобными, когда Вы ищете общие строковые комбинации.

Якоря регулярных выражений
Оператор Описание Пример Результат
^ Соответствует началу строки ereg_replace("^/", "blah") Вставляет «blah» в начало строки
$ Соответствует концу строки ereg_replace("$/", "blah") Вставляет «blah» в конец строки
< Соответствует началу слова ereg_replace("<", "blah") Вставляет «blah» в начало слова
Соответствует «blahfield» и т.д.
> Соответствует концу слова ereg_replace(">", "blah") Вставляет «blah» в конец слова
>blah Соответствует «soupblah» и т.д.
b Соответствует началу или концу слова bblah Соответствует «blahcake» и «countblah»
B Соответствует середине слова Bblah Соответствует «sublahper» и т.д.

(конец цитаты, источник описания: http://sitemaker.ru/)

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

Символы ¤{ и }¤ используется для отделения частей друг от друга. Имя части же никакого значения не имеет и может быть любым набором символов английского алфавита, пробела, подчеркивания или дефиса.

Для вывода списка статей используется цикл, перебирающий все файлы из нужного каталога. Если он натыкается на файл *.art, то сразу на радостях добавляет его в масив. В зависимости от указанного параметра, он может либо добавить имя этого файла, либо название содержащейся в нём статьи, либо сразу готовую ссылку на эту статью.

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

Движок для сайта своими руками. Часть вторая.

В прошлый раз мы рассмотрели способ организации «базы данных» без собственно самой базы данных. Сегодня продолжим тему создания «без-MySQL’ного» сайтового движка разговором об каталогах, файлах и include’ах. Также будет немного теории и практики о собственно работе такого двигателя.

Основные принципы организации работы

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

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

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

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

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

Таким образом, схема создания новых материалов сайта выглядит следующим образом:

Рис. 1. Текст → движок → страница сайта

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

Расположение файлов

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

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

Рис. 2. Структура каталогов

Итак, у нас имеются каталоги, каждый из которых является разделом сайта (естественно, кроме служебных каталогов, таких, как “images”).

Это значит, что в каждом таком каталоге должен лежать так называемый «индексный файл» - страница, которая загружается по умолчанию при таком обращении к разделу: http://site.com/Razdel. Имя этого файла (или возможные имена) вам нужно узнать у вашего хостера. Чаще всего это такие имена, как “index.html”, “index.php” и т. п. - расширение зависит от используемого серверного языка.

Значит, с именами файлов разобрались. Но что же нам положить в эти файлы? Вот теперь-то мы и переходим собственно к основной части сегодняшнего разговора.

В самом начале файла стоит вставить код включения ядра движка. Подобное обращение на языке PHP выглядит следующим образом:

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

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

function getInclude($path)
{
return str_replace("n", "", (implode(file($path), "")));
}

Новостная система

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

Суть её работы сводится к следуещему. Имеется текстовый файл с новостями, разделенными символом перевода строки (словом, каждая новость - в новой строке). Каждая строка разделена символом вертикальной черты («|») на два поля: дату и, собственно, саму новость.

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

Вот моя реализация функции новостной системы:

Что ж, на сегодня пока что всё. Продолжение следует...

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

Типы и принципы работы

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

Фото – Магнитный двигатель дудышева

Над разработкой «вечного двигателя» трудилось огромное количество ученых во все времена, наиболее большой вклад в развитие теории о магнитном двигателе сделали Никола Тесла, Николай Лазарев, Василий Шкондин, также хорошо известны варианты Лоренца, Говарда Джонсона, Минато и Перендева.


Фото – Магнитный двигатель Лоренца

У каждого из них своя технология, но все они основаны на магнитном поле, которое образовывается вокруг источника. Стоит отметить, что «вечных» двигателей не существует в принципе, т.к. магниты теряют свои способности приблизительно через 300-400 лет.

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

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

Фото – Магнитный двигатель Тесла

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

Фото – Кольцар Лазарева

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

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

Линейный двигатель Шкондина произвел своего рода революцию в прогрессе. Это устройство очень простой конструкции, но в тоже время невероятно мощное и производительное. Его двигатель называется колесо в колесе, и в основном его используют в современной транспортной отрасли. Согласно отзывам, мотоцикл с мотором Шкондина может проехать 100 километров на паре литров бензина. Магнитная система работает на полное отталкивание. В системе колеса в колесе, есть парные катушки, внутри которых последовательно соединены еще одни катушки, они образовывают двойную пару, у которой разные магнитные поля, за счет чего они двигаются в разные стороны и контрольный клапан. Автономный мотор можно устанавливать на автомобиль, никого не удивит бестопливный мотоцикл на магнитном двигателе, устройства с такой катушкой часто используются для велосипеда или инвалидной коляски. Купить готовый аппарат можно в интернете за 15000 рублей (производство Китай), особенно популярен пускатель V-Gate.


Фото – Двигатель Шкондина

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


Фото – Двигатель Перендева

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

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

Как собрать двигатель самостоятельно

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


Фото – Магнитный двигатель на подвеске

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

Приводы установлены специальным образом, при помощи которого валы вращаются аналогично друг другу. Естественно, если воздействовать на систему сторонним предметом, к примеру, пальцем, то она остановится. Этот вечный магнитный двигатель изобрел Бауман, но ему не удалось получить патент, т.к. на тот момент устройство отнесли к разряду непатентуемых ВД.

Для разработки современного варианта такого двигателя многое сделали Черняев и Емельянчиков.


Фото – Принцип работы магнита

Какие достоинства и недостатки имеют реально работающие магнитные двигатели

Достоинства:

  1. Полная автономия, экономия топлива, возможность из подручных средств организовать двигатель в любом нужном месте;
  2. Мощный прибор на неодимовых магнитах способен обеспечивать энергией жилое помещение до 10 вКт и выше;
  3. Гравитационный двигатель способен работать до полного износа и даже на последней стали работы выдавать максимальное количество энергии.

Недостатки:

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

Работа магнитного двигателя – это чистая правда и она реально, главное правильно рассчитать мощность магнитов.

Движок для сайта своими руками. Вариант первый: если у вас нету базы...

Каждый сайтостроитель в один прекрасный момент вдруг замечает, что он уже занимается не столько подготовкой новых метериалов для своего сайта, сколько банальными и рутинными вещами: там выковырял меню, заменил; там пересохранил, обновил; тут - copy, там - paste, а потом всё это save и upload. «Ну нет - думает вебмастер - так больше нельзя! Но что же делать?». А делать нужно движок для сайта...

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

Движком принято называть набор скриптов и программ, на основе которых держится, живёт и обновляется сайт. Движок может быть как простым PHP-скриптом и статьями, хранящимися в текстовых файлах определённого формата, так и сложным комплексом программных средств в связке с базами данных (MySQL, Oracle, etc.) и веб-службами, написанными на Java.

Лучшим (но при этом не самым сложным) был бы вариант с применением баз данных. Но чаще всего вебмастерам база данных недоступна, поскольку дают её (насколько мне известно) только на платных хостингах. Поэтому наш первый движок мы организуем при помощи PHP и набора файлов. При этом можно себя утешить тем, что на работоспособность нашего сайта не будут влиять дополнительные факторы риска, вносящиеся использованием баз данных (все, я полагаю, уже слышали о истории с дырой в Microsoft SQL Server 2000) (1).

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

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

Функции чтения файлов в PHP.

...
$strings = file("myfolder/myfile.txt");
$first_string = $strings;
...

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

function loadTemplate($path)
/* функция загружает шаблон по указанному пути,
и возвращает его в виде строки, например,
для обработки функцией parceTemplate() */
{
$template = fopen($path, "r") or print("Не удалось загрузить файл шаблона [".$path."]");

If ($template)
return fread($template, filesize($path));
else
return false;

Fclose($template);
}

Function parceTemplate($template, $params_values)
/* функция синтаксически разбирает указанный шаблон,
заменяя названия параметров, служащих индексами
масива $params_values на их значения */
{
while (list($param, $value) = each($params_values))
{
$template = str_replace("¤{".$param."}¤", $value, $template);
}

Return $template;
}

Function readArticle($path)
/* функция читает указанный файл и возвращает
его содержимое в виде массива частей статьи,
разделенных конструкцией ¤{имя части}¤ */
{
$article = fopen($path, "r") or print("Не удалось загрузить файл статьи [".$path."]");

If ($article)
{
$astring = fread($article, filesize($path));
$result = split("[¤]{1}[{]{1}([ a-z_-]*)[}]{1}[¤]{1}", $astring);

$result = eregi_replace("[ ,]*([ - ]{1})[, ]*", " - ", $result);
$result = basename($path);
return $result;
}
else
{
return false;
}
}

Где-то здесь надо было бы прикрутить гранитную плиту с надписью «Регулярным выражениям от благодарных фанатов», поскольку без этой удобной штуки было бы очень сложно создать вышеприведённые функции. Рассмотрим немного подробнее, как эти выражения устроены.

Писать много раз об одном и том же нет смысла, поэтому я процитирую одну из статей о регулярных выражениях (Источник: http://sitemaker.ru/):

Регулярные выражения.

Немного истории.

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

С тех пор, регулярные выражения прошли через множество итераций, и текущий стандарт сохраняется ISO (Международной организацией по стандартизации) и определен Open Group, совместным усилием различных технических некоммерческих организаций (2).

Соответствие символов.

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

Соответствие символов в регулярных выражениях
Оператор Описание Пример Результат
. Соответствует любому одному символу .ord Будет соответствовать «ford», «lord», «2ord», и т.д. в файле sample.txt.
Соответствует любому одному символу, заключенному в квадратные скобки ord Будет соответствовать только «cord», «nord» и «gord»
[^] Соответствует любому одному символу, не заключенному в квадратные скобки [^cn]ord Будет соответствовать «lord», «2ord» и т.д., но не «cord» или «nord»
Соответствует любой букве ord Будет соответствовать «aord», «bord», «Aord», «Bord» и т.д.
[^0-9] Соответствует любой нецифре в промежутке 0-9 [^0-9]ord Будет соответствовать «Aord», «aord» и т.д., но не «2ord» и т.д.

Операторы повторения.

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

Операторы повторения в регулярных выражениях
Оператор Описание Пример Результат
? Соответствует определенному символу единожды, если тот существует ?erd Будет соответствовать «berd», «herd», и т.д. и «erd»
* Соответствует определенному символу многократно, если тот существует n.*rd Будет соответствовать «nerd», «nrd», «neard» и т.д.
+ Соответствует определенному символу один или более раз [n]+erd Будет соответствовать «nerd», «nnerd» и т.д., но не «erd»
{n} Соответствует определенному символу точно n раз {2}erd Будет соответствовать «cherd», «blerd» и т.д., но не «nerd», «erd», «buzzerd» и т.д.
{n,} Соответствует определенному символу минимум n раз .{2,}erd Будет соответствовать «cherd» и «buzzerd», но не «nerd»
{n,N} Соответствует определенному символу минимум n раз, но не более чем N раз n[e]{1,2}rd Будет соответствовать «nerd» и «neerd»

Якоря описывают где соответствовать шаблону. Они могут быть удобными, когда Вы ищете общие строковые комбинации.

Якоря регулярных выражений
Оператор Описание Пример Результат
^ Соответствует началу строки ereg_replace("^/", "blah") Вставляет «blah» в начало строки
$ Соответствует концу строки ereg_replace("$/", "blah") Вставляет «blah» в конец строки
\< Соответствует началу слова ereg_replace("\<", "blah") Вставляет «blah» в начало слова
\ Соответствует «blahfield» и т.д.
\> Соответствует концу слова ereg_replace("\>", "blah") Вставляет «blah» в конец слова
\>blah Соответствует «soupblah» и т.д.
\b Соответствует началу или концу слова \bblah Соответствует «blahcake» и «countblah»
\B Соответствует середине слова \Bblah Соответствует «sublahper» и т.д.

(конец цитаты, источник описания: http://sitemaker.ru/)

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

Символы ¤{ и }¤ используется для отделения частей друг от друга. Имя части же никакого значения не имеет и может быть любым набором символов английского алфавита, пробела, подчеркивания или дефиса.

Для вывода списка статей используется цикл, перебирающий все файлы из нужного каталога. Если он натыкается на файл *.art, то сразу на радостях добавляет его в масив. В зависимости от указанного параметра, он может либо добавить имя этого файла, либо название содержащейся в нём статьи, либо сразу готовую ссылку на эту статью.

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

В прошлый раз мы рассмотрели способ организации «базы данных» без собственно самой базы данных. Сегодня продолжим тему создания «без-mysql’ного» сайтового движка разговором об каталогах, файлах и include’ах. Также будет немного теории и практики о собственно работе такого двигателя.

Основные принципы организации работы

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

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

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

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

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

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

Расположение файлов

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

Итак, у нас имеются каталоги, каждый из которых является разделом сайта (естественно, кроме служебных каталогов, таких, как “images”).

Это значит, что в каждом таком каталоге должен лежать так называемый «индексный файл» - страница, которая загружается по умолчанию при таком обращении к разделу: http://site.com/razdel. Имя этого файла (или возможные имена) вам нужно узнать у вашего хостера. Чаще всего это такие имена, как “index.html”, “index.php” и т. п. - расширение зависит от используемого серверного языка.

Значит, с именами файлов разобрались. Но что же нам положить в эти файлы? Вот теперь-то мы и переходим собственно к основной части сегодняшнего разговора.

В самом начале файла стоит вставить код включения ядра движка. Подобное обращение на языке php выглядит следующим образом:

// инициализация ядра include("bin/core.php");

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

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

function getinclude($path) { return str_replace("n", "", (implode(file($path), ""))); }

Новостная система

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

Суть её работы сводится к следуещему. Имеется текстовый файл с новостями, разделенными символом перевода строки (словом, каждая новость - в новой строке). Каждая строка разделена символом вертикальной черты («|») на два поля: дату и, собственно, саму новость.

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

Вот моя реализация функции новостной системы:

function getnews($path="", $lim=3) { $news = file($path."news.txt"); $result = ""; if ($lim == 0) { $lim = count($news); } for ($i=0; $i<$lim && $i

Что ж, на сегодня пока что всё. Продолжение следует…

статью о том, как сделать реактивный двигатель своими руками .

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

Шаг 1: Прорабатываем базовую конструкцию двигателя

Начнём процесс сборки двигателя с 3Д моделирования. Изготовление деталей с помощью ЧПУ станка значительно облегчает процесс сборки и уменьшает количество часов, которые будут потрачены на подгонку деталей. Главное преимущество при использовании 3D процессов – это способность видеть, как детали будут взаимодействовать вместе до того момента, как они будут изготовлены.

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

Шаг 2:

Будьте внимательны при выборе турбокомпрессора! Вам нужен большой «турбо» с одной (не разделенной) турбиной. Чем больше турбокомпрессор, тем больше будет тяга готового двигателя. Мне нравятся турбины с крупных дизельных двигателей.

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

Турбокомпрессор на картинке – Cummins ST-50 с большого 18 колесного грузовика.

Шаг 3: Вычисляем размер камеры сгорания

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

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

Камера сгорания изготовлена из большого куска стальной трубы с крышками на обеих концах. Внутри КС установлен рассеиватель. Рассеиватель – эта трубка, что сделана из трубы меньшего диаметра, которая проходит через всю КС и имеет множество просверленных отверстий. Отверстия позволяют сжатому воздуху заходить в рабочий объём и смешиваться с топливом. После того, как произошло возгорание, рассеиватель снижает температуру воздушного потока, который входит в контакт с лопастями турбины.

Для расчета размеров рассеивателя просто удвойте диаметр индуктора турбокомпрессора. Умножьте диаметр индуктора на 6, и это даст вам длину рассеивателя. В то время как колесо компрессора может быть 12 или 15 см в диаметре, индуктор будет значительно меньше. Индуктор из турбин (ST-50 и ВТ-50 моделей) составляет 7,6 см в диаметре, так что размеры рассеивателя будут: 15 см в диаметре и 45 см в длину. Мне хотелось изготовить КС немного меньшего размера, поэтому решил использовать рассеиватель диаметром 12 см с длиной 25 см. Я выбрал такой диаметр, прежде всего потому, что размеры трубки повторяют размеры выхлопной трубы дизельного грузовика.

Поскольку рассеиватель будет располагаться внутри КС, рекомендую за отправную точку взять минимальное свободное пространство в 2,5 см вокруг рассеивателя. В моём случае я выбрал 20 см диаметр КС, потому что она вписывается в заранее заложенные параметры. Внутренний зазор будет составлять 3,8 см.

Теперь у вас есть примерные размеры, которые уже можно использовать при изготовлении реактивного двигателя. Вместе с крышками на концах и топливными форсунками – эти части в совокупности будут образовывать камеру сгорания.

Шаг 4: Подготовка торцевых колец КС

Закрепим торцевые кольца с помощью болтов. С помощью данного кольца рассеиватель будет удерживаться в центра камеры.

Наружный диаметр колец 20 см, а внутренние диаметры 12 см и 0,08 см соответственно. Дополнительное пространство (0,08 см) облегчит установку рассеивателя, а также будет служить в качестве буфера для ограничения расширений рассеивателя (во время его нагрева).

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

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

Шаг 5: Привариваем торцевые кольца

Для начала нужно укоротить корпус до нужной длины и выровнять всё должным образом.

Начнём с того, что обмотаем большой лист ватмана вокруг стальной трубы так, чтобы концы сошлись друг с другом и бумага была сильно натянута. Из него сформируем цилиндр. Наденьте ватман на один конец трубы так, чтобы края трубы и цилиндра из ватмана заходили заподлицо. Убедитесь, что там будет достаточно места (чтобы сделать отметку вокруг трубы), так чтобы вы могли сточить металл заподлицо с отметкой. Это поможет выровнять один конец трубы.

Далее следует измерить точные размеры камеры сгорания и рассеивателя. С колец, которые будут приварены, обязательно вычтите 12 мм. Так как КС будет в длину 25 см, учитывать стоит 24,13 см. Поставьте отметку на трубе, и воспользуйтесь ватманом, чтобы изготовить хороший шаблон вокруг трубы, как делали раньше.

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

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

Когда оба кольца приварены, обработайте швы. Это необязательно, но это сделает КС более эстетичной.

Шаг 6: Изготавливаем заглушки

Для завершения работ по КС нам понадобится 2 торцевые крышки. Одна крышка будет располагаться на стороне топливного инжектора, а другая будет направлять горячие газы в турбину.

Изготовим 2 пластины того же диаметра что и КС (в моём случае 20,32 см). Просверлите 12 отверстий по периметру для болтов и выровняйте их с отверстиями на конечных кольцах.

На крышке инжектора нужно сделать только 2 отверстия. Одно будет для топливного инжектора, а другое для свечи зажигания. В проекте используется 5 форсунок (одна в центре и 4 вокруг неё). Единственное требование – инжекторы должны располагаться таким образом, чтобы после окончательной сборки они оказались внутри рассеивателя. Для нашей конструкции – это означает, что они должны помещаться в центре 12 см круга в середине торцевой крышки. Просверлим 12 мм отверстия для монтажа форсунок. Сместимся чуть-чуть от центра, чтобы добавить отверстие для свечи зажигания. Отверстие должно быть просверлено для 14 мм х 1,25 мм нити, которая будет соответствовать свече зажигания. Конструкция на картинке будет иметь 2 свечи (одна про запас, если первая выйдет из строя).

Из крышки инжектора торчат трубы. Они изготовлены из труб диаметром 12 мм (внешний) и 9,5 мм (внутренний диаметр). Их обрезают до длины 31 мм, после чего на краях делают скосы. На обеих концах будет 3 мм резьба. Позже они будут свариваться вместе с 12 мм трубками, выступающими с каждой стороны пластины. Подача топлива будет осуществляться с одной стороны а инжекторы будут вкручены с другой.

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

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

Шаг 7: Собираем всё вместе

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

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

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

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

Шаг 8: Изготавливаем рассеиватель

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

Отверстия имеют специальные названия и функции (слева направо). Небольшие отверстия в левой части являются основными, средние отверстия являются вторичными, и самые большие на правой стороне являются третичными.

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

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

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

Шаг 9:

Теперь у вас есть готовый рассеиватель, откройте корпус КС и вставьте его между кольцами, пока он плотно не войдет. Установите крышку инжектора и затяните болты.

Для топливной системы необходимо использовать насос, способный выдавать поток высокого давления (по меньшей мере 75 л/час). Для подачи масла нужно использовать насос способный обеспечить давление в 300 тис. Па с потоком 10 л/час. К счастью, один и тот же тип насоса можно использовать для обеих целей. Мое предложение Shurflo № 8000-643-236.

Представляю схему для топливной системы и системы подачи масла для турбины.

Для надежной работы системы рекомендую использовать систему регулируемого давления с установкой обходного клапана. Благодаря ему поток, который прокачивают насосы всегда будет полным, а любая неиспользованная жидкость будет возвращена в бак. Эта система поможет избежать обратного давления на насос (увеличит срок службы узлов и агрегатов). Система будет работать одинаково хорошо для топливных систем и системы подачи масла. Для масляной системы вам нужно будет установить фильтр и масляный радиатор (оба из них будут установлены в линию после насоса, но перед перепускным клапаном).

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

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

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

Что касается системы зажигания, то подобной информации достаточно в интернете. Как говорится на вкус и цвет товарища нет.

Шаг 10:

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

Спасибо за внимание



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: