Pull to refresh
137
0
Дмитрий Беляев @CuamckuyKot

веб-разработчик

Send message

Несколько советов для PHP-разработчиков

Reading time4 min
Views8K
image Хочу опубликовать небольшой сборник советов для современных PHP-разработчиков. Я умышленно не связываю их с теми или иными фреймворками, библиотеками и тп. Надеюсь, что мои советы помогут кому-то лучше понять PHP, научиться лучше его использовать. Некоторые из них могут быть не специфичны для PHP, но для программирования в общем.
Читать дальше →

Элементы DSL на PHP: как сделать библиотечные API удобнее в использовании

Reading time8 min
Views8.5K
При разработке нашего внутреннего фреймворка (к сожалению, PHP вообще очень способствует постоянному переизобретению велосипеда), мы старались таким образом проектировать интерфейсы библиотечных модулей, чтобы клиентский код, использующий эти интерфейсы, получался простым, лаконичным и читаемым.

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

Читать дальше →

Open API

Reading time1 min
Views65K
Команда «ВКонтакте» так и не ушла на выходные, чтобы вслед за Merchant API успеть запустить еще один важный сервис для разработчиков — Open API. Благодаря VK Open API, любые внешние сайты теперь имеют возможность производить у себя авторизацию наших пользователей.



Читать дальше →

Redis — продвинутое key-value хранилище. Опыт применения в нагруженных проектах

Reading time2 min
Views7.8K
Мы уже пол года успешно используем Redis в своих highload проектах. За это время было выработано много удачных решений на Redis для задач, с которыми сталкиваются разработчики большинства крупных проектов. Примерами этих решений я и хотел бы поделиться на предстоящей DEVCONF, чтобы на практике показать возможности, преимущества и слабые стороны Redis.
Содержание доклада...

Zend_Db_Table_Select Dynamic Finder

Reading time4 min
Views1.3K
Привет, Хабр! Dynamic Finder

Написал класс, использующий Zend_Db_Table_Select и позволяющий использовать Dynamic Finder в моделях в проектах на Zend Framework. Статья о том, что этот класс умеет, а также ссылка на исходный код предлагаются вашему вниманию.

Что это, зачем?



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

Dynamic Finder позволяет избежать написания ряда методов вида getById(…), getByLoginAndPassword(…), getAllByCountry(…) внутри модели в виде построения полноценных SQL-запросов и выборок. Вместо этого, в данной реализации достаточно подключить Dynamic Finder к модели должным образом, и, далее, программист может использовать эти методы модели непосредственно в контроллере или представлении. При этом реально эти методы в модели вообще не существуют.

Таким образом, экономится время работы программиста.

Dynamic Finder уже был реализован в том или ином виде в различных библиотеках и фреймворках, в частности, в Ruby on Rails.

В данной реализации Dynamic Finder является надстройкой, использующей Zend_Db_Select / Zend_Db_Table_Select, и предназначен для выборок из только одной таблицы.
Читать дальше →

Версионность и история данных

Reading time5 min
Views142K
При разработке баз данных зачастую требуется обеспечить поддержку версионности и хранения истории объектов. Например, у работника может изменяться должность, у должности в свою очередь может меняться оклад — в многомерном моделировании это называется Slowly changing dimensions(далее SCD) — редко изменяющиеся измерения, то есть измерения, не ключевые атрибуты которых имеют тенденцию со временем изменяться. Всего существует 6 основных типов(методов) SCD, которые определяют как история изменений может быть отражена в модели.

Подробнее...

Новое в Payoneer (бизнес счет) или сам себе режиссер

Reading time3 min
Views4.6K
imageДа, это свершилось! О чем собственно речь: в системе Payoneer появилась возможность получить бизнес-счет. Пока эта фича в закрытом бета-тестировании, но если Вы уже являетесь обладателем карты Payoneer, и на нее более менее регулярно приходят платежи от партнеров, то никакой проблемы с получением расширенного функционала для Вашего счета не возникнет.
Ниже я подробно со скриншотами покажу и объясню, как это работает и опишу, зачем мне это надо. Поехали.
Читать дальше →

Реализация и универсализация i18n в CMS/CMF

Reading time4 min
Views3.9K

Предисловие


Столкнулся с насущной проблемой, которая автоматически становится задачей:
Как реализовать универсальный механизм перевода контента сайта, который удовлетворял бы потребности как маленьких сайтов, так и больших порталов?


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

Мои варианты решения под катом.

Небо видело всё

Reading time1 min
Views2.2K
К вашему вниманию трейлер постапокалиптического короткометражного фильма, снимаемого независимой съемочной группой, без чьей либо поддержки и финансирования.

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

Agiledays в Санкт-Петербурге, 17 сентября 2010 года

Reading time3 min
Views3.4K
image
Разговоров про Agile так же много, как и книг, но вопрос, как сделать разработку гибкой и эффективной в конкретной компании, порождает кучу дискуссий. Как показывает практика и предыдущие посты на Хабре об Agiledays и встречах сообщества Agilerussia, интерес к данной теме не угасает. Именно поэтому мы продолжаем делать конференции, связанные c вопросами организации процессов разработки.

Можно поздравить жителей северной столицы — Agiledays добрался и до их города.

Я думаю, рекламировать Agiledays не имеет смысла. Скажу только, что это уже третий раз за последний год, когда мы собираемся вместе (Москва, Екатеринбург), чтобы обсудить современные подходы управления разработкой ПО.

Когда?


Произойдет это все в одной из петербургских гостиниц 17 сентября.
Будет несколько потоков: один или два основных потока с докладами и параллельные сессии мастер-классов и  open space’ы.

Поводов собраться у нас более чем достаточно


К нам на конференцию приезжают:
Читать дальше →

Онлайн-мониторинг транспорта своими руками

Reading time4 min
Views96K

Всегда нравилась идея онлайн-мониторинга чего-либо на карте. И вот представилась возможность сделать нечто подобное.
Процессом и результатом разработки хочу поделиться с сообществом.
Читать дальше →

Генерация web-шрифтов

Reading time1 min
Views5.3K
Ради интереса, прошелся поиском по хабру, и обнаружил, что тут не освещен один очень полезный сервис: http://www.fontsquirrel.com
Пожалуй, это самый удобный сервис такого рода, создающий на выходе html-страницу с подключенными шрифтами в разных форматах, готовыми font-face в css и демо-текстом.
При этом есть масса настроек по кастомизации шрифтов во время конвертирования.
В частности, можно уменьшить их вес, убрав часть символов или оптимизировав кривые. Так же он умеет хинтовать шрифты и кодировать их в base64. В общем, есть всевозможные плюшки.

Основатели Parallels, Acronis и Almaz создали фонд посевного инвестирования

Reading time1 min
Views1.5K
Председатель совета директоров компаний Parallels и Acronis Сергей Белоусов и основатель фонда Almaz Capital Partners Александр Галицкий создали фонд для инвестиций в хайтек-стартапы ранней стадии развития. Фонд получил название Runa Capital. Размер фонда – около $30 млн.

Читать дальше →

Cheat Sheet обои для рабочего стола разработчика Drupal

Reading time1 min
Views1.9K
Интернет-журнал Smashingmagazine.com опубликовал «шпаргалки» для тех, кто работает с Drupal. Отличие этих чит-листов от других — это еще и обои для рабочего стола.

Теперь «переменные» основных шаблонов Drupal могут быть всегда перед вами.
  • Page.tpl.php
  • Node.tpl.php
  • Comment.tpl.php
  • Block.tpl.php
  • Box.tpl.php

image

Загрузка файлов через Form API

Reading time5 min
Views10K

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

Чтобы было интереснее, опишу на создании модуля для random'ного отображения картинок.

Задача
Задачей является именно реализация возможности закачивать файлы в Drupal через Form API. А описанный ниже пример, является лишь примером этой реализации.
Читать дальше →

Пишем простейший торрент трекер на php

Reading time5 min
Views28K
Обмен файлами всегда привлекал людей, для этого собственно и был изобретен протокол BitTorrent.

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

Давайте рассмотрим что из себя представляет трекер.
Читать дальше →

Работа с CCK Filefield. Вставка и отображение Flash

Reading time13 min
Views1.9K
imageИногда бывает необходимо отобразить на сайте файл не просто ссылкой, а как-нибудь иначе. Видео и аудиофайлы хочется отображать плеером, с возможностью просмотра (прослушивания), swf — сразу отображать на странице. Для прикрепления файлов к материалам есть отличный модуль Filefield, однако выбор форматтеров для него невелик. Файл можно отобразить просто ссылкой. Немного расширяют его функционал другие модули, например Imagefield позволяет отображать картинки. Я попытаюсь доступно объяснить как добавить возможность отображения Flash контента на примере модуля SWFfield.

Далее будет много кода, мало картинок и вообще всё скучно и уныло...
Читать дальше →

Полезные и интересные модули для Drupal 6.xx + Советы и трюки (Часть III)

Reading time2 min
Views2.1K
Продолжаем начатое, к тому же за время, прошедшее с последнего обзора, накопилось немало интересных модулей.

Для тех, кто пропустил начало, вот ссылки на предыдущие обзоры: часть I и часть II
Читать дальше →

Кеширование блоков с помощью nginx

Reading time6 min
Views15K
nginx + SSIМногим разработчикам знакома ситуация когда кешировать страницы сайта, скажем, на 5-10 минут нельзя всего из-за одного небольшого блочка, актуальность которого нужно поддерживать если не в реальном времени, то с временем «старения» не больше 5-10 секунд. При этом посещаемость сайта продолжает расти, растет время генерации страниц и c этим надо что-то делать…
  • Вариант решения 1: Подкрутить то, до чего не доходили руки последнее полгода. Все Вас поймут и передвинут сроки на другие задачи. Вы будете в роли «Супермена» один спасать сайт от непомерной нагрузки, решая проблему «бесплатно» (без доп. вливаний в оборудование). Вам может пригодиться статья «Тюнинг nginx».
     
  • Вариант решения 2: Улучшить техническую базу (докупить мозгов на сервер, улучшить дисковую систему, поставить под БД отдельный сервер). В принципе проблема не решена, а скорее отложена. Теперь у Вас есть время «окопаться» и подготовиться ко второй волне наплыва нагрузки, она будет больше и накроет сильнее.
     
  • Вариант решения 3: Ваш вариант, о котором я, вероятно, узнаю из комментариев.
     
Позвольте предложить и мне проверенное и относительно простое решение на базе одной из старейших технологий в Web-разработке.
Читать дальше →

Тюнинг nginx

Reading time8 min
Views97K
Статья написана по материалам моего доклада на CodeCamp 2009.

Для многих из нас настает тот долгожданный день, когда аудитория сайта начинает стремительно расти. Каждое утро мы, затая дыхание, смотрим на графики google analitycs и расплываемся в улыбке, когда взят рубеж в очередную тысячу посетителей в день. Как правило, рост посещаемости не совпадает с ростом технической базы и сайт начинает тормозить. Тут в игру вступает сисадмин...

У любого проекта всегда есть что оптимизировать: можно почитать советы по оптимизации на webo.in, установить eaccelerator, memcache, проиндексировать поисковые поля в базе данных. Я предполагаю, что все это уже проделано, а сайт по прежнему тормозит.

Пришло время оптимизировать nginx...

Читать дальше →

Information

Rating
Does not participate
Location
Санкт-Петербург и область, Россия
Date of birth
Registered
Activity