Rails action to send binary data
I have one old application where the attachment is store as an id in the filesystem. The customer wants to have the attachment with the right name. So I have made this small action which accepts the id of the requested object and send the file data.
def send_bios
redirect_to :action => 'bios' if params[:id].blank?
@artist = Artist.find(params[:id]);
contents = File.open(@artist.bios_path,"rb") {|io| io.read}
send_data contents, :filename => "#{@artist.name}.pdf", :type => "application/pdf", :disposition => 'attachment'
end
How to save and installed packges
http://www.cyberciti.biz/tips/linux-get-list-installed-software-reinstallation-restore.html
$ dpkg --get-selections > /backup/installed-software.log
# dpkg --set-selections < /backup/installed-software.log
Now your list is imported use dselect or other tools to install the package.
# dselect
Select ‘i‘ for install the software.
Upgrade Debian
http://www.cyberciti.biz/tips/upgrading-debian-sarga-3-to-etch-4.html
Commands
cat /etc/debian_version
Fix the W: There are no public key available for the following key IDs:
4D270D06F42584E6
apt-key update
gpg –keyserver wwwkeys.eu.pgp.net –recv-keys XXXXXXXXXXXXXXXX
apt-key add /root/.gnupg/pubring.gpg
apt-get update
I have cracked one bulgarian software for window
(more…)
Wow. What a nice idea.
http://code.google.com/p/quipt/
Note: if you want to make the test.html to work checkout and test on http://… it is some beta but it works great only in Firefox
Here is how to make random images generation for your website.
First you must put your images in a folder /public/images/random_images or what ever.
Second you put images there and mark the filenames with a prefix, which image to which section will be visible on.
index_bottom_1.jpg -> for the index page on the bottom :)
index_bottom_2.jpg -> for the index page on the bottom
featured_art_1.jpg -> some panel.
featured_art_2.jpg -> some panel.
and so on…
Paste this method in your base controller. This method will be called to make list for a specific image folder and “filter” the images that are supposed to be showed in the different regions in @variables.
before_filter :init_random_images
protected # :) be carefull for this if you copy paste
def init_random_images
# collect some static images
web_root = "images/imagestorage/random_images"
all_images = Dir["#{RAILS_ROOT}/public/#{web_root}/*.jpg"]
@random_head_images = []
@random_indexbtm = []
@random_featured = []
@random_sales = []
@random_services = []
@random_framing = []
@random_artistcollection = []
all_images.each do |f|
if File.stat(f).file?
@random_head_images << ("/#{web_root}/" + File.basename(f)) if f =~ /head_images_/
@random_indexbtm << ("/#{web_root}/" + File.basename(f)) if f =~ /indexbtm_/
@random_featured << ("/#{web_root}/" + File.basename(f)) if f =~ /featured_/
@random_sales << ("/#{web_root}/" + File.basename(f)) if f =~ /sales_/
@random_services << ("/#{web_root}/" + File.basename(f)) if f =~ /services_/
@random_framing << ("/#{web_root}/" + File.basename(f)) if f =~ /framing_/
@random_artistcollection << ("/#{web_root}/" + File.basename(f)) if f =~ /artistcollection_/
end
end
Then paste this as a helper or in the base controller, to use it in your views. The method will give you from the images array, count number of images.
helper_method :get_random_image
def get_random_image(images, count)
requested_images = []
images_copy = images.clone
[images_copy.size, count].min.times do
index = rand(images_copy.size)
requested_images << images_copy[index]
images_copy.delete_at(index)
end
requested_images.flatten.compact
end
here is an example how to use it.
<div id="static_logo" style="background:url(<%= get_random_image(@random_sales, 1) %>) no-repeat scroll left top;">
Future optimization
Put some caching, not to make
Dir["#{RAILS_ROOT}/public/#{web_root}/*.jpg"]
on every request.
10x Bl8cki to the nice code optimizations :)