LINUX.ORG.RU

Сообщения DRVTiny

 

OpenSource: попробовав раз, ем и сейчас!

Форум — Talks

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

Как вы относитесь к тому, что используя любой не-mainstream'овый OpenSource-проект (а зачастую и mainstream'овый тоже...) - Вы всегда должны быть готовы «подхватить» заглохшую разработку, дабы гальванизировать труп собственными силами?

 

DRVTiny
()

Можно ли сделать пред и постобработчики для всех URL'ов в Mojo?

Форум — Web-development

Собственно, для реализации единой логики кеширования хочу сделать некий «хук», позволяющий делать пред и постобработку запросов к API.

Общий для всех URL'ов предобработчик должен посмотреть, не закончилось ли для данного /target'а время кеширования результата запроса с момента последнего получения «живых данных» и, если ещё нужно кешировать - он должен просто вернуть данные из кеша, завершив всю обработку.

Обработчики для конкретных URL'ов (например, для «/weatherinfo» или «/currency») - должны получить свежие, «живые» данные, поскольку предобработчик не завершил цикл, а значит - данные в кеше протухли

Постобработчик, единый для всех URL'ов, должен записывать полученные обработчиком для конкретного URL'а «живые данные» в кеш (в Redis, если на то пошло) и обновлять метку времени последнего получения «живых данных» для данного URL.

Перечитал по диагонали пока документацию по Mojolicious::Lite - ничего подобного не нашёл. Может, плохо смотрел.

Для Mojolicious есть какой-то хитрый вариант навешивания последовательных обработчиков на промежуточные элементы route-дерева, но... этот обработчик будет выполнен только до обработчика конечного узла, то есть «листа». Мне же нужно, чтобы и после обработчика «листа» тоже что-то запускалось - а именно запись в кеш полученных живых данных и времени их получения.

Мне очень не хочется выносить хоть какую-то общую абсолютно для всех URL'ов логику в каждый «конкретный» обработчик, мне кажется, что в обработчике для URL'а нужно оставить только его собственную узкоспецифичную логику.

В общем... буду рад конструктивным идеям по реализации желаемого, а именно общей для всех URL'ов пред и постообработки, на базе Mojolicious (желательно Lite-версии).

Спасибо!

 ,

DRVTiny
()

Вроде бы простой rewrite...

Форум — Web-development

Я совсем недавно начал пользоваться nginx для своих нужд и что-то явно туплю: не могу перезаписать «/app» на просто «/» вот в каком случае:

Конфигурация:

NGINX при обращении к /app передаёт запрос на Morbo (сервер для Monolicious-приложений), который на 127.0.0.1:3000

upstream myapp {
  server 127.0.0.1:3000;
}

server {
  ...
  ...
  location /app {
#    rewrite ^/app(/(.*))?$ /$2 last;
    proxy_pass http://myapp;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
  }
}

Мне нужно, что запрос /app/hello приходил приложению, запущенному под Morbo (Mojolicious-приложение), как просто /hello.

rewrite, который закомментирован в конфигурации, я уже как только не менял - ничего не помогает: либо в Morbo запрос приходит с /app частью, либо он перезаписывается на тот же /hello и вообще, зараза, в Morbo не попадает.

Как же так? ЧЯДНТ? И как сделать правильно?

Спасибо! ;)

 , ,

DRVTiny
()

Открытый справочный web-api ищет доменное имя

Форум — Talks

Есть такая простая мысль: сделать открытый справочный web-api, где запросы и ответы будут в JSON (API конечно ориентировано на AJAX-запросы).

Узнать можно будет поначалу: NTP-время, курсы валют, прогноз температуры воздуха, давления и влажности в точке (GFS-данные) - и т.д.

В итоге хотелось бы просто сайт или даже семейство сайтов, предоставляющих полезную информацию по запросу. Только полезную информацию. Никакого HTML'я, JavaScript'а, Flash'а и прочего...

Такая себе No Bull Shit - инциатива.

Коммерциализация этого хозяйства если и будет, то нескоро, поэтому - все, кому интересно - welcome.

Для начала есть оплаченный хостинг, но нет доменного имени. Если у кого-нибудь есть неплохое доменное имя, которым можно поделиться - делитесь. К сожалению, simple.info, как ни странно, занято, nobullshit'ы - тоже, поэтому ныне в поисках я пребываю.

Буду рад конструктивным идеям и предложениям.

 , , , nobullshit

DRVTiny
()

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

Форум — Admin

Много работал с 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 контейнеров?

Форум — Admin

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

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

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

 

DRVTiny
()

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

Форум — Talks

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

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

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

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

 , корябеда

DRVTiny
()

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

Форум — Admin

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

Есть множество 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?

Форум — Web-development

Меня поражает до глубины души тот факт, что мега-чудо фреймворки наподобие 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)

Форум — Admin

В соответствии с 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
()

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

Форум — Development

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

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

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

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

 ,

DRVTiny
()

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

Форум — Development

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

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

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

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

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

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

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

 , ,

DRVTiny
()

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

Форум — Web-development

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

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

Спасибо!

 

DRVTiny
()

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

Форум — Job

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

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

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

 , , ,

DRVTiny
()

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

Форум — Development

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

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
()

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

Форум — Web-development

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

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

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

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

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

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

СПАСИБО!

 , ,

DRVTiny
()

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

Форум — Development

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

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

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

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

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

 , мнк

DRVTiny
()

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

Форум — Web-development

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

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

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

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

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

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

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

 highcharts, highstock,

DRVTiny
()

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

Форум — Mobile

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

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

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

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

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

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

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

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

 ,

DRVTiny
()

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

Форум — Development
(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
()

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