LINUX.ORG.RU

Сообщения DRVTiny

 

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

Форум — Development

Нужен модуль 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

Форум — Web-development

Я дёргаю 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

Форум — Development

Как объяснить столь странное (во всяком случае для меня, как для 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-специалисты никому не нужны?

Форум — Talks

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

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

Тчк

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

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

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

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

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

 

DRVTiny
()

jEasyUI - какие есть косяки / почему не нужно?

Форум — Web-development

Есть такая штука, jQuery EasyUI

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

Безусловно радует и то, что EasyUI не выносит мозг и не заставляет строить вселенную заново, руководствуясь девиациями авторов (намёк на Anglular :)). Это просто плагин для jQuery, который дофига всего умеет.

Тем не менее - сильно отталкивает необходимость писать HTML-код в приличных объёмах, разметка которого, как водится, не имеет ни малейшего отношения к тому, что нужно в итоге получить. Я уже как-то привык к тому, что всё настраивается в JS-коде, а б-гомерзкий хытымыль на 90% генерируется самим плагином .

Ну и, столкнувшись со странностями того же W2UI, который умеет ровно то, что мне нужно (страница, состоящая из прямоугольных областей с изменяемыми размерами), но работает настолько странно, что загрузка чего бы то ни было в панель становится весьма нетривиальной задачей - есть подозрения, что и у jEasyUI таких косяков хватает.

В общем, у кого есть опыт - делитесь, стоит использовать сабж или есть какие-то более интересные плагины (чистый jQuery UI?).

P.S. Сторонники Angular, ExtJS, Dojo - будьте добры, ступайте себе мимо, пожалуйста.

 easyui,

DRVTiny
()

А если содержимое layout'а - объект?

Форум — Development

Пытаюсь перевести своё махонькое веб-приложение на W2UI с костылей классических самописных. Reason - обалденно понравились их layout'ы

Вопрос только в том, что грузить pure html внутрь layout'ов в таком вот стиле:

			var sContent='\
			<div id="blkLabel" style="float:left">\
				<span>Показывать:</span>\
			</div>\
			<div id="blkCheckList"  style="float:left">\
				<select id="selCheckList" class="clsCelCheck"  multiple="multiple">\
					<option id="opt1" class="opt1">Графики</option>\
					<option id="opt2" class="opt2">Параметры</option>\
					<option id="opt3" class="opt3">События</option>\
					<option id="opt4" class="opt4">Отчёты</option>\
				</select>\
			</div>';

- по-моему крайне неудобно (ну как минимум некрасиво :) ).

Чего бы хотелось:

Взять какой-то уже готовый элемент из DOM-дерева и сказать: W2UI, перемести мне его внутрь панели «top» и вычисти его в том месте, где он был раньше.

И вроде бы W2UI умеет вместо просто строки рендерить «объекты».

Только это не DOM-объекты, а, в частности, объекты самого W2UI.

Отсюда дурацкий вопрос: а если мне хочется много HTML кода, никакого отношения к W2UI в принципе не имеющего, вставить в панельку layout'а, то... в общем, что делать в такой ситуации, как быть? :)

 , w2ui

DRVTiny
()

Template toolkit: для чего это нужно?

Форум — Web-development

У меня есть, возможно, странный вопрос, который я просто не могу не задать, поскольку пришлось столкнуться с ЭТИМ, и оно меня удивило, так что нужно с кем-нибудь поделиться.

Есть вот этакое: http://www.template-toolkit.ru/Manual/Intro.html

Оно встраивает в веб-страницы свой птичий язык, генерирующий части веб-страниц.

ОК. Но я только одного не могу понять: а в чём проблема делать то же самое просто из нормального кода на Perl?

Собственно, с шаблонизаторами сталкиваюсь часто, и если для меня как для сторонника концепции веб-приложения (максимум JavaScript, просящего сервер о различных услугах AJAX'ом) - генерация HTML'я на стороне сервера представляется немного удивительной, то шаблонизаторы вообще ломают мой мозг напрочь.

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

 ,

DRVTiny
()

HTMl и CSS - убогое говно. Неужели нет альтернатив?

Форум — Talks

Собственно, вопрос не о том, что вёрстка HTML и CSS - это либо попытка рулить собакой, дёргая её за хвост, либо набор готовых рецептов «чтобы собака пошла направо, кинь гранату слева».

Вопрос в том, почему за вот уже 30 лет как ни один браузер так и не сделал поддержку нормального объектно-ориентированного GUI-Toolkit подобного языка создания формы веб-приложения?

По-моему было бы как минимум логично, чтобы те же GTK или QT-приложения могли работать в браузере.

Я понимаю, что вся индустрия «кто в лес, кто по дрова» и самая большая проблема - договориться о стандартах, что в случае с тем же Microsoft нереально. Но неужели нигде нет хотя бы элементарного понимания, что HTML что с CSS, что без него - это алхимическая клоака, над которой можно строить сколь угодно «совершенный» код веб-приложения, но сути это не изменит. А суть в том, что в итоге всё равно придётся заниматься мистическими танцами с бубном под названием «вёрстка» и в конечном итоге браузер пользователя проглотит мегабайты какого-то унылейшего мусора для отображения формы, которую даже на ассемблере можно было бы запрограммировать килобайтом кода!

Я знаю, что есть, например, GWT. GWT хорош и красив и вроде делает то, что нужно... До тех пор, пока речь не заходит о том, что в итоге-то он всё равно генерирует те же мегатонны HTML, CSS и JS, причём ещё и крайне тормозного.

Кто-нибудь в курсе, хотя бы исторически была когда-либо речь о вменяемых альтернативах HTML'ю?

 divlitabletrtd-shit,

DRVTiny
()

Программирование конечных автоматов

Форум — Development

Какой язык программирования наилучшим образом адаптирован под задачи построения автоматов конечных состояний?

В принципе понятно, что почти на любом языке реализуемо, просто интересно, что есть из современного, особо удобного для FSA-шек?

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

 

DRVTiny
()

Сбивается раскладка, устанавливаемая setxkbmap

Форум — Desktop

Ubuntu 13.04

Пользуюсь IceWM.

В $HOME/.icewm/startup устанавливаю раскладку и разрешаю убивать X-сервер по Ctrl+Alt+Backspace:

setxkbmap -layout 'us,ru'
setxkbmap -option 'grp:caps_toggle,grp_led:scroll,compose:ralt'
setxkbmap -option 'terminate:ctrl_alt_bksp'

Видимо, из-за того, что ныне XKB не в почёте, а вместо этого используется что-то там через D-Bus - раскладка эпизодически, раз в час-два благополучно «слетает».

Где настраивается раскладка для «более лучшего метода» - я не в курсе: перепробовал все известные мне конфигураторы gnome'а, которые по идее должны были как раз в нужном месте изменить раскладку - там везде уже стоит CapsLock, а по факту слетает вечно на Alt+Shift.

Я поставил скрипт установки раскладки в свой пользовательский cron, запускаю */5 минут, но это не помогает: она, зараза, почему-то сама не восстанавливается ни через 5 минут, ни через час (при этом cron ничего интересного на mail не шлёт - значит, по идее STDERR команды пуст).

Подскажите, пожалуйста, направление, куда копать?

И, может быть, есть шанс вернуть всё-таки нормальный старый-добрый xkeyboard?

Спасибо!

 , ,

DRVTiny
()

А есть ли ещё такие гениальные игры как «Мор. Утопия»?

Форум — Games

Мор: Утопия бы просто потрясающей.

Я не встречал ещё ни одной такой же «аристократично-готичной» игры со сложной диалоговой системой, витиеватыми текстами и по-настоящему тревожной гонкой со временем.

Но, может, просто плохо смотрел? В принципе, Deus Ex с мрачными бомжами на улицах Нью-Йорка - ничуть не менее глубок, но я уже проходил его и далеко не один раз...

Может, ещё есть что-то эдакое, а я просто не заметил?

 ,

DRVTiny
()

Увидеть, какие функции вызываются

Форум — Web-development

Хочу невозможного, к сожалению.

А именно: хочу просто увидеть, какие функции JavaScript вызываются.

Если конкретно, то мучаю Zabbix, а там страница с графиком... крайне интересно устроена. Кто не интересовался (все?) - наверное, даже не заподозрит, что такой ад вообще может быть.

Тем не менее, это так. Никакие break-point'ы в данном случае не помогут понять, как это работает, поверьте мне на слово. Разве что ставить breakpoint по всех функциях, но с таким же успехом я могу в каждую фунцию вписать console.log()

Единственный вариант - видеть в реальном времени, какие функции вызываются. Конкретно - в консоли браузера нужно увидеть:

method objectPapa.foo called, parameters: bla,bla
method objectMama.bar called, parameters: psch,psch

Господа веб-разработчики, такие чудеса в нашем мире возможны?

 , , ,

DRVTiny
()

Как определить оптимальную высоту iframe'а?

Форум — Web-development

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

Хотелось бы выбирать высоту iframe'а так:

Выбрать минимум из двух значений:

1) Расстояние от верха iframe'а до нижней границы окна

2) Минимальная высота загруженной в iframe страницы

Кто-нибудь сталкивался с подобным? Для меня JavaScript немного «в сторону» от основного приложения, поэтому приходится прямо по ходу дела изучать. Но вот как определить минимальную высоту iframe, при которой ещё не будет скроллинга (пункт 2) - пока не нашёл :(

P.S. Собственно, пока читаю результаты поиска Google: https://www.google.ru/search?client=ubuntu&channel=fs&q=determine+minimal+iframe+height+without+scrolling\&ie=utf-8&oe=utf-8&gfe_rd=cr&ei=elHbVNvSJ4vBNLX9gNgM#newwindow=1&channel=fs&q=determine+minimum+iframe+height+without+scrolling

 

DRVTiny
()

Матчинг содержимого кавычек

Форум — Development

Вроде бы простая задача, но у меня не получается сделать лучше, чем «в лоб»:

foreach (qq("abcedefhjhj")) { 
 /^(?<quo>['"])(?<text>(??{ '[^'.$+{quo}.']+' }))\g{quo}$/ && 
   print "match found\n" 
}

Есть 2 требования к регэксу:

1) Кавычки могут быть одинарными или двойными, мы заранее не знаем, какие именно будут использованы;

2) Внутри текста, заключенного в кавычки, не должны содержаться эти самые кавычки.

КАК правильно-то??

 ,

DRVTiny
()

Microsoft.com говорит: Linux!

Форум — Talks

 ,

DRVTiny
()

jsTree: автоматический горизонтальный скроллинг?

Форум — Web-development

Есть HTML-страница, разделённая по вертикали на 2 div'а: в левом, как водится, дерево, а в правом - свойства выбранного элемента дерева. Размеры div'ов рассчитываются просто как процент от ширины окна, менять это нельзя.

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

В идеале должно быть так: если пользователь выбирает в дереве элемент, который «не умещается» по горизонтали, всё дерево уезжает влево так, чтобы выбранный элемент был возможно правее и его текст отображался наиболее полно: если текст больше вообще ширины родительского div'а, то элемент отображается частично, начинаясь в крайней левой позиции, если же длина текста меньше ширины div'а, то текст отображается полностью, «прижимаясь» к правому краю.

В целом наверное с любыми деревьями горизонтальный скроллинг - это потенциально неисчерпаемый источник проблем, особенно с учётом распространённости мобильных браузеров с крохотными viewport'ами.

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

Спасибо!

 jstree,

DRVTiny
()

Самый быстрый способ увидеть картинку (битмэп)?

Форум — Development

Товарищи!

Иногда возникает на удивление насущная задача посмотреть картинку, выполнив команду с путём до оной картинки.

Пока решаю оную задачу с помощью утилиты display из пакета ImageMagick. Вроде работает быстро, но... а вдруг есть что-то более специфичное и ещё более быстрое? Мне не нужно особо смотреть SVG-шки, например, не нужно конвертировать что-то куда-то - просто смотреть обычные битмэпы и всё.

На TK или на чистом XLib и без использования такой относительно тяжёлой библиотеки как ImageMagick - не найдётся ль чего? Я бы себе вместо display прописал в «альтернативах».

 ,

DRVTiny
()

А чего оно такое, извините, (1)?$x=1:$x=2 ?

Форум — Development

[preamble] Все мы знаем о том, что реклама - не двигатель торговли, а инструмент охамевшего спекулянта, искренне желающего ничего не делать, а только пользоваться результатами чужого труда, поскольку тому, кто работает, как правило некогда думать о том, как бы втюхать произведённое втридорога.

Все мы также знаем о том, что Yandex - лучший друг спекулянтов, потому что основная их статья доходов - это реклама и недостоверная информация в Маркете. Та самая грёбаная реклама, которая делает из интернет большую смердящую навозную кучу с опарышами inside... [/preamble]

Но суть конечно не в этом, а в том, что у Yandex'а задачки интересные. Вот, в частности:

my $x=1;
$x=(1)?$x=1:$x=2;
print $x;

Что будет напечатано?

Ага, напечатано будет «2».

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

Если, например, сделать $x=(1)?print "hello\n":print "bye\n", то bye вы уж точно не увидите.

Так почему же в описанном выше случае значением будет всё-таки «2», а не «1»?

 

DRVTiny
()

Рекурсивный матчинг вложенных скобок

Форум — Development

Строку, которая должна соответствовать шаблону, см. в самом коде:

my %p=('('=>')','{'=>'}');
my $a='fg{}hg (  (gh{jkjk} (h) g (llh) ) ( (jkj) (k(l h{} jhjhj )k) k) kkk) jkjkj (aaa)';
print "hello\n" 
 if $a=~m/^((?>[^({})]*)(?:([({])(?-2)(??{ '\'.$p{$2} })(?>[^({})]*))*)$/;

Вопрос: работает-то оно работает, но можно ли было проще сделать?

 ,

DRVTiny
()

Почему сдохли смартфоны с аппаратной клавиатурой?

Форум — Talks

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

Так почему аппаратные клавиатуры умерли? Никому не нужна альтернатива? Никто не набирает тексты на смартфоне? Даже СМС-ки???

 ,

DRVTiny
()

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