DZone Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world

Snippets

  • submit to reddit

Recent Snippets

                    #!/usr/bin/env ruby

# Credits to :
# http://stackoverflow.com/questions/16365553/creating-gist-from-a-ruby-script
# i modified the script alittle bit to read files from params
require 'net/http'
require 'json'


uri = URI("https://api.github.com/gists")

files = {}
ARGV.each do |f|
	files[f] = {
		content: File.read(f)
	}
end

payload = {
  'public' => true,
  'files' => files
}

req = Net::HTTP::Post.new(uri.path)
req.body = payload.to_json

puts req.inspect
puts req.body.inspect

# GitHub API is strictly via HTTPS, so SSL is mandatory
res = Net::HTTP.start(uri.hostname, uri.port, :use_ssl => true) do |http|
  http.request(req)
end

response = JSON.parse res.body
puts response['html_url']                
                    #!/usr/bin/env ruby
require 'mail'

mysql_username = 'root'
mysql_password = '123456'
mysql_database = 'test'
system("mysqldump --user=#{mysql_username} --password=#{mysql_password} #{mysql_database} > backup.sql")


# Credit to : 
# http://stackoverflow.com/questions/12884711/how-to-send-email-via-smtp-with-rubys-mail-gem
options = { 
	:address              => "smtp.gmail.com",
    :port                 => 587,
    :domain               => 'xxxxxxxxx@gmail.com',
    :user_name            => 'xxxxxxxxx@gmail.com',
    :password             => 'xxxxxxxxx',
    :authentication       => 'plain',
    :enable_starttls_auto => true  
}

Mail.defaults do
  delivery_method :smtp, options
end


Mail.deliver do
  from     options[:user_name]
  to       options[:user_name]
  subject  "Database #{mysql_database} backup #{Time.new}"
  body     "Database #{mysql_database} backup #{Time.new}"
  add_file 'backup.sql'
end

File.delete 'backup.sql'                
                    #!/usr/bin/env ruby
require 'koala' # gem install koala --no-ri --no-rdoc

# create a facebook app and get access token from here
# https://developers.facebook.com/tools/explorer
# select "groups", "photos" when authenticating
oauth_access_token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
group_filtering_words = ['ruby']
image_path = 'image.png' #change to your image path
message = 'My Cool image.' # your message

graph = Koala::Facebook::API.new(oauth_access_token)

# getting groups of interest
groups = graph.get_connections("me", "groups").select do |group|
	group_filtering_words.any? do |word|
		group["name"].downcase.include? word
	end
end

index = 0
groups.each do |group|
	index += 1
	puts "[#{index}/#{groups.size}] Posting to group #{group["name"]}."
	graph.put_picture(
		image_path, 
		{:message => message}, 
		group['id']
	)
end                
                    #!/usr/bin/env ruby
require 'cinch' # gem install cinch --no-ri --no-rdoc
require 'askwiki' # gem install askwiki --no-ri --no-rdoc

bot = Cinch::Bot.new do
  configure do |c|

    c.server = "irc.freenode.org"
    c.nick = "Ask_wikipedia"
    c.channels = ["#cinch-bots"]
    
  end

  on :message do |m|
  	if m.message.start_with? 'askwiki'
  		query = m.message.gsub('askwiki','').strip
    	m.reply Askwiki.ask(query), true
	end
  end
end

bot.start                
                    require 'sinatra' # gem install sinatra --no-rdoc --no-ri
set :port, 3000
set :environment, :production

html = <<-EOT
<html><head><style>
#text{width:100%; font-size: 15px; padding: 5px; display: block;}
</style></head><body>
	<input id="text" placeholder="Write then press Enter."/>
	<div id="chat"></div>
	<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
	<script>
	$('#text').keypress(function(e){
		if( e.keyCode==13 ){
			$.get('/send',{text:$('#text').val()});
			$('#text').val('');
		}
	});
	last = 0;
	setInterval(function(){
		$.get('/update',{last:last},
			function(response){
				last = $('<p>').html(response).find('span').data('last');
				$('#chat').append(response);
				});
		},1000);
	</script>
</body></html>
EOT

chat = ['welcome..']
get('/') { html }
get '/send' do
	chat << "#{request.ip} : #{params['text']}"
	nil
end
get '/update' do
	updates = chat[params['last'].to_i..-1]
	last = "<span data-last=\"#{chat.size}\"></span>"
	if updates.size>0
	updates.join('</br>') + "#{last}</br>"
	else
		last
	end
end                
                    require 'sinatra' # gem install sinatra --no-ri --no-rdoc
set :port, 3000
html = <<-EOT
<html><head><style>
#regex,#text{ width:100%; font-size:15px; display:block; margin-bottom:5px; }
#text{ height: 200px; }
span{ background:rgb(230,191,161); display:inline-block; border-radius:3px;}
</style></head><body>

	<input id="regex" placeholder="Regex"/>
	<textarea id="text" placeholder="Text"></textarea>
	<div id="result"></div>

	<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
	<script>
	$('#regex,#text').keyup(function(){
			$.get('/preview',{
				reg:$('#regex').val(),
				text:$('#text').val()
			},function(r){
				$('#result').html(r);
			});
	});
	</script>

</body></html>
EOT

get('/'){ html }
get '/preview' do 
	begin
		params['text'].gsub(/(#{params['reg']})/,'<span>\1</span>')
	rescue
		'Your regex is invalid'
	end
end
                
                    #!/usr/bin/env ruby
require 'Twitter'
# Create a read write application from : 
# https://apps.twitter.com
# authenticate it for your account
# fill in the following
config = {consumer_key:        '',  consumer_secret:     '',
          access_token:        '',  access_token_secret: ''}
me = 'Blaze Boy' # to prevent DM yourself

Thread.new do
  loop do
    begin
      
      rClient = Twitter::REST::Client.new config
      sClient = Twitter::Streaming::Client.new(config)
      sClient.user do |object|
        if object.is_a? Twitter::Streaming::Event and object.name==:follow
          user = object.source
          if user.name != me
            rClient.create_direct_message user, "Thanks for following me #{user.name} :)"
            puts "New follower : #{object.source.name}"
          end
        end
      end

    rescue
      puts 'error occurred, sleeping for 5 seconds'
      sleep 5
    end
  end
end

loop { sleep 5 }                
                    directory = ARGV.shift || Dir.pwd
$dont_get_into = ['.','..']
$allowed = {
			'Ruby' => '.rb', 
			'Ruby HTML Templates' => '.html.erb',
			'YAML' => '.yml',
			'RDoc' => '.rdoc',
			'HTML' => '.html',
			'Javascript' => '.js',
			'CSS' => '.css',
			'Sass' => '.scss',
			'CofeeScript' => '.coffee'
			}
$analytics = {}
def analyze(dir)
	Dir.new(dir).each do |file_name|
		
		if (! $dont_get_into.include? file_name) and 
			File.directory? dir + File::SEPARATOR + file_name 
				analyze dir + File::SEPARATOR + file_name 
		end

		$allowed.each do |file, extension|
			if file_name.end_with? extension
				$analytics[file] ||= 0
				$analytics[file] += 1
				break
			end
		end

	end
end
analyze directory
puts 'No files found that matches your creteria.' if $analytics.empty?
puts $analytics.map { |k,v| "#{k} : #{v} Files"  }.join "\n"                
                    require 'open-uri'
require 'json'

language = 'en'

print 'What do you need to know? : '
article = URI::encode gets.chomp

request_url = "http://#{language}.wikipedia.org/w/api.php?action=parse&page=#{article}&format=json&prop=text§ion=0"

open(request_url) do |file|
  content = JSON.parse(file.read())['parse']['text'].first[1]
  content_text = content.gsub(/<\/?[^>]+>/, '')
  content_text = content_text.gsub(/[[:space:]]+/, ' ')
  content_text = content_text.gsub(/&#[0-9]+;/,'')
  content_text = content_text.gsub(/\[[0-9]+\]/,'')
  puts content_text
end                
                    require 'time'

Date_of_birth = '1988-8-31'

# Credit to : http://stackoverflow.com/questions/4136248/how-to-generate-a-human-readable-time-range-using-ruby-on-rails
# and modified a little bit
def humanize secs
  [	
  	[60, :seconds], 
  	[60, :minutes], 
  	[24, :hours], 
  	[365, :days], 
  	[100, :years]
  ].map do |count, name|
    if secs > 0
      secs, n = secs.divmod(count)
      "#{n.to_i} #{name}"
    end
  end.compact.reverse.join(' ')
end

loop do
	distance = Time.new - Time.parse(Date_of_birth)
	print humanize(distance)+"\r"
	sleep 1
end