misc/class
lib/jquery_pnotify, lib/moment, lib/lodash, misc/notification, site/engine, misc/social
if( $.browser.msie && $.browser.version <= 8 ) include('lib/respond'); $._social.__cfg = {"init":[{"service":"basic"},{"fb_app_id":"1997094873850041","service":"fb"},{"vk_app_id":"2978320","service":"vk"},{"service":"twi"}],"like":[{"service":"fb"},{"service":"vk"},{"via":"","channel":"","hash_tag":"","service":"twi"}]}; window._SiteEngine = new classes.SiteEngine( { user_id: 0, controller: 'content_tape', action: 'tag', content_css_version: '1459538664', social_enabled: 0} );

Faiwer

Блог web-программиста

Поиск по метке: Windows

Unix-Win path separator

20 октября 2016

Столкнулся с неожиданной для себя проблемой. Сборка проекта под Windows шла криво, в то время как под Linux без проблем. Вначале грешил на обратные и прямые слеши (/ & \). Беглый поиск по этой проблематике дал мне понять, что никаких проблем с unix-like слешами под Windows быть не должно. Оказалось, что всё немного хитрее. Я в некоторых местах работах с путями как со строками, игнорируя тот факт, что пути в процессе работы могут быть сторонним кодом преобразованы. 

Скажем был у вас путь path/path/path. В процессе работы какого-нибудь gulp-плагина он исправился на windows-правильный путь path\path\path. А у вас далее по коду какой-нибудь .replace('path/path', ''). И вот оно сломалось. 

Заметка о восстановлении данных

5 июля 2015

Как уже и писал ранее, случилась у меня проблема с удалением файлов. GoPro подключается к ПК не как USB-flash, а как MTP (Media Transfer Protocol). Это выражется в том, что не все файлы, размещённые на носителе видны, тем что не удаётся посмотреть начало какого-нибудь ролика не скачав его целиком, а также в том, что мой LinuxMint отказывается скачивать с такого вот MTP-носителя файлы, ибо соединение попросту зависает при любой операции.

Ну да ладно. Есть ультрабук с Win8 на борту. Можно качать через него, ведь он файлы видит. И дёрнул меня чёрт сократить время, и скопировать сразу на флешку. Да и не скопировать а "вырезать" и "вставить". Получив несколько невнятных ошибок я столкнулся с ситуацией, когда на SD-карте файлов уже нет, а на флешке их и не появлялось вовсе. Т.е. они утеряны.

В очередной раз высказав всё, что я думаю об MTP и GoPro я подумал, что файлы ведь можно восстановить. Ибо они не должны быть ничем перезаписаны. Должны лежать как на ладони, быстро находиться и идеально восстанавливаться. Картридера у меня увы нет, мой One PlusOne не умеет внешние SD-карты. Но старый SGS II умеет. И посему я решил воспользоваться android-восстанавливалками.

  • Первым в ход пошёл DiskDigger undelete. Не сказать, чтобы софтина понравилась, но она смогла найти 1 старый 3 MiB файл, совершенно бесполезный, но это уже хотя бы отличный от 0 результат. Ушло у неё на это около часа.
  • Вторым был Hexamob Recovery Lite. Первое, что он сделал ― бросил меня в Google Play покупать платную версию. Логика железная, я скачал бесплатную версию, чтобы убедиться что она хотя бы найти что-то сможет, а меня уже швыряют покупать платную. Вы за кого держите пользователя? Следующим этапом было то, что нет никаких по сути опций и настроек, он просто спрашивает где сканировать и начинает сканировать. Никакой индикации прогресса нет, просто отображении анимации, мол "я ещё не завис". Ну и всякая реклама. Потерпев минуты 3 этот идаотизм, софтина ушла в утиль. Хороший пример того, как нельзя писать подобный софт.
  • Третьим был Undelete for Root Users. Порадовал вменяемый и приятный на вид интерфейс, удобное управление. Не порадовало то, что он не нашёл ничего, совсем. На 32GiB ушло 1ч 11м.

Я упустил 1 момент. Дело в том, что 1 файл из 3 мне всё таки удалось с самого начала вырезать-вставить. Его я обкромсал, как обычно ffmpeg-ом, срезав по краям лишнее и снёс оригинал через shift+delete из caja. Затем, потратив часа 3 на восстановление файлов с SD-карты,  я вернулся к обрезанному видео. И понял, что, по запарке, срезал на несколько секунд больше, очень зря… А оригинал уже удалил. Решил восстановить уже этот файл. Проблема усугублялась тем, что файл лежал не на ext3 разделе, а на ntfs

  • Вначале я наткнулся на ntfsundelete. Это консольная утилита, которой нужно указать раздел и она найдёт все легко-восстанавливаемые файлы, указав их размер, имя по возможности, inode и пр. Мой файл там нашёлся. Восстановив его (4 GiB) я получил 4 GiB кирпич, который ничем не открывается. Я подумал, что сие же mp4, а значит его можно как-нибудь починить. Полез рыскать по сети:
    • mplayer его показывает как какую то разноцветную жуть, мечту эпилептиков.
    • ffmpeg -i грязно ругался.
    • попробовал Video Repair. С ней возникли некоторые сложности, но в конце концов она просто помирала на файле с какими-то невнятными ошибками.
    • попробовал mp4repair.org. На сайте указано, что смело указывайте ему даже huge mp4 файлы, чем я и воспользовался. На ~30% всё повисает…
  • Затем, я вспомнил, что файл был удалён ещё и в USB 3.0 Flash-ки. Попробовал Recuva. Нужный мне файл она нашла дважды. 1 пометила как испорченный и переписанный (причём файлом, который был на флешке уже месяц), второй как идеальный, без повреждений. Интересная форма шизофрении. Восстановив "идеальный", я столкнулся с тем, что получил такой же кирпич, как и в случае, ntfsundelete.

Учитывая, что эти 3 видео не являются для меня чем-то жизненно важным, я, убив себе настроение, закончил истязания и забил. Разве что, вот ещё на эту заметку хватило. Пожалуй, стоит купить внешний USB кардридер.

UPD1: Купил картридер. Картридер работает без каких-либо проблем. Попробовал что-нибудь найти через testdist. Тщетно. Из Win8.1 попробовал через Recuva, она в отличии от android приложений, нашла множество файлов. Восстановил те из них, которые могут быть искомыми. Все файлы ― кирпичи. Для "откирпичивания" использовал Video Repair. Получается чёрт знает что. 30% видео (отрывками по несколько секунд) идут без помех, оставшееся ― помесь с жуткими артефактами, всякими сдвигами во времени и прочим цирком.