Profile

coolwolf0: (Default)
coolwolf0

June 2025

S M T W T F S
1234 567
891011121314
15161718192021
22232425262728
2930     

Custom Text

Буквально вчера была окончательно решена проблема перманентного логина в Андроид-приложении.

Краткое содержание предыдущих серий.

1. Немного суровой реальности. Браузер общается с сайтом при помощи так называемой "сессии", то есть некоего набора данных, признаваемого обеими сторонами. В какой-то момент сессия считается просроченной и все данные о контактах браузера с сервером обнуляются. Если, например, сервер подтвердил ввод пароля для данной сессии, то потеряв сессию браузер не сможет утверждать серверу, что он имеет право совершать действия от имени пользователя. Естественно, народ уже давно решил эту проблему при помощи всяких исхищрений. Одним из них, например, является хранение контекста (или токена для его восстановления) в памяти браузера (кукис или локальное хранилище)

2. Ещё более суровая реальность. До сих пор мои сайты и андроид-приложения эксплуатировали эту фичу без зазрения совести. В webView кукис сохраняются так же, как в обычном браузере, достаточно подключить нужную функцию в классе приложения. Но вот настали трудные времена и все внезапно озаботились приватностью. Откладывать кукисы, даже для упрощения логина, оказалось страшно опасным действием. Все сайты вняли требованиям возмущённых пользователей и начали требовать от них добровольно соглашаться на сию потерю анальной девственности. В частности, мои сайты были занесены в "красный список" сами-понимате-какой-корпорацией именно за отсутствие "консента". Пройдя унизительную процедуру я вернул сайтам честное имя, но пользователям от этого лучше не стало. Периодически у них выскакивают напоминания "этот сайт следит за тобой, нажми кнопку чтобы стать его рабом". Логин при этом мягко говоря про%бывается и пользователю приходится совершать дополнительные телодвижения для его восстановления (да, без ввода пароля, но всё равно геморрой).

Какова же альтернатива? Я подумал тут с Gemini, и мы пришли к выводу, что можно хранить токен не в памяти браузера, а в приложении, передавая его туда-сюда через адресную строку. Для десктопного браузера это неприемлемо, ведь тем самым мы позволяем пользователю сверкать у всех навиду голой жопой секретным токеном. Но для смартфона такой опасности нет. Адресная строка в приложении отсутствует, а значит всё, что там лежит остаётся между приложением и сервером. Короче, страничка логина принудительно получает от приложения дополнительный параметр, означающий "это мобильный клиент, ему - можно". При удачном логине сервер делает для такого клиента исключение. Он генерит этому пользователю персональный токен, запомнинает его вместе с датой выдачи и возвращает его в виде аргумента при перенаправлении на основную страницу. А поскольку основная страница тоже рендерится приложением, оно потихоньку считывает этот токен и запоминает его. Но запоминает уже не в виде богомерзкого кукиса, а в своей родненькой памяти, о которой никакой гугель-шмугель не знает, и знать не должОн. Если в следующий раз ему попадётся основная страничка, он пороется в своей памяти и, при наличии там токена, впрыснет его в адресную строку, чисто на всякий случай. В результате, основная страничка, подгружаемая в единожды залогиненом приложении, гарантированно получит токен. Всё, задачка решена, можно удалять код, откладывающий кукисы, а с ним заодно и консент-контент!

Ну и на дессерт: как я решил проблему пароля для регистрации и логина. Основной опасностью тут является хищение пароля всякими сниферами. Так вот, при моей схеме пароль тупо не передаётся на сторону сервера (и соответственно там его нет). Даже если вы сидите на канале пользователя и прорвались через HTTPS, то всё равно увидите только чек-сумму, да и то не самого пароля, а чего-то наложенного на ещё что-то. Как это работает? Очень просто. При регистрации в браузер посылается "соль" которой посыпается пароль. После этого результат (в виде чек-суммы) отправляется на сервер и там сохраняется. Каждая попытка логина сопровождается генерацией дополнительного секретного компонента (назовём его "перец"). Браузер накладывает на введённый пароль и "соль", и "перец" перед тем как вернуть результат на проверку. Сервер вытаскивает "посоленную" чек-сумму для данного пользователя, накладывает на неё индивидуальный "перец" и сравнивает результат с предъявленным браузером. Подделать или зареверсить эту схему практически невозможно.

Дополнительная "фишка" - защита от поддельного запроса на аутентикацию. Дело в том, что в роли "перца" выступает юникс-тайм на данный момент времени (со стороны сервера). Если кто-то вздумает повторить запрос на логин со старым "перцем", то сервер его отвергнет, так как он уже "просрочен" по сравнению с последним успешным логином. Единственной лазейкой является полная имитация всех алгоритмов на стороне браузера, плюс кража секретной чек-суммы пароля (что является фактически кражей самого пароля).
В далёком одна тыща девятьсот поцарапанном году, будучи молодым специалистом не нюхавшим пороху, я очень сильно увлёкся продукцией молодой (тогда ешё) и перспективной фирмы мелокософт. Их поделки были не сильно качественными, но по крайней мере имели логичную структуру и функционал. Поскольку смартфонов в те времена ещё не было (кроме экранных прототипов в "Звёздных войнах"), простому народу приходилось распечатывать книги на бумаге. Однако текстовый формат очень плохо ложился на офисные листы А4. Не будет же нормальный человек читать книгу перелистывая такие гигантские страницы. Может для технической документации это был приемлемый вариант, но томик "Мастера и Маргариты" выглядел бы в этом случае немного коряво. Короче, на визуальном бейсике для Ворда из 95-го офиса, я накатал простой и эффективный алгоритм, превращающий обычный текст в документ, разбитый на страницы по две колонки, которые в свою очередь раскладывались в "тетрадки" по несколько сложенных листов. В результате можно было получить вполне приличную книжку формата А5. Одако, с появлением следующей версии мсявного офиса, бейсик оказался тупо несовместим, поэтому мой замечательный скрипт полетел в мусор.

К чему это я пустился в воспоминания? Ведь (как известно) нельзя войти в одну и ту же реку дважды. Зато в дерьмо - запросто. Пару лет назад ВПС совершил неимоверный для своего возраста подвиг: без помощи AI (который тогда ещё пешком под стол ходил) сварганил андроид-приложение. При том, что уровень владения этой вашей джавой - даже хуже чем "читаю перевожу со словарём". Ну сварганил, и казалось бы всё, можно спокойно почивать на лаврах. Ан-нет. Мой бесплатный провайдер, обеспечивающий хостинг FreeRSS2, внезапно стал корёжить файлы при передаче клиенту. Причём случайным образом. Внешне это проявляется как потеря иконок у Fontawesome, отсутствие стилей CSS и даже скриптов JS. Сами понимаете, без этого окно апликации теряет свой основной функционал. Короче, нашёл я другой бесплатный cpanel-хостинг (не без труда, их сейчас не так уж много) и даже перенёс на него приложение с базой данных. А вот как переучить готовый APK на альтернативный хост? В принципе, для этого делают landing-page (что я немедленно и сотворил на своём основном сайте), но проблема переделки APK никуда не ушла.

Ну ладно, думаю, скачаю на новый лептоп Андроид-Студио, закину в него свой старый проект и вуаля. Увы, получилось не "вуаля", а совсем неприличное слово. Последняя версия Android Studio с фривольным названием Ladybug отказалась компилировать мой выстраданный Java-код. Каких-то зависимостей не хватило. Попытка пересоздать проект и скормить ему оригинальный MainActivity.java не продвинула меня никуда. Ошибки, бесконечные попытки совместить несовместимое и т.д. и т.п. Короче, покручинился добрый молодец и пошёл советоваться с любомудрым Gemini от компании Добра. Не горюй, говорит мне сей мудрый пенёк, есть у меня для тебя масса идеек. И как обычно, вывалил полный набор абстрактных советов с человеческих форумов, сопроводив общими рассуждениями о смысле жизни. Попробовал я самое очевидное - скачал старую версию Android Studio - ошибки перегруппировались, но компиляция всё равно вылетает. Я с этими ошибками к Gemini - он мне рассказывает сказки про миграцию на AndroidX, да про версии AndroidSDK. Что бы я ни делал - сплошные проблемы. Даже установка Android Studio Flamingo (завалявшейся в бекапе) не помогла.

Просидел я так допоздна, и завалился спать. А на утро добрая фея common sense подсказала мне, что последняя оставшаяся ошибка вообще-то относится к какому-то модулю тестирования. Нахрена оно мне в простейшем приложении, построенном на webView? Поменял я build variant с debug на release, и всё скомпилировалось, словно на дворе 2022 год.

Вы спросите, а где же мораль? Морали тут рассыпано куча. Начнём с того, что процесс сборки в джава-проектах мягко говоря неочевидный. И даже хвалёный Gradle мне мало помог. Файлы проекта оказались несовместимыми с новой версией IDE. Не в такой степени, как мелкософт бейсик, но всё равно. Ну и пользовательский интерфейс у этой "Студии" оказался весьма "на любителя". Задолбался я в нём искать элементарные вещи. Тот же Eclipse давно решил проблему поиска настроек - они все сведены в одно окно с удобной фильтрацией. На более чем 30-м году жизни мсявный офис тоже сделал что-то подобное. А вот корпорация Добра не шмогла. Ну и самая главная мораль: не для простых умов эта технология. Нехай молодёжь приложения под мобильный контент пишет. Мы уж как-нибудь обойдёмся Пайтоном, JS/Angular, PHP и SQL/Mongo.
Хулить корпорацию, проливающую в наш мир свет из своих "окон" - традиционное занятие современного человека, независимо от степени его продвинутости в компьютерной области. И система у них "висючая", и офис "глючный", и даже мышь "дурацкая". Но вот уже немало лет, как встроенный в ОС "защитник" вытеснил все сторонние антивирусы, встроенная поддержка ZIP избавила простых пользователей от необходимости чикаться с архиваторами, аутентикация перестала задавать ненужные вопросы при переходе на сенсоры (отпечаток пальца, face ID).

Есть в их продукции традиционно бестолковые поделки вроде застрявших в 90-х "блокнота" и "пейнта", есть абсолютно никому ненужные поделия вроде "проигрывателя мультимедия" или "браузера" (какой там у них сейчас?). Манера пихать все файлы без разбора в "недавно использованное" тоже мягко говоря раздражает. Но в целом намечается положительная тенденция.

У меня с давних пор (лет 20 как минимум) есть заброшенный аккаунт Skype. В своё время их купили всё те же мелкомягкие и понеслось. Каждые пол-года (или что-то вроде того) мне на почту стали приходить угрожающие мейлы, мол ваши деньги на счету Skype пропадут, если вы не сделаете хотя бы один звонок или СМС. Приходилось периодически повторять эту дурацкую церемонию. В результате баланс всё равно убывал - на несколько центов. Судя по всему, кто-то вздрючил их за такую практику, потому что сегодня мейл был немножечко другой. Достаточно зайти в свой аккаунт и ... просто нажать на кнопку "продолжить". И ВСЁ! А что, с самого начала нельзя было так сделать?
Что-то я зачастил с постами. Может из-за того, что кто-то отправился к гуриям? Ну и аллах с ним.

Итак, пока что я доволен новым лептопом от работы. Исправились проблемы с монитором-докстанцией на работе. Если раньше когда монитор "уходил в спячку" весь десктоп летел к чертям, то теперь всё подымается как ни в чём не бывало. Без вопросов заработали все портабл-приложения. Доустановил gvim, PL/SQL developer, Python, GIMP, Picasa viewer. Обхожусь этим минимумом. 11-я винда не сильно отличается от 10-й, вот только расположение панели задач пришлось подправить (в два клика). Офис тоже не изменился. Я всё ругал новый аутглюк, но когда по дефолту у меня оказалась старая версия, я без колебаний перешёл на новую. К хорошим вещам быстро привыкаешь, а недостатки на их фоне не так заметны. Немного подпортил картину интерпретатор Python3 - он встал в какую-то виндово-консольную директорию и все скрипты запускает только в отдельном консольном окне. Пришлось немного подшаманить и запускать скрипты с префиксом интерпретатора. Сильно мешает ситуация с USB - все порты теперь только TypeC (причём один должен использоваться как питание). Пока что обхожусь купленным в стоковом магазине разветвителем на 4 обычных USB. Приятно удивило распознавание лица - не требуется вообще никаких пин-кодов для входа в систему, да и к VPN подключаюсь теперь без физического донгла. Ой, совсем забыл: эта новая винда подняла из каких-то профайлов установки вайфая и сходу влетела в мою домашнюю сеть (ну чем не телефон?). При этом физического входа для Ethernet кабеля нет, так что приходится надеяться на скорость воздушного соединения. Деваться некуда, пришлось заказать онлайн докстанцию-разветвитель за 25 баксов. По цене выходит почти столько же, сколько я выложил за неработающий переходник DisplayPort-HDMI, поскольку онлайн всегда на порядок дешевле. Но в целом, работать с новым лептопом удобно и не напрягает.

Новый робот-пылесос тоже приятно удивил. Да, у него нет режима "пройтись по плинтусам", и управление вручную немного глючит, но в остальном... Наконец-то обслуживание робота свелось практически к нулю. Не надо его опорожнять, не надо следить, чтобы он не застрял или заехал куда нельзя, нет ситуаций, когда он словно слепой котёнок тыкается в препятствие, и что самое главное - он не зажёвывает оставленный на полу носок или кабель. Интеллект и камера позволяют ему распознать неприемлемый объект и объехать его от греха подальше. Очень большой прогресс и в планировании уборки: ситуация когда уборщик случайным образом бродит по комнате в надежде, что пространство покрыто, ушла в прошлое. Этот робот точно определяет границы комнаты и методично проходит по всей площади "змейкой". И дорогу на док-станцию он тоже не ищет словно путник в лабиринте минотавра - сходу выбирает верное направление из любой точки в квартире. В процессе тестовых испытаний мы его погоняли ещё и в режиме мытья полов. Моет он чисто, на ковёр с мокрой тряпкой не лезет, периодически бегает на док-станцию и полощет тряпочку. Там вообще-то даже не тряпочка, а два диска с ворсом. Единственный недостаток - за пару таких хождений по дому он уже высосал из резервуара почти половину чистой воды. Если мыть полы раз в неделю, можно в паспортные 40 дней замены не уложиться. Остальное - не хуже чем в предыдущем аппарате. Есть приложение, возможность управления несколькими пользователями, интеграция в "умный дом". Правда умного дома у нас нет, так что оставим эту функцию на будущее. В приложении можно редактировать план дома разбив его на зоны. Это удобно при планировании уборки. Например, можно попросить его убрать конкретную комнату или совокупность комнат. Короче, весьма рекомендую.
Так уж получилось, что последний раз, когда мне довелось сваять настоящую графическую морду к программе, на дворе был где-то 2008 год (а может и ещё раньше). С тех пор как-то обходился консольными скриптами и веб-приложениями. Но вот приспичило автоматизировать некий процесс и чтобы всенепременно с полноценным гуём. И тут всё заверте...

Во-первых, старый как говно мамонта Tk выглядит сейчас мягко говоря неуместно. Соответствено, более продвинутый QT никак не прикручивается к Python2 (поскольку эта версия давно в "чёрных списках" у всех модулей). Закручинился добрый молодец, да видно некуда ему деваться - пришлось ставить самый продвинутый Пайтон - аж 3.12! К нему сразу же приставил QT5, ну и PyInstaller. Вот с этим "джентльменским набором" я и сваял простейший гуй к уже работающей консольной части. После компиляции (с помощью PyInstaller) получился полноценный виндовый экзешник, который сходу заработал на абсолютно постороннем для него компьютере. В процессе написанию кода пришлось пару раз сбегать на поклон к всезнающему Гугелю, а то в этом QT хрен знает какие методы для работы с виджетами (а ваш покорный слуга всё никак не поставит себе IDE более продвинутый чем gvim). В конечном итоге функционал вышел неплохой, а морда даже чем-то напоминает хакерские программки вроде кейгенов или инсталляторов вареза.

Да, если кому нужно - могу отдать за спасибо. Суть утилиты в обёртке вокруг ffmpeg: из ютьюб-ссылки извлекается её "секретный" плейлист m3u8 и вуаля - видео скачивается в нужном формате. Так что пишите письма ;-)
Если ваш сайт попал в "красный список" Гугеля и его величество Хром реагирует на все странички красным-малопрекрасным экраном, знайте: выход есть. Будет немного трудно, порой мучительно стыдно, но придётся пройти процедуру диспансеризации в корпорации Добра.

Итак, первый этап: осознание. Вдохните глубоко и проговорите мысленно "я понимаю, что использование кукиз выглядит подозрительно с точки зрения безопасности, даже если мой сайт отложил их для удобства пользователя". Если серьёзно, все советы ниже относятся в основном к такой категории маркировки сайтов. На случай иных проблем пожалуйста идите на поклон к тематическим форумам и их гуру.

Второй этап: отрицание. Вам придётся отречься от девственной чистоты сайта и изгадить его всплывающим баннером об использовании кукиз. Это позорно, но таковы требования к публичному отрицанию вины (consent). Я использовал вот этот сервис. Сгенерировав код для вставки на сайт вы тупо копируете его в заголовки своих страничек.

Третий этап: торг. Тут ваш путь лежит прямиком в логово врага. Залогиньтесь своим гугл-аккаунтом на поисковую консоль, введите адрес сайта и начните унизительную процедуру подачи челобитной. Первым делом вам придётся доказать, что сайт - ваш. Для этого надо скопировать сгенерированные гуглом сигнатуры в DNS-регистр вашего сайта. У меня это CNAME. После этого сайт можно пересканировать и попросить review. Всё, мы сделали это.

Последний этап: принятие. Через 2-3 дня вам придёт радостное (или не очень) сообщение, мол ваша просьба рассмотрена, мы вас поздравляем (или наоборот, посылаем), засим подписуемся и всё такое прочее. С этого момента ваш сайт должен быть удалён из мерзких списков "подозрительных" (или возвращайтесь в начальную точку и ищите, что же ему там не пондравилось).
Да простят меня читатели, но я о своём, о "компьютерном".
Если быть совсем точным, то это уже не компьютер, ибо ВПС наконец-то (к 55 годам) смог наваять приложение для ондроед-устройства, который как бы уже и не персоналка, а чёрт-те-что.
И хоть "программа" получилась на несколько строчек длиннее "Hello, world!", к тому же написанная под копирку с лекций каких-то индийских товаристчей, но тем не менее, из неё вышло полноценное приложение (открывающее во встроенном браузере захардкоденную ссылку на сайт).
Более того, я даже скопипастил туда две фичи: не выходить из приложения по кнопке "назад", пока не достигнут нулевой уровень переходов, а также выполнить "зум" при нажатии пальчиками в двух местах.
Жалко, что перезагрузка страницы (по свайпу вниз) оказалась мудрёной, а так - всё работает как будто действие происходит в обычном браузере.
В планах теперь допилить поддержку свайпа вниз и приделать некую среду компиляции+установщик. Логично было бы что-то вроде NPM, но по сути можно обойтись двухстрочными BAT-файлами. Тем более, что вопрос закачки по FTP я буквально недавно решил - с десктопа можно заливать файлы в пакетном режиме при помощи встроенного FTP-клиента от мелкомягких или (более кошерно) - официально-бесплатным клиентом WinScp.
Теперь окончательно решён вопрос переноса на андроид аггрегатора новостей FreeRSS2, а также семейного списка покупок my-shopping-list. Осталось только допилить код, чтобы можно было скачать приложение с главной страницы (но это уже на вебе).

UPD: нашёл и впендюрил перезагрузку странички по свайпу! При этом один проект покорёжился, так что пришлось его подымать из руин. Срочно бегу загонять сорсы в GIT...

У вас бывает ситуация, когда читая что-то на смартфоне, вы привычно хлопаете себя по карману и не обнаружив телефона, начинаете его судорожно искать. Ага, с телефоном в руке. Или ищете ключи, которые только что оставили в двери... Короче вот моя история с поправкой на компьютерную специфику.

Я всё ещё работаю частично из дома. Домашнее рабочее место полностью оборудовано: тут и запасной экран с работы, и док-станция вставленная в подставку (для чтения с лептопа на уровне глаз), и конечно же мышь с клавиатурой. Мышь я купил ещё в короновирусный период и в какой-то момент кошки её укокошили. Уронили мышку на пол, отломали мышке кнопку. Всё равно её не брошу, потому что уже заказал онлайн новую. Однако, скоро сказка сказывается, да не скоро посылка из Китая приходит. Надоело мне мучаться с хромой мышкой и я одолжил аналогичную с домашнего (общесемейного) компьютера. По-честному, этот компьютер используется буквально пару раз в месяц чтобы ввести данные расходов и сверить чеки с распечатками по кредиткам. Ну и очень редко туда заливаются всякие семейные архивы вроде фото/видео отчётов. Хард-дисков там навставлено немеряно, такая файлопомойка.

Это была присказка. А теперь - страаашная сказка: клавиатура на домашнем компе перестала работать. Ну как перестала: мигает индикаторами, но текст на экране не появляется. Ладно, думаю, опять батарейки сели. Вставил новую батарейку - та же картина. Перебрал все батарейки типа AAA какие нашлись в доме - мигание об разной степени живучести есть, а вот результатов никаких. Осталось ещё два варианта. Первый - все батарейки в доме долбанутые и поэтому надо купить новые. Купил, поставил - ёпрст, та же картина! Осталась последняя надежда - переставить клавиатуру на другой комп и проверить её функционал (перед тем, как выбросить). И вот тут я понял, что ничего не понял. У клавиатуры-то должен был быть некий "донгл", который втыкается в комп, а никакого донгла в наличии не наблюдается. Я уже погрешил, что забыл что-то воткнуть, когда недавно разбирал комп для малоприятной, но важной инвазивной операции. Отодрал все защитные картонки, которые налепил от кошек, вытащил все провода из задворок стола - ничего даже близко не похоже на искомый донгл. Ну всё, решил я, кошки его отодрали с лицевой панели и заиграли (хорошо, если при этом не сожрали).

Посыпав голову пеплом иду через дорогу в магазин "всё для электроники" и описываю свои требования: клавиатура, желательно с готовыми русскими буквами (не для себя, для тёщи стараюсь). Мне и говорят: есть проводная, но без русских букв, так что придётся покупать ещё и наклейки, и есть беспроводная, с русскими буквами, но к ней в комплекте идёт мышь. Я конечно решил обойтись комплексным решением, говорю продавщице - а лишнюю мышь я воткну в стример. Продавщица выдаёт мне фразу, после которой у меня происходит процесс, напоминающий проваливание монетки в таксофоне (то, что на иврите называется "нафаль асимон") - а мышь и клавиатура подключаются через ОДИН донгл! Один, Карл! Значит я, хмар ибн хмар, выдернул ОБЩИЙ донгл из домашнего компьютера, упёр его на своё рабочее место вместе с мышью, и после этого удивлённо искал, а как же клавиатура будет "говорить" с компом? Причём ответ был всё время перед глазами: моя "рабочая" мышь и её донгл - чёрные, а на домашнем компе мышь, клавиатура и донгл - белые.

All's Well That Ends Well :-)

Как-то серийно пошло с починками. Сразу после приезда из Венгрии со мной связался установщик дверей и в назначенный день мы с сыном расхерачили все внутриквартирные двери, включая косяки. Утром приехали установщики и за почти полный рабочий день установили всё как полагается. Правда, оставалось два "но". Во-первых, вокруг косяков краска осыпалась, да и штукатурка тоже не помешала бы. А во-вторых, в процессе разбора мы удалили и так называемые "экраны" над дверями. Вид у них был скажем откровенно неподобающий, поэтому я решился на революционную переделку. Мы пригласили мастера, который в своё время занимался подготовкой инфраструктуры для новой кухни и договорились на полный сервис: он ставит гипсовые панели вместо "экранов", всё это шпаклюет и красит. Заодно выправил и мои огрехи при штукатурке коридора. Вышло просто загляденье, прямо удивляюсь, как мы раньше так жили.

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



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

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

А на закуску я оставил компьютерные починки. Сегодня мне заменили хард-диск в рабочем лептопе. В результате "всё, что нажито непосильным трудом" пропало, а именно: нестандартные утилиты, всякие приблуды и прибамбасы, фар-коммандер со всеми настройками. Пострадали и рабочие инструменты, например криво встал plsql, да и vnc тоже вылез какой-то старинный. В дополнение к этому горю, мне опять впиндюрили сервис, который постоянно прописывает в свойства сетевых соединений свой мерзкий опенднс (и режет варезные сайты за нарушение корпоративной полиси). Ну ладно, на работе ходить в такие места действительно некомильфо, но дома-то я могу разгуляться? Короче, сварил я этот сервис в кипятке, и жизнь заиграла всеми красками. Зарубка на будущее: зовут его "амбрелла" и сидит он в списке сервисов.

Ну и совсем на дессерт, забастовал наш домашний принтер. Всасывает лист бумаги, бодро начинает что-то чирикать и всё - не может протянуть бумажку дальше. Я психанул, подёргал туда-сюда всякие крутящиеся кишочки в его пищеварительном тракте - бесполезно. Запустил штатную чистку всего и вся - чистка прошла, а дефект остался. Кручу этот принтер туда-сюда, даже пузом к верху перевернул и какую-то сервисную дверку приоткрыл. Уж не знаю, что там произошло, но после этого злодей одумался и заработал как ни в чём не бывало. На том и сказке конец (а вот починкам - конца не видно).
У меня относительно новый рабочий лептоп. Как только получил его, сразу обрадовался - все приложения запускались с невиданной скоростью, система просто "летала".
Однако, вам знакомо это чувство, когда в определённый момент времени родное "железо" вдруг начинает тормозить по абсолютно надуманным причинам: открытие контекстного меню, вызов ассоциированного приложения, загрузка или сохранение файла... Мы уже подспудно воспринимает эту ситуацию как "старение" системы - пора апгрейдиться, лошадка уже "не тянет".

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

Короче, не хотелось влачить жребий терпилы, и я стал бороться. Для начала погуглил на предмет того, насколько это явление массовое. Понятное дело, тормозить система может по разным причинам, в том числе и из-за реальных проблем в конкретном сочетании софта и железа. На всякий случай провёл рекомендуемое тестирование и "восстановление" системных файлов. Увы, это ничего не дало, ибо откуда файлам портиться-то? Тогда я пошёл дальше - отменил службу индексации файлов, встроенную в винду. И после перезагрузки произошло чудо: система словно помолодела на год! Никаких тормозов! Контекстное меню открывается через мгновение после клика, приложения запускаются, файлы читаются - без малейшей задержки! Ну как тут не вознести молитву, а лучше - анафему тем, кто изобрёл столь тормозную "фичу"...
У сына лептоп с официальной виндой. Мой рабочий лептоп мне ничего насчёт новой версии не предлагает, - наши администраторы не спешат приобрести геморрой.
А вот сын получил недавно предложение и просто согласился на обновление до 11-й версии.
Система очень вежливо спросила, когда будет удобно произвести переезд, после чего пошуршала на ночь глядя и ... вуаля, новая морда на старые вилы натянута успешно.
Винды не стали сильно удобнее. Меню по правому клику заметно быстрее не открылось. Зато вся панель, вместе с "тряпочкой" главного меню съехала в середину линейки задач - ну чем не планшет /ирония/.
Понадобилось сделать на рабочем столе ярлык вновь установленного приложения - тыкаюсь в контекстное меню, пытаюсь перетащить, но в обоих случаях получаю мужской детородный орган. Ладно, зашёл в свойства, скопировал путь до экзешника и создал ярлык из подсобного материала. Бардак.
В процессе установки программы ... слетел эксплорер десктопа. Да-да, как в старом добром Чикаго! Хорошо хоть ручки помнят, как эту пакость восстановить: нажал Ctrl+Alt+Del, выбрал task manager и запустил из-под него "explorer" - всё вернулось. Вот чем хороша винда, так это стабильностью /сарказм/.
Появилась новая менюшка: можно причудливо разложить на десктопе несколько работающих окон, как бы имитируя многопанельный Нортон Коммандер. По-моему, опция разложить окна мозаикой была ещё в каком-то поцарапанном виндовом интерфейсе 3.1 или ещё раньше /брюзжание олдфага/.
Короче, молодцы ребята, баги не чинят, зато красиво завешивают фасад изображением идеального фронтона. Наверное, к первомайской демонстрации спешили релиз сдать.

PS: кто делает репаки программ с "только русским" интерфейсом? Ручки бы им повыкручивать.

Да, это заняло почти весь выходной день, и ситуацию инициировал я сам, но никаких умышленных диверсий не проводилось.

Итак, начнём по порядку. Утро выходного дня, обычная просьба "подойди, что-то у меня комп завис". Анамнез: домашний комп внезапно перестал реагировать на что-то и показывал черный экран. Поменял батарейки на беспроводных мышке/клаве - ноль. Перезагрузился, комп зависает на переходе в виндовый гуй (и при этом субъективно значительно медленнее бутится). Пробую несколько перезагрузок, пока не попадаю в меню винды "у вас что-то не грузится операционка, давайте попробуем исправить". Ну Ок, говорю, давай, работай. Прошу откатиться на предыдущую сохранённую версию. Винда радостно крутит колёсики, считает прОценты, вежливо просит не мешать ... и загружается. Ура, думаю я, но накатив очередное обновление получаю тот же черный зависший экран. Ладно, очевидно консервативное лечение не помогло и проблема переходит в область хирургии - открываю корпусок, вроде никаких затыков нет: вентиляторы работают, радиаторы не раскалены. Тем не менее - черный экран при подъёме винды. Начинаю грешить на новый монитор - подключаю его через кабель SVGA - та же пестня. Беру "донорский" монитор - на нём почему-то всё пашет (через SVGA, ибо донору - в обед сто лет). Меняю кабели - стабильности нет. Плюнул, достал бутыль водки, извлёк видеокарточку и протёр контакты. Ура, мануальная терапия помогла: система поднялась! Заодно выяснил, что кабель вставлялся чуток с натяжением вбок, поэтому гнездо HDMI "дребезжало". Короче, первая часть марлезонского балета окончена - система стабильно бутится и не виснет, монитор оправдан по всем статьям, а видеокарточка радостно пашет, исполняя пьяные частушки.

Read more... )

Кто-то учится ракеты на Марс отправлять, а ВПС к 50 с лишком годам научился Апач ставить, да чтоб со всеми нужными плагинами и клиентами. Задача была поставлена максимально приближенная к боевой - восстать из руин (что с давних пор официяльно называется би-си-пи, то есть "что будем делать, если всё пропало"). Мне предоставили голый-босый убунто-сервер дабы на нём восстановить фунциклирование нашей системы. Начал я с простого - воткнул все сорсы под /var/www/html. Поскольку веб-морда основана на вышеупомянутом Апаче, он был поставлен при помощи элементарного yum install httpd. Естественно, этого мало - нужна скотинка под названием пе-ха-пе: yum install php -y. Ну а дальше начался полный хаос: плагины сыпались отовсюду, это был и XML, и LDAP, и Оракл с Редисом. Естественно, Ораклу недостаточно было просто встать как приложение к пе-ха-пе, ему клиента подавай. Пришлось немного пожульничать и скопировать клиентские библиотеки. Но это не сильно помогло - динамические библиотеки Апач так и не увидел (а очень хотел - так в один голос советовали умные люди из разных нагугленных форумов). Пропустив мат-перемат пострадавших, нашёл в тех постингах зацепку - файл конфигурации должен определять переменные ORACLE_HOME и LD_LIBRARY_PATH (наши старые знакомые по аналогичным затыкам в Пайтоне). Каким-то чудом я прекратил безрезультатные поиски в /etc/httpd/conf* и подсмотрел /etc/sysconfig/httpd на "донорском" хосте - там-то всё и было прописано простым и понятным присвоением, как в шелле. После этого привычное телодвижение по рестарту service httpd restart и вуаля - приложение забежало как полагается.
Вот тут объясняют, как вернуть привычный масштаб менюшкам GVIM в распальцованной Win10.

Это только меня раздражает их манера произвольного масштабирования всего и вся?
Покупаю новую клаву. Продавец говорит, что она вместе с мышью подключается к одному общему USB-донглу. Киваю головой, прихожу домой, открываю коробку - WTF? Мышь и клава на месте, а донгл-то где? На следующий день иду в ту же контору и начинаю заранее подготовленный монолог, мол где вставлялка. Продавец молча открывает ... крышечку для батарейки у мыши и вынимает оттуда ту самую фитюльку. Я публично объявляю "я хмар" *) и хлопаю себя по лбу.

Ну ладно, это конкретная модель от китайских дизайнеров, тут могут быть нюансы. А вот другая ситуация - надо переформатировать/заменить харддиск в дочкином лептопе. Приемщик спокойно забирает аппарат, а у меня всплывает вопрос - на диске же купленная винда, откуда туда попадет лицензия? На что мне спокойно сообщают, что в современных системах такая фигня уже прописана в BIOS! Чувствую себя совсем отставшим от жизни.

Кстати, благодаря новой клаве решилась проблема спящего режима на 10-й винде - старая клава генерила какие-то мерзкие прерывания, поэтому единственный способ усыпить комп был режим гибернации.

UPDATE

"вопрос на засыпку" снимается - мобильные браузеры тупо кешировали старые версии css-файла и доблестно гнали пургу.
Это были плохие новости. Хорошие новости состоят в том, что ко всем include-файлам в адресе надо приписывать версию, дабы выкрутить ручонки механизмам кеширования.

<link rel="stylesheet" href="main.css?ver=<?= $ver ?>">

Версию можно генерить в PHP-коде даже не заморачиваясь с препроцессингом перед аплоадом, а тупо подрядив CVS/SVN или другую систему сорс-контроля.

$rev = str_replace(' $', '', str_replace('$Rev: ', '', '$Rev: 6.00 $'));

Так что пользуйтесь автоматизацией и не изобретайте велосипед.
_____________________

* [я хмар] = "вот осёл" (арабск.)
Кто о чём, а я о файлообменниках. Публиковал я тут рецепт обхода рекламных окон, открывающихся по каждому клику - в окне отладки F12 выбрать Elements => Event Listeners и удалить всё, что связано с кликами и мышью.
Так вот, сегодня я "на дурочку" сделал правый клик на кнопке "скачать бесплатно" и ... просто открылось желаемое окно. Решил капчу, кликнул на "продолжить" и ... никакой рекламы не появилось. Под конец правый клик на ссылке для скачивания - открылось окно для скачивания.
Или это какое-то продвинутое обновление Хрома, или ребята поняли, что их бизнес-модель слишком агрессивная.

Кстати, спросил вчера у дочки, ты как, видела этот богомерзкий "Бинг". Она аж скривилась: "бяка какая-то". Майкрософт старался-старался, но "не шмогла".
Увы, моя работа изо дня в день связана с офисным мусором, который поддерживается рабочим лептопом. Помимо того, что там аутлук, мессенджеры, звонилка, и т.п. самое главное приложение для работы - это VNC Viewer, через который я и попадаю в свою вселенную линуксов. За 5 лет работы я могу по пальцам одной руки сосчитать количество перезагрузок линуксового десктопа, да и то по внешним причинам (ну не складывается иногда что-то в сети или у хайпервайзорного железа). А лептоп постоянно живёт своей жизнью - накатывает обновления, активно что-то архивирует-дезархивирует, требует немедленной перезагрузки или просто отказывается работать, намекая, что без ребута дальнейшее сотрудничество проблематично. Естественно, открытые окна при этом пропадают, архивация тормозит все процессы, а перезагрузка занимает по 15 минут драгоценного рабочего времени.

А недавно винда вообще впала в детство. Давно уже я не видел ситуации, когда менюшка правого клика какого-нибудь приложения оставляла бы за собой на десктопе неудаляемую "висящую" строчку текста. И вот опять это вернулось. Сначала я наивно попытался позакрывать все окна - не помогло. Перезагрузился, немного поработал, правый клик и опять такая же фигня. Причем поверх VNC! Работать невозможно. Попробовал перезапустить Explorer - убил в списке процессов и запустил заново. Результат тот же. Но тут мне пришла в голову шальная мысль - а если просто вырубить тот десктоп? Включил-выключил монитор, лептоп недовольно перещелкнул видео туда-сюда и ... мерзкая строчка пропала! Ура, на хитрую жопу нашелся хитрый болт с левой резьбой. Майкрософт может продолжать своё мерзкое дело, он нам не страшен.
В далекие 90-е я учил язык пророков и писаний по книжке "Иврит хая". В ней каждый урок сопровождался учебным текстом, основанным на пройденной и новой лексике. Где-то ближе к середине там был урок, в котором приводилась классическая притча в стиле Талмуда: у бедного еврея не хватало места в доме, и по совету раввина он ... стал по очереди заводить в дом курей, овцу и козу. Когда стало совсем невмоготу раввин сказал: вот теперь выгони всех животных из дома. И действительно, никогда бедный еврей так свободно себя не чувствовал в собственном доме.

Вот так и сегодня - нечаянно открыл FB2-книжку нестандартной программой и ... всё сработало. Поигрался с остальными файлами - даже AVI открываются! Ура! Это значит, что очередное обновление Винды отменило проклятые драконовские меры и ассоциации файлов вернулись на место. Короче, жизнь-то налаживается, ЕВПОЧЯ :(
У меня был опыт общения с техподдержкой Майкрософт - они проявили себя как полные бараны и некомпетентные индюки.
И вот сегодня на рабочем лептопе я задолбался закрывать окошко нового приложения "Teams". По новой методе окошки теперь закрываются, но процесс остаётся и даже по Alt/Tab его можно получить. Шит! Ну ладно, подумал я, наверняка есть какая-то кнопка, закрывающее приложение намертво (помните: "у него ДОЛЖНА быть кнопка").
Пошел просить помощи у всеведущего гугла. И что я вижу? Майкрософтовский официальный суппорт пишет "Убейте его! Просто найдите, выследите и пристрелите. А потом выпотрошите ему кишки!". Ребэ, и это ответ?
Как я уже упоминал, на моём рабочем компе после очередного обновления винды перестали работать все "самодельные" ассоциации приложений по расширению файла. Вот такой лес, без деревьев. Офисные - пожальте, а всякие VNC, Пайтон, и медиафайлы - пошли на мороз. Хорошо хоть картинки через Пикасу открываются.

Погоревал я, и ... накатал скриптик. Ясное дело, работает он только из командной строки FAR, зато как работает! Просто загляденье. Итак, чтобы открыть автоматически ассоциированную программу надо в командной строке добавить имя бат-файла (для скорости названного AA.BAT) и закинуть ему через Ctrl+Enter файл в качестве аргумента. Всё, батничек вызывает через виндовую команду START интерпретатор Пайтона (специальную не-консольную версию) и он спокойненько открывает файл при помощи расписанного в собственной конфигурации приложения, будь то GIMP, MediaMonkey, SumatraPDF или VLC. Пара часов сидения за компом, и проблема решена, причём теперь я сам решаю, какое действие будет по умолчанию (опционально можно добавлять альтернативные действия, например "редактировать" или "распечатать").

Прикольно, но мне удалось даже решить проблему выдачи сообщений об ошибке. Я не стал чикаться с Tk под Пайтоном (технически это не сложно, но бессмысленно городить приложение ради окошка с сообщением об ошибке). Просто использовал универсальный "швейцарский нож виндовой автоматизации" - nircmd. Простой израильский парень Нир Сойфер объединил все самые часто используемые действия в сценариях работы с виндой в один экзешник. Просто прочитайте прилагаемый к нему хелп-файл и вы сходу начнёте выделывать всякие крутые штучки, не вдаваясь в хитрости программирования. У меня, например, на большом домашнем компьютере при помощи этой приблуды сделана иконка "перейти в спящий режим". Короче, будьте проще, и проблемы сами не захотят к вам приставать.

А остальные приложения я вообще положил в так называемую "панель" рядом с часиками виндовса. Просто добавил панельку правым кликом, назначив некую папочку в качестве контейнера, а потом в эту папочку накидал ярлыков нужных программ. Советую, очень удобно и работает на всех виндах.

Ну и чтобы вы не скучали, расскажу ещё одну байку, но для баланса - из мира Линуксов. ВПС получил как-то задачу: научить систему распаковывать архивы на экзотической платформе (Винда ARM64). Решение было простым - использовать пайтоновскую библиотеку, которая распаковывает хоть чёрта лысого, независимо от операционки и типа процессора. И вот, через месяц, у линуксовых групп начались проблемы: тот самый скрипт падает на распаковке архива. Что за ёперный балет, подумал я, - у всех работает, а у них - падает. Начал копать, посмотрел сообщение об ошибке и о...бомлел: архив содержал некорректные симлинки! Открываю его через less - действительно сплошные линки на самого себя, кому же такое понравится? Впрочем, штатный tar раскрывал такой архив без проблем. Пришлось искать виноватых и наказывать непричастных. Оказалось, что при создании архива tar получил очень противоречивые аргументы - одна и та же папочка упоминалась дважды. Что же сделал этот *** умник? Создал внутри архива линки на самих себя!!! Реально, попробуйте запаковать через tar директорию и тут же вместе с ней - её поддиректорию. Получите того самого монстра. И пусть на распаковке падал только старый Пайтон2, всё равно, история не из приятных.