Проблема: json из 200-300 записей генерировался очень долго (около 5 секунд)
Benchmark показал, что 90% времени занимает вызов
json = my_model.as_json # <--- около 40мс
для моделей.
То же , но как хеш ускорилось в 100 раз
json = {
id: my_model.id,
lat: my_model.lat,
...
} # <--- около 0.4 мс !!!
Вспомнить всё! Снова и снова :)
пʼятниця, 5 квітня 2013 р.
вівторок, 12 березня 2013 р.
Rails 3 validations
Validate URL
(from https://gist.github.com/bluemont/2986523 and http://stackoverflow.com/questions/7167895/whats-a-good-way-to-validate-links-urls-in-rails-3)Put this into app/validators
class UrlValidator < ActiveModel::EachValidatordef validate_each(record, attribute, value)valid = beginURI.parse(value).kind_of?(URI::HTTP)rescue URI::InvalidURIErrorfalseendunless validrecord.errors[attribute] << (options[:message] || "is an invalid URL")endendend
Usage
validates :url, :presence => true, :url => true
четвер, 24 січня 2013 р.
NGINX
Reguest body limit of 1 MB by default
для загрузки файлов обычно нужно увеличить значение параметра client_max_body_size (квоты в 1 МБ маловато для фоток)
upstream backend {
server unix:/home/... ..... ... /shared/unicorn.sock fail_timeout=0;
}
server {
listen 80 default;
server_name default;
access_log /var/log/nginx/localhost.access.log;
error_log /var/log/nginx/localhost.error.log;
client_max_body_size 4M; <--
client_body_buffer_size 128k;
root /home/.... ..... /current/public;
try_files $uri/index.html $uri.html $uri @myapp;
location @myapp {
proxy_pass http://backend;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
}
}
середа, 9 січня 2013 р.
четвер, 3 січня 2013 р.
MPFlipViewController и 3D перспектива
При попытке применить CATransform3DRotate к изначальной UIView для MPFlipViewController чтобы нарисовать такую листалку
меня ждал облом :( . MPFlipViewController рендерит UIImage для листания и любые 3D транформации ios игнорит при этом. Получается картинка при листании теряет все 3D трансформации и становится абсолютно плоской.
Единственный способ — не использовать листалку из MPFlipViewController, а делать поворот самому (получение screenshot на айфоне возможно, но только через приватное api)
{
[CATransaction setCompletionBlock:^{
можно задать вложенные транзакции/completions
}];
...
CABasicAnimation * anim = [CABasicAnimation animationWithKeyPath:@"sublayerTransform.rotation.y"];
anim.toValue = [NSNumber numberWithFloat:mp_radians(90)];
anim.duration = 0.1;
меня ждал облом :( . MPFlipViewController рендерит UIImage для листания и любые 3D транформации ios игнорит при этом. Получается картинка при листании теряет все 3D трансформации и становится абсолютно плоской.
Единственный способ — не использовать листалку из MPFlipViewController, а делать поворот самому (получение screenshot на айфоне возможно, но только через приватное api)
Анимирование:
[CATransaction begin];{
[CATransaction setCompletionBlock:^{
можно задать вложенные транзакции/completions
}];
...
CABasicAnimation * anim = [CABasicAnimation animationWithKeyPath:@"sublayerTransform.rotation.y"];
anim.toValue = [NSNumber numberWithFloat:mp_radians(90)];
anim.duration = 0.1;
// эти две строки: оставаться в посленей точке анимации (не возвращаться на исходную позицию)
anim.removedOnCompletion = NO;
anim.fillMode = kCAFillModeForwards;
anim.removedOnCompletion = NO;
anim.fillMode = kCAFillModeForwards;
[self.rightPage.layer addAnimation:anim forKey:@"rotateRightPageAnimation"];
}
[CATransaction commit];
}
[CATransaction commit];
четвер, 27 грудня 2012 р.
Image resources -568h for iPhone5
Наивно ожидал, что ios умеет подгружать все файлы ресурсов с суфиксом "-568h".
Нет, по умолчанию понимает только Default-568h@2x.png . Для остальных мест, например фон страницы, необходимо создавать костыли — проверять высоту экрана : если 568 точек , то загружать файл ресурса вручную.
Нет, по умолчанию понимает только Default-568h@2x.png . Для остальных мест, например фон страницы, необходимо создавать костыли — проверять высоту экрана : если 568 точек , то загружать файл ресурса вручную.
неділя, 23 грудня 2012 р.
Ruby Net:HTTP and https
# подготовка параметров
uri = URI('https://server/path')
request_params = {'param1' => 'val1'}
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true if uri.scheme == 'https'
http.start do |h|
request = Net::HTTP::Post.new uri.request_uri
request.set_form_data(request_params)
response = h.request request # Net::HTTPResponse object
# обработка response.body
end
Підписатися на:
Коментарі (Atom)
