Архив рубрики ‘PHP’ Category

Feb
15
Sphinx. Что это такое и с чем его едят.
1 балл2 балла3 балла4 балла5 баллов (2 голоса, средний балл: 4 из 5)
Loading ... Loading ...

sphinxИтак, сфинкс.

Постараюсь немного рассказать о нем с наглядными примерами и настройкой.

Sphinx (SQL Phrase Index) — полнотекстовый поисковой движок, опубликованный под лицензией GPLv2, что дает возможность его бесплатного использования в своих проектах.

Сразу же возникает вопрос — «чем же Sphinx отличается от других поисковых движков и почему именно его стоит использовать?»
(more…)

Feb
10
Поиск на сайте – Sphinx
1 балл2 балла3 балла4 балла5 баллов (стать первым, кто оценил!)
Loading ... Loading ...

Захотелось сделать хороший поиск на проекте, над которым я работаю. Быстрый и гибкий.

Писать велосипеды не желалось, поэтому решил посмотреть в сторону Sphinx, как быстрого движка с открытыми исходниками.

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

А вы уже использовали ?

Dec
22
Какой фреймворк вы используете?
1 балл2 балла3 балла4 балла5 баллов (2 голоса, средний балл: 1 из 5)
Loading ... Loading ...

Вопрос, конечно же, к программистам.

У каждого языка для веб-разработок есть свой фреймворк или даже несколько. Каким пользуетесь вы и почему?

Скажу за себя — для всех более-менее увесистых проектов (больше хоумпага) я использую Zend Framework, впрочем использую его уже давненько, первым проектом на нем был — http://prometr.ua , сделанный в командной работе (хотя откровенно говоря я принял в нем довольно малое участие, но все же).

С тех пор мне данный фреймворк понравился и я продолжаю работать с ним.

А вы на чем работаете и почему?

Dec
18
Видеохостинг своими руками
1 балл2 балла3 балла4 балла5 баллов (2 голоса, средний балл: 5 из 5)
Loading ... Loading ...

Как и обещал, немного расскажу о том, как создать свой видеохостинг «с нуля».

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

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

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

Основная сложность, как на меня, это закачка, обработка и отдача видео. (more…)

Dec
17
Решил, чем вас порадую
1 балл2 балла3 балла4 балла5 баллов (1 голоса, средний балл: 5 из 5)
Loading ... Loading ...

Некоторое время назад мне понадобилось создать собственный видеохостинг для пользователей проекта.

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

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

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

Итак, следующая заметка будет на тему создания своего видеохостинга «с нуля». Следите за обновлениями.

P. S. Написал новую заметку про ODesk на фрилансхаке — http://freelancehack.ru/blog/2009/12/odesk-4/ , возможно кому-то будет интересно.

Apr
13
Пару советов по созданию проектов
1 балл2 балла3 балла4 балла5 баллов (6 голоса, средний балл: 2.5 из 5)
Loading ... Loading ...

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

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

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

Итак, мой набор советов.

  1. Выключайте отображение ошибок на продакшене. Очень частая ошибка, избегайте ее, незачем давать пищу для размышлений для взломщиков. На экран пользователя не должна вообще отображаться какая-либо информация о серверной части, а тем более ошибки. Сделать это можно поместив в .htaccess строку php_flag display_errors Off
  2. Путь на файловой системе. Не используйте никогда директив по типу define (’PATH_ROOT’, ’/hosting/bla-bla/’) . Это глупая стратегия. Каждый раз править настройки при переносе проекта на другой сервер — абсурд. Используйте «магическую константу» __FILE__ , которая моментально вернет путь к текущему файлу (допустим конфигу), от которого можно получить нужный путь к корню проекта.
  3. Ядро проекта. Контроллеры, модели и прочее должно лежать как минимум на уровень выше, чем часть, доступная через веб-браузер. Хорошая стратегия строить приложение так — что директория ядра и директория, указанная в  DOCUMENT_ROOT — лежали на одном уровне (у меня эти папки обычно имеются как application и public). Данное разграничение призвано обезопасить проект от перезаписи файлов через уязвимость в проекте. Хорошей практикой также будет снять бит на запись от имени пользователя, под которым запущен веб-сервер.
  4. Загрузка файлов, изображений и т.д. Допустим, что все загружаемые файлы кладутся в папку uploads в папке public. Тогда первым делом лучше всего положить в папку uploads файлик .htaccess со следующей строкой — php_flag engine off — это поможет защититься от любителей залить бекдор через уязвимость в коде загрузки файлов на сервер. Это конечно слабая защита от загрузки бекдоров на других языках (например на перле), но «школьники» уже не пройдут. А лучше всего конечно делать безопасную загрузку, без уязвимостей. Но на всякий случай рекомендую подстраховаться таким образом — лишним не будет. Строка запрещает выполнение пхп-кода из данной папки и подпапок.
  5. Мультиязычность. Планируйте возможность мультиязычности еще на этапе проектирования и создания приложения, даже если это сейчас и не нужно. Это съекономит много сил и нервов, когда «вдруг» мультиязычность понадобиться, а в ядре ничего не заложено для этого. На подобные грабли в свое время наступил проект connect.ua, не повторяйте чужих ошибок
  6. Оптимизируйте все до того, как появятся нагрузки. Не стоит ждать, пока проект начнет тормозить под нагрузками и только тогда решать вопрос. Поставьте изначально байт-кешеры кода, например eAccelerator (или другие по вкусу), настройте кеширование на стороне клиента (хорошие советы в этом плане можно найти на webo.in) и на сервере. Это даст существенный прирост производительности (иногда порядка 300 и более процентов), что существенно снизит нагрузки и повысит скорость загрузки страниц у пользователей.
  7. Настройте оповещение об измененных файлах за сутки. Я обычно это делаю через помещение в крон строки: 0       0       *       *       *       find /path/to/public/dir -mtime 0 | mailx -s «report :) » my@mail.com > /dev/null 2>&1 , после этого мне раз в сутки приходит список измененных файлов в директории, анализируя который можно понять, все ли хорошо. Тоже самое можно настроить и для ядра проекта. Данный отчет однажды спас меня, когда произошел взлом одного из моих проектов и по всей фс были накиданы бекдоры — через эти списки мне легко удалось всех их удалить, без поднятия проекта из бекапа. Лично для меня — это теперь незаменимая вещь, лог которой я просматриваю раз в сутки обязательно на наличие подозрительных изменений.
  8. Всю разработку ведите на SVN и на дев-сервере. Не стоит делать правок «наживо» на продакшене. Я считаю оптимальным — настроить SVN так, чтобы при комите данные сразу попадали на дев-сервер, где можно еще раз протестировать сделанные изменения. Это очень удобно для разработки и тестирования. Как правило дев-сервер может быть отдельной машиной, но также это может быть и виртуал-хост на той же машине, где и продакшн. Правда последний вариант не рекомендую, т.к. при тестировании могут быть разные ситуации, вплоть до зацикливания кода и нехорошо, когда это влияет на работу текущих пользователей.

Если еще что-то вспомню важное — допишу.

Успехов!

Mar
14
Пишите документацию к проекту и коду!
1 балл2 балла3 балла4 балла5 баллов (1 голоса, средний балл: 5 из 5)
Loading ... Loading ...

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

С конца февраля я работаю в роли Senior PHP Developer над проектом (довольно большим и амбициозным), который 10 (!) месяцев разрабатывался абсолютно без ведения какой-либо документации (ну разве что диаграмма базы есть) к проекту и коду.

Естественно приходится постоянно пинать напарника, который 10 месяцев это разрабатывал. Он понимает важность написания документации, но такова была воля заказчика, так как ему надо было «быстрее получить результат, чтобы отчитаться перед инвесторами/заказчиками».

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

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

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

Экономьте свое время и время вашей команды уже в самом начале, а не после того, как «припекло».

мая
02
Решил внести свою лепту в развитие опенсорц
1 балл2 балла3 балла4 балла5 баллов (4 голоса, средний балл: 4.25 из 5)
Loading ... Loading ...

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

А вокруг только кучи гавнокода некачественного кода наблюдались.

И как-то вопрос решился сам собой. Для одного моего проекта понадобился чат и я решил поискать какое-то решение для веб-гейта в IRC (мне оно уже стало родное).

Кстати я уже ранее писал об одной доработке для этого проекта, в результате чего мне пришлось «скрестить» Prototype и JQuery.

Я начал «гуглить» и попал вот сюда.

Цитирую:

WebChat 2.0 — ajax & comet web based frontend, php daemon backend

Прямо сразу на душе стало приятно и весело — я нашел то, что искал!

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

В итоге я исправил почти все баги, что были в текущей версии проекта + дописал много своего (приватные сообщения, подсветки, выпадающие меню при клике на нике — эмуляция того, как это сделано в mIRC и кучу всяких остальных вкусностей).

А вот буквально вчера вечером получил письмо от разработчика. Оказывается что он проект не забросил (хотя более полгода ничего не писал и не обновлял проект), а был занят длительное время разработкой проекта «Open Social» для Google.

В итоге общения мы пришли к общему выводу — продолжать совместную разработку данного проекта в свободное время под егидой Open Source.

Публичное демо проекта до моих усовершенствований: http://www.chabotc.nl:2001/chat.html

После моих:
http://chat.kpi.cc/ (на украинском внутри).

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

Если кто-то пользуется или будет пользоваться данным проектом — можете смело теперь писать фидбеки прямо мне!

PS. С майскими праздниками вас, мои читатели!

Nov
05
Разминка мозга для PHP-программистов
1 балл2 балла3 балла4 балла5 баллов (6 голоса, средний балл: 2 из 5)
Loading ... Loading ...

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

Я проходил тест несколько раз – последний результат – 362 балла.

Результат теста по PHP

А какие Ваши результаты?