Обновить
64K+

GitHub *

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

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

Нюансы шифрования в Git

Время на прочтение3 мин
Охват и читатели15K
Если вы захотели воспользоваться публичным ресурсом вроде GitHub или GoogleDrive для хранения своего репозитория, но при этом не готовы делиться со всем миром результатами своего труда, то вам поможет шифрование файлов в гит-репозитории. Это не сверхсекретная технология и на эту тему есть некоторое количество небольших статей в интернете (и даже на Хабре), но все они являются вариацией куска документации git посвященного атрибутам и тему совершенно не раскрывают. Кроме этого, в процессе использования git в этом режиме появляются ньюансы использования, которые не всегда легко понять и решить и которые я в этой статье постараюсь осветить.
Читать дальше →

Hacktoberfest Open Hack Day в Avito — 7 октября

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

Hacktoberfest близко. Как перестать бояться и начать контрибьютить? С кем обсудить самые полезные открытые проекты? Если вы любите опенсорс так же, как и мы, то приходите в гости в наш московский офис 7 октября. Будет кодовикторина, общение с нашими ведущими разработчиками, много опенсорса, свободный микрофон для рассказов о проектах и Hack Time в отличной компании. Под катом — подробности про мероприятие и темы, которые мы обсудим.



Happy Hacktoberfest!

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

Positive Technologies на GitHub

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

Поздравляю программистов с их профессиональным днем! В связи с этим праздником наша компания Positive Technologies решила рассказать о своей деятельности, напрямую связанной с разработкой, а именно с открытым исходным кодом и GitHub.


Positive Technologies  GitHub


В последнее время все больше и больше компаний, таких как Google, Microsoft, JetBrains, выкладывают в открытый доступ исходный код как небольших, так и крупных проектов. Positive Technologies славится не только высококлассными специалистами по информационной безопасности, но и большим количеством профессиональных разработчиков. Это позволяет ей также вносить свой посильный вклад в развитие движения Open Source.


У PT есть следующие GitHub-организации, поддерживающие открытые проекты компании:


В статье описываются эти организации и их проекты

Почему GitHub не может хостить ядро Linux

Время на прочтение13 мин
Охват и читатели47K
Некоторое время назад на отличной конференции maintainerati я пообщался с несколькими друзьями-мейнтейнерами о масштабировании по-настоящему больших проектов open source и о том, как GitHub подталкивает проекты к определённому способу масштабирования. У ядра Linux абсолютно иная модель, которую мейнтейнеры-пользователи GitHub не понимают. Думаю, стоит объяснить, почему и как она работает и чем отличается.

Ещё одной причиной для написания этого текста стала дискуссия на HN по поводу моего выступления «Мейнтейнеры не масштабируются», где самый популярный комментарий сводился к вопросу «Почему эти динозавры не используют современные средства разработки?». Несколько известных разработчиков ядра энергично защищали списки рассылки и предложение патчей через механизм, похожий на пулл-реквесты GitHub, Но по крайней мере несколько разработчиков графической подсистемы хотели бы использовать более современный инструментарий, который гораздо легче автоматизировать скриптами. Проблема в том, что GitHub не поддерживает тот способ, которым ядро Linux масштабируется на огромное число контрибуторов, и поэтому мы просто не можем перейти на него, даже для нескольких подсистем. И дело не в хостинге данных на Git, эта часть явно в порядке, а дело в том, как на GitHub работают пулл-реквесты, обсуждение багов и форки.
Читать дальше →

Продвинутый Jekyll

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

Jekyll — генератор статических сайтов. Это означает, что на вход ему даётся какая-либо информация, а на выходе получается набор HTML-страничек. Всё отлично когда сайт простой или даже одностраничный. Но что насчёт более сложных сайтов? Справится ли Jekyll? Будет ли удобно?


Данная публикация — попытка обобщить знания, полученные при создании нескольких веб-сайтов. Поэтому оставляю ссылки и на рабочие примеры, и на их полные исходники на GitHub. Уровень материала идёт от простого к сложному.

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

Параметрическое моделирование в САПР SolveSpace: «Неисповедимы пути Решателя» или «Червоточины Ньютона»

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

На первый взгляд, задача применения размерных ограничений к чертежу кажется не сложнее упражнения из школьного учебника. Точно так же показалось и мне, когда я впервые узнал о ней. В то время я работал в компании, которая занималась разработкой программного комплекса для проектирования индивидуальных жилых домов с подготовкой проектной документации "под ключ". В этом проекте я занимался разработкой алгоритма генерации многоскатных крыш, а впоследствии и всего геометрического ядра на основе Булевых операций, поэтому за дальнейшей историей я следил издалека. В какой-то определенный момент, заказчику захотелось, чтобы проектировщики могли просто указать размеры комнат, углы эркеров и ширину дверных проемов, а программа автоматически рассчитала бы все остальные параметры внешнего и внутреннего устройства дома. Эта мысль возникла у заказчика спонтанно, и поэтому срочно нужно было сделать “точно так же, как в CATIA”. Наш тимлид подошел к решению задачи с энтузиазмом и начал разрабатывать прототип. Он решал сотни уравнений в MathCAD, весь кабинет был завален графиками частных решений для двух, трех, четырех точек… Его изначальное предположение о том, что задачу можно решить аналитически, потерпело фиаско: на дворе был 2005, а это значило, что в интернете невозможно было найти хоть какую-то информацию по данной теме. В результате, после двух месяцев напряженных исследований, данную функциональность пришлось исключить.
Часть 1: Введение
Часть 2: Эскиз
Часть 3: Степени свободы и уравнения ограничений
Часть 4: «Неисповедимы пути Решателя» или «Червоточины Ньютона»

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

Подлинность ваших видео теперь неоспорима благодаря Prover

Время на прочтение3 мин
Охват и читатели11K
Сегодня я напишу про интересный проект интересных людей. Иван Писарев и Илья Свирин показали себя в проекте Нордавинд, самостоятельно разработав аппаратно-программные, очень простые и очень навороченные решения для разных сфер, от здоровья до безопасности. И вот недавно у них появилась идея…



Четыре миллиарда людей по всему миру владеют гаджетами. Создаваемый ими видеоконтент давно перестал использоваться лишь в развлекательных целях – сегодня это необходимая часть медийной, финансовой, страховой, юридической и медицинской отраслей. Выдаваемые за правду “фейки” не раз приводили к скандалам, а то и трагедиям, поэтому потребность в подтверждении подлинности видео-файлов необычайно высока. Сервис Prover, подтверждающий достоверность видео с привязкой к конкретному времени и устройству, был создан именно с этой целью.
Читать дальше →

Как мы собрали 1500 звезд на Гитхабе, соединив проверенную временем технологию и новый интерфейс

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


Недавно мы выпустили инструмент с открытым исходным кодом GraphQL Voyager. Удивительно, но он попал на первую страницу новостей Hacker News и GitHub, и в первые несколько дней получил 1000+ звезд. Сейчас у него уже более 1600 звезд.*


Людям понравился гладкий интерфейс, интерактивные функции и анимация. Мы использовали TypeScript, React, Redux, webpack и даже PostCSS, но это НЕ еще одна статья об этом. Давайте заглянем под капот...

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

GitHub переходит на GraphQL

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

22 мая компания GitHub объявила, что следующая версия их API будет использовать разработанную Facebook технологию под названием GraphQL.


В итоге GraphQL может прийти на смену самому популярному на сегодняшний день типу API — REST API.

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

Самый большой репозиторий Git на свете

Время на прочтение10 мин
Охват и читатели26K
Прошло уже три месяца с тех пор, как я опубликовал свою первую статью о наших попытках масштабировать Git для очень крупных проектов при помощи инициативы, которую мы назвали «Git Virtual File System». Напомню: GVFS в сочетании с некоторыми правками в Git позволяет работать с ОЧЕНЬ большими репозиториями, виртуализируя как папку .git, так и рабочую директорию. Вместо того, чтобы скачивать репозиторий целиком и проверять все файлы, инструмент динамично скачивает только те фрагменты, которые вам нужны, выявляя их на основании того, над чем вы работали до этого момента.

За это время много чего произошло, и я хочу поделиться с вами новостями. Три месяца назад GVFS был только мечтой. Не в том смысле, что его не существовало — у нас была готовая реализация — но в том, что он еще не показал себя в деле. Мы опробовали его на больших репозиториях, но не успели внедрить в рабочий процесс для сколько-нибудь значимого количества разработчиков. Поэтому у нас было только умозрительное убеждение, что все будет работать. Теперь же у нас есть подтверждение этому.

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

Непрерывная интеграция (CI) для GitHub проектов на С/C++ с CMake-сборкой

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

Про непрерывную интеграцию и её целебные свойства слышали, наверное, все — не буду повторять написанное в многочисленных вводных статьях и обзорах и рассказывать, что же такое непрерывная интеграция, и как именно она упрощает жизнь разработчикам, релиз-инженерам и менеджерам. Предполагается, что читатель и сам прекрасно понимает, что CI — вне зависимости от применяемых в проекте языков программирования — это стопроцентно правильный подход, но… Но вот до практического его внедрения руки в силу разных причин пока не дошли.


Данная статья — инструкция по прикручиванию базовой непрерывной интеграции (build-test-deploy) к гитхабовским C/C++ проектам с CMake сборкой — по непонятным причинам, на Хабре такого до сих пор не проскальзывало. Впрочем, если моё гугл-фу подвело меня, и таки проскальзывало — не беда. Лишний туториал, описывающий всё под несколько другим углом и предостерегающий от неповторимого набора набитых автором шишек, совершенно точно не повредит.

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

IQL — очередной SQL-генератор для Java

Время на прочтение6 мин
Охват и читатели10K
Несколько лет назад я принялся за разработку одного крупного проекта на PHP, который только и делал что писал, читал и обновлял тонны данных в SQL. Сразу же было решено написать для этого проекта конструктор SQL-запросов, который тогда сильно облегчил мне жизнь и по сей день помогает мне и мои коллегам в ежедневной работе. Дело в том, что выложить этот конструктор в общественный доступ я не могу, так как проект принадлежит не мне, да и сильно завязан этот конструктор на наш фреймворк.

В связи с чем я решил разработать его аналог на Java, в надежде, что он сослужит кому-то добрую службу, так как не всем нужен ORM, а JOOQ кажется слишком сложным
Читать дальше →

Реализация SSO через SAML с примером

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

Введение


Доброго времени суток, дорогой читатель. Я уже давно хотел написать статью на хабре и вот наконец-то этот момент настал. Из последних тем, которыми я занимался и о которых мне есть что рассказать — это была реализация SSO для одного сервиса. Хочу здесь сразу уточнить, что в принципе SSO через Facebook и Google уже было в сервисе до моего прихода. Моей же задачей было реализовать его через протокол SAML.


SSO (Single Sign-On), — технология единого входа пользователей, благодаря которой владея одной лишь учетной записью пользователь может посещать множество различных сервисов.


SAML — это популярный XML-протокол для реализации SSO. Как правило большие организации (enterprise) используют именно его, как проверенный и надежный вариант.


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

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

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

Твоя идея — ерунда

Время на прочтение5 мин
Охват и читатели28K
Я думал, что достиг желанного. Один из моих open-source проектов начал набирать небольшую аудиторию фолловеров на GitHub. Больше никакой нытливой неуверенности в себе, ведь около тысячи наблюдателей за звёздами следят за моим проектом — это всё, что нужно для подтверждения ценности. Это то, что можно вспоминать в моменты неуверенности. Напоминание, что я действительно достиг того, чего стою на самом деле. Никогда не думал, что звёзды могут отвернуться от меня.

* * *

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

Его ожидания от меня как мейнтейнера и моя собственная вера в своё желание делиться кодом — сочетание этих двух факторов привело к довольно невероятной череде событий, о которой я расскажу.
Читать дальше →

Переходим с Disqus на комментарии Github

Время на прочтение5 мин
Охват и читатели43K
Какое-то время я хотел убрать комментарии из своего блога; в основном, потому что здесь вообще мало комментариев, да и не хочется возиться с лишними «тормозами» от Disqus. Посмотрев на время загрузки Disqus, я был потрясён тем, что приходится терпеть посетителям сайта по моей вине (кроме тех, кто использует блокировщики вроде Privacy Badger и uBlock Origin.

Эта статья заточена под Hugo, но код легко адаптируется для любого сайта.

Что не так с Disqus?


Вот как выглядит типичный журнал запросов с включенным Disqus.


А вот лог после отключения Disqus.


ЧЕГО!?
Читать дальше →

Выделение подпроекта в отдельный репозиторий на github

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

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


Итак, что дано:


  • Есть большой репозиторий, содержащий множество папок. Каждая папка – это отдельный проект.

Что необходимо сделать:


  • Одну из папок перенести в отдельный репозиторий с сохранением ее истории коммитов.

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


Я использовал стандартный гитовый filter-branch. За основу я взял следующие статьи:



В этом посте я хочу немного адаптировать процесс для лучшего восприятия.

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

Противоречат ли новые условия использования GitHub авторскому леву?

Время на прочтение4 мин
Охват и читатели9K
Обновленные условия использования GitHub вызвали острое беспокойство, но хотя они приводят в замешательство, они не кажутся несовместимыми с авторским левом. Фонд свободного программного обеспечения (ФСПО), однако, по-прежнему рекомендует пользоваться другими сайтами для размещения программ.
Читать дальше →

Параметрическое моделирование в САПР SolveSpace: Степени свободы и уравнения ограничений

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

Важным условием корректности построенного эскиза является непротиворечивость наложенных ограничений. Если наложено меньше ограничений, чем требуется, некоторые параметры не могут быть однозначно определены, поэтому могут изменяться в некотором диапазоне значений. В таких случаях говорят, что чертеж имеет степени свободы (Degrees Of Freedom; DOF). Анализ степеней свободы позволяет инженеру-конструктору накладывать только необходимое и достаточное количество ограничений, не позволяя системе уравнений быть переопределенной (overconstrained), и не позволяя оставить какую-либо степень свободы без наложенных ограничений.
Часть 1: Введение
Часть 2: Эскиз
Часть 3: Степени свободы и уравнения ограничений
Часть 4: «Неисповедимы пути Решателя» или «Червоточины Ньютона»
image

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

GitHub внедрил систему обнаружения коллизий SHA-1

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


С 20 марта 2017 года при вычислении хешей SHA-1 на GitHub определяется и отклоняется любой контент, который обладает признаками возможной атаки SHAttered на коллизию хешей SHA-1. Об этом компания написала в официальном блоге. Таким образом, никто не сможет размещать здесь файлы из пары с одинаковыми хешами, но разным контентом. Хотя пока на практике таких атак никто не проводил нигде, кроме торрентов, но GitHub решил перестраховаться на всякий случай.
Читать дальше →

Параметрическое моделирование в САПР SolveSpace: Эскиз

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

Построение геометрии любой детали в SolveSpace начинается с проектирования эскиза (sketch). Эскиз представляет собой набор замкнутых контуров (циклов, loop), каждый из которых не должен иметь самопересечений и пересечений с другими контурами. Контуры состоят из примитивов (entity). Примитивы объединяются в контуры с помощью ограничения "точка-к-точке" (points coincident).
Часть 1: Введение
Часть 2: Эскиз
Часть 3: Степени свободы и уравнения ограничений
Часть 4: «Неисповедимы пути Решателя» или «Червоточины Ньютона»
image

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