Показаны сообщения с ярлыком работа. Показать все сообщения
Показаны сообщения с ярлыком работа. Показать все сообщения

пятница, 29 октября 2010 г.

Непростая сортировка.

Иногда нужно отсортировать данные как числа, но сами данные не совсем числа, а сборная солянка из цифр и букв

Допустим у вас есть такие данные: 90A,89B,90C,102A,89A ;) их нужно отсортировать по возрастанию - на самом деле - код очень простой:



use Data::Dumper;

sub exsortproc
{
return $a<=>$b if ($a != $b) ;
return $a cmp $b;
};


my @data=('90A','89B','90C','102A','89A');
my @out;
@out = sort exsortproc @data;

die Dumper(\@out);


Output:

$VAR1 = [
'89A',
'89B',
'90A',
'90C',
'102A'
];

Все дело в том что если нужно перл кастует скаляр '90A' к числу 90.

Успехов вам и побольше 90C :)

суббота, 16 октября 2010 г.

Рабочее

На работе есть вроде внутреннего корпоративного сайта, так вот с недавних пор он стал странно грузиться.
Боковая панель - подгружалось полностью где-то за 15 секунд.

Искали и нашли причину, в футоре стоял счетчик, сервер который сейчас не доступен, причем ответ что от сервера отрубает именно по таймауту.

понедельник, 27 сентября 2010 г.

Работа

Знаете как трудно сосредоточиться на работу, когда лень?
Ищешь кучу причин, посмотреть почту, интернет или даже поиграть в конце-концов.

Но!
Стоит понимать, что каждый сделанный час работы, приближает тебя (хочется написать к пенсии ;)) к финалу твоей мечты.

Это и только это заставляет меня работать, когда лень и когда не охота работать.

пятница, 10 сентября 2010 г.

Не работается

Последние недели две мне катастрофически не работается. Нет, конечно я делаю механическую работу, которую говорят, но как-то не прет по основному проекту, который я курирую. Для программиста – это наверное хуже всего.

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

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

понедельник, 26 июля 2010 г.

Жарко, но надо работать

Жара в офисе, те кто сходили в отпуск в июне, ненавидят тех кто пошел сейчас. Работаем в обнимку с кондиционером.
Мне повысили з/п и теперь уж точно назначили куратором нового проекта.
Сейчас делаю генерацию печатных форм (CSS2) из данных и формата FastReport'а (без использывания их кода, т.к. все кроссплатформено и делаю на чистом g++).

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

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

Начальство вернулось из отпуска и издевается - типа я смогу взять свой первый отпуск уже в сентябре, когда будут дожди и холод :(

понедельник, 7 июня 2010 г.

SQL

Сегодня был нанесен сверх удар по моему восприятию мира.
Дело все в SQL запросе, суть такая есть главный запрос и к нему LEFT JOIN'няться несколько табличек:
Одна основная tbl1 и две добавочных (add1,add2), но у второй добавочной есть поле, которое ссылается на таблицу по типу add1 - add11
(смысл это экземпляры и контейнеры)

Изначальный мой красивый запрос был таким:

left join
(
tbl1
left join add1 on (add1.type = tbl1.value)
left join (add2 inner join add11 on (add11.type=add2.parent)
on (add1.type = tbl1.value)
) on tbl1.value = data.p1


т.е. связка add11.type = add2.parent жесткая.
Но запрос тормозил ужастно (кол-во записей в каждой таблице больше миллиона), и потом я заменил его

left join
(
tbl1
left join add1 on (add1.type = tbl1.value)
left join add2 on (add1.type = tbl1.value)
left join add11 on (add11.type=add2.parent)
) on tbl1.value = data.p1


Стал выполняться в десятки раз быстрее - хоть и стал более некрасивым.

среда, 5 мая 2010 г.

Забавно

Нашел сегодня забавный глюк.
У меня на стороне сервера генерился js-скрипт, который создается в зависимости от данных.
Так вот там среди прочего был массив строк, которые я квотировал под одинарную ковычки.
Все работало - тут бац не работает, в чем дело думаю. Искал. Около часа.
Сходили с коллегами - выпили пива, пришел - осенило. Среди прочего, что нужно квотировать под одинарную ковычку (а вернее кроме апострофа) нужно еще заменять \n - т.к. в javascript'е перевод на новую строку - разбивает строчку.
Вот так.

пятница, 30 апреля 2010 г.

Сейчас

Сегодня к нам пришел прошлый пришлый программист, из того тех, кто ушел от нас
и вот сегодня, когда (ну меня была трабла с начислением НДС по фактурам, связи с тем что накладые были частичные и их было несколько), так вот он посмотрел на мой код (мимолетом) и сказал тут лучше так - и сказал формулу.

И я понял - лучше так, подумал как я хреново (а кто лучше-то?) знаю бухгалтерию

А потом, Иван сказал мне, что то - что у нас было, уволился по несовпадению взгядов с ГГ.
Я - в ахуе.

вторник, 27 апреля 2010 г.

А бывает и такое

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

Потом видишь похожий кусок кода и тоже там исправляешь на новую редакцию.
Запускаешь проект - а там ошибка появляется, где-то, незвестно где.

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

среда, 7 апреля 2010 г.

Скрывает рекурсивно блоки в html

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

Накатал такой код

function hideall(e) {
//Тут я скрываю только определенные блоки, а именно у них идентификатор начинается на определенную букву
var k=e.id.substr(0,1);
if (k=='r' || k=='b' || k=='c') e.style.display='none';

for(var i=0;i<e.childNodes.length;i++){
//если тип = 1 то это дочерний элемент, а если другое что-то - то что-то другое
var k=e.childNodes(i); if (k.nodeType==1) hideall(k); }
}

среда, 17 марта 2010 г.

Багги

Два часа мучался с одной неказистой JS-функцией, суть удаление строки по принципу копируем на ее место предыдущую, а потом уменьшаем количество строк на 1.

Не работает и все тут!
Кофе и мат не помогли, только потом решил вывести (просто так) переменные на экран,
row=51, откуда думаю 51 если удаляю 5 строку из 13? Етишкин корень - row+1 срабатывало как для строки и получалась такая ахинея. parseInt и все дела.

Вот так гибнут нервы.