Как переместить файлы Bluestacks (эмулятор Андроид) на другой диск

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

Итак делаем следующие шаги:

  1. Закрываем Bluestacks
  2. Перемещаем файлы например из изначальной папки D:\Programs в новую F:\Program Files\Bluestacks
  3. Открываем консоль (открываем стартовое меню, находим cmd и запускаем от имени администратора, если нужно)
  4. Создаём ссылку:
mklink /D /J D:\Programs\Bluestacks "F:\Program Files\BlueStacks"

Результат:

Junction created for D:\Programs\Bluestacks <<===>> F:\Program Files\BlueStacks

Ссылки:

  1. https://android.stackexchange.com/questions/140598/how-can-i-copy-program-files-bluestacks-folder-to-another-drive
  2. https://www.bluestacks.com/

Linux, команда для траблшутинга загрузки I/O подсистемы

Быстрая заметка. Иногда случается что дисковая I/O подсистема чем-то сильно нагружена и не понятно, каким именно процессом. В определении виновника может помочь следующая команда:

top -b -n 1 | awk '{if (NR <=7) print; else if ($8 == "D") {print; count++} } END {print "Total status D (I/O wait probably): "count}' > topsave.txt

Bluetooth клавиатура для Android.

В общем, приобрел на AliExpress клавиатурку для телефона kemile Russian Language Wireless Bluetooth 3.0 keyboard. Цель была – иметь компактную, но при этом функциональную клавиатуру для путешествий или поездок, которую можно подключить к смартфону на базе ОС Android для работы в консоли, удалённого администрирования и т. п.

Работает через блютуз БЕЗ адаптера.

Клавиатура оказалась довольно приятная при наборе текста – как у ноутбуков.

Питается от двух батареек ААА. Для моих задач это лучше, чем от встроенного аккумулятора. Потому что можно не боятся, что аккумулятор убьётся (китайский же) или разрядится быстро. Вставил две батарейки, которые можно купить где угодно (или аккумуляторы формата ААА) – и работай когда это нужно.

Подключается по блютуз к девайсам на ОС андроид, iOS, Windows.

Но конечно же, как и с большинством китайских девайсов, без танцев с бубном не обошлось. Эти танцы заключались в переключении раскладки клавиатуры. В комментариях к товару было много вариантов, у меня (ОС Андроид 9) заработал следующий:

Чтобы переключать языки надо зайти в настройки устройства и найти там пункт «Язык и ввод». Там найти раздел «Физическая клавиатура» (если клавиатура отключена, он в настройках не появится), а в нем пункт «Выбор раскладки клавиатуры». Нужно отметить русскую и английскую (США) раскладки, после чего можно будет переключать раскладку по нажатию Ctrl + Пробел. 

Из других вариантов, что у меня не заработали: Command (Win) + Пробел

Также должен отметить, что раскладка у меня на телефоне чуть не совпадает. К примеру,

  • клавиша Delete это Backspace на самом деле
  • клавиша ?/ (возле правого шифта) набирает ‘|’, почему-то ‘&’ с зажатым шифтом, а с зажатой кнопкой Fn – долгожданный ‘/’. Это в англ раскладке. В русской печатает то, что написано, плюс ‘.’ с зажатым Fn.
  • значек $ не на 4ке, а на 8ке в англ раскладке. в русской всё норм.

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

Creative Audigy 2 нет звука на Windows 10 1903/1909

Приветствую. Пользуюсь звуковой карточкой Creative Audigy 2 (SB0240). Несмотря на то что звуковой карте уже лет и памяти, звук в ней очень классный – сочные басы и хорошая четкость и разборчивость звучания. На голову лучше встроенных в материнские платы звуковых чипов.

Кстати, этот гайд должен подойти и к карточке Creative Audigy 2 ZS, но насчёт Creative Audigy 2 SE я не уверен, т к это урезанная версия и у неё другие драйвера.

Всё было отлично, но после обновления Windows 10 на версию 1903 (тоже самое будет и с 1909) перестала работать эта звуковая карта. После поиска решения, у меня заработало следующее:

1. Сначала удалите все драйвера для звуковой карты.

Есть альтернативный пак драйверов от энтузиаста (Daniel_k), который можно найти [здесь]. Скачиваем этот драйвер пак и распаковываем. В папке KillDrvX запускаем KillDrvX.exe от Администратора и убиваем старый драйвер, чтобы можно было полностью его деинсталлировать.

Затем удаляем драйвера из Панели управления -> Программы и компоненты или путём запуска инсталлятора и выбора пункта Деинсталляции) и затем само устройство из Диспетчера Устройств.

Затем перезагружаем ПК.

2. Переходим в папку с драйвер паком, скачанным ранее, и запускаем инсталляцию тип Full Installation или можно Custom и отметить что вам нужно (можно ставить всё, кроме софта Dolby – он платный). Крайне желательно ничего не делать в это время и не дёргать компьютер. Если во время установки будет ругаться, что не может создать ярлыки, то кликаем Пропустить/Игнорировать – ничего страшного в этом нету, создадим ярлыки потом сами (Ctrl+Shift+Перетаскивание исполняемого файла из папки, куда установится драйвер пак – по-умолчанию это C:\Program Files (x86)\Creative\SBAudigy2 и там в подпапках есть Эквалайзер и прочие утилиты).

Перезагружаем ПК, когда инсталлятор попросит, и проверяем звук.

3. Если звука по прежнему нет (как и было в моём случае), то нам нужно “подкормить” операционной системе файл драйвера от производителя.

Для этого скачиваем драйвер [Отсюда]. Вводим капчу и открываем скачанный файл в архиваторе (7-zip к кпримеру) и распаковываем. Папка будет что-то вроде “SBA5_PCDRV_L11_3_01_0056B”.

Переходим в поддиректорию Audio -> DriversWin10 -> wdm. Находим файл “wdma_emu.inf“, щелкаем правой кнопкой мыши и в контекстном меню выбираем Установить (Install).

Перезагружаемся и наслаждаемся хорошим звуком.

Ссылки:

  1. https://answers.microsoft.com/en-us/windows/forum/all/no-sound-after-windows-10-update-1903-or-1909-but/9abd44d2-bf95-46f9-ade3-55b8fc798f29
  2. http://danielkawakami.blogspot.com/2017/01/sb-audigy-series-support-pack-62.html
  3. https://support.creative.com/downloads/download.aspx?nDownloadId=100229

Предыдущий рабочий день в python

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

import datetime, time
lastBusDay = datetime.datetime.today()
shift = datetime.timedelta(max(1,(lastBusDay.weekday() + 6) % 7 - 3))
lastBusDay = lastBusDay - shift

Т. е. мы получаем, например, вторник в среду. А в субботу, вск и Пн мы получим пятницу. Далее можно преобразовать дату в нужный нам формат и пользоваться:

date = lastBusDay.strftime('%Y%m%d')

Python скриптинг: как зайти на FTP или FTPS

Бывает нужно что-то скачать/загрузить на удалённый сервер FTP или FTPS (не путать с SFTP) в скрипте на пайтоне.

Подключаем необходимые библиотеки:

from ftplib import FTP_TLS
from ftplib import FTP

Задаём параметры подключения к FTP хосту:

host = "some_ftp.com"
port = 21
username = "username"
password = "password"

Подключаемся к обычному FTP (в примере скачиваем файл на диск):

ftp = FTP(host)
ftp.login(username, password)
try:
    handle = open('/path_to_local_file/filename', 'wb')
    ftp.retrbinary('RETR /path_to_remote_file/filename, handle.write)
    handle.close()
except:
    pass
ftp.quit()

Все команда нужно указывать по спецификации FTP протокола, например такой.

Осовные команды:
RETR – получить файл с FTP в переменную или по хендлеру записать в локальный файл;
LIST – показать список файлов/директорий в указанной или текущей по-умолчанию;
NLST – то же, что и LIST, но возвращает только имена файлов/директорий;
STOR – загрузить с презаписью файл на FTP-сервер;
и другие

Подключение к FTPS выполняется схожим образом:

try:
    handle = open('/path_to_local_file/filename', 'wb')
    ftps = FTP_TLS(host)
    ftps.login(username, password)
    ftps.prot_p()
    ftps.retrbinary('RETR /path_to_remote_file/filename', handle.write)
    ftps.quit()
    handle.close()
except:
    pass

Для работы FTP_TLS нужен пайтон 2.7+, если у вас только 2.6, то придётся сделать одно из следующего:
1. Доустановить пайтон 2.7, например как описано здесь для Oracle Linux 6:

Редактируем /etc/yum.repos.d/public-yum-ol6.repo и убеждаемся, что enabled=1 в следующем параграфе:

[ol6_software_collections]
name=Software Collection Library release 3.0 packages for Oracle Linux 6 (x86_64)
baseurl=http://yum.oracle.com/repo/OracleLinux/OL6/SoftwareCollections/x86_64/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1

Далее выполняем команды от рута/судо:

yum install scl-utils
yum install python27
source /opt/rh/python27/enable
python --version

Если при запуске скрипта по cron (а скорее всего так и будет) выбивает ошибку вида:

error while loading shared libraries: libpython2.7.so.1.0: cannot open shared object file: No such file or directory

То необходимо добавить путь к библиотеке в /etc/ld.so.conf и запустить команду ldconfig, которая сама всё пропишет.

или

2. Cкачать дистрибутив пайтона 2.7 отсюда и вытащить фал ftplib.py и положить его в папку со скриптом (если скрипт запускается по cron, то это может не сработать):

wget http://www.python.org/ftp/python/2.7.1/Python-2.7.1.tgz
tar -zxvf Python-2.7.1.tgz Python-2.7.1/Lib/ftplib.py
cp Python-2.7.1/Lib/ftplib.py /path_to_script/

или

3. Заходить на FTPS вызывая bash команды например lftp с помощью модуля subprocess.

Ссылки:

  1. https://docs.python.org/3/library/ftplib.html
  2. https://stackoverflow.com/questions/11573817/how-to-download-a-file-via-ftp-with-python-ftplib
  3. https://stackoverflow.com/questions/20842732/libpython2-7-so-1-0-cannot-open-shared-object-file-no-such-file-or-directory
  4. https://docs.cloudera.com/documentation/enterprise/6/6.0/topics/install_python_27.html