fuel resolution

This commit is contained in:
2022-10-09 04:03:03 +03:00
parent f0fdfcc0af
commit 10248c63a3
6 changed files with 61 additions and 0 deletions

View File

@@ -0,0 +1,51 @@
---
title: "NO_COLOR в Crystal"
date: 2022-07-26T18:23:31+03:00
draft: false
tags: [crystal]
---
В Crystal 1.5.0 появилась поддержка `NO_COLOR`.
Спасибо [@didactic-drunk](https://github.com/didactic-drunk).
[Пулл-реквест #11984](https://github.com/crystal-lang/crystal/pull/11984).
Чувак реализовал в библиотеке `Colorize` поддержку `NO_COLOR` без лишних телодвижений для разработчика.
`NO_COLOR` это вроде движения, стандарт который урегулирует тенденцию добавления
в утилиты цветного выхлопа в консоль.
Сайт проекта — [https://no-color.org/](https://no-color.org/).
## Кратко о том, как это работает
ПО, которое по умолчанию добавляет цвет ANSI к своим выводам,
должно проверять наличие переменной среды `NO_COLOR`.
Если она присутствует, а не является пустой строкой (независимо от ее значения),
предотвращает добавление цвета ANSI.
Приняв этот стандарт, пользователи, предпочитающие вывод обычного,
неокрашенного текста, могут установить одну переменную среды в своей оболочке,
чтобы она автоматически влияла на все поддерживаемое ПО.
> Яндекс перевод, ага...
## Пример
По умолчанию вывод команды ниже будет пуст.
```sh
printenv | grep NO_COLOR
```
Значение `NO_COLOR` может быть любым, но не пустым.
```sh
export NO_COLOR=1
printenv | grep NO_COLOR
NO_COLOR=1
```
## Скриншоты
![default](pmng_color.png)
![with_no_color](pmng_nocolor.png)

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

View File

@@ -0,0 +1,61 @@
---
title: "Установка разрешения экрана в FUEL"
date: 2022-10-09T04:00:00+03:00
draft: false
tags: [games, tips]
---
## Вкратце об игре
[FUEL](https://en.wikipedia.org/wiki/Fuel_(video_game)) —
компьютерная игра с открытым миром разработанная студией Asobo Studio
и была выпущенная в 2009 году.
Издатель Codemasters открестилась от неё, удалила со всех площадок
и все упоминания на своём сайте.
## Проблемы с разрешениями
В Steam игра запускается из файла `GameSetup.exe`, который представляет
из себя подобие лаунчера, где можно настроить графику.
В самой игре настроек для видео нет.
![](/content/images/2022/fuel-launcher.png)
Максимальное доступное в нстройках разрешение экрана — 1920x1080.
## Запуск в окне
Для запуска игры в окне, а также для запуска игры без лаунчера, можно
воспользоваться исполняемым файлом `SecuLauncher.exe`.
Чтобы это всё ещё работало в Steam, необходимо переименовать `GameSetup.exe`
в `GameSetup.exe.bak`, а `SecuLauncher.exe` в `GameSetup.exe`.
Для старта игры в окне, необходимо добавить параметр запуска `-W` (заглавная).
![](/content/images/2022/fuel-steam.png)
## Widescreen, 4K, Ultra/Super-Wide
В сети есть замечательный ресурс [wsgf.org](https://www.wsgf.org/dr/fuel),
цель которого собирать данные о поддержке играми различных разрешений экрана,
а также сбор руководств и утилит для реализации поддержки других разрешений.
Изменений разрешения экрана реализовано через реестр Windows.
Для этого необходимо исправить параметр `VideoResolution`
по пути `HKEY_CURRENT_USER\Software\Fuel`.
Вот список разрешений:
* 3840x800 — `3200f00`
* 3840x1024 — `4000f00`
* 5040x1050 — `41a13b0`
* 2560x1080 — `04380A00`
* 3440x1440 — `05A00D70`
У меня в **Windows 11** путь был таким:
```text
HKEY_USERS\<АБРАКАДАБРА>\Software\FUEL
```

View File

@@ -0,0 +1,16 @@
---
title: "Minecraft Scoreboard"
date: 2022-07-09T02:16:01+03:00
draft: true
tags: [games, minecraft]
---
```
/scoreboard objectives add objTotalDeath deathCount Всего смертей
/scoreboard objectives add objTotalKill totalKillCount Всего убийств
/scoreboard objectives setdisplay list objTotalDeath
/scoreboard objectives setdisplay sidebar objTotalKill
/scoreboard objectives remove <name>
/scoreboard objectives setdisplay <slot> [objective]
```

View File

@@ -0,0 +1,116 @@
---
title: "Получаем размер загружаемого файла на Python"
date: 2022-09-16T01:08:53+03:00
draft: false
tags: [python, tips]
---
### Введение
Многие пишут грабберы сайтов на Python.
Я вот например [скачиваю](#) сиськи с [blog.stanis.ru](http://blog.stanis.ru/).
Но иногда, требуется проверить, не загружен ли файл уже, до того как его скачать.
Способов сравнения файлов существует достаточное количество,
но в рамках этого руководства я рассмотрю способ сравнения файлов по их размеру.
### Получение размера локального файла
В стандартной библиотеке Python, есть функция `getsize()` в модуле `os.path`.
```python
import os.path
if __name__ == '__main__':
file_size = os.path.getsize("./avatar.png")
print("Size: {0} ({1})".format(file_size, type(file_size)))
```
Программа вернёт следующий результат:
```text
Size: 14390 (<class 'int'>)
```
Однако не стоит забывать, что файла может и не быть.
По этому лучше проверять такие ситуации.
```python
os.path.exists("./avatar/png")
```
### Получение размера удалённого файла
Для работы с HTTP,
я использую модуль [requests](https://requests.readthedocs.io/en/latest/index.html).
Каждый web-сервер, возвращает заголовки, в которых может быть полезная информация.
Для примера, получим заголовки файла [аватара](https://iiiypuk.me/avatar.png) на моём сайте.
```python
import requests
response = requests.get("https://iiiypuk.me/avatar.png")
print(response.headers)
```
Вывод будет следующий:
```text
{
'Server': 'nginx/1.20.2',
'Date': 'Thu, 15 Sep 2022 22:14:41 GMT',
'Content-Type': 'image/png',
'Content-Length': '14390',
'Last-Modified': 'Fri, 08 Jul 2022 11:23:06 GMT',
'Connection': 'keep-alive',
'Accept-Ranges': 'bytes'
}
```
Нас интересует заголовок `Content-Length`.
```python
print(response.headers['Content-Length'])
# Выхлоп: 14390
```
Сравнение до боли простое:
```python
import os.path
import requests
if __name__ == '__main__':
local_size = os.path.getsize("./avatar.png")
response = requests.get("https://iiiypuk.me/avatar.png")
remote_size = int(response.headers['Content-Length'])
if local_size != remote_size:
print("Файлы разные")
print("Локальный размер: {0}\nУдалённый размер: {1}".format(
local_size, remote_size))
else:
print("Файлы одинаковые")
```
Обрати внимание, что `response.headers['Content-Length']` возвращает значение
строкой, а не целым числом.
### ВСЁ!
Можно скачивать файл.
```python
import shutil
import requests
response = requests.get("https://iiiypuk.me/avatar.png", stream=True)
with open("./file.png", "wb") as out_image:
shutil.copyfileobj(response.raw, out_image)
```