Skip to content

Instantly share code, notes, and snippets.

Avatar

Andrey Chernykh andreychernih

View GitHub Profile
View test_upload_speed.rb
require 'fog'
require 'benchmark'
storage = Fog::Storage.new({:provider => 'AWS', :aws_access_key_id => ENV['AWS_ACCESS_KEY_ID'], :aws_secret_access_key => ENV['AWS_SECRET_ACCESS_KEY'], :region => 'eu-west-1'})
directory = storage.directories.get('roadar-test1')
puts Benchmark.realtime {
directory.files.create(
:key => 'test.jpg',
:body => File.open("test.jpg"),
@andreychernih
andreychernih / example.rb
Created Apr 8, 2014
em-http-request batch downloader with configurable concurrency level
View example.rb
class Downloader
CONCURRENCY = 50
def initializer(urls)
@urls = urls
end
def download
EventMachine.run do
EM::Iterator.new(@urls, CONCURRENCY).each do |url, iterator|
@andreychernih
andreychernih / run.sh
Created Apr 17, 2014
Debug state leak with Rspec (wait till it fails and re-run with last random seed)
View run.sh
#!/bin/bash
rspec spec --order rand:$RANDOM
while [ $? -eq 0 ]; do
rspec spec --order rand:$RANDOM
done
@andreychernih
andreychernih / Gemfile
Created Jun 15, 2014
Import delicious bookmarks from 1 user to another
View Gemfile
source 'https://rubygems.org'
gem 'delicious', '~> 1.0.0'
@andreychernih
andreychernih / BufferedWritableFileByteChannel.java
Last active Aug 29, 2015
Buffered WritableByteChannel implementation
View BufferedWritableFileByteChannel.java
private static class BufferedWritableFileByteChannel implements WritableByteChannel {
private static final int BUFFER_CAPACITY = 1000000;
private boolean isOpen = true;
private final OutputStream outputStream;
private final ByteBuffer byteBuffer;
private final byte[] rawBuffer = new byte[BUFFER_CAPACITY];
private BufferedWritableFileByteChannel(OutputStream outputStream) {
this.outputStream = outputStream;
View benchmarks.rb
%i(net_http em_http typhoeus).each do |method|
Benchmark.bm(15) do |x|
(5..100).step(5) do |c|
x.report("#{method} #{c}") { send("download_#{method}", urls, c) }
end
end
end
@andreychernih
andreychernih / MediaCodecConfiguration.java
Created Jun 28, 2014
MediaCodec configuration sample
View MediaCodecConfiguration.java
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN
&& MediaCodecFormatSelector.forDevice().isSupported()) {
binder.bind(VideoEncoder.class).to(MediaCodecVideoEncoder.class);
} else {
binder.bind(VideoEncoder.class).to(JpegVideoEncoder.class);
}
View MediaCodecFormatSelector.java
public class MediaCodecFormatSelector {
public static MediaCodecFormatSelector forDevice() {
String deviceName = Device.getDeviceName();
if (deviceName.equalsIgnoreCase("samsung gt-i9300")
&& isBadMediaCodecSupport()) {
return new SamsungGalaxyS3MediaCodecFormatSelector();
else if (isBadMediaCodecSupport() && isAffectedDevice(deviceName)) {
return new NoMediaCodecSupportFormatSelector();
} else {
return new MediaCodecFormatSelector();
View VideoEncoder.java
public interface VideoEncoder {
boolean prepare(Context context);
boolean sendFrame(@NotNull byte[] frame);
Frame receiveFrame() throws VideoEncoderError;
}
View ColorConversions.java
public static byte[] NV21toYUV420Planar(byte[] input, byte[] output, int width, int height) {
final int frameSize = width * height;
final int qFrameSize = frameSize/4;
System.arraycopy(input, 0, output, 0, frameSize); // Y
byte v, u;
for (int i = 0; i < qFrameSize; i++) {
v = input[frameSize + i*2];
You can’t perform that action at this time.