Обновить
128K+

GitHub *

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

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

Ошибки, которые не находит статический анализ кода, потому что он не используется

Время на прочтение6 мин
Охват и читатели9.6K
Время от времени читатели наших статей о проверке открытых проектов обращают внимание, что статический анализатор кода PVS-Studio выявляет большой процент ошибок, которые незначительны или вообще не влияют на работу приложения. Это действительно так. Большинство важных ошибок уже поправлены благодаря ручному тестированию, отзывам пользователей и иным дорогим методам. При этом, многие из этих ошибок можно было бы найти ещё на этапе написания кода и исправить с минимальными потерями времени, репутации, денег. В этой статье будет приведено несколько примеров реальных ошибок, которые были бы сразу исправлены, если бы авторы проектов использовали статический анализ кода.

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

GitHub Package Registry будет поддерживать пакеты Swift

Время на прочтение1 мин
Охват и читатели2.3K
10 мая мы запустили ограниченный бета-тест GitHub Package Registry, службы управления пакетами, которая позволяет легко публиковать публичные или частные пакеты рядом с исходным кодом. В настоящее время сервис поддерживает знакомые инструменты управления пакетами: JavaScript (npm), Java (Maven), Ruby (RubyGems), .NET (NuGet), образы Docker, а также многое другое.

Рады анонсировать, что добавим поддержку пакетов Swift в GitHub Package Registry. Пакеты Swift позволяют легко делиться вашими библиотеками и исходным кодом в собственных проектах и с сообществом Swift. Работать над этим мы будем в партнерстве с ребятами из Apple.

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

C# или Java? TypeScript или JavaScript? Классификация языков программирования на основе машинного обучения

Время на прочтение6 мин
Охват и читатели15K
На GitHub представлено больше 300 языков программирования, начиная с общеизвестных языков, таких как Python, Java, и Javascript, и заканчивая эзотерическими языками, такими как Befunge, известными только малым группам людей.

Топ-10 языков программирования, размещенных на GitHub, по количеству репозиториев

Одна из проблем, с которой сталкивается GitHub — распознавание разных языков программирования. Когда какой-то код размещается в репозитории, очень важным является распознавание его типа. Это нужно из соображений поиска, оповещений об уязвимостях, подсветки синтаксиса, а также структурного представления контента репозитория пользователям.

На первый взгляд, распознавание языка является простой задачей, но это не совсем так. Linguist — это инструмент, который мы сейчас используем для определения языка программирования на GitHub. Linguist — это приложение на Ruby, использующее различные стратегии про распознаванию языка, в том числе данные о названиях и расширения файлов. Кроме того оно принимает во внимание модели Vim или Emacs, а также содержимое в верхней части файла (shebang). Linguist обрабатывает языковую неоднозначность эвристически и, если таким способом не получается, то использует наивный байесовский классификатор, обученный на небольшой выборке данных.

Хотя Linguist достаточно хорошо предсказывает на уровне файла (точность 84%), все ломается, когда файлы названы странно, а тем более, когда у файлов нет расширений. Это делает Linguist бесполезным для такого контента, как GitHub Gists или фрагментов кода в README, ошибках и pull requests.
Читать дальше →

Как секретный ключ Huawei попал в прошивки маршрутизаторов Cisco

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


Разработчики сканера IoT Inspector периодически проводят рутинную проверку прошивок разных производителей. Иногда находят уязвимости в устройствах Интернета вещей. Но последняя находка особенно удивительна. В прошивке маршрутизатора Cisco SG250 сканер нашёл несколько сертификатов и соответствующий секретный ключ сотрудника Futurewei Technologies, американской дочерней компании Huawei Technologies, по имени Гарри Ву (Garry Wu) с электронным адресом gary.wu1@huawei.com.

Но как они попали в прошивку маршрутизатора Cisco?
Читать дальше →

LLVM для Tensorflow, или компилятор эпохи конца закона Мура

Время на прочтение4 мин
Охват и читатели9.7K
Экосистема TensorFlow содержит ряд компиляторов и оптимизаторов, работающих на различных уровнях программного и аппаратного стека. Для тех, кто использует Tensorflow ежедневно, этот многоуровневый стек может порождать трудные для понимания ошибки, как времени компиляции, так и в рантайме, связанные с использованием разного рода железа (GPU, TPU, мобильных платформ и пр.)

Эти компоненты, начиная с графа Tensorflow, могут быть представлены в виде такой диаграммы:



На самом деле всё сложнее
Читать дальше →

Деплоим на PythonAnywhere из GitHub

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



Каждый может сделать так:


локальный проект → github


С (платным) ssh доступом вы сможете сделать так:


локальный проект → PythonAnywhere


В статье показано как (бесплатно) сделать так:


локальный проект → github → PythonAnywhere


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

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

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

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

Исследовательская группа Microsoft Research представила генеративно-состязательную нейросеть, которая способна генерировать изображения с несколькими объектами на основе текстового описания. В отличие от более ранних подобных алгоритмов text-to-image, способных воспроизводить изображения только базовых объектов, эта нейросеть может справляться со сложными описаниями более качественно.

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

Что общего между чисткой яйца и DevOps?

Время на прочтение8 мин
Охват и читатели4.3K
Перед вами перевод статьи Patrick Lee Scott, размещенной на сайте hackernoon.com. Автор предлагает познакомиться с несколькими важными принципами, которые помогут вам прокачаться в DevOps.

image

Пару дней назад я пытался почистить яйцо дурацким способом, и моя девушка Анжели спросила меня, зачем я это делаю.

Она взяла еще одно сваренное вкрутую яйцо и ударила его о разделочную доску, потом надавила на него и прокатила по столу. На чистку ушло всего 3 секунды. А я-то стоял и снимал скорлупу кусочек за кусочком.

Что я хочу этим сказать: мы преувеличиваем значение приложенных усилий.
Читать дальше →

Ansible: обновления в ключевых решениях для автоматизации вашего мира

Время на прочтение5 мин
Охват и читатели7.1K
Сообщество Ansible постоянно радует новым контентом – плагинами и модулями – создавая и много новой работы для тех, кто занят сопровождением Ansible, поскольку новый код нужно максимально быстро интегрировать в репозитории. Уложиться в сроки получается не всегда и запуск некоторых вполне готовых к выпуску продуктов откладывается до следующей официальной версии Ansible Engine. До недавнего времени у конечного пользователя был только один способ получения нового контента Ansible – вместе с новой версией Ansible Engine.



Для устранения неудобства сообщество Ansible начало работу над более гибкими вариантами создания и получения контента.
Читать дальше: Что нового в Ansible

Как реализовать деплой с GitHub на продакшн сервер, использовав Webhook

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


У меня давно вошло в привычку создавать репозитории на GitHub. Это куда эффективнее, чем держать все на Google Drive или, того хуже, на жестком диске. Но здесь сразу появляется вопрос: как выполнить деплой на рабочий сервер?

Большинство поисковых запросов выводили меня на Jenkins и другие средства непрерывного развертывания. Но мне хотелось найти иное решение. Так я вышел на бесплатный сервис Webhook.
Читать дальше →

Статический веб: возврат к истокам?

Время на прочтение6 мин
Охват и читатели20K
Мы обратимся к ранним годам интернета, чтобы понять нынешнюю популярность динамических сайтов. Затем рассмотрим преимущества статических сайтов с точки зрения производительности, скорости редактирования и поисковой оптимизации.

Сначала была статика.

В первые дни интернет был обществом энтузиастов, разработчиков и инженеров. Несмотря на частые сравнения между MySpace и Facebook, эти два сервиса принципиально отличаются. Они также хорошо демонстрируют разницу в «интернет-парадигме» соответствующего времени.

И то, и другое — социальные сети, но создание страницы на MySpace требовало базового понимания HTML и CSS. В конце концов, сайт открылся в 2003 году. С другой стороны, простой в использовании интерфейс Facebook помог расширить аудиторию до двух с лишним миллиардов пользователей.

За антагонизмом MySpace/Facebook лежит критическая точка напряжённости в интернете: как взаимодействовать с контентом, который мы редактируем? Тут есть два основных способа.
Читать дальше →

Вход в Azure DevOps с использованием учетных данных GitHub

Время на прочтение3 мин
Охват и читатели2.6K
В Microsoft мы сфокусированы на идее, которая заключается в том, чтобы дать разработчикам возможность быстрее создавать качественные приложения. Одним из способов достижения этой цели является предоставление ряда продуктов и услуг, охватывающих все этапы жизненного цикла разработки программного обеспечения. Это включает в себя IDE и инструменты DevOps, облачные платформы приложений и данных, а также, операционные системы, искусственный интеллект, IoT-решения и многое другое. Все они сосредоточены вокруг разработчиков, как отдельных лиц, работающих в командах и организациях, а также членов сообществ разработчиков.

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

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

GitHub Sponsors: новый способ внести свой вклад в open source

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

cover


Мы очень рады объявить о начале бета-тестирования GitHub Sponsors ― нового способа финансовой поддержки разработчиков программного обеспечения с открытым исходным кодом, которое мы используем каждый день. Участники open source комьюнити создают инструменты для каждого из нас и GitHub Sponsors ― это новый способ помогающий с финансированием их проектов.

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

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

Новая жизнь старых игр: максимально опенсорсный каталог source-портов (Java + PHP)

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

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


Представлен GitHub Package Registry

Время на прочтение2 мин
Охват и читатели16K
Вышел GitHub Package Registry, сервис управления пакетами, который позволяет легко публиковать публичные или частные пакеты рядом с исходным кодом.

Реестр пакетов GitHub полностью интегрирован с GitHub, поэтому вы можете использовать те же инструменты поиска, просмотра и управления, чтобы находить и публиковать пакеты, что и при работе с репозиториями. Вы также можете использовать одни и те же пользовательские и командные права для совместного управления кодом и пакетами. GitHub Package Registry обеспечивает быструю и надежную загрузку, с поддержкой глобальной CDN GitHub. Кроме того, он поддерживает знакомые инструменты управления пакетами: JavaScript (npm), Java (Maven), Ruby (RubyGems), .NET (NuGet) и Docker (и другие на подходе).

Вы можете попробовать GitHub Package Registry сегодня в ограниченной бета-версии. Он всегда будет бесплатным для использования для Open-Source. Более подробная информация о ценах будет объявлена ​​в ближайшее время.

Попробовать бета-версию

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

Быстрый кэш на C/C++, потокобезопасность

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

Сравнительное тестирование многопоточных кэшей реализованных на C/C++ и описание как устроен LRU/MRU кэш серии O(n)Cache**RU

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

Как быстрее вливать пуллы в upstream?

Время на прочтение2 мин
Охват и читатели2.8K
Друзья, сегодня я хочу рассказать вам про одну идею, которая давно поселилась в моей голове. Она возникла много лет назад и смысл её в том, чтобы сделать сервис, который бы аггрегировал и представлял в удобном виде все коммуникации, происходящие вокруг интересных вам GitHub проектов. Такой сервис будет в первую очень полезен тем, у кого много своих проектов на GitHub, или тем создаёт много пуллов и тикетов в чужих проектах.

Я верю в то, что люди, создающие тикеты и пуллы делают это ради того, чтобы улучшить те opensource проекты, которые им небезразличны. А для этого нужно, чтобы тикеты превращались в пуллы и пуллы своевременно мерджились. Чем быстрее будет происходить этот процесс, тем быстрее будет развиваться OpenSource.

Однако, на GitHub часто бывает, что коммуникация вокруг тикета или пулла затихает и теряется. Происходит это по разным причинам, но как правило — из-за того, что какой-то из участников пропускает email-отбивку о комментарии. Причины могут быть разные, а результат всегда один — тикет теряется и иногда проходят годы, прежде чем про него вспоминают.
Читать дальше →

DockerHub взломан

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


Несколько часов назад некоторым пользователям DockerHub разослали письма следующего содержания:

«В четверг, 25 апреля 2019 года, мы обнаружили несанкционированный доступ к одной из баз данных DockerHub, в которой хранится часть нефинансовых данных пользователей. После обнаружения мы сразу же предприняли всё необходимое для того, чтобы обезопасить данные пользователей.

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

GitHub полностью «удалил» репозиторий утилиты для обхода блокировок и весь аккаунт создателя

Время на прочтение2 мин
Охват и читатели186K
10 апреля 2019 года GitHub без объявления войны удалил репозиторий популярной утилиты GoodByeDPI, предназначенной для обхода государственных блокировок (цензуры) сайтов в Интернете.


UPD от 13.04.2019
Сухие факты. Недоступен не только репозиторий, а весь аккаунт целиком. Хотя для любого постороннего пользователя всё выглядит, как удаление, на самом деле — это shadowban, о чем сообщил автор. Далее он признался, что намеренно сохранил магнет-ссылки на видео со сценами убийств в Новой Зеландии на публичной странице своего аккаунта. Позже экспериментально выяснили, что блокировку автору программы для борьбы с блокировками дали автоматические алгоритмы. Но было и предположение, что бан был за спам с диапазона IP, к которому принадлежит автор. ТЧК

UPD от 16.04.2019
Судя по всему, shadowban с аккаунта ValdikSS снят, все репозитории восстановлены. Причина была в ссылках на видео со стрельбой.

Что такое DPI, как связан с блокировками и зачем с ним бороться (по версии автора):
Провайдеры Российской Федерации, в большинстве своем, применяют системы глубокого анализа трафика (DPI, Deep Packet Inspection) для блокировки сайтов, внесенных в реестр запрещенных. Не существует единого стандарта на DPI, есть большое количество реализации от разных поставщиков DPI-решений, отличающихся по типу подключения и типу работы.
Читать дальше →