JOURFIXE

It is currently Wed Jun 18, 2025 3:10 am

All times are UTC - 8 hours [ DST ]




Post new topic Reply to topic  [ 48 posts ]  Go to page 1, 2, 3, 4, 5  Next
Author Message
 Post subject: Вкусный код
PostPosted: Mon Feb 22, 2010 3:44 pm 
Offline
Квисац Хадерах
User avatar

Joined: Sat Sep 08, 2007 10:06 pm
Posts: 12457
Я тут несколько часов трахался, искал решение к обновлению байндинга в Сильверлайте, и наконец все решилось несколькими строчками и одним эвентом. Приятно!

Эдит: собсно сабж, приводите примеры вкусного кода из собственного опыта.

_________________
...и другим местом пум-па-па, пум-па-па... (c) хмельник
...а потом мы с ним обсуждали, кто тут козел. (c) Rembat


Top
 Profile  
 
 Post subject: Re: Вкусный код
PostPosted: Mon Feb 22, 2010 4:37 pm 
Offline

Joined: Thu Nov 15, 2007 9:18 am
Posts: 3565
Location: NYC
((lambda (x) `(,x ',x)) '(lambda (x) `(,x ',x)))


Top
 Profile  
 
 Post subject: Re: Вкусный код
PostPosted: Mon Feb 22, 2010 5:01 pm 
Offline
1959-2015
User avatar

Joined: Tue Sep 04, 2007 2:57 pm
Posts: 22320
Location: USA, Illinois
эхх эта современная молодежь... когда доходит до траханья то предпочитаю то традиционное а не на экране - намного приятней :cheers:

_________________
Free men have arms; slaves do not. (William Blackstone)
The democracy will cease to exist when you take away from those who are willing to work and give to those who would not. -Thomas Jefferson
алполо дедушка с 27 Июля, 2009 года в 19:43


Top
 Profile  
 
 Post subject: Re: Вкусный код
PostPosted: Tue Feb 23, 2010 1:06 am 
Offline
User avatar

Joined: Wed Sep 12, 2007 11:15 am
Posts: 3222
Location: Geldrop, Nederland
Во времена старинные, когда деревья были большими... Преподавали на Физтехе курс PL/I. Так лектору (а был неплохой математий и програмист) крышу снесло (а вашему покорному слуге и того раньше). Была там в языке возможность перехвата и обработки ошибок: можно было прописать для каждого их типа либо "системную" реакцию либо свою (и продолжить исполнение!). Оказалось что можно написать такое - добрые люди на "базе" показали:
Code:
ON ERROR BEGIN; ON ERROR SYSTEM; ... <тут свои фантазии>; END;
Уже не помню, не нужны ли там были скобки... :(
Ну машина и изображала "fatal error" в случае математической ошибки, все по взрослому, а после этого програмулина (после коррекции) продолжала работать. Мануалы о таком сидении на двух стульях умалчивали... :D


Top
 Profile  
 
 Post subject: Re: Вкусный код
PostPosted: Tue Feb 23, 2010 1:17 am 
Offline

Joined: Mon Feb 25, 2008 1:40 pm
Posts: 15244
Location: Rostov-on-Don, Russia
Помнится, в прошлой жизни как-то долго бился над SQL запросом, который работал где-то с полчаса.
Оптимизация всякая особо не помогала.
Дней через несколько осенило - есть простейший критерий, который отсекает 90% ненужных записей и надо сделать запрос по нему, а нужный запрос делать уже по его результатам.
Работать все это стало несколько секунд.

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


Top
 Profile  
 
 Post subject: Re: Вкусный код
PostPosted: Tue Feb 23, 2010 1:40 am 
Offline
User avatar

Joined: Sun Sep 09, 2007 11:53 pm
Posts: 18377
Location: St.-Petersburg, Russia
Oleksiy
Операторных скобок в PL/I не было - были BEGIN; и END;
А обработкой исключений нынче никого не удивить, это только в те далекие времена было круто...

_________________
Кот домашний средней пушистости


Top
 Profile  
 
 Post subject: Re: Вкусный код
PostPosted: Tue Feb 23, 2010 2:15 am 
Offline

Joined: Fri Sep 07, 2007 11:39 am
Posts: 7153
Было несколько изящных решений в анализе графов, расписывать муторно.

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

Была хитрая ситуация, когда добавление ресурсов вместо ускорения приводило к замедлению системы. Оказалось - ещё один элемент в full mesh пересекал критическую черту.

Были решения, в которых задача многократно упрощалась за счёт того, что удавалось поделить казалось бы неделимое на ещё более мелкие составляющие. Имхо, "разделять и властвовать" для анжЫнера - один из главных навыков.

_________________
Пух. Винни Пух.


Top
 Profile  
 
 Post subject: Re: Вкусный код
PostPosted: Tue Feb 23, 2010 3:57 am 
Offline
User avatar

Joined: Sun Sep 16, 2007 1:38 am
Posts: 11717
Location: Israel, Netanya
Код на С++:

for (i=0; i < 1000; ++i)
for ( j = 0; j < 1000; ++j)
get_a_tree_and_emulate_an_array[i][j] = 0;

Казалось бы, делов-то - проинициализировать двухмерный массив. Но не всё так просто, это ж С++... Структура данных представляла собой что-то вроде дерева массивов, первый индекс был реализован через оччень хитрый operator [], в общем, вся эта инициализация занимала порядка 20 минут. Всё (очень тяжёлое) остальное занимало порядка 40 минут, итого час. Добавил пару строчек - и оно как побежало... Инициализация - полторы секунды, всё остальное - а что я сделаю? Так и осталось 40 минут.

_________________
- Яч смить бю?
- Фыва прол джэ, йцук енгш!


Top
 Profile  
 
 Post subject: Re: Вкусный код
PostPosted: Tue Feb 23, 2010 6:44 am 
Offline
User avatar

Joined: Sun Sep 09, 2007 11:53 pm
Posts: 18377
Location: St.-Petersburg, Russia
Alex wrote:
Код на С++:

for (i=0; i < 1000; ++i)
for ( j = 0; j < 1000; ++j)
get_a_tree_and_emulate_an_array[i][j] = 0;

Казалось бы, делов-то - проинициализировать двухмерный массив. Но не всё так просто, это ж С++... Структура данных представляла собой что-то вроде дерева массивов, первый индекс был реализован через оччень хитрый operator [], в общем, вся эта инициализация занимала порядка 20 минут. Всё (очень тяжёлое) остальное занимало порядка 40 минут, итого час. Добавил пару строчек - и оно как побежало... Инициализация - полторы секунды, всё остальное - а что я сделаю? Так и осталось 40 минут.

Я бы сделал примерно так, по обычаю отцов и дедов:

Code:
type_of_the_member_of_array* p;
for (i=0; i < 1000; ++i)
  {
  p = get_a_tree_and_emulate_an_array[i];
  for ( j = 0; j < 1000; ++j)
    *p++ = 0;
  }

_________________
Кот домашний средней пушистости


Top
 Profile  
 
 Post subject: Re: Вкусный код
PostPosted: Tue Feb 23, 2010 6:51 am 
Offline
User avatar

Joined: Sun Sep 16, 2007 1:38 am
Posts: 11717
Location: Israel, Netanya
Domnitch wrote:
Я бы сделал примерно так, по обычаю отцов и дедов:

Code:
type_of_the_member_of_array* p;
for (i=0; i < 1000; ++i)
  {
  p = get_a_tree_and_emulate_an_array[i];
  for ( j = 0; j < 1000; ++j)
    *p++ = 0;
  }
Ну дык... Обычаи - дело крепкое :-) У меня там было "p[j]=0", а остальное то же самое.

_________________
- Яч смить бю?
- Фыва прол джэ, йцук енгш!


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 48 posts ]  Go to page 1, 2, 3, 4, 5  Next

All times are UTC - 8 hours [ DST ]


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group