Search
Write a publication
Pull to refresh
1
0
Andrew @Bonch

User

Send message

Capistrano и php

Reading time8 min
Views32K
image Всем привет. Сегодня я хотел бы ещё раз поговорить о замечательном deploy-ере Capistrano.

Напомню, что Capistrano — это Open Source-ный инструмент для выполнения скриптов на нескольких серверах, который в основном используется для web приложений. Он позволяет автоматизировать процесс развертывания новой версии на одном или нескольких web серверах и включает поддержку таких задач, как например изменение базы данных.

Capistrano написан на Ruby и является «модулем» (или компонентном, не знаю как лучше) фреймворка Ruby on Rails.

Данный топик по большей части является переводом туториала со страницы проекта на github-е с некоторыми дополнениями, изменениями и сокращениями специфичными для php (или для «не RoR»). Здесь не будут рассматриваться вопросы работы с несколькими серверами и базой данных, это всего лишь небольшое пособие для начинающих.

Итак, допустим на нашем локальном компьютере в паке /path/deploy/from находится приложение написанное на языке php. У этого приложения есть git репозиторий находящийся по адресу example.net/project.git с актуальным кодом. Также у нас есть хостинг по адресу example.com с ssh доступом и папкой /path/deploy/to куда мы собираемся залить наши файлы. Мы не хотим постоянно возиться с ftp клиентом и решили потратить несколько часов для того, чтобы разобраться в деплойере capistrano. Давайте приступим.
Читать дальше →

Watir: простой парсинг сложных сайтов

Reading time4 min
Views51K
imageКаждый, кто пишет парсеры, знает, что можно распарсить сто сайтов, а на сто-первом застрять на несколько дней. Структура очередного отмороженного сайта может быть сколь угодно сложной, и, когда дело касается сжатых javascript-ов и ajax-запросов, расшифровать их и извлечь информацию с помощью обычного curl-а и регекспов становится дороже самой информации.

Грубо говоря, проблема в том, что в браузере работает javascript, а на сервере его нет. Нужно либо писать интерпретатор js на одном из серверных языков (jParser и jTokenizer), либо ставить на сервер браузер, посылать в него запросы и вытаскивать итоговое dom-дерево.

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

Сейчас появились более продвинутые средства — xulrunner (crowbar) и watir. Первый — безголовый firefox. У crowbar есть даже ff-плагин для визуального выделения нужных данных, который генерит специальный парсер-js-код, однако там не поддерживаются cookies, а допиливать неохота. Watir позиционируется разработчиками как средство отладки, но мы будем его использовать по прямому назначению и в качестве примера вытащим какие-нибудь данные с сайта travelocity.com.

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

База всех населенных пунктов и регионов России

Reading time2 min
Views7.6K
Мне для одного проекта понадобилось создать базу географических наименований России. Из всех источников подобной информации наиболее авторитетными мне показались 2:

Последняя показалась мне более простой, полной и менее избыточной, хотя наименований населенных пунктов там в четыре раза больше. Я выбрал ОКАТО, поскольку нашел хотя бы какое-то описание базы на википедии, а в почтовых индексах присутствовала совсем непонятная информация. В этой базе предстояло отсеять ненужные административные единицы от требуемых мне географических.
Читать дальше →

Видео с пользовательской конференции по Sphinx (~8часов)

Reading time1 min
Views1.1K
Поскольку новость не пробежала на Хабре, но однозначно (с) будет интересна многим:

«Видео с пользовательской конференции по Sphinx (~8часов)
http://devconf.tv/user/sphinx».

Обзор свежих материалов, октябрь 2010

Reading time5 min
Views852
Этот материал продолжает серию ежемесячных обзоров свежих статей по теме интерфейсов, новых инструментов и коллекций паттернов, интересных кейсов и исторических рассказов. Из лент нескольких сотен тематических подписок отбирается примерно 5% стоящих публикаций, которыми интересно поделиться. Предыдущие материалы: апрельмай-июньиюльавгуст, сентябрь.


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

После всех асинхронных вызовов

Reading time3 min
Views8.5K
Итак, мы пишем приложение с кучей асинхронных запросов. Нам надо отправить два асинхронных запроса и обработать их результат только после того, как будет получен результат обоих. Например, это могут быть ассинхронные обращение к файлу и запрос к базе, результат которых надо сложить вместе и обработать. Или два аджакс запроса.
Но особенность асинхронных запросов в том, что мы не знаем, какой из них придёт первым, а какой — последним. Решают это разными способами, но я не видел еще красивого и изящного. В топике я расскажу, как я это вижу.
var process = processFsAndDb.after('fs', 'db');

asyncFsAccess( file, process.fs);
asyncDbAccess(query, process.db);

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

Еще раз об архитектуре сетевых демонов

Reading time13 min
Views20K
Во многих статьях, в том числе на хабре, упоминаются и даже описываются разные способы построения архитектуры сетевых сервисов (демонов). При этом мало у кого из авторов есть реальный опыт создания и оптимизации демонов, работающих с десятками тысяч одновременных соединений и/или гигабитным трафиком.

Так как большинство авторов не удосуживается хотя бы залезть в документацию, то обычно в таких статьях вся информация базируется на неких слухах и пересказах слухов. Эти слухи бродят по сети и поражают википедию, хабрахабр и другие уважаемые ресурсы. В результате получаются опусы вроде "Вы наверное шутите, мистер Дал, или почему Node.js" (пунктуация автора сохранена): она, в основном, верная по сути, но изобилует неточностями, содержит ряд фактических ошибок и изображает предмет с какого-то непонятного ракурса.

Мне было сложно пройти мимо статьи, изобилующей фразами вроде «эффективные реализации polling'а на сегодняшний день имеются лишь в *nix-системах» (как будто poll() есть где-то, кроме некоторых *nix). Этот пост начинался как комментарий, разъясняющий уважаемому inikulin ошибки в его статье. В процессе написания оказалось, что проще изложить предмет с самого начала, что я собственно и делаю отдельным постом.
В моем очерке нет срыва покровов или каких-то неизвестных трюков, здесь просто описываются преимущества и недостатки разных подходов человеком, который проверял, как всё это работает на практике в разных операционных системах.
Для желающих просветиться — добро пожаловать под кат.
Читать дальше →

Вы наверное шутите, мистер Дал, или почему Node.js — это венец эволюции веб-серверов

Reading time8 min
Views29K
WTF is Node.js?

Node.js — вещь, вокруг которой сейчас много шума, восторженных отзывов и гневливых выкриков. При этом, по моим наблюдениям, в умах людей закрепилось следующее представление о том что же такое Node.js: «это штука, позволяющая писать на JavaScript на серверной стороне и использующая JavaScript-движок от Google Chrome». Поклонники языка восторженно вздохнули: «Ах! Сбылось!», противники же процедили сквозь зубы: «Ну вот только еще этой ерунды с прототипами и динамической типизацией нам на серверах не хватало!». И дружно побежали ломать копья в блоги и форумы.

При этом многие представители обоих лагерей придерживаются мнения, что Node.js — это эзотерическая игрушка, веселая задумка для переноса языка браузерных сценариев на «новые колеса». Дабы быть до конца честным, признаюсь, что я так же придерживался подобной точки зрения. В один прекрасный момент, я набрался духу и решил «копнуть поглубже». Выяснилось, что создатель Node.js Райан Дал далеко не фанатик, а человек, пытающийся решить реальную проблему. А его творение — не игрушка, а применимое на практике решение.

Так что же такое Node.js?

Генератор миниатюрок из Nginx-а

Reading time3 min
Views27K
Итак, сегодня мы соберём генератор миниатюрок на базе любимого народом веб-сервера — nginx-а. Что примечательно, сделаем мы это без единого гвоздя, т.е. без единой строчки кода, не считая конфигурации.
Что ж приступим...

Вышел Spree 0.30.0

Reading time1 min
Views1.6K
Intro: Spree — мощный и гибкий движок для создания интернет-магазинов, написанный на Ruby on Rails, распространяющийся под лицензией New BSD.

Спустя 5 месяцев напряжённой работы вышел первый релиз Spree, работающий на Ruby on Rails 3.0.

Основные изменения — структурные:
  • расширения стали gem'ами, да и сам движок стал набором из нескольких gem'ов: spree_core, spree_auth, spree_api, spree_dashboard, spree_promotions, spree_sample
  • для настройки конкретного магазина больше не нужен site_extension, теперь все настройки можно сделать прямо в Rails.root
  • из способов развёртывания исключен «Vendor mode», т.к. благодаря Bundler больше нет необходимости клонировать исходники Spree в директорию проекта, даже если Вы используете edge-версию или свой собственный форк

Кроме того улучшена работа с платежами, упрощена работа с надбавками, ну и конечно же сделано множество багфиксов и мелких улучшений.

Официальные примечания к релизу

Электронная почта на сайтах-сервисах

Reading time6 min
Views3.6K
Данный пост касается не только самих писем, но и способов их использования на пользовательских сервисах. При написании статьи я старался уходить от частностей, разве что приводя их в качестве примера.

Затрагиваемые темы:
  1. Зачем нужно посылать электронные письма пользователю
  2. Когда следует посылать почту
  3. От чьего имени должно приходить письмо
  4. Что необходимо писать в письмах
  5. Обработка ответных сообщений

Многобуквие инсайд

Алгоритм популярности пользователя на сайте — «Нестандартный подход к стандартным вещам»

Reading time3 min
Views6K
Все видели на сайтах систему рейтинга статей и материалов. Многие ее даже делали сами, но не каждый делал рейтинг людей на сайте.
В этой статье я поведаю как сделать качественную систему рейтинга для пользователей вашего ресурса.
Читать дальше →

Пять лучших способов завалить IT-стартап. Вредные советы

Reading time6 min
Views6.5K
«Хватит работать на дядю! Пора собрать команду правильных людей и заработать миллион!»

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

Миллиона я, конечно, не заработал, но опыта накопил изрядно — по крайней мере мои нынешние проекты обеспечивают какой-никакой доход.

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

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

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

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

Как создать вебсайт для мобильных устройств

Reading time3 min
Views65K

Стили


User Agent

Один из способов включения стилей для мобильного устройства — это использование User Agent, которую получает сервер от клиента.
Этому может помочь набор скриптов: code.google.com/p/mobileesp, а также сервис от яндекса api.yandex.ru/detector
При работе с User Agent только одна проблема — это постоянно появляющиеся новые User Agent.
Читать дальше →

Почему я работаю на почасовой оплате

Reading time3 min
Views24K
Перевод статьи молодого греческого программиста «Why I bill hourly»

Недавно ко мне обратился мой первый потенциальный клиент, который хотел добавить несколько возможностей в небольшое приложение на Django. Я огласил свою часовую ставку, чем крайне его шокировал — он-то хотел услышать фиксированную цену за нужные ему доработки. Что из этого получилось? Мы работаем вместе, он очень доволен как результатами, так и суммами, которые он на них тратит, а я не поступился своими принципами оплаты. Вот аргументы, которые я использовал в защиту мнения о том, почему почасовая ставка лучше для всех заинтересованных сторон — может быть, они помогут кому-то еще.

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

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

Любой инженер-строитель шарахнется от такого предложения, программисты же в своей жажде заключить сделку прикинут смету, удвоят ее, добавят 30% и будут надеяться на лучшее. Как отвечаю на такой вопрос я?

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

Регистрация своей фирмы собственными руками, туду-лист

Reading time12 min
Views51K
Дисклаймер: описываю только свой личный опыт и мнения автора могут не совпадать с мнением автора. Статья огромная, читать много.

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

Эта статья адресована тем, кто уже «на грани». Она почти лишена философии и туманных ссылок, просто тупо туду-лист. Бери и делай. Намеренно избавляю тебя от объяснений, зачем молодому проекту нужна госрегистрация, такая ли уж это свобода – быть собственником и от куда взять деньги на госпошлину. Статья адресована московским стартаперам, гео-патчи от других городов приветствуются в комментариях.
Будем считать, что с формой собственности определились — это ООО и упрощенка 6%. Если кому нужно ИП – там проще, справишься и без этой статьи.

Для создания фирмы необходимо:

Минимальный реквизит для создания своей компании
Подробности под кОтом.

Обзор книги «Beginning Rails 3»

Reading time6 min
Views1.8K


С самого своего выхода третья версия этого замечательного фреймворка начала активно вытеснять вторую. Это, конечно, прекрасно, но изменений между версиями довольно много, некоторые имеют статус deprecated. А это значит, что одних только знаний второй версии для полноценного использования Rails будет недостаточно.
Именно так я рассуждал, когда начал искать литературу по третьим рельсам. Почему именно литературу, а не документацию? Потому что только осенью я обратил внимание на этот фреймворк, а учиться лучше всё же по книгам (я так считаю). И какова же была моя радость, когда я наткнулся на сайт книги Beginning Rails 3, которая вышла в свет только в сентябре.
Читать дальше →

«Обнаженный бизнес» от Ричарда Брэнсона (в цитатах)

Reading time5 min
Views20K
Ричард Брэнсон - Обнаженный бизнесКогда книгу о бизнесе пишет очередной гуру, консультант или тренер с сомнительным опытом и достижениями, трудно решить как к ней относится. Другое дело прочесть мысли человека за одно поколение ставшего миллиардером, основавшего компанию Virgin в 18 лет (сейчас в нее входит более 200 компаний в 30 странах мира).

Это вторая книга Ричарда Брэнсона, попавшая мне в руки. Первая была «К черту все, берись и делай», она оставила неизгладимый след. Так что сомнений в том, чтобы прочесть и вторую — не было.

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

В последнее время читаю с маркером, выделяя для себя основные, наиболее интересные мысли. Их и предлагаю Вашему вниманию в качестве цитат автора:
  • Суть бизнеса заключается не в соблюдении формальностей, поиске выгоды, практическом результате, получении прибыли, стремлении продать, коммерческой игре или чем-то еще. Бизнес — это прежде всего то, что вам не безразлично.
Читать дальше →

Как создаются платежные системы: часть первая

Reading time5 min
Views19K
Летом 2009 года компания Mail.Ru объявила о запуске новой платежной системы, созданной силами собственных разработчиков (напомним, что до этого технологическую и сервисную поддержку проекта Деньги@Mail.Ru осуществляла платежная система «МаниМэйл»). Новый проект должен был, помимо всего прочего, предложить пользователям портала единый, удобный и безопасный механизм оплаты услуг различных сервисов компании — от развлекательных проектов (Игры, Приложения в Моем Мире) до проектов электронной коммерции (Товары, Недвижимость, Рассылки).
Как все начиналось и что в итоге получилось?

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity