Dozen's notes

  • Archive
  • RSS

Getting started with Backbone

По-моему это лучшая статья для начинающих изучение Backbone.js

  • 1 month ago
  • Permalink
  • Share
    Tweet

Ruby. Require всех файлов из директорий

Когда работал с Rails не задумывался как можно сделать require всех файлов из директорий динамически. Начал разбираться с Sinatra и появилась необходимость исключить модели и конфиг из основного файла app.rb  

 Dir[ "./config/*.rb", "./models/*.rb" ].each {|f| require f} 
    • #require
    • #ruby
  • 2 months ago
  • Permalink
  • Share
    Tweet

Switching to Sublime Text 2

  • 3 months ago
  • Permalink
  • Share
    Tweet

OpenJDK -> Sun JVM

Использую Aptana Studio для разработки. В поисках рецепта увеличения стабильности и производительности нашел:

sudo update-alternatives --config java

Переключился и понял что мне этого не хватало…)

  • 3 months ago
  • Permalink
  • Share
    Tweet

Настройка ssh на bitbucket

Перенес 3 репо на bitbucket. Немного помучился с настройкой ssh для деплоя на production сервер.

Ссылки на оф. документацию, которые помогли:

Использование SSH протокола с bitbucket

Настройка SSH для GIT и Mercurial

  • 3 months ago
  • Permalink
  • Share
    Tweet

Devise. Обновляем атрибуты без пароля.

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

update_without_password

в экшене update, что-то типа этого:

  def update
      self.resource = resource_class.to_adapter.get!(send(:"current_#{resource_name}").to_key)
      if resource.update_without_password(params[resource_name])
...
    • #devise
    • #update_without_password
  • 4 months ago
  • Permalink
  • Share
    Tweet

attr_accessible & attr_protected

Сам долго не понимал зачем нужны эти методы, а оказывается:

Без указания attr_accessible все атрибуты модели открыты и не сложно догадаться, что даже если вы не указали в форме какой либо атрибут (например group_id в User модели), зная его кулхацкер сможет его изменить… и присвоить, например, себе статус премиум пользователя.

Указав атрибуты в методе attr_accessible можно спасть спокойно и быть уверенным что будут изменяться(.update_attributes() итд) только эти атрибуты.

…либо, используем attr_protected и указываем в методе только те атрибуты, которые хотим защитить.

http://guides.rubyonrails.org/security.html#_mass_assignment

  • 5 months ago
  • Permalink
  • Share
    Tweet

Практическое использование Rails: Часть 3. Оптимизация ActiveRecord

  • 5 months ago
  • Permalink
  • Share
    Tweet

Метод .live() в Jquery 1.7 не поддерживается

Зашел почитать в api и увидел, что в 1.7 .live() больше поддерживаться не будет. Использую его достаточно часто для манипуляции над элементами, которые появляются на странице динамически.

Теперь рекомендуется использовать .on()

$('a').live('click', fn);
$(document).on('click', 'a', fn);

Отличная статья на хабре о нововведениях релиза 1.7

  • 5 months ago
  • Permalink
  • Share
    Tweet

TinyMCE и Jquery Tools Tabs

Возможно есть способ подружить TinyMCE с табами Jquery Tools, т.е. сделать так, чтобы редактор инициализировался на всех вкладках, но я его не нашел и пришлось сделать так:


<script type="text/javascript">
  	
  	function loadEditor(){
	    tinyMCE.init({ 
	    	language : 'ru', 
	    	mode: 'textareas', 
	    	height: 250, 
	    	theme : 'advanced',
	    	plugins : "paste", 
		paste_auto_cleanup_on_paste : true,
		theme_advanced_buttons1 : "bold,italic,separator,bullist,link,unlink,pasteword",
		theme_advanced_buttons2 : "",
		theme_advanced_buttons3 : "",
		theme_advanced_toolbar_align : 'left',
		theme_advanced_toolbar_location : 'top'
		});
	}
	
	$(document).ready(function(){
		loadEditor();
		var api = $("ul.tabs").data("tabs");
		api.onClick(function(e, index) {
			loadEditor();
		});
	})
	
  </script>

—-> upd

Как оказалось не все так просто, редакторы на каждой вкладке инициализируются, но контент не сохраняется.

Ну а вот так все ok:

<script type="text/javascript">
	$(document).ready(function(){
		
		ids = []
		$('.description').each(function(){
			ids.push($(this).attr('id'))
		})
		
		tinyMCE.init({ 
		    	language : 'ru', 
		    	mode: 'exact',
		    	elements: ids.join(),
		    	width: 678,
		    	height: 250, 
		    	theme : 'advanced',
		    	plugins : "paste", 
			paste_auto_cleanup_on_paste : true,
			theme_advanced_buttons1 : "bold,italic,separator,bullist,link,unlink,pasteword",
			theme_advanced_buttons2 : "",
			theme_advanced_buttons3 : "",
			theme_advanced_toolbar_align : 'left',
			theme_advanced_toolbar_location : 'top'
			});
	})
  </script>
  • 5 months ago
  • Permalink
  • Share
    Tweet
← Newer • Older →
Page 1 of 3

About

записки, шпаргалки, зарубки
  • RSS
  • Random
  • Archive
  • Mobile

Effector Theme by Carlo Franco.

Powered by Tumblr