20 причин,почему современным девушкам не нужны 30-летние мужчины

Очень понравилась статья, что прям решил скопипастить, с некоторыми пунктами я даже согласен)

1. Мы, тридцатилетние, не доверяем людям и особенно женщинам, потому не охотно пускаем новых людей в свой сформировавшийся мир.

2. Мы привыкли всего добиваться сами, поэтому знакомиться с нами первыми — гиблое дело.

3. Мы имеем устоявшиеся взгляды, а потому часто зануды.

4. Мы находимся в кризисе переосмысления жизни, а значит еще бОльшие зануды.

5. Мы очень хорошо понимаем чего хотим, поэтому требования к «своей женщине» у нас очень высоко завышены. Таких просто не существует.

6. Мы далеки от сказочных идеалов, поэтому знаем что демократия в счастливой паре невозможна. Мы приемлем только патриархат. Оно вам надо?

7. Мы рациональны, не верим в любовь, поэтому не способны на необдуманные поступки под влиянием чувств.

8. Мы прекрасно разбираемся в людях, поэтому раскусим вас в первый же час общения, как ни притворяйтесь. Хотя и останемся приветливы и милы.

9. Мы, по большей части, женоненавистники, знаем как вы умеете вскружить голову, поэтому путь к сердцу держим в надежной обороне. О-о-очень надежной.

10. Путь через желудок также закрыт, мы прекрасно умеем готовить сами себе.

11. Сексуальные отношения для нас тоже не проблема. За 30 лет мы успели обогатить свою жизнь теми, кому от нас нужно так же только это.

12. Секс из-за своей высокой доступности перестал быть для нас просто развлечением. Мы его воспринимаем скорее как высшую форму общения между мужчиной и женщиной. Нужны вам такие чудачества?

13. Мы, конечно, говорим о том, что пора завести семью, быт, детей, и бла-бла-бла. Конечно! Но на самом деле нам это не очень-то нужно. Иначе давно бы завели.

14. Нас не страшит одиночество, нам интересно быть наедине с собой. Поэтому, наверно, и вам с нами интересно.

15. Мы можем все выходные просто сидеть дома, поэтому вы нас и не видите.

16. Мы забыли про совесть и чувство вины. На нас не действуют слезы, лесть, обещания, обиды, кокетливость, ваша показная беспомощность и наигранная глупость. Мы раскусываем на раз любую манипуляцию. Короткая юбка тоже не поможет.

17. На фразу «мужчина должен» снисходительно улыбаемся. Мы сами знаем кому и за что должны. Уж точно не вам.

18. На фразу «ты бесчувственный мудак«, отвечаем спокойным согласием.

19. Даже ваше «ты не мужик» нас уже не ранит.

20. Мы обросли толстой кожей и научились на все забивать. Даже на саму жизнь.

 

Взято отсюда: http://madav.ru/2017/10/01/20-prichin-pochemu-sovremennym-devushkam-ne-nuzhny-30-letnie-muzhchiny/

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»