Обновить
41.82

GitHub *

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

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

Как сохранить устаревший язык программирования

Время на прочтение1 мин
Охват и читатели48K
Сегодня наше внимание привлекла удивительная история человека, который поддерживает язык программирования SPITBOL. Его история насчитывает несколько десятилетий.

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

Локализация IT-сайта силами пользователей и возможностями GitHub

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

Краткое содержание


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

Однако услуги сторонних переводчиков стоят денег. Хуже того — наш контент бурлит программированием и математикой, поэтому годится не любой переводчик.

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

Я попробую рассказать о том решении к которому мы пришли, а именно:

  • как мы дешево-сердито использовали github для пользовательских переводов
  • как специфика сайта мешает при переводе
  • насколько реально получить помощь от пользователей
  • как отметить переводы для поисковика Google
  • наконец, насколько виден (или не виден) эффект от переведенного контента

За подробностями добро пожаловать под кат!
Читать дальше →

Выдергивание информации из URL, в стиле Slack и Twitter

Время на прочтение3 мин
Охват и читатели17K
Многие пользуются Slack, Twitter и видели такие штуки:

Как это работает и как такое сделать самим?
Читать дальше →

Достаточно Git-а, чтобы быть (менее) опасным

Время на прочтение23 мин
Охват и читатели132K
imageТы просто-напросто ненавидишь Git? Ты абсолютно счастлив с Mercurial (или, фу, с Subversion), но раз в месяц тебе приходится отважно сталкиваться с Git, потому что каждый, даже его чертова собака, теперь использует GitHub? Тебя терзают смутные подозрения, что половина всех команд Git на самом деле удалят всю твою работу навсегда, но ты не знаешь какие именно и не хочешь проводить три недели, углубляясь в документацию?

Хорошие новости! Я написал тебе этот изумительный Интернет-пост. Я надеюсь, что смогу размазать достаточно Git-а по твоему лицу, чтобы понизить вероятность сделать что-то непоправимое, а так же уменьшить твой страх что-то сломать. Этого должно быть также достаточно, чтобы сделать документацию Git немного более понятной; она крайне тщательно и глубоко проработана и очень глупо, если ты все еще не прочитал половину.

Я постараюсь излагать коротко, но также, чтобы это было потенциально полезно тем людям, кто вообще никогда не сталкивался с контролем версий, поэтому повсюду будет разбросан 101 совет. Не бойся! Я не думаю, что пользователи Mercurial понятия не имеют, что такое патч.
Но подожди! Там еще...

Зачем нужен свободный код и как на нем зарабатывать

Время на прочтение5 мин
Охват и читатели68K
Linux Torvalds
Мы наблюдаем бум свободных проектов. В основном, благодаря Гитхабу. 23 декабря 2013 года на сервисе был создан 10-миллионный проект. К 23 декабря 2015 года количество проектов более чем утроится: прямо сейчас на Гитхабе 28 миллионов проектов.

Многих привлекает идея свободности, потому что она перекликается с идеей «улучшения мира», как основной мотивации продуктивной деятельности человека.

Но так как обычная работа программистов в конторах очень далека от open source, возникает вопрос, как кормиться (а желательно, и разбогатеть!), большую часть времени занимаясь свободными проектами.

Судя по последним вопросам на Тостере, у людей много ожиданий, но мало понимания в этой области. Поэтому я решил написать это эссе.

Само по себе выкладывание проекта не является улучшением мира


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

Вы выложили код. Чем вы помогли экономике в этот момент? Ничем, поэтому и миру вы пока ничем не помогли.

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

Сконцентрируйтесь не на том, чем вообще полезен ваш проект, а чем полезна его свободность.

Синергетический эффект свободного кода


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

Программирование с YII2: приступаем к работе

Время на прочтение7 мин
Охват и читатели99K
image
От переводчика.
Жизнь такая штука, как-то я начинал цикл статей по Java Spring и сообщество сообщило, что выбор пал не на самую свежую информацию. Сейчас жизнь забросила меня в хардкорное программирование на С++, а душа все равно нуждается в вебе, поэтому в свободное время решил изучить вместе с вами технологии, которые может скушать любой хостинг и в то же время сложность разрабатываемых приложений и ООП не сильно пострадает от PHP.
Исходный текст статьи на английском вы найдете по адресу http://code.tutsplus.com/tutorials/programming-with-yii2-getting-started--cms-22440
Перевод не претендует на дословность, но о грубых ошибках, если такие имеются – прошу сообщать в комментариях.

Если вы спрашиваете «что такое YII?», прочтите более ранний урок «Введение в фреймворк YII», который описывает преимущества YII, а также затрагивает вопрос новшеств второй версии фреймворка от 12 октября 2014.
Этот урок посвящен установке YII2, настройке вашего окружения, написанию классического приложения «Привет, мир!», настройке удаленного окружения для хостинга и деплоя с GitHub.
Читать дальше →

Разработка менеджера закачек на GO

Время на прочтение8 мин
Охват и читатели30K
Менеджер многопоточных закачек на GO.

http://loafter.github.io/godownloader/
https://github.com/Loafter/godownloader


Вступление


Давным-давно, в году этак 1998, для выхода в интернет я использовал модем на работе у отца. Он его включал вечером после работы и я мог наслаждаться просторами сети интернет на скорости аж 31.2 кбит/c. В то время не было истеричных блогеров, страницы не весили по мегабайту, а в новостных сайтах говорили только правду. Естественно основной интерес представляли ресурсы. Картинки, программы, всякие дополнения к играм, вроде машинок. Как сейчас помню качать через IE было сущим адом. Скачать файл весом больше 500 кб было просто невозможно, древний осел был намного упрямей.
Читать дальше →

Присоединяйте файлы к комментариям

Время на прочтение1 мин
Охват и читатели11K
Довольно давно вы можете присоединять картинки к описаниям проблем и запросов на слияние. Теперь мы расширили эту возможность, и она получает поддержку файлов:

  • Microsoft Word (.docx)
     
  • Microsoft Powerpoint (.pptx)
     
  • Microsoft Excel (.xlsx)
     
  • Текстовых (.txt)
     
  • Документов PDF (.pdf)

[скриншот присоединения файла]
Просто перетащите и бросьте файлы в рамку комментария — и они появятся у вас в комментарии.

Шпаргалка Java программиста 2: Триста пятьдесят самых популярных не мобильных Java opensource проектов на github

Время на прочтение39 мин
Охват и читатели176K
Что это и зачем оно надо: Как известно, главное преимущество Java мира в том в нем существует огромное количество open-source проектов на на все случаи жизни, однако найти нужный на github'e не так просто, так как описание проекта часто мало информативно, зачастую сложно даже понять этот проект для Android'a или нет. В этой статье я автоматически и полуавтоматически собрал Java проекты, убрал старые и проекты только для Android'a, выбрал 350 набравших больше всего звезд, разделил по категориям и перевел описания.

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

В чем смысл серии статей 'Шпаргалки Java программиста'
За время работы Java программистом я заметил, что как правило программисты постоянно и планомерно используют от силы 10-20% от возможностей той или иной технологии, при этом остальные возможности быстро забываются и при появлении новых требований, переходе на новую работу или подготовке к техническому интервью приходится перечитывать все документации и спецификации с нуля. Зато наличие краткого конспекта особенностей тех или иных технологий (шпаргалок) позволяет быстро освежить в памяти особенности той или иной технологии.


Другие статьи серии: часть 1. JPA и Hibernate в вопросах и ответах

Update: Внимание, актуальная версия со много большим количеством ссылок, находиться теперь в моем github'e проекте useful-java-links, по этой ссылке.


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

Почему мы занимаемся переводом книги с английского на площадке GitHub

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

Недавно команда rust_book_ru закончила перевод книги «The Rust Programming Language» на русский язык.



Когда я только присоединился к проекту перевода, начатого kgv, нам несколько раз говорили: «Вы делаете перевод на GitHub? Странные вы, для краудсорсинг-перевода есть другой сервис — вот ссылка». Мы не стали переходить на другие сервисы и в итоге это решение полностью оправдалось.

Я хочу рассказать о том, почему мы всё же разместили книгу на GitHub и почему даже переводчику полезно быть немного программистом.
Читать дальше →

Github добавил настройки доступа к веткам (protected branches)

Время на прочтение2 мин
Охват и читатели49K
imageГитхаб — великолепный агрегатор репозиториев и инструмент для коллективной работы. К сожалению, многие возможности конфигурирования на стороне сервера (вроде коммит хуков) остаются недоступными. Но ситуация постепенно меняется в лучшую сторону.

Случилось то, чего многие ждали довольно долго. А именно: недавно была анонсирована фича, под названием protected branches, которая позволяет настроить правила работы с ветками в рамках репозитория. Да, теперь можно запретить force push в master!

Под катом скриншоты и выдержки из блога разработчиков.
Читать дальше →

YouTrack 6.5 — Баг-трекер для всей команды

Время на прочтение5 мин
Охват и читатели36K
Доброго дня, Хабр!

Спешу рассказать вам, что совсем недавно вышла новая версия нашего баг-трекера — YouTrack 6.5!

image

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

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

Запросы в CoreData с агрегатными функциями и группировкой в одну строку

Время на прочтение7 мин
Охват и читатели6.2K
Почти всем, кто использует CoreData, рано или поздно приходится создавать запросы с агрегатными функциями и группировками. Однако, синтаксис таких запросов в CoreData сложен для понимания и неоправданно многословен.

Используя конструктор запросов мы можем, например, сделать вот такой запрос:
NSDictionary *productTotalSumAndAveragePriceGroupedByCountries = 
[[[[[Product all
] aggregatedBy:@[
                 @[kAggregateSum, @"amount"],
                 @[kAggregatorAverage, @"price"]]
] groupedBy:@[@"country"]
] having:predicate
] execute];

Этот запрос эквивалентен такому:
Запросу в CoreData
NSFetchRequest *fetchRequest = [[ALFetchRequest alloc] init];
fetchRequest.managedObjectContext = managedObjectContext;

NSString *entityName = @"Product";
NSEntityDescription *entity = [NSEntityDescription entityForName:entityName inManagedObjectContext:managedObjectContext];

[fetchRequest setEntity:entity];
[fetchRequest setIncludesPendingChanges:YES];

// sum amount
NSExpression *fieldExp1 = [NSExpression expressionForKeyPath:@"amount"];
NSExpression *agrExp1 = [NSExpression expressionForFunction:agr arguments:@[fieldExp1]];
NSExpressionDescription *resultDescription1 = [[NSExpressionDescription alloc] init];
NSString *resultName1 = @"sumAmount";
[resultDescription1 setName:resultName1];
[resultDescription1 setExpression:agrExp1];
[resultDescription1 setExpressionResultType:NSInteger64AttributeType];

// average price
NSExpression *fieldExp2 = [NSExpression expressionForKeyPath:@"price"];
NSExpression *agrExp2 = [NSExpression expressionForFunction:agr arguments:@[fieldExp1]];
NSExpressionDescription *resultDescription2 = [[NSExpressionDescription alloc] init];
NSString *resultName2 = @"sumAmount";
[resultDescription2 setName:resultName2];
[resultDescription2 setExpression:agrExp2];
[resultDescription2 setExpressionResultType:NSInteger64AttributeType];

// country
NSDictionary *availableKeys = [entity attributesByName];
NSAttributeDescription *country = [availableKeys valueForKey:@"country"];

fetch.propertiesToFetch = [NSArray arrayWithObjects:country, resultDescription1, resultDescription2, nil];
fetch.propertiesToGroupBy = [NSArray arrayWithObject:country];
fetch.resultType = NSDictionaryResultType;

NSError *error;
NSManagedObjectContext *managedObjectContext = self.managedObjectContext;
NSArray *fetchedObjects = [managedObjectContext executeFetchRequest:self error:&error];
if (!fetchedObjects || error) {
    NSLog(@"Error: Execution of the fetchRequest: %@, Failed with Description: %@",self,error);
}
return fetchedObjects;


О том как это работает и какой профит можно из этого извлечь

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

github привлёк $250M инвестиций

Время на прочтение1 мин
Охват и читатели3.6K
Издание TechCrunch сообщает:
GitHub, сервис для командного взаимодейтсвия разработчиков и контроля версий, основанного на популярном инструменте Git, объявил сегодня о привлечении 250 миллионов долларов инвестиций от Sequoia Capital при участии Institutional Venture Partners.

Общий объём вложений составляет теперь 350М долларов. Издание Wall Streat Journal оценивает компанию в 2 миллиарда долларов.
Читать дальше →

OpenSource проект может развиваться и приносить прибыль?

Время на прочтение3 мин
Охват и читатели18K
Уже довольно долгое время я задаюсь вопросом: «Может ли в наших суровых реалиях жить и развиваться Open Source проект?». Этот вопрос меня периодически тревожит, так как я сам являюсь автором одного такого проекта — WysiBB. Я задавал подобный вопрос на различных ресурсах, были вопросы и на Тостере. Но по сути все сводилось к тому, что в русскоязычном сегменте интернета не работают кнопки «Поддержать проект», «Пожертвовать» и т.д. и развиваться могут только проекты с огромной аудиторией и/или платными функциями.

image

В чем суть?

Но вот наконец в один прекрасный день, я наткнулся на интересную идею, как можно получать некоторые финансовые вливания в развитие и видеть, какие фичи наиболее востребованы пользователями. Эту идею я увидел на сайте Robomongo(кто не знает, это GUI для MongoDB). И ее суть заключается в следующем: пользователю предоставляется возможность выбрать из списка issues(с джитхаба) наиболее его тревожащую и пожертвовать средства на ее доработку. Когда пользователь делает пожертвование, рейтинг приоритетности этой фичи повышается. Так автор проекта получает средства на свой кошелек и видит какие фичи имеют наивысший приоритет(больше всего пожертвований) и соответственно являются наиболее востребованными. Автор приступает к их разработке в первую очередь, проект развивается, а пользователь получает долгожданную фичу. Мне эта идея понравилась и я решил реализовать подобный механизм на своем проекте, а когда начал работу над этим сервисом, понял что такой сервис может быть полезен не только для меня. Так появился на свет GitFund.
Читать дальше →

Интеграция Jira и Slack на PHP

Время на прочтение2 мин
Охват и читатели12K
Недавно по наводке одного товарища стали в компании использовать Slack. Тут же встал вопрос об интеграции его с Jira. Надо сказать, что Slack номинально имеет интеграцию с Jira из коробки, однако на поверку оказалось, что она обрабатывает далеко не все события, никак не настраивается и вообще работает не так, как хотелось бы. Поэтому было принято решение написать свою интеграцию на php.

Требования были сформированы следующим образом:
  • Должна быть обработка всех значимых событий Jira-задачи (Создание, Обновление, Удаление, Назначение на пользователя)
  • Должна быть возможность развести события от разных проектов по разным каналам
  • Должна быть возможность направлять пользователю личное сообщение при назначении на него задачи

Была предпринята попытка найти готовый обработчик запросов от JiraWebHook и адекватные php-классы для работы с SlackAPI. Однако ни одно решение не понравилось и было принято решение сделать все полностью самостоятельно.
Что получилось – собственно, вот.
Теперь пару слов о том, что внутри.
Читать дальше →

Не PKI единым или соцпакеты для сотрудников

Время на прочтение2 мин
Охват и читатели8.7K
Привет, Habrahabr!
Наша компания известна прежде всего своими решениями в области информационной безопасности. Мы выпускаем такие продукты, как электронные идентификаторы Рутокен и электронные ключи для защиты софта Guardant.
Обычно наши статьи носят сугубо технический характер, но на этот раз речь пойдет о нашей внутренней системе учета социальных выплат для сотрудников.

Несколько слов о предыстории вопроса. Мы — современная российская ИТ-компания, и, как наверное любая ИТ-компания, мы очень любим все автоматизировать. Помимо прочих, в нашей компании существует компенсация выплат на проезд, походы в театр и фитнес. Долгое время сотрудники были вынуждены собирать и хранить билеты, в нужный день предоставлять их в бухгалтерию, а затем получать свои деньги. В конце концов это процедура нам надоела и мы решили написать максимально простое решение для автоматизации этого процесса. Получившуюся систему мы успешно применяем у себя в компании и сегодня передаем ее в Open source.
Читать дальше →

Shadow DOM: спецификация

Время на прочтение25 мин
Охват и читатели12K
Андрей Глазков, Ито Хаято из Google, а также другие специалисты на Github работают над составлением спецификации Shadow DOM. Уже проделана огромная работа, однако еще много предстоит сделать. В рамках поддержки работы на этом направлении создан перевод существующей версии спецификации от 7 июля.

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

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

7 шагов к запуску gh-pages для AngularJS-проектов, созданных с помощью Yeoman

Время на прочтение2 мин
Охват и читатели9.6K
В этой публикации я расскажу о том, как создать GitHub Pages для AngularJS-проектов, которые были созданы с помощью генераторов Yeoman. gh-pages удобен тем, что позволяет наглядно увидеть веб-страницу, а не ее исходный код. Как написано в описании gh-pages, они используются для статических HTML-страниц [1]. Однако, и в случае AngularJS-фреймворка, gh-pages могут быть полезны.
Читать дальше →

Тайны потерянных коммитов в Git

Время на прочтение3 мин
Охват и читатели36K
Git — штука не то чтобы особо сложная, но гибкая. Иногда эта гибкость приводит к забавным последствиям. К примеру, посмотрите на этот коммит на GitHub. Он выглядит как нормальный коммит, но если вы клонируете себе данный репозиторий, то такого коммита в нем не найдете. Потому что это потерянный коммит, более известный как git loose object или же orphaned commit. Под катом — немного про внутренности Git, откуда такое берется и что делать, если оно вам встретилось.
Читать дальше →

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