LINUX.ORG.RU

Сообщения DRVTiny

 

Чем Docker принципиально лучше OpenVZ?

Много работал с OpenVZ, всё очень устраивало, включая производительность. Не устраивала главным образом необходимость патчинга ядра Linux, поскольку это сильно ограничивало возможности работы с капризным железом или даже просто какими-то современными ядрёными технологиями. То есть ну не слишком здорово то, что с OpenVZ можно работать только на ограниченном множестве версий Linux'ячих ядер.

Но в целом, повторюсь, OpenVZ оставил самое положительное впечатление, позволяя и бэкапы делать просто и безболезненно, и миграции между физическими машинами на случай отказа оборудования, и многое-многое другое. Плюс конечно тот факт, что не менее замечательный Proxmox поддерживает OpenVZ из коробки - не может не радовать.

Теперь Docker.

Вроде бы те же контейнеры, по сути являющиеся развитием jail/chroot, как и OpenVZ, как и LXC.

Почему сразу к этим контейнерам привязали «сбоку» основное их назначение - поставка ПО со всеми зависимостями а-ля «квази-статическая сборка». То есть вроде как Docker позволяет успешно бороться с проблемой, которую сами же Linux'оиды и создали: катастрофическим хаосом, бардаком и зоопарком из библиотек, валяющихся во всяких там /usr/lib'ах

А ещё у Docker есть забавная штука commit - пока я посто не врубаюсь, в чём соль и как оно работает, а вывод команды mount внутри контейнера начисто взрывает мозг.

Ну ОК. А с точки зрения, гм, виртуализации в контексте «создания изолированных программных сред» (клинически ненавижу слово «облако») что конкретно нового, интересного даёт нам Docker по сравнению со старым-добрым OpenVZ?

Пока я вижу одно определённое преимущество: образы Docker меньше образов OpenVZ.

А ещё???

 ,

DRVTiny
()

Одна разделяемая библиотека на 100500 контейнеров?

Возможно ли загрузить, положим, libqt, один раз в память, а затем из всех контейнеров Docker LXC эту библиотеку использовать?

Просто в случае с chroot'ом, openvz и jail необходимость загрузки в память одного и того же read-only-by-definition кода в каждом инстансе - мягко говоря, бесит. Таким образом, из-за контейнерной виртуализации всего и вся мы теряем кучу памяти и напрягаем сборщик мусора сбросом ненужных страниц на диск (в итоге мучаем уровень хранения).

В Docker LXC решили эту проблему?

 

DRVTiny
()

Отминусовали на StackOverflow - можно ли оспорить

Я по доброте душевной дал подробный ответ на StackOverflow, перед этим всё тщательно проверил - скрипт рабочий, проблему юзверя решает отлично и даже с запасом.

В итоге без объяснения причин мне кто-то влепил "-1". Я добавил комментарий, вопрошающий «Кто минусует?!», но ответа на него не получил также.

Вроде бы фигня, но как-то обидно: хотел помочь человеку, а тут такое. Я не стал бы обижаться, если бы он не плюсовал, но минус за добротный код, над которым мне хоть и недолго, но пришлось подумать - это какое-то свинство просто.

Скажите, есть ли на StackOverflow какой-то реально действующий механизм, позволяющий оспорить/опротесовать такого рода зловредное минусование кармы?

 , корябеда

DRVTiny
()

Существует ли SQL proxy с модификацией проходящих запросов?

Есть такая странная задача:

Есть множество Oracle'овых баз с одинаковой структурой, которым нужно слать одинаковые запросы, буквально перебирая целевые базы в цикле.

Хотелось бы вот чего: добавлять в SELECT-запросы некий текст, который будет признаком целевой базы, отправлять запросы на некий SQL-прокси, который с точки зрения DBI будет выглядеть как single-СУБД.

Прокси-сервер увидит в теле SELECT'а идентификатор целевой базы, удалит его и отправит уже изменённый запрос на целевой хост.

От самого прокси при этом хотелось бы persistent соединений и какой-нибудь сетевой оптимизации, которую в обычном случае пришлось бы реализовать прямо в теле программы, формирующей запросы.

Собственно, нашёл SQLRelay - штука отличная и умеет по регэкспам дистрибутить запросы... Но не умеет их модифицировать.

Последнее в принципе можно обойти (например, добавлять идентификатор цели в качестве «комментария»), но... вдруг есть ещё какие-то, более умные SQL-прокси? Собственно, это с прицелом на будущее, потому что на самом деле хотелось бы мутировать SQL-запросы на прокси таким образом, чтобы они подходили как для MySQL (в тестовой среде), так и для Oracle (в продакшн).

ОТВЕТ!

SQL Relay может транслировать запросы. Для этого существует механизм так называемых модулей трансляции. По умолчанию в поставке SQL Relay есть только один модуль, normalize. Для преобразования запросов он бесполезен, но его код можно использовать в качестве основы для написания своего модуля. Написание своего собственного модуля подробно описано в статье о модулях трансляции. То есть здесь: http://sqlrelay.sourceforge.net/sqlrelay/modules/translations.html

 , ,

DRVTiny
()

Web-Framework, позволяющий забыть о мерзком HTML?

Меня поражает до глубины души тот факт, что мега-чудо фреймворки наподобие Mojolicious, Django, Catalyst и т.д. (миллионы их) заставляют своих пользователей впечатывать всё тот же мерзкий HTML-код, да ещё сбоку прибабахивать к нему JavaScript.

Я не понимаю, зачем они тогда вообще нужны? Собственно, работу с источниками данных и любые преобразования данных вообще не веб-фреймворки должны решать, выдавать статичный контент в различных форматах (web archive, pdf и docx) ни один из этих чудо-фреймворков не умеет...

Мне всегда казалось, что главной задачей веб-фреймворка должна быть возможность абстрагироваться от мерзкой CSS-HTML-JS лабуды и создавать просто веб-приложение, в котором нет места HTML-коду, а есть лишь высокоуровневые абстракции, которые в конечном итоге пользователь увидит на экране.

Вместо этого я вижу, что фремйворки льют воду на мельницу «командного программирования» и «ваяют лучший синтаксис в оболочке наисовершеннейшего ООП», но совершенно не решают проблему абстрагирования, а вместо этого только усугубляют её, вводя лишние сущности в виде дополнительных языков описания HTML-шаблонов.

Собственно, внимание вопрос: есть ли веб-фреймворки (кроме GWT), всё-таки прежде всего упрощающие создание визуальных элементов?

То есть, если говорить о триаде MVC - есть ли готовые пакеты, позволяющие этот самый V сделать состоящим из абстракций высокого уровня так, чтобы пользователю было откровенно без разницы, из какого HTML и JS-кода состоит какая-нибудь таблица в духе DataTables.js или дерево в духе jsTree или что угодно ещё.

Спасибо.

 ,

DRVTiny
()

Баг в документации Oracle? (INSERT SYNTAX)

В соответствии с https://docs.oracle.com/cd/E17952_01/refman-5.1-en/insert.html я могу вставлять несколько строк в один заход, потому что сказано в Священном Писании следующее:

{VALUES | VALUE} ({expr | DEFAULT},...),(...),...

В действительности же на Oracle 11.2g Express'е при попытке множественного INSERT'а получаю отлуп:

insert into test_table (ID) values ('CCC'),('TTT');

ERROR at line 1:
ORA-00933: SQL command not properly ended
Это баг в документации Oracle или поддержка полноценного синтаксиса insert появилась в Oracle после 11.2, или же... я чего-то недопонимаю?

Спасибо!

 maybebug,

DRVTiny
()

Отладка не только собственного кода

Если честно, с Perl-дебаггером сильно на «Вы», но вот понадобилось мне понять, какие значения принимают переменные криво написанного стороннего модуля (реализующего Log::Log4perl PatternLayout) в тот момент, когда он мне сообщает об ошибке.

То есть там имеется объект-инстанс класса, у него вызывается метод... и этот метод работает очевидно некорректно.

Я конечно могу пытаться связаться с разработчиками, но со всеми разработчиками связываться - себе дороже, иногда легче просто подгогнать свой код под бредовые представления разработчиков стороннего модуля, о том, каким этот мой код должен быть.

Собственно, в стандартном дебаггере я вижу, как ставить точку останова внутри своего кода, но непонятно, как её поставить внутри подключаемого каким-нибудь use'ом стороннего или своего модуля?

 ,

DRVTiny
()

Какие языки поддерживают макросы-генераторы кода?

В моём любимом Perl мне часто не хватает одной, казалось бы, простой, вещи: макрорасширений.

Для чего они нужны в моём случае?

Для того, чтобы объяснить компилятору, что данный кусок кода не нужно всякий раз вызывать как полноценную процедуру, а можно его просто копипастить, подставляя по месту соотв. статические, то есть вычисляемые на этапе компиляции, параметры.

Собственно, такая штука была в чудесном MASM'е, и она позволяла сэкономить немало тактов процессора на отсутствии ненужных вызовов процедур там, где их параметры были известны уже на этапе компиляции.

Думаю, что хотя оптимизирующие компиляторы и умеют разворачивать циклы и вообще удалять целые «ненужные» куски кода, но вряд ли они сумеют сами догадаться о том, что данной процедуре совершенно не обязательно пихать в стек параметры-константы и делать лишние malloc'и для локальных переменных (ну или пихать их в стек, если они туда помещаются), а можно просто сгенерировать соотв. копию кода процедуры и выполнить потом этот код в общем потоке исполнения.

Пожалуй, трудно поспорить с тем, что те же преобразования «строк-цифр» в «цифры-цифры» и обратно - занятие для процессора куда более утомительное, но... одно дело - принципиальные конструктивные недостатки языка, а другое - отсутствие в нём полезной функциональности.

Вопрос: в каких языках, кроме собственно макроассемблеров, есть механизм генерации кода?

 , ,

DRVTiny
()

Наложение цвета фона элемента поверх фона родителя с альфа-смешиванием?

Нужно, чтобы, например, поверх общего голубого фона страницы можно было отобразить текст, «подсвеченный» красным. То есть не чтобы у текста был фон красный, а чтобы красный цвет смешивался с голубым в соотношении 25:7, например, и в итоге цвет фона выглядел бы так, словно на него наложили красное стекло.

Возможно ли так сделать в CSS, не используя файлов изображений и прочей подобной не имеющей отношения к делу муры?

Спасибо!

 

DRVTiny
()

Разработка на R

Предлагается начинающий разработчик на R в моём лице.

Поскольку по работе практических задач,связанных с математическими вычислениями маловато, был бы рад небольшим заданиям со стороны заинтересованных лиц.

В качестве пряника за правильно выполненные задания можно предложить всё, что угодно, даже шуточные вещи или «оценку в дневник» :)

 , , ,

DRVTiny
()

Как использовать тип данных BIT из MySQL в Perl-скрипте?

Хотелось бы так:

CREATE TABLE config ( flags BIT(32) );
INSERT INTO config VALUES (b'10111001');

my $fl=$sth->fetchrow_hashref()->{'flags'};
if ($fl & 8) {
 doSomething();
}

В действительности «битовое» поле MySQL неясно как использовать на Perl даже если заморочиться с $int=unpack(«I», $fl) или чем-то подобным. В последнем случае, например, биты в $int почему-то оказываются в «перевёрнутом порядке» (т.е. обратном тому, в котором я их писал в MySQL).

В общем, как считаете, стоит ли с этим иметь дело или плюнуть и просто юзать обычный мускулевский INT?

Сама по себе концепция «набора флагов» мне весьма удобна, не хотелось бы от неё отказыаться.

P.S. Пока более-менее адекватным вариантом оказался этот:

use DBI;
$db=DBI->connect("dbi:mysql:database=docs_status","XXXX","YYYY");
$s=$db->prepare("select * from db_config where id=2"); $s->execute();
$fl=$s->fetchrow_hashref()->{"flags"};
$v=unpack( "N", $fl );
print "V=$v\n";

 ,

DRVTiny
()

Как сыпать «красиво отформатированные» отладочные сообщения в консоль?

Обычно мне нужно что-то такое:

error_ "Get out of here"
А в ответ:

2015-07-19 14:32:07: callee1/callee2/yesIAm: ERROR: Get out of here

Мне не нравится каждый раз переписывать эту фигню заново, всегда хочется какую-то готовую библиотеку, которая делает то же самое, но даже ещё лучше и с кучей ненужных фич :)

Поскольку на JS уже прямо ОСи пишут - может, есть такая чудесная либо для отладки скриптов? Нужен абсолютный минимум на самом деле: чтобы сообщения фильтровались в зависимости от заданного уровня отладки чтобы добавлялось содержательное (оно же полезное) форматирование.

Всем оказавшим посильное вспомоществование в решении означенной проблемы - заблаговременная глубокая признательность вашего покорного слуги,а именно:

СПАСИБО!

 , ,

DRVTiny
()

Аппроксимация полиномом функции-пилы?

Вопрос общего плана и второй, чуть менее общего.

Вопрос 1: Есть «пилящая» зависимость параметра мониторинга (загрузки процессора, например) от времени - чем лучше такое аппроксимировать?

Hint: Проблема в том, что если по этому параметру мониторинга нужно отрисовать график за 2 года на картинке размером 640*480 - то в общем все точки выводить совсем не хочется, а хочется построить по выборочным максимумам и минимумам (например, за 2-е суток) аппроксимацию.

Вопрос 2: Для МНК и аппроксимации полиномом k-й степени (ну, мне k=5 нравится, например) - в R есть, формально, функция nls в stats'ах (http://www.inside-r.org/r-doc/stats/nls). Но её синтаксис мне просто выносит напрочь мозг, а пример использования - добивает окончательно. Не видели ли вы, товарищи, пример какой-нибудь... попроще? :)

Заранее безлимитное всем спасибо!

 , мнк

DRVTiny
()

HighStock и загрузка «кусками»

Собственно, нужно нарисовать графики значений итемов из системы мониторинга (zabbix).

Вопрос в том, что hightstock, - одна из самых популярных реализаций «график+timescale», толком не умеет грузить контент частями.

То есть добавлять точки «вперёд» умеет, а вот с динамической подгрузкой какого-нибудь «2 года назад в апреле» - всё как-то сложно оказалось:

1) HighStock, похоже, сразу, по первому набору данных вычисляет «нижнюю» границу даты

2) Сколько я ни смотрел примеры, что-то так и не нашёл даже элементарного перезапроса точек при масштабировании: например, в случае Zabbix было бы логично при «крупном» масштабе грузить точки из trends, при «мелком» же - history.

Собственно, может, знает кто, проглядел я этот функционал или его там и правда нет?

И ещё «странный» вопрос: если я, например, загружу 10^7 точек на каждый итем, чтобы Господин Заказчик мог смотреть всю историю от Адама и Евы, то это же явно рано или поздно «положит» нафиг систему ГЗ, поскольку он в один итем ткнёт - подождёт полчаса, пока загрузятся все миллионы, в другой итем ткнёт - аналогично. А если захочет несколько итемов в разных вкладках, например, или просто в соседних div'ах даже - ведь все эти точки highcharts'у придётся хранить в памяти, что как-то немного напрягает, если честно...

 highcharts, highstock,

DRVTiny
()

Смартфон: Gorilla Glass 3 + большой аккум = ???

Вынес весь мозг поиском смарта с приличным временем автономной работы и прочным стеклом.

Либо одно есть, либо другое, но ни разу не видел, чтобы то и другое сразу.

Сейчас у меня Lenovo P770, на нём 2 раза разбивал стекло, и хочу его поменять наконец по причине говёности стекла и не меньшей говёности GPS-приёмника - и то, и другое уже откровенно ни в какие ворота не лезет. Wifi Lenovo ловит хорошо, хотелось бы и на новом смарте такое качество приёма.

Также хочется более-менее приличной яркости на максимуме.

Основная сфера использования - нарульный GPS-навигатор для велосипеда, звонилка+активная инетбродилка.

Более-менее близко к коим требованиям - LG G2, но пока не знаю - стоит брать или нет, поскольку на Авито узрел G2 чувака, который с высоты дивана уронил телефон и поставил трещину на экране.

Телефоны на Gorilla Glass 4 были бы ещё более предпочтительны, но там одни лопаты Гнусмаса.

Перемещено JB из linux-hardware

 ,

DRVTiny
()

Функция хочет знать, как её зовут

(my $s=[caller(undef)]->[3])=~s/(??{ __PACKAGE__ }):://;

Или:

my $s=[caller(undef)]->[3];
substr($s,0,rindex($s,"::")+2)="";

Есть подспудное ощущение, что оба способа немного ужасны.

Собственно, вопроса даже 2:

1) Почему caller с параметром, например, «4» (циферкой) - возвращает пустую строку, хотя тут http://perldoc.perl.org/functions/caller.html говорят, что так быть не должно

2) Нельзя ли как-то сразу получить имя функции, очищенное от имени пакета?

 , oopshit, oopsucks,

DRVTiny
()

Есть ли аналог Log::Log4perl?

Нужен модуль Perl для логирования:

1) Экспортирующий функции с именами в духе debug_, warn_, error_, fatal_ для собственно вывода отладочных сообщений

2) Позволяющий установить LogLevel, сообщения ниже которого логироваться не будут - например, функцией log_level

3) Дающий возможность писать одновременно и в STDERR, и в журнальный файл - например, последовательным вызовом open_log(*STDERR) и open_log($fileHandler)

Log::Log4perl делает в принципе то, что нужно, но в Easy-режиме он слишком примитивен, да и названия функций в заглавном регистре - это для элегантного Perl'а какой-то откровенный слоновий трэш.

А в «полноценном» режиме Log::Log4perl чрезмерно тяжеловесен: я терпеть не могу печатать что-то вроде $logger->debug(«message»), если можно было бы сказать просто debug(«message») и не сильно страдать от кажущегося несовершенства такого подхода.

Собственно, мне было бы крайне несложно написать такой модуль для логирования, но в мире Perl подобный подход считается в корне неверным: здесь принято всё-таки сначала поискать чужой подходящий модуль на CPAN или GitHub'е, а только потом уже от крайней безысходности разве что ваять всё самостоятельно.

В общем, есть ли простой аналог Log::Log4perl - желательно вообще без намёков на б-гомеркзий ООП, но зато, например, показывающий стек функций и строку, в которой была вызвана соотв. процедура логирования?

Спасибо!

 ,

DRVTiny
()

AJAX-запрос возвращает пустой Response

Я дёргаю CGI-скрипт AJAX'ом и напрямую по ссылке.

Если я это делаю напрямую, то всё ОК, вижу в Firebug'е вкладку JSON, могу посмотреть поля объекта.

Если AJAX'ом, то получаю правильные заголовки, но пустой Response и статус запроса fail.

В чём собака порылась?

CGI-скрипт:

#!/usr/bin/perl
use CGI;
my $q=CGI->new;
my $json='{"name":"Alice", "country":"Wonderland"}';
print $q->header(
	-type=>'application/json; charset=utf-8',
	-Content_length=>length($json),
);

print $json;

 ,

DRVTiny
()

Пустая строка, false и 0 на Perl и PHP

Как объяснить столь странное (во всяком случае для меня, как для Perl'иста) поведение PHP?

~$ php <<<'<?php $a=""; $b=($a || 0); print ">>$b<<\n"; ?>'
>><<
~$ perl -e '$a=""; $b=($a || 0); print ">>$b<<\n"'
>>0<<

При этом:

~$ php <<<'<?php $a=""; if ($a == false) print "hello\n"; ?>'
hello

Почему конструкция ($a || 0) на PHP даёт не предсказуемый результат 0, а пустую строку?

Спасибо!

 , , isset, ,

DRVTiny
()

Почему российские IT-специалисты никому не нужны?

Суть вопроса ->

Если долларовые зарплаты в отрасли упали в 2-2.5 раза (даже в рублях упали), то почему на рынок труда в России не выходят иностранные компании, скупающие резко подешевевших специалистов пачками?

Тчк

<- Суть вопроса

Комментарий ->

Может, исключительная востребованность наших специалистов в виду исключительных способностей оных - это просто миф?

Уточню: может быть, те, кто действительно чего-то стоит - УЖЕ ТАМ?

<- Комментарий

 

DRVTiny
()

RSS подписка на новые темы