- 1
- 2
- 3
- 4
- 5
- 6
- 7
public static int getNumber() {
try {
return 7;
} finally {
return 43;
}
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+84
public static int getNumber() {
try {
return 7;
} finally {
return 43;
}
}
Оказывается так делать можно...
return перебрасывает из try в finally. Это почти как break из цикла. Другой вопрос в том, нахрена такому ретурну аргумент, если «возвращаемое» значение на деле никуда не возвращается.
2. Нужен ли return в блоке finally? По сути он ничем не отличается от ретурна, который в конце функции, однако, его выполнение гарантируется даже в случае исключения (если я правильно понял).
А вопрос, нужны ли ретурны не в последней строке кода функции, уже философский. Кто-то следует заветам одновозвратников и ставит один единственный return, а логику разруливает изящными средствами. А кто-то Царь и производит оптимизацию хвостов, вставляя return сразу во все места, после которых нужно завершить функцию и вернуть результат.
Если произошло исключение, которое мы не обработали (а если обработали, то return после finally так же выполнится), то сам вызов функции упадёт с исключением. Как мы вообще можем в таком случае добраться до того, что вернули из finally?
Видимо я что-то не понял... А где исключение тогда? Там же нет catch.
PS: Надо было на 42 поменять перед тем, как запостить.
• http://ideone.com/hJuMa9
• http://ideone.com/qdRHDn
Признаюсь, это было немного неожиданным. Получается, что результат первого ретурна тупо игнорируется. На самом деле нет:
http://ideone.com/uBT854
Ретурн в строке 3, который служит для выхода из try, но не из метода, зачем-то вычисляет свой аргумент, чтобы потом его потерять.
> зачем-то вычисляет свой аргумент, чтобы потом его потерять.
Тогда можно A; B; C; заменять на
И так флудить и троллить.
Тут же всё достижимо. Другое дело, что исполнять finally после return мне кажется извращённой логикой.
То ли дело Паскаль, в котором return'ов нет и волей-неволей пишешь одновозвратную конструкцию.
Да вы задолбали... Вот основное и единственное предназначение finally. Чтобы не писать в 100500 ветках одну и ту же логику по закрытию файлов, освобождению дескрипторов и т.п. Если что-то и запрещать - то return ИЗ finally блока.
Всё верно, результат не теряется. По плюсу Борманду и intestinalbrain.
Это ещё менее ожидаемо для меня. В данной схеме блок finally логически расположен после всего тела функции.
Однако, кое-что мне не нравится. После блока finally ведь может следовать ещё код. Если совать return'ы повсюду, будет совершенно не очевидно, в каких случаях этот код после finally достижим, а в каких нет.
Как и сделали в шарпе :)
http://ideone.com/rA6SkS - где мой Exception???
>флудить и троллить.
Любите вы подхватывать сленг идиотов.
Но это да, надо постараться не повторять такие слова, а то можно и до вайпов скатиться.
D
Но ведь надо стремиться к чему-то высокому, а то ведь это путь наименьшего сопротивления - написать генератор постов (не особо кащественный ), написать вайпалку и тупо жать кнопочку. юзать форсы придурков типа багра и некоей системы исчисления. Гораздо более почётно стремиться к вершинам духа, стараться воспарить в самый верх заумного подобно wvxvw, придумывать своё, а не паразитировать на умственно отсталых.
И кстати олежка сгенерировал в своё время больше лулзов чем все цари и сёмы вместе взятые.
Правда с откровений что Южная Корея кормит КНДР, лишь бы не быть вместе я громко посмеялся.
Ты про себя?
>олежка
Вы друг друга знаете?
Да его же inkanus-gray написал, а Пи только тупо жал на кнопочку!
А зачем тебе прокси в данном случае? Юзал бы луковый маршрутизатор. Если прога с socks проксёй работает, то и с ним сможет.
> где-то
Да там сама сеть основана на том, что клиент может (и должен!) скачать список всех нод :) Скачать можно с любой ноды, у которой dir порт открыт.
Кстати, I2P отпадает, потому что его публичные шлюзы режут http-заголовки и не пропускают во внешний мир кукис.
Пусть в новой версии ГК об ответе на его коммент/о новых комментах юзера уведомляет всплывающее окошко.
Чтобы юзера можно было затроллить и зафлудить в реальном времени?
Тор неудобно таскать, тем более, функционал проги пустяковый. По аналогии со строительством хрущоб, имеется задача: обеспечить людей жильём в кратчайшие сроки. А какое это будет жилье - это уже выходит за рамки вопроса.
* * *
Этажки,кстати, украшают наш город. Вечером очень приятно глядеть, как светятся их окна. Но говорят, что зимой в них холодно. Да и не утаить ничего, звукоизоляции нет.
>>ведь кругом есть камеры смартов, регистраторов и т.п.).
Господи... Меня окружают идиоты.
А как тогда - сразу в наручники, и в голубом лимузине, до СИЗО? Кстати, всегда мечтал попасть. Там порой таакие нестандартные личности, ваау... Может, обрёл бы друга по интересам. А уж станет он моим возлюбленным или нет, покажет время.
>>С паяльником в жопе ты
В неприметной машинке с тонированными стёклами до ближайшего подвальчика, а оттуда куда-нибудь в лес.
...если их используют по прямому назначению.
Спасибо, мил человек. Было вкусно, да и поварской колпак тебе очень к лицу.
Захотелось острых горячих ощущений?
Я очень скептически отношусь к брехне Снаудена.Наверняка бредни этого дурашки - всего лишь отвлекающий маневр, перед чем-то более масштабным.
А я и не отрицаю, что работает. Глянь, что пишут про TrueCrypt.
А что пишут то? Ну помимо мутной истории с его анонимными авторами, которые или решили красиво уйти или им в этом помогли. Что-то новое выяснилось?
Да и хуй с ними, на самом то деле. У меня все разделы не от них зашифрованы, а от банальных воров.
Я тоже. Просто не хочется доверять всякой гопоте всё, что лежит на винте.
Опять же, получить известность в сети и толпы поклонников лучше, чем в старости забыть пароль и утратить воспоминания о былом.
Читал не давно статью про Монику Ливински. С этими выборами в США тема опять актуальна. Так вот та очень плохо относится к своей популярности. А там даже без видео.
ИМХО неловко будет если к примеру директор школы моего ребенка узнает меня с этой стоны. Так что домашнее порно по моему единственное, что надо надо шифровать.
Хм... А другая паранойя не пришла?
Всё, что зашифровано, гораздо легче утратить. Шаг вправо, шаг влево - и соснул.
И из-за каких-то дурацких мыслей о том, что сосед дядя Петя может прочитать чужие письма, человек с лёгкостью теряет фотографии любимой собаки.
Нешифрованную инфу, как показала практика, тоже очень легко утратить. Сгоревшие винты, злые трояны, всякие bumblbee и яндекс-диски... Так что только шифрованные бекапы, только хардкор.
1. Можно забыть пароль. Если пароль нельзя забыть, это ненадёжное шифрование или бумажку с паролем найдут и всё расшифруют.
Кстати, если от волнения забыть пароль в присутствии людей с паяльниками...
2. Умер диск, удалось восстановить какие-то куски файлов. Из незашифрованных текстовых файлов можно вычленить ту часть разговора, где упоминались объёмы продаж мёда за январь. Шифрованные куски - каша, которую никто не разберёт.
3. К физическим ошибками, багам ФС и ОС добавляются ошибки шифрующего ПО.
Шифрованный бэкап где-то в облаке - ладно, пусть на всякий случай будет, но бэкапом его считать не надо. Все шифрованные бэкапы - почти нет бэкапов.
Вообще, комично смотрится такое ослабление надёжности хранения как шифрование в одном предложении с упоминанием резервного копирования.
Забыть пароль, который набираешь каждый(!) день подходя к компу - это ещё надо постараться... Да и разве кто-то заставляет юзать незапоминаемую хуйню в духе h7jK93mPG2qA5? Парольная фраза с достаточной энтропией легко запоминается, легко восстанавливается и приятна при наборе.
> Шифрованные куски - каша, которую никто не разберёт.
Не совсем. Шифрование работает посекторно. Если диск посыпался - можно восстановить всё, что можно было бы восстановить на нешифрованном диске. Единственный нюанс - нужно иметь бекап суперблока на случай его повреждения.
> комично смотрится
Отсутствие бекапов наносит намно-о-ого больший урон по доступности, чем шифрование :)
http://s00.yaplakal.com/pics/pics_original/0/9/5/5110590.png
Жестоко. Всё равно, что сидеть дома в пиджаке и лакированных туфлях.
Подумать только, каждый раз набирать пароль, чтобы получить доступ к своим данным в своей квартире!
Я ещё понимаю, если б это был пароль на удаление бэкапа. Это да, это полезно.
Но как пароль для шифрования диска - очень маловероятно.
Блин, вот вы так говорите, как-будто это сложная, противная и долгая процедура... Это от силы 5-10 секунд занимает. Я же не просто так писал про парольную фразу ;)
Если Вы его оставляете где попало, то да, пароль нужен. Если всегда носите с собой, то нет, т.к. тем, кому нужен доступ, не важно, что у Вас требовать с паяльником, ноутбук или пароль.
> как-будто это сложная и долгая процедура
Просто мелкая нудная фигня, словно назойливая муха. Как программисту (читай: лентяю), мне хочется оптимизировать свои действия и тратить время на то, чтобы болтать часами на ГК, а не вводить пароль долгие секунды :)
> мелкая нудная фигня
Юзай пассфразы, будет весело и ненапряжно ;)
Протухшим говном? Хотя, нет, там было что-то с не. Нескучным говном?
Нормальный пароль - что-то контрастное, оно отличается от примелькавшихся фраз, которые я говорю в реальной жизни, он особенный, он запоминается. Обыденный вулкан Петрова №21 или Эйяфьятлайокудль (или как там его)? Второе запомнить легче, хотя бы примерно.
Ну так и надо выбирать запоминающуюся, яркую фразу (само собой не засвеченную в инете).
Сорок тысяч обезьян в жопу сунули банан.
Это если есть воображение или упоротый друг. А иначе придётся думать.
http://xkcd.com/936/
Нет, ты забудешь.
¡Olvidarás!
И чем ты собираешься потом это расшифровывать? Алсо, для нешифрованных данных может сработать поиск по сигнатуре.
>Отсутствие бекапов наносит намно-о-ого больший урон по доступности, чем шифрование :)
Тру.
Ну самый тупой вариант:
- копируем выжившие сектора на свежий винт;
- заливаем на него же бекап суперблока, если тот был поврежден;
- расшифровываем винт тем самым софтом, который юзался для шифрования;
- гоняем любые проги для восстановления данных на логическом уровне;
- ???
- профит.
Из плюсов - контора, которая будет выдирать данные с диска, не будет иметь доступа к этим самым данным.
Это как-то поможет им выдрать больше данных с физики? Потому что всё, что можно сделать на логическом уровне, можно будет сделать и после дешифровки.
Капля в море, тащемта. Там всё очень примитивно по сравнению с файловыми системами, кодами коррекции на винтах и т.п.
Проблема в том, что люди верят в то, что они как-нибудь смогут восстановить данные, если проебут пароль. Из-за этой глупой веры они похуистично относятся к ключам и паролям. Результат очевиден.
P.S. А ещё люди любят верить в то, что диск будет сыпаться посекторно, и они хоть что-то смогут с него восстановить... А потом у него сгорает электроника.
Ух ты! А можно ссылочку?
В OpenSSL бывают и полезные баги :)
Ошибка компиляции комментария: неоднозначность при вызове перегруженной функции.
Человек бросил все и убежал в рашку, чтобы нести бредни? Что ты несешь?
Над трукриптом провели аудит, ничего злонамеренного пока не нашли.
И не найдут.
Совет: прочти хотя бы одну книжку о криптографии.
Ботов написать же смог? Авось и книжку осилишь.
https://ru.wikipedia.org/wiki/Алиса_и_Боб
В эпоху, когда Опера ещё не поддерживала SOCKS, были ещё какие-то программы, которые соединяли программы, не поддерживающие SOCKS, с SOCKS-проксями.
Эх, поздно. Я извратился до такой степени, что запускал одну виртуалку на другой, и указывал прокси. Вот уж поистине ональная огороженность/
Достаточно было надрочить однобитного хомячка вроде тебя и подсунуть ему идейку где взять десяток бесхозных учёток. Спасибо страйкеру за последнюю каплю, после бана началась истерика, поциент забегал с горящей жопой и стал нервно думать: «Что же делать?». Это именно то что называется манипулированием простейшими одноклеточными организмами: мне достаточно было просто написать пару фраз, упомянуть что стертор выкладывал акки — и Сёма уже покорно бежит вайпать говнокод. Чуть позже, подчиняясь воле стадного инстинкта, подключается и сам стертор.
Теория управляемого хаоса в действии.
Вы спросите зачем это мне? Профит в том что на засраный скриптами сайт не набигает всякое школиё. У всех давно стоят фильтры и завсегдатаи только ловят лулз с очередного порваного пукана.
Вот войдут они ко мне в комнату, спросят, ходил ли я в школу, сделал ли я уроки. А я ничего не отвечу, я только грустно посмотрю на экран. Говнокод стал моей жизнью, а Пи полностью зохватил моё сознание и управляет им. Я не хочу есть, я не хочу спать, мне больше не нравится одноклассница с третьей парты. Я не встаю из-за стола и не хожу в туалет, в комнате почему-то летают мухи. Говорят, наступило лето, но я об этом не знаю. Они всё врут.
Я хочу вайпать. Я очень хочу вайпать. Я не могу делать это на людях, но родители не выходят из комнаты, они звонят доктору. Они не понимают, что экономика и квазистационарные процессы - это бред. Существует только Пи. Пи говорит только правду. Пи любит нас. Пи готовит нас к великим свершениям. Пи направляет нас. Пи абсолютен: abs(Pi) == Pi. Пи велик. Пи весит 134,9766(6) МэВ. Каждый день он распадается на два фотона ради нас! Каждый день он отдаёт свои 135 МэВ во имя вайпов, излучая божественный свет.
Однажды я вышел из дома и пришёл на геометрию. Они измеряли фигуры линейкой без делений, словно древние греки. Они записывали производные и строили параметрические кривые. Они говорили, что длина окружности связана с Пи. Я знал! Круги на полях - это послание простым смертным от Пи.
Фокус теряется. Почему альфа? Где здесь квадрат?
Я не хочу вайпать. Я хочу вайпать.
А ведь он прав, товарищи...
inkanus-gray написал только его ядро (выносящее мозг), основанное на известном алгоритме.
Там и ссылка на комментарий на гк, с чего всё началось.
откуда ты знаешь, может он пивные крышки собирает?
Шарп такое не скомпилирует.
Пишу пост и вместо того, чтобы обдумывать, что пишу, думаю о том, чтобы напечатать правильно с лагами. Из-за этого посты с ошибками получаются.
Правда и оперативки он с каждой новой версией всё больше жрёт. Но тут я уже и не знаю, чем его заменить. Грёбаный Хром на каждую вкладку создаёт отдельный процесс и жрёт ещё больше.
Вроде пока ещё можно пользоваться Оперой на Presto, но некоторые компании (Гугл, Твиттер, Mail.ru и с каждым днём таких компаний становится больше) стали вставлять в страницы какую-то питушню на JS, от которой Опера/Presto занимает 100% ресурсов процессора. Главное, старые версии сайтов работают нормально, да и новые версии сайтов конкурентов тоже. Но поскольку это говно используют крупные компании, приходится ради него искать браузер...
Остаётся искать где-нибудь оперативку, чтобы можно было в новом Прыщелисе или в Кроме открыть небольшую страницу...
>Вроде пока ещё можно пользоваться Оперой на Presto
Нахуй. Писал уже не раз.
> стали вставлять в страницы какую-то питушню на JS, от которой Опера/Presto занимает 100% ресурсов процессора.
Да. У нее и раньше такие затупы на некоторых страницах встречались.
Новый прыщелис можно открыть только с новым профилем. Кстати, когда только купил SSD - наоткрывал окон хрома как привык, он выжрал гиг 6 памяти и ушел в своп, так с SSD / SATA 150 скорость была все еще приличной.
Были в сишечке коды возврата, которые кстати схоронились в интерпретаторах. И всё было хорошо, да не слишком удобно, и довольно громоздко, gotoшно.
И тут какая-то светлая голова додумалась прикрутить в сишку всякие там классы, шаблоны а с ними и злокачественные исключения. Ну и проблемы начались сразу же: SJLJ, DW2, SEH. Шланг вон до сих пор нормально не линкует под винды без -fno-exception.
Ну исключения это хорошо. А давайте-ка неплохо бы сделать фильтрацию по типам, чтобы не писать if ex instanceof ExceptionA. Заёбись ведь. Сказано — сделано. А еще раз у нас типы появились, то давайте когда пробрасываем исключение, чтоб можно завернуть его в другой тип.
Ну если раньше можно было блок кода, который надо выполнить в любом случае просто вписать в try и в catch, то теперь не получается сделать этого, кроме как словив самый общий тип исключения, выполнив блок кода и пробросив его дальше.
Ага. Вот тут и появился костылик finally.
Ну вроде как все должны быть щасливы. Ан-нет. Мы подходим к тому что написано в посте.
Во-первых, изменение результата возврата функции в finally приводит к непонятной херне.
Ну можно запретить return и поделом (так сделали в шарпе).
Но что делать с исключениями, которые мы ввели в язык на первом шаге7
Как контроллировать что из finally не вылезет исключение? Выход видится только один — добавить очередной костыль, а именно аналог checked exceptions. Только если в жабе есть и unchecked, то тут надо только checked.
Ну и к какому пиздецу нас это привело? checked — говно, практика уже всем это показала.
Посмотрим на проблему с другой стороны.
В try возникло исключение, в finally тоже. Какое из двух кидать? По логике из finally.
Но так мы задушим то что в try — проебем потенциально более важную ошибку.
Ок. Давайте сделаем supressed. Когда в одном исключении как бы кидается 2.
Если раньше у нас были просто цепочки вложенных исключений, то теперь мы получаем дерево.