• Хабр: Как я создал собственный алгоритм YouTube (чтобы не тратить время впустую)

    Взято отсюда



    Побег от алгоритма YouTube


    Я люблю смотреть видео на YouTube, осязаемым образом улучшающие мою жизнь. К сожалению, алгоритм YouTube с этим не согласен. Он любит кормить меня кликбэйтом и прочим мусором.

    Всё это неудивительно: алгоритм отдаёт приоритет кликам и времени просмотра.

    Поэтому я поставил перед собой задачу: Смогу ли я написать код, который автоматически будет находить ценные видео, избавив меня от привязанности к алгоритму YouTube?

    Вот так всё и началось.

    Оптимально выстроенные планы


    Я начал с визуализации того, что должен делать мой инструмент. Мне нужна была программа, которая будет (i) ранжировать видео на основании вероятной релевантности для меня и (ii) автоматически отправлять мне предлагаемые видео, из которых я смогу выбирать.

    Я решил, что смогу серьёзно повысить продуктивность, если буду пакетно выбирать наборы видео для просмотра на каждую неделю и избавлюсь от необходимости бесконечного скроллинга YouTube.

    Остальное - под катом.



  • Автокурицы и водятлы

    Казалось бы - чего завелся-то? Объявление как объявление...

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

    Но дело даже не в этом. Если бы новость была про презентацию новой модели бабского автомобильчика, то еще куда ни шло. Но тут новость про ДТП, совершённое тупой курицей, которую называют "автоледи". Хочу предложить правильный вариант заголовка:



  • Подводные камни WebDav #2

    В продолжение темы "Подводные камни WebDav". Скрипт подключения работает, и как бы все нормально, но раздражает 2 вещи:

    1. При работе скрипта открывается несколько дополнительных окошек, которые мозолят глаза
    2. После монтирования диска он виден в консоли и в Far manager, но в проводнике появляется примерно через минуту

    Первый вопрос решился так:

    start "" powershell -command "&{start-process -filepath C:autoloadWC_register.cmd -windowstyle hidden -verb RunAs}" %*

    Теперь новые окошки запускаются в свернутом виде и не мешают работе.

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

    taskkill /F /IM explorer.exe
    start explorer

    P.S. Визивиг опять похерил обратный слэш. Путь к файлу надо поправить.



  • Подводные камни WebDav

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

    Возникла следующая проблема - одной из полезных функций сервера является то, что облачную папку можно подключить по WebDav, как сетевой диск. И тут проблем как бы нет, но Windows (в моем случае, 10) после перезагрузки не подключает диск автоматически. Я не глубокий специалист в этом, но тем не менее заметил несколько моментов:

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

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

    Одним файлом сделать пока не получилось, и вот почему: 

    • когда мы размонтируем или монтируем диск, эта команда должна выполняться от имени обычного пользователя. Если выполнить ее, как администратор, то пользователь этот диск не увидит
    • перезапуск службы, напротив, должен запускаться с правами админа, так же как и работа с реестром (именно так я собирался добавлять скрипт в автозагрузку)

    Файл connect.cmd, который будет добавляться в автозагрузку:

    @echo off
    net use Y: /delete
    start "" powershell -command "&{start-process -filepath C:autoloadWC_register.cmd -verb RunAs}" %*
    :LOOP
    ping -n 1 mynextcloudhost.ru | find "TTL=" >nul
    if errorlevel 1 (
    ping 127.0.0.1 -n 10 > nul & goto LOOP
    ) else (
    start "" powershell -command "&{start-process -filepath C:autoloadWC_restart.cmd -verb RunAs}" %* & goto connect
    )
    :connect
    Set Login=User121
    Set Password=jkhe3re#
    net use Y: https://mynextcloudhost.ru/remote.php/dav/files/%Login% /user:%Login% %Password% /persistent:no
    if errorlevel 1 ping 127.0.0.1 -n 10 > nul & goto connect

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

    В самом начале демонтируется том Y, если он подключен. Запускается скрипт WC_register.cmd, в котором я сделал проверку, есть ли наш скрипт в автозагрузке. Если нет, добавляем в реестр нужную запись. Скрипт запускается с правами администратора.

    Файл WC_register.cmd:

    @echo off
    For /F "tokens=1" %%a in (′reg query "HKLMSOFTWAREMicrosoftWindowsCurrentVersionRun" /v "Netcloud"′) do set regpath=%%a
    If DEFINED regpath ( exit ) Else (
    reg add "HKLMSOFTWAREMicrosoftWindowsCurrentVersionRun" /v Netcloud /t REG_SZ /d "C:autoloadconnect.cmd"
    )
    exit

    Потом мы в цикле пингуем наш хост, пока не добьемся успеха. В этом случае мы вызываем (опять же с правами админа) скрипт WC_restart.cmd, который перезапускает WebClient и передаем выполнение скрипта подпрограмме connect.

    Файл WC_restart.cmd:

    @echo off
    net stop webclient
    net start webclient
    exit

    Потом заново монтируется сетевой диск на томе Y.

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

    P.S. Визивиг режет обратный слэш ( Внимательней с урлами и путем к реестру.



  • С Хабра: Разрабы работают медленно и дорого — и люди считают нас лентяями. Просто в разработке всё сложно

    Взято отсюда.

    — Люди не из индустрии вечно не понимают программистов: что они там такое сложное делают, если видно только две кнопки? Что за непонятные слова говорят? Почему так много получают?

    Вместе с парнями из подкаста «Мы обречены» решили с этим разобраться и запустили совместную рубрику, где будем объяснять, почему в разработке всё так сложно. А для тех, кто любит читать, а не слушать, парни написали эту статью.

    Знаете такое чувство, когда вдруг понял, что работаешь уже целый год, хотя идея проекта была простой? Вас пять разработчиков, четыре тестера, проджект и продакт-менеджеры. Ты смотришь на получившееся ПО, и думаешь — ну что мы могли так долго делать? Пять основных фич, три десятка маленьких — нормальному инженеру на неделю работы.

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

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

    Нам всем приходится работать с не-инженерами, для них вся сложность существует только на наших словах — другого способа осознать её у них просто нет. И, конечно же, нам вечно не верят. Как будто нам не хватает собственного синдрома самозванца?!

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

    — Почему ты всегда всё делаешь в два раза дольше, чем обещаешь?

    — Потому что создатели Agile не верят, что можно делать что-то больше недели. Вот и говорю, во что поверят.

    А если серьёзно: детали не видны изначально, всегда кажется, что сделать надо немного, и получится быстро. Уже в процессе работы натыкаешься на кучу нюансов, иногда, пока делаешь задачу, требования меняются. Пока работаешь ты — над тем же проектом работают ещё пять человек, и часто их изменения означают дополнительную работу для тебя.

    Бывает, что в процессе работы вообще понимаешь — задачу выполнить невозможно. Но самая жесть в том, что очень часто ты понимаешь — работы над задачей вагон, но если скажешь это менеджеру, он будет требовать, чтобы ты объяснил ему, почему. А это ещё одна гигантская задача — объяснить так, чтобы было понятно и не выглядело, как отмазка.

    Продолжение - под катом.



  • Отключение сетевого диска, подключенного по WebDAV

    Бывает иногда такая проблема.. В общем-то, это даже не только для WebDAV, а, думаю, для всех сетевых подключений с авторизацией. Один раз залогинились - поставили галочку "сохранить пароль" - и все, при следующем создании ссылки на ресурс будет логиниться с той же учетки. Как сбросить?

    Заходим в панель управления, ищем "Диспетчер учетных данных" -> "Учетные данные Windows" -> ищем и удаляем сохраненные данные.

    Не забыть перезагрузить винду.



  • Как определить местоположение пользователя, не спрашивая разрешение на геолокацию?

    Конечно, самый удобный способ узнать, где торчит пользователь, использовать свойство navigator.geolocation. Правда, при этом браузер обязательно спросит его разрешения. Лично я почти всегда отказываюсь, только если зашел на проверенные сайты строительных супермаркетов или дискаунтеров типа Ситилинк. Значит, этот способ будет работать с малой эффективностью - данное окошко вызывает подозрение, и, впрочем, оно подозрительное и есть. Как избавиться?

    1. Нельзя, это часть интерфейса браузера.
    2. Попап выводится в тот момент, когда вы из своего кода вызываете Geolocation.getCurrentPosition() или Geolocation.watchPosition(), если данная страница еще не получила разрешение/отказ.
    3. 3. В вышеупомянутые методы вы передаете два коллбека, на успех и на ошибку. Определить, какую кнопку юзер нажал можно только косвенно исходя из результата.
    4. Дело в том, что спецификация определяет только API, доступное программисту из JS, а как это выглядит со стороны пользователя - личные фантазии браузерописателей. Где-то попап, где-то галочки в настройках, где-то надо с бубном сплясать. Поэтому никаких гарантий про кнопки дать нельзя.
    5. Если navigator.geolocation является false, значит у пользователя не поддерживается геолокация (например, старый браузер или еще что-то).

    Так что делать?? Неужели все-таки придется напрягать пользователя окошком подтверждения? Есть еще один вариант.

    API Yandex Maps позволяет определять координаты пользователя, используя свои сервисы. Код довольно простой. Подключаем Yandex Api со своим ключом, и пишем в коде:

    var location = ymaps.geolocation.get();

    // Асинхронная обработка ответа.
    location.then( function(result) {
    // Добавление местоположения на карту.
    myMap.geoObjects.add(result.geoObjects)
    }, function(err) {
    console.log(′Ошибка: ′ + err)
    } );

    В свойстве result.geoObjects.position - координаты местонахождения пользователя.

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

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





Загрузка...

Войти на сайт

Регистрация