ria pc game
fle game engine - движок для создания игр
fle game engine - движок для создания игр


Balls and holes PC game / Balls and Holes PC игра
Вакансии
Игродельня
Сегодня
18 февраля 2019 5:24
Вход Регистрация Забыли пароль ?

megainformatic - Создание музыки в Impulse Tracker 2.14 Первая мелодия
          Урок 7: Первая мелодия
подробнее...

Теги создание сайтов, создание игр, дизайн, игры, информатика, уроки photshop, php, c++, музыка, delphi, cms, робосайт
Статьи сайта
megainformatic - Модуль галерей для любой cms

megainformatic - Портфолио выполненных проектов сайтов и приложений

megainformatic - Мои Музыкальные Миры - страница 2

megainformatic - megainformatic cms rs

megainformatic - модуль Падающий снег

megainformatic - проект Open Shop

megainformatic - Рисуем красивую девушку всего за 6 шагов

megainformatic - Галерея красивых рисованных девушек

megainformatic - НОВОГОДНЕЕ ОБРАЩЕНИЕ СОЗДАТЕЛЯ webinformatic К ЖИТЕЛЯМ ПЛАНЕТЫ интернет

megainformatic - Отзывы оставленные пользователями как впечатление о проделанной работе или что-либо понравившееся на сайте

megainformatic - Уроки css - атрибут position

megainformatic - Ива Ден энд КуХа - КОДЕКС ФРИЛАНСЕРА - СОДЕРЖАНИЕ

megainformatic - Ива Ден энд КуХа - КОДЕКС ФРИЛАНСЕРА - Глава 1 - Обычный день

megainformatic - Ива Ден энд КуХа - КОДЕКС ФРИЛАНСЕРА - Глава 2 - Начало (begin)

Новогодняя дискотека 2013 на megainformatic точка ru

megainformatic - Программируем на C++ с использованием MFC

megainformatic - Программируем на C++ с использованием MFC - Создание MFC приложения

megainformatic - Программируем на C++ с использованием MFC - Создание MFC приложения - hello, world !

megainformatic - Как создать игру ? - Пишем игровой движок с нуля

megainformatic - Как создать игру ? - Пишем игровой движок с нуля - Вступление

megainformatic - Как создать игру ? - Пишем игровой движок с нуля - Общая структура будущего игрового движка

Разное

megainformatic - Как создать игру ? - Пишем игровой движок с нуля - DXUTMainLoop - цикл работы DirectX-приложения

megainformatic - Варианты макетов Психолог 911

megainformatic - Шаблоны для сайтов - что это и какие они бывают ?

megainformatic - Ива Ден энд КуХа - КОДЕКС ФРИЛАНСЕРА - Глава 3 - Кто он ? (who is ?)

megainformatic - Мои Музыкальные Миры - готовая музыка mp3 - новинки 2013 года

megainformatic - Теория и практика хакерских атак - самозащита от нападения

megainformatic - Теория и практика хакерских атак - самозащита от нападения - Способы подмены реального IP

megainformatic - Fruity Loops Studio 9 - Как синтезировать свои сэмплы - изучаем возможности плагина Sytrus

megainformatic - Видоизменяем тему для Wordpress под свои нужды

megainformatic - Flash приложения и игры - Шаг 3 - управляемый шарик

megainformatic - Учимся создавать флеш-игры, что нужно знать для того, чтобы заняться созданием flash приложений и игр ?

megainformatic - Шаг 4 в освоении Flash-технологий - как анимировать персонажа и управлять им

megainformatic - Форма для смены шаблонов сайта. Модуль template selector

megainformatic - megainformatic cms express files + module slider

megainformatic - Создание сайта бесплатно или под заказ

megainformatic - Как создать flash баннер

megainformatic - Разработка flash-приложения для сайта: онлайн примерочная

megainformatic - Мои впечатления о книге - Владислав Крапивин - Журавленок и Молнии

megainformatic - Модуль отзывов/комментариев для вашего сайта

megainformatic - Модуль отзывов/комментариев для вашего сайта

megainformatic - Модуль отзывов/комментариев для вашего сайта

megainformatic - Модуль короткие ссылки short link

megainformatic - Работа с сокетами fsocket из php

megainformatic - Как создать игру Создание игровых панелей и индикаторов

megainformatic - Приключения Кости Коробкина - Как я провел лето - интерактивный комикс

megainformatic - Приключения Кости Коробкина - Как я провел лето - интерактивный комикс

megainformatic - Приключения Кости Коробкина - С новым годом - интерактивный комикс

megainformatic - Система управления сайтом на php - megainformatic cms admin files

megainformatic - обзор антивирусных средств защиты

megainformatic - как работает антивирус ?

megainformatic - Создание сайта для бизнеса

megainformatic - Новый взгляд на очевидные вещи

megainformatic - Разработка программ на c++

megainformatic - Немного о музыке

подробнее

Ива Ден энд КуХа - КОДЕКС ФРИЛАНСЕРА - Глава 2 - Начало (begin)

По просьбам наших читателей начинаем публикацию новой серии - Иван Денисов и крутые хакеры. Сегодня читайте роман - Ива Ден энд КуХа - КОДЕКС ФРИЛАНСЕРА.

[содержание]  [далее

Я оставил нашу черную сверкающую машину возле дома на Моховой, который указала мне Мария Малакян.

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

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

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

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

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

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

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

Мария вошла вместе с горничной, которую звали Алиса Градова.

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

- Мне сказали, что вы слышали телефонный разговор Кочара Малакяна в понедельник вечером, - обратился я к ней.

Она кивнула головой. Я повернулся к Марии и спросил:
- Не могли бы вы выйти ? Было бы лучше, если бы мы с Алисой побеседовали вдвоем.

По правде говоря, я начал придерживаться мнения Уварова, который полагал, что Кочар Малакян попросту сбежал, и теперь не удастся ровным счётом ничего выяснить.

Я усадил Алису на стул, сам сел напротив неё и достал диктофон.

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

- Да, конечно, она очень славная.
- А Кочар Малакян ?
- О да. Его любят все. За исключением тех моментов, когда он бывает пьяным. В это время девушкам следует держаться от него подальше.

- Как вам удалось услышать телефонный разговор в понедельник ? Вы ожидали кого-то ?

- Нет, я никого не ждала.
- Каким образом Вы оказались там где был Кочар ?

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

- Можете ли вы вспомнить и повторить всё, о чем говорил Малакян ?

- Да, конечно. Как правило, мы не подслушиваем чужие телефонные разговоры, но на этот раз разговор велся очень громко и со мной его слышала комендант Раиса Сергеевна Филонова.

- Расскажите поподробнее об этом разговоре.

- Сперва он сказал: "Привет!", затем: "Да, это Кочар Малакян, что вам угодно ? ...это уже мое дело... я расскажу вам при личной встрече... почему не здесь, в моей комнате ?.. я боюсь! О нет, я не из тех, кого можно запугать!"

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

Она остановилась.

- А кто это был, человек, с которым он говорил ?

Мне показалось, что она сейчас скажет: "Откуда я могла знать ?", - как вдруг услышал:

- Это был тот же самый человек, с которым он уже говорил раньше.

- Как давно это было ?

- Это произошло в ноябре. Насколько я могу помнить, один раз тот мужчина звонил даже дважды. Раиса Сергеевна говорила, что до этого вторника он звонил в общей сложности 6 или 7 раз.

- Вы знаете кто именно звонил ?

- Нет Андрей Дмитриевич, об этом достаточно сложно судить.

- Ок. Слышал ли кто-нибудь из вас его имя ?

- Нет Андрей Дмитриевич, мы не знаем, а по голосу достаточно трудно определить. Однако Раиса Сергеевна говорила, что он называл себя старым знакомым Кочара.

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

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

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

- Побудьте здесь еще минуточку, Алиса, пока я спущусь вниз и побеседую с Раисой Сергеевной.

Раиса Вилонова подтвердила все показания Алисы, более того, она позволила взять Алису с собой в город, правда это получилось не сразу.

- Раиса Сергеевна, Вы позволите мне забрать у вас Алису на некоторое время ?

- К сожалению, не могу, она мне будет еще нужна.

Однако после того как я дал ей сотню, она согласилась отпустить девушку.

- А когда Вы привезете её домой ? - спросила она и добавила, что разрешает ей отлучиться только до десяти часов вечера.

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

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

По дороге я успел сказать Алисе, что если она сообщит Ивану Степановичу Денисову что-нибудь интересное, то получит от меня сотню.

Я спланировал время так, чтобы подъехать к нашему особняку ровно к шести. Так и случилось.

Алиса не вернулась в этот вечер домой к десяти часам.

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

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

- Эти сто рублей мы отнесем на твой счёт Энди, - вымолвил Денисов.

- Нет, Иван Степанович. Он уже занесен в книгу текущих расходов.

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

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

...



- Ну всё Энди, побаловались и хватит !

- А что такое Ден ?

- Я не просил тебя заниматься рерайтом Стаута.

- Хм, да, но у меня нет никаких идей.

- А зачем тебе что-то выдумывать ? По-моему с нами уже достаточно приключалось, ты можешь спокойно выбрать одну из историй и описать её здесь.

- Ок, Ден, я понял тебя. Ты хочешь жесткое реалити ?

- А почему нет ?

- Ну что ж, тогда начнём ...

...



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

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

Куда податься "бедному крестьянину" ? Меня постоянно одолевал этот вопрос. Я понимал, что надо действовать решительно и начинать какое-то своё дело, но сами представляете, что значит не имея средств и никакой поддержки начинать своё дело с нуля.

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

Я активно начал искать новое место. Но шансов на удачу было ноль целых и сколько-то там десятых.

И снова помог случай. Это был Ден.

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

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

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

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

- Ок, Ден, что-нибудь еще ?

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

- Нет проблем, поехали !

Я вышел на улицу. Был первый день старого нового года. Огляделся по сторонам. Куда идти ?

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

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

Итак, мне нужно выйти на этого человека и собрать о нём информацию. Кто то он, чем он дышит, каковы его планы и даже что будет с ним в будущем.

Эту информацию мы сможем использовать, чтобы выполнить поставленную нам задачу.

И я приступил к делу.

[далее]  [содержание]

подробнее

Использование регулярных выражений в php

[к содержанию]

Здравствуйте ! Сегодня мы займёмся изучением regexp - регулярных выражений в языке php. Вашему вниманию предлагается статья Артемьева Сергея, которую я нашел на сайте -

по материалам статьи: http://on-line-teaching.com/php/regexp.htm

автор: Артемьев С. И.

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

Далее по тексту -

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


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


Я думаю, вы неоднократно сталкивались с ситуациями, когда у вас есть текст (например, в Microsoft Word) и вам надо найти в нём что-то важное. Если вы знаете, что именно ищете - всё просто: вызвали диалог поиска, ввели искомое слово, нажали кнопку и вуаля - текст найден.


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

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

Регулярное выражение - это текстовая строка, составленная по определённым законам и правилам. Строка состоит из символов и групп символов, метасимволов, квантификаторов и модификаторов.

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

// читаемые символы
a
Е
// нечитаемые символы и коды
\x41 - то же что буква 'A'
\x09 - символ табуляции

Группа символов - это несколько символов, записанные последовательно:

абвг
ACZms

Сразу обращаю ваше внимание - "пробел" в регулярных выражения тоже рассматривается как значимый символ, поэтому при написании выражений будьте внимательны. Например, эти группы символов являются РАЗНЫМИ выражениями:

АБВГДЕ
АБВ ГДЕ

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

Метасимволы для задания специальных символов
() Скобки. Определяют вложенные выражения.
| Метасимвол выбора
^ Метасимвол начала строки
$ Метасимвол конца строки
\n Символ перевода строки (шестнадцатеричный код 0x0A)
\r Символ возврата каретки (шестнадцатеричный код 0x0D)
\t Символ табуляции (шестнадцатеричный код 0x09)
\xhh Вставка символа с шестнадцатиричным кодом 0xhh, например \x42 вставит латинскую букву 'B'
Метасимволы для задания групп символов
. Точка. Любой символ.
\d Цифра (0-9)
\D Не цифра (любой символ кроме символов 0-9)
\s Пустой символ (обычно пробел и символ табуляции)
\S Непустой символ (все, кроме символов, определяемых метасимволом \s)
\w "Словарный" символ (символ, который используется в словах. Обычно все буквы, все цифры и знак подчеркивания ('_'))
\W Все, кроме символов, определяемых метасимволом \w

Метасимволы из второй половины таблицы очень легко запомнить. "d" - digit (цифра), "s" - symbol (символ), "w" - word (слово). Если буква большая - значит надо добавить "НЕ" в описанию группы.

Возьмём для примера текст "На красной майке цифры 1812, а на зелёной майке - 2009". Рассмотрим примеры простейших регулярных выражений:

\d\d\d\d - найдёт 1812 и 2009
\D - найдёт все буквы, пробелы и знаки препинания
\s - найдёт все пробелы в тексте.

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

[0-9] - означает любую цифру (то же, что \d)
[0,2,4,6,8] - означает чётную цифру
[A-Za-z0-9] - обозначает любой символ латниского алфавита (в любом регистре) или цифру.

Например, выражение \d\d\d[0,2,4,6,8] в тестовой строке найдёт только 1812, но не 2009. Это выражение следует читать как "найти все последовательности из четырёх цифр, где последняя цифра равна 0,2,4,6 или 8".

Нам осталось упомянуть лишь квантификаторы и модификаторы.

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

{X}

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

\d{4}

следует читать как "ровно четыре последовательно записанные цифры".

Вторая форма записи - диапазонная. Записывается как

{X, Y}
// или
{,Y}
// или
{X,}

где X - минимальное, а Y - максимальное количество повторений. Например:

\d{2,4}

читается как "от двух до четырёх последовательно записанных цифр". Если одна из границ не указана, то подразумевается отсутствие ограничения. Например:

\w{3,}  - три и более букв.
\d{,5}  - цифр нет вообще, либо есть, но не более пяти.

Квантификаторы могут применяться как к одному символу, так и к группе:

[ А-Яа-я ]{1,3}

Эта конструкция выберет из текста все русские слова из одной, двух или трёх букв (например, "или", "не", "я", "иду" и т.п.)

Кроме фигурных скобок с уществует ещё три метасимвола-квантификатора: "*" (звёздочка), "+" (плюс) и "?" (вопрос). Их испльзуют в случаях, когда заранее неизвестно минимальное и максимальное количество необходимых повторений. Например, при поиске адресов электронной почты нельзя заранее сказать, сколько символов будет в имени пользователя (до "собаки"), а сколько - в имени домена (после "собаки").

Метасимвол "*" читается как "любое количество от нуля и более", т.е. конструкция

\w* 

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

Символ "+" отличается от звёздочки лишь тем, что требует наличия хотя-бы одного символа. Т.е. конструкция

\d+

соответствует любой цифровой последовательности, где цифр одна или более.

Символ "?" соответствует отсутствию или наличию единственного символа. Т.е. конструкция

\d?

соответствует любой цифровой последовательности, где цифр одна или две.

Здесь стоит упомянуть о такой особенности квантификаторов "*" и "+" как жадность. Суть в том, что по-умолчанию эти символы соответствуют максимально длинной последовательности символов. Например, для строки "мама мыла раму" выражение:

\.+а

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

\.+а?

и получим требуемое совпадение "ма".

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

i Включает режим case-insensitive, т.е. большие и маленькие буквы в выражении не различаются.
m Указывает на то, что текст, по которому ведется поиск, должен рассматриваться как состоящий из нескольких строк. По умолчанию механизм регулярных выражений рассматривает текст как одну строку вне зависимости от того, чем она является на самом деле. Соответственно метасимволы '^' и '$' указывают на начало и конец всего текста. Если же этот модификатор указан, то они будут указывать соответственно на начало и конец каждой строки текста.
s По умолчанию метасимвол '.' не включает в свое определение символ перевода строки. Т.е. для многострочного текста выражение /.+/ вернет только первую строку, а не весь текст, как ожидается. Указание этого модификатора снимает это ограничение.
U Делает все количественные метасимволы "не жадными" по умолчанию. В некоторых модификациях языка (в частности в PHP) вместо "U" используется символ "g", более соответствующий смыслу ("g" - сокращение от английского "greedy", "жадный").

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

email [\.\-_A-Za-z0-9]+?@[\.\-A-Za-z0-9]+?[\ .A-Za-z0-9]{2,}
дата ^\d{1,2}([-. /])\d{1,2}\1\d{2,4}$
дробное число [\d]{4}\.[\d]{2}
номер мобильного телефона (?:8|\+7)? ?\(?(\d{3})\)? ?(\d{3})[ -]?(\d{2})[ -]?(\d{2})
Выделение текста между тегами /<tag>(.*)</tag>/Uis

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

Для работы с регулярными выражениями в PHP предназначены специальные функции, список которых и краткое описание приведены в таблице:

int preg_match (string pattern, string subject [, array matches])

Функция проверяет, совпадает ли содержимое subject с шаблоном pattern. Возвращает 1, если совпадения найдены, иначе возвращает 0. Если указать необязательный параметр-массив matches, то при выполнении функции в него будут занесен единственный элемент - первое найденное совпадение.

    <?php
    
    // исходная строка
    $value = "abcde 12345 klmnop";
    
    // шаблон для поиска
    $template = "/\w{5}/";
    
    // производим поиск
    $result = preg_match($template, $value, $matches); 
    
    echo "Совпадений: $result<br>";
    print_r($matches);
    ?>
      

Результат выполнения данного кода -

Совпадений: 1
Array ( [0] => abcde )
int preg_match_all (string pattern, string subject, array matches [, int order])
Функция идентична предыдущей, с единственным отличием - она производит поиск по всему тексту и возвращает в массиве matches ВСЕ найденные совпадения.
mixed preg_replace (mixed pattern, mixed replacement, mixed subject [, int limit])
Как и обе предшествующие функции, preg_replace производит поиск фрагмента текста, соответствующего шаблону. Все найденные фрагменты функция заменяет на указанный в параметрах текст.
<?php
	$text = "текст\t\n\t\t до замены  \n  \t и  \n\n\n после   замены";
	echo "<b>До очистки:</b>\n$text\n\n";
	$text = preg_replace("/(\n \s{2,})/"," ",$text);
	echo "<b>После очистки:</b>\n$text";
    
    // выведет текст, очищенный от спецсимволов 
    // и лишних пробелов
?> 
    
Результат выполнения данного кода -

До очистки:
текст	
		 до замены  
  	 и  


 после   замены

После очистки:
текст	
		 до замены   и  


 после   замены
mixed preg_replace_callback (mixed pattern, mixed callback, mixed subject [, int limit])
Функция является расширенной версией предыдущей. Главное отличие - этой функции в параметрах передаётся имя функции, которая будет анализировать текст и формировать замещающий текст.
array preg_split (string pattern, string subject [, int limit [, int flags]])
Эта функция аналогична функциям explode() и split(). Её особенность в том, что в качестве разделителя выступает не фиксированная строка, а регулярное выражение. Функция разбивает исходные данные на элементы и помещает их в выходной массив.
        
<?php


	// загружаем текст из файла
	$text = join('',file('my_text.txt'));

	// разбиваем по словам
	$words = preg_split("/\s+/s",$text);

	// выводим результаты
	print_r($words);
    
?>
        
Результат выполнения данного кода -

Array ( [0] => width="100%" [2] => border="0" [3] => cellspacing="0" [4] => cellpadding="0"> [5] => [6] => [8] => [10] => [12] => [13] => [14] => [15] => [17] => [18] => [19] => [20] => [21] => [22] => [23] => [24] => [25] => [26] => [29] => [30] => [31] => [32] => [33] => [34] => [35] => [36] => [37] => [38] => [119] => [120] => [121] => [122] => [123] => [124] => [125] => [126] => [127] => [128] => [131] => [132] => [133] => [134] => [135] => [136] => [137] => [138] => [139] => [140] => [146] => [147] => [148] => [149] => [150] => [151] => [152] => [153] => [154] => [155] => [168] => [169] => [170] => [171] => [172] => [173] => [174] => [175] => [176] => [177] => [186] => [187] => [188] => [189] => [190] => [191] => [192] => [193] => [194] => [195] => [205] => [206] => [207] => [208] => [209] => [210] => [211] => [212] => [213] => [214] => [223] => [224] => [225] => [226] => [227] => [228] => [229] => [230] => [231] => [232] => [243] => [244] => [245] => [246] => [247] => [248] => [249] => [250] => [251] => [252] => [255] => [256] => [257] => [258] => [259] => [260] => [261] => [262] =>
width="10%">  width="80%">  width="10%"> 
 Уроки [16] => php 
   
 [ href="?page=4">другие [28] => статьи] 
   
 

В [39] => данной [40] => серии [41] => статей [42] => Вы [43] => узнаете [44] => об [45] => основах [46] => создания [47] => сайтов [48] => на [49] => языке [50] => php.

[51] =>

Вы [52] => можете [53] => создавать [54] => скрипты [55] => на [56] => языке [57] => php [58] => и [59] => выполнять [60] => их [61] => на [62] => своём [63] => ПК, [64] => либо [65] => на [66] => хостинге [67] => с [68] => поддержкой [69] => языка [70] => php [71] => и [72] => баз [73] => данных [74] => my [75] => sql.

[76] =>

Можно [77] => начать [78] => работу [79] => сразу [80] => же [81] => с [82] => готового [83] => сайта. [84] => Для [85] => этого [86] => советую [87] => взять [88] => за [89] => основу [90] => одну [91] => из [92] => готовых [93] => систем [94] => для [95] => создания [96] => сайтов [97] => на [98] => php [99] => с [100] => открытым [101] => исходным [102] => кодом:

[103] =>

- [104] => href="?page=156">megainformatic [106] => cms [107] => free;

[108] =>

- [109] => href="?page=190">megainformatic [111] => cms [112] => express;

[113] =>

- [114] => href="?page=164">megainformatic [116] => cms [117] => express [118] => files;

 
   
 Рассмотрим [129] => следующие [130] => вопросы: 
   
 1) [141] => href="?page=17">Введение [143] => в [144] => язык [145] => php; 
   
 2) [156] => href="?page=13">Работа [158] => с [159] => базами [160] => данных [161] => MySQL [162] => Описано [163] => как [164] => создать [165] => простейший [166] => счётчик [167] => посещаемости. 
   
 3) [178] => href="?page=18">Выводим [180] => дату [181] => и [182] => время [183] => в [184] => формате [185] => RU 
   
 4) [196] => href="?page=15">Добавляем [198] => созданный [199] => счетчик [200] => на [201] => все [202] => страницы [203] => Вашего [204] => Сайта 
   
 5) [215] => href="?page=216">Что [217] => нужно [218] => для [219] => создания [220] => собственного [221] => сайта [222] => ? 
   
 6) [233] => href="?page=222">Шаги, [235] => которые [236] => потребуются [237] => для [238] => создания [239] => простого [240] => и [241] => функционального [242] => сайта 
   
 [ href="?page=4">другие [254] => статьи] 
   
)
array preg_grep (string pattern, array input)
Функция предназначена для регулярного поиска в массивах. Для поиска задаётся шаблон и массив входных данных, а возвращается массив, состоящий только из элементов, соответствющих шаблону.

Рассмотренный список функций далеко не полон, но вполне достаточен для успешного начала работы с регулярными выражениями. Если вы заинтересовались этой темой - обязательно почитайте дополнительную литературу (например, книгу Фридла "Регулярные выражения"). Кроме того, в целях обучения рекомендую поставить одну из специальных программ для тестирования регулярных выражений (например, "PCRE" или "RegEx Builder").

- Конец текста статьи

Спасибо Сергею, за очень полезную и информативную статью !



А теперь небольшое веб-приложение для тестирования регулярных выражений

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


Строка поиска




И небольшая шпаргалка по синтаксису регулярных выражений -

шпаргалка по синтаксису регулярных выражений [к содержанию]

подробнее

Пишем свою cms - шаг 1

Итак, Вы уже немного изучили язык php или еще не совсем, но уже чувствуете в себе силы создать что-то большое и особенное.

Вообще-то язык php в первую очередь предназначен для создания web-приложений, т. е. сайтов.

Сам я начинал изучение языков программирования ради одной цели - создания игр.

Поэтому в моём арсенале были в первую очередь языки - delphi, c++.

И только позднее, когда я вплотную занялся проблемой создания сайтов, я пополнил этот арсенал html, css, javascript и php.

Создание своего сайта и своей cms можно начать прямо сейчас.

Почему не взять готовые cms ? Такие как joomla, drupal, wordpress или что-то еще.

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

Альтернативой является создать всё с нуля и самому.

Тогда Вы во-первых будете точно знать где и какой код у вас записан.

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

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

Но начнём с самого простого.

Итак, Вы хотели бы создать первый свой сайт.

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

Вот пример такого сайта - http://megainformatic.ru/webprojects/megainformatic_cms_free/

Весь код, который мы сегодня с Вами рассмотрим, можно найти, скачав эту маленькую cms со странички - megainformatic cms free

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

Что мы увидим внутри ?

4 папки -

data/
design/
modules/
papers/

и 4 файла

config.php
index.php
license.txt
readme.txt

Начнём изучение как всегда с самого главного в любом сайте файла - index.php

Там мы увидим такой код -

include_once 'config.php';

include "design/".$template_name."/header.php";
include "design/".$template_name."/menu.php";
include "design/".$template_name."/content.php";
include "design/".$template_name."/footer.php";

Достаточно просто не правда ли ?

Вообщем-то это и есть вся основа на которой может работать любая (!) cms.

Неужели и теперь Вы скажете, что создать свою cms очень сложно ?

Думаю что это может сделать каждый.

Тем более даже уже писать ничего не нужно.

Код уже был написан и его достаточно только скачать - megainformatic cms free

Но наша главная цель - это научиться писать cms самому !!!

Поэтому, те из Вас, кто уже преодолел барьер боязни перед проблемой создания своего сайта и своей cms, могут смело двигаться дальше.

Мне остается только пояснить вышеописанный код -

/* подключаем файл конфигурации (данный файл может хранить какие-то базовые настройки сайта, например используемый на сайте шаблон */
include_once 'config.php';

/* подключаем файл из текущего шаблона, который отвечает за вывод блока и шапки сайта */
include "design/".$template_name."/header.php";

/* подключаем файл из текущего шаблона, который отвечает за вывод блока меню сайта */
include "design/".$template_name."/menu.php";

/* подключаем файл из текущего шаблона, который отвечает за вывод блока контента (т. е. текста страниц, картинок, ссылок - статей, которые мы читаем) */
include "design/".$template_name."/content.php";

/* подключаем файл из текущего шаблона, который отвечает за вывод нижней части сайта (footer, подвал) который обычно содержит копирайт и коды счётчиков */
include "design/".$template_name."/footer.php";

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

Достаточно лишь захотеть разобраться и поискать необходимые знания.

В следующей статье мы рассмотрим следующий шаг в создании Вашей собственной cms - подробное описание кода, внутри файла config.php.

На сегодня всё :))))

Удачи Вам на ниве сайтостроя !!!

далее

подробнее

     
 
Урок 7 2D-анимация
 
О том, что потребуется для данного урока читайте в основном разделе - уроки delphi directx 8.1
 
Далее у читателя подразумевается наличие базовых знаний языка Delphi.
 
[назад] [страница 1] [далее] [к содержанию]
 

При создании 2D-анимации нужно учитывать следующие моменты:

- покадровое размещение анимированного изображения нужно производить в файле формата bmp, tga или dds. jpg для этих целей не подойдет, т.к. из-за сжатия возможно появление посторонних пикселей в тех местах изображения, где должен быть прозрачный фон;

- текстура обязательно должна быть квадратной и лучше одного из типовых размеров - 32х32, 64х64, 128х128, 256х256, 512х512, 768х768, 1024х1024 пикселя, если не учесть этот момент, то будут наблюдаться сдвиги картинки в кадре;

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

 
Если Вы не совсем понимаете в чём состоит суть создания анимации, то советую сначала прочесть статью Создаем анимацию хотьбы волка в Photoshop и ImageReady
 
Для того, чтобы использовать такие анимированные изображения в игре можно воспользоваться классом TD3DImage2D, в который были добавлены возможности для анимирования.
 

Для использования класса TD3DImage2D нужно выполнить следующие шаги

в секцию uses кода модуля, в котором Вы будете использовать данный класс добавить ссылку на модуль D3DGUI.pas (если Вы её еще не добавили, если же Вы уже используете в коде данный класс, пусть даже не для анимированных изображений, то естественно вторично добавлять ссылку в uses не нужно)

 

 

В папку ресурсов проекта добавляем нужное изображение, например, я это буду делать на примере добавления индикатора в игре "в плену желаний"

в папку Media\Textures\scene1 копирую нужный мне файл adgezio_indicator.tga

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

const

{...}

DesiresIndicatorTexture = 'Media\Textures\scene1\adgezio_indicator.tga';

В класс D3D-приложения, например TD3DGameApp добавляю новое поле -

DesiresIndicatorImage: TD3DImage2D;

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

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

В методе конструктора класса (в моем проекте это TGameScene7Title.Create)

DesiresIndicatorImage := nil; //данный шаг необязателен, т.к. в экземпляре класса все указатели первоначально //инициализируются в nil, но данная строка кода явно демонстрирует этот шаг в коде

в методе загрузки объектов игровой сцены (или инициализации класса) выполняем загрузку текстуры из файла -

TGameScene7Title.LoadMiniGame2

{...}

DesiresIndicatorImage := TD3DImage2D.Create(g_d3dApp.m_d3dfmtTexture);
if DesiresIndicatorImage = nil then Exit;
hr := DesiresIndicatorImage.InitDeviceObjects(m_pd3dDevice, DesiresIndicatorTexture);
if Failed(hr) then Exit;

в методах реставрации (Restore), инвалидации (Invalidate) и освобождения (Free) нужно добавить соответствующий код -

TGameScene7Title.RestoreMiniGame2

{...}

if DesiresIndicatorImage <> nil then
DesiresIndicatorImage.RestoreDeviceObjects;

TGameScene7Title.InvalidateMiniGame2

{...}

if DesiresIndicatorImage <> nil then
DesiresIndicatorImage.InvalidateDeviceObjects;

TGameScene7Title.FreeMiniGame2

{...}

SAFE_DELETE(DesiresIndicatorImage);

 

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

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

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

TGameScene7Title.LoadMiniGame2

{...}

DesiresIndicatorImage.Width := 70;
DesiresIndicatorImage.Height := 16;
DesiresIndicatorImage.TextureOffsetX := 0;
DesiresIndicatorImage.TextureOffsetY := 128;
DesiresIndicatorImage.Frame := 0;
DesiresIndicatorImage.FramesPerLine := 3;
DesiresIndicatorImage.Delay := 10;
DesiresIndicatorImage.fMaxFrame := 5;

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

 

в методе рисования сцены нужно добавить рисование анимированного или статичного изображения -

TGameScene7Title.DrawMiniGame2

{...}

DesiresIndicatorImage.DrawScaled(-1.0, 1.0, 0.9, 0.35, 0.35,
DrawD3DImage2D_Filtered, 255, True);

Обратите внимание, что для анимированных изображений вызывается функция рисования DrawScaled с новым параметром True, который необходим для анимированных изображений и определяет корректную выборку кадров

 

в методе анимирования сцены нужно добавить 2 строки кода -

TGameScene7Title.AnimMiniGame2

{...}

FTimeLapsed := DXUtil_Timer(TIMER_GETELAPSEDTIME);

DesiresIndicatorImage.FrameMove(FTimeLapsed);

первая строка потребует, чтобы Вы объявили FTimeLapsed: Single; внутри класса игровой сцены и производит запрос интервала времени прошедшего с последнего вызова от системного таймера

вторая строка кода передает полученный интервал в метод анимирования изображения. если Вы используете подвижный спрайт, то Вам лучше описать его в виде отдельного класса, а его перемещение по экрану реализовать внутри его метода анимации или так как это выполнено в игре "Ну, Погоди!". В её коде для анимационного ролика создан отдельный модуль GameCartoonScript.pas и отдельный класс TGameCartoon. Внутри него и происходит всё самое интересное касающееся реализации анимации 2D-спрайтов.

 

Теперь приведем пример кода, который можно использовать для одновременной анимации множества подобных объектов.

В методе анимации TGameScene7Title.AnimPauseScreen

{...}

for i := 0 to StarsNum-1 do begin
StarsImage.Delay := Stars[i].Delay;
//заносим текущую скорость в экземпляр TD3DImage2D
StarsImage.Frame := Stars[i].Frame;
//а также номер текущего кадра
StarsImage.FrameMove(FTimeLapsed);
//выполняем анимацию
Stars[i].Frame := StarsImage.Frame;
//запоминаем новый текущий кадр в данных игрового объекта
end;

В методе рисования TGameScene7Title.DrawStars;

for i:= 0 to StarsNum-1 do begin
StarsImage.Frame := Stars[i].Frame;
//заносим текущий кадр в экземпляр TD3DImage2D
StarsImage.DrawScaled(Stars[i].vPos.x,
//выполянем рисование данного текущего кадра
Stars[i].vPos.y, 0.9,
Stars[i].Size, Stars[i].Size, DrawD3DImage2D_Filtered,
Stars[i].Alpha, True);
end;

 
Как видите всё достаточно просто, нужно лишь запоминать данные об текущем кадре и скорости анимации в каждом игровом объекте. Для сильно различающихся по свойствам игровых объектов (в частности использующих разные экземпляры TD3DImage2D) конечно же лучше использовать производные классы.
 
В следующем уроке Вы узнаете как реализовать многие из особенностей игрового проекта, которые не имеют прямого отношения к самому игровому процессу, но являются важной частью любого игрового приложения - режимы сохранения/загрузки текущей игры, специфичные режимы игры "Ну, Погоди!", запуск браузера для отображения сайта разработчика или другого интернет-ресурса.
 
 
 
[назад] [страница 1] [далее] [к содержанию]
 
     
     
     
     

Создание сайта для бизнеса - Миф или реальность ?

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

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

Для чего создаются сайты ?

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

Каких задач ?

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

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

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

Существует ли какой-то секрет успеха при создании сайта ?

Разумеется да. Но помните одно - у каждого он уникален и никто с Вами им не поделится, пока Вы не откроете свой собственный.

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

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

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

Что я могу посоветовать тем из Вас, кто решил заняться созданием сайта сам или привлечь для этого специалистов ?

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

На первое время нужно обзавестить хотя бы такими вещами:

- Набор разработчика DENWER Дмитрия Котерова;

- Программа для работы по FTP - FileZilla;

- Редактор текста и кода - Notepad++;

- Информационные сайты и материалы по php, my sql, html, css, javascript, flash, работе в photoshop;

- Статьи на различную тематику посвященную сайтам, их созданию и продвижению;

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

Этот список еще далеко не полон.

Желаю Вам удачи на ниве создания сайтов !

megainformatic live chat
Начать беседу
X
 

Оставленные комментарии



fle game engine - движок для создания игр
fle game engine - движок для создания игр


Something: Unexplained 2 captive of desires / Нечто: Необъяснимое 2 в плену желаний
Костя Коробкин Комикс Коллекционное издание - 6 комиксов, 81 страница, 220 mp3 треков
megainformatic Размещение баннерной рекламы у нас
Время загрузки: 2,5175