Skip to content

Instantly share code, notes, and snippets.

Avatar

Dmitry Krasnoukhov krasnoukhov

View GitHub Profile
@krasnoukhov
krasnoukhov / Gemfile
Created Mar 15, 2012
Convert image to excel
View Gemfile
source 'http://rubygems.org'
gem 'nokogiri'
gem 'rubyzip'
gem 'rubyXL'
gem 'rmagick'
@krasnoukhov
krasnoukhov / Gemfile
Created Apr 10, 2012
Parse infobel search results
View Gemfile
source 'http://rubygems.org'
gem 'mechanize'
gem 'rubyXL'
@krasnoukhov
krasnoukhov / mongoid-enhancements.rb
Created Oct 22, 2012
Prevents nil values to be saved in Mongoid document, removes them from existing documents when saving. Also fixes small issues with Mongoid aliases
View mongoid-enhancements.rb
module Mongoid
module Enhancements
extend ActiveSupport::Concern
module ClassHelpers
# Set callbacks
def enhance
self.set_callback(:save, :before, "remove_unnecessary_fields")
self.set_callback(:initialize, :after, "fill_boolean_fields")
end
@krasnoukhov
krasnoukhov / WinToMacSmbPath.applescript
Created Dec 13, 2012
Applescript for opening Win network paths in OS X
View WinToMacSmbPath.applescript
on run {input, parameters}
set input to input as text
set output to do shell script "echo '" & input & "' | sed -e 's#\\\\#\\/#g' -e 's#^[ ]*#smb:\\/#' -e 's#[ ]*$##'"
do shell script "open " & output
end run
@krasnoukhov
krasnoukhov / criteria.rb
Created Dec 13, 2012
Mongoid extension used for iteration through MongoDB collection using ranges. Useful when iteration performing asynchronously. Works much faster then skip/limit queries.
View criteria.rb
module Mongoid
class Criteria
def range_by(by = 1000, &block)
raise ArgumentError, "Please specify correct range" unless by.to_i > 0
first = klass.order_by(:_id.asc).first.id.generation_time
pages = (klass.count.to_f/by.to_i).ceil
frame = (
(klass.order_by(:_id.asc).last.id.generation_time - first + 1).to_f /
pages
@krasnoukhov
krasnoukhov / lyrics.md
Created Dec 15, 2012
Eighth-form girl (@tania__cohen remix)
View lyrics.md

Eighth-form girl (@tania__cohen remix)

Пустынной улицей вдвоем
Мы с Красноуховым идем,
Я водку пью, а он конфетки ест.
Я говорю Димон давай,
Камон пойдем уже в бабай,
А он мне заливает про курсач, конечно.
У-у, к восьмиклассницам он пойдет,
View soda.md

Это был выпускной вечер, после одиннадцатого класса. Я уже был готов и наряден. Но за час до выхода из дома, мама попросила меня сходить к соседке за содой, для приготовления какого–то блюда. Соды нужно было немного, и поэтому соседка отсыпала её в маленький прозрачный пакетик, в котором обычно продают бисер и другие мелкие штуки. Блюдо мама так и не приготовила, и я ушёл на выпускной с пакетом соды в кармане.

Про выпускной рассказывать не буду. Ближе к делу, как говорится.

Дискотека в холле первого этажа. Водка из пластиковых стаканчиков за школой. Водка из пластиковых стаканчиков в туалете, из–под стола, за углом и т.д. Я вышел во двор, перекурить, и, доставая пачку сигарет из кармана, выронил пакет с содой. Выпавший пакет заметил Максим. Максим был школьным хулиганом. Их в школе было много, но Максим был самым хулиганистым. И даже, как многие поговаривали, умел хорошо драться. Одним словом, его уважали.

Через полчаса, ко мне подошли и сказали, что меня ожидают в туалете. В туалете меня встретил Макси

View parser.rb
require "open-uri"
require "nokogiri"
contents = open("http://bio-energy.com.ua/index.php?option=com_marketplace&page=show_category&catid=3&Itemid=0").read
doc = Nokogiri::HTML(contents)
items = doc.css(".jooNormal").map do |item|
{
image: item.css("td").first.css("img").first.attributes["src"].value,
title: item.css("td").first.css("td").at(2).css("a").first.text
}
View mongochunks.rb
require "moped"
require "pp"
class Mongochunks
attr_accessor :interval, :config_session, :database_session, :sort_by, :stat
def initialize(config_host: "localhost:27017", host: "localhost:27017", database: "test", sort_by: :total, interval: 1)
self.interval = interval
self.config_session = Moped::Session.new([config_host])
self.config_session.use(:config)
View player.js
var jq = document.createElement('script')
jq.src = "//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"
document.getElementsByTagName('head')[0].appendChild(jq)
setTimeout(function() {
// Stole shekels
setInterval(function() { gibeShekel() }, 10)
// Press random buttons
setInterval(function() {
You can’t perform that action at this time.