dzzb - Добро пожаловать! Снова.
$$$
До Н.Г.

Показаны записи с тегом: Мои разработки.

http2cli 15.10.17

Опубликовано: 17-10-2015 23:38 Автор: MBTY Теги: Мои разработки, HTML
Обновление!
Добавлено несколько вариантов переформатирования текста.
В ходе решения очередной задачи потребовался инструмент, который выводил бы в консоль html-код страницы по URL.
Задача была следующей: создать скрипт, который бы находил в сети самый свежий релиз Media Player Classic Home Cinema.
Самые свежие "nightly" билды лежат тут: https://nightly.mpc-hc.org, нужно скачать MPC-HC.*.*.*.*.x86.exe (на момент написания статьи MPC-HC.1.7.9.181.x86.exe)
Так как wget не умеет нормально качать файлы со страницы по маске (через адовые костыли), то нужно предварительно прочесть html-код, чтобы "выловить" ссылку на наш файл
Недавно я выкладывал 2 консольных костыля, одним из которых был OPI - узкоспециализированный парсер страниц. Теперь он получил дополнительный функционал, несколько настроек, стал более универсальным, а так как от исходного кода OPI осталась только пара строк, то название тоже сменилось: http2cli
Как он работает:
Вводим в консоли http2cli https://nightly.mpc-hc.org|find "x86.exe" и получаем...такую дичь:
CMD: dzzb.ru <!--[if gt IE 9]><!--><html class="no-js browser" lang="en"><!--<![endif]--><head><meta charset="utf-8"><title>MPC-HC Nightly Builds</title><meta name="description" content="MPC-HC Nightly Builds"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="shortcut icon" href="/_h5ai/client/images/favicon/favicon-16-32.ico"><link rel="apple-touch-icon-precomposed" type="image/png" href="/_h5ai/client/images/favicon/favicon-152.png"><link rel="stylesheet" href="/_h5ai/client/css/styles.css"><script src="/_h5ai/client/js/scripts.js" data-module="main"></script></head><body><div id="fallback-hints"><span class="noJsMsg">Works best with JavaScript enabled!</span><span class="noBrowserMsg">Works best in <a href="http://browsehappy.com">modern browsers</a>!</span><span class="backlink"><a href="http://larsjung.de/h5ai/" target="_blank" title="h5ai 0.27.0 В· a modern HTTP web server index">powered by h5ai</a></span></div><div id="fallback"><table><tr><th class='fb-i'></th><th class='fb-n'><span>Name</span></th><th class='fb-d'><span>Last modified</span></th><th class='fb-s'><span>Size</span></th></tr><tr><td class='fb-i'><img src='/_h5ai/client/images/fallback/folder.png' alt='folder'/></td><td class='fb-n'><a href='/mpc-hc_apps/'>mpc-hc_apps</a></td><td class='fb-d'>2011-05-07 12:12</td><td class='fb-s'></td></tr><tr><td class='fb-i'><img src='/_h5ai/client/images/fallback/folder.png' alt='folder'/></td><td class='fb-n'><a href='/old/'>old</a></td><td class='fb-d'>2015-10-04 22:14</td><td class='fb-s'></td></tr><tr><td class='fb-i'><img src='/_h5ai/client/images/fallback/file.png' alt='file'/></td><td class='fb-n'><a href='/Info.md'>Info.md</a></td><td class='fb-d'>2015-04-09 23:18</td><td class='fb-s'>0 KB</td></tr><tr><td class='fb-i'><img src='/_h5ai/client/images/fallback/file.png' alt='file'/></td><td class='fb-n'><a href='/log.1.7.9.181.log'>log.1.7.9.181.log</a></td><td class='fb-d'>2015-10-04 22:31</td><td class='fb-s'>293 KB</td></tr><tr><td class='fb-i'><img src='/_h5ai/client/images/fallback/file.png' alt='file'/></td><td class='fb-n'><a href='/MPC-HC.1.7.9.181.x64.7z'>MPC-HC.1.7.9.181.x64.7z</a></td><td class='fb-d'>2015-10-04 22:16</td><td class='fb-s'>12453 KB</td></tr><tr><td class='fb-i'><img src='/_h5ai/client/images/fallback/file.png' alt='file'/></td><td class='fb-n'><a href='/MPC-HC.1.7.9.181.x64.exe'>MPC-HC.1.7.9.181.x64.exe</a></td><td class='fb-d'>2015-10-04 22:19</td><td class='fb-s'>13401 KB</td></tr><tr><td class='fb-i'><img src='/_h5ai/client/images/fallback/file.png' alt='file'/></td><td class='fb-n'><a href='/MPC-HC.1.7.9.181.x64.pdb.7z'>MPC-HC.1.7.9.181.x64.pdb.7z</a></td><td class='fb-d'>2015-10-04 22:22</td><td class='fb-s'>17732 KB</td></tr><tr><td class='fb-i'><img src='/_h5ai/client/images/fallback/file.png' alt='file'/></td><td class='fb-n'><a href='/MPC-HC.1.7.9.181.x86.7z'>MPC-HC.1.7.9.181.x86.7z</a></td><td class='fb-d'>2015-10-04 22:25</td><td class='fb-s'>11584 KB</td></tr><tr><td class='fb-i'><img src='/_h5ai/client/images/fallback/file.png' alt='file'/></td><td class='fb-n'><a href='/MPC-HC.1.7.9.181.x86.exe'>MPC-HC.1.7.9.181.x86.exe</a></td><td class='fb-d'>2015-10-04 22:27</td><td class='fb-s'>12530 KB</td></tr><tr><td class='fb-i'><img src='/_h5ai/client/images/fallback/file.png' alt='file'/></td><td class='fb-n'><a href='/MPC-HC.1.7.9.181.x86.pdb.7z'>MPC-HC.1.7.9.181.x86.pdb.7z</a></td><td class='fb-d'>2015-10-04 22:30</td><td class='fb-s'>17006 KB</td></tr><tr><td class='fb-i'><img src='/_h5ai/client/images/fallback/file.png' alt='file'/></td><td class='fb-n'><a href='/MPC-HC_standalone_filters.1.7.9.181.x64.7z'>MPC-HC_standalone_filters.1.7.9.181.x64.7z</a></td><td class='fb-d'>2015-10-04 22:23</td><td class='fb-s'>1616 KB</td></tr><tr><td class='fb-i'><img src='/_h5ai/client/images/fallback/file.png' alt='file'/></td><td class='fb-n'><a href='/MPC-HC_standalone_filters.1.7.9.181.x86.7z'>MPC-HC_standalone_filters.1.7.9.181.x86.7z</a></td><td class='fb-d'>2015-10-04 22:31</td><td class='fb-s'>1454 KB</td></tr></table></div></body></html>
Дело в том, что именно на этом сайте исходный код страницы записан в одну строку (для экономии нескольких байт). А find находит строку, в которой было совпадение. Получается, что весь наш сайт будет отображен, потому что во всём нём есть совпадение. Хорошо бы, если между html тегами был разрыв строки.
Это есть первая, помимо основной, функция нашего приложения. Если ввести http2cli https://nightly.mpc-hc.org 1, то между html-тегами будет создаваться разрыв. Если ввести 0 или ничего не вводить, то код никак не будет переоформляться: был изначально код с разрывами - получим их и так, не было - не получим.
Теперь страница будет выглядеть не одной строкой, а вот так:
cmd: dzzb.ru <!DOCTYPE html> <!--[if lt IE 10]> <html class="no-js no-browser" lang="en"> <![endif]--> <!--[if gt IE 9]> <!--> <html class="no-js browser" lang="en"> <!--<![endif]--> <head> <meta charset="utf-8"> <title>MPC-HC Nightly Builds</title> <meta name="description" content="MPC-HC Nightly Builds"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="shortcut icon" href="/_h5ai/client/images/favicon/favicon-16-32.ico"> <link rel="apple-touch-icon-precomposed" type="image/png" href="/_h5ai/client/images/favicon/favicon-152.png"> <link rel="stylesheet" href="/_h5ai/client/css/styles.css"> <script src="/_h5ai/client/js/scripts.js" data-module="main"> </script> </head> <body> <div id="fallback-hints"> <span class="noJsMsg">Works best with JavaScript enabled!</span> <span class="noBrowserMsg">Works best in <a href="http://browsehappy.com">modern browsers</a>!</span> <span class="backlink"> <a href="http://larsjung.de/h5ai/" target="_blank" title="h5ai 0.27.0 В· a modern HTTP web server index">powered by h5ai</a> </span> </div> <div id="fallback"> <table> <tr> <th class='fb-i'> </th> <th class='fb-n'> <span>Name</span> </th> <th class='fb-d'> <span>Last modified</span> </th> <th class='fb-s'> <span>Size</span> </th> </tr> <tr> <td class='fb-i'> <img src='/_h5ai/client/images/fallback/folder.png' alt='folder'/> </td> <td class='fb-n'> <a href='/mpc-hc_apps/'>mpc-hc_apps</a> </td> <td class='fb-d'>2011-05-07 12:12</td> <td class='fb-s'> </td> </tr> <tr> <td class='fb-i'> <img src='/_h5ai/client/images/fallback/folder.png' alt='folder'/> </td> <td class='fb-n'> <a href='/old/'>old</a> </td> <td class='fb-d'>2015-10-04 22:14</td> <td class='fb-s'> </td> </tr> <tr> <td class='fb-i'> <img src='/_h5ai/client/images/fallback/file.png' alt='file'/> </td> <td class='fb-n'> <a href='/Info.md'>Info.md</a> </td> <td class='fb-d'>2015-04-09 23:18</td> <td class='fb-s'>0 KB</td> </tr> <tr> <td class='fb-i'> <img src='/_h5ai/client/images/fallback/file.png' alt='file'/> </td> <td class='fb-n'> <a href='/log.1.7.9.181.log'>log.1.7.9.181.log</a> </td> <td class='fb-d'>2015-10-04 22:31</td> <td class='fb-s'>293 KB</td> </tr> <tr> <td class='fb-i'> <img src='/_h5ai/client/images/fallback/file.png' alt='file'/> </td> <td class='fb-n'> <a href='/MPC-HC.1.7.9.181.x64.7z'>MPC-HC.1.7.9.181.x64.7z</a> </td> <td class='fb-d'>2015-10-04 22:16</td> <td class='fb-s'>12453 KB</td> </tr> <tr> <td class='fb-i'> <img src='/_h5ai/client/images/fallback/file.png' alt='file'/> </td> <td class='fb-n'> <a href='/MPC-HC.1.7.9.181.x64.exe'>MPC-HC.1.7.9.181.x64.exe</a> </td> <td class='fb-d'>2015-10-04 22:19</td> <td class='fb-s'>13401 KB</td> </tr> <tr> <td class='fb-i'> <img src='/_h5ai/client/images/fallback/file.png' alt='file'/> </td> <td class='fb-n'> <a href='/MPC-HC.1.7.9.181.x64.pdb.7z'>MPC-HC.1.7.9.181.x64.pdb.7z</a> </td> <td class='fb-d'>2015-10-04 22:22</td> <td class='fb-s'>17732 KB</td> </tr> <tr> <td class='fb-i'> <img src='/_h5ai/client/images/fallback/file.png' alt='file'/> </td> <td class='fb-n'> <a href='/MPC-HC.1.7.9.181.x86.7z'>MPC-HC.1.7.9.181.x86.7z</a> </td> <td class='fb-d'>2015-10-04 22:25</td> <td class='fb-s'>11584 KB</td> </tr> <tr> <td class='fb-i'> <img src='/_h5ai/client/images/fallback/file.png' alt='file'/> </td> <td class='fb-n'> <a href='/MPC-HC.1.7.9.181.x86.exe'>MPC-HC.1.7.9.181.x86.exe</a> </td> <td class='fb-d'>2015-10-04 22:27</td> <td class='fb-s'>12530 KB</td> </tr> <tr> <td class='fb-i'> <img src='/_h5ai/client/images/fallback/file.png' alt='file'/> </td> <td class='fb-n'> <a href='/MPC-HC.1.7.9.181.x86.pdb.7z'>MPC-HC.1.7.9.181.x86.pdb.7z</a> </td> <td class='fb-d'>2015-10-04 22:30</td> <td class='fb-s'>17006 KB</td> </tr> <tr> <td class='fb-i'> <img src='/_h5ai/client/images/fallback/file.png' alt='file'/> </td> <td class='fb-n'> <a href='/MPC-HC_standalone_filters.1.7.9.181.x64.7z'>MPC-HC_standalone_filters.1.7.9.181.x64.7z</a> </td> <td class='fb-d'>2015-10-04 22:23</td> <td class='fb-s'>1616 KB</td> </tr> <tr> <td class='fb-i'> <img src='/_h5ai/client/images/fallback/file.png' alt='file'/> </td> <td class='fb-n'> <a href='/MPC-HC_standalone_filters.1.7.9.181.x86.7z'>MPC-HC_standalone_filters.1.7.9.181.x86.7z</a> </td> <td class='fb-d'>2015-10-04 22:31</td> <td class='fb-s'>1454 KB</td> </tr> </table> </div> </body> </html>
Вводим http2cli https://nightly.mpc-hc.org 1|find "x86.exe" и получаем: CMD: dzzb.ru <a href='/MPC-HC.1.7.9.181.x86.exe'>MPC-HC.1.7.9.181.x86.exe</a> Для x64 версии всё по той же схеме: вводим http2cli https://nightly.mpc-hc.org 1|find "x64.exe" и получаем:CMD: dzzb.ru <a href='/MPC-HC.1.7.9.181.x64.exe'>MPC-HC.1.7.9.181.x64.exe</a> Дальше уже обрезать лишнее и оставить только "/MPC-HC.1.7.9.181.x86.exe" - дело техники:
for /F "tokens=2 delims='" %%i in ('http2cli https://nightly.mpc-hc.org 1^|find "x86.exe"') do wget --no-check-certificate "https://nightly.mpc-hc.org%%i"
и у нас в руках самый свежий билд плеера.
Увы, но find не умеет искать то, что находится в двойных кавычках: Если ссылка лежит не в 'https://nightly.mpc-hc.org/MPC-HC.1.7.9.181.x86.exe', а "https://nightly.mpc-hc.org/MPC-HC.1.7.9.181.x86.exe", то простой правкой скрипта на for /F "tokens=2 delims="" %%i in ... не отделаешься. Нужны опять же костыли. В сети куча тематик и на русских и на английских ресурсах как обойти то, что команда for не работает с этим " разделителем.
Чтобы не нагромождались скрипты, http2cli заимел еще два параметра:
http2cli http://www.ya.ru 2 приведет к замене " на +++, но не будет в вмешиваться в разрывы строк.
http2cli http://www.ya.ru 3 приведет к замене " на +++ и создаст разрывы строк между html-тегами.
Кавычка заменена, скрипт for /F "tokens=2 delims=+++" %%i in ... - работает прекрасно.
Если сильно захотеть, то можно сделать, что-то вроде монитора изменения страницы без необходимости в запущенном браузере.
Примерно такой код будет мониторить любую страницу и сообщать, если на ней найдены изменения
@echo off
cls
for %%I in (old.html) do set OldFileSize=%%~zI
http2cli.exe "http://google.ru" > new.html
for %%I in (new.html) do set NewFileSize=%%~zI
if "%OldFileSize%"=="%NewFileSize%" goto bad

:good
echo Есть обновления!!
move /y new.html old.html >nul
goto end

:bad
echo Ничего нового...

:end
pause
Если на странице код всегда меняется, как у меня из-за счетчика до Нового Года, то http2cli всегда будет находить "обновления", это нужно учесть :)
Так же пришлось оборудовать этот костыль функцией перевода полученного текста из одной кодировки в другую.
Командная строка у нас по умолчанию в кодировке 866, а потому русский текст на современных страницах (чаще UTF8) будет отображаться так
F4 ╨╜╨░ TXT ╤Д╨░╨╣╨╗╨╡ - ╨╛╨╜ ╨╛╤В╨║╤А╨╛╨╡╤В╤Б╤П ╨▒╨╗╨╛╨║╨╜╨╛╤В╨╛╨╝, F4 ╨╜╨░ *.RTF - ╨╛╤В╨║╤А╤Л╨▓╨░╨╡╤В╤Б╤П ╨▓╨╕╨╜╨┤╨╛╨▓╤Л╨╝ ╨▓╨╛╤А╨┤╨┐╨░╨┤╨╛╨╝, F4 ╨╜╨░ JPG ╨║╨░╤А╤В╨╕╨╜╨║╨╡ - ╨╛╤В╨║╤А╨╛╨╡╤В╤Б╤П ╨┐╨╡╨╕╨╜╤В╨╛╨╝.
╨Т╤Б╨╡ ╨╜╨░╤Б╤В╤А╨╛╨╣╨║╨╕ ╨▓╨╡╨┤╤Г╤В╤Б╤П ╤З╨╡╤А╨╡╨╖ ini. ╨г╨┤╨╛╨▒╨╜╨╛, ╨║╨╗╨░╤Б╤Б╨╜╨╛, ╨┐╨╛╨╗╤М╨╖╨╛╨▓╨░╨╗╤Б╤П ╨│╨╛╨┤╨░╨╝╨╕. ╨в╤Г╤В ╨▓╨╜╨╡╨╖╨░╨┐╨╜╨╛ ╨┐╨╛╨╜╨░╨┤╨╛╨▒╨╕╨╗╨╛╤Б╤М, ╤З╤В╨╛╨▒╤Л ╤Д╨░
Кодовую страницу нужно указывать общепринятым номером (1251 - Windows Cyrillic, 866 - Dos Cyrillic, 65001 - UTF8 и т.д..), либо не указывать вообще, если перекодировка не требуется.
Команда:
http2cli.exe http://www.dzzb.ru 0 65001 866
выведет в консоль читаемый русский текст.
Наконец выкладываю сообщение, которое выдаст http2cli, если был произведен ее запуск без каких-либо параметров :
CMD: dzzb.ru http2cli 15.10.17 Сайт: http://www.dzzb.ru Автор: MBTY Приложение выводит содержимое URL в консоль. Пример использования: http2cli.exe http://www.google.ru Поддерживается переформатирование html кода из одной строки в развернутый вариант. Пример использования: Превращение однострочного кода в разбитый, путем вставки разрыва между html-тегами и заменой " на +++: http2cli.exe http://www.google.ru 3 Превращение замена " на +++ без создания разрывов строк между html-тегами: http2cli.exe http://www.google.ru 2 Превращение однострочного кода в разбитый, путем вставки разрыва между html-тегами: http2cli.exe http://www.google.ru 1 Сохранение исходно вида кода: http2cli.exe http://www.google.ru 0 Имеется поддержка перекодирования содержимого на лету. Пример использования: http2cli.exe http://www.google.ru [0/1] [исходная кодировка] [конечная кодировка] Кодовая страница указывается номером. 1251 - Windows Cyrillic 866 - Dos Cyrillic 65001 - UTF8 и т.д. Пример использования перекодировки страницы из UTF8 в DOS с сохранением форматирования: http2cli.exe http://www.google.ru 0 65001 866 Пример использования перекодировки страницы из UTF8 в DOS с разбиением кода на строки: http2cli.exe http://www.google.ru 1 65001 866

Скачать
Читать далее

Консольные помогаторы

Опубликовано: 24-07-2015 21:16 Автор: MBTY Теги: Мои разработки, HTML
А сегодня у нас два консольных костыля за раз.
Первый - NetSize:
Небольшая утилита, которая просто получает размер файла с сервера.
Вся эта паника вокруг Flash Player с его ежедневными фиксами привела к тому, что нужно каждый день обновлять установочные дистрибутивы браузеров на моей флешке.
У ЯндексБраузера ссылка на скачивание последнего билда имеет вид: http://browser.yandex.ru/download/?os=win&full=1
При обновлении дистрибутива ни aria2c ни wget не могут сравнить файл на сервере с файлом на флешке, потому что на сервере у него всегда меняется имя. Получается, что браузер всегда приходится перекачивать, даже если он не обновлялся.
Получается нужна сравнивалка размеров файла на сервере с локальным файлом. Получился NetSize.
Вбиваем в консоли NetSize "http://browser.yandex.ru/download/?os=win&full=1" и получаем в ответ 59194320 Скрипт, который демонстрирует его работу выглядит так.
1) for %%I in (Yandexlatest.exe) do set LocalFileSize=%%~zI
2) for /F %%a in ('%~d0\!_Soft\netsize "http://browser.yandex.ru/download/?os=win&full=1"') do set NetFileSize=%%a
3) if "%LocalFileSize%"=="%NetFileSize%" goto setup
4) :download
5) wget --trust-server-names --no-check-certificate "http://browser.yandex.ru/download/?os=win&full=1" -q -nv -N -O Yandexlatest.exe
6) :setup
7) Yandexlatest.exe
Поясню построчно.
1) Получаем размер файла на флешке и назначем ему переменную LocalFileSize
2) Получаем размер файла на сервере и назначем ему переменную NetFileSize
3) Если размеры одинаковы, то перескакиваем к процессу установки с маркером Setup, пропустив процесс скачивания.
4, 5) Если размеры не совпали, то начинается процесс скачивания с последнующей установкой.
6, 7) Установка браузера.
Скачать NetSize
Второй костыль - OPI:
Простая, но полезная утилита, которая будет удобна для обновления разных дистрибутивов.
Для примера рассмотрим как выкладываются дистрибутивы браузера Opera на оффициальном сервере.
Перейдя по ссылке http://get.geo.opera.com/ftp/pub/opera/desktop/, мы увидим, что нумерация версий приводит к тому, что в самом низу последним идёт самый свежий релиз браузера 30.0.1835.88
Сталкивался в сети с хитроумным скриптом для выполнения подобной цели - нахождение последнего билда любой программулины на страницах подобного формата. Скрипт скачивал всю страницу через Wget, отсеивал все ссылки в отдельный файл через find, затем gsar чистил сылку, чтобы получить только номер билда. Итого три утилиты.
OPI делает всё это за раз. Комманда opi.exe "http://get.geo.opera.com/ftp/pub/opera/desktop/" выдаёт в консоль: 30.0.1835.88 Скрипт демонстрации работы Opi:
1) for /F %%a in ('opi.exe http://get.geo.opera.com/ftp/pub/opera/desktop/') do set BUILD=%%a
2) wget http://get.geo.opera.com/ftp/pub/opera/desktop/%BUILD%/win/Opera_%BUILD%_Setup.exe
1)Opi вычисляет свежий билд и назначает переменную BUILD
2)wget скачивает файл по ссылке, но заменяет %BUILD% на 30.0.1835.88: http://get.geo.opera.com/ftp/pub/opera/desktop/30.0.1835.88/win/Opera_30.0.1835.88_Setup.exe

Скачать Opi
Читать далее

HotLauncher

Опубликовано: 14-07-2015 23:08 Автор: MBTY Теги: Мои разработки

Новое поделие. HotKeyLauncher (HL)
Надоело пихать всякое в панель быстрого запуска, а лаунчеры по краям экрана - не люблю.
Заделал микролаунчер, который ставится в автозагрузку ОСи и вызывается через Ctrl+Alt+Пробел. Появится контекстное меню, а по выбору пункта - запустится программа.

  1. Имеется возможность создания разделителей для меню написанием. "-=-"
  2. Имеется возможность создания меню с вложениями делается так:
    • Заголовок указывается дважды (Заголовок = Заголовок)
    • Открытие подуровня через "(=("
    • Пункты меню
    • Закрытие подуровня через ")=)"
Меню лаунчера, разумеется, редактируется. Пример Ini для меню со скриншота:
[opt]
Блокнот=%WinDir%\notepad.exe
Paint=%WinDir%\System32\mspaint.exe
Калькулятор=calc

Питание = Питание
(=(
Выключение через 60 сек.=shutdown -s -t 600
Отменить выключение=shutdown -a
)=)

-=-

Игры = Игры
(=(
Солитер="c:\Program Files\Microsoft Games\Solitaire\Solitaire.exe"
Сапер ="c:\Program Files\Microsoft Games\Minesweeper\MineSweeper.exe"
Паук="c:\Program Files\Microsoft Games\SpiderSolitaire\SpiderSolitaire.exe"
Червы= "c:\Program Files\Microsoft Games\Hearts\Hearts.exe"
Шахматы="c:\Program Files\Microsoft Games\Chess\Chess.exe"
)=)
Скачать
Читать далее

Установка Android x86 рядом с Windows XP

Опубликовано: 20-05-2015 20:53 Автор: MBTY Теги: Мои разработки, Android
Руководство для XP не проверял. Писал, опираясь на память. Всё делаете на свой страх и риск!
Нужно, чтобы, при включении компьютера, осуществлялся выбор системы: Либо Windows XP, либо Android.
Нам понадобится:
1) Чуть допиленный дистрибутив Androidx86 4.4 R1 от мая 2015 (тот же, что и для 7-ки здесь)
2) Приложение редактирования меню загрузки Windows. Буду использовать BootICE - есть русский интерфейс, установка не нужна, маленький размер.
Начнем.Читать далее

Hash Drive Test

Опубликовано: 16-03-2015 10:34 Автор: MBTY Теги: Мои разработки
Hash Drive Test (dzzb.ru)Hash Drive Test Накопилось несколько частично рабочих флешек. Недуг общий - заливаешь файлы - все читаются и открываются, проходит время - какой-нибудь файл превращается в кашу. То есть сектора флешки читаются, но, почему-то сбоят. У одних недуг проявлялся только после отключения/подключения флешки, у других сразу. И пользоваться такими особо не хочется и выбрасывать жалко. Такие сгодились бы для хранения музыки для автомобильного магнитофона, переноса видео на телевизор и вообще для работы с прочей некритичной информации. Всякие Crystal Disk Info и виктории в упор не увидели поврежденных секторов, а потому и пометить их как нерабочие я не смог.
В голову пришла идея закинуть множество копий одного и того же файла, проверить его целостность (md5), найти поврежденные и оставить их на своих местах, как "заплатки", а неповрежденные удалить. Это место и было бы новым рабочим объемом флешки.
Ручками такое делать лень:
1) Создать несколько копий
2) Залить на флешку
2а) Извлечь флешку на время
3) Сверить целостность
4) Повторить для нескольких флешек

К тому же такое встречал и с HDD (Seagate 320): секторов битых нет, а файлы повреждаются. Делать такое на объеме в 8ГБ - не так то тяжело, а проверять 320 ГБ не сильно хочется.

Создал инструмент, который делает всё за нас.
1) Мы выбираем тестируемый диск и файл (любой, на ваше усмотрение), затем жмем старт
2) Приложение просчитывает MD5 выбранного нами файла
3) Копирует файл с именем по нарастающей (1,2,3.....144,145....)
4) Сразу сверяет MD5 с оригиналом и выдает результат в список удачных или ошибочных результатов.
5) Повторяет шаги с 2 по 4, пока на тестируемом носителе не закончится свободное место.

Галочка "Копировать файлы" нужна, если мы хотим провести сразу и копирование и проверку CRC, но, есть флешки, которые не сбоят, пока их не переподключишь.
Для таких флешек:
1) Делаем тест с включенной галочкой
2) Отключаем флешку
2а) Тушим компьютер, ложимся спать, гуляем....
3) Запускаем Hash Drive Test, выбираем флешку, оригинальный файл для теста.
4) Проводим тест без галочки - файл копироваться повторно уже не станет, а только проверится MD5 с оригиналом.
Скачать
Читать далее

Как выбрать имя для ребенка?

Опубликовано: 23-02-2015 11:22 Автор: MBTY Теги: Мои разработки

Пришло время выбирать имя для ребенка? Бывает :)
Вот вам рулетка с самыми популярными именами для девочек и мальчиков - "NameDice".
Всего две кнопки. Жмёте нужную - получаете имя. Некоторые с коротким описанием, некоторые-нет.

Скачать
Читать далее

Делаем бэкап FTP папки

Опубликовано: 08-02-2015 21:18 Автор: MBTY Теги: Консоль, Мои разработки
Нужно сделать резервную копию сайта на компьютер по FTP.
Есть множество инструментов, которые это способны осуществить, но часто от приложения не нужно десятка лишних функций, интерфейса и прочего. Нужно только, чтобы приложение работало.
Больше скажу. Достаточно скрипта, который скачивал бы содержимое и архивировал.
Сделал два скрипта:
1) !GO-7z скачивает нужную папку со всем ее содержимым через Wget и архивирует скачанное в файл с датой. Например: 2015-02-08_21-26-45.7z
Минус этого метода - каждый бэкап - отдельный файл. Даже, если в сайте были изменения на 2-3КБ, то бэкап будет в мегабайт 10. Нужно делать инкрементальный бэкап.
2) !GO-wim точно так же скачивает папку, но сжатие ведется через imagex в wim файл. Бэкап всегда будет делаться в один и тот же файл, в котором будет несколько вариантов бэкапа с разной датой.
Настройки осуществляются в начале скрипта:
set FTPHost=ftp://some-ftp.com     - Тут вводим адрес ftp сервера
set FTPFolder=www/site.ru/content          - Папка на FTP, которую нужно забэкапить
set FTPPass=*******       - Пароль к FTP
set FTPUser=UserName   - Логин к FTP
set wimfile=Backup    - Эта строка есть только в !GO-wim   - настройка имени бэкапа. Файл будет называться backup.wim
Сам пользуюсь wim-методом. Папка для бэкапа - 350МБ. Пара-тройка бэкапов в 7z - 1ГигаБайт. Десяток бэкапов в wim - 350МБ.

Скачать
Читать далее

Password Generator

Опубликовано: 07-02-2015 22:31 Автор: MBTY Теги: Софт, Мои разработки
Password Generator 15.01.27 Portable (dzzb.ru)Password Generator 15.01.27 PortableУвидел в сети генератор паролей, написанный на .Net - мне был нужен. Вес приложения был 100КБ, но, разумеется, без установленного фреймворка не запускался. Пришлось переписывать. Простейший генератор, только необходимые настройки, всё минималистично, как всегда.
Первый скрин - запущенное приложение, следующий - работа приложения со сгенереным паролем.
Password Generator 15.01.27 Portable (dzzb.ru)Password Generator 15.01.27 Portable
Скачать
Читать далее

EasyHTML 14.11.29

Опубликовано: 29-11-2014 00:56 Автор: MBTY Теги: Мои разработки, HTML
EasyHTML 14.11.29 (dzzb.ru)EasyHTML 14.11.29 Написал простой HTML редактор, который пригодится больше не для работы в нём, а в обучающих целях. (Для учителей информатики)
Приложение разделено на две части: Простой текстовый редактор и Область предпросмотра, которая использует системный движок Internet Explorer
Имеется очень минималистичное, но РЕДАКТИРУЕМОЕ под свои нужды меню:
Правка меню осуществляется через редактирование ini файла EasyHTML
Для примера рассмотрим ini файл со следующей структурой:

[Ж]
mask=<b>%1</b>
[К]
mask=<i>%1</i>
[Ч]
mask=<u>%1</u>
[З]
mask=<s>%1</s>
Ж,К,Ч,З - 4 кнопки, которые будут доступны в приложении.
mask - действие этих кнопок.
%1 - выделенный текст.
Нужна кнопка, которая центрирует объект (<center>)
Дописываем в ini файле такой текст.
[Текст по центру]
mask=<center>%1</center>
После перезапуска, в EasyHTML появится кнопка "Текст по центру", которая будет заключать выделенный текст в тег <center>

Скачать
Читать далее

Скрипт на сайт для слабовидящих

Опубликовано: 28-10-2014 01:00 Автор: MBTY Теги: HTML, Мои разработки
Внизу выкладываю самоделку. Это пример главной страницы сайта на php, на которой реализована смена стиля (css) с сохранением его названия в cookie на 1 сутки.
Так же имеется три кнопки:
*Включить отображение для слабовидящих.
*Включить стандартный вид
*Динамическая кнопка переключения темы
Сами стили css не прилагаются - их придется пилить самому. Просто увеличьте размер шрифта и избегайте пестрых цветов (желательно Ч/Б) Не используются ни jquery ни какие-то еще java скрипты. Чистый php.
Красный кусок текста должен быть в САМОМ начале страницы, чтобы cookie записывались без ошибок и не ругались на "header already sent"
Всё ниженаписанное можно скопипастить в php файл и поиграться с содержимым. Тестировал на Denwer3_Base_2013-06-02_a2.2.22_p5.3.13_m5.5.25_pma3.5.1_xdebug
<?php
//Прием параметра от кнопки (кнопка в самом низу примера) и запись в куки названия нужной темы.
if(isset($_GET['vision'])) {
 setcookie("theme",'vision', time()+3600*24);
 header('Location: ' . $_SERVER['HTTP_REFERER']); }
elseif (isset($_GET['default'])) {
 setcookie("theme",'bootstrap', time()+3600*24);
 header('Location: ' . $_SERVER['HTTP_REFERER']);}
?>


<!DOCTYPE html>
<head>
<!-- Если в куке хранится vision-берем тему ($theme) Vision, а во всех остальных случаях-bootstrap -->
<?php if ($_COOKIE["theme"]=='vision') {$theme=vision;} else {$theme=bootstrap;} ?>
<!-- Тестовый вывод какую тему будем использовать. Можно стереть. -->
<?php echo "Используется тема "?> <b><?php echo $theme; ?></b><br>
<!-- Подгружаем нужную тему. -->
<link href="/css/<?php echo $theme; ?>.css" rel="stylesheet">
</head>

<body>
<!-- Кнопки переключения темы. С записью в куки нужной темы. (Самый верх страницы) -->
<a href="?vision">Для слабовидящих</a>
<a href="?default">Стандартная тема</a>
<!-- Переключатель одной кнопкой -->
<?php if ($_COOKIE["theme"]=='vision') {$button='default';} else {$button='vision';} ?>
<a href="?<?php echo $button;?>">Сменить внешний вид</a>
</body>
Читать далее
ВЕРСИЯ ДЛЯ СЛАБОВИДЯЩИХ
◘▲▼▲◘◘▲▼▲◘◘▲▼▲◘
epn - партнерская программа крупнейшей в мире торговой площадки AliExpress.
TCPHost new- дешевый быстрый хостинг с гибкой настройкой тарифа и отзывчивым саппортом.
Links Ads new - сокращай ссылки и получай деньги (даже без сайта)
DepositFiles new - один из самых честных и проверенных обменников
ICQadvert new - 2500р./1к кликов vk-message.
advmaker - смешанная ПП для жирных белых сайтов.
Telderi new - лучшая в рунете биржа купли-продажи сайтов!
Sape - древнейшая биржа покупки/продажи ссылок.
GoGetLinks - первая и лучшая биржа вечных ссылок.
Wizard-Banners - медиарич парнерка, от 80Р/1000 показов.
Media Rich - гибкая медиарич/попандер партнерка.
ГдеСлон - гибкая товарная парнерка.
Seopult - биржа автоматического продвижения.
Rookee - мощная альтернатива Сеопульту.
Blogun - постовые и вечные ссылки.
Webunder - правильный кликандер 100Р/1000 показов.
Popunder - мощный, механизмы от пессимизации.
Teasernet - старейшая надежная тизерная сеть.
Ladycash - женские тизеры, высокие ставки клик от 2+РУБ.
Alawar - продажа мини-игр от мастистого издателя.
Fotocash - парнерка тамагочи/дейтинга, высокая конверсия.
Avtoprogon - автоматический прогон по 7,652 каталогам.
Runetki new - партнерка ведущего эротического видеочата!
Admitad - старая, честная, гибкая PPA.