Pull to refresh

Comments 69

Знаю один такой ресурс, на котором сообщение через раз постится. Приучился жать Ctrl+A, Ctrl+C перед отправкой любого текста.
По теме — оно могло и не сохраниться, если память под текст выделяется в стеке и потом затирается по ходу выполнения других функций.
В данном случае я специально не пользовался браузером после того, как отправил форму — тут ведь как с файловыми системами: если ты удалил файл (без корзины), то нужно сразу же перестать пользоваться этой ФС и перемонтировать её в режиме «только чтение» — тогда ты с очень большой вероятностью сможешь без проблем восстановить нужный файл (например, если используется ext3, то можно восстановить с помощью ext3grep).
Да дело не в браузере, лично я не знал, что сделать дамп памяти процесса так просто! Это может иногда сильно пригодиться. Спасибо.
Вопрос про восстановление удалённых данных, а что делать если я случайно сделал так:
echo "" > my_very_important_file

Не помню точно как (что-то было с cat) но один раз я так сделал. Потом ничего не придумал, что бы восстановить данные
что делать если я случайно сделал так:
echo "" > my_very_important_file

Чтобы было не так обидно, можно попробовать напиться…
Теоретически это должно было просто установить метку размера файла в 0. Данные не должны были повредиться. Скорее всего их можно найти и восстановить. По крайней мере, я проделывал такое у меня такое на FAT32 с помощью Delphi. Это старый известный фокус.
Не 0, а 1 байт. \n же запишется, если не указать флаг -n.

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

Например небольшое исследование на эту тему: http://www.linuxquestions.org/questions/linux-general-1/how-to-recover-overwritten-file-774712/#post3788043

Но общий принцип перестать использовать этот раздел на запись до того момента, когда вы восстановите всё, что хотите (либо сделаете полный дамп блочного устройства) сохраняется.
UFO just landed and posted this here
Как я вас понимаю, у меня это уже на уровне рефлекса (когда то писал большую статью и при отправке лег браузер).
Такой список сайтов нарушили.
UFO just landed and posted this here
В хроме жмешь back — и все данные в форме, как перед постом. Спасало не раз.
В Opera аналогично, но не во всех случаях — текст в WYSIWYG-редакторах практически никогда не «запоминается» браузером.
Если форма динамическая — то далеко не всегда.
Сейчас почти в каждом браузере есть что-нибудь эдакое для отладки, веб-консоль или еще что-нибудь. Просто включаешь и обновляешь страницу (отправляя форму еще раз). После чего из логов достаешь данные.
Это очевидное решение, но и оно, к сожалению, не всегда работает. Представьте, например, что ошибка на сервере привела к тому, что после того, как вы отправили на сервер POST-запрос, сервер выдал ответ с кодом 302 и вы перешли на другую страницу. В этом случае вы не сможете повторно отправить форму путём обновления страницы.
А через Назад→Обновить?
Это тоже не будет работать — вы перейдёте на предыдущую страницу (с формой). А к тому POST-запросу, при котором был получен ответ с кодом 302, вы через историю навигации не вернётесь. Более того, это общераспространённая практика, и именно так принято отправлять формы: это называется PRG (Post/Redirect/Get). Проще говоря — always redirect after POST (показывать страницу по POST-запросу считается плохой практикой ­— после POST обязательно должно быть перенаправление на другую страницу). Применяется на очень многих сайтах — для того, чтобы пользователи, перемещаясь по истории (или обновляя текущую страницу), не отправили случайно форму ещё раз.

Помните, кстати, форумы? Invision Power Board, phpBB и прочие. Не знаю, как сейчас, но раньше там похожий механизм был реализован с помощь отдельной страницы, которая загружалась при размещении сообщения (и с которой через пару секунд происходило перенаправление к теме на форуме).
Помните, кстати, форумы?

Вы так говорите, как будто их уже давно похоронили :)
Да, там так и происходит, через промежуточную страницу.
Если сюда заходят мультисистемщики вроде меня: в Windows этот способ также сработает. Дампы очень просто делаются Process Explorer'ом. Для консоли есть PMDump. А изучать дамп можно каким-нибудь HEX-редактором (к примеру, из бесплатных — HxD) или тем же grep.
Большое спасибо!

Процитировал вас в блогозаписи (надеюсь, вы не против).
Вам понадобится утилита gcore, которая может делать дамп оперативной памяти, которую использует запущенный процесс с определённым PID.

Аррр, я такую искал году в 2008 в течение полугода, и так и не нашел, насколько помню. Спасибо за подсказку!
Есть расширения и плагины, всеразличные форм-сейверы, тоже помогает, для тех кто часто постит большие тексты.
Угу. Например, в упомянутом вопросе на superuser.com есть ссылка на расширение Lazarus. Так что это как раз один из случаев, когда можно и заранее обеспечить своим текстам дополнительную сохранность.
А есть еще более мощные штуки ))) Ставятся в систему и запоминают N последних введенных символов, не важно куда. Не секурно конечно, но умные утилиты определяют когда вводятся пароли и не сейвят ввод. Зато железно!
Это ещё что! Есть такие устройства — можно через них клавиатуру подключить, и вообще тогда всё в безопасности. Даже если у вас операционная система аварийно завершится, всё равно весь ввод сможете прочитать. Да, что там говорить, если вы пароль BIOS забудете — всё равно сможете его получить, ведь эти устройства никак не зависят от операционной системы. :)
И совсем даже не для параноиков )) Похоже на регистратор, наверное когда память забивается, старье стирается. Ну или передается по секретному радиоканалу спецслужбам, нанятых за сохранность ввода.
Главное, уходя, не забыть повесить это устройство на монитор возле стикеров с паролями )
А Lazarus вообще совсем-совсем не прокатит? Имхо, проще один раз поставить плагин и покрыть 99% случаем, а на оставшийся процентик можно уже и с дампами заморочиться. Но лучше Lazarus паставить сразу, ну или сразу после превого случая :")
Вот тут как раз описывается, что делать, если последовательность оказалась обратная (сначала столкнулся с такой ситуацией, и уже потом поставил Lazarus или одно из других расширений). :)
Вот тут как раз описывается, что делать, если последовательность оказалась обратная

Я так думаю, что столкнувшись с такой проблемой впервые, пострадавший вряд ли начнет гуглить способы решения по ключевым словам debug, dump, memory snapshot, выйдет на эту статью и начнет действовать по инструкции. Скорее всего она пригодится тогда, когда потенциальный пострадавший сначала прочитает статью, сделает себе пометочку в памяти, а потом, в далеком будущем, столкнется с проблемой и вспомнит о таком вот заковыристом пути ее решения. И тут самое время намекнуть, что расширение лучше поставить уже сейчас, чтобы с дампами возиться только когда расширение не спасет.

И это… Lazarus есть и под хром
Ну не знаю, я написал в Гугле «firefox restore text» и нашёл это решение (как раз на superuser.com, на тот вопрос, где в одном из ответов предлагается именно такой вариант).
Хм. действительно, 7-я ссылка сверху. Не ожидал что подобные инструкции окажутся настолько высоко по общим запросам с учетом засилия всевозможных плагинов для сохранения форм и инструкций по их установке и использованию «для чайников».
Спасибо.

Хотя у меня иногда получается, что во время набора текста на ноутбуке, я случайно тапаю по тачпаду. И, если курсор находится на ссылке, то я перехожу по ней. Насколько я понимаю, в этом случае, данный метод не поможет — ведь текст никуда не отправлялся.

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

Поэтому, сейчас использую Lazarus. Хотя в его безопасности тоже не до конца уверен.
Сейчас специально попробовал сделать так, как вы описали:

1. Набрал текст в форме комментария (прямо тут)
2. Щёлкнул по ссылке (Raspberry Pi в качестве Time Capsule для Mac OS)
3. Нажал кнопку «Назад» (текст моего комментария при этом исчез)

Далее сделал дамп и проверил, остался ли в нём текст.

И да, текст остался:

# strings core.25166 | grep "So I type something"
So I type something and accidentally click on a link.
So I type something and accidentally click on a link.
Кстати, а если много оперативы то можно сделать так.

mkdir tmp
mount -t tmpfs tmpfs tmp
cd tmp
gcore номер
strings core.25166 | grep «So I type something»

Явно будет шустрее чем гиг гонять на хард. А еще вроде как можно искать прямо на живом процессе из оперативки?

Кстати, а что делать с хромом и его 20 процессами?
UFO just landed and posted this here
…набирая команды в консоли точно так же, одним пальцем.
Не выйдет.
C:\Users\user>ps -e | grep firefox
'ps' is not recognized as an internal or external command,
operable program or batch file.
Не все так плохо
C:\Users\username>tasklist | findstr chrome
chrome.exe 4476 Console 1 165 508 КБ
chrome.exe 5108 Console 1 78 064 КБ
chrome.exe 5104 Console 1 28 428 КБ
chrome.exe 512 Console 1 19 652 КБ
chrome.exe 4900 Console 1 79 876 КБ
chrome.exe 5252 Console 1 24 632 КБ
chrome.exe 3340 Console 1 69 008 КБ
придётся кому-нибудь one-click ПО для всех основных браузеров написать
не закрывайте браузер, читается как — «не переключайте канал», только из-за этого открыл статью
Как вариант: устанавливаем punto switcher включаем дневник и в случае чего восстанавливаем текст из дневника.
В linux пользуюсь менеджером буфера обмена Parcellite — главное, просто регулярно жать CTRL+A & CTRL+C.
Как правило, перед отправкой формы копирую текст в буфер обмена; а иногда спасает „back”.

Но помню, чтобы восстановить ценный текст, однажды приходилось изменить файл hosts, добавить туда запись 127.0.0.1 site.ru, в скрипте PHP на localhost’е написать print_r($_POST) и нажать F5 в браузере дабы отравить данные заново. Цель была успешно достигнута.
Открыть консоль разработчика, вкладку загрузок, поставить галку (запоминать), нажать F5, скопировать контент из данных post запроса.
Я точно не помню, но если не ошибаюсь тогда ещё не было «Web console» в Firefox (но уверен что было „Error console”).

Насчёт указанной Вами методе, проверил в Firefox’e: если сервер недоступен или интернет соединение разорвано, данный вариант не работает — вкладка „Sent Form Data” и „Response Headers” недоступны.
Вы знаете, под виндой я столкнулся с проблемой: могу найти в дампе нужную строку, но не могу ее скопировать в нужной кодировке. Хекс редакторы (некоторые) или даже тотал коммандер находят текст, но не отображают его полностью. Видимо проблема в том, что он хранится в уникоде и сдвинут относительно начала файла на 1-2 байта. Из за чего сам редактор неверно интерпретирует коды символов. Я сейчас с час потыкался и так и не понял, как решить эту проблему :(
так, отрезать от дампа кусок начиная с нужного смещения…
Можно отрезать конечно, но это уже три разных программы получается. К тому же придется скорее всего конвертировать размер смещения из шестнадцатеричного в десятичный и дамп резать на тома этого размера (тотал по умолчанию только так умеет). Если текста пару абзацев было, то честно говоря быстрее просто заново набрать, чем проводить столько операций.
Либо вышеупомянутый Lazarus Form Recovery.
Версия под Firefox
под Сhrome

Хранит историю последних введённых текстов, причём для каждого элемента – отдельную. Крайне удобно.
Не могу представить себе человека, который бы пользовался подобным.
Зато на проблему можно посмотреть с точки зрения разработчика и вспомнить такую библиотеку как sisyphus.js
до этого никогда не слышал про gcore, по дефолту его нет на используемых дистрибутивах
обычно дамп делается более стандартным способом kill -3 PID
Some of the more commonly used signals:
     1       HUP (hang up)
     2       INT (interrupt)
     3       QUIT (quit)
     6       ABRT (abort)
     9       KILL (non-catchable, non-ignorable kill)
     14      ALRM (alarm clock)
     15      TERM (software termination signal)


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

Меня же всегда выручал Punto Switcher с его дневником, в котором сохраняются все введенные данные.
Не знаю, я если вижу, что комментарий из одной строки вырастает в абзац и более — открываю OneNote, Блокнот или еще какой редактор и копирую после из формы в редактор и пишу пост/комментарий уже там.
Можно просто сидеть с постоянно включенным Fiddler2 :)
UFO just landed and posted this here
На MacOS дамп можно делать через lldb
lldb --attach-pid PID

Только что «спас» свой текст, часа два не сохранял, а потом тач «заел» и два раза назад перешел. Ух уж эти жесты.
Спасибо! Добавил способ тоже.
Sign up to leave a comment.

Articles

Change theme settings