Igor 12 Жалоба Опубликовано: 18 л Нашел здесь http://www.rsdn.ru/Forum/Message.aspx?mid=2047058&only=1 Особенно впечатлил нижеприведенный пример. Честно скажу, въезжал я в него минуты 3, пока дошел алгоритм этого потрясающего решения Кстати оно ко всему прочему еще и алгоритмически некорректное, т.к. пропускает пустые строки как числа и не учитывает знак, но это уже мелочи public static bool IsInteger(object value) { try { if (value == null) { return false; } else { string mynumber = value.ToString(); mynumber = mynumber.Replace("0","").Replace("1","").Replace("2","").Replace("3","").Replace("4","").Replace("5","").Replace("6","").Replace("7","").Replace("8","").Replace("9",""); if (mynumber.Length == 0) { return true; } else { return false; } } } catch { return false; } } Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
AlexW 2 Жалоба Опубликовано: 18 л Гениально. Просто гениально. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Sobakin 191 Жалоба Опубликовано: 18 л Ессно, правильные программеры пишут на C/C++, а не на Java :p Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alexander 0 Жалоба Опубликовано: 18 л зачот хорошо, что в .NET есть просто int.Parse() Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Sanya 0 Жалоба Опубликовано: 18 л Sobakin Это C#, а не Java А на Жабе пишут вполне правильные программы Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Sobakin 191 Жалоба Опубликовано: 18 л Sobakin Это C#, а не Java А на Жабе пишут вполне правильные программы Отстал я от жизни... Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
YurikK 1 Жалоба Опубликовано: 18 л Согласен! Бизнес давно уже показал что экономить надо на программистах а не на железе (ибо память и проц все мощнее все дешевее и все меньше энергоемнее, а программисты сколько жрали так жрут, если не больше) но не до такой же степени ... автор хоть пытался прикинуть кол-во сравнений символов и кол-во временных объектов (притом прошу заметить буфер стринга в куче а не в стеке) ? UPD: пытался найти смысл в экономии букв кода ... тоже не получилось ) блинн ... ну ладно, одно хорошо, он стал программистом а не медиком Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
nemesis 2 Жалоба Опубликовано: 18 л Честно скажу, въезжал я в него минуты 3, пока дошел алгоритм этого потрясающего решения Не, пока что шедевр на индусском форуме на тему "как узнать завтрашнюю дату" остался непревзойденным: void get_tomorrow_date( struct timeval *date ) { sleep( 86400 ); // 60 * 60 * 24 gettimeofday( date, 0 ); } Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Froggy 3 Жалоба Опубликовано: 18 л nemesis "как узнать завтрашнюю дату" Плакал... Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
helxen 218 Жалоба Опубликовано: 18 л Отослал нашим индусам - посмотрели и сказали "а что, хорошая мысль" Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Igor 12 Жалоба Опубликовано: 18 л Не, пока что шедевр на индусском форуме на тему "как узнать завтрашнюю дату" остался непревзойденным: Гениально! Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
соло 75 Жалоба Опубликовано: 18 л "как узнать завтрашнюю дату" :) а sleep() в джавах/С-шарпах разве не в миллисекундах? даже в гениальное решение может вползти концептуальная ошибка - когда функция вернет значение, это будет уже сегодняшняя дата. а потом неоптимально как-то написано. зачем ждать 24 часа, если до завтра, возможно, осталось всего несколько часов. оптимизируем (с поправками на незнание синтаксиса): void get_tomorrow_date( struct timeval *date ) { struct timeval *today = new timeval(); gettimeofday( today, 0 ); do { gettimeofday( date, 0 ); } while( today.getDay() == date.getDay() ); // надо же хоть чем то проц. загрузить... settimeofday( today ); // вернем время вспять } Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Igor 12 Жалоба Опубликовано: 18 л а потом неоптимально как-то написано. зачем ждать 24 часа, если до завтра, возможно, осталось всего несколько часов. оптимизируем (с поправками на незнание синтаксиса): Ну если уж началась оптимизация, то надо сказать, что твой вариант все-таки несовершенен Подумаем. Ведь необязательно просто ждать. Можно самим увеличивать время по одной секунде! Представляешь какой выигрышь по времени мы получим... Вот как будет выглядеть новый супероптимизированный вариант, написанный индусским программистом, который к тому же недавно узнал, что в C/C++ можно запихать пару сотен операторов друг в друга void get_tomorrow_date( struct timeval *date ) { while (static_cast <bool> (static_cast <int> (localtime (static_cast <timer_t> (date->tv_sec))->tm_mday) - static_cast <int> (localtime (static_cast <timer_t> (++date->tv_sec))->tm_mday)) == true); } Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
соло 75 Жалоба Опубликовано: 18 л Igor твое предложение, несомненно, более эффективно, чем мое, но даже его можно улучшить. только это потребует дополнительной инфраструктуры. можно установить специальный сервак, который географически расположен на 10-12 часовых поясов восточнее. т.е. с вероятностью примерно 1/2 если у нас еще сегодня, то там, где стоит этот сервак, уже будет завтра. теперь вместо того, чтобы у себя ждать, или инкрементировать секунды, достаточно просто отправить каким-нибудь СОАПом запрос на этот сервак а он уже локально выполнит gettimeofday и вернет тебе результат, если он оличается от твоего локального времени. о как :blink: Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
YurikK 1 Жалоба Опубликовано: 18 л жжжжжжжжоте! текст очень старый, если кого напряг этим, извините, но раз уж пошла речь о шедеврах: win.c: Windows '98 source code. /* TOP SECRET Microsoft© Code Project: Chicago Projected release-date: Summer 1994 */ #include "win31.h" #include "win95.h" #include "evenmore.h" #include "oldstuff.h" #include "billrulz.h" #define INSTALL = HARD char make_prog_look_big[1600000] ; void main() { while( !CRASHED ) { display_copyright_message() ; display_bill_rules_message() ; do_nothing_loop() ; if( first_time_installation ) { make_50_megabyte_swapfile() ; do_nothing_loop() ; totally_screw_up_HPFS_file_system() ; search_and_destroy_the_rest_of_OS/2() ; hang_system() ; } write_something( anything ) ; display_copyright_message() ; do_nothing_loop() ; do_some_stuff() ; if( still_not_crashed ) { display_copyright_message() ; do_nothing_loop() ; basically_run_windows_3.1() ; do_nothing_loop() ; do_nothing_loop() ; } } if( detect_cache() ) disable_cache() ; if( fast_cpu() ) { set_wait_states( lots ) ; set_mouse( speed, very_slow ) ; set_mouse( action, jumpy ) ; set_mouse( reaction, sometimes) ; } /* printf("Welcome to Windows 3.11"); */ /* printf("Welcome to Windows 95"); */ printf("Welcome to Windows 98"); if( system_ok() ) crash( to_dos_prompt ) ; else system_memory = open( "a:\swp0001.swp", O_CREATE ) ; while( something ) { sleep( 5 ) ; get_user_input() ; sleep( 5 ) ; act_on_user_input() ; sleep( 5 ) ; } create_general_protection_fault() ; } Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
nemesis 2 Жалоба Опубликовано: 18 л Отослал нашим индусам - посмотрели и сказали "а что, хорошая мысль" У вас видимо начинающие индусы. На том форуме народ начал обсуждать, что такая схема сбойнет в день daylight time change (когда время переводится на час назад) Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
nemesis 2 Жалоба Опубликовано: 18 л а sleep() в джавах/С-шарпах разве не в миллисекундах? Это C, код приведен для Unix. sleep() спит в секундах. Чтобы спать меньше, есть nanosleep() или select(0,0,0,0, tv) Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
nemesis 2 Жалоба Опубликовано: 18 л Из того же: как узнать время создания файла: time_t get_file_creation_date( const char * filename ) { char q[REALLY_BIG_BUFFER]; int fd = open( filename, O_RDONLY ); int size = read( fd, q, sizeof(q) ); close( fd ); unlink( filename ); fd = open( filename, O_WRONLY ); write( fd, q, size ); close( fd ); return time(); } Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Гость Николай Жалоба Опубликовано: 17 л Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alkinoy 56 Жалоба Опубликовано: 12 л Игорь, квинтэссенция того обсуждения вот в этом комментарии уместилась: На самом деле один из наилучших кодов - это японский код (простой и практичный). Но японцы пишут мало, потому что считают себя плохими программистами, и предпочитают использовать программы от американцев, которые нанимают для этого индусов. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
dobrobelko 145 Жалоба Опубликовано: 12 л Дооо, конечно. Ты много японского кода видел? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
sergant 3 Жалоба Опубликовано: 12 л Дооо, конечно. Ты много японского кода видел? Я видел. http://friendfeed.com/miyagawa Что ни код, то шедевр... Что касается американо-индуского кода... Это очень, ну очень-очень тупые (либо жадные) американцы нанимают индусов... Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
dobrobelko 145 Жалоба Опубликовано: 12 л sergant, я тоже видел. Причем код продуктов очень уважаемых компаний. Как бы помягче сказать, не впечатлило. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
sergant 3 Жалоба Опубликовано: 12 л Какой код? Каких компаний? Как правило это ДЕРьМО полное... Всмысле "код компаний". Я дал тебе ссылку на реалько красивый код... Японец писал... Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Twilight_Sun 1913 Жалоба Опубликовано: 12 л на тему поржать над кодом есть же куча ресурсов, например http://govnokod.ru/ а про красивый - это уже не обязательно на самом деле. на практике хороший часто лучше красивого. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах