Страницы

Поиск по вопросам

Показаны сообщения с ярлыком поиск-программ. Показать все сообщения
Показаны сообщения с ярлыком поиск-программ. Показать все сообщения

понедельник, 24 февраля 2020 г.

Как узнать, какому файлу принадлежит сектор диска?

#linux #ntfs #поиск_программ #ddrescue


При помощи ddrescue создан образ диска. К нему есть карта, что не удалось скопировать.
Начинается вот так:

# Rescue Logfile. Created by GNU ddrescue version 1.17
# Command line: ddrescue -v -d --max-retries=1 --cluster-size=3 /dev/sdb2 d.img d.log
# current_pos  current_status
0xA7459CBA00     +
#      pos        size  status
0x00000000  0x52C15CAC00  +
0x52C15CAC00  0x00000400  -
0x52C15CB000  0x00011600  +


Насколько я понимаю, это означает, что 0x400 байт начиная с 0x52C15CAC00 не удалось
прочитать. Как понять, какие именно файлы повреждены? Файловая система NTFS.
    


Ответы

Ответ 1



как пишут здесь, нужно разделить номер блока на размер кластера, используемого данной файловой системой, и перевести результат в десятичную систему счисления. размер кластера: $ sudo ntfsinfo -m раздел | grep -i 'cluster size' Cluster Size: 4096 в шестнадцатиричной это будет: $ echo 'obase=16;4096' | bc 1000 делим номер из вопроса (0x52C15CAC00) на 1000 и получаем результат в десятичной системе счисления: $ echo 'ibase=16;52C15CAC00/1000' | bc 86775242 узнаём, что за файл(ы) располагаются в этом кластере (пример вывода команды взят из вышеупомянутой инструкции): $ sudo ntfscluster -c 86775242 раздел Searching for cluster 9369 Inode 89381 /Windows/System32/atidxx64.dll/$DATA

Ответ 2



В линуксе можно использовать следующее решение: filename=d.img logname=d.log clsz=$(sudo ntfsinfo -m -f $filename 2>/dev/null | grep 'Cluster Size' | \ sed -r "s/.*:/obase=16;/" | bc) for r in $(cat $logname | grep '-' | grep -v 'ddrescue' | \ sed -r "s/0x(\w+)\s+0x(\w+)\s+.*/\1\/$clsz; (\1+\2)\/$clsz/;1s/^/ibase=16\n" | \ bc | tr '\n' '-' | sed -r 's/(\w+-\w+)-/\1\n/g' | uniq | tr '\n' ' ' | \ sed -r 's/-(\w+) \1\b//g' | sed -r 's/ /\n/g' | \ sed -r 's/(\w+)-(\w+)/\1;\2;\2+1;/' | bc | tr '\n' '-' | \ sed -r 's/(\w+-\w+-\w+)-/\1 /g' | sed -r 's/-\w+-(\w+) \1//g' | \ sed -r 's/(-\w+)-\w+/\1/g'); \ do sudo ntfscluster -f -c $r $filename 2>/dev/null; done Замечу, что надо предварительно выполнить любую команду sudo, чтобы последняя команда не съелась в качестве пароля. Тогда на остальные команды пароль запрашиваться не будет и всё будет работать. Существенный минус этого решения - то, что для каждого диапазона кластеров снова сканируется файловая система, т. е. работает очень медленно. Теперь поясню, что же здесь происходит. Сначала определим размер кластера Информацию о диске можно получить при помощи ntfsinfo. Опция -f нужна чтобы образ не ставился на проверку с просьбой перезагрузиться дважды. Перенаправление ошибок в /dev/null чтобы избавиться от WARNING: Dirty volume mount was forced by the 'force' mount option. sudo ntfsinfo -m -f d.img 2>/dev/null Выберем отсюда строку с информацией о размере кластера: ... | grep 'Cluster Size' Достанем из неё число и переведём в 16ричную систему счисления: ... | sed -r "s/.*:/obase=16;/" | bc Сохраним в переменную: clsz=$(...) Команда целиком: clsz=$(sudo ntfsinfo -m -f d.img 2>/dev/null | grep 'Cluster Size' | \ sed -r "s/.*:/obase=16;/" | bc) Вероятно, получится значение 1000. Теперь определим диапазоны кластеров Выберем из карты все плохие куски (содержат - и не являются строкой с самой командой): cat d.log | grep '-' | grep -v 'ddrescue' Получится нечто такое: 0x52C15CAC00 0x00000400 - 0x52C15DC600 0x00000200 - 0xA74593D600 0x00000200 - 0xA74593DA00 0x00000600 - 0xA74593E600 0x00000200 - 0xA745945000 0x00000400 - 0xA745945600 0x00000200 - 0xA745945C00 0x00000400 - 0xA745947600 0x00000200 - 0xA7459C3200 0x00000C00 - 0xA7459CB000 0x00000200 - 0xA7459CB400 0x00000200 - 0xA7459CB800 0x00000400 - Преобразуем в формулы для вычисления номеров кластеров в 16ричной системе счисления: ... | sed -r "s/0x(\w+)\s+0x(\w+)\s+.*/\1\/$clsz; (\1+\2)\/$clsz/;1s/^/ibase=16\n/" ibase=16; 52C15CAC00/1000; (52C15CAC00+00000400)/1000; ibase=A; ibase=16; 52C15DC600/1000; (52C15DC600+00000200)/1000; ibase=A; ibase=16; A74593D600/1000; (A74593D600+00000200)/1000; ibase=A; ibase=16; A74593DA00/1000; (A74593DA00+00000600)/1000; ibase=A; ibase=16; A74593E600/1000; (A74593E600+00000200)/1000; ibase=A; ibase=16; A745945000/1000; (A745945000+00000400)/1000; ibase=A; ibase=16; A745945600/1000; (A745945600+00000200)/1000; ibase=A; ibase=16; A745945C00/1000; (A745945C00+00000400)/1000; ibase=A; ibase=16; A745947600/1000; (A745947600+00000200)/1000; ibase=A; ibase=16; A7459C3200/1000; (A7459C3200+00000C00)/1000; ibase=A; ibase=16; A7459CB000/1000; (A7459CB000+00000200)/1000; ibase=A; ibase=16; A7459CB400/1000; (A7459CB400+00000200)/1000; ibase=A; ibase=16; A7459CB800/1000; (A7459CB800+00000400)/1000; ibase=A; И вычислим ... | bc 86775242 86775243 86775260 86775260 175397181 175397181 175397181 175397182 175397182 175397182 175397189 175397189 175397189 175397189 175397189 175397190 175397191 175397191 175397315 175397315 175397323 175397323 175397323 175397323 175397323 175397323 К сожалению, числа получились на разных строках - объединяем их через дефис, затем каждый второй дефис заменяем переводом строки, затем уберём дубликаты строк: ... | tr '\n' '-' | sed -r 's/(\w+-\w+)-/\1\n/g' | uniq 86775242-86775243 86775260-86775260 175397181-175397181 175397181-175397182 175397182-175397182 175397189-175397189 175397189-175397190 175397191-175397191 175397315-175397315 175397323-175397323 Объединим последовательные цепочки, если конечный кластер первой совпадает с начальным следующей. Для этого объединим строки через пробел и поудаляем -число такое-же-число\b. У меня sed не съел \d, поэтому я использовал \w. После замены вернём на место переводы строк. ... | tr '\n' ' ' | sed -r 's/-(\w+) \1\b//g' | sed -r 's/ /\n/g' 86775242-86775243 86775260-86775260 175397181-175397182 175397189-175397190 175397191-175397191 175397315-175397315 175397323-175397323 Приготовимся посчитать номер следующего за концом кластера: ... | sed -r 's/(\w+)-(\w+)/\1;\2;\2+1;/' 86775242;86775243;86775243+1; 86775260;86775260;86775260+1; 175397181;175397182;175397182+1; 175397189;175397190;175397190+1; 175397191;175397191;175397191+1; 175397315;175397315;175397315+1; 175397323;175397323;175397323+1; И вычислим это: ... | bc 86775242 86775243 86775244 86775260 86775260 86775261 175397181 175397182 175397183 175397189 175397190 175397191 175397191 175397191 175397192 175397315 175397315 175397316 175397323 175397323 175397324 По аналогии с прошлым разом, объединяем строки через дефис, а каждый третий дефоис заменяем пробелом: ... | tr '\n' '-' | sed -r 's/(\w+-\w+-\w+)-/\1 /g' Объединяем цепочки, где начальный кластер следующий совпадает со следующим за конечным кластером предыдущей: ... | sed -r 's/-\w+-(\w+) \1//g' 86775242-86775243-86775244 86775260-86775260-86775261 175397181-175397182-175397183 175397189-175397191-175397192 175397315-175397315-175397316 175397323-175397323-175397324 Убираем лишнюю информацию о следующем кластере: ... | sed -r 's/(-\w+)-\w+/\1/g' 86775242-86775243 86775260-86775260 175397181-175397182 175397189-175397191 175397315-175397315 175397323-175397323 Команда целиком: cat d.log | grep '-' | grep -v 'ddrescue' | \ sed -r "s/0x(\w+)\s+0x(\w+)\s+.*/\1\/$clsz; (\1+\2)\/$clsz/;1s/^ibase=16\n/" | \ bc | tr '\n' '-' | sed -r 's/(\w+-\w+)-/\1\n/g' | uniq | tr '\n' ' ' | \ sed -r 's/-(\w+) \1\b//g' | sed -r 's/ /\n/g' | \ sed -r 's/(\w+)-(\w+)/\1;\2;\2+1;/' | bc | tr '\n' '-' | \ sed -r 's/(\w+-\w+-\w+)-/\1 /g' | sed -r 's/-\w+-(\w+) \1//g' | \ sed -r 's/(-\w+)-\w+/\1/g' Используем список для поиска файлов: Оборачиваем получившуюся выше конструкцию в качестве набора для цикла for: for r in $(...); do echo $r; done Ну и наконец меняем echo $r на нечто полезное: sudo ntfscluster -f -c $r d.img 2>/dev/null В итоге получается интересующий нас список файлов вместе с указанием кластеров.

понедельник, 3 февраля 2020 г.

Как монтировать ISO-образы на Windows 7?

#windows #поиск_программ #образ #iso_образ


Многие крупные скачиваемые обновления поставляются в виде образов для болванок -
файлов формата ISO. Прожигать диски, чтобы с них устанавливать обновления, - это пустая
трата расходников, потому что после обновления диски уже не нужны - получается, что
это диски однократного использования. Вопрос в том, как правильно монтировать образы
в Windows, какие для этого существуют встроенные или устанавливаемые инструменты?    


Ответы

Ответ 1



Daemon tools (Lite-версия бесплатна), alcohol и множество других ,есть кстати и утилита от майкрософта, но не помню, как называется... Да и в конце концов можно просто открыть архиватором - 7-zip'ом, например. )

Ответ 2



Давно использую Virtual CloneDrive. Бесплатная, работает хорошо, позволяет создавать несколько виртуальных дисководов и умеет автоматически подключать образ после перезагрузки. Имеется русский язык (и не только). Впрочем, он там не особо нужен.

Ответ 3



Лучше UltraISO не найти. Он не только монтирует, ну и сжимает папки в ISO. А еще плюс такой, скачали .MDF (.mds не качайте, он не нужен), переименовываете в ISO и монтируете! На счет Daemon tools вы должны иметь ввиду, что NOD32 ругается что там вирус, и приходится добавлять исключения вручную. Потому от использования этой программы я навеки отказался. Обратитесь ко мне, дам скачать через свой сервер напрямую!

Ответ 4



XP: Small, Free Way to Use and Mount Images (ISO files) Without Burning Them.В отличии от демона и алкоголя не нужно перегружать комп. Маленькая, простая, шустрая.

Ответ 5



От себя порекомендовал бы https://ru.wikipedia.org/wiki/ImDisk Компактная и многофункциональная утилита. Абсолютно бесплатная и позволяет работать с образами разных форматов. Часто использую ее для эмуляции дискет. Скачать: http://www.ltr-data.se/opencode.html/#ImDisk

среда, 22 января 2020 г.

Чем открыть fig файл на ubuntu?

#ubuntu #поиск_программ


Дизайнер скинул макет сайта в fig-формате. На Windows есть Figma. Ищу аналог на Ubuntu. 
    


Ответы

Ответ 1



Попробуй эти Dotgrid, HotGloo, Alva

воскресенье, 12 января 2020 г.

Есть ли утилита для проверки совместимости Pc железа с Mac os?

#macos #mac #поиск_программ


Заинтересовался в установке os x на ноутбук. Не знаю нужно ли мне это, но хотелось
бы знать поддерживает ли ос ноут или не париться и  сидеть на линуксе .
    


Ответы

Ответ 1



Очень много проблем может быть связано с установкой OS X на ноутбук. Если стационарный компьютер можно собрать с практически идентичными характеристиками к Mac и с полпинка завести OS X, то с ноутбуками намного сложнее. Даже если практически все характеристики идентичные. Главная проблема - в конфигурациях с переключаемой графикой (Intel+nVidia или Intel+AMD) в OS X работает только Intel. Подходят только видеокарты Intel HD3xxx,4ххх,5ххх. Пример из жизни. Сотрудник ставил на свой ноутбук OS X, который схож с MacBook 15" по характеристикам - все прошло нормально, но как ни старался, клавиатура так и не заработала. А с внешней USB клавиатурой, ясное дело, это не то.

Ответ 2



Это называется "Хакинтош". Официально эпплом не поддерживается. Возможно нарушает лицензионное соглашение. Так что можно предложить только попробовать установить - заработает или нет.

пятница, 10 января 2020 г.

Чем смотреть исполняемый код .net приложения?

#net #декомпиляция #поиск_программ #jit


Хочу полазить по скомпилированному приложению, чтобы увидеть оптимизации, производимые
jit-компилятором.

Какие программы использовать, чтобы получить листинг нативного кода после прохода
jit и их меппинг на инструкции il-кода? В идеале бы ещё меппинг на C#-код.
    


Ответы

Ответ 1



Запустите или присоединитесь к своему приложению отладчиком Visual Studio, установите брекпойнт в интересующем месте, и когда он сработает - выберите пункт меню "Debug/Windows/Disassembly". Опции для показа IL там нет. Можно только установить галочку "Show source code", и тогда будет показан маппинг машинного и исходного кода(на C#, VB.NET, или на другом языке, на котором вы программируете).

понедельник, 6 января 2020 г.

Чем удобно проверять RESTFul API?

#rest #тестирование #поиск_программ


Для проверки работы API я использую браузер. Это было удобно до того момента, как
я начал реализовывать post, put и delete методы. Мне кажется, что не стоит тратить
время на написание тулзы для проверки API. Поисковики ничего разумного не выдают по
этому поводу. Есть нормальные программы для тестирования API под win?
    


Ответы

Ответ 1



Если имеется ввиду ручное тестирование, то для браузеров имеется много плагинов для выполнения HTTP запросов. Вот например приложение для Chrome Postman

Ответ 2



Вообще, для рест нынче моден swagger. Во многих языках можно на лету генерить для него всё на основании аннотаций. К примеру, мы на ноде используем генератор самописный типо express-swagger-generator. Он по аннотациям к методу генерит данные для свагера и запускает его потом. После чего можно его открыть в браузере и выполнять любые запросы в удобном виде. Выглядит как-то так:

Ответ 3



Postman так же существует в виде отдельного приложения для Windows, Linux, MacOS. Скачать можно тут: https://www.getpostman.com/downloads/

Ответ 4



Есть такая замечательная программка как Postman, вы там можете создать запросы, указать метод. Для теста можно в запросе указать формат данных JSON, Postman вам отобразит.

пятница, 27 декабря 2019 г.

Примонтировать архив как диск

#windows #архивация #диск #монтирование #поиск_программ


Хочу примонтировать архив (желательно 7z, но можно другой хороший) как виртуальный
диск в Windows. При этом должны выполняться следующие условия:


Считаем, что есть пустой архив. Когда именно он создастся - не важно.
Этот архив монтируется как виртуальный диск.
На этот диск будет записан ровно один файл.
Сжатие должно происходить непосредственно при записи.
Запись будет последовательной (но НЕ realtime).
Ожидаемый объём записываемого от 100 ГБ до 500 ГБ.
Ожидаемый объём архива в 500 раз меньше объёма записываемого файла.
На дисках не достаточно свободного места, чтобы вместить несжатый файл.
Желательно, чтобы последовательное считывание после записи тоже было возможно.


Записываться будет несжатое avi, причём обязательно под Windows.

С помощью каких программ такое можно осуществить?

Замечу, что 7zip умеет делать потоковую архивацию. Например, следующей командой можно
упаковать выводимый текст в архив cmd.7z под именем (файла) help.txt (ключ -si):

cmd /? | "C:\Program Files (x86)\7-Zip\7z.exe" a -sihelp.txt cmd.7z


Получается, что подходит любая программа, которая способна создать виртуальный диск
и выводить на stdout всё, что пишется в файл на этом диске.

PS: Этот вопрос на английском.
    


Ответы

Ответ 1



Можно попробовать использовать WebDAV. Windows умеет монтировать WebDAV-папки как сетевые диски. Начать можно с вот такого сервера (код на C#), который эмулирует пустой диск, ожидая пока ему не передадут файл: using System; using System.Globalization; using System.IO; using System.Net; using System.Xml.Linq; namespace HttpPipe { static class Program { static readonly Uri ListenUri = new Uri("http://localhost/share/"); static void Main(string[] args) { CultureInfo.DefaultThreadCurrentCulture = CultureInfo.GetCultureInfo("en-US"); var listener = new HttpListener { Prefixes = { $"{ListenUri.Scheme}://*:{ListenUri.Port}{ListenUri.PathAndQuery}" }, }; listener.Start(); bool processing = false; try { while (true) { processing = false; var ctx = listener.GetContext(); processing = true; try { var uri = ctx.Request.Url; Console.Error.WriteLine($"{ctx.Request.HttpMethod} {uri} {ctx.Request.ContentType} {ctx.Request.ContentLength64}"); var root = new Uri(uri, ListenUri.PathAndQuery); if (uri + "/" == root.ToString()) uri = root; uri = uri.MakeRelativeUri(root); if (uri.IsAbsoluteUri || uri.ToString().StartsWith("..")) throw new Exception("Неправильный URI: " + uri); if (ProcessContext(ctx, uri.ToString())) break; } finally { ctx.Response.Close(); } } } catch (Exception ex) when (processing) { Console.Error.WriteLine("ERROR: " + ex); } catch (Exception) { } listener.Stop(); } static readonly XNamespace DAV = "DAV:"; private static bool ProcessContext(HttpListenerContext ctx, string uri) { ctx.Response.SendChunked = false; switch (ctx.Request.HttpMethod) { case "OPTIONS": ctx.Response.SetStatus(HttpStatusCode.OK); ctx.Response.AddHeader("DAV", "1"); break; case "PROPFIND": if (uri != "") { ctx.Response.SetStatus(HttpStatusCode.NotFound); } else { var prop = new XElement(DAV + "prop"); prop.SetElementValue(DAV + "creationdate", DateTime.UtcNow.ToString("s") + "Z"); prop.SetElementValue(DAV + "getlastmodified", DateTime.UtcNow.ToString("R")); prop.SetElementValue(DAV + "displayname", "share"); prop.Add(new XElement(DAV + "resourcetype", new XElement(DAV + "collection"))); var response = new XElement(DAV + "response"); response.SetElementValue(DAV + "href", ListenUri.PathAndQuery); response.Add(new XElement(DAV + "propstat", new XElement(DAV + "status", "HTTP/1.1 200 OK"), prop)); ctx.Response.StatusCode = 207; ctx.Response.StatusDescription = "Multi Status"; ctx.Response.Send(new XElement(DAV + "multistatus", new XAttribute(XNamespace.Xmlns + "d", DAV), response)); } break; case "PUT": if (ctx.Request.ContentLength64 > 0) { foreach (string header in ctx.Request.Headers) { Console.Error.WriteLine($" {header}: {ctx.Request.Headers[header]}"); } using (var output = Console.OpenStandardOutput()) { ctx.Request.InputStream.CopyTo(output); } ctx.Response.SetStatus(HttpStatusCode.NoContent); return true; } ctx.Response.SetStatus(HttpStatusCode.NoContent); return false; default: ctx.Response.SetStatus(HttpStatusCode.NotImplemented); break; } return false; } static void SetStatus(this HttpListenerResponse resp, HttpStatusCode status) { resp.StatusCode = (int)status; resp.StatusDescription = status.ToString(); } static void Send(this HttpListenerResponse resp, XElement content) { var ms = new MemoryStream(); content.Save(ms); ms.Position = 0; resp.ContentType = "application/xml; charset=utf-8"; resp.ContentLength64 = ms.Length; ms.CopyTo(resp.OutputStream); } } } Когда приходит файл - он выводит его содержимое в стандартный вывод и завершает работу. Полезные ссылки: RFC 4918 - HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV) WebDAV-API Яндекс-Диска - тут есть ценные примеры

четверг, 12 декабря 2019 г.

Какие программы и генераторы можно применять для облегчения написания кода svg

#javascript #css #svg #поиск_программ


Какую посоветуете программу для SVG?

Желательно с "генерацией кода" HTML, если есть такое.  

Update

Автор вопроса видимо имел ввиду программы для помощи в написании кода svg
    


Ответы

Ответ 1



Update Посмотрите конец топика. Добавлена утилита, которая сделает из вашего статичного SVG файла анимацию рисования линий с помощью нажатия одной кнопки. Автору, если я правильно понял вопрос нужны инструменты, которые облегчают написание кода SVG. SVG GENERATOR PATH Очень удобная вещь. Перемещаете узловые точки, двигаете рычаги, а внизу пишется код патча. Может быть использован для написания кода для фигурной шапки сайта, для анимашек волн и т.д и т.п Полученный код из генераторов, в период освоения SVG, лучше добавлять инлайн способом, то есть непосредственным копированием в HTML Path Length Calculator Копируете формулу path и получаете его максимальную длину. Вычисление длины path необходима для написания кода анимации рисования линий, посредством изменения атрибута stroke-dasharray SVG Path Builder Добавляете, удаляете, перемещаете узловые точки для получения нужной формы кривой. В нижнем правом углу автоматом пишется код path BOXY SVG Быстрый, многофункциональный векторный редактор Генераторы clipPath https://codepen.io/jh3y/pen/XqVQqa http://bennettfeely.com/clippy/ Генераторы базовых фигур SVG Генератор прямых линий Прямые отрезки – path Генератор прямоугольников Генератор окружностей Генератор эллипсов Генераторы кривых Безье Кубическая кривая Безье – The cubic Bezier curve Кривые Безье второго порядка Гладкая поликривая Безье второго порядка Принцип для всех, вышеперечисленных генераторов svg кода одинаков: двигаете узловые точки, перемещаете их рычаги и копируете код SVG. Процесс использования генераторов нагляден, удобен, сразу видно какие атрибуты path динамически изменяются. Что помогает понять, как они работают. Также их выгодно применять, так как на выходе получается чистый код, без добавления служебной информации, которую вносят векторные редакторы в файл SVG Конвертер SVG path Convert SVG path to all-relative or all-absolute Преобразует все команды либо в относительную, либо в абсолютную форму записи. Инструменты разработки К сожалению ничего, такого, специализированного нет. Да в принципе и не нужно особо. Так как svg легко правится в текстовом редакторе, например: Notepad++ Рисовать сложные фигуры можно в векторных редакторах: Inkscape, Adobe Illustrator. Для рисования простых фигур есть и такие редакторы: editor.method svg-edit.github.io Draw SVG JXNBLK / PATHS Оптимизаторы кода SVG SVGOMG - автор Jake Archibald SVG Editor - автор Peter Collingridge SVGO-GUI - автор GreLI Мне особенно нравится SVG Editor и его в основном использую, практически на каждом приложении. Убирается вся лишняя, служебная информация, можно задать количество знаков после запятой у path. Размер файла svg порою сокращается в несколько раз и код становится читабельным. Update 4.12.2019 Генераторы параметров атрибутов для анимации Cubic-bezier Генератор keysplines Генератор keyTimes Генератор анимации линий Всё просто: перетаскиваете свой файл SVG в окно загрузки утилиты и получаете на выходе готовый файл с анимацией рисования линии.

вторник, 10 декабря 2019 г.

Быстрое переключение мониторов

#windows #bat #поиск_программ #монитор


Как изменять состояние Multiple displays одной командой?


    


Ответы

Ответ 1



Как говорится в https://stackoverflow.com/a/16791451/4928642, можно запустить стандартную программу DisplaySwitch с одним из следующих параметров: /clone - Duplicate these displays /external - Show desktop only on 2 /internal - Show desktop only on 1 /extend - Extend this displays Соответственно, можно создать нужные ярлыки и запускать их.

понедельник, 9 декабря 2019 г.

В чем смотреть разницу между исходниками (текстом)?

#git #svn #поиск_программ #tfs


Подскажите программу для анализа текста, аналогичную тем, что используются в системах
контроля версий.

Иногда необходимо сравнить два участка кода, найти и проанализировать различия. Конечно,
есть вариант закоммитить один в SVN, подменить другим и смотреть различия. Но всё же
не хочется мусорить в истории коммитов.
    


Ответы

Ответ 1



Даже не знаю, почему все предлагают онлайн утилиты. Если нужно сравнить пять-десять строк, то это можно и ручками, а если нужно мегабайтные куски (не объязательно прямо код, есть много чего, что нужно сравнивать), то как по мне, только нативные приложения. А их вагон и тележка. Платные я не вижу смысла рассматривать, так как есть нормальные бесплатные. Хотя говорят, что araxis просто чудо, но я его не использовал. meld. Есть под линукс и винду, под виндой маленький недостаток - требует установленного питона и ещё немного библиотек. Под линуксом ставится с репозитория. Кроме как сравнить файлы, умеет работать с основной массой систем контроля версий (даже коммитить). Я лично пользуюсь и запускаю его как meld . в каталоге с проектом. Сразу видно какие файлы изменились. winmerge. Пока доступен только под винду, но обещают скоро и под линукс (кроссплатформенный). Но его интерфейс как то чуточку "староват". diffuse. Виндовс/Линукс. Ничего особого не увидел, но вот "сеточка" в коде как то не то. Но это на любителя.

Ответ 2



в программах контроля версий используется либо «нормальный» (--normal, по умолчанию), либо «унифицированный» (--unified, -u) форматы программы diff: $ diff файл1 файл2 1c1 < qwerty --- > qwerty1 $ diff -u файл1 файл2 --- "файл1" 2016-07-28 10:48:41.337854383 +0300 +++ "файл2" 2016-07-28 10:48:54.073854155 +0300 @@ -1 +1 @@ -qwerty +qwerty1

Ответ 3



Есть хороший плагин Compare для Notepad++

Ответ 4



Я этим пользуюсь. Радует что онлайн, плюс поделится можно https://www.diffchecker.com/diff

Ответ 5



Если у вас установлен TortoiseSVN или TortoiseGIT то вы можете использовать для сравнения TortoiseMerge, даже если файлы не версированы.

Ответ 6



Это целый сектор программ. На вики есть достаточно исчерпывающий список с перечислением особенностей и фич: https://en.wikipedia.org/wiki/Comparison_of_file_comparison_tools

воскресенье, 8 декабря 2019 г.

Аналог Photoshop для Ubuntu

#ubuntu #веб_дизайн #photoshop #поиск_программ


Какой есть аналог Photoshop для Ubuntu, главное чтоб мог открывать psd и работать
с слоями. Сейчас использую в качестве альтернативы assets.adobe.com, но с 28,06 самая
главная функция Extract отключится
    


Ответы

Ответ 1



Аналогом фотошопа на Ubuntu является GIMP. Само собой, что к некоторым вещам нужно привыкнуть: чего-то в нем нет, что-то сделано иначе. Но это не фотошоп - это аналогичная программа. Как и Ubuntu - это не Windows - сравнивать бессмысленно. P.S.: Как бессмысленно сравнение и по цене.

Ответ 2



Есть пакет GIMP Photoshop Tweaks (под лицензией GPLv3), он допиливает gimp до состояния фотошопа: интерфейс, горячие клавиши и расположение окон и вкладок. Я особой разницы не заметил, все как в cs6 только бесплатно и работает шустрее.

Ответ 3



Gimp полностью всё умеет из того, что Вам нужно. По интерфейсу - очень похож на Photoshop. Всегда есть много мануалов и видео уроков/подсказок

Ответ 4



Можно поставить VirtualBox, а на него винду и фотошоп. По идее, если комп современный, то снижения производительности вы не заметите при работе с виртуалкой....

Ответ 5



Поставьте фотошоп на wine и будет вам счастье

суббота, 7 декабря 2019 г.

Перезагрузка из Windows в Linux

#linux #windows #grub #поиск_программ #dual_boot


Установлены две системы - Windows 7 и Linux Mint 17. Загрузчик - grub, по умолчанию
загружает Windows (и это так и надо).

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

Возможно ли как-то в виндоусе организовать автоматическую перезагрузку в линукс,
чтобы не надо было руками ничего выбирать в меню?

Драйвер файловой системы установлен и файлы линуксового раздела доступны, однако,
по умолчанию, это readonly-доступ. Изменить можно, но что-то мне подсказывает, что
неспроста он readonly. Есть ли варианты кроме разрешения доступа на запись и изменения
конфигурации grub'а перед перезагрузкой с последующим восстановлением конфигурации
из Linux'а? Насколько плоха такая идея? Или как лучше всего её реализовать?
    


Ответы

Ответ 1



например, можно перенести содержимое каталога /boot в раздел с файловой системой, с которой отлично работают и ms/windows и gnu/linux — msdos/fat (оно же fat32, оно же vfat и т.п.). тогда можно будет устанавливать в файле /boot/grub/grubenv переменной окружения next_entry нужный пункт из загрузочного меню (нумерация начинается с нуля). важный момент: этот файл должен быть размером ровно 1024 байта. как именно должно выглядеть содержимое файла с новой командой, можно выяснить «на кошках», передав первым параметром путь к какому-нибудь тестовому файлу. вот эта команда установит значение переменной next_entry: $ grub-editenv /tmp/file set next_entry=1 а вот эта — удалит упоминание данной переменной: $ grub-editenv /tmp/file unset next_entry p.s. после переноса содержимого надо, естественно, добавить строчку в /etc/fstab для монтирования раздела, куда вынесено содержимое каталога /boot. примерно так: /dev/раздел /boot auto defaults 0 0 или так: UUID="uuid-раздела" /boot auto defaults 0 0 uuid-раздела можно узнать из вывода команды: $ sudo blkid /dev/sda1: UUID="7ff90d2c-656f-4d31-bde3-6aa0f57c57e1" TYPE="ext2" /dev/sdb1: UUID="BB52-4408" TYPE="vfat" PARTUUID="e5311d67-01" обновление. протестировал. вполне уверенно срабатывает «одноразовая» функциональность: после загрузки значение переменной next_entry в файле /boot/grub/grubenv было благополучно «затёрто».

среда, 4 декабря 2019 г.

IDE для написания SQL структуры таблиц

#mysql #sql #ide #поиск_программ


Подскажите хорошую IDE(если такова существует)
Необходима не только подсветка синтаксиса, но и подсветка возможных ошибок в коде.
Самое главное автоподставка: имен, типов, атрибутов и т.п. Юзаю phpDesigner но автоподставки
в SQL там к сожалению нету.    


Ответы

Ответ 1



Строго рекомендую dbForge Studio for SQL Server Написание SQL-кода может занимать много времени, но производительность помогут улучшить: Автоматическое дополнение кода — для быстрого создания выражений SQL. Форматирование SQL — для соблюдения принятого стиля написания кода. Шаблоны кода SQL — для быстрого сохранения и повторного использования фрагментов кода. Быстрая подсказка с информацией об объектах базы данных. Навигация по коду — быстрый переход по F12 к описанию переменной, редактору объекта и т.д.

Ответ 2



Еще можете глянуть: HeidiSQL SQLYog

Ответ 3



Лучшее, как и многое от JB (имхо): https://www.jetbrains.com/datagrip/

Ответ 4



Я предпочитаю юзать Valentina Studio (http://valentina-db.com/en/valentina-studio-overview). Шикарно работает на маке, винде и линуксе. Особенно на линуксе. SQL редактор достойный. Не говоря про кучу других фич, которые есть в бесплатной версии.

понедельник, 15 июля 2019 г.

Есть ли утилита для проверки совместимости Pc железа с Mac os?

Заинтересовался в установке os x на ноутбук. Не знаю нужно ли мне это, но хотелось бы знать поддерживает ли ос ноут или не париться и сидеть на линуксе .


Ответ

Очень много проблем может быть связано с установкой OS X на ноутбук. Если стационарный компьютер можно собрать с практически идентичными характеристиками к Mac и с полпинка завести OS X, то с ноутбуками намного сложнее. Даже если практически все характеристики идентичные. Главная проблема - в конфигурациях с переключаемой графикой (Intel+nVidia или Intel+AMD) в OS X работает только Intel. Подходят только видеокарты Intel HD3xxx,4ххх,5ххх.
Пример из жизни. Сотрудник ставил на свой ноутбук OS X, который схож с MacBook 15" по характеристикам - все прошло нормально, но как ни старался, клавиатура так и не заработала. А с внешней USB клавиатурой, ясное дело, это не то.

понедельник, 8 июля 2019 г.

Улучшить качество видео

Есть видео низкого качества, плохо просматриваются объекты. Задача распознать объекты на видео. Кто сталкивался с улучшением видео?
Думаю это вполне реально с использованием нейросетей.


Ответ

Есть наработки для фото, пример:

причем при помощи всего лишь 340 строк кода
Есть наработки для более плохого качества, пример:

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

воскресенье, 7 апреля 2019 г.

Как монтировать ISO-образы на Windows 7?

Многие крупные скачиваемые обновления поставляются в виде образов для болванок - файлов формата ISO. Прожигать диски, чтобы с них устанавливать обновления, - это пустая трата расходников, потому что после обновления диски уже не нужны - получается, что это диски однократного использования. Вопрос в том, как правильно монтировать образы в Windows, какие для этого существуют встроенные или устанавливаемые инструменты?


Ответ

Daemon tools (Lite-версия бесплатна), alcohol и множество других ,есть кстати и утилита от майкрософта, но не помню, как называется... Да и в конце концов можно просто открыть архиватором - 7-zip'ом, например. )

среда, 27 февраля 2019 г.

Чем смотреть исполняемый код .net приложения?

Хочу полазить по скомпилированному приложению, чтобы увидеть оптимизации, производимые jit-компилятором.
Какие программы использовать, чтобы получить листинг нативного кода после прохода jit и их меппинг на инструкции il-кода? В идеале бы ещё меппинг на C#-код.


Ответ

Запустите или присоединитесь к своему приложению отладчиком Visual Studio, установите брекпойнт в интересующем месте, и когда он сработает - выберите пункт меню "Debug/Windows/Disassembly".
Опции для показа IL там нет. Можно только установить галочку "Show source code", и тогда будет показан маппинг машинного и исходного кода(на C#, VB.NET, или на другом языке, на котором вы программируете).

понедельник, 15 октября 2018 г.

Быстрое переключение мониторов

Как изменять состояние Multiple displays одной командой?


Ответ

Как говорится в https://stackoverflow.com/a/16791451/4928642, можно запустить стандартную программу DisplaySwitch с одним из следующих параметров:
/clone - Duplicate these displays /external - Show desktop only on 2 /internal - Show desktop only on 1 /extend - Extend this displays
Соответственно, можно создать нужные ярлыки и запускать их.

понедельник, 8 октября 2018 г.

IDE для написания SQL структуры таблиц

Подскажите хорошую IDE(если такова существует) Необходима не только подсветка синтаксиса, но и подсветка возможных ошибок в коде. Самое главное автоподставка: имен, типов, атрибутов и т.п. Юзаю phpDesigner но автоподставки в SQL там к сожалению нету.


Ответ

Строго рекомендую dbForge Studio for SQL Server Написание SQL-кода может занимать много времени, но производительность помогут улучшить: Автоматическое дополнение кода — для быстрого создания выражений SQL. Форматирование SQL — для соблюдения принятого стиля написания кода. Шаблоны кода SQL — для быстрого сохранения и повторного использования фрагментов кода. Быстрая подсказка с информацией об объектах базы данных. Навигация по коду — быстрый переход по F12 к описанию переменной, редактору объекта и т.д.