най-трудния проблем
16 отговора
950 прегледа
най-трудния проблем
Можете ли да опишете най-трудния проблем, който сте преодолeли и как, в практиката си като програмист?
Преди да направиш нещо, преброй до 20. усмихвай се по-често от другите
Преди да направиш нещо, преброй до 20. усмихвай се по-често от другите
Re: най-трудния проблем
ами зависи какво се разбира под най-труден.
ако говорим за проблем който е изтръгнал най-много псувни от гърлото ми, то това е определено борбата с DirectShow. ако говорим за концептуално трудни неща, то не мога да дам точен отговор, а и може да прозвучи като самохвалство ако все пак опитам.
ако говорим за проблем който е изтръгнал най-много псувни от гърлото ми, то това е определено борбата с DirectShow. ако говорим за концептуално трудни неща, то не мога да дам точен отговор, а и може да прозвучи като самохвалство ако все пак опитам.
Хммм...
В армията ;)
Не труден, но проблема трябваше да се реши бързо.
В 4 следобед, под-полковника Пенев ми заяви че му трябва календар. Машината е 486/DOS със Borland Pascal 7.00. Интернет няма, годината е 1997. Грудово.
Календара трябваше да бъде разпечатан и готов до 4:25-4:30. Нямах подръка функция която ми връща какъв е ДЕНЯ при дадена ДАТА. Затова постъпих така:
Итерирах през всеки ден от месеца който трябваше да се печати, и установявах текущатата дата на компютара на този ден (календара не беше за текущия месец, а за произволен напред). След това питах OS-а, какъв е ДЕНЯ - и то връщаше - ПОНЕДЕЛНИК, ВТОРНИК, etc.
Не най-трудната задача... Но в 4:20 програмата беше готова да печата календара (при това форматиран със ония странните символи за таблици).
....
ДЕН ПО КЪСНО С УЖАС РАЗБРАХ ЧЕ ТРЯБВА ДА ИЗПЕЧАТАМ КАЛЕНДАРИ ЗА ДВЕ ГОДИНИ НАПРЕД, В НЯКОЛКО ПЪТИ ПО-ГОЛЯМ ФОРМАТ. БЖЖЖЖЖЖЖ
Не труден, но проблема трябваше да се реши бързо.
В 4 следобед, под-полковника Пенев ми заяви че му трябва календар. Машината е 486/DOS със Borland Pascal 7.00. Интернет няма, годината е 1997. Грудово.
Календара трябваше да бъде разпечатан и готов до 4:25-4:30. Нямах подръка функция която ми връща какъв е ДЕНЯ при дадена ДАТА. Затова постъпих така:
Итерирах през всеки ден от месеца който трябваше да се печати, и установявах текущатата дата на компютара на този ден (календара не беше за текущия месец, а за произволен напред). След това питах OS-а, какъв е ДЕНЯ - и то връщаше - ПОНЕДЕЛНИК, ВТОРНИК, etc.
Не най-трудната задача... Но в 4:20 програмата беше готова да печата календара (при това форматиран със ония странните символи за таблици).
....
ДЕН ПО КЪСНО С УЖАС РАЗБРАХ ЧЕ ТРЯБВА ДА ИЗПЕЧАТАМ КАЛЕНДАРИ ЗА ДВЕ ГОДИНИ НАПРЕД, В НЯКОЛКО ПЪТИ ПО-ГОЛЯМ ФОРМАТ. БЖЖЖЖЖЖЖ
Re: най-трудния проблем
VB6. Програма, която се обръща към 30 устройства (ферментатори) по сериен порт.
Неясно защо времето за извършване на операцията постепенно нараства и накрая хич не бачка.
(Ползвах MSComm контрола.)
Наложи се да разуча класовете във VB, и направих отделно ActiveX EXE (поради липса на multi-threading, направо multi-process
). Работата заспа! Вече бачкаше.
Между другото поради липсата на таймаут поддържка се налагаше тя да се прави ръчно...
Сега като ползвам WinAPI за серийния порт + C++ Builder, подобни операции се изпълняват за 10 пъти по-кратко време.
Неясно защо времето за извършване на операцията постепенно нараства и накрая хич не бачка.
(Ползвах MSComm контрола.)
Наложи се да разуча класовете във VB, и направих отделно ActiveX EXE (поради липса на multi-threading, направо multi-process
Между другото поради липсата на таймаут поддържка се налагаше тя да се прави ръчно...
Сега като ползвам WinAPI за серийния порт + C++ Builder, подобни операции се изпълняват за 10 пъти по-кратко време.
виж ти...
явно борбата с дните на седмицата е често срещано явление в казармения софтуер. аз също писах функция за ден от седмицата при известна дата. разбира се проверих си в кой ден съсм се родил :)
при мен машината беше правец16, годината беше 1999, а програмата беше за тиловашките глупости със седмичните разкладки.
при мен машината беше правец16, годината беше 1999, а програмата беше за тиловашките глупости със седмичните разкладки.
Най-неприятният
Трудно ми е да кажа кой е най-трудният проблем, но си спомням много добре най-неприятния. Стовариха ми една камара С++ класове писани дълго време от внезапно напуснал. Нито документация, нито коментари като хората, само общи идеи кое за какво служи. И трябваше много бързо да разбера как работят, да чистя бъгове в тях и да ги развивам. Голямо ровене падна. Прибавям и факта, че шефът (като повечето шефове), получаваше сърцебиене само при споменаването на понятието "пренаписване".
Редактирано от pyrx на
пренаписването
интересно защо шефовете така се плашат от пренаписването. аз лично го харесвам. за щастие моят шеф явно по-добре се отнася към него спрямо твоя, защото не се съпротивлява много когато му предложих да пренапиша едно нещо. а отделно много пъти съм пренаписвал компоненти без никой да знае - по мое мнение това в доста от случаите е по-правилния подход от отстраняването на трудноуловими бъгове. а сега в работата си се занимавам с пренаписване на един редактор който аз съм правил преди време, дори не съм сменил платформата, просто сега пиша по-добре и сметнах че ще спечеля време ако пренапиша редактора, отколкото ако се мъча да му дописвам нови функции.
Re: пренаписването
плашат се защото вече са платили за написване и не искат да плащат отново за същото, а пък и не се зане дали ще е за последно.
-----------------------
гърбавия, ковчег ще го изправи
-----------------------
гърбавия, ковчег ще го изправи
Re: пренаписването
ами то ако нещото е работещо и обявено за завършено, няма смисъл да се пренаписва. обаче разширенията също изискват време и пари. ако прецениш че едно пренаписване ще ти спести време и пари от бъдещите разширения/ дебъгвания, то тогава си струва. въобще, дори да оставим настрана програмирането, доста ситуации има, когато за да стане работата, трябва направеното с кофти проект да се разруши и да се започне с нов проект начисто.
биореактор
Леле! Че кой е поверил на ВинДос тези ферментатори! Ами ако вземе да забие?!
Или то не е било за управление, а само за наблюдение?
Само от любопитство -- какво имаше във ферментаторите?
Или то не е било за управление, а само за наблюдение?
Само от любопитство -- какво имаше във ферментаторите?
Re: биореактор
Ами беше под Windows98, и не забиваше!
Да, само за наблюдение, досега от 6-7 програми, които съм правил от тоя сорт, само 1 управляваше - пече абразивни дискове.
И то под ДОС и някакво PC 386 или даже по-зле... Ама е железна!
Еми какво да има във ферменаторите - грозде имаше...
Да, само за наблюдение, досега от 6-7 програми, които съм правил от тоя сорт, само 1 управляваше - пече абразивни дискове.
Еми какво да има във ферменаторите - грозде имаше...
Re: най-неприятната...
Преди около 6 - 7 години трябваше да пиша софт за един авариен регистратор : 486 машина с 40-50 аналогови входове и около 200 дискретни - чете си ги машината и ако (по едни загубени критерии) прецени, че нещо не е наред, записва 1 сек. назад и 2-3 сек напред ( в RAM-a си ), пише и на дискета, и на IOMEGA, че и по мрежата го праща. И през цялототова време продължава да се чете входовете и критично да гледа и да цъка с език. Лошото е, че се чете ( мери ) през всеки 0.5 ms., е 'между другото" постоянно трябва и да се смятат 50-тина ефективни стойности, градиенти, мощности и фази. Показването на резултати на екрана ( текст ) - между другото. Естествено това може да работи устойчиво единствено и само под DOS. Kато връх на всичко стробът за четене се подава софтуерно и ако пропуснеш няколко микросекунди се появява джитер, който ти скапва резултатите. На 0.5 ms ти идва прекъсване и ти ТРЯБВА ВЕДНАГА да му обърнеш внимание.
Та там проблемите ми бяха два:
1. Как да пипам по адресите над 1 МБ. ( конвенционалните 640к хич на стигат ). Всеки трансфер се прави в Protected и тогава не чуваш прекъсванията ( освен ако не си китаец и не направиш своя v86 среда ). За този проблем намерих описание на един шашав недокументиран режим на работа на CPU, наречен "UnrealMode" ( [линк] ).
2. Drivers за мрежата ( NetBios ) явно бяха писани от човек, който счита, че няма по-важна работа от обслужването на NIC-a и като му дойде музата ( IRQ-to ) го нямаше по над 200 микросекунди. Тук вече вдигнах бялото знаме и се наложи да пренаписвам част от драйвера, че да ми пасне.
Това беше най-неприятната и черна работа, която съм вършил. А можеше просто като се мисли HW на чукачката да се предвити един таймер да ритва входните схеми през равен интервал.
Това е. Приемете го и като отговор по темата за пренаписването.
Та там проблемите ми бяха два:
1. Как да пипам по адресите над 1 МБ. ( конвенционалните 640к хич на стигат ). Всеки трансфер се прави в Protected и тогава не чуваш прекъсванията ( освен ако не си китаец и не направиш своя v86 среда ). За този проблем намерих описание на един шашав недокументиран режим на работа на CPU, наречен "UnrealMode" ( [линк] ).
2. Drivers за мрежата ( NetBios ) явно бяха писани от човек, който счита, че няма по-важна работа от обслужването на NIC-a и като му дойде музата ( IRQ-to ) го нямаше по над 200 микросекунди. Тук вече вдигнах бялото знаме и се наложи да пренаписвам част от драйвера, че да ми пасне.
Това беше най-неприятната и черна работа, която съм вършил. А можеше просто като се мисли HW на чукачката да се предвити един таймер да ритва входните схеми през равен интервал.
Това е. Приемете го и като отговор по темата за пренаписването.
Re: биореактор
>Еми какво да има във ферменаторите - грозде имаше...
Само така! Аз се уплаших да не е кисело мляко... :)
Само така! Аз се уплаших да не е кисело мляко... :)
Re: виж ти...
аз пък 88-89 :) - писах една програмка да разпечатва план за седмичните
и месечните мероприатия на ЗКПЧ-то - зам. ком. по политическата част :)
даже ми платиха 500 лв за проекта... е след данъците и след като
офицерите си взеха по някой лев и на мен ми дадоха - 87 лв - първите
ми пари от програмиране :)
не че беше трудно... ама нали сега идвам от кръчмата и ме изби на спомени
странно но и моата машина тогава беше Правец 16 (12MHz :) :) :) )
най-трудно беше възстановяването на сорса след като "шефа" ми
криптира с някаква тъпа програма за защита началото на HDD и си забрави паролата -- търсих си сорса сектор по сектор, добре че HDD бяха малки :))
и месечните мероприатия на ЗКПЧ-то - зам. ком. по политическата част :)
даже ми платиха 500 лв за проекта... е след данъците и след като
офицерите си взеха по някой лев и на мен ми дадоха - 87 лв - първите
ми пари от програмиране :)
не че беше трудно... ама нали сега идвам от кръчмата и ме изби на спомени
странно но и моата машина тогава беше Правец 16 (12MHz :) :) :) )
най-трудно беше възстановяването на сорса след като "шефа" ми
криптира с някаква тъпа програма за защита началото на HDD и си забрави паролата -- търсих си сорса сектор по сектор, добре че HDD бяха малки :))
уау! и пари си взел!
че ти си бил на голяма далавера бре!
а между другото и аз писах подобна програма като тебе! моята трябваше да разпечатва на принтер седмичната програма за занятията на войниците - по рано се пишеше на ръка. обаче аз я писах съвсем безплатно
. в казармата писах 3 програми, от които тая за разкладките със сигурност влезе в употреба, за седмичните програми не знам, а една още писах за един склад тя не влезе, защото така и не им намериха компютър за склада.
а между другото и аз писах подобна програма като тебе! моята трябваше да разпечатва на принтер седмичната програма за занятията на войниците - по рано се пишеше на ръка. обаче аз я писах съвсем безплатно
Така е,
не всички шефове се отнасят отрицателно към пренаписването "от нула". Повечето, обаче се страхуват, че ще отнеме много повече време, отколкото да се позакърпи как да е съществуващият код. Пък като го предадем в срок на клиента и си приберем парите, после "ще му мислим". 
Re: пренаписването
Да бе. А както много добре го казаха в "Разплата" като го гледах наскоро:
Ако не разбираш нещо - отърви се от него
Мечтата е мисъл, мисълта е идея, всяка идея се реализира. Аз не мечтая, а реализирам идеите си.
Ако не разбираш нещо - отърви се от него
Мечтата е мисъл, мисълта е идея, всяка идея се реализира. Аз не мечтая, а реализирам идеите си.