mirror of
https://github.com/EbookFoundation/free-programming-books.git
synced 2025-01-22 10:28:52 +00:00
Merge branch 'EbookFoundation:master' into master
This commit is contained in:
commit
98c73d1c16
@ -1,4 +1,4 @@
|
||||
*Lea esto en otros idiomas: [English](CONTRIBUTING.md), [Français](CONTRIBUTING-fr.md), [简体中文](CONTRIBUTING-zh.md), [繁體中文](CONTRIBUTING-zh_TW.md), [فارسی](CONTRIBUTING-fa_IR.md), [Tiếng Việt](CONTRIBUTING-vn.md).*
|
||||
*Lea esto en otros idiomas: [English](CONTRIBUTING.md), [Français](CONTRIBUTING-fr.md), [简体中文](CONTRIBUTING-zh.md), [繁體中文](CONTRIBUTING-zh_TW.md), [فارسی](CONTRIBUTING-fa_IR.md), [Tiếng Việt](CONTRIBUTING-vn.md), [Русский](CONTRIBUTING-ru.md).*
|
||||
|
||||
<a name="contributor-license-agreement"></a>
|
||||
## Acuerdo de Licencia
|
||||
|
@ -1,4 +1,4 @@
|
||||
*این متن را در زبانهای دیگر بخوانید: [English](CONTRIBUTING.md), [Français](CONTRIBUTING-fr.md), [Español](CONTRIBUTING-es.md), [简体中文](CONTRIBUTING-zh.md), [繁體中文](CONTRIBUTING-zh_TW.md), [Tiếng Việt](CONTRIBUTING-vn.md).*
|
||||
*این متن را در زبانهای دیگر بخوانید: [English](CONTRIBUTING.md), [Français](CONTRIBUTING-fr.md), [Español](CONTRIBUTING-es.md), [简体中文](CONTRIBUTING-zh.md), [繁體中文](CONTRIBUTING-zh_TW.md), [Tiếng Việt](CONTRIBUTING-vn.md), [Русский](CONTRIBUTING-ru.md).*
|
||||
<div dir="rtl">
|
||||
|
||||
## توافقنامهی مجوز همکاری
|
||||
|
@ -1,4 +1,4 @@
|
||||
*Lisez ceci dans d'autres langues: [English](CONTRIBUTING.md), [Español](CONTRIBUTING-es.md), [简体中文](CONTRIBUTING-zh.md), [繁體中文](CONTRIBUTING-zh_TW.md), [فارسی](CONTRIBUTING-fa_IR.md), [Tiếng Việt](CONTRIBUTING-vn.md).*
|
||||
*Lisez ceci dans d'autres langues: [English](CONTRIBUTING.md), [Español](CONTRIBUTING-es.md), [简体中文](CONTRIBUTING-zh.md), [繁體中文](CONTRIBUTING-zh_TW.md), [فارسی](CONTRIBUTING-fa_IR.md), [Tiếng Việt](CONTRIBUTING-vn.md), [Русский](CONTRIBUTING-ru.md).*
|
||||
|
||||
## Contrat de Licence des Contributeurs
|
||||
En contribuant, vous acceptez la [LICENCE](https://github.com/ElivreFoundation/free-programming-livres/blob/master/LICENSE) de ce repositoire.
|
||||
|
232
CONTRIBUTING-ru.md
Normal file
232
CONTRIBUTING-ru.md
Normal file
@ -0,0 +1,232 @@
|
||||
*Доступно на других языках: [English](CONTRIBUTING.md), [Français](CONTRIBUTING-fr.md), [Español](CONTRIBUTING-es.md), [简体中文](CONTRIBUTING-zh.md), [繁體中文](CONTRIBUTING-zh_TW.md), [فارسی](CONTRIBUTING-fa_IR.md), [Tiếng Việt](CONTRIBUTING-vn.md).*
|
||||
|
||||
<a name="contributor-license-agreement"></a>
|
||||
## Лицензионное соглашение с участником
|
||||
|
||||
Принимая участие, вы соглашаетесь с [ЛИЦЕНЗИЕЙ](https://github.com/EbookFoundation/free-programming-books/blob/master/LICENSE) этого репозитория.
|
||||
|
||||
<a name="contributor-code-of-conduct"></a>
|
||||
## Кодекс поведения автора
|
||||
|
||||
Принимая участие, вы соглашаетесь соблюдать [Кодекс поведения](https://github.com/EbookFoundation/free-programming-books/blob/master/CODE_OF_CONDUCT-ru.md) этого репозитория.
|
||||
|
||||
<a name="in-a-nutshell"></a>
|
||||
## В двух словах
|
||||
|
||||
1. «Ссылка для легкой загрузки книги» не всегда является ссылкой на *бесплатную* книгу. Пожалуйста, размещайте только бесплатный контент. Убедитесь, что это бесплатно. Мы не принимаем ссылки на страницы, которым *требуются* адреса электронной почты на рабочем домене для получения книг. Однако мы приветствуем списки, которые запрашивают их.
|
||||
2. Вам необязательно знать Git: если вы нашли что-то интересное, чего *еще нет в этом репозитории*, пожалуйста, откройте [Issue](https://github.com/EbookFoundation/free-programming-books/issues) с вашими предложениями.
|
||||
- Если вы знакомы с Git, пожалуйста форкните репозиторий и пришлите пулреквест.
|
||||
3. У нас есть 5 видов списков. Выберите подходящий:
|
||||
|
||||
- *Книги*: PDF, HTML, ePub, сайт на основе gitbook.io, репозиторий Git и т. Д.
|
||||
- *Курсы*: курс - это учебный материал, который не является книгой. [Это курс](http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/).
|
||||
- *Интерактивные учебные пособия*: интерактивный веб-сайт, который позволяет пользователю вводить код или команды и оценивать результат (под «результатом» мы не подразумеваем «оценку»). например: [Попробуйте Haskell](http://tryhaskell.org), [Попробуйте Github](http://try.github.io).
|
||||
- *Подкасты и скринкасты*: подкасты и скринкасты.
|
||||
- *Наборы задач и соревновательное программирование*: веб-сайт или программа, которое позволяет вам оценить свои навыки программирования, решая простые или сложные задачи, с проверкой кода или без нее, со сравнением результатов с результатами других пользователей или без него.
|
||||
|
||||
4. Обязательно следуйте [Руководству, приведённому ниже](#guidelines) и соблюдайте [Markdown форматирование](#formatting) файлов.
|
||||
|
||||
5. GitHub Actions запустит тесты, чтобы убедиться, что ваши списки отсортированы по алфавиту и соблюдаются правила форматирования. Обязательно проверьте, чтобы ваши изменения прошли проверку.
|
||||
6.
|
||||
<a name="guidelines"></a>
|
||||
### Руководство
|
||||
|
||||
- Убедитесь что книга бесплатна. При необходимости проверьте еще раз. Администраторам помогает, если вы описываете в PR, почему вы думаете, что книга бесплатная.
|
||||
- Мы не принимаем файлы, размещенные на google drive, dropbox, mega, scribd, issuu и других подобных платформах для загрузки файлов.
|
||||
- Вставляйте ссылки в алфавитном порядке. Если вы видите ссылку нарушающую порядок, измените ее порядок и отправьте PR
|
||||
- Используйте ссылку с наиболее авторитетным источником (то есть сайт автора лучше, чем сайт редактора, что лучше, чем сторонний сайт)
|
||||
+ не с файловых хостингов (включая (но не ограничиваясь) ссылками на Dropbox и Google Drive)
|
||||
- всегда предпочитайте ссылку https вместо ссылки http - если они находятся в одном домене и обслуживают один и тот же контент
|
||||
- в корневых доменах удалите косую черту в конце: `http://example.com` вместо `http://example.com/`
|
||||
- всегда предпочитайте самую короткую ссылку: `http://example.com/dir/` лучше, чем `http://example.com/dir/index.html`
|
||||
+ избегайте сервисы сокращения ссылок
|
||||
- Обычно предпочитают ссылку на "актуальную" версию, чем на конкретную: `http://example.com/dir/book/current/` лучше, чем `http://example.com/dir/book/v1.0.0/index.html`
|
||||
- Если ссылка имеет просроченный сертификат/самоподписанный сертификат/SSL-сертификат любого другого типа:
|
||||
1. *замените её* его эквивалентом http, если это возможно (поскольку принятие исключений может быть затруднено на мобильных устройствах).
|
||||
2. *оставьте её*, если версия http недоступна, но ссылка все еще доступна через https путем добавления исключения в браузер или игнорирования предупреждения.
|
||||
3. *удалите* в противном случае.
|
||||
- Если ссылка существует в нескольких форматах, добавьте отдельную ссылку с примечанием о каждом формате
|
||||
- Если ресурс существует в разных местах в Интернете
|
||||
+ используйте ссылку с наиболее авторитетным источником (это означает, что сайт автора лучше, чем сайт редактора, лучше, чем сторонний сайт)
|
||||
+ если они ссылаются на разные выпуски и вы считаете, что эти выпуски достаточно разные, чтобы их стоило сохранить, добавьте отдельную ссылку с примечанием о каждом выпуске (см. [Issue #2353](https://github.com/EbookFoundation/free-programming-books/issues/2353), чтобы обсудить форматирование.)
|
||||
- Предпочитайте атомарные коммиты (по одному коммиту на каждое добавление/удаление/модификацию) большим коммитам. Не нужно собирать все коммиты в один перед тем, как отправить PR. (Мы никогда не будем настаивать на этом, поскольку это просто вопрос удобства для сопровождающих)
|
||||
- Если книга более старая, укажите дату публикации в названии.
|
||||
- Укажите имя автора или имена там, где это необходимо. Вы можете сократить списки авторов с помощью «и др.».
|
||||
- если книга не закончена, и работа над ней продолжается, добавьте пометку «в процессе», как описано [ниже.](#in_process)
|
||||
- если перед загрузкой запрашивается адрес электронной почты или настройка учетной записи, добавьте в скобки примечания на соответствующем языке, например: `(адрес электронной почты *запрашивают*, но он не требуется для загрузки)`
|
||||
|
||||
<a name="formatting"></a>
|
||||
### Форматирование
|
||||
- Все списки представляют собой файлы с расширением .md. Попробуйте изучить синтаксис [Markdown](https://guides.github.com/features/mastering-markdown/). Это просто!
|
||||
- Все списки начинаются с индекса. Идея состоит в том, чтобы перечислить и связать там все разделы и подразделы. Храните их в алфавитном порядке.
|
||||
- В разделах используются заголовки уровня 3 (`###`), а в подразделах используются заголовки уровня 4 (`####`).
|
||||
|
||||
Идея состоит в том, чтобы иметь:
|
||||
- `2` пустые строки между последней ссылкой и новым разделом.
|
||||
- `1` пустую строку между заголовком и первой ссылкой его раздела.
|
||||
- `0` пустых ссылок между двумя ссылками.
|
||||
- `1` пустую строку в конце каждого `.md` файла.
|
||||
|
||||
Пример:
|
||||
|
||||
[...]
|
||||
* [Шикарная книга](http://example.com/example.html)
|
||||
(пустая строка)
|
||||
(пустая строка)
|
||||
### Пример
|
||||
(пустая строка)
|
||||
* [Другая шикарная книга](http://example.com/book.html)
|
||||
* [Ещё одна другая книга](http://example.com/other.html)
|
||||
|
||||
- Не вставляйте пробел между `]` и `(`:
|
||||
|
||||
```
|
||||
ПЛОХО : * [Другая шикарная книга] (http://example.com/book.html)
|
||||
ХОРОШО: * [Другая шикарная книга](http://example.com/book.html)
|
||||
```
|
||||
|
||||
- Если вы указываете автора, используйте ` - ` (тире, окруженное одиночными пробелами):
|
||||
|
||||
```
|
||||
ПЛОХО : * [Другая шикарная книга](http://example.com/book.html)- Джон Доу
|
||||
ХОРОШО: * [Другая шикарная книга](http://example.com/book.html) - Джон Доу
|
||||
```
|
||||
|
||||
- Отбейте ссылку и её формат пробелом:
|
||||
|
||||
```
|
||||
ПЛОХО : * [Очень хорошая книга](https://example.org/book.pdf)(PDF)
|
||||
ХОРОШО: * [Очень хорошая книга](https://example.org/book.pdf) (PDF)
|
||||
```
|
||||
|
||||
- Сперва автор, потом формат:
|
||||
|
||||
```
|
||||
ПЛОХО : * [Очень хорошая книга](https://example.org/book.pdf)- (PDF) Джейн Роу
|
||||
ХОРОШО: * [Очень хорошая книга](https://example.org/book.pdf) - Джейн Роу (PDF)
|
||||
```
|
||||
|
||||
- Несколько форматов:
|
||||
|
||||
```
|
||||
ПЛОХО : * [Другая шикарная книга](http://example.com/)- Джон Доу (HTML)
|
||||
ПЛОХО : * [Другая шикарная книга](https://downloads.example.org/book.html)- Джон Доу (cайт для загрузки)
|
||||
ХОРОШО: * [Другая шикарная книга](http://example.com/) - Джон Доу (HTML) [(PDF, EPUB)](https://downloads.example.org/book.html)
|
||||
```
|
||||
|
||||
- Включите год публикации в заголовок для старых книг:
|
||||
|
||||
```
|
||||
ПЛОХО : * [Очень хорошая книга](https://example.org/book.html) - Джейн Роу - 1970
|
||||
ХОРОШО: * [Очень хорошая книга (1970)](https://example.org/book.html) - Джейн Роу
|
||||
```
|
||||
|
||||
<a name="in_process"></a>
|
||||
- Незавершенные книги:
|
||||
|
||||
```
|
||||
ХОРОШО: * [Скоро будет отличная книга](http://example.com/book2.html) - Джон Доу (HTML) (:construction: *in process*)
|
||||
```
|
||||
<a name="notes"></a>
|
||||
### Примечания
|
||||
|
||||
Хотя основы относительно просты, перечисленные нами ресурсы очень разнообразны. Вот несколько замечаний о том, как мы справляемся с этим разнообразием.
|
||||
|
||||
<a name="metadata"></a>
|
||||
#### Метаданные
|
||||
|
||||
Наши списки предоставляют минимальный набор метаданных: заголовки, URL-адреса, создателей, платформы и примечания к доступу.
|
||||
|
||||
<a name="titles"></a>
|
||||
##### Заголовки
|
||||
|
||||
- Никаких вымышленных названий. Мы стараемся брать названия с самих ресурсов; призываем авторов пулреквестов не придумывать заголовки и не использовать их в редакционных целях, если этого можно избежать. Исключение составляют более старые работы; если они представляют в первую очередь исторический интерес, год в скобках, добавленный к названию, помогает пользователям узнать, представляют ли они интерес.
|
||||
- Избегайте заголовков ПОЛНОСТЬЮ ЗАГЛАВНЫМИ БУКВАМИ. Обычно уместен регистр заголовка, но в случае сомнений используйте заглавные буквы из источника.
|
||||
|
||||
<a name="urls"></a>
|
||||
##### URLs
|
||||
|
||||
- Мы не разрешаем сокращенные URL-адреса.
|
||||
- Коды отслеживания должны быть удалены из URL.
|
||||
- Международные URL-адреса должны быть экранированы. Адресная панель браузера обычно отображают их в Unicode, но, пожалуйста, используйте копирование и вставку.
|
||||
- Безопасные (https) URL-адреса всегда предпочтительнее небезопасных (http) URL-адресов, в которых реализован https.
|
||||
- Нам не нравятся URL-адреса, которые указывают на страницы со ссылкой на другое место вместо указанного ресурса.
|
||||
|
||||
<a name="creators"></a>
|
||||
##### Creators
|
||||
|
||||
- Хотим поблагодарить создателей бесплатных ресурсов, где это возможно, в том числе переводчиков!
|
||||
- Для переведенных работ следует указать оригинального автора.
|
||||
- Мы не разрешаем ссылки на авторов.
|
||||
- Для подборок и смешенных изданий «создателю» может потребоваться описание. Например, книги «GoalKicker» считаются «Скомпилированными из документации StackOverflow».
|
||||
|
||||
<a name="platforms-and-access-notes"></a>
|
||||
##### Платформы и примечания к доступу
|
||||
|
||||
- Курсы. Платформа является важной частью описания ресурсов, особенно для наших списков курсов. Это связано с тем, что платформы курсов имеют разные возможности и модели доступа. Хотя мы обычно не перечисляем книги, требующие регистрации, на многих платформах курсов есть возможности, которые не работают без какой-либо учетной записи. Например, как на Coursera, EdX, Udacity и Udemy. Если курс зависит от платформы, название платформы должно быть указано в скобках.
|
||||
- YouTube. У нас есть много курсов, состоящих из плейлистов YouTube. Мы не указываем Youtube как платформу, мы пытаемся указать автора на Youtube, который часто является под-платформой.
|
||||
- YouTube видео. Обычно мы не ссылаемся на отдельные видео YouTube, если они не длится более часа или не структурированы как курс или учебное пособие.
|
||||
- Leanpub. Leanpub размещает книги с различными моделями доступа. Иногда книгу можно прочитать без регистрации; иногда для бесплатного доступа к книге требуется учетная запись Leanpub. Учитывая качество книг, а также сочетание и гибкость моделей доступа к Leanpub, мы разрешаем перечисление последних с указанием доступа *(требуется учетная запись Leanpub или действующий адрес электронной почты)*
|
||||
|
||||
<a name="genres"></a>
|
||||
#### Жанры
|
||||
|
||||
Первое правило при принятии решения, к какому списку принадлежит ресурс, — это посмотреть, как ресурс описывает себя. Если он называет себя книгой, то, возможно, это книга.
|
||||
|
||||
<a name="genres-we-dont-list"></a>
|
||||
##### Жанры, которые мы не вносим в списки
|
||||
|
||||
Поскольку Интернет огромен, мы не включаем в наши списки:
|
||||
|
||||
- блоги
|
||||
- Сообщения в блоге
|
||||
- статьи
|
||||
- веб-сайты (за исключением тех, размещающих МНОГО элементов которые мы перечисляем.)
|
||||
- видео, не являющиеся курсами или скринкастами.
|
||||
- главы книги
|
||||
- ознакомительные образцы из книг
|
||||
- IRC или Telegram каналы
|
||||
- Slacks или списки рассылки
|
||||
|
||||
В наших списках соревновательного программирования эти исключения не так строги. Объем репо определяется сообществом; если вы хотите предложить изменение или дополнение к области, пожалуйста, используйте Issue, чтобы сделать предложение.
|
||||
|
||||
<a name="books-vs-other-stuff"></a>
|
||||
##### Книги против прочих ресурсов
|
||||
|
||||
Мы не так привередливы в "книжности" ресурса. Вот некоторые атрибуты, которые указывают на то, что ресурс - это книга:
|
||||
|
||||
- имеет ISBN (международный стандартный книжный номер)
|
||||
- имеет Оглавление
|
||||
- предлагается загружаемая версия, особенно ePub
|
||||
- есть редакции
|
||||
- не зависит от интерактивного контента или видео
|
||||
- пытается всесторонне осветить тему
|
||||
- он самодостаточен
|
||||
|
||||
Мы перечисляем множество книг, у которых нет этих атрибутов; это может зависеть от контекста.
|
||||
|
||||
<a name="books-vs-courses"></a>
|
||||
##### Книги против курсов
|
||||
|
||||
Иногда их бывает трудно отличить!
|
||||
|
||||
С курсами часто связаны учебники, которые мы перечисляем в наших списках книг. В курсах есть лекции, упражнения, тесты, заметки или другие дидактические пособия. Отдельная лекция или видео - это не курс. PowerPoint - это не курс.
|
||||
|
||||
<a name="interactive-tutorials-vs-other-stuff"></a>
|
||||
##### Интерактивные учебники и другие материалы
|
||||
|
||||
Если вы можете распечатать его и сохранить его суть, это не интерактивное руководство.
|
||||
|
||||
<a name="automation"></a>
|
||||
### Автоматизация
|
||||
|
||||
- Применение правил форматирования автоматизировано с помощью [GitHub Actions](https://github.com/features/actions) с использованием [fpb-lint](https://github.com/vhf/free-programming-books-lint) (см. [.github/workflows/fpb-lint.yml](.github/workflows/fpb-lint.yml))
|
||||
- Для проверки URL используется [awesome_bot](https://github.com/dkhamsing/awesome_bot)
|
||||
- Чтобы запустить проверку URL, нажмите фиксацию, которая включает сообщение фиксации, содержащее `check_urls = ссылка_для_проверки`:
|
||||
|
||||
```
|
||||
check_urls=free-programming-books.md free-programming-books-en.md
|
||||
```
|
||||
|
||||
- Вы можете указать более одного файла для проверки, используя один пробел для разделения каждой записи.
|
||||
- Если вы укажете более одного файла, результаты сборки будут основаны на результате последнего проверенного файла. Вы должны знать, что из-за этого вы можете получить проходящие зеленые сборки, поэтому обязательно проверьте журнал сборки в конце пулреквеста, нажав "Show all checks" -> "Details".
|
@ -1,4 +1,4 @@
|
||||
*Đọc bằng ngôn ngữ khác: [English](CONTRIBUTING.md), [Français](CONTRIBUTING-fr.md), [Español](CONTRIBUTING-es.md), [体中文](CONTRIBUTING-zh.md), [繁體中文](CONTRIBUTING-zh_TW.md), [فارسی](CONTRIBUTING-fa_IR.md).*
|
||||
*Đọc bằng ngôn ngữ khác: [English](CONTRIBUTING.md), [Français](CONTRIBUTING-fr.md), [Español](CONTRIBUTING-es.md), [体中文](CONTRIBUTING-zh.md), [繁體中文](CONTRIBUTING-zh_TW.md), [فارسی](CONTRIBUTING-fa_IR.md), [Русский](CONTRIBUTING-ru.md).*
|
||||
|
||||
Bản dịch Tiếng Việt:
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
*阅读本文的其他语言版本:[English](CONTRIBUTING.md), [Français](CONTRIBUTING-fr.md), [Español](CONTRIBUTING-es.md), [繁體中文](CONTRIBUTING-zh_TW.md), [فارسی](CONTRIBUTING-fa_IR.md), [Tiếng Việt](CONTRIBUTING-vn.md).*
|
||||
*阅读本文的其他语言版本:[English](CONTRIBUTING.md), [Français](CONTRIBUTING-fr.md), [Español](CONTRIBUTING-es.md), [繁體中文](CONTRIBUTING-zh_TW.md), [فارسی](CONTRIBUTING-fa_IR.md), [Tiếng Việt](CONTRIBUTING-vn.md), [Русский](CONTRIBUTING-ru.md).*
|
||||
|
||||
|
||||
## 贡献者许可协议
|
||||
|
@ -1,4 +1,4 @@
|
||||
*閱讀其他語言版本的文件:[English](CONTRIBUTING.md), [Français](CONTRIBUTING-fr.md), [Español](CONTRIBUTING-es.md), [简体中文](CONTRIBUTING-zh.md), [فارسی](CONTRIBUTING-fa_IR.md), [Tiếng Việt](CONTRIBUTING-vn.md).*
|
||||
*閱讀其他語言版本的文件:[English](CONTRIBUTING.md), [Français](CONTRIBUTING-fr.md), [Español](CONTRIBUTING-es.md), [简体中文](CONTRIBUTING-zh.md), [فارسی](CONTRIBUTING-fa_IR.md), [Tiếng Việt](CONTRIBUTING-vn.md), [Русский](CONTRIBUTING-ru.md).*
|
||||
|
||||
|
||||
## 貢獻者許可協議
|
||||
|
@ -1,4 +1,4 @@
|
||||
*Read this in other languages: [Français](CONTRIBUTING-fr.md), [Español](CONTRIBUTING-es.md), [简体中文](CONTRIBUTING-zh.md), [繁體中文](CONTRIBUTING-zh_TW.md), [فارسی](CONTRIBUTING-fa_IR.md), [Tiếng Việt](CONTRIBUTING-vn.md).*
|
||||
*Read this in other languages: [Français](CONTRIBUTING-fr.md), [Español](CONTRIBUTING-es.md), [简体中文](CONTRIBUTING-zh.md), [繁體中文](CONTRIBUTING-zh_TW.md), [فارسی](CONTRIBUTING-fa_IR.md), [Tiếng Việt](CONTRIBUTING-vn.md), [Русский](CONTRIBUTING-ru.md).*
|
||||
|
||||
## Contributor License Agreement
|
||||
By contributing you agree to the [LICENSE](https://github.com/EbookFoundation/free-programming-books/blob/master/LICENSE) of this repository.
|
||||
|
@ -12,6 +12,6 @@ Sea bienvenido a *Free-Programming-Books*! Damos una calurosa bienvenida a los n
|
||||
|
||||
No se quede nunca con la duda, ni tenga miedo de hacer preguntas; todo colaborador que usted ve en el repositorio, comenzó en su día con una primera PR. ¡Qué tal si es nuestro mil-milésimo primer!
|
||||
|
||||
Incluso si ya tiene algo de experiencia como colaborador en otros proyectos de código abierto, hay algunas cosas que pueden hacerle dar un traspiés. Una vez enviada su PR, *Travis-CI* ejecutará un *linter*; el cuál se encarga a menudo de encontrar pequeños problemas con el espaciado, enlazado, sintáxis o la alfabetización. Si al finalizar este proceso de integración contínua se enciende la luz verde, es que todo está listo para su revisión; pero si no, haga clic en los enlaces que proporciona para averiguar qué fue exactamente lo que falló. Solucione dicho problema y agregue los cambios a la PR mediante un nuevo commit.
|
||||
Incluso si ya tiene algo de experiencia como colaborador en otros proyectos de código abierto, hay algunas cosas que pueden hacerle dar un traspiés. Una vez enviada su PR, *GitHub Actions* ejecutará un *linter*; el cuál se encarga a menudo de encontrar pequeños problemas con el espaciado, enlazado, sintáxis o la alfabetización. Si al finalizar este proceso de integración contínua se enciende la luz verde, es que todo está listo para su revisión; pero si no, haga clic en los "enlaces de Detalle" que proporciona para averiguar qué fue exactamente lo que falló. Solucione dicho problema y agregue los cambios a su PR mediante un nuevo commit.
|
||||
|
||||
Por último, si no está del todo seguro de si el recurso que desea agregar es apropiado para *Free-Programming-Books*, lea detenidamente las pautas que puede encontrar en [CONTRIBUTING](CONTRIBUTING-es.md).
|
||||
|
@ -13,7 +13,7 @@ Seja bem-vindo(a) ao Free-Programming-Books (Livros de Programação Grátis)! N
|
||||
Não hesite em tirar suas dúvidas; todo contribuidor começou com um primeiro PR. E você pode ser nosso milésimo!
|
||||
|
||||
|
||||
Mesmo se você tem experiência com contribuições open source, existem algumas coisas que você pode errar. Por isso, assim que você submeter seu PR, ele vai ser testado por Travis-CI, e as vezes, serão encontrados problemas como espaçamento. Se você receber um botão verde, está tudo certo para uma revisão de PR. Caso contrário, clique no link do Travis para ver o problema encontrado. Arrume ele e adicione um commit ao PR.
|
||||
Mesmo se você tem experiência com contribuições open source, existem algumas coisas que você pode errar. Por isso, assim que você submeter seu PR, ele vai ser testado pelo GitHub Actions, e as vezes, serão encontrados problemas como espaçamento. Se você receber um botão verde, está tudo certo para uma revisão de PR. Caso contrário, clique em "Detalhes" para ver o problema encontrado. Arrume ele e adicione um commit ao PR.
|
||||
|
||||
|
||||
Finalmente, se você não tem certeza de que o material que você que quer adicionar é apropriado para o Free-Programming-Books, leia o guia em [CONTRIBUTING](CONTRIBUTING.md).
|
||||
|
@ -22,6 +22,7 @@
|
||||
* [Django](#django)
|
||||
* [Ruby](#ruby)
|
||||
* [TeX](#tex)
|
||||
* [Unity](#unity)
|
||||
* [Webdesign](#webdesign)
|
||||
* [XML](#xml)
|
||||
|
||||
@ -42,7 +43,6 @@
|
||||
* [Moderní programování objektových aplikací v C++](https://akela.mendelu.cz/~xvencal2/CPP/opora.pdf) (PDF)
|
||||
* [Objektové programování v C++](http://media1.jex.cz/files/media1:49e6b94e79262.pdf.upl/07.%20Objektov%C3%A9%20programov%C3%A1n%C3%AD%20v%20C%2B%2B.pdf) (PDF)
|
||||
* [Programovací jazyky C a C++](http://homel.vsb.cz/~s1a10/educ/C_CPP/C_CPP_web.pdf) (PDF)
|
||||
* [Programování v C++](http://www1.osu.cz/~fojtik/doc/proc2.pdf) (PDF)
|
||||
|
||||
|
||||
### Java
|
||||
@ -52,12 +52,12 @@
|
||||
|
||||
### Git
|
||||
|
||||
* [Pro Git](https://knihy.nic.cz) - Scott Chacon (PDF)
|
||||
* [Pro Git](https://knihy.nic.cz/#ProGit) - Scott Chacon (PDF, EPUB, MOBI)
|
||||
|
||||
|
||||
### HTML
|
||||
|
||||
* [Ponořme se do HTML5](https://knihy.nic.cz) - Mark Pilgrim (PDF)
|
||||
* [Ponořme se do HTML5](https://knihy.nic.cz/#HTML5) - Mark Pilgrim (PDF)
|
||||
|
||||
|
||||
### Language Agnostic
|
||||
@ -70,7 +70,7 @@
|
||||
|
||||
#### Bezpečnost
|
||||
|
||||
* [Báječný svět elektronického podpisu](https://knihy.nic.cz) - Jiří Peterka (PDF)
|
||||
* [Báječný svět elektronického podpisu](https://knihy.nic.cz) - Jiří Peterka (PDF, EPUB, MOBI)
|
||||
* [Buď pánem svého prostoru](https://knihy.nic.cz) - Linda McCarthy a Denise Weldon-Siviy (PDF)
|
||||
|
||||
|
||||
@ -92,7 +92,7 @@
|
||||
|
||||
#### Sítě
|
||||
|
||||
* [Internetový protokol IPv6](https://knihy.nic.cz) - Pavel Satrapa (PDF)
|
||||
* [Internetový protokol IPv6](https://knihy.nic.cz/#IPv6-2019) - Pavel Satrapa (PDF)
|
||||
|
||||
|
||||
### LaTeX
|
||||
@ -118,7 +118,8 @@
|
||||
### OpenSource
|
||||
|
||||
* [Katedrála a tržiště](http://www.root.cz/knihy/katedrala-a-trziste/) (PDF)
|
||||
* [Tvorba open source softwaru](https://knihy.nic.cz) - Karl Fogel (PDF)
|
||||
* [Tvorba open source softwaru](https://knihy.nic.cz/#open_source) - Karl Fogel (PDF, EPUB, MOBI)
|
||||
* [Výkonnost open source aplikací](https://knihy.nic.cz/#vykonnost) - Tavish Armstrong (PDF, EPUB, MOBI)
|
||||
|
||||
|
||||
### PHP
|
||||
@ -137,6 +138,11 @@
|
||||
* [Django Girls Tutoriál](https://tutorial.djangogirls.org/cs/) (1.11) (HTML) (:construction: *in process*)
|
||||
|
||||
|
||||
### Perl
|
||||
|
||||
* [Perl pro zelenáče](https://knihy.nic.cz/#perl) - Pavel Satrapa (PDF, EPUB, MOBI)
|
||||
|
||||
|
||||
### Ruby
|
||||
|
||||
* [Ruby Tutoriál](http://i.iinfo.cz/files/root/k/Ruby_tutorial.pdf) (PDF)
|
||||
@ -148,6 +154,11 @@
|
||||
* [TeXbook naruby](http://www.root.cz/knihy/texbook-naruby/) (PDF)
|
||||
|
||||
|
||||
### Unity
|
||||
|
||||
* [Unity](https://knihy.nic.cz/#Unity) - Tomáš Holan (PDF, EPUB, MOBI)
|
||||
|
||||
|
||||
### Webdesign
|
||||
|
||||
* [Webová režie: základy koncepčního myšlení u webových projektů](http://www.root.cz/knihy/webova-rezie-zaklady-koncepcniho-mysleni-u-webovych-projektu/) (PDF)
|
||||
|
@ -95,6 +95,7 @@
|
||||
|
||||
### Node.js
|
||||
|
||||
* [Belajar Dengan Jenius Amazon Web Service & Node.js](https://github.com/gungunfebrianza/Belajar-Dengan-Jenius-Node.js/releases/download/1.2/Belajar.Dengan.Jenius.Javascript.Node.pdf) - Gun Gun Febrianza (PDF)
|
||||
* [Belajar Node.js](http://idjs.github.io/belajar-nodejs/)
|
||||
* [Node.js Handbook: Berbahasa Indonesia](https://play.google.com/store/books/details/Bona_Tua_Node_js_Handbook?id=9WhZDwAAQBAJ) - Bona Tua, Google Play Books (*account required*)
|
||||
|
||||
|
@ -458,6 +458,7 @@ That section got so big, we decided to split it into its own file, the [BY SUBJE
|
||||
* [Introduction to Rx](http://www.introtorx.com)
|
||||
* [Learn C# in Y Minutes](https://learnxinyminutes.com/docs/csharp/)
|
||||
* [Mastering Xamarin UI Development, Second Edition](https://www.packtpub.com/free-ebooks/mastering-xamarin-ui-development-second-edition) - Steven F. Daniel (Packt account *required*)
|
||||
* [.NET Book Zero](http://www.charlespetzold.com/dotnet) - Charles Petzold (PDF, XPS)
|
||||
* [Object Oriented Programming using C#](http://bookboon.com/en/object-oriented-programming-using-c-sharp-ebook) - Simon Kendal, Bookboon. (email address *requested*, not required)
|
||||
* [Threading in C#](http://www.albahari.com/threading/)
|
||||
* [Xamarin.Forms for macOS Succinctly](https://www.syncfusion.com/ebooks/xamarin_forms_for_mac_os_succinctly) - Alessandro Del Sole
|
||||
|
@ -460,6 +460,7 @@
|
||||
* [Beginner's Series to: Node.js](https://youtube.com/playlist?list=PLlrxD0HtieHje-_287YJKhY8tDeSItwtg) - Microsoft Developer (YouTube)
|
||||
* [Building a RESTful API with Node.js](https://www.youtube.com/playlist?list=PL55RiY5tL51q4D-B63KBnygU6opNPFk_q) - Academind (Youtube)
|
||||
* [Express JS Crash Course](https://www.youtube.com/watch?v=L72fhGm1tfE) - Brad Traversy, Traversy Media (Youtube)
|
||||
* [Node and Express](https://fullstackopen.com/en/part3/node_js_and_express) - Full Stack Open
|
||||
* [Node and Express Tutorial](https://www.youtube.com/watch?v=TNV0_7QRDwY) - John Smilga, Coding Addict (YouTube)
|
||||
* [Node.js API Development for Beginners](https://www.udemy.com/course/node-js-api-tutorial/) (Udemy)
|
||||
* [Node.js Basics](https://www.youtube.com/playlist?list=PLqq-6Pq4lTTa-d0iZg41U2RDqECol9C5B) - Java Brains (Youtube)
|
||||
@ -468,6 +469,7 @@
|
||||
#### React
|
||||
|
||||
* [Full-Stack Web Development with React Specialization](https://www.coursera.org/specializations/full-stack-react) - Jogesh K. Muppala (Coursera)
|
||||
* [Introduction to React](https://fullstackopen.com/en/part1/introduction_to_react) - Full Stack Open
|
||||
* [React](https://progate.com/languages/react) (progate) *(account required)*
|
||||
* [React basic in just 1 hour](https://www.udemy.com/course/react-basic-in-just-1-hour/) (Udemy)
|
||||
* [React Crash Course 2020](https://www.youtube.com/watch?v=4UZrsTqkcW4) - freecodecamp
|
||||
@ -569,6 +571,7 @@
|
||||
* [AI Courses](https://software.intel.com/content/www/us/en/develop/topics/ai/training/courses.html) - Intel Corporation
|
||||
* [Algorithm Design and Implementation](https://www.youtube.com/playlist?list=PL6EF0274BD849A7D5)
|
||||
* [Aml-2018 Ambient Intelligence](https://www.youtube.com/playlist?list=PLqRTLlwsxDL8fUcY2Y54sITILyJcTySpC) (F. Corno - L. De Russis - A. Monge Roffarello)
|
||||
* [Berkeley's CS 61A: Taught using SICP](https://archive.org/details/ucberkeley-webcast-PL3E89002AA9B9879E?tab=collection)
|
||||
* [Berkeley's CS 61B: Data Structures](https://archive.org/details/ucberkeley_webcast_QMV45tHCYNI)
|
||||
* [Berkeley's CS 162: Operating Systems and Systems Programming](https://www.youtube.com/watch?v=feAOZuID1HM)
|
||||
* [Berkeley's CS 169: Software Engineering](https://www.youtube.com/watch?v=fXokQpWsszU)
|
||||
@ -659,6 +662,7 @@
|
||||
* [Learn Python Tutorial](https://www.kaggle.com/learn/python) (Kaggle)
|
||||
* [Learn to program in Python](https://www.codecademy.com/learn/python)
|
||||
* [Learn to Program: The Fundamentals](https://www.coursera.org/learn/learn-to-program) (Coursera)
|
||||
* [Practical Python: An Immersive Python Course](https://practical.learnpython.dev) - Nina Zakharenko
|
||||
* [Practical Python Programming](https://dabeaz-course.github.io/practical-python/) - David Beazley
|
||||
* [Programming Foundations with Python](https://www.udacity.com/course/programming-foundations-with-python--ud036) (Udacity)
|
||||
* [Python 3](https://www.sololearn.com/Course/Python/) (SoloLearn)
|
||||
@ -806,4 +810,3 @@
|
||||
* [Web Development for Beginners - A Curriculum](https://github.com/microsoft/Web-Dev-For-Beginners) - Microsoft
|
||||
* [Web Devevelopment Tutorials for Beginners](https://www.youtube.com/playlist?list=PLoYCgNOIyGAB_8_iq1cL8MVeun7cB6eNc) - LearnCode.academy
|
||||
* [Web Information Retrieval](https://www.youtube.com/playlist?list=PLAQopGWlIcya-9yzQ8c8UtPOuCv0mFZkr) - L. Becchetti, A. Vitaletti (University of Sapienza Rome)
|
||||
|
||||
|
@ -35,6 +35,7 @@
|
||||
* [Flask](#flask)
|
||||
* [PyTorch](#pytorch)
|
||||
* [Redis](#redis)
|
||||
* [SASS / SCSS](#sass--scss)
|
||||
* [Solidity](#solidity)
|
||||
* [Typescript](#typescript)
|
||||
|
||||
@ -99,6 +100,8 @@
|
||||
|
||||
### Flutter
|
||||
|
||||
* [Belajar Fundamental Aplikasi Flutter](https://www.dicoding.com/academies/195) - Dicoding, membutuhkan registrasi
|
||||
* [Belajar Membuat Aplikasi Flutter untuk Pemula](https://www.dicoding.com/academies/159) - Dicoding, membutuhkan registrasi
|
||||
* [Flutter Membangun Website](https://buildwithangga.com/kelas/flutter-membangun-website-sederhana?thumbnail=nk4neM2UyG.110&main_leads=browse) - BuildWithAngga
|
||||
* [Flutter Tutorial (Flutter Fundamentals)](https://www.youtube.com/playlist?list=PLZQbl9Jhl-VACm40h5t6QMDB92WlopQmV) - Erico Darmawan Handoyo
|
||||
* [STUDI KASUS FLUTTER + GETX + FIREBASE [ CHAT APPS 2021 ]](https://www.youtube.com/playlist?list=PL7jdfftn7HKt6wPnVXoXgserU14d_ACA-) - Sandikha Rahardi, Kuldii Project (YouTube)
|
||||
@ -125,8 +128,10 @@
|
||||
* [CSS Grid](https://www.youtube.com/playlist?list=PLFIM0718LjIXmbwX0dEsoRVX-PC16vmuw) - Web Programming UNPAS
|
||||
* [CSS Layouting](https://www.youtube.com/playlist?list=PLFIM0718LjIVCmrSWbZPKCccCkfFw-Naa) - Web Programming UNPAS
|
||||
* [CSS Tailwind](https://buildwithangga.com/kelas/css-tailwind-web-design?thumbnail=nk4neM2UyG.46&main_leads=browse) - BuildWithAngga
|
||||
* [CSS Website Design](https://www.buildwithangga.com/kelas/css-website-design) - BuildWithAngga
|
||||
* [CSS3](https://www.youtube.com/playlist?list=PLFIM0718LjIVCmrSWbZPKCccCkfFw-Naa) - Web Programming UNPAS
|
||||
* [HTML Dasar](https://www.youtube.com/playlist?list=PLFIM0718LjIVuONHysfOK0ZtiqUWvrx4F) - Web Programming UNPAS
|
||||
* [HTML5 Dasar](https://www.buildwithangga.com/kelas/html5-dasar) - BuildWithAngga
|
||||
|
||||
|
||||
### Java
|
||||
@ -260,6 +265,7 @@
|
||||
* [Belajar Pemrograman Python untuk Pemula](https://www.youtube.com/playlist?list=PL-CtdCApEFH_HY6bL3JER8WJOxz1nb3_H) - Eko Kurniawan Khannedy, Programmer Zaman Now (YouTube)
|
||||
* [Belajar Python Bahasa Indonesia [Dasar]](https://www.youtube.com/playlist?list=PLZS-MHyEIRo7cgStrKAMhgnOT66z2qKz1) - Kelas Terbuka
|
||||
* [Belajar Python Bahasa Indonesia [Versi Baru]](https://www.youtube.com/playlist?list=PLZS-MHyEIRo59lUBwU-XHH7Ymmb04ffOY) - Kelas Terbuka
|
||||
* [Intro to Python](https://www.youtube.com/playlist?list=PLM4Qh7PEStOmBHR6Ey0BzPf3XNsPuSXL-) - Tensaitech Academy
|
||||
* [OpenCV untuk Pemula](https://www.youtube.com/playlist?list=PLl-Zj2iuqlwt4cBsBy_Ej7gNlXdQ7blCB) - NgodingPython
|
||||
* [Tutorial Belajar Python Pandas](https://www.youtube.com/playlist?list=PL2O3HdJI4voGdD_9xhVCTBoDTDNHpajm5) - Indonesia Belajar
|
||||
* [Tutorial Python Bahasa Indonesia](https://www.youtube.com/playlist?list=PLCZlgfAG0GXDc9Wcsi2fUn0pAr41GDL6m) - Sekolah Koding
|
||||
@ -290,6 +296,11 @@
|
||||
* [Belajar Redis](https://www.youtube.com/playlist?list=PL-CtdCApEFH-7hBhz1Q-4rKIQntJoBNX3) - Eko Kurniawan Khannedy, Programmer Zaman Now (YouTube)
|
||||
|
||||
|
||||
### SASS / SCSS
|
||||
|
||||
* [Tutorial SASS](https://www.youtube.com/playlist?list=PLFIM0718LjIUqemgG97MAOK0J_berlQM5) - Web Programming UNPAS
|
||||
|
||||
|
||||
### Solidity
|
||||
|
||||
* [Ethereum Blockchain Tutorial Bahasa Indonesia](https://www.youtube.com/playlist?list=PLNl8QwXqW_lvWSc3n3geFSbBtmJvEl4nz) - Odoo Indonesia vITraining
|
||||
|
@ -95,6 +95,7 @@
|
||||
|
||||
### Git
|
||||
|
||||
* [Curso de Git e GitHub: grátis, prático e sem usar comandos no terminal](https://www.youtube.com/playlist?list=PLHz_AreHm4dm7ZULPAmadvNhH6vk9oNZA) - Gustavo Guanabara (YouTube)
|
||||
* [Git e contribuições para projetos Open Source](https://www.udemy.com/course/git-e-github/) - Bruno Orlandi (Udemy)
|
||||
* [Git e Github para iniciantes](https://www.udemy.com/git-e-github-para-iniciantes/) - Willian Justen de Vasconcellos (Udemy)
|
||||
* [Git para iniciantes](https://www.udemy.com/git-para-iniciantes/) - Ricardo Netto (Udemy)
|
||||
|
@ -28,7 +28,7 @@ INT - Cредний. Расширенные возможности.
|
||||
ADV - Продвинутый. Тонкости.
|
||||
|
||||
|
||||
### Дизайн и Aрхитектура<a ref="design-architecture" />
|
||||
<h3 id="design-architecture">Дизайн и Aрхитектура</h3>
|
||||
|
||||
* [Туториал по SOLID](https://ota-solid.now.sh) - Саша Беспоясов и Артём Самофалов (INT)
|
||||
|
||||
|
@ -12,6 +12,7 @@
|
||||
* [Java](#java)
|
||||
* [JavaScript](#javascript)
|
||||
* [jQuery](#jquery)
|
||||
* [React.js](#reactjs)
|
||||
* [Vue.js](#vuejs)
|
||||
* [Kubernetes](#kubernetes)
|
||||
* [Language Translations](#language-translations)
|
||||
@ -104,6 +105,11 @@
|
||||
* [jQuery CheatSheet](https://htmlcheatsheet.com/jquery/) (HTML)
|
||||
|
||||
|
||||
#### React.js
|
||||
|
||||
* [React Cheatsheet](https://www.codecademy.com/learn/react-101/modules/react-101-jsx-u/cheatsheet) - Codecademy (HTML)
|
||||
|
||||
|
||||
#### Vue.js
|
||||
|
||||
* [Vue Essential Cheatsheet](https://www.vuemastery.com/pdf/Vue-Essentials-Cheat-Sheet.pdf) - Vue Mastery (PDF)
|
||||
@ -131,6 +137,7 @@
|
||||
|
||||
### MongoDB
|
||||
|
||||
* [MongoDB Cheat Sheet](https://www.mongodb.com/developer/quickstart/cheat-sheet) - MongoDB (HTML)
|
||||
* [Quick Cheat Sheet for Mongo DB Shell commands](https://gist.github.com/michaeltreat/d3bdc989b54cff969df86484e091fd0c) - Michael Treat's Quick Cheat Sheet
|
||||
|
||||
|
||||
|
@ -10,6 +10,7 @@
|
||||
* [Cloud Computing](#cloud-computing)
|
||||
* [CoffeeScript](#coffeescript)
|
||||
* [Dart](#dart)
|
||||
* [Data Science](#datascience)
|
||||
* [Erlang](#erlang)
|
||||
* [Git](#git)
|
||||
* [GLSL](#glsl)
|
||||
@ -108,6 +109,12 @@
|
||||
* [Dart Official Codelabs](https://dart.dev/codelabs)
|
||||
|
||||
|
||||
### Data Science
|
||||
|
||||
* [Essential Linear Algebra for Data Science and Machine Learning](https://www.kdnuggets.com/2021/05/essential-linear-algebra-data-science-machine-learning.html) -KDnuggets
|
||||
* [Top 10 Data Science Projects for Beginners - KDnuggets](https://www.kdnuggets.com/2021/06/top-10-data-science-projects-beginners.html)
|
||||
|
||||
|
||||
### Erlang
|
||||
|
||||
* [Try Erlang](http://www.tryerlang.org)
|
||||
|
@ -15,6 +15,7 @@
|
||||
### Git
|
||||
|
||||
* [Интерактивное обучение работе с git](https://githowto.com/ru)
|
||||
* [Обучение git при помощи визуализации](https://learngitbranching.js.org/?locale=ru_RU)
|
||||
|
||||
|
||||
### Python
|
||||
|
@ -47,13 +47,14 @@
|
||||
|
||||
### Capture the flag
|
||||
|
||||
* [CTFlearn](https://ctflearn.com) (email adress *requested*)
|
||||
* [Google Ctf](https://capturetheflag.withgoogle.com) (email adress *requested*)
|
||||
* [Hacker101](https://ctf.hacker101.com) (email adress *requested*)
|
||||
* [Hackthebox](https://www.hackthebox.eu) (email adress *requested*)
|
||||
* [CTFlearn](https://ctflearn.com) (email address *requested*)
|
||||
* [Google Ctf](https://capturetheflag.withgoogle.com) (email address *requested*)
|
||||
* [Hacker101](https://ctf.hacker101.com) (email address *requested*)
|
||||
* [Hackthebox](https://www.hackthebox.eu) (email address *requested*)
|
||||
* [HackThisSite](https://www.hackthissite.org) (email address *requested*)
|
||||
* [Overthewire Wargames fungame to practice CTF](https://overthewire.org/wargames/bandit)
|
||||
* [Picoctf](https://picoctf.org/resources) (email adress *requested*)
|
||||
* [TryHackMe](https://tryhackme.com) (email adress *requested*)
|
||||
* [Picoctf](https://picoctf.org/resources) (email address *requested*)
|
||||
* [TryHackMe](https://tryhackme.com) (email address *requested*)
|
||||
|
||||
|
||||
### Data science
|
||||
@ -85,6 +86,7 @@
|
||||
* [Codeforces](http://codeforces.com/problemset)
|
||||
* [Codility](https://codility.com/programmers/)
|
||||
* [Coding Bat](http://codingbat.com/java)
|
||||
* [Coding Ninjas](https://www.codingninjas.com/codestudio/problems)
|
||||
* [CSES Problem Set](https://cses.fi/problemset/)
|
||||
* [Exercism](http://exercism.io)
|
||||
* [Geeks For Geeks](http://www.geeksforgeeks.org)
|
||||
|
Loading…
Reference in New Issue
Block a user