IT-Expert
  IT-Expert / Веблог / Ключевые слова / Web Development
Авторизация
Логин:
Пароль:


 
Поиск по записям:

Ключевые слова:
Записей в блоге
 за 2015 год
 за 2014 год
 за 2013 год
 за 2012 год
 за 2011 год

     за 2010 год

       за 2009 год
       за 2008 год
       за 2007 год
       за 2006 год
       за 2005 год
      RSS лента Лента новостей IT-Expert 
      Лента подкастов IT-Expert IT-Expert audiopodcasts
      входит в:
      Docker

      Web Development

      включает:
      Microsoft
      SharePoint Portal
      Infopath
      PHP
      Parser
      XSLT
      mod_rewrite
      Javascript
      AJAX

      Слегка доработанный capistrano recipe для получения дампа рабочей базы локально

      13:04, 28 июля 2008 ( )

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

      Тем, кто пользуется для разворачивания приложений capistrano есть хорошая новость: сделать такую вещь весьма несложно.

      Итак, у нас в production FreeBSD 7.0, для разработки пользуемся рабочей станцией с ubuntu 8.04.

      Рецепт capistrano слегка модифицированный взят отсюда: http://programmingishard.com/code/495

      добавляем в config/deploy.rrb

       desc "Load production data into development database"
      task :load_production_data, :roles => :db, :only => { :primary => true } do
        require 'yaml'
       
        database = YAML::load_file('config/database.yml')
       
        filename = "dump.#{Time.now.strftime '%Y-%m-%d_%H:%M:%S'}.sql"
        on_rollback { delete "/tmp/#{filename}" }
       
        run "mysqldump -u #{database['production']['username']} --password=#{database['production']['password']} #{database['production']['database']} > /tmp/#{filename}" do |channel, stream, data|
          puts data
        end
        get "/tmp/#{filename}", filename
      #  exec "/tmp/#{filename}"
        exec "mysql -u #{database['development']['username']} --password=#{database['development']['password']} #{database['development']['database']} < #{filename}; rm -f #{filename}"
      end

      после чего пользуемся:

      cap load_production_data

      и вуаля, свежая копия базы с production у нас в development!

       

      О, этот странный weave

      11:24, 24 июля 2008 ( )

      На замену безвременно ушедшему плагину Google Sync Google предлагает установить бету плагина Mozilla Weave.

      Установил. Вот они, радости браузерного бытия: в отличие от безупречно работающего sync weave нагло тормозит, выполняя синхронизацию почему-то ПОСЛЕ закрытия браузера. Т.е. закрываешь браузер, и еще в течение нескольких минут наблюдаешь окошко синхронизации, которое лично я в 70% случаев просто закрываю, ибо некогда. В последних апдейтах разработчики, видимо осознав пикантность этого дела, добавили индикаторы прогресса, дабы человек понимал, что что-то происходит, а не тупо висит.

      На линуке же mozilla weave после некоторого времени вообще отвалился ссылаясь на ошибку криптосистемы.

      Google Sync, кстати выпустили в свободное плавание открыв код. Но кому же доверить мои сексуальные данные, пароли к формам? Не думаю что решусь это сделать, разве что проинсталить sync на свой сервер.

      Sync! Вернись, все простим :)

       

      NGINX на новый colo

      12:43, 17 июля 2008 ( )

      С nginx мы как-то сразу не подружились.

      Синтаксис другой, для запуска php требуются велосипеды в виде стартующих демоны скриптов. Parser3 не запустится, mod_rewrite странноват.

      Вывод: nginx рулит под нагрузкой, т.е. там где один сайт размазан и разбалансирован по куче серверов.

      На виртуальный хостинг nginx не годится :( Опыт не удался.

      И обратно приходим к апачу 2.x

      Ах да, может кому пригодятся найденные и подпиленные rc-style скрипт запуска php процессов в Freebsd.

      ставил php5 из портов и nginx

      ----------------- /usr/local/etc/rc.d/spawn.sh -------------------------

      #!/bin/sh
      # Define these fcgiphp_* variables in one of these files:
      #       /etc/rc.conf
      #       /etc/rc.conf.local
      #
      # DO NOT CHANGE THESE DEFAULT VALUES HERE
      #
      fcgiphp_enable=${fcgiphp_enable-"NO"}
      fcgiphp_flags=${fcgiphp_flags-"-s /tmp/php-fcgi.sock -u www -g www"}

      . /etc/rc.subr

      name="fcgiphp"
      rcvar=`set_rcvar`
      command="/usr/local/bin/spawn-fcgi"
      fcgi_server="/usr/local/bin/php-cgi"
      fcgi_server_short="php-cgi"

      load_rc_config $name

      start_cmd="echo \"Starting ${name}.\"; ${command} -f ${fcgi_server} ${fcgiphp_fl                                                                             ags}"
      stop_cmd="echo \"Stopping ${name}.\"; while [ 1 ]; do killall ${fcgi_server_shor 

       

      и в самом rc.conf 

      fcgiphp_enable="YES"

       

      в nginx.conf

       location ~ \.php$ {
                      fastcgi_pass   unix:/tmp/php-fcgi.sock;
                      fastcgi_index  index.php;
                      fastcgi_param  SCRIPT_FILENAME  /www/site/htdocs$fastcgi_script_name;
                      include        fastcgi_params;
                      }
       

       

      Сайт, который построил Джек

      00:14, 20 мая 2008 ( )

      Строительство сайта.
      Как объяснить клиенту что такое сайт и каковы этапы его разработки? Среднестатистическому пользователю достаточно сложно понять технические нюансы разработки сайта, как и на что влияют принимаемые условия, и какими должны быть соглашения между разработчиком и клиентом.
      А предложите клиенту относиться к разработке сайта точно также как к постройке дома. Каким должен быть сайт? А каким должен быть дом? В любом случае у клиента уже должно быть видение, что должно быть в доме(сайте), количество этажей, окон, комнат - это структура сайта. Дом может быть как недорогим одноэтажным(сайты-визитки), так и настоящими очень дорогими зАмками с подземными входами.

        читать далее >>

      Переезд сайта с домена it-expert.com.ua на nexus.org.ua

      11:30, 8 ферваля 2008 ( )

      Внимание,

      в связи с переездом домена сайт http://it-expert.com.ua теперь будет расположен по адресу http://nexus.org.ua.

      Автоматический редирект с сохранением ссылок выполнен следующим образом:

      1. в апаче создаем хост nexus.org.ua, где и прописываем нужного юзера в suexec.
      2. каталог /www/it-expert.com.ua на сервере переименовываем в /www/nexus.org.ua, переназначаем права chown -R nexus:suwww nexus.org.ua.
      3. создаем /www/it-expert.com.ua и структуру каталогов для апача, например, htdocs. chown -R it-expert.com.ua:suwww it-expert.com.ua
      4. в /www/it-expert.com.ua/htdocs создаем .htaccess, в который вписываем следущее:


      RewriteEngine On
      RewriteBase /
      RewriteRule (.*) http://nexus.org.ua/$1 [R=permanent,L]

      И вуаля, все работает со старыми ссылками на новом домене nexus.org.ua.

      Ну а через некоторое время по адресу http://it-expert.com.ua будет находится сайт нашего предприятия по предоставлению услуг IT аутсорсинга.

      P.S. А вот и статья об отношении поисковиков к 301 редиректу с сайта. 

       

      +1 в сайты на ROR

      11:09, 3 ферваля 2008 ( )

      Тихо и незаметно вызрел еще один сайт на Ruby on Rails. 

      Сей сайт находится по адресу http://nxt.com.ua

      Rails 2.0, пользует плагины acts_as_tree, in_place_editing, restful_authentication, tiny_mce 

       

       

      Relative urls в tiny_mce

      17:04, 21 января 2008 ( )

      От читателя поступил вопрос, как сделать так, что бы в браузере изображений url были бы не вида ../../images, а /images ?

      Очень просто, достаточно добавить в вызов tiny_mce  в контроллере такие параметры:

      :relative_urls=>false,
      :convert_urls=>true
      и ваши url будут вида /images  и т.д.
      хотя, при правильной разработке, этого не требуется. 

      Rails: ActiveSearch plugin

      11:32, 27 декабря 2007 ( )

      Плагин ActiveSearch просто чудо какое-то, большое человеческое спасибо julik.nl за его разработку.

      Штука сия облегчает и без того легкую жизнь ;-) rails-девелопера при разработке простейшего поиска по записям базы.

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

      Например, мой сайт содержит весьма небольшой объем данных, и, как рекомендует Julik, при объеме до 500 записей целесообразно использовать простейший индексатор ActiveSearch::LikeIndexer.

      Для того чтобы поиск заработал необходимо:

      1. Установить плагин:

      cd project

      ruby script/plugin install http://julik.textdriven.com/svn/tools/rails_plugins/simple_search/ 

      2. Добавить поле searchable к таблицам, по которым вы собираетесь искать. Целессобразно сделать это через миграцию:

        def self.up
          add_column("products","searchable", :text)
          add_column("categories","searchable", :text)
         
       end 

      def self.down   
          remove_column("products","searchable")
          remove_column("categories","searchable")
        end

      3. В моделях Product и Category добавляем указание к индексированию:

         indexes_columns :title, :short_description, :long_description

      4.  запустить начальное индексирование:

      консоль rais:

      ruby script/console

      в консоли

      Products.indexers[0].rebuild!

      Category.indexers[0].rebuild!

      Все, теперь мы можем достаточно быстро искать по записям:


      @found_categories = Category.indexers[0].query(@query)
      @found_products = Product.indexers[0].query(@query)

       Можно искать и по Category.find_using_term("query"), как в документации указано, но, видимо такое использование предполагает использование сразу нескольких индексаторов.

       

      Таким образом плагин может быть использован с:

      1. индексом в поле searchable в каждой модели, по которой будет производиться поиск.

      2. индексом в отдельной таблице

      3. индексом через плагин ferret 

      способы индексации расположены в порядке увеличения количества данных для поиска.

      Удобно, Julik, u made my day. 

       

      Решаем проблему form-post-spam

      12:42, 19 октября 2007 ( )

      Bit пишет:

      В последнее время начал замечать следующую проблему:на сайте возникают ошибки из-за заполнения форм непредусмотренными данными. Например в поле со смещением страницы помещают www.viagra.com и т.п.причем спамом заполняются все доступные поля формы на странице + возможные параметры в адресе!
      Видимо ставка таких form-spam-ботов на то, что хоть какие-нибудь данные занесутся в базу, и будут в дальнейшем отображаться на атакуемом сайте! Тем самым поднимая релевантность для поисковиков раскручиваемого ресурса.
      Весьма массовый характер такого спама действительно может иметь большой успех.
      Благо что бороться с подобными вещами довольно просто: достаточно иметь систему тестов переменных на нужный тип. На своих сайтах я поставил такую защиту, и при несоответствии типа переменной в поле формы отображается пустой экран. Тем самым существенно снижается нагрузка сервера вышеуказанными спам-ботами.

       

      Quick win32 setup emacs for Ruby on Rails development

      18:34, 2 июля 2007 ( )

      По следам заметки Дмитрия Галинского мной был настроен emacs для работы с Ruby on Rails. Пока что по набору фич я считаю эту связку одной из самых мощных для разработки на ruby on rails.


      Потому что (перечислю то, что было важно для меня):

      1. Мощный механизм snippets, все как у textmate - признанного лидера в сниппетах ;)
      2. Подсветка синтаксиса.
      3. Быстрый переход по "местам" проекта - views, layouts, controllers, tests.
      4. Быстрый переход по контексту (из контроллера во вьюшку, из вьюшки в партиал).
      5. Быстрый запуск migration, rake, generate.
      6. Запуск-перезапуск веб-сервера (Webrick, Mongrel, Lighttpd).
      7. Работа с vestion control (для меня - SVN).
      8. Контекстно вызывать документацю Rails (для Win32 можно работать даже с CHM вариантом)
      9. Автоматическое выделение ошибок при наборе кода.

      И помимо вышеперечисленного emacs несомненно является мегаредактором по количеству приемов работы с текстом. 

      Ну очень-очень бы хотелось видеть встроенную поддержку RSpec.

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

      Для одного плагина требовалось сказать и установить пяток плагинов, для другого плагина требовалось установить еще три плагина. Весьма непростой оказалась сборка всего этого воедино.

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

      Итак.

      Качаем emacs и распаковываем в любую удобную для нас директорию. Для меня показалась удобной C:\Program Files\emacs22-1.

       Качаем  этот архив и распаковываем в c:\Documents and Settings\myuser\Application Data. Понятно, что myuser - тот пользователь, под которым вы сейчас в системе.

      Свои плагины emacs будет искать именно там, в c:\Documents and Settings\myuser\Application Data\.emacs.d, а сам файл конфигурации c:\Documents and Settings\myuser\Application Data\.emacs

      После распаковки запускаем emacs командой c:\program files\emacs-22.1\bin\runemacs.exe, успешным запуском будем считать окно emacs без errors и warnings.

      Для начала работы нажмем Alt+x, в приглашении напишем ecb-activate [return], после чего должны загрузиться навигаторы по каталогам, файлам и по коду. Если в навигаторе по директориям у вас пусто - значит необходимо сконфигурировать ecb и добавить ваш каталог с проектами в конфигурацию: Menu->ECB->Preferences->Directories.

      Все, далее рекомендую ознакомиться со статьей Дмитрия, изучить горячие клавиши навигации по коду и пройти tutorial на родном языке Ctrl+h t по базовым понятиям emacs.

       

       
      страницы: 1
       2 
      3 4 5 6 7 ... >|
      © Максим Прокопов 2005-2016 О сервере