zuban_leb's Friends
 
[Most Recent Entries] [Calendar View] [Friends View]

Below are the most recent 25 friends' journal entries.

    [ << Previous 25 ]
    Thursday, September 17th, 2020
    glebo
    9:41p
    Как молоды мы были...
    И чушь ибаную несли.

    Wednesday, September 16th, 2020
    hex_laden
    3:02a
    Сортировка многомерного массива в PHP.
    Пояснение к задачке "Список стран".

    Преамбула


    Итак, имеется довольно простая учебная задача, отобразить на странице список стран с флагами, кодами ISO и наименованиями на английском и русском, необходимо обеспечить сортировку по столбцам базы данных (таблицы). В качестве хранилища данных выбираем текстовый файл формата CSV с разделителями "точка с запятой" (;). Готовый файл можно взять здесь или здесь. Для отображения флагов, понадобятся соответствующие картинки. Можно взять здесь или здесь
    Форма ввода


    Для выбора поля, по которому сортировать данные, а также, как их сортировать (по возрастанию или убыванию), необходима форма. Добавляем код, генерирующий форму в функцию print_sortform(), которая будет вызываться после функции print_top(), которая, в свою очередь, печатает заголовок HTML и заголовок таблицы.

    Код функции )

    Ранее в скрипте объявляем две глобальных переменных
    $field = "ISOA2"; //поле, по которому будем сортировать
    $direction = 0; //направление сортировки: 0 - по возрастанию, 
    			//иначе - по убыванию


    и два массива в самой функции - $fields и $sortmess, содержащие идентификаторы полей и информацию для отображения их в форме. Далее в цикле foreach формируем набор из переключателей (radiobutton) для выбора нужного поля.

    Остальное в функции достаточно тривиально.

    Загрузка данных


    Данные будем хранить в многомерном массиве вот такой структуры:



    Функция загрузки:

    Загрузка данных )

    Заводим глобальную переменную $errmsg для того, чтоб туда писать сообщение об ошибке, и глобальный массив $data для нашей таблицы (БД), да, очевидный минус - я не стал париться с количеством элементов разбитой в массив строки. Но для PHP это не так, чтобы и критично. Если что просто вывалится с ошибкой. Некоторые вообще не заморачиваются обработкой ошибок в PHP, а отдают все на волю интерпретатора.

    Далее, читаем построчно, разбиваем строку на составляющие и дописываем в массив ассоциативный массив с указанными полями, соответственно, в каждом элементе массива $data будет ассоциативный массив с данными, по одному на строку. В итоге получится многомерный (вложенный) массив (в терминах PHP, в других языках "многомерный" может означать несколько другое, по мне бы так термин "вложенный" был бы лучше).

    Передача параметров для сортировки массива


    Передаем их в GET-параметрах. Значения параметров пишем в глобальные переменные.

    if (isset($_GET['sort']))
    {
    	$field=$_GET['sort'];
    }
    if (isset($_GET['direction']))
    {
    	$direction=$_GET['direction'];
    }


    Проверять корректность переданных значений будем в функции сортировки.

    Сортировка многомерного массива по указанному полю


    В PHP имеется функция сортировки usort(); которая принимает массив данных, в качестве первого параметра, и функцию сортировки в качестве второго. Функцию сортировки описывает пользователь. В нее передается два элемента массива, а пользователь описывает алгоритм сравнения, таким образом, чтобы пользовательская функция выдавала 3 значения: -1: 1-й элемент < 2-го элемента, 0: 1-й элемент == 2-му элементу, 1: 1-й элемент > 2-го элемента. Пишем соответствующую пользовательскую функцию:

    function compare ($a, $b)
    {	
    	global $field;
    	global $direction;
    	global $errmsg;
    	
    	if (!array_key_exists($field, $a))
    	{
    		$errmsg = "Field $field not found";
    		return 0;
    	}
    	
    	if ($direction == 0)
    	{
    		return strnatcmp($a[$field],$b[$field]);
    	}
    	else
    	{
    		return (strnatcmp($a[$field],$b[$field])*-1);
    	}
    }


    1. В переменные $a и $b передаются два элемента массива, который надо отсортировать.

    2. Далее, подключаемся к ранее заданным глобальным переменным:

    $field
    - поле таблицы (БД), по которому будем сортировать.
    $direction - направление сортировки - 0 по возрастанию, другое значение - по убыванию.

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

    if (!array_key_exists($field, $a))
    ...


    4. Проверяем, как сортировать и сортируем с помощью функции strnatcmp(). От стандартной strcmp() она отличается тем, что если ей попадается набор чисел в виде строк, то она их будет сортировать в формате, обычном для человека:

    strnatcmp():

    4
    8
    10
    12
    16
    20
    24
    28


    strcmp():

    10
    100
    104
    108
    112
    116
    12
    120
    124


    strnatcpm()strcpm()), как раз возвразащают 0, если аргументы равны, -1 если 1-й > 2-го, и 1, если 2-й > 1-го.

    Чтобы поменять порядок сортировки на обратный, достаточно поменять результат работы функции на обратный, что можно сделать, умножив результат функции strnatcmp()/strcmp() на -1:

    (strnatcmp($a[$field],$b[$field])*-1)

    Результат


    Скриншот:



    Исходник
    Посмотреть, как работает

    Известные баги


    - Нет флагов некоторых редких стран (может быть потом сам нарисую).
    - Почему-то страны на русскую букву Р криво сортируются, если сортировать по русским наименованиям стран.

    Источники


    usort()

    Это репост с сайта http://tolik-punkoff.com
    Оригинал: http://tolik-punkoff.com/2020/09/15/sortirovka-mnogomernogo-massiva-v-php/
    Tuesday, September 15th, 2020
    hex_laden
    7:51p
    Технопульс
    А оказывается, наши тексты таки исполнялись, значит, и текст выкладывать можно, и видео на канале.

    Сердце бьется в ритме хардкора, 
    И тебя съедает грусть,
    Приложи ухо к полу -
    Ты услышишь Технопульс
    Тяжелые ритмы 
    	огромных машин
    Идут из-под земли
    И в этом звуке нам слышится, 
    		нам слышится
    УМРИ!
    
    Пр:
    	Умри! Умри, человек!
    	Умри! Недолог твой век,
    	Умри! Ты остался один
    	В мире жестоких и мощных машин!
    
    Техника влечет молодые умы
    Она разжижает кровь,
    И ты никогда не покинешь,
    Сытость своих городов.
    
    От голубого экрана и водки,
    Твой мозг давно не у дел,
    Но жирные падлы - политики, суки
    Уже готовят удел.
    
    Пр.
    
    Ясное солнце упало с небес,
    Средь ночи настал рассвет,
    Всю округу залил
    	радиоактивный свет
    Ты испарился в момент,
    Ты убежать не успел
    А он над пеплом твоим
    	     реквием пропел
    
    Пр.


    Исполнение здесь: https://www.youtube.com/watch?v=kyrfRcp7TcE

    Это репост с сайта http://tolik-punkoff.com
    Оригинал: http://tolik-punkoff.com/2020/09/14/technopulse/
    Monday, September 14th, 2020
    hex_laden
    4:15a
    БрокаЦентр - Терпи, ведь это любовь.


    Прямая ссылка: https://youtu.be/_1mlJsDWoMY

    Это репост с сайта http://tolik-punkoff.com
    Оригинал: http://tolik-punkoff.com/2020/09/12/brokatsentr-terpi-ved-eto-lyubov/
    Saturday, September 12th, 2020
    anti_myth
    10:59p
    Вместе или порознь? Белорусская оппозиция вступила на тропу раскола
    Вместе или порознь?

    Белорусская оппозиция вступила на тропу раскола


    Владимир Кравченко
    Обозреватель отдела международной политики ZN.UA


    12 сентября, 2020


    Режим Александра Лукашенко сделал ставку на время как на естественный фактор уменьшения количества протестующих. Но одновременно он пытается точечными репрессиями сбить протесты и взять ситуацию под контроль.

    На этой неделе начат разгром Координационного совета белорусской оппозиции. Совет был создан оппонентами Лукашенко не для организации протестов, а для того чтобы от имени протестующих вести переговоры с белорусским президентом о транзите власти. Из семи членов президиума Координационного совета задержаны или арестованы четверо. Двое вынужденно находятся за границей. Седьмой член совета — нобелевский лауреат по литературе Светлана Алексиевич — пока еще в Беларуси и на свободе.

    В числе задержанных — один из наиболее ярких координаторов протестов — «начштаба» Виктора Бабарико Мария Колесникова. На уходящей неделе сотрудники белорусских спецслужб похитили ее и силой хотели выдворить в Украину вместе с другими членами Координационного совета — Антоном Родненковым и Иваном Кравцовым. Ранее подобную операцию силовики успешно провели с Тихановской и членом президиума Совета Ольгой Ковальковой.

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

    За действиями белорусских властей стоит не только стремление лишить протестующих их представителей, но и желание продемонстрировать — Лукашенко контролирует ситуацию в стране и не намерен идти на уступки улице. Его шансы удержаться у власти увеличивает то, что в белорусской оппозиции наступил раскол, вызванный как межличностным противостоянием Тихановской и Колесниковой, так и их внешнеполитической ориентацией и поддержкой внешними игроками.

    В ходе предвыборной кампании штабы Виктора Бабарико и Валерия Цепкало объединились с избирательным штабом Светланы Тихановской. По слухам, циркулирующим в Беларуси, одним из условий этого ситуативного союза было обещание Тихановской в случае победы провести в течение шести месяцев новые выборы, где основными кандидатами станут Бабарико и Цепкало. Оба политика, которых соответственно поддерживают конкурирующие «Газпром» и «Уралхим», ориентируются на Россию.

    Однако, «не так сталося, як гадалося».

    После того как белорусские спецслужбы выдворили Тихановскую в Литву, она начала претендовать на статус национального лидера белорусов. Для ее союзников из штабов других кандидатов это означало отход от договоренностей. Белорусские эксперты отмечают: Колесникова дала понять, что Координационный совет, где большинство за сторонниками Бабарико, не будет выполнять указания Тихановской. (При этом влияние Цепкало на белорусскую оппозицию сегодня минимально: его сторонников даже не включили в Совет.)

    Напряженности в отношениях Тихановской и Колесниковой добавляет не только их возросшие за месяц протестов политические амбиции и борьба за влияние на протестующих. Способствует расколу и то, что основное влияние на Тихановскую оказывают представители Вашингтона, Берлина, Варшавы и Вильнюса, но не Москвы. И хотя она не антироссийски настроенный политик, доступ к ней российским эмиссарам практически перекрыт.

    Как отмечает председатель президиума Совета по внешней и оборонной политике России, главный редактор журнала «Россия в глобальной политике» Федор Лукьянов, «тот факт, что она находится в эмиграции в Литве и оттуда осуществляет свою деятельность, уже ставит ее в совершенно определенную позицию, которая для России неприемлема». По его словам, в Кремле считают, что если Тихановская или кто-то из ее соратников придут к власти, то начнется совершенно другой разговор о взаимоотношениях с Россией.

    В то же время Колесникову в Москве воспринимают иначе: она ориентируется больше на Россию и российский бизнес, заинтересованный в приватизации крупных госпредприятий Беларуси. Она — человек Бабарико, имеющего тесные связи с «Газпромом».

    Между Тихановской и Колесниковой также идет конкуренция за создание политической партии, способной сплотить вокруг себя оппозиционный электорат. Колесникова сыграла на опережение, создав вместе с Бабарико партию «Вместе». Среди заявленных целей политсилы — проведение конституционной реформы, работа по улучшению экономики страны и создание для людей возможности проявить гражданскую активность.

    Маловероятно, что белорусский Минюст зарегистрирует эту партию. Например, существующую многие годы массовую партию «Христианская демократия» власти так и не регистрируют. Но окружение Тихановской негативно отреагировало на инициативу команды Бабарико, подозревая последнюю в попытках монополизировать оппозиционное движение. Именно после заявлений о создании партии «Вместе» вслух заговорили о расколе в белорусской оппозиции. Впрочем, Тихановская и Колесникова утверждают, что никакого разлада нет.

    Отличаются у двух лидеров оппозиции и подходы к конституционной реформе, целью которой является расширение полномочий парламента. Если Колесникова говорит о ней как о приоритете, то для Тихановской эта реформа вторична по сравнению с главной целью — отставкой Лукашенко. В то же время оба лидера выказывают готовность к диалогу с Лукашенко о мирной передаче власти. Но Колесникова в поиске компромисса с режимом рассчитывает прежде всего на содействие Москвы. При этом белорусские эксперты не исключают вариант сепаратных переговоров части белорусской оппозиции, ориентирующейся на Бабарико, с представителями режима.

    Наблюдатели также отмечают: хотя Лукашенко публично и допускает возможность проведения досрочных президентских выборов, на переговоры с оппозицией идти он не хочет. Но к этому его может подтолкнуть Путин. Российский президент может пойти на это в том случае, если в Координационном совете будут представлены прокремлевские оппозиционные политики. Решающими для будущего Беларуси станут переговоры Лукашенко с Путиным, намеченные на понедельник.

    Посол России в Минске Дмитрий Мезенцев во время встречи с Лукашенко подарил тому копии карт XIX века, где Витебская, Гродненская, Минская и Могилевская губернии входят в состав Российской империи. Символичный подарок… Впрочем, если аннексия Беларуси и стоит в повестке дня Кремля, то не в ближайшей перспективе. Ключевая задача России сегодня — усилить военное присутствие в Беларуси, войти в ее экономику и приватизировать крупные госпредприятия, чему долгие годы сопротивлялся Лукашенко.

    Пока Лукашенко власть в стране удерживает. Протесты идут на спад, а обеспокоенность Запада не подкрепляется санкциями против представителей режима. Дело здесь не только в позиции Кипра, блокирующего санкции против белорусских чиновников пока ЕС не примет ограничительные меры против турецких компаний, ведущих буровые работы у кипрского побережья. Согласимся с мнением экс-спикера парламента Литвы Витаутаса Ландсбергиса: психологически Европа сдает Беларусь.

    Лишь балтийские страны и Польша оказывают последовательное давление на Лукашенко, поддерживая протестующих в Беларуси. Их аргументация проста: не важно, что на акциях протеста нет флагов ЕС. Белорусов необходимо поддержать только потому, что они выступают за демократическую смену власти, требуя ухода лидера государства, сфальсифицировавшего выборы и использующего репрессии, чтобы и далее оставаться президентом.

    31 августа Литва, Латвия и Эстония стали первыми в мире государствами, которые ввели персональные санкции после выборов и подавления мирных протестов в Беларуси, внеся в санкционные списки 30 белорусских чиновников, включая Лукашенко. (При этом ЕС не планирует применять ограничительные меры в отношении белорусского президента.) А на днях балтийские страны объявили бойкот Белорусской АЭС, договорившись не покупать произведенную там электроэнергию.

    Кроме того балтийские страны и Польша добиваются от Евросоюза реализации в отношении Беларуси «венесуэльского сценария». (Напомним: по результатам президентских выборов, прошедших в 2018 году, глава Венесуэлы Николас Мадуро объявил себя победителем. США и другие страны назвали официальные результаты голосования сфальсифицированными. В начале 2019 года оппонент Мадуро Хуан Гуайдо объявил о взятии на себя обязанностей временного президента. Таковым его признали Соединенные Штаты и многие страны-члены ЕС.)

    Более того: в минувший четверг сейм Литвы принял резолюцию, которой признал Светлану Тихановскую избранным президентом Беларуси, а Координационный совет — единственным законным представителем этой страны.

    Выскажем предположение, что единицы пойдут по пути Литвы. Ведь «венесуэльский сценарий» — не решение белорусской проблемы. Показательно, что когда Польша предложила пригласить Светлану Тихановскую на саммит Вышеградской группы, где планировали обсуждение ситуации в Беларуси, премьер-министр Чехии Андрей Бабиш не согласился с этим, заявив, что такой шаг был бы поспешным. Маловероятно, что Тихановскую избранным президентом Белоруссии признают и США. И уж совсем невероятным выглядит предположение, что на этот шаг пойдет Киев.

    Бывший глава украинского МИДа Павел Климкин написал в Twitter, что «исчезновение людей на улицах Минска возвращает Беларусь в сталинские времена. Это уже не режим, а хунта. Оценка событий в Беларуси стала уже не политическим, а моральным вопросом для всех». Однако, хотя украинский МИД резко оценил ситуацию в соседней стране, в офисе президента преобладает осторожно-прагматичный подход к белорусским протестам, ведь Лукашенко удерживается у власти, а Украине нужны белорусский бензин и мазут.

    Заявление литовского парламента несколько меняет расклады вокруг Беларуси. Небесспорное решение Вильнюса усугубляет ситуацию для Лукашенко, сужая поле для маневра и делая его еще больше зависимым от Кремля. Впрочем, белорусский президент и сам за последний месяц сделал многое для того, чтобы усилить свою зависимость от Москвы. Но решение Литвы это также и шанс для белорусской оппозиции остаться единой. Ведь заставить Лукашенко уйти с поста президента вместе у нее перспектив больше, чем порознь.

    Однако политическое и финансовое влияние России на белорусскую оппозицию делает шанс на сохранение единства среди оппонентов Лукашенко все более призрачным.
    hex_laden
    3:32a
    Grep и awk для Windows
    Понадобилось тут на винде работать с некоторыми логами. И Линукса под рукой не было, нашел, в общем grep и awk под винды, вроде, из официального SourceForge GNU.

    Правда, официальные версии сделаны кривовато, в том смысле, что когда хочешь скачать только бинарники, в архиве оказываются только EXE (плюс куча ненужного мусора), но не оказалось DLL, которые нужны экзешникам. Скачиваешь инсталлер - он ставит и EXE и DLL, но в PATH надо каталог вручную добавлять.

    В общем, я все это дело перепаковал, в обычный RAR SFX архив, который распаковывается в %WINDIR% (обычно C:\Windows), никакого инсталлятора/анинсталлера не приделывал, и вообще это для себя и стаи товарищей. Хотите качайте, хотите нет.

    Содержимое архива:

    awk.exe
    egrep.exe
    fgrep.exe
    gawk-3.1.6.exe
    gawk.exe
    grep.exe
    libiconv2.dll
    libintl3.dll
    pcre3.dll
    pgawk-3.1.6.exe
    pgawk.exe
    regex2.dll


    Работает в Windows 7 x86, Windows 7 x64 и в Windows XP. В десятке, наверное, работает, но я не проверял.

    Скачать grep+awk для Windows


    GNU grep 2.5.4
    GNU Awk 3.1.6

    C mega.nz

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

    Это репост с сайта http://tolik-punkoff.com
    Оригинал: http://tolik-punkoff.com/2020/09/11/grep-i-awk-dlya-windows/
    Friday, September 11th, 2020
    hex_laden
    3:56a
    Коды стран (ISO 3166-1), CSV, XLS
    Искал готовые справочники в удобоваримых форматах, не нашел. А на сайте самой ISO за скачивание в CSV или XLS надо платить деньги (тут должна быть реплика известного сумасшедшего Вениамина, в стиле, " ну каковы же сволочи") В общем, хочешь сделать хорошо - сделай это сам.

    Скачать справочники кодов стран ISO


    Состав архива:

    iso.csv - только двухбуквенные (Alpha-2) коды и наименования стран на английском, разделитель - точка с запятой (;). Отсортировано по коду.

    Пример:

    Andorra;AD
    United Arab Emirates;AE
    Afghanistan;AF
    Antigua and Barbuda;AG
    Anguilla;AI
    Albania;AL


    isofull.csv - Код Alpha-2 (двухбуквенный), Alpha-3 (трехбуквенный), числовой, название на английском, название на русском. Отсортировано по коду. Формат - UTF-8, разделитель - точка с запятой.

    Пример:

    AD;AND;20;Andorra;Андорра
    AE;ARE;784;United Arab Emirates;Объединенные Арабские Эмираты
    AF;AFG;4;Afghanistan;Афганистан
    AG;ATG;28;Antigua and Barbuda;Антигуа и Барбуда
    AI;AIA;660;Anguilla;Ангилья


    isofull.xls - то же самое, только в формате Microsoft Excel 2003.

    Скачать с mega.nz, RAR, 20 Кб

    ЗЫ. Отдельный геморрой вышел с русскими названиями стран. На сайте ISO их бесплатно нету, только на французском (тьфу, буэ), ладно, полез в конторе в "Гарант" (это типа юридическая БД, конкурент "Консультанта+"). Оказалось, что у них, сцуко, коды не обновлялись с прошлого века - Югославия есть, а вот всяких Сербий и Черногорий нет. Пришлось сверять два списка по кодам и гуглить недостающие страны, штук семь.

    Это репост с сайта http://tolik-punkoff.com
    Оригинал: http://tolik-punkoff.com/2020/09/11/kody-stran-iso-3166-1-csv-xls/
    glebo
    2:34a
    Вирганис
    Виргиниюс Анисимовас -- свадебный музыкант из Маскантье Шяуляй (Литва).



    Ещё два прекрасных клипа... )
    hex_laden
    1:25a
    Sony Vegas. Два видео в одном кадре. Отображение двух видео одновременно. Видеоинструкция.


    Прямая ссылка: https://youtu.be/EAuPh0ICO5U

    Инструкция в текстовом виде:

    На tolik-punkoff.com
    На lj.rossia.org

    Это репост с сайта http://tolik-punkoff.com
    Оригинал: http://tolik-punkoff.com/2020/09/07/sony-vegas-dva-video-v-odnom-kadre-otobrazhenie-dvuh-video-odnovremenno-videoinstruktsyja/
    Monday, September 7th, 2020
    hex_laden
    9:50a
    Sony Vegas, два видео в одном кадре, два видео воспроизводящихся одновременно.
    Преамбула


    На Ютубе куча мануалов разной степени полезности, как можно показывать на одном экране (в одном кадре) в Vegas 3, 10, 100500 видео одновременно, как сделать "видеостену". Но хрен кто нормально объяснил, как можно разделить экран только на две части, и добиться того, чтоб исходные видео не превратились в кашу, не были слишком мелкими и т.д. А оказывается, есть нюансы, которые многими "профессионалами" и "видеоблогерами" по Vegas не замечены.

    Чего требуется добиться?


    Добиться надо (если абстрагироваться от содержания), показа зрителю двух процессов одновременно. В одной половине кадра происходит один процесс, во второй - параллельно ему следующий. Например, это может быть гость в студии (и видимый одновременно ведущий), прямая трансляция с одновременным комментированием ведущего, или просто запись двух мониторов. Вот пример с ютуб-канала:



    Подготовка


    1. Подбираем видео примерно одинакового разрешения, нет одинакового, ориентируемся на большее разрешение.
    2. ОК, видео есть, в примере будет два с одинаковым разрешением. Смотрим в MediaInfo:

    Width                       : 640 pixels
    Height                      : 360 pixels
    Display aspect ratio        : 16:9
    Frame rate                  : 29.970 (30000/1001) FPS


    Нас интересует разрешение и частота кадров.

    Умножаем значение высоты и ширины на 2, чтоб показать исходные видео в полном размере 640x2=1280 360x2=720, это параметры для будущего проекта Vegas

    3. Запускаем Vegas и создаем новый проект, взяв за основу вычисленные ранее параметры. У нас даже готовый пресет нашелся.
    4. Обязательно снимаем галочку Настроить источник мультимедиа для лучшего соответствия проекту или настройкам визуализации. Т.к. нам не надо, чтоб Vegas подтягивал наши видео под размер проекта (1280x720), а обрабатывал их в оригинальном разрешении.



    5. Создаем в проекте пустую видеодорожку, вставляем туда пустое событие:



    6. Растягиваем его, можно побольше, потом подгоним.



    7. Настраиваем сетку, для удобства размещения видео. Идем в Настройки --> Параметры, переключаемся на вкладку Видео, устанавливаем количество клеток сетки по вертикали и по горизонтали. У нас 2 видео, потому оставляем 2 ячейки. В переводе, похоже, перепутаны горизонталь и вертикаль.



    8. Включаем сетку в разметке. Нажимаем треугольник (меню) рядом с кнопкой , выбираем Сетка:



    Сетка появляется:



    9. Добавляем еще две видеодорожки и размещаем на них видео. На вопрос, подгонять ли проект к видео, отвечаем Нет!




    10. Удаляем аудиодорожки, когда будем совмещать видео, они будут только мешать, т.к. при наложении образуется какофония, так что если нужен звук - отдельно совмещаем его в аудиоредакторе, а потом аудиодорожкой добавляем в проект Vegas.



    Далее под катом )

    Проект котов готов - можно рендерить.


    Прямая ссылка: https://youtu.be/WsqU-xaYAu0
    Friday, September 4th, 2020
    hex_laden
    4:20a
    Пузыри - Её нет
    Че-т пора разбавить карельский панк карельским же хардкором. Леша подпездывает, что сие произведение стоит отнести к жанру карельского гоп-хардкора, но чья бы корова мычала, на 2004 год он был малолетним нацистом. И хоть ща он целый редактор, но в детстве таки побыл имперцем и нацистом :)



    Прямая ссылка: https://youtu.be/yEXivW8jhMc

    Это репост с сайта http://tolik-punkoff.com
    Оригинал: http://tolik-punkoff.com/2020/09/04/puzyri-eyo-net/
    hex_laden
    3:58a
    Фразочка
    Два солдата з укрстройбата
    Заменяют экскаватор!
    А наемник з ОРДЛО
    Заменяет усе лайно!

    Это репост с сайта http://tolik-punkoff.com
    Оригинал: http://tolik-punkoff.com/2020/08/25/frazochka-34/
    Tuesday, August 25th, 2020
    hex_laden
    8:45a
    Группа "Позитив", г. Кондопога


    Прямая ссылка: https://youtu.be/kyrfRcp7TcE

    Это репост с сайта http://tolik-punkoff.com
    Оригинал: http://tolik-punkoff.com/2020/08/22/gruppa-pozitiv-g-kondopoga/
    Saturday, August 22nd, 2020
    hex_laden
    10:18p
    Концерт в Кондопоге, KondoR, 2007 год


    Прямая ссылка: https://youtu.be/jkEP_aan6q4

    Да, там еще есть я на сцене, найди и заимеешь уникальное кольцо!

    Кольцо уже уехало в Астану, aka Нурсултан

    Это репост с сайта http://tolik-punkoff.com
    Оригинал: http://tolik-punkoff.com/2020/08/18/kontsert-v-kondopoge-kondor-2007-god/
    Wednesday, August 19th, 2020
    hex_laden
    4:23a
    Распаковка инсталлятора (на примере инсталлятора Foxit PDF Reader)
    Преамбула


    В заметке про пропавший из Foxit PDF Reader PDF-принтер (копия) я упомянул, что хотел расковырять старый инсталлятор, чтоб принтер оттуда вытащить (если это возможно).

    Пользователь спросил, а как, собственно, распаковать инсталлятор, что ж, постараюсь кратко пояснить.

    Примечание: это не инструкция "как распаковать совсем вообще любой инсталлятор", ибо типов инсталляторов довольно много и появляются новые, а бывают вообще самописные со свистелками и вувузелами, так что покажу общий подход и совсем простой пример, на том же инсталляторе Foxit PDF Reader'а

    Ссылки на все инструменты в конце заметки.

    Определение типа инсталлятора


    Как я сказал, типов инсталляторов очень много: Nullsoft Installer, WISE, Inno Setup, Microsoft Installer (MSI), InstallShield, и это те, которые я вспомнил просто так, не посещая гугль.

    Соответственно, надо определить, с чем мы имеем дело. Как говорится, знай своего врага в лицо. И это не только первый принцип разведчика, но и первый принцип реверсера, т.е. того, кто занимается обратным инженерингом, или, говоря вульгарно, взломом, крякингом программ. За "крякиннг", котики, от настоящего реверсера можно получить кружкой пива по голове. Крякают утки, а мы будем исследовать. Но что-то я запизделся.

    С виду тип инсталлятора определить довольно непросто (хотя гуру могут), так что воспользуемся специальной программой DiE (Detect it easy) 2.05, которая пришла на смену PEiD. Что это такое? Это специальная утилита, способная определять что за экзешник перед нами: тип инсталлятора (если это инсталлятор), тип компилятора, которым экзешник скомпилирован, EXE-упаковщик или т.н. "навесную защиту", если экзешник упакован или защищен от взлома специальной программой. Делает это он также, как антивирус определяет наличие вируса, по сигнатурам, т.е. определенным последовательностям байт, характерных для того или иного компилятора, упаковщика, инсталлятора и т.д.

    Итак, запускаем DiE и скармливаем ей наш инсталлятор:



    Как видим, инсталлятор создан в Inno Setup, осталось найти распаковщик, и в данном случае это просто (потому и взял, как простой пример). Распаковщик есть. Кладем инсталлятор в отдельную папку, копируем распаковщик в нее же, или же в папку, которая есть в переменной PATH и выполняем:

    innounp -x FoxitReader806.909_prom_L10N_Setup.exe

    Идет распаковка:



    В результате образовалась структура каталогов, характерных для этого инсталлятора, где каталог {app}, то, что будет распаковано в каталог программы (например C:\Program Files\Foxit Reader), каталог {sd} - ProgramData, а каталог {tmp}, то, что будет распаковано во временный каталог системы. К тому же есть и install_script.iss - скрипт установщика (в его формате, и оттуда можно почерпнуть информацию, как и что делает установщик, если знаете формат скрипта).

    А еще его можно интегрировать в Far-manager, см. Readme.



    Выводы


    Ну вот, это был маленький урок реверсинга для комментатора, определили установщик и его распаковали.
    Заодно, если вы хотите заняться реверсингом, рекомендую посетить сайт https://exelab.ru/

    Скачать


    DiE (Detect it easy):
    - На Exelab
    - C Mega.nz

    innounp:
    - Официальный сайт
    - Мой пакет (innounp распаковывается в C:\Windows)

    Это репост с сайта http://tolik-punkoff.com
    Оригинал: http://tolik-punkoff.com/2020/08/17/raspakovka-installyatora-na-primere-installyatora-foxit-pdf-reader/
    Tuesday, August 18th, 2020
    hex_laden
    1:26p
    Запись с экрана в Slackware Linux
    Преамбула


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

    RecordMyDesktop - кривой и глючный, пропускает кадры, пишет только в формате OGV, который ни одна собака не поддерживает.

    Vokoscreen - не собрался, не смог найти файл своего же исходника, хотя и файл был и права на месте.

    ScreenStudio - для потокового видео, мне лично не подходит.

    Kazam ScreenCaster - нет возможности записи конкретного окна или произвольной области экрана.

    Byzanz-record - только командная строка (да, хочу программу с графическим интерфейсом для работы с видео).

    VLC Media Player - записывает, но опять же, весь рабочий стол

    OBS - вообще не про "запись с экрана", а про стриминг, так что если там запись с экрана и есть, то в качестве приятного бонуса, для простой записи с экрана, это из пушки по воробьям.

    Так что остановился на Simple Screen Recoder.

    Установка Simple Screen Recoder


    В Slackware он штатно устанавливается через sbopkg, вводим в поиске ssr и ставим, из зависимостей нужен ffmpeg.

    Работа с программой


    Программа простая и удобная, выполнена в виде мастера, так что работа не доставляет никакого геморроя.



    На первом шаге выбираем, что будем записывать - весь десктоп, произвольную область экрана или конкретное окно, или записывать, следуя за курсором. Можно записывать и OpenGL'ные игры. Также можно включить запись звука и записывать или убрать из записи курсор.



    На втором шаге выбираем кодек и формат файла, основные форматы следующие:

    - MKV (Кодеки H.264, VP8, Theora)
    - MP4 (H.264)
    - WebM (VP8)
    - OGG/OGV (Theora)

    Также выбираем файл, в который будем писать, и отрубаем пропуск кадров.
    Писать лучше в MP4, т.к. его любой видеоредактор поддерживает.

    Можно в списке кодеков и форматов выбрать Other... и будет доступна тонкая настройка контейнера (формата файла) и кодека.



    На третьем шаге включаем запись и сворачиваем программу (она спрячется в трей).

    Ошибка Codec H.264 (not installed)




    Причины ошибки:

    1. Кодек не установлен, заходим в sbopkg и устанавливаем пакеты:

    - aom (выбираем multimedia/aom в меню sbopkg)
    - libass
    - libwebp
    - x264 (выбираем multimedia/x264 в меню sbopkg)
    - x265
    - ffmpeg4

    Перезапускаем программу, если ошибка повторяется, значит установлен кривой ffmpeg (а официальный пакет ffmpeg в Slackware кривой). Сносим пакет ffmpeg и устанавливаем нормальный от Alien: качать здесь

    В общем, поступаем как в заметке Перекодировка OGV в MP4 и решение ошибки Unknown encoder 'libx264' в Slackware Linux (копия)

    Все работает:



    ФАНФАРЫ!

    Ссылка на обзор Losst'а


    Лучшие программы для записи видео с экрана Linux

    Это репост с сайта http://tolik-punkoff.com
    Оригинал: http://tolik-punkoff.com/2020/08/18/zapis-s-ekrana-v-slackware-linux/
    Sunday, August 16th, 2020
    hex_laden
    3:49p
    Перекодировка OGV в MP4 и решение ошибки Unknown encoder 'libx264' в Slackware Linux.
    Преамбула


    Пришлось некоторое время решать проблемы с записью видео в Linux. Изначально задача была в записи видео с экрана, но в процессе решения добавились и web/ip-камеры (заодно уж), и общие проблемы с перекодировкой видео из одного формата в другой. Начнем как раз с конца, т.е. с перекодировки.

    Леша уже плюнул на попытки заставить непокорную софтину записывать для начала экран в удобоваримом формате MP4, и прислал мне ролик в формате OGG (ну не OGG, OGV), чтоб я разобрался с его перекодированием во что-то более удобоваримое, т.к. не один из наших видеоредакторов формат OGV (кстати, открытый) "из коробки" не поддерживал.

    В качестве видеокодека в формате OGV используется кодек Theora, а в MP4 AVC/H.264

    OGG в OGV


    OGG - изначально, открытый звуковой формат, разработанный как альтернатива закрытым (WMA, MP3). Через некоторое время, данный формат был расширен с добавлением поддержки видео. Но некоторые (несознательные) линуксовые программы пишут видео, а файлы создают с расширением .ogg. Линуксовому софту, типа плееров, вообще на это плевать, но линуксовому софту всегда было плевать на расширения имени файлов, а вот винде нет. Потому, если вам прислали видео в файле с расширением .ogg, то попробуйте поменять расширение на .ogv, скорее всего файл нормально откроется. В K-Lite Mega Codec Pack и в VLC для Windows поддержка, что OGG, что OGV есть точно.

    Но все-таки вернемся в Slackware и к преобразованию форматов.

    Дополнительные программы, кодеки, библиотеки


    В связи с диким онанизмом на "авторские" "права" и зоопарком форматов видео/аудио в Линуксе преобразование одного формата в другой превращается в наркоманский квест. У нас было десять мегабайт библиотек, две сотни кодеков, пакет с разными пакетами, 200 грамм укуреных лицензий... Тьфу, к делу.

    Для установки некоторых необходимых пакетов можно воспользоваться sbopkg.

    Вообще, для работы с видео и аудио используется программа ffmpeg (v3), но не спешите ставить ее из "официального" репозитория Slackware, как оказалось, чтоб все заработало, пришлось переустанавливать из альтернативного.

    Пока вводим в поиске и ставим:

    aom (выбираем multimedia/aom в меню sbopkg)
    libass
    libwebp
    x264 (выбираем multimedia/x264 в меню sbopkg)
    x265
    ffmpeg4

    ffmpeg (v3) у меня уже был установлен ранее, так же из официального репозитория Slackware. А вот и зря.

    Команда для перобразования


    ffmpeg -i input.ogv \
           -c:v libx264 -preset veryslow -crf 22 \
           -c:a libmp3lame -qscale:a 2 -ac 2 -ar 44100 \
           output.mp4


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

    Ошибка Unknown encoder 'libx264'


    Как я сказал ранее, ffmpeg из репозитория sbopkg у меня уже стоял. Сначала я подумал, что поможет его полная переустановка с пересборкой пакета (мало ли, свежеустановленные кодеки не видятся). Не помогло.

    Решение нашлось здесь

    В общем да, из-за голливудских уродов патентных ограничений и прочей юридической хуйни, официальный пакет ffmpeg в Slackware не включает поддержку H.264. Но, слава Великим Древним, проблему решили без нас, и даже в опциях компиляции ковыряться не нужно:

    Just to clarify, you'd want the "restricted" ffmpeg that Alien Bob offers, as that includes support for various things that have patent restrictions (like x264 encoding).

    Есть готовый альтернативный пакет:

    Скачать
    Копия на Mega.NZ (+ копия остальных пакетов)

    Это репост с сайта http://tolik-punkoff.com
    Оригинал: http://tolik-punkoff.com/2020/08/15/perekodirovka-ogv-v-mp4-i-reshenie-oshibki-unknown-encoder-libx264-v-slackware-linux/
    Saturday, August 15th, 2020
    hex_laden
    2:16a
    Конверсия (пережатие) DVD в MKV без потери качества
    Преамбула


    Понадобилось вот в процессе восстановления древнего DVD (это отдельная история) перегнать формат DVD во что-то более удобоваримое, перелопатил кучу конвертеров, то кривые, то косые, то платные, то с невменяемыми пресетами и настройками - например оригинальное DVD-разрешение 720x576, а у конвертера или 1920x1080 или, блин, 320x240. Были еще уродливо пережимающие звук или невменяемо долго работающие.

    Наконец, нашел.

    MakeMKV


    Все опции формата программа берет из самого DVD:

    Видео:



    Данные оригинального DVD:

    Format                : MPEG Video
    Format version        : Version 2
    Width                 : 720 pixels
    Height                : 576 pixels
    Display aspect ratio  : 4:3
    Frame rate            : 25.000 FPS


    Аудио:



    Данные оригинального DVD:

    Format            : AC-3
    Format/Info       : Audio Coding 3
    Commercial name   : Dolby Digital
    Bit rate          : 256 kb/s
    Channel(s)        : 2 channels
    Channel layout    : L R
    Sampling rate     : 48.0 kHz


    Программа маленькая (13 Мб) и абсолютно бесплатная. Работает, начиная с Windows XP (и выше), под x86 и x64 архитектуры

    Скачать


    Официальный сайт: https://www.makemkv.com/
    Копия

    Это репост с сайта http://tolik-punkoff.com
    Оригинал: http://tolik-punkoff.com/2020/08/11/konversiya-perezhatie-dvd-v-mkv-bez-poteri-kachestva/
    Tuesday, August 11th, 2020
    hex_laden
    4:07a
    В Беларуси — Тихановская, а в России — Витухновская!


    Скачать вариант для печати: https://bit.ly/bel_rus

    Автор [info]paperdaemon

    Репост отсюда http://lj.rossia.org/users/paperdaemon/2515298.html

    Это репост с сайта http://tolik-punkoff.com
    Оригинал: http://tolik-punkoff.com/2020/08/10/v-belarusi-tihonovskaya-a-v-rossii-vituhnovskaya/
    hex_laden
    3:43a
    Linux. Вывод одновременно на консоль и в файл. Команда tee.
    Преамбула


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

    В Linux нашлось готовое решение: команда tee

    Синтаксис и краткое описание


    Команда tee делает следующее - берет переданный ей от другой команды или потока команд (pipe) вывод, пишет его в файл и одновременно выводит на stdout. Вывод на stdout можно переопределить дальше, например, устроить вывод на отдельный терминал, но об этом далее.

    Общий синтаксис таков:

    <команда>|tee [параметры] файл1 [файл2 файл3 ...]

    где:

    <команда> - любая команда оболочки Linux
    | - обозначение перенаправления, вывод команды <команда> передается tee
    файл1 [файл2 файл3 ...] - файлы, в которые необходимо вести запись.

    Простой пример


    ls | tee log.txt

    Выведет список файлов текущего каталога на консоль и одновременно сохранит вывод в файл log.txt

    Если добавить к команде tee параметр -a, то информация будет дозаписываться в указанные файлы. Без этого параметра файлы будут перезаписаны.

    Демонстрация


    Чтобы не использовать какие-то команды, создадим тестовый скрипт tscript, десять раз выводящий на консоль случайное число:

    #!/bin/bash
    
    SEC=1
    CTR=10
    
    echo "Test script, write to STDOUT random number after $SEC sec."
    
    while [ "$CTR" -ne 0 ];do
        let "CTR=CTR-1"
        printf '%x Number: %x\n' $CTR $RANDOM
        sleep $SEC
    done
    
    echo "Complete!"


    Теперь в каталоге со скриптом выполним:

    ./tscript | tee log.txt

    На экран будут выведены случайные числа, они же будут в файле log.txt

    ./tscript | tee -a log.txt

    Аналогично, только log-файл будет дополнен новыми случайными числами.

    После команды tee, вывод можно перенаправить и дальше, например, можно совместить этот пример с выводом на другой терминал (копия):

    ./tscript | tee ./test.log >/dev/tty4

    Можно пойти дальше и скрипт сделать автономным, "демонизировать" его, тогда можем, запустив следующую команду, или использовав ее в скрипте, освободить и/или текущую консоль или запускающий скрипт для дальнейших действий:

    ./tscript | tee ./test.log >/dev/tty4 &

    Вывод на консоль четвертого терминала (tty4):



    Вывод в test.log:

    Test script, write to STDOUT random number after 1 sec.

    9 Number: 2378
    8 Number: 2cf9
    7 Number: 132c
    6 Number: 4a3c
    5 Number: 6367
    4 Number: 3384
    3 Number: 5660
    2 Number: 6655
    1 Number: 6141
    0 Number: 1870
    Complete!


    Тестовый пример на GitHub

    Дополнительно


    Кстати, обязательно загляните, там есть дополнительные примеры использования:

    1. Команда Tee в Linux: Примеры Использования (копия).

    Это репост с сайта http://tolik-punkoff.com
    Оригинал: http://tolik-punkoff.com/2020/08/10/linux-vyvod-odnovremenno-na-konsol-i-v-fajl-komanda-tee/
    Monday, August 10th, 2020
    hex_laden
    4:59p
    Jean Bellis, восстановленная запись

    Прямая ссылка: https://youtu.be/r05g5I1sNc4

    Верни мне мой 2007-й, да.

    Это репост с сайта http://tolik-punkoff.com
    Оригинал: http://tolik-punkoff.com/2020/08/10/jean-bellis-vosstanovlennaya-zapis/
    hex_laden
    4:54p
    Linux, узнать текущий терминал, узнать свой терминал, узнать текущий tty.
    Команда, вы будете смеяться, очень простая:

    tty

    Результат работы на локальном терминале (с консоли, "с клавиатуры") и "без иксов":

    /dev/tty1

    Эмуляторам терминала (из иксов или PuTTY), естественно, выделяется виртуальный терминал:

    Иксы:



    PuTTY:



    В некоторых встраиваемых системах команда tty может не работать.

    Сохранить текущий tty в переменную скрипта


    В переменную скрипта можно сохранить результат выполнения команды:

    #!/bin/bash

    CUR_TTY=`tty`
    echo $CUR_TTY


    Вывод (для первого случая):

    /dev/tty1

    Это репост с сайта http://tolik-punkoff.com
    Оригинал: http://tolik-punkoff.com/2020/08/08/linux-uznat-tekushhij-terminal-uznat-svoj-terminal-uznat-tekushhij-tty/
    Saturday, August 8th, 2020
    hex_laden
    4:49a
    Обновление своего плагина для Firefox
    Преамбула


    В прошлом году писал заметку Делаем свое расширение для Firefox (копия), теперь краткая инструкция, как его обновить, если внесены изменения.


    Загрузка обновления на сайт дополнений


    1. Правим код, не забываем изменить номер версии в manifest.json, добавляем нужные файлы, упаковываем в ZIP-архив, переименовываем файл в *.xpi

    2. Идем на https://addons.mozilla.org/ru/developers, жмем большую кнопку Отправить или управлять расширениями, логинимся.

    3. Жмем в верхнем меню Мои дополнения, проваливаемся сюда:

    .

    Жмем Новая версия.

    4. Загружаем файл дополнения кнопкой Выбрать файл...



    У меня проверка прошла с первого раза.

    5. Далее попадаем сюда:



    Нас спрашивают, не использовали ли мы обфускаторы кода. Мы не использовали, если была использована библиотека jquery-?.?.?.min.js, чей код ужат, чтоб занимал меньше места - ничего страшного, Мозилла автоматом определяет, что используется известная версия библиотеки. Жмем Продолжить, попадаем на страничку, где можно ввести описание изменений (видно всем пользователям) и комментарий для проверяющих.



    Одобрение, видимо из-за небольших изменений в дополнении, пришло практически моментально, похоже, в автоматическом режиме.

    Это репост с сайта http://tolik-punkoff.com
    Оригинал: http://tolik-punkoff.com/2020/08/07/obnovlenie-svoego-plagina-dlya-firefox/
    Friday, August 7th, 2020
    hex_laden
    5:39a
    Обновление дополнения External IP Geo IP для Firefox.
    В прошлом году сделал вот такое вот дополнение для Firefox (копия) и обнаружился в нем досадный баг.

    Если IP не был известен сайту https://api.myip.com/, то он, в качестве кода страны, возвращал XX, а для этого кода в плагине не было иконки, соответственно, на панели браузера кнопка оставалась без иконки, и в панели самого плагина иконка не отображалась.

    Исправил.





    Это репост с сайта http://tolik-punkoff.com
    Оригинал: http://tolik-punkoff.com/2020/08/07/obnovlenie-dopolneniya-external-ip-geo-ip-dlya-firefox/
    hex_laden
    4:24a
    БрокаЦентр - Сон


    Прямая ссылка: https://youtu.be/ZHJYBrUMSgA

    Че-то меня опять на малоизвестный карельский панк потянуло...

    Это репост с сайта http://tolik-punkoff.com
    Оригинал: http://tolik-punkoff.com/2020/08/07/brokatsentr-son/
    [ << Previous 25 ]
My Website   About LJ.Rossia.org