Yii2 - Fixtures: Lesson Covers Fixtures in Yii

In this video, we learn about Yii2 - Fixtures: Lesson covers fixtures in yii. Their main purpose is to set up the environment in a fixed/known state so that your tests are repeatable and run in an expected way.


What is GEEK

Buddha Community

Yii2 - Fixtures: Lesson Covers Fixtures in Yii

Hire Dedicated YII Developers - Hire Yii Developer

A framework suitable to build a large web applications in a shorter time duration is the YII PHP framework. YII framework allows developers to maximize reusability to reduce the total development time of the application.

Want a large web application in a shorter time duration?

Hire Dedicated YII developers from WebClues Infotech who has the experience and skills to apply the YII framework for your project needs. Depending on the project requirements WebClues Infotech has a huge pool of resources from which they can fulfill your candidate requirements quickly.

Looking to Hire Dedicated YII Developers?

Get in touch with us!!

For more inquiry click here https://www.webcluesinfotech.com/hire-yii-developer/

Book Free Interview: https://bit.ly/3dDShFg

#hire dedicated yii developers #hire yii developers india #hire yii developer #top yii developers for hire #dedicated yii php programmers #hiring yii framework developer india

Yii2 - Fixtures: Lesson Covers Fixtures in Yii

In this video, we learn about Yii2 - Fixtures: Lesson covers fixtures in yii. Their main purpose is to set up the environment in a fixed/known state so that your tests are repeatable and run in an expected way.


Ahebwe  Oscar

Ahebwe Oscar


Django 3.2 - News on Compressed Fixtures and Fixtures Compression

In the Django 3.2 version just released I contributed with new features related to compressed fixtures and fixtures compression. In this article I have explored the topic and produced some sample benchmarks.

#django #django 3.2 #compressed fixtures #fixtures compression #django 3.2 - news on compressed fixtures and fixtures compression #news

Nat  Grady

Nat Grady


Mkdocs-with-pdf: Generate A Single PDF File From MkDocs Repository

PDF Generate Plugin for MkDocs

This plugin will generate a single PDF file from your MkDocs repository. This plugin is inspired by MkDocs PDF Export Plugin.


  • Cover and Table of Contents integrated in the PDF
  • Automatically numbers on heading(h1-h3).
  • Shift down sub-page headings level.
  • using WeasyPrint.



  1. This package requires MkDocs version 1.0 or higher (0.17 works as well)
  2. Python 3.6 or higher
  3. WeasyPrint depends on cairo, Pango and GDK-PixBuf which need to be installed separately. Please follow the installation instructions for your platform carefully:

How to use


Install the package with pip:

pip install mkdocs-with-pdf

Enable the plugin in your mkdocs.yml:

    - with-pdf

More information about plugins in the MkDocs documentation.


When building your repository with mkdocs build, you should now see the following message at the end of your build output:

Converting 10 articles to PDF took 7.1s


You may customize the plugin by passing options in mkdocs.yml:

    - with-pdf:
        #author: WHO
        #copyright: ANY TEXT
        #cover: false
        #back_cover: true
        #cover_title: TITLE TEXT
        #cover_subtitle: SUBTITLE TEXT
        #custom_template_path: TEMPLATES PATH
        #toc_title: TOC TITLE TEXT
        #heading_shift: false
        #toc_level: 3
        #ordered_chapter_level: 2
        #    - 'release-notes/:upgrading'
        #    - 'release-notes/:changelog'
        #    - 'bugs/'
        #    - 'appendix/contribute/'
        #    - src: IFRAME SRC
        #      img: POSTER IMAGE URL
        #      text: ALTERNATE TEXT
        #    - src: ...
        #two_columns_level: 3
        #render_js: true
        #headless_chrome_path: headless-chromium
        #output_path: any-place/document.pdf
        #enabled_if_env: ENABLE_PDF_EXPORT
        #debug_html: true
        #show_anchors: true
        #verbose: true


for Properties


Set the author text.
default: use site_author in your project mkdocs.yml


Set the author text.
default: use copyright in your project mkdocs.yml

author and copyright values are drawn in Cover, and you can use '@page' content.

@page {  @bottom-left {    content: string(author) !important;  }  @bottom-right {    content: string(copyright) !important;  } }

for Cover


Set the value to false if you don't need a cover page.
default: true


Set the value to true if you need a back cover page.
default: false
since: v0.8.0

You would be better to install the qrcode package:

pip install qrcode


Set the title text in cover page.
default: use site_name in your project mkdocs.yml


Set the subtitle text in cover page.
default: None


Set the logo image in cover page. This value is URL or simply specify the relative path to the docs directory.
default: None
since: v0.8.0

for Heading and TOC


Set the title text of Table of Content.
default: Table of Content
since: v0.4.0


Set this value to false, disable shift heading in child page.
default: true

In this flags enable, heading move down one level in child page.


Set the level of Table of Content. This value is enabled in the range of from 1 to 3.
default: 3


Set the level of heading number addition. This value is enabled in the range of from 1 to 3.
default: 3


Set the page id of nav url. If the id matches in this list, it will be excluded from the heading number addition and table of contents.
default: []

for Page


Set the page id of nav url. If the id matches in this list, it will be excluded page contents.
default: []
since: v0.3.0


List of iframe to a conversions. Every iframe that matches a src in this list will be replace to a contains each img and/or text. it's using for such as embedded VIDEO.
default: []
since: v0.6.0

@see Sample of MkDocs Material

two_columns_level (Experimental)

Set the heading level of Two Column Layout. Currently only 0(disable) or 3 is valid for this value. So slow processing, but a little nice.

default: 0
since: v0.7.0

@see Sample of MkDocs Material

Renderer for JavaScript


Set the value to true if you're using 'MathJax', 'Twemoji' or any more.
Require "Chrome" which has "headless" mode.

default: false
since: v0.7.0


Set the "Headless Chrome" program path.
If render_js is false, this value will be ignored.

default: chromium-browser

Check on your system:

$ <PROGRAM_PATH> --headless \
   --disable-gpu \
   --dump-dom \
   <ANY_SITE_URL(eg. 'https://google.com')>

... and more


This option allows you to use a different destination for the PDF file.
default: pdf/document.pdf


The path where your custom cover.html and/or styles.scss are located. default: templates
since: v0.8.0


Setting this option will enable the build only if there is an environment variable set to 1. This is useful to disable building the PDF files during development, since it can take a long time to export all files.
default: None

PDF generation can take significantly longer than HTML generation which can slow down mkdocs's built-in dev-server.

Adding enabled_if_env: ENABLE_PDF_EXPORT under - with-pdf: disables PDF generation during development. Run the dev-server normally:

$ mkdocs serve
INFO    -  Browser Connected:
INFO    -  Running task: builder (delay: None)
INFO    -  Building documentation...
WARNING -  without generate PDF(set environment variable ENABLE_PDF_EXPORT to 1 to enable)
... 2 seconds later ...
INFO    -  Reload 1 waiters: /.../index.md

and to build files to deploy specify ENABLE_PDF_EXPORT=1 at the command line:

$ ENABLE_PDF_EXPORT=1 mkdocs build
INFO    -  Converting 10 articles to PDF took 7.1s
INFO    -  Documentation built in 8.29 seconds


Setting this to true will out HTML to stdout on build time.
default: false

You can try this:

mkdocs build > for_pdf_print.html

...and browse output with Google Chrome. Chrome DevTools Into Print Preview Mode will you help.

Note: WeasyPrint and Google Chrome are not fully compatible.


Setting this to true will list out of anchor points provided during the build as info message.
default: false
since: v0.7.4


Setting this to true will show all WeasyPrint debug messages during the build.
default: false

Custom cover page and document style

It is possible to create a custom cover page for the document. You can also add a custom style sheet to modify the whole document.

To do so, add a templates folder at the root level of your mkdocs project and place a cover.html and/or a styles.scss inside. Alternatively, you can specify a different location with the custom_template_path option.

Custom cover page

Using jinja2 syntax, you can access all data from your mkdocs.yml. To make template creation easier, you can use plugin_some_plugin to access variables from plugins. E.g. use {{ author }} to get the author from your mkdocs.yml that looks like:

    - with-pdf:
        author: WHO

You can use custom variables extra: in your mkdocs.yml And, you can check it in the log if run with verbose or debug_html options.

Custom stylesheet

Since your stylesheet is appended to the default ones, you can override every setting from them.

Tip: setting the debug_html option to true to get the generated html that is passed to weasyprint can help you determine the html tags, classes or identifiers you want to modify in your stylesheet.

Advanced Rendering Hooks (Experimental)

You can hook the PDF rendering process by creating a pdf_event_hook.py(or pdf_event_hook/__init__.py) in your working directory (usually the same directory as mkdocs.yml).
since: v0.8.2

Sample pdf_event_hook.py (or pdf_event_hook/__init__.py)

import logging

from bs4 import BeautifulSoup
from mkdocs.structure.pages import Page

def inject_link(html: str, href: str,
                page: Page, logger: logging) -> str:
    """Adding PDF View button on navigation bar(using material theme)"""

    def _pdf_icon():
        _ICON = '''
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
<path d="M128,0c-17.6,0-32,14.4-32,32v448c0,17.6,14.4,32,32,32h320c17.6,0,32-14.4,32-32V128L352,0H128z" fill="#E2E5E7"/>
<path d="m384 128h96l-128-128v96c0 17.6 14.4 32 32 32z" fill="#B0B7BD"/>
<polygon points="480 224 384 128 480 128" fill="#CAD1D8"/>
<path d="M416,416c0,8.8-7.2,16-16,16H48c-8.8,0-16-7.2-16-16V256c0-8.8,7.2-16,16-16h352c8.8,0,16,7.2,16,16  V416z" fill="#F15642"/>
<g fill="#fff">
<path d="m101.74 303.15c0-4.224 3.328-8.832 8.688-8.832h29.552c16.64 0 31.616 11.136 31.616 32.48 0 20.224-14.976 31.488-31.616 31.488h-21.36v16.896c0 5.632-3.584 8.816-8.192 8.816-4.224 0-8.688-3.184-8.688-8.816v-72.032zm16.88 7.28v31.872h21.36c8.576 0 15.36-7.568 15.36-15.504 0-8.944-6.784-16.368-15.36-16.368h-21.36z"/>
<path d="m196.66 384c-4.224 0-8.832-2.304-8.832-7.92v-72.672c0-4.592 4.608-7.936 8.832-7.936h29.296c58.464 0 57.184 88.528 1.152 88.528h-30.448zm8.064-72.912v57.312h21.232c34.544 0 36.08-57.312 0-57.312h-21.232z"/>
<path d="m303.87 312.11v20.336h32.624c4.608 0 9.216 4.608 9.216 9.072 0 4.224-4.608 7.68-9.216 7.68h-32.624v26.864c0 4.48-3.184 7.92-7.664 7.92-5.632 0-9.072-3.44-9.072-7.92v-72.672c0-4.592 3.456-7.936 9.072-7.936h44.912c5.632 0 8.96 3.344 8.96 7.936 0 4.096-3.328 8.704-8.96 8.704h-37.248v0.016z"/>
<path d="m400 432h-304v16h304c8.8 0 16-7.2 16-16v-16c0 8.8-7.2 16-16 16z" fill="#CAD1D8"/>
'''  # noqa: E501
        return BeautifulSoup(_ICON, 'html.parser')

    logger.info(f'(hook on inject_link: {page.title})')
    soup = BeautifulSoup(html, 'html.parser')

    nav = soup.find(class_='md-header-nav')
    if not nav:
        # after 7.x
        nav = soup.find('nav', class_='md-header__inner')
    if nav:
        a = soup.new_tag('a', href=href, title='PDF',
                         **{'class': 'md-header__button md-header-nav__button md-icon'})
        return str(soup)

    return html

# def pre_js_render(soup: BeautifulSoup, logger: logging) -> BeautifulSoup:
#     logger.info('(hook on pre_js_render)')
#     return soup

# def pre_pdf_render(soup: BeautifulSoup, logger: logging) -> BeautifulSoup:
#     logger.info('(hook on pre_pdf_render)')
#     tag = soup.find(lambda tag: tag.name ==
#                     'body' and 'data-md-color-scheme' in tag.attrs)
#     if tag:
#         tag['data-md-color-scheme'] = 'print'
#     return soup

... and check log:

$ mkdocs build
INFO    -  Found PDF rendering event hook module.
INFO    -  Cleaning site directory
INFO    -  Building documentation to directory: /tmp/sample/site
INFO    -  (hook on inject_link: Home)


From reporting a bug to submitting a pull request: every contribution is appreciated and welcome. Report bugs, ask questions and request features using Github issues. If you want to contribute to the code of this project, please read the Contribution Guidelines.

Special thanks to

Author: Orzih
Source Code: https://github.com/orzih/mkdocs-with-pdf 
License: MIT License

#python #pdf 

What is COVER Protocol (COVER) | What is COVER Protocol token | What is COVER token

COVER Protocol provides peer to peer coverage with fungible tokens. It lets the market set coverage prices as opposed to a bonding curve.

COVER Protocol allows DeFi users to be protected against smart contract risk. It stabilizes the turbulent DeFi space by instilling confidence and trust between protocols and their users. By bridging the gap between decentralized finance and traditional finance, COVER Protocol will open the doors of DeFi to all investors.

The long term vision for COVER Protocol is to allow anyone to buy coverage on anything.


What is COVER Protocol and what makes it unique?


When there is a demand for coverage, COVER protocol incentivizes market makers to fill the need of the demand. At the same time, it lets the market set the premium of the coverage.


COVER Protocol separates itself from other coverage protocols due to independent coverage ceilings as opposed to pooled staking.


Obtain ERC-20 coverage for the time period you need. Trade your coverage on Balancer and Uniswap at anytime.


COVER Protocol’s smart contracts will be audited, deployed, and verified on the Ethereum blockchain, making coverage entirely censorship resistant and open.


COVER Protocol will allow you to buy cover on anything, beyond just smart contracts and crypto. Those looking to purchase coverage are able to, as long as there are people willing to provide coverage.


COVER Protocol allows you to buy coverage without needing to give up your identity.


What is COVER Token and what is it used for?


COVER tokens are valueless and serve as governance tokens for COVER protocol


Earn COVER tokens through using the COVER Protocol


Vote on community-submitted proposals that will shape the future of the protocol


Play a vital role in the claims management process by validating/invalidating claims

Updated COVER Incident Resolution Plan

After the COVER smart contract experienced an infinite minting attack on 2020/12/28, a large number of minted COVER tokens (greater than the COVER circulating supply) were bought by arbitrageurs on decentralized exchanges and deposited on Binance, causing the price of COVER to decrease at an alarming rate, and resulted in many Binance users experiencing significant losses. In the days following the attack, Binance has kept in close communication with the COVER Protocol team to discuss various compensation possibilities for our users involved. However, as the required compensation amount was too large to adequately recompense all affected Binance users, the COVER team was unable to provide any funds beyond their original compensation plan.

After reviewing the latest compensation plan from the COVER team, we realized that a large number of Binance users who bought COVER on Binance after COVER’s proposed snapshot time at 2020/12/28 8:11:06 AM (UTC) would have their tokens become worthless. In response to this, Binance has decided to proceed with a plan that upholds our core principle of protecting our users.

In addition to the compensation plan from the COVER team, Binance will utilize the Binance  SAFU Fund to recompense a total of $10,107,505 USD (distributed in 8,171,634.10 BUSD and 2,581.16 ETH) to affected and eligible users, with the details listed out below.

As described in COVER’s compensation plan, the COVER team will take a snapshot of all COVER balances at an Ethereum block height of  11541218, 2020/12/28 8:11:06 AM (UTC) (“ETH Snapshot Time”) and distribute a new COVER token at a ratio of 1 COVER-old = 1 COVER-new. We will also incorporate the time that COVER trading was halted on Binance, 2020/12/28 12:40 PM (UTC) (“Trading Stop Time”) into our plan:

  • For Binance users who did not trade COVER: If a user’s COVER balance on Binance at the ETH Snapshot Time was equal to their balance at the time of the Trading Stop Time, then this user will receive COVER-new at a 1:1 ratio based on their COVER-old balance at the ETH Snapshot Time.
  • For Binance users who bought COVER after the ETH Snapshot Time: If a user’s COVER balance on Binance at the ETH Snapshot Time was lower than their balance at the Trading Stop Time:This user will receive COVER-new at a 1:1 ratio based on their COVER-old balance at the ETH Snapshot Time.
  • For each user’s net purchased COVER amount, Binance will compensate users out of pocket with the price that they originally purchased the COVER tokens for in either ETH or BUSD. This compensation will be covered in full by the Binance SAFU Fund and totals $10,107,505.79 USD (consisting of 8,171,634.10 BUSD and 2,581.16 ETH).
  • For Binance users who sold COVER after the ETH Snapshot Time: If a user’s COVER balance on Binance at the ETH Snapshot Time was higher than their balance at the Trading Stop Time, this user will receive COVER-new at a 1:1 ratio based on their COVER-old balance at the Trading Stop Time.
  • Binance will not make any additional compensation for users that only deposited tokens between the ETH Snapshot Time and the Trading Stop Time.

Please note:

  • COVER-new will assume the COVER ticker going forward. COVER-old tokens will be renamed as COVEROLD on Binance.
  • Binance will complete the distribution of COVER-new, ETH and BUSD to all affected and eligible users as part of the compensation plan after receiving the new COVER token. A further announcement will be made once the distribution is complete.
  • Withdrawals for COVER-old will be closed after this announcement. Withdrawals for COVER-new will open once the distribution is completed.
  • Binance will determine whether or not to open trading for COVER-new at a later date.

Related articles:

☞ Would you like to earn COVER right now, CLICK HERE

Looking for more information…

☞ Website
☞ Explorer
☞ Source Code
☞ Social Channel
Message Board
☞ Coinmarketcap

Top exchanges for token-coin trading. Follow instructions and make unlimited money


Thank for visiting and reading this article! I’m highly appreciate your actions! Please share if you liked it!

#blockchain #bitcoin #cryptocurrency #cover protocol #cover token