Skip to content

Instantly share code, notes, and snippets.

View karpov-dn's full-sized avatar

Danil Karpov karpov-dn

  • Nine and One
  • Saint-Petersburg, Russia
View GitHub Profile
@karpov-dn
karpov-dn / install.sh
Created June 30, 2022 10:55
PostgreSQL & PostGIS air-gap install
#==========================
# UserHost
# internet access, same OS and version with TargetHost
apt-get update
apt-get --allow-unauthenticated -y install --print-uris postgis postgresql-13-postgis-3 | cut -d\' -f2 | grep http:// > download-list
wget -i download-list
# transfer *.deb files to TargetHost
@karpov-dn
karpov-dn / project.rename.ex
Created June 2, 2019 17:07
Mix task for Phoenix project rename
# Put it to lib/mix/tasks/project.rename.ex
defmodule Mix.Tasks.Project.Rename do
use Mix.Task
@shortdoc "Rename project"
def run([name]) do
from_name_otp = Atom.to_string(Mix.Project.config()[:app])
from_name = Macro.camelize(from_name_otp)
to_name_otp = Macro.underscore(name)
to_name = Macro.camelize(name)
@karpov-dn
karpov-dn / helpers.js
Created November 26, 2018 20:59
Puppeteer request mocker
import url from 'url'
import createRouter from 'router5'
export async function mockRequests(requests) {
const router = createRouter(
Object.keys(requests).map(request => {
return { name: request, path: request }
})
)
router.start()
@karpov-dn
karpov-dn / intercept_request.js
Last active November 22, 2018 08:47
Puppeteer request & response data interceptor
import url from 'url'
/**
* Intercept request and response data by url substring/regexp
* @param {(string|RegExp)} regexp - String or regexp
* @param {Function} callback - Callback
* @return {Object} request - Request object
* @return {string} request.url - Request url
* @return {string} request.method - Request method - GET|POST|PUT|DELETE
@karpov-dn
karpov-dn / listing_generator.rb
Last active September 26, 2022 11:09
Code listing generator
available_extensions = [
"*.tsx", "*.ts", "*.js", "*.json", "*.css", "*.scss", "*.json",
"*.html", "*.slim", "*.erb", "*.rb", "Gemfile", "Procfile.dev", "package.json"
].map { |f| "\"#{f}\"" }
files = `find . -type f \\( -name #{available_extensions.join(' -or -name ')} \\) -print`.split("\n")
data = ''
def readfile(path)
@karpov-dn
karpov-dn / join.rb
Created March 16, 2018 09:29
Write directory files content to one txt file in ruby
fullpath = File.expand_path('../', __FILE__)
output = File.new(File.join(fullpath, 'out.txt'), 'w')
delimiter = -> (f) do
"\r\n\r\n===========================================================\r\n#{f}\r\n\r\n"
end
templates = %w{ *.ru *.rb *.yml *.json *.html *.slim *.erb *.css *.scss
@karpov-dn
karpov-dn / allowed_hosts.rb
Last active December 27, 2015 13:09
AllowedHosts rack middleware
class AllowedHosts
ALLOWED_HOSTS = ['www.dot.tk', 'your-app-on-heroku.herokuapp.com', 'localhost', '127.0.0.1']
def initialize(app)
@app = app
end
def call(env)
if ALLOWED_HOSTS.include?(env['HTTP_HOST'])
@karpov-dn
karpov-dn / gist:3613030
Created September 3, 2012 20:13
paperclip image dimensions
def set_dimensions
if tempfile = self.image.queued_for_write[:original]
dimensions = Paperclip::Geometry.from_file(tempfile)
self.width = dimensions.width
self.height = dimensions.height
end
end
@karpov-dn
karpov-dn / gist:3607220
Created September 3, 2012 06:15
Count images in thread with exception shown posts
thread.posts.with_image.where(Post.arel_table[:id].not_in(posts.map(&:id))).count