Jun 18

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

Ссылки на необходимый для работы софт и доки: Tortoise SVN, Fusebox, Smarty.

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

Ожидайте описание Fusebox и процесса разработки в следующих выпусках нашего журнала.

UPDATE: чтобы не казалось что тут звери сидят, могу заверить - с нашей стороны мы дадим все что нужно - расскажем о Fusebox, бизнес-логику и т.д. Выучить за вас php и mysql конечно никто не сможет, но ведь целью практики и есть научиться…

Jun 10

“А что, можно не как модуль ?” спросит пытливый читатель, и будет прав. PHP можно запускать вполне самостоятельно из командной строки, “скармливая” ему php скрипт как параметр:

php.exe test.php

Неудивительно, что результатом работы будет HTML который отобразится в консоли. Само название - PHP - “PHP Hypertext Preprocessor” - говорит о том, что цель существования PHP - обрабатывать скрипты, внедренные в HTML, динамически получая необходимый результат. Как быть при этом запущенным, никто не оговаривает. Поэтому, на заре человечества, PHP запускался, как и все порядочные веб-прибамбасы того времени, через интерфейс CGI. По сути, при такой организации, при каждом вызове веб-страницы веб-сервер запускал как отдельный процесс соответствующий препроцессор, отдавал ему на обработку файл, получал результат и передавал его клиенту. Все как бы неплохо, но в нынешний потребительский век, к веб-сайту люди обращаются не степенно и на Вы, спокойно ожидая своей очереди, а толпами по тысяче человек в день, причем 20-30 особо желающих будут ломится одновременно. Во время неких событий, например чемпионата мира по футболу, нагрузки на некоторые сервера может достигать миллионов обращений в день. С одной стороны - у сервера мозги луженные, работай себе и не жужжи, но нет. Запуск отдельного процесса - удовольствие не из дешевых, даже в современной ситуации копеечных цен на мегагерц и мегабайт. Добавим к расходу процессорного времени утечки памяти (это ситуация, когда память остается занятой даже после окончания работы процесса) оставленные нерадивыми программистами (вероятно они дома тоже не закрывают воду в ванной и не выключают свет в туалете) - и мы получим перерасход ресурсов сервера и необходимость перезагрузить его чтобы продолжить работу. Остановка сервера даже на 5 минут в день - катастрофа. Для серверов с коммерческой нагрузкой - это потерянные клиенты. Кому интересен сайт который недоступен ?

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

Рассматривать установку как CGI приложения я здесь не буду, дабы не засорять ваш мозг. Перейдем к собственно установке. Есть два пути установки PHP - с помощью инсталлятора и ручной. С одной стороны, первый путь проще - так как примерно с 90% вероятности инсталлятор выполнит все процедуры за вас. С другой стороны, нам интересно разобраться как “оно работает” и установка вручную этому очень способствует. Поэтому:

  1. Скачайте последнюю версию PHP с сайта php.net. Сегодня (июнь 2007) это версия 5.2.3. Это должен быть zip архив. Не поддавайтесь искушению, и не скачивайте .msi файл - процесс установки с помощью инсталлятора слишком прост, а это ведет на Темную Сторону Силы.
  2. Разверните архив в папку С:\PHP на вашей машине. Это может быть и другая папка, но для простоты я буду считать что вы прислушались к совету. Кроме того, избегайте папок с пробелами при установке PHP - это создает ненужные сложности.
  3. Откройте на редактирование файл httpd.conf чтобы прописать PHP как модуль Apache (я считаю что вы установили сервер Apache2.2.x)
    LoadModule php5_module c:/php/php5apache2_2.dll
    
    AddType application/x-httpd-php .php
    
    PHPIniDir C:/php

    Если у вас установлен Apache 2.0.x - подключать следует библиотеку php5apache2.dll, которая располаается там-же. Если у вас версия Apache 1.3.x - используйте php5apache.dll
    Директива PHPIniDir определена внутри модуля PHP, и поэтому эта строка должна располагаться ниже чем LoadModule - иначе Apache не будет знать что от него хотят и не запустится. Эта директива описывает нахождение файла настроек PHP - php.ini. По умолчанию он расположен в корне PHP - я предполагаю у вас это C:/PHP. Заметьте также, что Apache привык видеть в путях файлов “линуховые” слеши - / (по-английски называемые forward slash), а не “виндовые” слеши - \ (back slash) которые используются для записи путей файлов в Windows. Поэтому везде в httpd.conf нужно указывать пути через forward slash: “С:/php” - хотя это не очевидно для пользователя Windows.

  4. PHP плагины любой версии используют core-библиотеку php5ts.dll и поэтому должны иметь к ней доступ. Сама библиотека лежит в папке C:\PHP, но сходу PHP ее там не найдет (очевидно, правда ? :) ) Чтобы PHP таки нашел свою основную библиотеку нужно либо скопировать ее в папку Apache (например, C:\Program Files\Apache Group\Apache2\bin) - там PHP будет искать ее в первую очередь, либо скопировать ее папку Windows, либо прописать папку C:\PHP в переменную окружения PATH. Последний вариант предпочтительней, поскольку оставляет поле для маневра если вы смените версию PHP или Apache. Чтобы изменить переменную окружения, нажмите правой клавишей на значке Мой Компьютер, выберите пункт выпадающего меню Свойства и в открывшемся окне выберите закладку Дополнительно, а на открывшейся закладе - нажмите кнопку Переменные Среды. Там найдите строку с переменной Path и нажмите кнопку Изменить.

    В открывшемся диалоговом окне добавьте через точку запятой путь C:\PHP - вот так: “;C:\PHP”. Заметьте, что тут слеш уже “обратный”, “виндовый” - поскольку эта настройка к Apache не имеет отношения, а в терминах Windows пути должны записываться именно так.
  5. Сейчас надо перезапустить службу Apache чтобы был заново прочитан httpd.conf и новые настройки возымели силу. Для этого пройдите знакомый путь Панель Управления -> Администрирование -> Службы и в открывшемся окне найдите и выберите Apache и нажмите кнопку Перезапустить.

Чтобы проверить что все прошло гладко - создайте файл phpinfo.php в папке для документов вашего Apache (например C:\Program Files\Apache Group\Apache2\htdocs), внутри этого файла пропишите всего лишь одну строку на языке PHP:

<?php
   phpinfo();
?>

и сохраните файл. После этого, в браузере обратитесь к этому файлу - http://localhost/phpinfo.php - и вы должны увидеть всю информацию о PHP, установленном на вашей машине.

Jun 06

Как сдавать экзамены

за жизнь, аффтар: Скакунов Александр 6 Comments »

Тема немного не девелоперская, так что потом удалю :)

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

1. Халява во всех её проявлениях

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

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

Самое важное здесь - ответственность. Как-то мне дали один чертёж нарисовать на компьютере, и я протянул несколько месяцев - ясное дело, ни о каком “зачёте” речи быть не могло.

Второе - олимпиады. Даже если вы не попадете на всеукраинские туры, то участие (участие, не победа!) на олимпиаде уровня нашего универа скорее даст вам +1 на экзамене (многие преподы это озвучивают заранее). Идти страшно, но боятся глупо. На олимпиадах обычно весело, т.к. никто ничего не знает, кроме двух умок на первой парте. Так что идите и зачтется вам. Как-то был курьёз: я получил у Чернеги на экзамене 2, но он учёл +1 балл за участие в олимпиде, +1 за хороший перевод технических текстов с английского, в итоге 4! Приятно иметь дело с программистами :) Я всегда думал, что 2 - это примерно ноль, а оказывается это целых два балла.

2. Если экзамен всё же надо сдавать, и вы честный человек

Это я был таким курса до второго :)

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

От себя добавлю - лучшая стратегия подготовки к экзамену по Скакунову:

  1. Заучманим 1-3 дня до экзамена. Больше - вредно.
  2. Стараемся больше понимать и меньше запоминать. Понимание нескольких принципов заменяет знание множества фактов.
  3. Вечером перед экзаменом хорошенько гульбеним. Это дает отдых натруженной голове и поднимает боевой дух. Бухать надо не от безысходности, а для снятия морального утомления! :)
  4. По идее утром в вашей голове будет очень тихо и умиротворенно, а знания словно лежат на полочках - нужный эффект достигнут.

По этому принципу я поступил в универ и сдал самые трудные экзамены :)

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

3. Если экзамен всё же надо сдавать, и вы бесчестный чел

Это начинает приходить после Экватора…

В основном это мутки с билетами.

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

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

Как сделать, чтобы хоть один билет вам понравился? Всем перед экзаменом дают список вопросов. Делим примерно пополам - получаем готовые билеты (в билете два вопроса), т.е. если у вас 30 вопросов, то в первом билете скорее всего будут вопросы №1 и №16. “Скорее всего” - список может быть устаревшим, так что соответствие будет нечётким. Учитывая всё это, я ярко учил первые четыре билета (”ярко” - глубокое понимание, свои примеры, доп. литература, готовность к дополнительным вопросам) и уже на экзамене быстренько искал нужный. Даже если вы провалитесь (не попадёте с билетом), на пересдачу у вас будет отличный задел.

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

Можно пометить билет, это работает даже для друзей из параллельных групп, которые этот же экзамен сдают в другой день. Только метить надо грамотно. Ставить жирный отпечаток большого пальца - глупо: найти взглядом этот уголок в ворохе из 30 билетов за 5 секунд почти нереально, да и препод может убрать “испачканный” билет. У меня всегда срабатывало ставить небольшие, но заметные точки в каждом углу на обороте билета - каким бы концом он ни торчал наружу, его легко заметить; если билеты лежат слишком плотно, никто не запрещает вам на удачу их поворошить. Короче, пиво вы всегда таким образом заработаете.

Второй метод более рискованный, но прекрасно работает с преподавателями, которые или плохо видят, или постоянно смотрят в свой журнал, или уже очень устали. Берём два билета, сдаём какой понравится, а второй выносим для товарища - у него даже будет время подготовиться. Ему надо только вытянуть новый билет, демонстративно положить его себе на стопку листиков (конечно, держа их выше глаз препода) и громко вслух прочитать заранее принесённый “Билет №9. Принцип работы синхрофазотрона.” Так можно устраивать конвейер, системно. Последний лишний листик кладём на пол и говорим “У вас упало:)

Надеюсь, в следующем посте Родион поведает вам, какие предметы стоило учить и какие экзамены стоило сдавать.

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

Jun 03

О нас

за жизнь, ссылки, аффтар: Скакунов Александр 3 Comments »

Статья на DoU про нас и про вас :)

Jun 02

Joel

за жизнь, ссылки, аффтар: Скакунов Александр 2 Comments »

Раз Родион против давать вам серьёзный технический материал :) буду предлагать полу-серьёзный.

Есть такой сайт joel on software. Пишет на нём некто Joel Spolsky, который некогда разрабатывал определенную часть MS Office Excel в Майкрософт. Пишет вещи здравые и искренние - настолько, что его сайт переведён волонтёрами на 30 языков, а его идеи пошли в мир и живут там.

Советую почитать его статьи. Есть они и на русском. Точно почерпнёте много нового, а поскольку вы щас усиленно учитесь новому, то и полезного :)

Например, я из именно из его статьи “Искусство проведения интервью” почерпнул такой стиль написания предикатов (я упоминал это на последней лекции)

if(0==strlen(x))

а по его “Тесту Джоэля” часто оценивают качество команды разработчиков.

В общем, чтиво большое, познавательное и полезное. Thought-provoking, как говорят у нас в деревне.

P.S. Я долго не мог понять, почему joel ON software. Оказывается, в английском “on” означает “на тему“. Получается “Джоель на тему ПО“. Теперь понятно.