Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: пятничные коды
Питерская горнолыжная конференция > Общие форумы > Курилка
Ozzy
....
while (true){
console.out("let world wait");
}
....


while(sleep(10) == 10){
console.out("You've guess!");
sleep(20);
console.out("Let play again!");
}
........

Бывает и хуже, но уже по понедельникам....
Ozzy
вот еще:

[cut]
.....
.....
[cut]
sub a, b
jump safely_proc
[cut]
....
....
[cut]
nop
nop
nop
nop
safely_proc: nop
nop
nop
nop
nop
mov c, a
....
....
....


На вопрос: зачем метку обвесил нопами, автор сказал: это помехоустойчивый код, вдруг щетчег команд сбойнет....

Я не нашелся что ответить.
Егор
Инопланетяне в конфе. Дожили.
Mnch
Зато понятно, весело и логично
depo_broker
по первой шутке я понял так, что так компьютер учат быть похожим на матрицу :-)) типа, после глупостей человека, сидящего за компом, комп, как бы с ним разговаривает рекламными лозунгами и его мысли читает :-) да?
второе не вкуриваю пока.. йезыка не знаю.
С уважением
Ozzy
QUOTE (depo_broker @ 26.04.2008, 11:51)
второе не вкуриваю пока.. йезыка не знаю.

Макс, ща я тебя научу курить такое:

mov - переместить данные из dest в target
sub - вычитать
jump (в большинстве диалектов обычно - jmp) - безусловный переход, к команде, стоящей на указываемой метке
nop - нет операции (ничо не делать, перейти к след команде).

[cut]
.....
.....
[cut] - кусок кода вырезан, неважно чо он делает, известно лишь что там что-то есть но на это на плювать.
depo_broker
Мммм.. а что это за йезык-то?.. ну да не важно- этта часть кода- типо "бегущий слон" штолле?
В таком случае- талантлив, шельмец!.. :-))
С уважением


Ozzy
Гэта ассемблер. Лана, не парься - при встрече растолкую на палцах =)
swb
QUOTE (Ozzy @ 25.04.2008, 14:23)
На вопрос: зачем метку обвесил нопами, автор сказал: это помехоустойчивый код, вдруг щетчег команд сбойнет....

Я не нашелся что ответить.

Это всё издержки удефевления памяти и безудержного роста её объёмов и в пицуках и на контроллерах... было бы у товарища полтора кила раму или рому так память бы берёг и до извращений типа кода модифицирующего себя в процессе выполнения вновь дошёл wink.gif tongue2.gif blink.gif
Paul
Да этому баяну уж лет десять. Дело не в количестве памяти и помехоустойчивости, а в тараканах в голове...
Ozzy
QUOTE (Paul @ 29.04.2008, 11:24)
Да этому баяну уж лет десять.

Точней - декабрь 1996 года, ст. Бологое, контроллер управления ЭЦ ДЦ.

Код-ревью производил впс самолично, непосредственно на объекте. Все в то время были помешаны на помехоустойчивости микроконтроллерного управления безопасностью движения поездов.
Paul
Так это вы и есть автор сего шедевра? tongue2.gif
То, что нужна помехоустойчивость - эт понятно. Особенно на ж/д транспорте. Правда, не такая, как на авиа транспорте wink.gif
Только то, что тут написано, никакого полезного действия на помехоустойчивость не оказывает, ага.
Ozzy
QUOTE (Paul @ 29.04.2008, 14:02)
Так это вы и есть автор сего шедевра? tongue.gif
То, что нужна помехоустойчивость - эт понятно. Особенно на ж/д транспорте. Правда, не такая, как на авиа транспорте wink.gif
Только то, что тут написано, никакого полезного действия на помехоустойчивость не оказывает, ага.

Я автор код-ревью сего шидевра.

Автор кода - вполне уважаемый в своих кругах чел, нынче наверно даже где-то ктн... =)) В тот день привелось мне указать, что сбойнуть может не токмо щетчег команд, но и иные какие каскады. Это замечание стало квинтессенцией темы его дисера.
Paul
Однако, защите от сбоя счетчика тоже не поможет tongue2.gif
Забавные там у вас ктн...
Ozzy
Ну тогда он ктном и не был, после моего код-ревью призадумался, озадачился и отемился. Набралсо ума, в общем, с моей-то подачи.

зыЖ таки вспомнил: тот код я ревьюил именно в понедельник: в вскр выезжали, ночью приезжали, поутряне уже косяки косяками вылавливали.
Ozzy
Вот еще, оценка задачи разработчиком, по типу "нах дох нахярили, расхяривай нах":

QUOTE

что надо сделать:
- процедура формирования массива закачки 2 часа
- процедура анализа активности хостов 4 часа
- процедура сбора статистики 2-4 часов
- отладка всего от 4-8 часов (если не будет подводных камней )
+  отладка SQL  процедур +4-8 часов


Итого на 10 часов разработки - 16 часов багофикса. Или другими словами - из каждых 10 строчек первично разработанного (и осмысленного) кода предполагается переосмыслить и заменить 16. Да и то если не будет подводных камней. Из пояснений программера я так не понял, какие подводные камни нужны для разработки, и что в случае если я ему достану эти подводные камни, будет ли работа сделана быстрей и насколько.
Ozzy
Еще абзац.

Кодревьюил свежеиспеченный код перед выкладкой. Завернул на доработку.

перлы:

В N мест встречается подобное, с вариациями стрингов и интов:
QUOTE

strncpy( str, "([[:punct:]|[:space:]])*",24);
str +=24;
*str++ = *from;
esc_count += 25;

Но иногда встречалось и такое:
QUOTE

*str++ = '[';
*str++ = ' ';
*str++ = ']';
*str++ = '+';
esc_count +=3;


QUOTE

int dbl_buff_len = BUFSIZE;
dbl_buff_len = dbl_buff_len << 1;
initid->max_length = dbl_buff_len ;
initid->ptr = malloc( dbl_buff_len );

далее dbl_buff_len нигде не участвует....

Аналогичное удвоение в другом куске кода работает так:
QUOTE

int dbl_buff_len = BUFSIZE + BUFSIZE;

Любопытно что мешало чюдаку напесать #define DBLBUFSIZE BUFSIZE << 1

Но когда я увидел такую строчку:
QUOTE

  *length=esc_count + 48; // 48;


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

Куда катится ИТ?????
Ozzy
Дожили.

Еще один чюдак.
Взял я его к себе, с надеждой что чел Старой Закалки, старше меня лет на 10ть, и на собеседовании разумные речи говорил...

Так вот он с пеной у рта мне доказывал что strncpy работает быстрей чем strcpy. Даже тот мой аргумент что надо проверять два условия у strncpy - на длину и окончание строки, супротив одного у strcpy - на окончание строки, не убедил чела. Отсыл к сорцам ничего не дал - потому что - во всеуслышание - "нечего сорцы смотреть если я и так знаю".

Ткнул носом в сорцы. strncpy - основной цикл 5 строк, 9 операторов, strcpy - 1 строка, 4 оператора.

На следующий день чюдак скромненько извенилсо по аське.

Извенить чтоле?..

И за что в ИТ растут ЗП????
Ozzy
Если солнце утром аккуратно всходит,
а потом опять же вечером заходит,
не считай за баги пятна. В этом коде
ничего не трогай, лучше выпей пива.


Починили давешний баг. Теперь восстанавливают бекапы. Закат солнца производится вручную.
Yar
Оззи, многие персонажи старой закалки считают западлом верить в оптимизатор и полагают что полученный код, "оптимизированный" (как им кажется) вручную способен без труда прочесть любой другой персонаж старой закалки (што правда). Персонажей новой закалки они за людей не признают.

Насчет стиля: бывает "инженерный" подход к кодированию, когда место каждого оператора продумывается ДО того как он размещается в коде. А бывает "скульптура" - когда код формируется в процессе размышлений. "Скульптурный" подход хорош для прототипирования неочевидной задачи. Но часто остается и в финальном коде.

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

А потом Интел выпустил новую модель процессора, в которой математический сопроцессор был встроенным (как и есть по сей день) и на некоторых операциях работал чуть ли ни быстрее чем целочисленный.

С тех пор я болт забил на мелочную оптимизацию, все равно пока продукт делаешь производительность вырастет больше чем можно сэкономить. Вот так и получаются уроды типа Висты.
swb
QUOTE (Yar @ 12.05.2008, 13:05)
многие персонажи старой закалки считают западлом верить
....................................
С тех пор я болт забил на мелочную оптимизацию, все равно пока продукт делаешь производительность вырастет больше чем можно сэкономить. Вот так и получаются уроды типа Висты.

Хе-хе!!! wink.gif А не проявления ли это "проявляющейся закалки" ?

И чем Виста-то не угодила? Каток "технического "-прогресса_"" неумолим tongue2.gif

И всем хочется кушать - значит нужны поводы заставить _клиента_ купить новый комп., новую ось, новое прикладное ПО...

И разработчики при деле - всё отлично up.gif
Ozzy
Яр, мелочность оптимзации одного и того же кода очень сильно зависит от решаемой задачи.

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

В информационных же системах традиционно громаден объем обрабатываемых объектов (сиречь примитивов), при небогатом наборе оных операций, и вся работа происходит на ограниченном наборе камней - то есть много меньше одного камня на одного клиента (тобишь СМО по типу "вас тут много а я одна и зарплата маленкая - всево 3.3 вольта").

Так вот, если выходить на графическую информационную систему - не в смысле поиска клучевых слов "по картинкам" ака гугль и даже не ОЦР ака "Поток" в лице гаишной распозновалки заведомо помытых номеров (потому ща навалились чтоб нумера мыли), а более правильную: поиск похожего фрагмента в базе картин - вот тут окромя оптимальности графодвигла, решаемой ну скажем сопроцессором или аксилиратором (или даже графическим сервантом что разумней) приходит на ум оптимальность логодвигла, что решается обычно людьми.
Yar
Ключевое слово - "мелочная". Мне пару раз удавалось оптимизировать работающий (и продаваемый!) код раз в 100. Но это другая история и другие методы.

Виста - порождение законов Паркинсона в чистом виде. Была история о разработке панельки "Logout | Shutdown | Restart" в Висте. Рекомендую найти и ознакомиться.
Yar
Оззи: штобы понять чем мелочная оптимизация отличается от действительно полезной надо изучать результат работы оптимизатора компилятора. И изучать соответствующую информацию после выхода каждой его новой версии. Тогда и будет понятно о чем надо заморачиваться, а на что времени тратить не стоит. Со временем в голове возникают наборы правил, типа устойчивых выражений в человеческом языке.

Профайлер еще рулит.
Ozzy
Яр: дык и нету спора-то, а где нет спора - нет диспута, а нет диспута - то вроде как и проблемы нет.

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

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

Согласен. Но человек слаб. Иногда простой, ясный и красивый инженерный код тупит невероятно, из-за какой-то мелочи. Мы давеча не поленились выпустить новый релиз одного из продуктов, который я смог ускорить в 10 раз, заменив 2 строки кода. Так и написали: "new features: works 10 times faster".
Ozzy
QUOTE (Yar @ 12.05.2008, 14:07)
... я смог ускорить в 10 раз, заменив 2 строки кода...

я знаю как это делается =))

QUOTE
sleep(10);


меняем на

QUOTE
sleep(1);



Национальный индусский способ показать заказчику прогресс =))
DimOs
QUOTE (Ozzy @ 12.05.2008, 14:19)
QUOTE (Yar @ 12.05.2008, 14:07)
... я смог ускорить в 10 раз, заменив 2 строки кода...

я знаю как это делается =))

QUOTE
sleep(10);


меняем на

QUOTE
sleep(1);



Национальный индусский способ показать заказчику прогресс =))

up.gif smile.gif
Yar
Как ни странно - похоже. Но, конечно, сложнее и без индусских штучек. Кстати, ноги проблемы росли из уродского кода микрософта.
Longobard
Это еще цветочки. Я видел использование nanosleep-а во всяких постоянно вызываемых функциях. Потом два месяца эти перцы делали вид, что оптимизировали код, а на деле занимались другим проектом за деньги заказчика проекта с нанослипом. Так что смотрите профайлером на основные дырки в производительности. Обнаружить "левые" задержки производительности можно довольно быстро, имея в руках нормальный профайлер.
Ozzy
Ващет я всегда ищю sleep в чужом коде, до профайлера не доходит. А ищю потому, что некоторые деятели синхронизируют две параллельные задачи перекурами надолго (sleep(600) обычное дело =))), не заботясь о семафорах и прочих непацанских ивентов.
Ozzy
Вот еще кора.

Приходид чел вчера к мне, грит: вот, задача. Как решать?

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

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

Чел удовлетворен и ушел решать задачю.

Прошли сутки.

Пришел чел сення к мне, грит: вот, задача. Как решать?
У меня ощущение Дня сурка. Говорю что вчера же я растолковывал сию таску и преуспел.

Начинаю все сызнова.

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

Так вот на том паттерне чел сказал: ой! понял в чем моя проблема! Однако не понял: я смотрю те источники данных что указано в сей рутине, а там вовсе не те данные.

Я ощущаю признаки надвигающегося срыва....

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

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

Вроде не молдаванин и не таджыг.

Высокие блин тихнологии!
Ozzy
Нынче у одного из дивелоперов ДР. Диалог:

XXX (12:38) :
на кухне торт расшарили с правами 777 !
ZZZ (12:38) :
тоесть в него можно писать???????
Mnch
с правами 777 можно всем делать что угодно, даже исполнять торт. для писать-читать достаточно шестерок
Ozzy
Правда исполнить торт можно все го 1 раз - например, выполнить его в... именинника.
Yar
Я вот тоже поржал сначала, а потом задумался о том как "исполнить" торт.
siroco
Если торт вкусный, то:

# id siroco
uid=800(siroco) gid=800(nordica_rules)
# chown siroco the_cake
# chmod 700 the_cake

rolleyes.gif

Ozzy
Не. Я этот скрипт не буду исполнять.

У тебя нету прав на исполнение мной твоих скриптов =)))

Пойду исполню торт.
qmaka
Кииииборги... laugh.gif
DimOs
Нет, это просто последствия жизни по юних и жава smile.gif
Ozzy
плять: Чувствую что хочу в сортир.
Иду в сортир, беру с собой кружку чтоб наполнить чаем походу.
Кружку чаем наполняю, в сортир зайти забываю.
Чай же пью, выпиваю полностью кружку.
Через некоторое время goto плять.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2026 IPS, Inc.