LINUX.ORG.RU

Избранные сообщения DILIN

Классический интерфейс в веб-приложении

Форум — Development

Есть ли какая нибудь легкая библиотека с готовыми виджетами, что бы были menu bar'ы, контекстные меню, treeview, split pane, и все другие привычные вещи? Желательно что бы была под это компактная тема.

 , ,

stasolog
()

Информация: CentOS 6 + openssl 1.0.1f с ГОСТом (для zapret-info)

Форум — Admin

Краткая памятка тем, кому понадобится openssl с ГОСТом на CentOS 6 (мне он понадобился для выгрузки реестра). Т. к. нужда узкая и специфичная, заменять системный не стал, на быстрогугленых советах была описана конфигурация для 1.0.1c, на которой openssl ныл «GOST engine already loaded» и т. д. Итак, скачиваем http://www.openssl.org/source/openssl-1.0.1f.tar.gz и распаковываем. Ставится он, в принципе, куда угодно, я решил его запихать в /usr/local/openssl-1.0.1f, поэтому <PREFIX> везде заменяем на реальный:

cd openssl-1.0.1f
./config shared zlib enable-rfc3779 --prefix=<PREFIX>
make depend
make
make install
Затем в <PREFIX>/ssl/openssl.cnf перед секцией «[ new_oids ]» втыкаем
openssl_conf = openssl_def

[openssl_def]
engines = engine_section

[engine_section]
gost = gost_section

[gost_section]
soft_load=1
default_algorithms = ALL

В общем, всё, теперь всё подписывается.

 , , zapret-info,

berrywizard
()

Пара ньюансов при обработке пакетных даных в руби.

Форум — Development

Кому-то эти нюансы, вероятно известны, а кому-то будут интересны. Коротко: помните о существовании Set, each_value, find. - производительность от этого может вырасти в разы. Так же, удобная штука - использование скобок в параметрах блоков.

require 'set'
a = []
s = Set.new
h = {}

n = 10000

Benchmark.bm(3) do |b|
  puts 'add'
  b.report("array:"){ 200.times{|i| a << i } }
  b.report("set  :"){ 200.times{|i| s << i } }
  b.report("hash :"){ 200.times{|i| h[:"#{i}"] = i } }
  puts 'include?'
  b.report("array:"){ 200.times{|i| a.include? i } }
  b.report("set  :"){ 200.times{|i| s.include? i } }
  puts 'inject'
  b.report("array:"){ n.times{|i| a.inject(0){|s, v| s + v } } }
  b.report("set  :"){ n.times{|i| s.inject(0){|s, v| s + v } } }
  b.report("hash :"){ n.times{|i| h.inject(0){|s, ( k, v )| s + v } } }
  b.report("hash :"){ n.times{|i| h.each_value.inject(0){|s, v| s + v } } }
  b.report("hash :"){ n.times{|i| h.inject(0){|s, v| s + v.last } } }
  puts 'find'
  b.report("array:"){ n.times{|i| a.find{|el| el == 150 } } }
  b.report("set  :"){ n.times{|i| s.find{|el| el == 150 } } }
  b.report("hash :"){ n.times{|i| h[:"150"] } }
  puts 'each'
  b.report("array:"){ n.times{|i| a.each &:to_s } }
  b.report("set  :"){ n.times{|i| s.each &:to_s } }
  b.report("hash :"){ n.times{|i| h.each_value &:to_s } }
  b.report("hash :"){ n.times{|i| h.each{|k,v| v.to_s } } }
  puts 'map'
  b.report("array:"){ n.times{|i| a.map &:to_s } }
  b.report("set  :"){ n.times{|i| s.map &:to_s } }
  b.report("hash :"){ n.times{|i| h.each_value.map &:to_s } }
  b.report("hash :"){ n.times{|i| h.map{|k,v| v.to_s } } }
end

результат на mri

          user     system      total        real
add
array:  0.000000   0.000000   0.000000 (  0.000043)
set  :  0.000000   0.000000   0.000000 (  0.000103)
hash :  0.000000   0.000000   0.000000 (  0.000344)
include?
array:  0.000000   0.000000   0.000000 (  0.000877)
set  :  0.000000   0.000000   0.000000 (  0.000060)
inject
array:  0.230000   0.000000   0.230000 (  0.226024)
set  :  0.290000   0.010000   0.300000 (  0.298473)
hash :  0.490000   0.000000   0.490000 (  0.487521)
hash :  0.270000   0.000000   0.270000 (  0.287539)
hash :  0.490000   0.000000   0.490000 (  0.497619)
find
array:  0.140000   0.000000   0.140000 (  0.142135)
set  :  0.200000   0.000000   0.200000 (  0.198234)
hash :  0.000000   0.000000   0.000000 (  0.000974)
each
array:  0.380000   0.000000   0.380000 (  0.384158)
set  :  0.460000   0.000000   0.460000 (  0.453658)
hash :  0.450000   0.010000   0.460000 (  0.457729)
hash :  0.670000   0.000000   0.670000 (  0.672617)
map
array:  0.430000   0.000000   0.430000 (  0.430366)
set  :  0.570000   0.000000   0.570000 (  0.572334)
hash :  0.550000   0.000000   0.550000 (  0.558118)
hash :  0.800000   0.010000   0.810000 (  0.796961)

 , ознакомления тред

special-k
()

Выложены записи докладов Дня виртуализации Fedora

Новости — Конференции и встречи
Группа Конференции и встречи

Общая ссылка: видео-файлы и торренты

>>> Подробности

 , , ,

alpha
()

Magic Lantern 2.3

Новости — Мультимедиа
Группа Мультимедиа

Magic Lantern — альтернативная прошивка для зеркальных фотокамер Canon. Первоначально разрабатываемая для получения большего контроля над процессом съёмки видео, сегодня она содержит ряд возможностей, интересных и фотографам.

Новая версия несёт массу улучшений в функционале и стабильности. По словам разработчиков, проект вырос из категории «хака» и теперь может считаться полноценным профессиональным инструментом. Основные изменения (и отличия от стандартной Canon'овской прошивки):

  • быстрые зебры;
  • возможность настройки меню и клавиш быстрого доступа;
  • улучшена эргономика;
  • автоматическая вилка экспозиции для HDR;
  • мощный инструмент для замедленной съёмки видео: запуск с задержкой (до восьми часов), остановка после заданного количества снимков (от 100 до 5000), плавное изменение экспозиции и фокуса в процессе съёмки;
  • выбор нестандартной частоты кадров (от 0,2 fps до 35 fps);
  • расширение диапазона ISO (ISO 80, ISO 50, ISO 819200);
  • настройка контраста и насыщенности для LiveView;
  • инструменты анализа изображения в режиме фотографирования (zebra, histogram, waveform, spotmeter, focus peaking).

Поддерживаются следующие модели камер: 5Dmk2, 50D, 60D, 500D, 550D, 600D. Ведётся работа по портированию на 5D Mark III и 650D.

В процессе подготовки версии 2.3 разработчики применили несколько необычный подход к распространению своего продукта: финальная версия является бесплатной, в то время как доступ к релиз-кандидатам и финальной версии в течение первых трёх недель после релиза предоставляется только спонсорам, сделавшим пожертвование. Доступ к новой версии для всех желающих будет открыт 13 августа. Исходный код распространяется на условиях GPLv3.

Видеообзор от Clint из Everything Studios

>>> Подробности

 , , , ,

prozium
()