- 1
- 2
- 3
- (void) closeApp {
int closer = 1 / 0;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−1050
- (void) closeApp {
int closer = 1 / 0;
}
Закрываем программу легкой арифметикой.
Найдено в рабочем проекте.
serpinski 25.11.2012 23:26 # +23
scriptin 25.11.2012 23:32 # +21
inkanus-gray 25.11.2012 23:47 # +22
А чем можно элегантно остановить программу, кроме стандартной функции die()?
roman-kashitsyn 25.11.2012 23:50 # +22
Да, я уже как-то пробовал поднять эту тему > А чем можно элегантно остановить программу, кроме стандартной функции die()
стандартной функцией exit() :)
inkanus-gray 26.11.2012 00:03 # +20
Vasiliy 26.11.2012 11:43 # +21
bormand 26.11.2012 12:53 # +23
scriptin 25.11.2012 23:56 # +19
И это далеко не самое страшное. Такова идеология PHP - если что-то ломается, лучше промолчать и продолжить работу в поломанном состоянии - 30 секунд позора максимум и программа остановится.
>А чем можно элегантно остановить программу
Разрубить катаной сервер на две половинки, как в голливудских фильмах. Чтобы еще не сразу распался на части, а постепенно разъехался.
LispGovno 25.11.2012 23:58 # +19
А в чем проблема? 1/0 есть inf.
http://ideone.com/yzlDDY
Чего это программа должна останавливаться? Максимум исключение при соответсвующих настройках, если разрешили.
inkanus-gray 26.11.2012 00:05 # +21
LispGovno 26.11.2012 00:09 # +16
Это ты про какие языки, бро?
int то конечно своё возьмет
inkanus-gray 26.11.2012 00:10 # +19
Спойлер я сразу не приметил.
LispGovno 26.11.2012 00:16 # +18
http://ideone.com/cE4Cgd
http://ideone.com/VhXO5d
inkanus-gray 26.11.2012 00:36 # +19
LispGovno 26.11.2012 00:49 # +17
Тоже такую хочу, но идеи для слогана пока не придумал.
inkanus-gray 26.11.2012 07:21 # +22
Steve_Brown 26.11.2012 10:02 # +22
guest 27.11.2012 01:44 # +18
Осталось дело за малым: добавить случайности в ключевое слово и автопостинг в граватар.
guest 27.11.2012 01:45 # +18
absolut 27.11.2012 06:48 # +14
Steve_Brown 27.11.2012 10:07 # +14
http://linux.jpg.to/
(Not Worksafe!)
Steve_Brown 27.11.2012 10:09 # +13
eth0 26.11.2012 17:01 # +13
Для начала - процессоры со своим int 0.
WGH 12.01.2016 01:43 # +13
А в ARM походу вообще нет инструкции для целочисленного деления, её нужно эмулировать программно.
3_14dar 12.01.2016 02:20 # +13
guesto 12.08.2016 01:10 # +13
krypt 26.11.2012 01:26 # +13
byss 26.11.2012 13:01 # +13
krypt 26.11.2012 13:24 # +13
Yurik 26.11.2012 01:10 # +12
Nemoden 27.11.2012 05:33 # +16
Gist: https://gist.github.com/4152028
niggerzilla 27.11.2012 11:36 # +13
raise не нужен
Govnisti_Diavol 25.11.2012 23:33 # +11
inkanus-gray 26.11.2012 00:07 # +14
Nemoden 27.11.2012 05:27 # +14
tirinox 25.11.2012 23:36 # +11
krypt 26.11.2012 01:24 # +12
someone 26.11.2012 06:45 # +20
inkanus-gray 26.11.2012 07:17 # +12
tirinox 26.11.2012 08:54 # +12
LispGovno 26.11.2012 10:06 # +13
Статическую картинку рабочего стола.
krypt 26.11.2012 12:29 # +12
Яббл придерживается того мнение, что приложение должен закрыть пользователь.
bormand 26.11.2012 12:52 # +13
А он может? Или максимум, что он может - переключиться на десктоп или другую прогу?
P.S. На ведроиде же тоже такая идеология, при которой закрытие проги считается неприличным.
krypt 26.11.2012 13:05 # +12
absolut 26.11.2012 17:39 # +12
krypt 26.11.2012 18:35 # +12
bormand 26.11.2012 18:37 # +12
krypt 26.11.2012 18:39 # +12
bormand 26.11.2012 18:44 # +12
Можно указать флажок, чтобы метод вызывался даже если тело спит (тело уходит в спячку сразу после выхода из него, но если надо что-то длинное, то через PowerManager можно договориться, чтобы не засыпал).
krypt 26.11.2012 18:51 # +12
ArtFeel 10.01.2013 12:30 # +12
Программы в бекграунде висят до тех пор, пока есть свободная память, потом выгружаются в порядке отожранной памяти, и в менюшке остаются только иконки. Поэтому имеет смысл писать оптимизированные в плане памяти приложения, и выгружать не нужный кеш при уходе в бекграунд, что бы программа не убивалась системой.
eth0 26.11.2012 17:03 # +14
Я придумал офигенную технологию. Сначала при запуске все установленные приложения запущены, но неиспользуемые вытеснены в медленную память. "Открытие" приложения подгружает его обратно в ОЗУ. Закрытия нет. Когда программа хочет закрыться (по требованию ОС, пользователя или внутреннему событию), она просто суспендится. Но не закрывается никогда. Фу! Нельзя закрываться!
Срочно бегу патентовать.
3.14159265 26.11.2012 17:12 # +13
bormand 26.11.2012 17:54 # +14
inkanus-gray 26.11.2012 18:56 # +15
bormand 26.11.2012 19:06 # +12
govnomonad 26.11.2012 18:50 # +13
Это точно не болдженос
bormand 27.11.2012 15:43 # +13
guesto 12.08.2016 01:11 # +12
оно должно висеть либо пока его не убьет иос или пользователь, либо ты можешь сам его закрть, но тогда ты мудак
byss 26.11.2012 13:02 # +12
wvxvw 27.11.2012 15:24 # +12
bormand 27.11.2012 15:48 # +14
wvxvw 27.11.2012 16:32 # +12
3.14159265 27.11.2012 16:34 # +12
wvxvw 27.11.2012 16:38 # +12
3.14159265 27.11.2012 16:39 # +17
Потому и не хотят брать. С виду бесплатно и никому не впёрлось, а начнешь кодить - плати.
Лежит жаба - нельзя юзать.
TarasB 26.12.2012 09:35 # +12
bormand 26.12.2012 09:43 # +12
TarasB 26.12.2012 10:43 # +12
LispGovno 26.12.2012 11:28 # +12
TarasB 26.12.2012 11:36 # +14
Все три иосовских уборщика - детерминированные шаред поинтеры? Это отвратительно, как же делать граф из объектов чтобы он не тёк?
roman-kashitsyn 26.12.2012 11:43 # +18
bormand 26.12.2012 11:47 # +14
TarasB 26.12.2012 11:52 # +13
Впрочем, да, архитектура тут похожая, отдельно заводишь список ВСЕХ вершин графа, чтобы стопудов ни одна падла не повисла в кольце, а потом перед удалением обходишь граф, помечая вершины и зануляя ссылки на помеченные, да только вот при классической рахитектуре этого делать не обязательно, если только граф не колбасится непрерывно всю жизнь приложения, а это означает, что сложность написания кода тем самым увеличилась.
LispGovno 26.12.2012 12:37 # +12
Слабые ссылки? Думаю си-указатель * в Objective C сойдет за слабую.
TarasB 26.12.2012 13:06 # +14
krypt 04.01.2013 21:08 # +13
Все объекты фреймворка являются потомками класса NSObject, который содержит в себе счётчик ссылок. Изменяется в коде он явно - вызовами init, copy, retain, release, autorelease (объект помещается в специальный список, который когда-нибудь вызовет ему release). ARC занимается, по сути, тем, что втыкает вызовы retain/autorelease согласно соглашениям, принятым в языке.
Увеличивать или уменьшать счётчик ссылок надо вручную.
Для сишных структур счётчиков ссылок нет - всё как в Си, секс по полной.
Eщё в Obj-C такой хитрый тип, как id, но по сути он void*, только набор вернингов для него отличается (например, если вы попробуете отправить сообщение объекту с типом id - всё будет нормально, ибо так и задуманно, а если void* - получите warning на этапе компиляции).
bormand 26.12.2012 13:58 # +15
Си указатель сойдет за опасную ссылку, а не за слабую. Слабая ссылка должна превращаться в null при смерти объекта.
TarasB 26.12.2012 15:44 # +16
bormand 26.12.2012 11:46 # +12
LispGovno 26.12.2012 12:35 # +12
Суть? Где почитать? Это круто?
bormand 26.12.2012 13:59 # +13
TarasB 26.12.2012 15:44 # +13
ArtFeel 10.01.2013 12:35 # +13
guest 04.10.2016 02:49 # 0
Fai 27.11.2012 16:09 # +12
Psionic 27.11.2012 19:17 # +12
roman-kashitsyn 27.11.2012 19:28 # +12
Psionic 27.11.2012 20:31 # +11
bormand 28.11.2012 05:37 # +11
Fai 28.11.2012 06:37 # +11
bormand 28.11.2012 07:08 # +13
absolut 28.11.2012 11:06 # +14
roman-kashitsyn 28.11.2012 11:38 # +12
krypt 28.11.2012 15:14 # +11
roman-kashitsyn 28.11.2012 15:17 # +11
roman-kashitsyn 28.11.2012 15:32 # +14
SUS
хорошая, годная опечатка
krypt 04.01.2013 21:14 # +12
roman-kashitsyn 28.11.2012 08:09 # +13
Вот, для деления на ноль тоже есть.
absolut 28.11.2012 11:04 # +11
bormand 28.11.2012 11:13 # +11
roman-kashitsyn 28.11.2012 11:38 # +11
заставляют проходить тест джобса тьюринга?
bormand 28.11.2012 11:56 # +11
absolut 28.11.2012 12:49 # +13
tragvar 26.12.2012 02:30 # +11
просто в IDE висит ворнинг:
"division by zero is undefined"
bormand 26.12.2012 08:57 # +15
Мораль: видишь UB - никогда не юзай его, и даже не пытайся проверять работает он или нет на твоей системе, спокойней будешь спать, т.к. ты никогда не узнаешь, какое поведение будет на другой железке или в новой версии компилятора\оси. Хотя нет, узнаешь, от недовольных юзеров тех самых других железок..
LispGovno 26.12.2012 09:05 # +12
В тебе нет духа эксперементатора!
bormand 26.12.2012 09:30 # +13
LispGovno 26.12.2012 11:29 # +9
UBox
bormand 04.01.2013 21:18 # +12
UBox 24/365.
tragvar 26.12.2012 09:12 # +11
а лишние операции для срабатывания - так это уже не элегантно