Отправляет email-рассылки с помощью сервиса Sendsay

Web-Мастеринг - с нуля до профи

  Все выпуски  

нет.


Информационный Канал Subscribe.Ru

Познавательное программирование

(comp.soft.prog.urisprog)

Выпуск 24


Здравствуйте, Уважаемые подписчики!

Если кто-нибудь откажется от моего автомобиля, я знаю, что в этом виноват я сам.
- Генри Форд.


Предисловие

Привет-привет уважаемые!

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

Извиняюсь ещё за то, что статья, опубликованная в выпуске 21 была продублирована в 23-ем.


2. Относительно "недавно" я помещал в рассылку задачку для решения на Си/Си++. Тогда это вызвало очень живой интерес среди подписчиков. Мне и самому было очень интересно посмотреть решения той задачки других людей.
Хотел бы выразить всем тем, кто отослал тогда своё решение - своё признание!
Сейчас я решил повторить тот опыт. Если кто-то сможет предложить мне задачку подобную той, буду очень рад, да и подписчики тоже.
Вот основные требования: задачка должна...
1) быть лёгкой для понимания (чтобы расширить количество подписчиков-участников, не все тут профессионалы в последней стадии...)
2) иметь необъёмное решение без монотонных вычислений (иначе рассылка лопнет от такого объёма :).
В-общем, задачка должна быть небольшой, несложной и иметь изящное решение, чтобы было где проявить творчество.
Все ваши варианты направляйте на urisff@inbox.ru.
Приветствуются задачки на тему манипуляций с массивами. Разумеется, все, кто пришлют свои варианты будут упомянуты в рассылке.
Все решения будут опубликованы в рассылке и прокоментированы мной :) Кстати, я не исключаю, что решение может быть не только на Си/Си++, рассылка ведь в-основном про Delphi - значит можно использовать его консольный вариант либо сам Паскаль.
Заранее благодарен! Жду ваших вариантов.

Теперь статья Гусева Сергея (снова и снова - СПАСИБО тебе, Сергей!) и статья-обзор нового хостинг-провайдера.

Статья

Игра "Поймай меня"

На одном из занятий по изучению объектно-ориентированных языков программирования, на примере языка Visual Basic, нам предложили написать небольшую шуточную игру. Суть игры состоит в том, чтобы поймать кнопку, которая хаотически движется по экрану. И я сразу же решил перевести данную игру в язык программирования Delphi.

Описание игры:

При запуске программы примерно в центре экрана располагается обыкновенная кнопка с заголовком "Поймай меня". При старте игры эта кнопка начинает беспорядочно перемещаться по форме. Если игроку удается поймать кнопку, то игра приостанавливается, и заголовок кнопки меняется на "Готово". В свою же очередь попробуем добавить к игре несколько функций, например, паузу и выбор уровней сложности. Движущаяся кнопка будет перемещаться по случайным координатам, которые ей будут задаваться в обработчике события истечения интервала времени таймера. Для того чтобы игрок не смог перейти на кнопку клавишей Tab и тем самым нажать на нее при помощи клавиатуры, свойству TabStop кнопки необходимо задать значение False. И так создадим новый проект и положим на форму следующие компоненты:

  • 1. Кнопка btnStart - Начало игры;
  • 2. Кнопка btnPause - Возможная пауза в игре;
  • 3. Кнопка btnGet - Кнопка, которую нужно ловить;
  • 4. Timer;
  • 5. Меню:
    • mnuEasy - Легкий уровень сложности;
    • mnuNormal - Средний уровень сложности;
    • mnuHard - Тяжелый уровень сложности;
  • 6. Кнопка btnClose - Выход из игры;

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

procedure TForm1.FormCreate(Sender: TObject);
begin
 Timer1.Enabled:=False;
 btnGet.Caption:='Поймай' + #10 + 'Меня';
 btnGet.Enabled:=False;
 btnPause.Enabled:=False;
end;

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

procedure TForm1.Timer1Timer(Sender: TObject);
Var I: Integer;
begin
  Randomize;
  I:=Random(9);
  btnGet.Enabled:=True;
  btnGet.Top:=(15 + 100 * (I div 3));
  btnGet.Left:=(15 + 200 * (I mod 3));
end;

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

procedure TForm1.btnStartClick(Sender: TObject);
begin
 Timer1.Enabled:=True;
 btnGet.Enabled:=True;
 btnGet.Caption:='Поймай' + #10 + 'Меня';
 btnPause.Enabled:=True;
end;

Кнопка паузы. При нажатии на нее таймер становится не активным и движущаяся кнопка прекращает свое движение при этом ее заголовок меняется на "Пауза". При повторном нажатии процесс игры начинается с последней заданной позиции.

procedure TForm1.btnPauseClick(Sender: TObject);
begin
 If Timer1.Enabled = True Then
   Begin
     Timer1.Enabled:=False;
     btnGet.Enabled:=False;
     btnGet.Caption:='Пауза';
   End
 Else
   If Timer1.Enabled = False Then
     Begin
       Timer1.Enabled:=True;
       btnGet.Enabled:=True;
       btnGet.Caption:='Поймай' + #10 + 'Меня';
     End;
end;

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

procedure TForm1.btnGetClick(Sender: TObject);
begin
 Timer1.Enabled:=False;
 btnGet.Caption:='Готово';
 btnGet.Enabled:=False;
end;

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

procedure TForm1.mnuNormalClick(Sender: TObject);
begin
 Timer1.Interval:=600;
end;

procedure TForm1.mnuEasyClick(Sender: TObject);
begin
 Timer1.Interval:=800;
end;

procedure TForm1.mnuHardClick(Sender: TObject);
begin
 Timer1.Interval:=300;
end;

Выход из программы.

procedure TForm1.btnCloseClick(Sender: TObject);
begin
 Close;
end;


Любые комментарии, жалобы, пожелания и сообщения об ошибках настоятельная просьба присылать на e-mail.

Гусев Сергей.
e-mail: satanzone@yandex.ru
site: http://icops.narod.ru




Обзор хостинга 2gb.ru

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

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

И так, первое что мы видим, заходя на сайт www.2GB.ru - это ввод поля для входа в аккаунт для клиентов хостинга в самом верху (это удобно для тех, кто не хочет ждать полной загрузки страницы...). Далее логотип сайта и... :) надпись "Добрый хостер", что уже располагает посетителей к тому, чтобы как следует почитать информацию на сайте.

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

Справа находится меню, в котором представлены только самые необходимые пункты для тех, кто, возможно, станет клиентом. Ниже, крупным шрифтом указан раздел "КОНТАКТЫ", это говорит о том, что провайдер не пытается остаться в тени, согласитесь не часто так бывает с нашими многочисленными российскими провайдерами, которые в большинстве случаев на проверку оказываются лишь ресселерами и ни за что не несут ответственности...


И так, начнём с характеристик самого сервиса который предлагает 2GB:

Это конечно же такой пункт как система управления аккаунтом. Этот хостер не стал устанавливать уже всем порядком надоевшую систему cPanel x.x, и установил систему H-Sphere (СФЕРА), которая без сомнения превосходит пресловутую cPanel. Такое обилие предустановленных сервисов, не может не радовать.

Тут Вам и форум, гостевая книга, чат и даже!!! настоящий интернет-магазин OsCommerce (и не условно бесплатный как в cPanel), для сравнения, у того же хостинга от 100MB.ru этот скрипт, только установка стоит 100 нерублей. Но самое главное, для того, чтобы инсталлировать всё это удовольствие, совсем не надо тратить уйму времени и сил, ведь для этого лишь нужно нажать соответствующую кнопку в своём аккаунте. При этом, интерфейс управления грамотно и профессионально переведён на русский язык.

Я попытался найти побольше информации об этой системе и выяснил, хостеру приходится платить $4.5 за аккаунт одноразово - лицензия разработчикам софта, и делаем вывод, раз минимальная стоимость тарифного плана $3, а хостер платит 4,5 только за то, что инсталлирует для нас софт, то это означает - хостер рассчитывает на долгосрочное сотрудничество и не рассчитывает получить сразу высокую окупаемость от бизнеса и уйти на покой... как это часто бывает в нашей стране.

Внимание! Также, для тех кто не умеет делать сайты (но очень хочется), или для тех, кому срочно нужен сайт, а времени нет - для Вас система SiteStudio, это очень мощный инструмент создания своего сайта прямо через веб-интерфейс. И как Вы уже догадались, этот сервис присутствует на 2GB.ru Да непросто присутствует, но и является бесплатным, а это, согласитесь очень и очень нужно ;)

Такой важный момент как регистрация доменов также автоматизирована на этом сервисе, Вы, конечно, можете сами зарегистрировать домен где-нибудь (да хотя бы на этом же сайте 2GB.ru за те же деньги что, и предлагает наш российский регистратор RU-CENTER), но ведь куда приятнее сделать это сделать через веб-интерфейс H-Sphere :). Домены регятся всего за 1 час.

Также, стоит отметить, что на 2GB.ru трафик входящий/исходящий, зарубежный/российский - полностью неограничен. А это дорогого стоит.

Но давайте же присмотримся внимательнее к самим характеристикам сервиса, и что мы обнаруживаем? - да то, что напротив каждой новой характеристики написано либо: "неограниченно", либо "есть". Что ж, неплохо. Мы уже привыкли тратить время для того, чтобы проследить глазами характеристики каждого тарифного плана от очередного хостера, НО здесь это совсем не нужно, так как все представленные характеристики общие для всех планов!!!

Чего тут только нет: управление через мобильник, неограниченное количество доменов на один аккаунт, FrontPage, phpMyAdmin, статистика (покруче HotLog'а будет, который теперь стал платным - 3 бакса) и мн.др.

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

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

Окончательно приводит в восторг стоимость этого хостинга, она совсем не выше тех цен, что мы постоянно видим у других хостеров, и начинается она с $3 (90 руб.), за эти деньги можно получить полностью профессиональный хостинг. Разница между тарифными планами - это лишь выделенное дисковое пространство, оно начинается от 70 Мб. и заканчивается 2Гб.

Для желающих получить качественный платный ящик тут тоже всё продуманно, а главное качественно и не дорого. Стоимость $3/мес. И как в случае с хостингом, наворотов пруд пруди.

Не забудьте заглянуть на 2GB.ru
Так что я теперь точно поклонник хостинга 2GB.ru. Если кого то заинтересовал мой обзор, с удовольствием обсужу всё что касается его в личной переписке.

Счастливо!

http://www.2gb.ru | Служба поддержки


Все вопросы, пожелания и предложения ссылкообмена ведущему рассылки, прошу слать на e-mail: urisff@inbox.ru
Все статьи публикуются здесь только с разрешения (или рекомендации) автора.
Если вы хотите опубликовать здесь свою статью, то сделайте это, переслав её мне. В случае, если вы будете использовать приведённые в этой рассылке материалы, не забудьте сделать ссылку на эту рассылку.

Ведущий рассылки:
Набатников Иван
urisff@inbox.ru
http://newff.narod.ru


http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.urisprog
Отписаться

В избранное