Обновить
40.03

GitHub *

Веб-сервис для хостинга и разработки IT-проектов

Сначала показывать
Порог рейтинга
Уровень сложности

Коммиты — это снимки, а не различия

Время на прочтение14 мин
Охват и читатели51K

Git имеет репутацию запутывающего инструмента. Пользователи натыкаются на терминологию и формулировки, которые вводят в заблуждение. Это более всего проявляется в "перезаписывающих" историю командах, таких как git cherry-pick или git rebase. По моему опыту, первопричина путаницы — интерпретация коммитов как различий, которые можно перетасовать. Однако коммиты это не различия, а снимки! Я считаю, что Git станет понятным, если поднять занавес и посмотреть, как он хранит данные репозитория. Изучив модель хранения данных мы посмотрим, как новый взгляд помогает понять команды, такие как git cherry-pick и git rebase.

Читать далее

Шесть пасхалок GitHub

Время на прочтение3 мин
Охват и читатели15K
В недрах кода GitHub скрыто немало пасхалок. Здесь мы поговорим о некоторых из них.



Кстати, вы знали о том, что фразу «Easter egg» («пасхальное яйцо», в просторечии — «пасхалка») придумал в 1979 году Стив Райт — директор по разработке программного обеспечения Atari? Если вы смотрели фильм «Первому игроку приготовиться» — значит вам всё уже должно быть понятно. Вот фрагмент фильма, где игрок находит первую в мире пасхалку, скрытую в классической игре Adventure.
Читать дальше →

Это не работает

Время на прочтение9 мин
Охват и читатели9K
8 утра. Как и в любой другой день, я быстро просматриваю уведомления GitHub через Octobox.

  • «Проблема»
  • «Не работает»
  • «Сломанный»
  • «Сбой»
  • «Ошибка»
  • «Баг»
  • «Не работает»
  • «Поломка»
  • «Не могу выстроить»
  • «Не удалось установить»
  • «Не работает»
  • «Помощь»
  • «Не компилируется»
  • «Ошибка»
  • «Не подключается»
  • «Проблема»

Отлично. Ничего особенного.

Подавляющее большинство проектов с открытым исходным кодом были рождены таким же образом. Желание быстро решить личную задачу или чему-то научиться.

Почему бы не опубликовать код? Это может быть полезно другим людям, и удобно, если код будет заархивирован и проиндексирован на GitHub.

Написаны первые строчки кода. Этот код некрасивый, но он уже частично решает исходную проблему. Пора отправить его на GitHub. Это кажется большим достижением.

Система отслеживания ошибок может быстро начать заполняться. «Спасибо, это именно то, что мне нужно» — было бы очень приятно такое прочитать, но вы никогда не увидите такого комментария. Вероятнее всего:

«Это не работает».

Очевидно, что проект ДЕЙСТВИТЕЛЬНО «работает». Вы уже пару дней пользуетесь им ежедневно, и он делает именно то, что вам нужно.
Читать дальше →

Делаем телеграм бота за 5 минут: быстрый старт с продвинутым шаблоном

Время на прочтение2 мин
Охват и читатели31K

В последнее время я сделал насколько много ботов для телеграмма, что крайне преисполнился в том, как их писать, как хостить, да и в принципе выработал красивый шаблон для быстрого их создания.

Потыкать в проект, сделанный на этом шаблоне, можно тут.

Сделать бота за 5 минут

Легкий DataBinding для Android

Время на прочтение7 мин
Охват и читатели11K

Здравствуйте уважаемые читатели. Все мы любим и используем DataBinding, который представила компания Google, для связи моделей данных с вьюшками через ViewModel. В этой статье, хочу поделиться с вами, как мне удалось унифицировать этот процесс с помощью языка Kotlin, и уместить создание адаптеров для RecyclerView, ViewPager и ViewPager2 в несколько строчек кода.

Читать далее

Масштабируемый Продакшн-реди Телеграм бот на Django

Время на прочтение6 мин
Охват и читатели41K

На хабре очень много статей о том, как создать простейшего Телеграм бота с кнопками и логикой. Есть инструкции, как это все запустить на сервере. В этой статье я расскажу, как делать масштабируемых ботов "для продакшена", которыми смогут пользоваться сотни тысяч пользователей.

Читать далее

Продвинутые функции гита, о которых вы, возможно, не знали

Время на прочтение9 мин
Охват и читатели22K

Git – очень мощный инструмент, который практически каждый разработчик должен использовать ежедневно, но для большинства из нас git сводится к нескольким командам: pull commit push. Однако, чтобы быть эффективным, продуктивным и обладать всей мощью git, необходимо знать ещё несколько команд и трюков. Итак, в этой статье мы исследуем функции git, которые просто запомнить, применять и настроить, но которые могут сделать ваше время с git гораздо более приятным.

Кладите этот пост в закладки, если хотите быстро научить новичка (или просто неосведомлённого человека) умело пользоваться git.

Приятного чтения!

Грубая оценка проблемности GitHub-проектов

Время на прочтение4 мин
Охват и читатели4.2K

Здравствуйте, меня зовут Дмитрий Карловский и я… практикую терморектальную ароматерапию. Понимаю, что каждый любит своё болото, и будет защищать его до последней капли жижи. Тем не менее, высокая инженерная культура требует объективности в оценке инструментов.


Часто для решения одной и той же задачи существует более чем один подходящий по функциональности вариант. При прочих равных, хотелось бы выбрать такой проект, который доставит меньше всего проблем. Но как навскидку оценить объём этих проблем, не тратя несколько человеколет для собственноручного набивания всевозможных шишек?


Что ж, давайте разберём, какие бывают проблемы, как их оценить и посравниваем некоторые популярные проекты.

Читать дальше →

Примеры грамотного применения SSH-шаблонов

Время на прочтение6 мин
Охват и читатели10K


SSH-сертификаты — очень мощный инструмент. Первоначально в удостоверяющем центре step-ca мы реализовали только минимальный набор функций для аутентификации по сертификатам пользователя и хоста. Затем добавили шаблоны сертификатов X.509, а ещё в августе прошлого года — и SSH-шаблоны, в версии 0.15.2. Наконец, мы задокументировали эту функцию и готовы о ней рассказать.

Шаблоны для сертификатов SSH действуют аналогично шаблонам X.509: это JSON-файлы, написанные в Go text/template. Они применяются для настройки SSH-сертификатов, которые выдаёт step-ca. Давайте посмотрим, что представляют собой эти шаблоны и как их можно использовать.
Читать дальше →

Git для новичков (часть 2)

Время на прочтение4 мин
Охват и читатели179K

В прошлой статье, я рассказал, что такое Git, как его установить и выложить свой код на GitHub. Сегодня мы поговорим про работу в команде над одним проектом. И как это устроено в Git.

В данной статье, вся работа с Git будет через командную строку.

Читать далее

Публикация Go приложения в GitHub

Время на прочтение7 мин
Охват и читатели11K

Пост представляет собой небольшой контрольный список (checklist) при публикации Go приложения на Github'е.

TLDR:

- Makefile как входная точка для выполнения основных действий

- Линтеры и тесты как инструменты повышающие качество кода

- Dockerfile как способ распространения приложения

- Github Actions как возможность автоматической сборки и выкладки приложения при новых изменениях

- Goreleaser как инструмент для публикации релизов и пакетов

Результатом должно быть опубликованное приложение с настроенными инструментами которые позволяют легко сопровождать приложение в процессе его существования. В качестве реализации я буду рассматривать примеры на основе утилиты pgcenter.

Вперед!

Как в GitHub смотреть красивые отчеты об ошибках с помощью SARIF

Время на прочтение7 мин
Охват и читатели5K

Вы пользуетесь GitHub, пишете код и делаете прочие веселые штуки. Для повышения качества своей работы и оптимизации своего времени используете статический анализатор. И вот вам приходит идея - а почему бы не смотреть на ошибки, которые выдал анализатор, прямо в GitHub? Да и еще, чтобы это красиво выглядело. Что же делать в этом случае? Ответ очень простой. Ваш выбор – SARIF. О том что это такое, как это настроить, и будет рассказано в данной статье. Приятного чтения.

Читать далее

Я спарсил больше 1000 топовых Github-профилей по машинному обучению и вот что я узнал

Время на прочтение7 мин
Охват и читатели16K


При поиске по ключевой фразе «машинное обучение» (речь идет об англоязычном ключе «machine learning» — прим. перев.) я нашел 246632 репозиториев по машинному обучению. Поскольку все они имеют отношение к этой отрасли, я ожидал, что их владельцы являются экспертами или хотя бы достаточно компетентны в машинном обучении. Поэтому я решил проанализировать профили этих пользователей и показать результаты анализа.
Читать дальше →

Ближайшие события

На GitHub предлагают запустить каталог мобильных приложений

Время на прочтение2 мин
Охват и читатели8.1K
В конце января компания Google ни с того ни с сего удалила из каталога Play Store приложение Element (бывший Riot) — децентрализованный мессенджер, который работает на федеративной системе серверов Matrix. Кто-то из пользователей пожаловался, что в каком-то канале на каком-то сервере Matrix он увидел неприличный контент — и Google просто взяла и удалила программу. Как говорят некоторые комментаторы, это аналогично запрету браузера за то, что в нём открыли неприличный сайт, или запрету почтового клиента за то, что он принял неприличное письмо. К чести Google, она признала ошибку: вице-президент лично извинился перед разработчиками Element, а приложение вернули на место.

Но мы видим, что происходит с другими. Например, Павел Дуров был вынужден удалить ряд российских телеграм-каналов под давлением Apple. Если верить Павлу, без выполнения этого требования Apple блокировала выпуск экстренного обновления Telegram для iOS.
Читать дальше →

Git для новичков (часть 1)

Время на прочтение5 мин
Охват и читатели896K

Git - это консольная утилита, для отслеживания и ведения истории изменения файлов, в вашем проекте. Чаще всего его используют для кода, но можно и для других файлов. Например, для картинок - полезно для дизайнеров.

С помощью Git-a вы можете откатить свой проект до более старой версии, сравнивать, анализировать или сливать свои изменения в репозиторий.

Читать далее

Как подружить ltree и Laravel

Время на прочтение15 мин
Охват и читатели5K

Вообще Postgres очень известен и о расширении ltree написано, если немного, то достаточное кол-во публикаций, в том числе и на Хабре тоже, да и сообщество Laravel довольно обширное.

Но как ни странно, я обнаружил полное отсутствие каких-либо библиотек для работы с расширением ltree (от PostgreSQL) под Laravel на GitHub.

Есть некоторые попытки для Yii2, также есть наработки для Symfony (по моему bundle для 2-й, из коробки не работает), и на этом, пожалуй, все.

Это очень грустно, что и послужило поводом написания данной статьи, как наверное и от части, желание поделиться с вами своим опытом работы с древовидными справочниками в Laravel, т.е. как мы работаем с ltree в своих проектах, собственно, почему в итоге мы выделили эти компоненты в GitHub в общий доступ.

На мой взгляд, это очень удобная библиотека, о которой я вам сегодня хочу рассказать. И буду очень рад, если вам она будет полезна.

Погнали!

Как найти email пользователя GitHub и написать Telegram бота для решения этой задачи?

Время на прочтение2 мин
Охват и читатели21K

Этот пост будет полезен двум категориям людей: IT-рекрутерам и начинающим разработчикам, которые хотят научиться писать простенькие программы для решения практических задач.

Задача: известен профиль пользователя на GitHub, необходимо найти email этого пользователя

Решение: один запрос к API GitHub и телеграм-бот, которого мы напишем в этом посте

Идея написать бота пришла ко мне после того, как коллега поделилась со мной этим способом...

Читать далее

Расширяем возможности миграций Laravel за счет Postgres

Время на прочтение10 мин
Охват и читатели10K

Все, кто однажды начинал вести более-менее нормальный Enterprise проект на Laravel, сталкивался с тем, что стандартных решений, которые предлагает Laravel из коробки, уже недостаточно.

А если вы, как и я, используете в своих проектах Postgres, то рано или поздно вам потребуются плюшки этой замечательной СУБД, такие как: различного рода индексы и констрейнты, расширения, новые типы и тд...

Сегодня, как вы уже заметили, мы будем говорить про Postgres, про миграции Laravel, как это все вместе подружить, в общем, обо всем том, чего нам не хватает в стандартных миграциях Лары.

Ну а для тех, кто не хочет погружаться в тонкости внутреннего устройства Laravel, может просто скачать пакет, расширяющий возможности миграций Laravel и Postgres по этой ссылке и использовать его в своих проектах.

Но я все же рекомендую не пролистывать, а прочитать все до конца.

Погнали

Интеграция PHP проекта на GitHub и Scrutinizer

Время на прочтение7 мин
Охват и читатели3.8K

Есть такой продвинутый инструмент Scrutinizer CI.

Для OpenSource он абсолютно бесплатный и платный для приватных репозиториев.

Вы о нем слышали, наверное, а если нет, то лично я использую его для анализа кода на различного рода уязвимости, а также в качестве замены статическому анализатору типа Psalm, ну и для покрытия конечно же, т.к. при довольно простой сквозной интеграции с GitHub оно внедряется в ваши PR и можно ревьюить код, наблюдая покрытие по аналогии с Cubertura в GitLab.

Это удобно, но к моему великому удивлению, на хабре, как и в целом на просторах интернета, довольно мало информации о том, как быстро и просто подключить этот крутой инструмент к вашему репозиторию в GitHub, ну а если вы еще и английского не знаете, то картина еще более грустная.

Поэтому я решил поделиться с вами своим опытом интеграции со Scrutinizer CI, рассказать о нюансах и тд...

Поехали

Автоматизация ручных действий с GitHub Actions

Время на прочтение10 мин
Охват и читатели18K

GitHub Actions — инструмент для автоматизации рутинных действий вашего пакета на GitHub.

Из личного опыта расскажу, как без опыта и знаний о настройке CI, я научился автоматизировать рутину в своем Open Source проекте всего за день и что на самом деле это действительно не так страшно и сложно, как многие думают.

GitHub предоставляет действительно удобные и рабочие инструменты для этого.

Читать далее

Вклад авторов