Поспорили штурман и главный механик чья должность на корабле важнее. Короче решили поменяться местами. Штурман в машинное, а механик на мостик.
Проходит время… К штурману подбегает матрос и кричит — Греется опорный подшипник коленвала!!!
— Штурман репу почесал и пошел к механику, а тот над картами склонился и тоже затылок задумчиво чешет.
— Слышь, у тебя там какой то подшипник греется у коленвала…
— Механик не глядя — Не мудрено, второй час по суше идем…
Основные команды Git
Шпаргалка с основными командами для Git
Конфигурация
git config --global user.name "[name]"
— установить имя, которое будет прикрепляться к коммиту.
git config --global user.email "[email address]"
— установить email, который будет прикрепляться к коммиту.
git config --global color.ui auto
— включить полезную подсветку командной строки.
git config --global push.default current
— обновлять удаленную ветку с таким же именем, что и локальная, при пуше изменений (если не указано иного).
git config --global core.editor [editor]
— установить редактор для редактирования сообщений коммита.
git config --global diff.tool [tool]
— установить программу для разрешения конфликтов при слиянии.
Создание репозиториев
git init [project-name]
— создать новый локальный репозиторий с заданным именем.
git clone [url]
— загрузить проект и его полную историю изменений.
Работа с изменениями
git status
— полный список изменений файлов, ожидающих коммита.
git status -s
— краткий вид изменений.
git diff
— показать изменения в файлах, которые еще не были добавлены в индекс коммита (staged).
git add [file]
— сделать указанный файл готовым для коммита.
git add .
— сделать все измененные файлы готовыми для коммита.
git add '*.txt'
— добавить только файлы, соответствующие указанному выражению.
git add --patch filename
— позволяет выбрать какие изменения из файла добавятся в коммит.
git diff --staged
— показать что было добавленно в индекс с помощью git add
, но еще не было закоммиченно.
git diff HEAD
— показать что изменилось с последнего коммита.
git diff HEAD^
— показать что изменилось с предпоследнего коммита.
git diff [branch]
— сравнить текущую ветку с заданной.
git difftool -d
— то же самое, что и diff
, но показывает изменения в заданной difftool.
git difftool -d master..
— показать изменения, сделанные в текущей ветке.
git diff --stat
— показать статистику какие файлы были изменены и как.
git reset [file]
— убрать файлы из индекса коммита (изменения не теряются).
git commit
— записать изменения в репозиторий. для написания сообщения откроется назначенный редактор.
git commit -m "[descriptive message]"
— записать изменения с заданным сообщением.
git commit --amend
— добавить изменения к последнему коммиту.
Работа с ветками
git branch
— список всех локальных веток в текущей директории.
git branch [branch-name]
— создать новую ветку.
git checkout [branch-name]
— переключиться на указанную ветку и обновить рабочую директорию.
git checkout -b <name> <remote>/<branch>
— переключиться на удаленную ветку.
git checkout -- [filename]
— вернуть файл в первоначальное состояние если он еще не был добавлен в индекс коммита.
git merge [branch]
— соединить изменения в текущей ветке с изменениями из заданной.
git merge --no-ff [branch]
— соединить ветки без режима “fast forwarding”.
git branch -a
— посмотреть полный список локальных и удаленных веток.
git branch -d [branch]
— удалить заданную ветку.
git branch -D [branch]
— принудительно удалить заданную ветку, игнорируя ошибки.
git branch -m <oldname> <newname>
— переименовать ветку.
Работа с файлами
git rm [file]
— удалить файл из рабочей директории и добавить в индекс информацию об удалении.
git rm --cached [file]
— удалить файл из репозитория, но сохранить его локально.
git mv [file-original] [file-renamed]
— изменить имя файла и добавить в индекс коммита.
Отслеживание файлов
.gitignore
— текстовый файл, в котором задаются правила для исключения файлов из репозитория. Например:
*.log
build/
temp-*
git ls-files --other --ignored --exclude-standard
— список всех игнорируемых файлов.
Сохранение фрагментов
git stash
— положить во временное хранилище все отслеживаемые файлы.
git stash pop
— восстановить последние файлы, положенные во временное хранилище.
git stash list
— список всех сохраненных изменений во временном хранилище.
git stash drop
— удалить последние файлы, положенные во временное хранилище.
Просмотр истории
git log
— список изменения текущей ветки.
git log --follow [file]
— список изменения текущего файла, включая переименования.
git log --pretty=format:"%h %s" --graph
— изменение вида отображения истории изменений.
git log --author='Name' --after={1.week.ago} --pretty=oneline --abbrev-commit
— посмотреть над чем работал заданный пользователь последнюю неделю.
git log --no-merges master..
— посмотреть историю изменений только для текущей ветки.
git diff [file-branch]..[second-branch]
— посмотреть различия между двумя заданными ветками.
git show [commit]
— показать метадату и изменения в заданном коммите.
git show [branch]:[file]
— посмотреть на файл в другой ветке, не переключаясь на неё.
Отмена коммитов
git reset
— убрать изменения из индекса коммита, сами изменения останутся.
git reset [commit/tag]
— отменить все коммиты после указанного коммита, изменения будут сохранены локально.
git reset --hard [commit]
— принудительно вернутся к указанному коммиту, не сохраняя историю и изменения.
Синхронизация изменений
git fetch [remote]
— загрузить всю историю с заданного удаленного репозитория.
git merge [remote]/[branch]
— слить изменения локальной ветки и заданной удаленной.
git push
— запушить текущую ветку в удаленную ветку.
git push [remote] [branch]
— запушить ветку в указанный репозиторий и удаленную ветку.
git push [remote] :[branch]
— в удаленном репозитории удалить заданную ветку.
git push -u origin master
— если удаленная ветка не установлена как отслеживаемая, то сделать ее такой.
git pull
— загрузить историю и изменения удаленной ветки и произвести слияние с текущей веткой.
git pull [remote][branch]
— указать конкретную удаленную ветку для слияния.
git remote
— посмотреть список доступных удаленных репозиториев.
git remote -v
— посмотреть детальный список доступных удаленных репозиториев.
git remote add [remote][url]
— добавить новый удаленный репозиторий.
Selenium, java выбор активного окна
// switch focus of WebDriver to the next found window handle (that your newly opened window)
for (String winHandle : driver.getWindowHandles()) driver.switchTo().window(winHandle);
Анекдот
Тестировщик заходит в бар и заказывает:
кружку пива,
2 кружки пива,
0 кружек пива,
999999999 кружек пива,
ящерицу в стакане,
–1 кружку пива,
qwertyuip кружек пива.
Первый реальный клиент заходит в бар и спрашивает, где туалет. Бар вспыхивает пламенем, все погибают.
Про гит
Две полезные ссылки про git: https://ohshitgit.com/ и https://git-scm.com/book/en/v2.
Третья полезная ссылка про гит https://github.com/k88hudson/git-flight-rules
Нужно выучить 2 команды: git rebase —interactive и git cherry-pick.) И гит — под абсолютным контролем независимо от неправильных действий выполненных до этого.)
После изучения git rebase придется учить git reflog. С другой стороны это одна из самых полезных команд.
Вот еще хорошая подборка идиом: https://github.com/k88hudson/git-flight-rules
WinAmp возвращается
Медиаплеер Winamp не обновлялся с декабря 2013 года. Теперь он станет мобильным приложением. Сейчас музыкальный проигрыватель принадлежит компании Radionomy Group из Нидерландов. В 2019 году они представят его новую версию. Это будет платформа, которая позволит прослушивать в одном месте все аудиофайлы: музыку с мобильного устройства и из облачных сервисов, подкасты, стриминговые радиостанции и плейлисты.
При запуске новой версии Winamp разработчики рассчитывают на «сильное сообщество», которое насчитывает до 100 миллионов пользователей в месяц, причем многие из них живут за пределами США. «Пользователи Winamp действительно повсюду. Огромное количество. У нас по-настоящему большое и сильное сообщество», — сказал Сабунджян. Последние годы именно пользователи поддерживали проект, выпуская неофициальные обновления для Winamp.
Планируется выпустить Winamp для iOS и Android. Оригинальный Winamp для компьютеров также будет обновлен. В сентябре в сети появилась версия 5.8, которая официально выйдет 18 октября. Она, в частности, решает проблему совместимости с компьютерами на базе Windows 10 и исправляет существующие ошибки. Также в этой версии стали бесплатными все функции, ранее доступные в платной версии Winamp Pro.
Java жрет память
Что делать, если приложение написанное на Java жрет много оперативки? Может быть это ваш случай:
(где-то на хабре была байка, что один опытный разработчик начинал все программы с похожей строчки, а когда начальство жаловались, что памяти не хватает и надо оптимизировать код, уменьшал в ней число ;)
static int a[1024*1024*1024/sizeof(int)];
Java, работа с датой
Форматирование даты.
Преобразование даты в строку по формату.
увеличение даты на дни, недели или часы.
Date dateNow;
dateNow = new Date();
SimpleDateFormat formatDate = new SimpleDateFormat("yyyyMMddHHmmssSSS");
SimpleDateFormat formatDate1 = new SimpleDateFormat("dd MM yyyy");
String newDeviceImei = formatDate.format(dateNow);
String startDate = formatDate1.format(dateNow);
Calendar c = Calendar.getInstance();
c.setTime(dateNow);
c.add(Calendar.DATE, 30);
Date currentDatePlus = c.getTime();
String endDate = formatDate1.format(currentDatePlus);
String deviceModel = "Apple iPhone 8";
Git, как переименовать ветку
Сначала переименовываем локальную ветку:
>git branch -m old_name new_name
Затем, если нужно переименовываем ветку на сервере:
>git push origin :old_name
>git push -u origin new_name
Обратите внимание
— первая команда это удаление старой ветки;
— вторая — это пуш новой ветки с «закреплением» -u = —set-upstream;
— можно объединить эти две команды в одну
>git push -u origin :old_name new_name
Лучшее с баша
Некоторые игры запускать на линуксе интереснее чем играть в них
xxx: Нативная поддержка в основных браузерах ожидается примерно никогда?
yyy: И даже позже
ххх: Скоро каникулы закончатся, хакиров станет меньше. У них алгебра начнётся…
ууу: А самых гениальных нянечки в детском садике запрут.