Search
Write a publication
Pull to refresh
8
0
crazyprog @crazyprog

User

Send message

VIM как Rails IDE в стиле TexMate благодаря набору скриптов от Akita

Reading time4 min
Views24K
Это мой первый пост на Хабре, прошу не судить строго :)

В далекие времена, когда я ещё писал на c\c++, я пользовался замечательным редактором VIM, знал минимальный набор vim-фишек, и был в целом доволен его работой. Несколько позже я стал изучать Rails и программировать на Ruby. Я достаточно быстро понял, что базовой поставкой VIM не обойтись, попробовал пару найденных в интернете руководств по доведению VIM до уровня полноценной IDE, наткнулся на подводные камни, и быстро сдался. В тот момент мне хотелось изучать в первую очередь именно Rails, а не VIM.
Немного помытарился с разными другими редакторами и IDE типа Aptana, Geany, Eclipse и т.п. пока не наткнулся на полностью, на тот момент, удовлетворящий меня Netbeans. О Netbeans можно писать, да и написано, немало хорошего. Как IDE для разработки на Ruby Netbeans просто прекрасен. Я и сейчас использую его в случае, если работаю в Windows. Но однажды я оказался на длительное время не за своим, а за чужим ноутбуком, на котором уже стоял VIM, в месте, где интернет-трафик был сильно ограничен. А Таксовик требовал срочной доработки. Выкачивать ~60мб Netbeans и ещё n-ное количество мб на плагины было не этично, я и снова начал освоение VIM. И к моей радости довольно-таки быстро наткнулся на набор скриптов от бразильца Akita on Rails и скринкаст в придачу. Он, как я понял, собрал кучу полезных плагинов вместе и чуть-чуть дописал конфиг. Всё, о чём будет говориться ниже верно не только для Ruby, но и для других языков типа C, PHP и прочее, готовые наборы сниппетов (о них далее) в комплекте есть и для них.

Основные фишки этого набора скриптов


  1. FuzzyFinderTexMate — очень удобный поиск файлов в проекте по ctrl+f. К примеру, чтобы найти файл config\routes.rb надо набрать rorb. Или даже и того меньше :)
  2. Набор сниппетов из TexMate и некоторое количество своих (в смысле, NERDSnippets). Очень удобно, набираешь vf + TAB — получаешь validates_format_of :<+attribute+>, :with => /<+regex+>/<+, :on => :<+create+>, :message => "<+is invalid+>"+>, где по TAB скачешь между параметрами, заключёнными в <+...+>. Сниппеты есть для всего, чего угодно, их полный список можно посмотреть в папке snippets в директории с файлами кофигурации VIM.
  3. Дерево проекта, реализованное с помощью NERDTree. Доступно по \+p (обратный слеш и символ p). Переключение с дерева проекта в окно редактирования кода и обратно осуществляется по ctrl+w и стрелка (куда будет стрелка, туда курсор и перескочет), в самом же дереве o — открыть\закрыть папку\файл, R (shift+r) — обновить дерево и по вопросу(?) довольно внятная справка по горячим клавишам.
  4. Подсветка кода (rb, html, rjs, js, erb и т.п.)
  5. Возможности из rails.vim типа перехода по gf на файл модели, если курсор стоит на вызове, например, конструктора. Всяческие :Rake, :Rgenerate и т.п.
  6. Ну и все возможности и навороты VIM, за которые его так любят :)


А вот и скринкаст от автора на эту тему (рекомендую к просмотру):


Перестало работать. Ссылка на другом видеохостинге: blip.tv/file/3765175

Надеюсь, вы уже потираете руки, потому что vim — это очень быстрый, удобный, расширяемый и очень не требовательный к ресурсам компьютера редактор.
Как же всего этого добиться?

Кунг-фу: стиль JavaScript

Reading time5 min
Views2.2K
Эта статья начиналась как комментарий к другой статье на habrahabr. После написания первого листа, я понял, комментарий слишком обширный получился :). Я решил написать, потому что хочу заострить внимание на моментах, которые, на мой взгляд, были упущены. Ограничение этой статьи — моя цель изложить всё максимально доступно, не ищите здесь математической точности в определении терминов, и всё же я прилагаю ссылки где математики найдут высококлассные понятные только им определения :)

Наверно каждую статью по JS принято начинать со слов о его недооцененности :) Это правда :) Когда я пару лет назад говорил о том что JS мой любимый язык на меня смотрели, как на школьника-переростка, который только что написал свою первую страницу на HTML, а те кто меня знал, как на гроссмейстера, который сказал что он только и знает как фигуры ходят :). Таких людей не стало намного меньше, увы :(

Итак, ...

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

Reading time3 min
Views1.3K
В декабре на Хабре была хорошая статья, о полиморфных связях в Рельсах. Вот она. Перед тем как читать дальше, пожалуйста ознакомьтесь с ней.
Однако, у автора статьи осталось несколько неотвеченных вопросов. Вот на них то мы сегодня и найдем ответы.
Читать дальше

Межсайтовая авторизация 2

Reading time2 min
Views28K
По итогам поста, сделанного в июле 2009 и продолжительным испытаниям, мы пришли к простой и оптимальной для нас схеме межсайтовой авторизации.
Спешу поделиться с общественностью

jQuery 1.4: 15 новых возможностей

Reading time7 min
Views6.5K
14 января появился на свет jQuery 1.4. Этот релиз содержит множество новых возможностей и улучшений. В этой статье рассматриваются те, которые вы, возможно, найдёте самыми полезными.
Читать дальше →

Coffeescript — Javascript в силе Ruby

Reading time2 min
Views22K
CoffeeScript — язык, чтобы писать на JavaScript с более удобным синтаксисом.

Краткий пример на CoffeeScript (с jQuery):
jQuery($ =>
 notified: false
 $('a').click( =>
  if notified
   true
  else
   $('.alert').show()
   false..
 ).
)

Этот код будет транслирован в:
jQuery(function($) {
  var notified = false;
  $('a').click(function() {
    if (notified) {
      return true;
    } else {
      $('.alert').show()
      return false;
    }
  })
})

Но обо всём по порядку

Немного советов начинающим и не очень

Reading time6 min
Views4.8K
image

Немного воды
Разрешите представиться — фрилансер-дизайнер с опытом работы чистым фрилансером всего полтора месяца.
Профессиональный опыт работы в вебе — более 6 лет. Именно эти шесть лет позволили мне сейчас стать тем, кем являюсь и окончательно выбрать вектор своего движения.

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

Но, как оказалось, я ошибался. Потому-то как минимум 50% фрилансеров просто не понимают каких-то прописных истин, о которых я и хочу поведать далее.
Читать дальше →

Cache ресурс для Zend Framework

Reading time3 min
Views2.6K
Всем привет. Сразу хочу сказать что статья расcчитана для тех, кто уже хорошо знаком с данным фреймворком. В новых версиях Zend Framework придумана концепция инициализации компонентов приложения через плагины ресурсов. В стандартной поставке имеется достаточное их количество, но одного я так и не нашел. Таковым является кэш. Побродив по просторам Интернета и не найдя аналогов, я решил написать свой. И так, приступим.

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

Ежедневный Git

Reading time3 min
Views98K
Уже были статьи про основы гита (0, 1, 2), были и статьи про внутреннее устройство репозитория. Сегодня поговорим, как простому смертному работать с гитом на автопилоте и не морочить себе голову.

Во-первых, шорткаты (в порядке убывания популярности):

alias gst='git-status'
alias ga='git-add'
alias gc='git-commit -m'
alias gp='git pull && git push'
alias gull='git pull'
alias gush='git push'
alias gb='git-branch'
alias gco='git-checkout'
alias gd='git-diff'

Во-вторых, отображение текущей ветки в командной строке:
export PS1='`__git_ps1 "%s"` \w \$ '

Выглядит так:
lazy-args-in-futures ~/Work/io/oleganza-io.git $

(Как установить: ericgoodwin.com/2008/4/10/auto-completion-with-git)

Типичный поток работы в одной ветке
Читать дальше →

ХХ полезных советов для пользователей Git среднего уровня. Часть 2

Reading time4 min
Views26K
Это продолжение статьи ХХ полезных советов для пользователей Git среднего уровня

Про reset, незапланированно снова про альясы, про замечательный filter-branch, про мерджи и разрешение конфликтов с помощью rerere, про rebase (интерактивный и не очень) и, в завершение, про обслуживание своей гитницы.

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

Nested Grids с помощью ExtJS 3.0

Reading time6 min
Views3.2K

Введение



image

Суть проблемы, рассматриваемой в данной статье заключается в том, что Grid объекты библиотеки ExtJS не предназначены для использования в контексте вложенности. В общем случае, такая задача редко становится перед разработчиком. И все же, иногда, как, например, в моем случае, с ней приходится сталкиваться. Ниже я попытаюсь поделиться накопленным опытом, и, возможно, окажу тем самым кому-нибудь неоценимую помощь, на что искренне надеюсь :). Итак, в добрый путь…

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

«Карманный» Firefox со вкусом Яндекса

Reading time1 min
Views5.3K

Мы успешно сотрудничаем с компанией Mozilla уже второй год. В 2008 году был запущен Firefox со вкусом Яндекса. А сегодня мы представляем новую, переносную, версию Firefox.


Mozilla Firefox, Portable Edition – это программа для тех, кто часто оказывается за чужим компьютером и хочет видеть привычно настроенный браузер. Переносная версия дает возможность пользоваться этим браузером в тех местах, где системные администраторы не разрешают его установить, например, на офисный или университетский компьютер. Также этот браузер будет полезен тем людям, которые используют один компьютер в доме на несколько человек, чтобы личные данные были доступны только одному человеку (то есть вам).

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

Обзор NoSQL систем

Reading time5 min
Views56K
Беспрецедентные объемы данных заставляют разработчиков и бизнес приглядываться к альтернативам реляционных баз данных, используемым вот уже более тридцати лет. В совокупности все эти технологии известны как «NoSQL базы данных».


Основной проблемой является то, что реляционные базы данных не могут справляться с нагрузками актуальными в наше время (мы говорим о high-load проектах). Есть три конкретные проблемных области:
  • горизонтальное масштабирование при больших объемах данных, например как в случае Digg (3 терабайта для зеленых значков, отображаемых, если ваш друг сделал dugg на статье) или Facebook (50 терабайт для поиска по входящим сообщениям) или eBay (2 петабайта в целом)
  • производительность каждого отдельного сервера
  • не гибкий дизайн логической структуры.
Читать дальше →

Безопасность при межпроектном взаимодействии

Reading time15 min
Views5.4K

Введение


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

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

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

Защита (или отсутствие защиты) от различных типов атак демонстрируется на примере протоколов популярных сегодня систем: Assist, Cyberplat, WebMoney, ChronoPay, Robokassa и PayPal (платёжные системы), а также OpenID, OpenAuth, OAuth (децентрализованная аутентификация).
Читать дальше →

Aptana Cloud — наш ответ Google App Engine и Amazon-у!

Reading time3 min
Views1.5K
Не так давно поисковый гигант Google предоставил разработчикам свою платформу для хостинга приложений — Google App Engine, которая предусматривает работу пользовательских приложений в среде компании, на основе их платформы. Разработчик полностью освобожден от работы с самим хостингом — для него все видно через призму несложного API, остальное забота компании Google. По сути, это очень высокоуровневая виртуализация хостинга. Сетевая инфраструктура также переносится на «плечи» провайдера, таким образом все приложения работают в некоторой среде, при этом даже не ясно (да и не нужно), где какой сервер, физический или виртуальный. Именно потому такая инфраструктура называется облачной. На рынке есть достаточная конкуренция — например, самый известный и часто используемый сервис, это инфраструктура от Amazon, которая включает несколько приложений для хранения и передачи данных (оплата производится как за траффик, так и за процессорное время).

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

А ведь мир не ограничен только этими платформами (имеется ввиду, Google и Amazon). И одна из таких платформ создается буквально у нас на глазах!
Читать дальше →

Ext.Календарь

Reading time1 min
Views2.8K
imageMyCalendar — это расширенная версия стандартного ExtJS-календаря. Календарик не привязан к конкретному бэкэнду т.к. работает только с JSON данными, а их хоть из ассемблера кидай =). На сайте автора уже представлено два бэкэнда на Grails и PHP в качестве демо для лучшего понимания внутреннего устройства.

Протестировано в IE, FF, Chrome.
Товарисчь anotherpit подсказывает, что в Opera все тоже работает (на первый взгляд).

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

OpenSocial на своей грядке

Reading time3 min
Views1.8K

Целью этой заметки является рассказать о возможности установки платформы Open Social на свой сервер с перспективой интеграции в свои социальные проекты. Несмотря на утверждение об открытости технологии, пока кроме гигантов рынка таких как MySpace, Orkut, Hi5, и др., никто не может похвастаться полноценной поддержкой Open Social API. Конечно, Open Social это тренд, и его интеграция улучшит позиции любого социального веб-приложения. Если у вас оно имеется, или планируется, то советую вам узнать как сейчас обстоят дела с установкой контейнера для социальных мини-приложений.
Читать дальше →

Социальные сети, перспективы развития и способы монетизации. Часть 2

Reading time10 min
Views9.1K
Вторая часть моего доклада на конференции UA WEB про социальные сети. Тема части: перспективы развития социальных сетей.

Для пропустивших, советую сначала прочитать первую часть
Читать дальше →

LinkedIn открыла доступ для разработчиков

Reading time1 min
Views575
Собственно, все в сабже. LinkedIn — пожалуй, самая широкая социальная сеть профессионалов на западе, все рекрутеры в обязательном порядке пользуются ее данными. Раньше LinkedIn давали доступ к API только избранным партнерам, но на днях их вице-президент написал в своем блоге, что они открыли сайт для всех желающих разработчиков.
Так что если вдруг кому такое может пригодиться — enjoy.

Information

Rating
Does not participate
Location
Зеленоград, Москва и Московская обл., Россия
Registered
Activity