Skip to content

Instantly share code, notes, and snippets.

View guysmoilov's full-sized avatar
🐶

Guy Smoilovsky guysmoilov

🐶
View GitHub Profile
@guysmoilov
guysmoilov / TopicChangingMirrorMakerMessageHandler.scala
Created November 30, 2016 13:18
Topic transforming Kafka mirror maker handler
package kafka.tools
import java.util
import java.util.Collections
import kafka.consumer.BaseConsumerRecord
import kafka.tools.MirrorMaker.MirrorMakerMessageHandler
import org.apache.kafka.clients.producer.ProducerRecord
import scala.util.matching.Regex
@guysmoilov
guysmoilov / watch-list.sh
Created August 23, 2016 14:02
Watch command for long-term monitoring
echo "Watching $1 command"
PREV=""
while sleep 1; do
CURRENT=`eval $1`
if [ "$CURRENT" != "$PREV" ]; then
echo "[`date`]: $CURRENT"
PREV=$CURRENT
fi
done
# Usage: arg 1 is number of random lines to generate, arg 2 is length of each line
# Stolen from: https://gist.github.com/earthgecko/3089509
cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w $2 | head -n $1
set http-proxy=
set https-proxy=
set http_proxy=
set https_proxy=
start cmd
import subprocess
import sys
pslist = subprocess.check_output("adb shell ps " + sys.argv[1]).decode("utf-8").split()
if len(pslist) > 8:
pid = pslist[9]
print("killing " + pid)
subprocess.check_call("adb shell kill " + pid)
@guysmoilov
guysmoilov / reinstall-apk.py
Created June 13, 2016 13:45
Python script to reinstall an apk
import subprocess
import sys
import re
apkpath = sys.argv[1]
print('checking packagename')
head = subprocess.check_output('aapt d badging "' + apkpath + '"').decode("utf-8").split("\n")[0]
packagename = re.match(r'^package: name=\'([A-Za-z0-9\.]+)\'', head).group(1)
print('uninstalling ' + packagename)
subprocess.check_call("adb uninstall " + packagename)
var recursive = "var iterationNum=ITERATION_NUM; console.log('iteration number %s', iterationNum); var recursive = \"REPLACE\"; eval(recursive.replace('REPLACE', recursive.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"').replace(/'/g, '\\\\\\'')).replace('ITERATION_NUM', iterationNum + 1))";
eval(recursive.replace('REPLACE', recursive.replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/'/g, '\\\'')).replace('ITERATION_NUM', 0));
@guysmoilov
guysmoilov / dex.py
Last active August 29, 2015 14:24
Get number of methods in a dex file contained in an apk.
import zipfile
import sys
def methods_in_dex(dex_bytes):
return int.from_bytes(dex_bytes[88:92], byteorder='little', signed=False)
def methods_in_apk(apkfile, dexfile='classes.dex'):
with zipfile.ZipFile(apkfile, 'r') as apkzip:
dex_bytes = apkzip.read(dexfile)
return methods_in_dex(dex_bytes)
@guysmoilov
guysmoilov / browser-policy.coffee
Last active August 29, 2015 14:17
Meteor browser policy supporting tests
laxBrowserPolicy = ->
BrowserPolicy.content.allowOriginForAll "localhost:*"
BrowserPolicy.content.allowConnectOrigin "ws://localhost:*"
BrowserPolicy.content.allowConnectOrigin "http://localhost:*"
Meteor.startup ->
BrowserPolicy.content.disallowInlineScripts()
BrowserPolicy.content.disallowInlineStyles()
BrowserPolicy.content.disallowEval()
@guysmoilov
guysmoilov / _mutation_observer_helper.js
Created March 25, 2015 00:07
Can be used inside client integration tests to wait for elements to change
observeMutationsHelper = function(targetSelector, done, callback) {
var target = document.querySelector(targetSelector);
var observer = new MutationObserver(function(mutations) {
callback(mutations);
observer.disconnect();
done();
});
var config = {
attributes: true,
childList: true,