git for-each-ref --format='%(committerdate) %09 %(authorname) %09 %(refname)' --sort=committerdate
Export all Grafana data sources to data_sources folder
mkdir -p data_sources && curl -s "http://localhost:3000/api/datasources" -u admin:admin|jq -c -M '.[]'|split -l 1 - data_sources/
This exports each data source to a separate JSON file in the data_sources folder.
Load data sources back in from folder
This submits every file that exists in the data_sources
folder to Grafana as a new data source definition.
for i in data_sources/*; do \
curl -X "POST" "http://localhost:3000/api/datasources" \
-H "Content-Type: application/json" \
--user admin:admin \
--data-binary @$i
done
export docker_registry_hub=172.30.1.1:5000
docker login -u $(oc whoami) -p $(oc whoami --show-token) $docker_registry_hub
Disable Alt+ buttons for keyboard layout (Logitech):
sudo dpkg-reconfigure keyboard-configuration
Disable Alt+Shift in Window keyboard settings:
Install tweak tool and change layout buttons:
sudo apt-get install gnome-tweak-tool
xmodmap -e 'keycode 65 = space space space space'
Anchor peer это пир, который используется для обнаружения всех узлов, принадлежащих организациям в канале. Anchor peer должен быть доступен для всех пиров в канале.
У каждой организации в канале должен быть anchor peer (или несколько для предотвращения единой точки отказа), что позволяет пирам обнаруживать все существующие пиры в канале. Если в вашей организации нет anchor peer, ваши пиры смогут видеть только пиры своей организации. Если у организации нет anchor peer в канале, а к каналу присоединяется новый пир, организация не получит информацию об этом новом пире.
Например, предположим, что у нас есть три организации - orgA, orgB, orgC - в канале и один anchor peer в организации - peer0.orgC - определенный для организации C. Когда peer1.orgA из организации A связывается с peer0.orgC, он расскажет peer0.orgC о peer0.orgA. И когда позже peer1.orgB свяжется с peer0.orgC, peer0.orgC сообщит peer1.orgB о peer0.orgA. С этого момента организации orgA и orgB начнут напрямую обмениваться информацией без какой-либо помощи со стороны peer0.orgC.
Да в сети может быть один anchor peer, но рекомендуется использовать отдельные anchor peer для каждой организации.
Внешние и внутренние конечные точки
Для того чтобы сплетни работали эффективно, пиры должны иметь возможность получать информацию о конечных точках пирах в своей собственной организации, а также от пиров в других организациях.
Когда пир стартует, он использует peer.gossip.bootstrap в своем core.yaml для обмена информацией о членстве, делясь информацией обо всех доступных пирах в пределах своей собственной организации. Т.е использует peer.gossip.bootstrap для сплетен внутри своей организации.
Также можно использовать CORE_PEER_GOSSIP_ENDPOINT в docker-compose файле:
peer1:
- CORE_PEER_GOSSIP_BOOTSTRAP=peer2:7051
peer2:
- CORE_PEER_GOSSIP_BOOTSTRAP=peer1:7051
Для того, чтобы пиры в одной организации знали о существовании пиров в другой организации нужно использовать CORE_PEER_GOSSIP_EXTERNALENDPOINT:
peer1:
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1:7051
peer2:
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer2:7051
Delete conflict package sums:
sed '/^github.com\/hyperledger\/fabric v1.4.4/d' ./go.sum > temp.txt && mv temp.txt go.sum
[CONTAINERS] ПОИСК КОНТЕЙНЕРОВ:
docker ps -a $(docker ps -a -f "since=b2f3a7899d6d" -q)
since=
все контейнеры ПОСЛЕbefore=
все контейнеры ДО-q
вернуть только ID контейнеров[CONTAINERS] УДАЛИТЬ ВСЕ КОНТЕЙНЕРЫ:
docker rm -f $(docker ps -a -q)
[CONTAINERS] УДАЛИТЬ КОНТЕЙНЕР С ПРЕФИКСОМ В ИМЕНИ = cli
:
docker rm -f $(docker ps -a -f "name=cli" -q)
[CONTAINERS] ЗАЙТИ В КОНТЕЙНЕР С ПРЕФИКСОМ В ИМЕНИ = cli
:
docker exec -ti $(docker ps -a -f "name=cli" -q) bash
peer chaincode list --installed
peer channel list
[IMAGES] УДАЛИТЬ ВСЕ IMAGES:
docker image rm -f $(docker images -a -q)
[IMAGES]УДАЛИТЬ IMAGES (поиск):
docker image rm $(docker image ls -f "since=b2f3a7899d6d" -q)
[VOLUMES] УДАЛИТЬ ВСЕ UNUSED
VOLUMES:
docker volume prune
[VOLUMES]УДАЛИТЬ ВСЕ VOLUMES:
docker volume rm $(docker volume ls -q)
[GLOBAL] ОЧИСТА ОТ НЕИСПОЛЬЗУЕМЫХ КОНТЕЙНЕРОВ, IMAGES и VOLUMES:
docker system prune
[NETWORKS] СПИСОК ВСЕХ NETWORKS:
docker network ls
[CONTAINERS] ИНФОРМАЦИЯ О КОНТЕЙНЕРЕ:
docker inspect -f 25942aa05b32
[CONTAINERS] ПОЛУЧИТЬ IP КОНТЕЙНЕРА:
docker inspect -f '{{range.NetworkSettings.Networks}}{{.Aliases}} | {{.IPAddress}}{{end}}' 25942aa05b32
[CONTAINERS] ПОИСК КОТЕЙНЕРА ПО IP
docker inspect -f '{{range.NetworkSettings.Networks}}{{.Aliases}} {{.IPAddress}}{{end}}' $(docker ps -q) | grep 172.20.0.20
[IMAGES] ФИЛЬТР IMAGES:
docker images --filter "<option>=<value>"
docker image ls --filter "<option>=<value>"
docker image ls --filter "reference=hyperledger/fabric-peer:crypto-pro"
reference : that can be used in order to isolate images having a certain name or tag;
before : to filter images created “before” a specific point in time;
since: to filter images since a specific point in time (usually another image creation);
label: if you used the LABEL instruction to create metadata for your image you can filter them later with this key;
dangling: in order to isolate images that are not used anymore.
**Django 3.***
"user_name__icontains"
"user_name__iregex"
"user_name__startswith"
'contained_by': <class 'django.contrib.postgres.fields.ranges.RangeContainedBy'>,
'gte': <class 'django.db.models.lookups.IntegerGreaterThanOrEqual'>,
'lt': <class 'django.db.models.lookups.IntegerLessThan'>,
'contains': <class 'django.db.models.lookups.Contains'>,
'endswith': <class 'django.db.models.lookups.EndsWith'>,
'exact': <class 'django.db.models.lookups.Exact'>,
'gt': <class 'django.db.models.lookups.GreaterThan'>,
'gte': <class 'django.db.models.lookups.GreaterThanOrEqual'>,
'icontains': <class 'django.db.models.lookups.IContains'>,
'iendswith': <class 'django.db.models.lookups.IEndsWith'>,
'iexact': <class 'django.db.models.lookups.IExact'>,
'in': <class 'django.db.models.lookups.In'>,
'iregex': <class 'django.db.models.lookups.IRegex'>,
'isnull': <class 'django.db.models.lookups.IsNull'>,
'istartswith': <class 'django.db.models.lookups.IStartsWith'>,
'lt': <class 'django.db.models.lookups.LessThan'>,
'lte': <class 'django.db.models.lookups.LessThanOrEqual'>,
'range': <class 'django.db.models.lookups.Range'>,
'regex': <class 'django.db.models.lookups.Regex'>,
'startswith': <class 'django.db.models.lookups.StartsWith'>,
SublimeText3 Anaconda (Python plugin)
https://sublime-text.zeef.com/zeefcom Anaconda config:
{ "pep8_ignore": [
"E501",
"E402",
"UnusedImport",
"W291",
"E722",
"E111"
] ,
"pyflakes_explicit_ignore": [
"UnusedImport",
],
"auto_formatting": true,
"autoformat_ignore":
[
"E309",
"E501",
],
"auto_complete": true,
"auto_complete_commit_on_tab": true,
}