git_level1

После того как произвели первоначальную настройку git, можно продолжать.
git help — помощь по командам
git help config — помощь по конкретной команде

Создаем наш репозиторий:
mkdir projectA
cd projectA
git init
Создастся папка .git с пустым репозиторием, где и хранятся все метаданные.

Добавляем первый файл
touch README.txt
git add README.txt — файл переходит в состояние staged(как бы заставляем за ним следить)
Возможных вариантов добавления масса:
git add README.txt — добавляем один файл
git add README.txt LICENSE добавляем несколько файлов
git add —all добавляет все измененные или новые файлы.
git add *.txt — добавляет все файлы из текущей папки с расширением txt.
git add docs/*.txt — добавляет все файлы из docs с расширением txt.
git add docs/ — добавляет все файлы из docs
git add «*.txt» — добавляет все файлы из всего проекта с расширением txt.

git commit -m «Add README.txt» — делаем наш первый коммит. Описание лучше делать в настоящем времени!
git commit -a -m «MODIFY README» -делаем коммит и автоматически делает add, для всех измененных файлов, новые файлы НЕ добавляет.
git commit —amend -m «MODIFY README» если забыли, например добавить файл, добавляем файл и можем перезаписать коммит.

git reset —soft HEAD^ — отменяет последний коммит. и переместить HEAD на один коммит ранее, все файлы как до коммита будут в staged.
git reset —hard HEAD^ — отменяет последний коммит и удаляет все изменения!
git reset —hard HEAD^^ — отменяет последние два коммит и удаляет все изменения!
git reset HEAD filename -отменяем add для файла, делаем его опять не контролируемым(unstaged)
HEAD — это последний коммит в текущей ветке.

git checkout — filename — отменяем все изменения в файле с последнего коммита(откатываем и теряем ВСЕ изменения).

git status — показывает изменения с последнего коммита, в процессе дабавления можем, с помощью этой команды, наблюдать как файл меняет свой статус)

git log — история коммитов.
git log —pretty=online выводит историю коммитов, 1 коммит = 1 строка
git log —pretty=format:»%h %ad- %s [%an]» выводит историю коммитов, в определенном формате
git log —oneline -p показывает патчи между коммитами
git log —oneline —stat показывает сколько строк было изменено
git log —oneline —graph показывает в псевдографике историю втч ветки
git log —until=1.minute.ago
git log —since=1.day.ago
git log —since=1.year.ago —until=1.hour.ago
git log —since=2016-01-01 —until=2016-11-01

git diff — показывает историю не staged(контролируемых) файлов с последнего коммита.
git diff —staged показывает историю staged(контролируемых) файлов с последнего коммита.
git diff HEAD — тоже что и git diff
git diff HEAD^ — показывает разницу между текущим состоянием и предыдущим коммитом.
git diff HEAD^^ — показывает разницу между текущим состоянием и пред предыдущим коммитом.
git diff HEAD~4 показывает разницу между текущим состоянием и 4 коммитами ранее
git diff HEAD^ HEAD показывает разницу между предыдущим и текущим коммитом
git diff hash1 hash2 показывает разницу между коммитами с задаными хэшами
git diff master branchB показывает разницу между двумя ветками
git diff —since=2016-01-01 —until=2016-11-01 показывает разницу между состояниями с заданым временем

git blame app.py -показываем построчно кто добавил какую строку
git remote add origin https://myhub.com/ProjectA.git добавляем удаленный репозиторий.
количество репозиториев неограничено, мы можем например добавить тестовый репозиторий
git remote add anotherRepo https://myhub.ua/ProjectA.git
git remote -v смотрим информацию о удаленных репозиториях
git remote show origin смотрим информацию о ветках в удаленном репозитории
git remote rm repoName удаляем удаленный репозиторий
git remote prune origin удаляет локальную ветку,указывающую на ветку в удаленном репозитории
git push -u origin master — отправляем данные с нашего репозитория в удаленный
git push origin :branchB — удаляем ветку branchB с удаленного репозитория
git push —tags отправляем в удаленный репозиторий и наши метки
git pull получаем данные с удаленного в наш репозиторий и синхронизируем их

git clone https://myhub.ua/projectB.git — создаст папку ProjectB и сделает там копию удаленного репозитория
git clone https://myhub.ua/projectB.git folderName- создаст папку folderName и сделает там копию удаленного репозитория

git branch отобразит список веток
git branch -r отобразит список веток в удаленном репозитории
git branch cat создать ветку cat
git checkout cat переключится на ветку cat
git checkout v0.0.1 переключится на коммит с меткой v0.0.1
git checkout -b admin создает и переключается на ветку admin
git merge cat обьединяем текущую ветку с веткой cat
git branch -d cat удаляем ветку cat
git branch -D cat удаляем ветку cat, даже если есть не обьединенные изменения!

git tag отобразит список меток, обычно используется для именования версии релиза
git tag -a v0.0.3 -m «version 0.0.3»

git fetch — стянуть информацию с удаленного репозитория но не сливая ее с локальной

git rebase — перемещает все отличия из master и которых нет в origin/master во временное хранилище, запускает все коммиты из origin/master, запускает все коммиты из временной области.
git rebase —continue если был конфликт, то запускаем эту команду после его исправления
git rebase —skip пропускаем патч который вызвал конфликт
git rebase —abort отменить обьединение

git rm README — удаляет файл из локальной файловой системе
git rm —cached README прекращает следить за файлом, но остается в ФС

Проверка доступности мобильных абонентов

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

HLR (Home Location Register) — это централизованная база данных, которая содержит подробную информацию о каждом абоненте данной сети GSM-оператора. HLR содержит данные о SIM-картах данного оператора мобильной связи. Каждой SIM-карте сопоставлен уникальный идентификатор, называемый IMSI, который является ключевым полем для каждой записи в HLR.
HLR Lookup даёт местоположение с точностью до коммутатора.
С помощью HLR-запросов можно проверять статусы мобильных номеров и осуществлять чистку баз данных от неактуальных номеров. Сервис проверки номеров сохраняет конфиденциальность запроса и не беспокоит абонента.

HLR-запросы не подходят для проверки доступности абонентов в реальном времени.
Информация, получаемая из таких запросов, кешируется у операторов и может сутки или больше отдавать неактуальную информацию. Для проверки доступности номеров абонентов в реальном времени можно использовать Ping-SMS.

Данная услуга больше предназначена для проверки того, что абонент не заблокирован и был недавно в сети. Это полезно для чистки баз абонентов, чтобы удалить уже несуществующие из списка рассылок.

Ping-SMS — это специальным образом сформированное бинарное SMS-сообщение, не отображаемое в телефоне получателя и предназначенное для проверки номера абонента на доступность в реальном времени.
Полезно почитать ВИКИ

hhd serial number proxmox

В процессе работы, иногда нужно подменить серийный номер диска:

  • тестирования сетевых настроек(лабораторки на коленке), возникает необходимость в полнофункциональном роутере Mikrotik(ospf, bgp, etc)
  • Нужно виртуализировать ПО, которое привязывается к серийнику винчестера

На помощь к нам приходит Proxmox.

  1. Качаем машинку из http://rutracker.org/forum/viewtopic.php?t=4505614
  2. Создаем подобную машинку в Proxmox
  3. Заливаем на хост систему наш qcow2 диск, и подменяем им оригинальный диск(созданный самим Proxmox)
  4. Смотрим вывод команды qm showcmd номер_вируталки, находим и копируем строку а-ля:
    -device ahci,id=ahci0,multifunction=on,bus=pci.0,addr=0x7 -drive file=/var/lib/vz/images/106/vm-106-disk-1.qcow2,if=none,id=drive-sata0,format=qcow2,aio=native,cache=none,detect-zeroes=on -device ide-drive,bus=ahci0.0,drive=drive-sata0,id=sata0,bootindex=100
  5. Правим файл /etc/pve/nodes/ИМЯНОДЫ/qemu-server/НОМЕРВИРТУАЛКИ.conf:
    удаляем строку с оригинальным винтом sata0: local:106/vm-106-disk-1.qcow2,format=qcow2,size=1G
    и добавляем в самый верх строку

    args: СКОПИРОВАННЫЙТЕКСТ,serial=’СЕРИЙНИК’

    Получаем что-то типа: args: -device ahci,id=ahci0,multifunction=on,bus=pci.0,addr=0x7 -drive file=/var/lib/vz/images/106/vm-106-disk-1.qcow2,if=none,id=drive-sata0,format=qcow2,aio=native,cache=none,detect-zeroes=on -device ide-drive,bus=ahci0.0,drive=drive-sata0,id=sata0,bootindex=100,serial='QM00001'

  6. Запускаем машину и пользуемся.

В БОЕВОЙ СРЕДЕ ИСПОЛЬЗУЮ ТОЛЬКО ЛИЦЕНЗИОННЫЕ MIKROTIKи, что и вам советую. Скорее бы выпустили аналог packet-tracer для Микротиков.

git

  1. Для начала работы в git необходимо задать некоторые первоначальные настройки:

    $ git config —global user.name «User Name»
    $ git config —global user.email username@example.com
    $ git config —global core.editor mcedit
    $ git config —global merge.tool mcdiff
    $ git config —global color.ui true

    Где и как сохраняются эти настройки:

    • /etc/gitconfig содержит значения,общие для всех пользователей вашей системы и всех их репозиториев. запуская git config —system параметры читаются и сохраняются в этот файл.
    • ~/.gitconfig хранит настройки конкретного пользователя.Этот файл используется при указании параметра git config —global.
    • файл в каталоге Git (.git/config) в том репозитории, где вы находитесь в данный момент. Эти параметры ― только для данного конкретного репозитория.

    Настройки на каждом уровне подменяют настройки из предыдущего, то есть значения в .git/config «главнее» соответствующих значений в /etc/gitconfig.

  2. Если у вас, при просмотре diff, появляется, что-то типа:
    ESC[31m-{ESC[m
    ESC[31m- Oid res = InvalidOid;ESC[m
    ESC[31m- Relation rel;ESC[m
    ESC[31m- StringInfo buf;ESC[m
    ESC[31m- char *storageName = NULL;ESC[m
    ESC[31m- int prefix = 0;ESC[m
    ESC[31m-ESC[m

    необходимо:

    git config —global core.pager «less -r»

  3. Посмотреть настройки:

    $ git config —list

  4. Если мы хотим исключить папку testlib, все файлы mp4 и readme.doc из локального репозитория, правим файл
    .git/info/exclude:
    testlib/
    *.mp4
    readme.doc
    Если мы хотим исключить лог файлы из папки logs изо всех репозиториев, правим файл
    .gitignore:
    logs/*.log

sip notify

В процессе работы, надоело перегружать телефончики руками с помощью веб морды(да, я так долго боролся с ленью).
Для того чтобы произвести перечитку конфигов при провижинге труб или нужно произвести холодную или теплую перезагрузку и не лезть в каждую трубу, а сделать все централизованно из консоли Астериска нужно использовать sip notify. Читать далее «sip notify»

DB connections

Заметка для себя, чтобы не забыть:

Для соединения базы данных и приложения используется 2 способа:
1. Database connection Если создавать при каждом обращении к БД, получается проигрыш во времени: выполнение транзакции может занять несколько милисекунд, в то время как на создание соединения может уйти до нескольких секунд. С другой стороны, можно создать одно-единственное соединение и обращаться к базе данных только через него. Но это решение чревато проблемами, в случае высокой нагрузки: если одновременно сто пользователей попытается получить доступ к базе данных используя одно соединение, образуется очередь, что также пагубно сказывается на производительности приложения.
2. Database Connection Pool (dbcp) — это способ решения изложенной выше проблемы. Он подразумевает, что в нашем распоряжении имеется некоторый набор («пул») соединений к базе данных. Когда новый пользователь запрашивает доступ к БД, ему выдаётся уже открытое соединение из этого пула. Если все открытые соединения уже заняты, создаётся новое. Как только пользователь освобождает одно из уже существующих соединений, оно становится доступно для других пользователей. Если соединение долго не используется, оно закрывается.

Поддерживается в: IBM DB2, Microsoft SQL Server, Oracle, MySQL and PostgreSQL

http://en.academic.ru/dic.nsf/enwiki/1063221
http://habrahabr.ru/post/101342/

CSVtoMySQL

В процессе работы, нужно было перенести данные из точки А в базу данных, с помощью LibreOffice был сформирован csv файл с необходимыми данными, в следующем формате: разделитель запятая, текст заключаем в двойные кавычки «», переход на следующую строку \n.
Колонки в таблице какие нужно занести в базу:
number, stationport, stationside,lineside
Собственно это же нам нужно будет рассказать и MySQL.
Читать далее «CSVtoMySQL»

sumitomo type-39 error

В Sumitomo type-39 после кода ошибки, возникшей при проверке оптики, ставится индекс Y или X.
Self_T39

Проверка Этап тестирования Индикация Неисправность Меры по устранению
Электрика DRAM 1Е1 Аппарат просто не запустится Проверка или замена нужной платы (сервис-центр)
VRAM 1Е2 Ошибка при проверке VRAM
Термодатчик 1Е3 Сбой датчика
Датчик давления 1Е4 Сбой датчика
Системные часы 1Е5 Сбой часов, либо разряд батарейки
Напряжение 1Е6 Сбой в цепи питания аппарата
Блок моторов мотор ZL 2Е1 Неисправен мотор, конечный датчик или провода Проверка моторов (сервис-центр)
мотор ZR 2Е2
мотор VY 2Е3
Мотор VX 2Е4
мотор MSY 2Е5
мотор MSX 2Е6
Блок Оптики Max мощн. LED 3Е1 Неисправен LED. Чистка LED, зеркал, объективов (пользователь)
Регулировка или ремонт (сервис-центр)
Min мощн. LED 3Е2 Грязь на зеркале.
min текущ. LED 3Е3
max текущ. LED 3Е4
Яркость 3Е5 Сбой CCD-камеры.
Изменение Яркости 3Е6 Сбой датчика крышки.
Тест на пыль 3Е7
Нагреватель Нагреватель А 4Е1 Неисправен первый нагреватель Проверка подключений и ремонт (сервис-центр)
Нагреватель В 4Е2 Неисправен второй нагреватель
Термистор 4Е3 Неисправен термистор (или оба нагревателя)
превышение ожидания нагревателя 4Е4

Если кто не смог найти в гугле книгу по обслуге аппарата, могу скинуть, есть в PDF