Наповнюємо «флягу» функціоналом. Flask

Минулого року вирішив собі впритул познайомитися з Python, а потім перебратися на нього з PHP. На Наразімій шлях - веб-розробка, а тому освоювати нова мовая почав саме з боку Інтернету, зокрема, з огляду доступних фреймворків та проектів на них. Познайомившись із можливостями TurboGears, web2py, Django, я все-таки піддався «тренду» і поринув у світ Django.

Протягом майже року я чесно намагався потоваришувати з ним. Написав кілька простеньких проектів, але монструозність фреймворку відлякувала, велика кількість «батарейок» плутало вибір, а з деякими обмеженнями не хотілося миритися. Душа вимагала лаконічності та однозначності, що зрештою призвело мене до знайомства з Flask. Вивчивши документацію з фреймворку та суміжних проектів (Jinja2, Werkzeug), я перейнявся ідеологією і став впритул вивчати фреймворк.

Flask позиціонується як мікрофреймворк, що розширюється. Це означає наявність лише необхідного мінімуму функціоналу, але водночас можливість додати його у вигляді розширень до необхідного проекту рівня.

Цей епос - це мій досвід під використанні Flask і розширень для нього, а точніше, спроба зібрати воєдино і російською те, що може стати в нагоді при створенні проектів практично будь-якого рівня.

Структура та конфігурація

Для кожного проекту я тримаюсь типової структури, описаної нижче. Все досить тривіально та знайоме програмістам Django:

App/ --commands/ --migrations/ --static/ --templtaes/ --app.py --config.py --forms.py --manage.py --models.py --views.py

  • Каталог commandsмістить команди для обслуговування програми, що підключаються до модуля manage.py.
  • Каталог migrations- файли та конфігурацію міграцій. Зазвичай створюється автоматично під час ініціалізації міграцій.
  • Каталог static- ресурси проекту: js, css, scss та картинки.
  • Каталог templates- Шаблони.
  • Файл app.py- це головний модуль програми, де визначаються основні налаштування та реєструються розширення, він реалізує і веб-сервер.
  • Файл manage.pyслужить управління та обслуговування проектом.
  • Файл config.pyмістить об'єкт конфігурації програми. Зазначу, що Flask можна конфігурувати у різний спосібАле мені найбільш зручним здався спосіб на основі об'єктів. У спрощеному вигляді вміст файлу виглядає так:

    config.py

    import os basedir = os.path.abspath(os.path.dirname(__file__)) class Config(object): DEBUG = False CSRF_ENABLED = True WTF_CSRF_SECRET_KEY = "dsofpkoasodksap" SECRET_KEY = "zxczxasdsad" SQLALCHEM webuser: [email protected]/webuser_db" class ProductionConfig(Config): DEBUG = False class DevelopConfig(Config): DEBUG = True ASSETS_DEBUG = True


    А його застосування так:

    app.py

    app.config.from_object("config.DevelopConfig")

Для великих проектів офіційна документація рекомендує дробити функціонал на так звані blueprints- модулі, структурно схожі на програму Flask, а сам проект організовувати в пакет python. Але сьогодні не про це.

Розширення

Flask-SQLAlchemy

Будь-яка серйозна програма використовує бази даних. Дане розширення дружить Flask з найпопулярнішою на Python ORM-бібліотекою - SQLAlchemy, дозволяючи використовувати будь-які СУБД, що підтримуються їй, а також відображення таблиць в об'єкти Python, аналогічно Django. Втім, SQLAlchemy дозволяє обійтися без ORM.

Використання

# config.py class Config(object): ... # визначаємо DSN у конфігурації SQLALCHEMY_DATABASE_URI = "mysql+mysqlconnector://webuser: [email protected]/webuser_db" # app.py # імпортуємо розширення from flask.ext.sqlalchemy import SQLAlchemy # ініціалізуємо об'єкт БД db = SQLAlchemy(app) # models.py from app import db # Модель User - відображення таблиці users у БД class User(db. Model): __tablename__ = "users" id = db.Column(db.Integer, primary_key=True) email = db.Column(db.String(120), unique=True, nullable=False) password = db.Column(db .String(255))


Документація: pythonhosted.org/Flask-SQLAlchemy

Flask-Script

Додає підтримку обслуговуючих проект скриптів: запуск dev-сервера, міграції баз даних, cron-завдання тощо. Дотримуючись рекомендацій, я створюю для кожного проекту файл manage.py, де додаються всі необхідні обслуговування команди. За замовчуванням доступна команда runserver. Запуск команд здійснюється так:

$ python manage.py command $python manage.py runserver $python manage.py db migate
Додати команду можна, наприклад, реалізувавши нащадок класу Command, що входить у пакет, та зареєструвавши її в менеджері. Команда може містити дії (підкоманди), їй можуть передаватись параметри командного рядка.

manage.py

from flask.ext.script import Manager from flask.ext.migrate import Migrate, MigrateCommand from app import app, db from models import * migrate = Migrate(app, db) # Ініціалізуємо менеджер manager = Manager(app) # Реєструємо команду, реалізовану у вигляді нащадка класу Command manager.add_command("db", MigrateCommand) if __name__ == "__main__": manager.run()


Документація: flask-script.readthedocs.org/en/latest

Flask-Migrate

Дозволяє настроїти міграцію для ORM SQLAlchemy. Пакет надає клас MigrateCommand, який можна використовувати у зв'язці з вищеописаним розширенням Flask-Script. Для використання міграцій необхідно підключити команду (приклад вище), провести початкову ініціалізацію, виконавши manage.py db init, потім використовувати дії migrate, upgrade та downgrade цієї команди для управління міграціями. Слід зазначити, що список дій для команди та їх короткий описможна отримати, виконавши manage.py db help.

Flask-WTF

Реалізує прив'язку до WTForms – чудової бібліотеки для роботи з формами. Знову ж таки, є аналогія з Django. У коробці: солідний набір класів полів та валідаторів для них, успадкування, вкладені форми та багато іншого.

forms.py

from flask_wtf import Form from wtforms import StringField, PasswordField, TextAreaField, SelectField from wtforms.validators import Email, DataRequired, EqualTo class LoginForm(Form): email = StringField("E-mail", validators=) , validators=) class RegistrationForm(LoginForm): password_repeat = PasswordField("Повторіть пароль", validators=)


Також є розширення wtforms-alchemy для створення форм на основі моделей SQLAlchemy. Натрапив на нього зовсім недавно, тому досвіду роботи поки що немає. Втім, думаю, і тут застосовна аналогія з Django.

Flask-Login

Додає базову підтримку авторизації та сесій користувача. Підключення даного розширення вимагає досить багато дій, тому спробую бути максимально лаконічним та пропущу реалізацію входу та виходу користувачів.

Використання Flask-Login

# app.py # підключаємо плагін from flask.ext.login import LoginManager, current_user # Ініціалізуємо його і задаємо дію "входу" login_manager = LoginManager() login_manager.init_app(app) login_manager.login_view = "login" # Задаємо обробку по Id, або None. Тут користувач запитує з бази. @login_manager.user_loader def load_user(userid): from models import User return User.query.get(int(userid)) # Задаємо обробник before_request, в якому додаємо до глобально-локального контексту поточного користувача @app.before_request def before_request(): g.user = current_user # models.py class User(db.Model): __tablename__ = "users" id = db.Column(db.Integer, primary_key=True) email = db.Column(db.String(120), unique =True, nullable=False) password = db.Column(db.String(255)) # Розширенням пред'являються деякі вимоги до класу User, а саме реалізація наступних методів def is_authenticated(): return True def is_active(): return True def is_anonym (): return False def get_id(self): return str(self.id)


Документація: flask-login.readthedocs.org/en/latest

Flask-Bcrypt

Додає функціонал для хешування та перевірки паролів.

models.py

from flask.ext.bcrypt import generate_password_hash, check_password_hash class User(db.Model): ... def check_password(self, password): return check_password_hash(self.password, password) @staticmethod def hash_password(pass )

Flask-Assets

Дружить Flask з бібліотекою webassets, дозволяючи неймовірно витончено працювати з ресурсами проекту. Вміє об'єднувати ресурси в пакети, компілювати scss(sass) та less, мініфікувати js та css та зручно підключати їх у шаблонах.

Використання

# app.py # Підключаємо from flask.ext.assets import Environment, Bundle assets = Environment(app) # Формуємо та реєструємо пакети js = Bundle("jquery.js", "jquery.file-upload.js", filters=" jsmin", output="assets/jquery-min.js") css = Bundle("main.css", "form.css", "flashes.css", filters="cssmin", output="assets/all- min.css") assets.register("js_all", js) assets.register("css_all", css) # templates/index.html (% assets "js_all" %)(% endassets %) (% assets "css_all" %) (% endassets %)


Вказавши в пакеті (Bundle) параметр filters, ми змусимо пропустити файли пакета через фільтр(и). У нашому випадку файли мініфікуються та об'єднуватимуться в один. Деякі фільтри вимагатимуть встановлення додаткових python-модулів.

Якщо в конфігурації заданий параметр ASSETS_DEBUG = True, файли пакетів не будуть пропускатися через фільтри і склеюватися, а в шаблоні для кожного файлу буде згенерований окремий url.

P.S. При досить великій кількості ресурсів, слід винести функціонал формування пакетів (Bundle) та його реєстрації в окремий файл - наприклад, assets.py.

Flask-DebugToolbar

Яка технологія обійдеться без зручного дебаггера? Розширення додає debug-панель, портовану Django, з вичерпною інформацією про запит. Панель відображається при заданому конфігурації параметрі DEBUG = True.

app.py

# config.py class Config(object): ... # Задаємо токен для генерації cookie SECRET_KEY = "xv3gavkxc04n3mzx7oksd6q" # app.py # Підключаємо from flask_debugtoolbar import DebugToolbarExtension # Реєструємо dbar


Документація: flask-debugtoolbar.readthedocs.org/en/latest

Замість ув'язнення

У статті представлені розширення, які мені довелося використати у своїх проектах, проте це далеко не повний списокте, що вже існує для Flask. Вичерпніший список актуальних розширень представлений на офіційному сайті фреймворку за посиланням flask.pocoo.org/extensions.

Доповнення

Користувач вказав на проект скелета програми на Flask, в якому включено багато описаних розширень, а також кешування Flask-Cache, тема на bootstrap3, а сам скелет оформлений у вигляді пакету python і використовує blueprints. Дуже придатна річ. ;-)

Існувала безліч варіантів використання фляг. Незважаючи на те, що основним її призначенням, безперечно, було перенесення води, винахідливі солдати змогли пристосувати цей базовий елемент спорядження для транспортування інших субстанцій. Цілком очевидно, що в неї можна було налити молоко, сидр чи патоку. У ряді випадків, що ще більш передбачувано, військові бачили у флягах вкрай зручну тару для прихованого носіння рідин, не дуже заохочуваних армією та богобоязливим суспільством.

Сама конструкція фляги передбачала, що її корисні властивостіможуть вийти за межі, передбачені інженерами. Солдати постійно знаходили застосування старим і зношеним флягам - наприклад, її можна було кинути в багаття і дочекатися, поки не розплавиться припій, після чого щасливий володар мав в руках дві відмінні ємності 10 дюймів в діаметрі і 2 дюми в глибину. Одну з них завжди можна було носити в ранці, хоча її розмір і був трохи більшим за убогі раціони, які солдат отримував. З іншого боку, така миска майже нічого не важила та мала додаткові можливості.

Уряд тоді не дбав про видачу умивальних тазів, але з цим завданням чудово впоралася половинка фляги. Так, вона була невеликою, але для польової гігієни її було цілком достатньо. Після завершення обмивань її досить було сполоснути в холодній воді, після чого почати втамовувати голод, практично без зволікання - просто вставивши палицю в те місце, де раніше була горловина фляги - і отримати основний інструмент для приготування їжі - сковороду. Безліч поросят закінчило свій вік на таких половинках фляг, як курчат і сезонних овочів, які смажилися в них. Така сковорідка підходила і для обсмажування кави. Ну а якщо виходило трохи муки, то на колишній флязі можна було приготувати навіть оладки. Восени, коли кукурудза починала твердіти, у цій «сковорідці» можна було зробити отвори зовні і отримати чудову тертку для приготування каші з кукурудзяної крупи, яка була не тільки корисна, а й урізноманітнила військову дієту. Деякі примудрялися приготувати таким чином смачні пироги з уже зрілої кукурудзи.

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

Іноді, ветерани хотіли бачити щось між собою та ланцюгом мушкетів ворога, причому чим швидше – тим краще. Очевидно, що в такій ситуації чекати інженерів чи самому бігти за лопатою було вже пізно. У таких випадках, на допомогу приходив багнет, яким можна розпушити землю і половинка фляги, яка допомагала трохи заглибитися в землю, а якщо додати до цього колоду та пару каменів, то виходило відносно безпечне укриття від куль супротивника. Деякі досвідчені застрельники настільки віртуозно опанували таку техніку, що ховалися з очей супротивника за лічені хвилини.

Капрал Сі Клегг та його приятель Шорті
записано Підполковником Уїлбуром Ф. Хінманом F. Hinman, 65 Ohio Volunteer Infantry


Автор:
Я. Версія адмінки:
R3
Опис:
Адмінка поставляється з ключами та підписами. Адмінка розділена на 2 частини - клієнтська та серверна. Також працює в офлайн режимі.
Для встановлення адмінки необхідно:
На сервері підключити серверний мод. На сервері підключити клієнтський мод. На сервері скопіювати ключ із клієнтського мода, і помістити в папку keys сервера. На клієнті додати клієнтський мод. У конфігураційний файл адміністрації прописати UID(и) адміністраторів та модераторів.
Робочі пункти адмінки:

Відображення 3D (ESP від ​​0 до 1000м)
Налаштування радіуса відображення Гравці. Зомбі. Техніка. Будівлі. Об'єкти.
Відображення на карті (у радіусі гравця від 0 до 1000м):
Налаштування радіуса відображення Гравці. Зомбі. Техніка. Будівлі. Об'єкти. НВЦ.
Сервер:
Налаштування часу на сервері. Установка погоди на сервері(Бете).
Власні:
Телепорт за векторами (4 - у напрямку погляду. 5 - вгору). Телепорт за картою. Невразливість. Нескінченний БК. Невидимість. Захист від зомбі. Вільна камера.
Гравці:
Телепорт гравця до адміністратора. Телепорт адміністратора до гравця. Телепорт у задані координати. Лікування. Очищення інвентарю. Видача БК до поточної зброї (у руках). Заблокувати. Розблокувати. Вбити. Від'єднати. Забанити(свій файл банів за UID) Створення перед гравцем об'єктів із заздалегідь підготовлених файлів на сервері. Гравці(дод. пункти для мода Ultima):
Змінити баланс готівки Змінити банківський баланс Змінити репутацію Змінити фракцію Змінити кількість вбивств зомбі Змінити кількість вбивств людей
Створення об'єктів:
Фільтр під час вибору розділу створення предметів (пошук на ім'я класу). Пресети для створення авто, з аддонів (авто з обважуванням, - колеса і т.п., так само можна додавати і для стандартної техніки, якщо немає бажання створювати її в зборі).
Видалення об'єктів:
Всі об'єкти в радіусі X (не більше 100м). Всі об'єкти в радіусі X, за класом (не більше 100м). Об'єкт у прицілі за гарячою кнопкою.
Інше:
Карта адміністратора. Монітор налагодження. Інформаційний віджет. Спостереження за гравцем.
Гарячі клавіші:
[ - Виклик панелі адміністратора. HOME - Увімкн./Вимк. відображення смуги налагодження. DELETE - Видалення об'єкта у прицілі. 4 - Телепорт за напрямком погляду. 5 - Телепорт вгору. SHIFT+M – Карта адміністратора. F11 – Дебаг адміністратора.
Повідомлення:
Виведення повідомлень гравцям про дії модератора (якщо в адмінці UID вказано, як UID модератора).
Журнали:
Події адміністрації.
Вартість:
3500
Відео:(УВАГА! У ВІДЕО, ВСЕРЕДИНІ ПАНЕЛІ АДМІНІСТРАТОРА, ПРАЦЮЮТЬ ТІЛЬКИ ТІ ПУНКТИ, ЯКІ ВКАЗАНІ Вище!
P.S. Оновлення платні – 25% від вартості адмінки.
Скайп: hf-trade

Мод надається в кількох частинах:
Зі стиму:
Клієнтський мод зі стиму Ultima (для гравців). Ключі та підписи, присутні. Клієнтський мод зі стиму UltimaClientAdmin (для гравців). Ключі та підписи, присутні. Клієнтський мод для вашого сервера! Цей мод потрібно буде перейменувати (у будь-яке ім'я - це Ваш мод, що модифікує конфіг). Необхідно буде створити до нього ключі та підписи, і викласти від себе в стім. Посилання на цей мод ви і викладаєте у стим. Серверні моди (тільки для сервера). Кількість: 2. *Моди пов'язані між собою.

Що є:
Стартове меню:
Додано посилання на групу до ВК. Додано посилання на Дискорд. Доданий вибір для прямого заходу на Ваші сервери! (Можливо додати безліч серверів в одне меню). Доданий логотип. Додано екран(картинка) завантаження. Доданий екран(картинка) відродження\заходу на сервер. *Всі описані вище параметри налаштовуються під ваш сервер! Дебаг монітор:
Готівка Банк Вбито людей Вбито зомбі Фракція Репутація Гравців онлайн ФПС Час старту місії Час до рестарту Власна валюта:
Можна забрати з трупа за екшеном мишки(обшукати кишені) Можна покласти в банк Можна перевести іншому гравцеві * *Валюта віртуальна. Безпечні зони:
Видалені зомбі з безпечних зон Видалені вовки з безпечних зон Відключено шкоду по гравцям усередині безпечних зон Оповіщення при вході Оповіщення при виході Торгові зони:
Над торговцями присутній напис(чим торгує) Взаємодія з торговцями через екшен мишки(торгівля) Торгівля:
Торгівля може бути налаштована на певну фракцію Під час продажу враховується відсоток пошкодження об'єкта, і продавець дасть за нього суму з урахуванням пошкоджень! Власником техніки вважається той гравець, хто останній сидів за кермом, і саме вона відображається у продажу. Продається техніка має бути в межах 10м від гравця. Купуючи техніку, ключ видається автоматично. Не можна продати техніку якщо в ній хтось знаходиться. Не можна торгувати перебуваючи всередині техніки. При продажу об'єкта весь інвентар, в т.ч. і обважування який знаходився всередині об'єкта (наприклад рюкзака, або техніки), буде автоматично складено під ноги. Є можливість створити "бродячого" торговця. - Файл з конфігурацією додається.(Налаштовується час переміщення, і список випадкових позиції для торговця) Техніка:
Можна прив'язати техніку до ключа, попередньо купивши його у продавця. Можна закривати техніку на ключ. Власником техніки вважається той, хто останнім сидів за кермом. Після рестарту, вся техніка, яка прив'язана до ключів, створюється закритою. Карта:
Додано карту для гравців, відкриття на CTRL+M Монітор відродження:
Додано точки для вибору місця відродження. Оповіщення про смерті:
Окреме повідомлення у вікні. Стартовий інвентар:
Є можливість видавати інвентар як по UID, причому випадковим чином зі списку доступних для даного UID"а. Гравці для яких не створено конфіг інвентарю, отримують його із загального конфігу. У конфізі можна вказати одяг, речі які будуть поміщені в руки, речі які будуть поміщені гарячі слоти, а також є можливість додавати речі відразу в комплектації (тобто з обважуванням, батарейками тощо).
При смерті з гравця знімається 200 репутації (до 0 +-). тобто. Приклад:
Було 450, стане 250.
Було –300, стане –100.
Було 90, стане 0.
Було –150, стане 0.
За вбивство гравця репутація нараховується по 150 таким чином: Якщо з убитого знято менше 200 репутації (див. приклад вище), то нарахування немає! Якщо вбивця був із негативною репутацією, то нарахування йде в мінус. Приклад:
Було -100, стане -250
*Не грає ролі, яка репутація була вбитого.
Якщо вбивця був із позитивною репутацією, а вбитий із негативною, то +150 Приклад:
Було 100, стане 250
Якщо вбивця був із позитивною репутацією, і вбитий із позитивною, то -150 Приклад:
Було 100, стане -50
Було 1000, стане 850
Стартові позиції гравців:
Є можливість відроджувати гравця на точках прописаних спеціально під його UID, причому випадковим чином зі списку доступних для даного UID"а. Гравці для яких не створено конфіг відродження, відроджуються із загального конфігу.
Всі пункти описувати не буду - можу сказати тільки те, що все працює, і безліч пунктів, такі як видача готівки, зміна фракції і т.п. зроблено спеціально під модифікацію. СЕРВЕРНІ МОДИ:
Налаштовуються під ваш сервер, і маю багатий функціонал. дод. процедури та функції.

В іншому дивіться відео за посиланням:
*В даний момент, сервер з цим модом працює за адресою:
109.68.189.18:2902
*Для входу необхідний мод сервера
https://steamcommunity.com/sharedfiles/filedetails/?id=1860242928&searchtext=ru111&insideModal=0&requirelogin=1

Skype: hf-trade

P.S. Оновлення платні, якщо вони вносять дод. функціонал (для тих хто купував мод раніше: 25% від загальної вартості, до актуальної версії).
P.S.P.S. Весь функціонал є БЕТА-ВЕРСІЄЮ!

Сьогодні ми говоритимемо про фляжки: з чого і як виготовляються ці штуки, яких обсягів бувають, як краще вибрати фляжку, що в неї наливати, як доглядати. Також згадаємо кілька основних правил «фляжкового етикету» та зробимо невеликий екскурс в історію.

"Портативний бар", "бойові 100 грам", "рідина для розпалювання" - як тільки не називають у народі фляжку. Невелика ємність із дорогоцінними краплями спиртного – обов'язкова деталь екіпірування будь-якого алкогольного естету.

Куди б ти не подався: на рибалку, в турпохід, на співбесіду, в театр – свій особистий штофчик у кишені зробить тебе незалежним від барів та магазинів, дасть можливість будь-якої миті зняти стрес, зігрітися, налаштуватися на позитив, розслабитися. Не варто забувати і про те, що фляжка – це показник стилю, пафосний атрибут. Коротше – «Ти можеш хоч взагалі не пити, але фляжкою мати зобов'язаний!».

Що таке фляжка та звідки вона взялася?

Саме слово «фляга» німецьке, утворене від «Flachmann», що в перекладі означає лише «колба». «Фляхмани» використовували, здебільшого, солдати – під час І світової вони робилися зі скла та одягалися у матер'яний чохол. Билися, мабуть, аж бігом - тільки уявіть, скільки шнапсу було пролито на полях битв кайзерівськими військами!

Але, звичайно, ємності алкогольних речовин з'явилися задовго до Імперіалістичної. Шкіра, вичинені шлунки худоби, дерево, шкаралупа деяких плодів (напр. кокоса) – з цього робили переносні «пляшки» для вина та інших напоїв з часів їх появи.

Сучасний вид фляжка почала набувати, ймовірно, у вісімнадцятому столітті, у старій-добрій Франції. Саме в цей час фляга вийшла з розряду практичного повсякденного предмета та перенеслася у площину елемента дизайну, навіть розкоші. Срібло, золото, шикарний орнамент, інкрустація із самоцвітів, фамільні герби, гравюри, ікони – тому підтвердження.

І лише минулого століття фляжка стала широко використовуватися як знатними неробами, а й простим людом.

Головний стрибок популярності цього девайсу стався у Штатах, у 1920-ті роки. Під час алкоголю можна було продавати лише з-під підлоги. Хтось із майбутніх Аль Капоне вигадав особливий тип наливок, відомих як «заправні станції». Сенс простий - бажаючий промочити горло робітник заходить до якогось закладу. Пити дома не дозволялося з міркувань секретності – бутлегер наливав лише «з собою».

Бажаючому заправитися був потрібен «бензобак», вірніше «бачок», який можна було сховати в кишеню або за халяву і дбайливо відтранспортувати у безпечне місце.

Після скасування сумнівної вісімнадцятої поправки фляжки так і залишилися частиною побуту простих американців. Їх, наприклад, часто знаходили на тілах солдатів США, які загинули на фронтах ІІ світової. Брали їх і до Кореї, і до В'єтнаму. Мабуть, саме звідти зручний і корисний предмет проникнув на терени СРСР.

Ємність та матеріал

Багато років тому, купивши свою першу фляжку, я дивувався, що ємність на ній позначена не в мілілітрах, а в якихось загадкових «OZ». Насправді тут немає нічого дивного – американці вимірюють обсяг алкоголю в унціях, рівних 29 з дрібницею мл – якраз невеликий шотик. Мінімальний обсяг зазвичай – 3 унції, максимальний – 12.

Але бувають і винятки. Наприклад – мініатюрні фляжечки-брелоки. У мого товариша дядько працював на якомусь загадковому фляжковому виробництві – так у нього все, від олії до самогону зберігалося в мастадонтських 3-5-літрових фляжищах.

Вибір обсягу – особиста справа кожного. Мені подобається 9 OZ - 255 грам. Якраз вистачить коньячка, щоб трохи розслабитися і почастувати приятеля. Менша, 6-унциевая фляжка знадобиться у поході – у неї можна налити 98-% спирт, який згодиться і щоб багаття за вогкістю розпалити, і рану продезінфікувати, і організацію з-2-3 дорослих мужиків підпоїти.

Тільки врахуйте – довго алкоголь, особливо міцний (спирт, абсент, нерозбавлені настойки) не варто зберігати у металевій ємності – є ризик, що напій змінить смак, стане «залізним».

І, до речі, ще один лайфхак – «для сугріву» набагато краще підходить не бренді або горілка, а міцне вино – портвейн, кагор. Перевірено на практиці - свого часу багато доводилося працювати по морозу. Від вина стає тепліше без шкоди для міркування. А для зняття стресу рекомендується приймати не більше 50 мл, особливо в екстремальних умовах – у поході тощо, де важливо зберігати спритність та ясність думки.

Тепер про матеріал. Як уже говорилося, роблять фляги з чого попало – навіть зі скла та полімерів. Ми зупинимося на металах.

  • Нержавіюча сталь- Найпоширеніший матеріал. Красива, придатна для гравіювання, корозійностійка. Характер поступливий. У продажу найчастіше зустрічаються фляжки з паяної нержавіючої сталі. Якщо хочете повністю убезпечити себе від олова, свинцю, кислоти та інших елементів припою – краще пошукати зварену аргоном. Вищий пілотаж - нержавіюча сталь. Але заплатити за ексклюзив доведеться відповідно.
  • Алюміній- теж не схильний до корозії, легше нержавіючої сталі, зате - схильний до деформації, через що кришечки починають гірше закручуватися, а дорогоцінна волога - протікати. Але я не рекомендую алюміній з інших причин – він помітно псує смак алкоголю, і не лише міцного.
  • Звичайна сталь. Тут без варіантів - відразу в треші.
  • І наприкінці, срібло. Це, звичайно, шик – срібло не тільки не зіпсує смаку, а й, за багатьма відгуками, може трохи покращити його. Звичайно, я собі не уявляю адекватної людини, яка витратить овер 15 000 рублів на таку дрібницю. Але як подарунок начальнику чи бізнес-партнеру – саме те.

І ще – варто звернути увагу на аксесуари до фляга. Для деяких фляг роблять пробки-чарки – можливо, вам так зручніше пити, але я думаю, що пробка має бути прикріплена до корпусу на шарнірі – інакше вона 100% загубиться. Якщо не любите ефектно випивати з горла – краще придбати набір металевих стопок в окремому чохлі. Беріть товстіші – вони швидко гнуться.

А ось лієчка – штука дуже корисна, особливо коли переливаєш залишки бухла у фляжку з ранку після пиятики. У спеціальних чохлах особисто я сенсу не бачу - хіба що, крім фляжки в нього вміщується, наприклад, кисет або портсигар.

Секрети догляду та «фляжковий етикет»

Є кілька негласних правил, яким слідують власники фляжок. Наприклад:

  • У фляжці не носять коктейлі.

Тільки чистий алкоголь, лише хардкор! Любите « »? Носіть із собою ром, а решту – змішуйте у склянці. Погодьтеся, «кривава Мері» у флязі – це не зовсім естетично, та й негігієнічно.

  • З шийки можете пити тільки ви і найближчі друзі.

Пригощати малознайомих персонажів із власної фляги – поганий смак. Альтернатива – переносні чарочки.

  • За шийку не можна братися руками.

Та й взагалі – флягу треба тримати в чистоті, ретельно вимиваючи щоразу після того, як вона випорожнена.

У вільний від перенесення алкоголю час фляга повинна зберігатися чистою та висушеною. Зсередини її не можна мити милом або засобом лише звичайна тепла вода.

Поділитися