Skip to content

Instantly share code, notes, and snippets.

@olmstadfm
olmstadfm / watir-chrome-headless.rb
Created August 7, 2016 16:24
watir + chrome + headless
require 'watir-webdriver'
require 'headless'
headless = Headless.new
headless.start
browser = Watir::Browser.new :chrome
browser.goto 'ya.ru'
browser.screenshot.save 'screenshot.png'

Recursive shellcheck

Concatenates all your sources into one, but preserves original filenames and line numbers, so you can determine in what file error really located.

Consider you have two files script.sh and lib.sh, one sources another:

echo 1
source lib.sh
echo 3
@olmstadfm
olmstadfm / openbox.xml
Created June 18, 2016 12:04
Openbox: Keybindings for window tiling
<keybind key="W-Left"> # HalfLeftScreen
<action name="UnmaximizeFull"/>
<action name="MoveResizeTo"><x>0</x><y>0</y><height>97%</height><width>50%</width></action>
</keybind>
<keybind key="W-Right"> # HalfRightScreen
<action name="UnmaximizeFull"/>
<action name="MoveResizeTo"><x>-0</x><y>0</y><height>97%</height><width>50%</width></action>
</keybind>
<keybind key="W-Up"> # HalfUpperScreen
<action name="UnmaximizeFull"/>
@olmstadfm
olmstadfm / openbox.xml
Last active June 18, 2016 12:01
Openbox: start applications undecorated
<applications>
<application class="Emacs24">
<decor>no</decor>
</application>
<application class="Firefox">
<decor>no</decor>
</application>
</applications>
@olmstadfm
olmstadfm / better-errors-run-emacsclient.rb
Last active January 18, 2016 15:22
Run emacsclient from better_errors
#!/usr/bin/env ruby
chunk = ARGV.first.dup
chunk.gsub!('%2F', '/')
_, file, line = chunk.split(/file=|&line=/)
`emacsclient +#{line} "#{file}"`
@olmstadfm
olmstadfm / unlimited_random_pdfs.rb
Last active January 11, 2016 14:55
Бесконечная генерация рандомных pdf через fuse
# Для тестирования было нужно много pdf, различающихся хеш-суммой.
# Скрипт внизу через fuse создает папку с одним виртуальным файлом.
# Каждый раз, когда кто-то обращается к файлу, скрипт вычисляет что
# он отдаст. В моем случае это тупо врем десять раз, потому что мне
# достаточно чтобы просто хеши у файлов разные были.
#
# Это просто немного исправленный hello world из примеров работы с
# гемом, но полезно, да.
require 'rfusefs'
@olmstadfm
olmstadfm / proxy.el
Last active July 19, 2016 08:23
Emacs behind HTTP proxy with authentification
(setq url-proxy-services
'(("http" . "ip:port")
("https" . "ip:port")))
(setq url-http-proxy-basic-auth-storage
(list (list "ip:port"
(cons "Input your LDAP UID !"
(base64-encode-string "login:pass")))))
# via some good guys from stackoverflow
@olmstadfm
olmstadfm / themerc
Created December 5, 2015 07:25
Get rid of light window border in openbox
!! /usr/share/themes/#{your theme}/openbox-3/themerc
border.width: 1
border.color: #000
window.active.border.color: #000
window.inactive.border.color: #000
@olmstadfm
olmstadfm / 01_README.md
Last active July 19, 2016 08:35
Emacs polymode for LaTex with erb-chunks

Emacs polymode for LaTex with erb-chunks

Коллега генерировал pdf c помощью latex, а для подстановки переменных в шаблон использовал erb. Ну и огорчался конечно, что ни подсветка синтаксиса не работает, ни автодополнение. И тут мне стало интересно. Поэтому с помощью библиотеки Polymode был изготовлен режим для emacs, который внутри erb-блоков включал ruby-mode со всеми плюшками, а на всем остальном тексте работал как latex-mode.

@olmstadfm
olmstadfm / tap.rb
Created December 4, 2015 07:25
Ruby: Object#tap
# Прикольное форматирование. Мне нравилось в два столбца
# логи писать параллельно с кодом (за это меня все ненавидели),
# а тут на уровне синтаксиса языка.
(1..10) .tap {|x| puts "original: #{x.inspect}"}
.to_a .tap {|x| puts "array: #{x.inspect}"}
.select {|x| x%2==0} .tap {|x| puts "evens: #{x.inspect}"}
.map { |x| x*x } .tap {|x| puts "squares: #{x.inspect}"}
# via http://ruby-doc.org/core-2.1.1/Object.html