Skip to content

Instantly share code, notes, and snippets.

Andrey Chernih andreychernih

Block or report user

Report or block andreychernih

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
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.