Обновить
23
7.7

Пользователь

Отправить сообщение

Как правильно оформить Open Source проект

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

В свободное и не свободное время[1] я развиваю несколько своих проектов на github, а также, по мере сил, участвую в жизни интересных для меня, как программиста, проектах.


Недавно один из коллег попросил консультацию: как выложить разработанную им библиотеку на github. Библиотека никак не связана с бизнес-логикой приложения компании, по сути это адаптер к некоему API, реализующему определённый стандарт. Помогая ему, я понял что вещи, интуитивно понятные и давно очевидные для меня, в этой области, совершенно неизвестны человеку делающему это впервые и далёкому от Open Source.


Я провел небольшое исследование и обнаружил что большинство публикаций по этой теме на habrahabr освещают тему участия (contributing), либо просто мотивируют каким-нибудь образом примкнуть к Open Source, но не дают исчерпывающей инструкции как правильно оформить свой проект. В целом в рунете, если верить Яндекс, тема освещена со стороны мотивации, этикета контрибуции и основ пользования github. Но не с точки зрения конкретных шагов, которые следует предпринять.


Так что из себя представляет стильный, модный, молодёжный Open Source проект в 201* году?

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

Мир, в котором IPv6 придуман хорошо

Время на прочтение19 мин
Охват и читатели35K
Перевод статьи Avery Pennarun, одного из сотрудников Google, о том, почему современный интернет такой, какой он есть, об истории и предпосылках создания IPv6, а также о том, как был бы устроен идеальный протокол IPv6, почему это не так и как можно к этому идеалу приблизиться.
Читать дальше →

Железнодорожно-ориентированное программирование. Обработка ошибок в функциональном стиле

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

Как пользователь я хочу изменить ФИО и email в системе.

Для реализации этой простой пользовательской истории мы должны получить запрос, провести валидацию, обновить существующую запись в БД, отправить подтверждение на email пользователю и вернуть ответ браузеру. Код будет выглядеть примерно одинаково на C#:

string ExecuteUseCase() 
{ 
  var request = receiveRequest();
  validateRequest(request);
  canonicalizeEmail(request);
  db.updateDbFromRequest(request);
  smtpServer.sendEmail(request.Email);
  return "Success";
}

и F#:

let executeUseCase = 
  receiveRequest
  >> validateRequest
  >> canonicalizeEmail
  >> updateDbFromRequest
  >> sendEmail
  >> returnMessage
Читать дальше →

Математика игры 2048

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

Часть 1. Расчёт минимального количества ходов для победы с помощью цепей Маркова


Screenshot of 2048

После недавнего обновления экран «You win!» игры 2048 начал показывать количество ходов, потребовавшихся для победы, и я задался вопросом: сколько же нужно ходов, чтобы выиграть?

В первой части статьи мы ответим на этот вопрос, смоделировав игру 2048 в виде цепи Маркова и проанализировав её, чтобы показать, что вне зависимости от мастерства игрока для победы в среднем нужно не менее 938,8 ходов. Это даёт нам неплохое мерило отсчёта — если вы можете выигрывать примерно за такое количество ходов, то неплохо играете.

Количество ходов, необходимых для победы, зависит от случайности, потому что игра добавляет тайлы 2 и 4 случайным образом. Анализ также покажет, что распределение минимального количества ходов до победы имеет стандартное отклонение в 8,3 хода, и что его общая форма хорошо аппроксимируется смесью биномиальных распределений.
Читать дальше →

9 советов по увеличению эффективности парного программирования

Время на прочтение4 мин
Охват и читатели11K
Привет, Хабр! В своей работе мы используем парное программирование и сегодня хотим поделиться с сообществом советами, которые помогают нам повысить эффективность этого метода.

image

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

Без машины на машине: сравнительный обзор услуг каршеринга в Москве / сентябрь 2017

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

Мне нравится водить автомобиль. Но у меня нет дачи, я не занимаюсь автотуризмом, мне не нужно каждый день ездить на работу, и живу я в 400 м от станции метро. В последние годы в Москве общественный транспорт работает всё лучше; а кроме того, я и велосипед люблю, и в период с мая по сентябрь съездить на 5-10 км от дома проще на двух колёсах. Получается, что автомобиль мне не и нужен.

Тем более, что по моим расчётам он мне обходился примерно в 7000 р/мес, с учётом как бензина, так и периодического техобслуживания, страховки, мойки, смены резины, платных парковок и ремонтных работ (а ещё платные парковки добрались до моего дома). На такую сумму вполне можно и проездной купить, и на такси по необходимости периодически кататься.

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

5 мифов о персональных данных

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

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

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

Как читать научные статьи: советы ученых

Время на прочтение10 мин
Охват и читатели63K
«Чтение научной статьи – то, что заставит вас чувствовать себя глупее некуда», – пишет ученый Адам Рубин (Adam Ruben) в своей юмористической колонке для журнала Science. Адам прав: читая статью из рецензируемого научного журнала, многие из нас начинают с оптимизма («В конце концов это всего лишь несколько страниц»), а заканчивают отчаянным желанием срочно сменить сферу деятельности на такую, где научных статей или вовсе нет, или их пишут как-то иначе. На самом деле проблема не в статьях – а в том, как мы их выбираем и читаем.

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

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

Что такое DNSBL и как туда вам не попасть

Время на прочтение3 мин
Охват и читатели30K
DNSBL — это черные списки доменов и IP адресов. Под катом описано, что они собой представляют, за какие заслуги туда можно попасть и чем это чревато. Ну и как оттуда быстренько, в случае чего, выбраться с помощью сервиса мониторинга сайтов ХостТрекер, мы тоже упомянули.


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

Выход из «Китайской комнаты» или может ли машина думать

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

Предисловие


Давно интересуюсь проблемой сознания и его связи с мозгом. Однажды я натолкнулся на очень интересный мысленный эксперимент, называемый «Китайская комната». Не помню в какой публикации я впервые прочел о нем, но он меня очень заинтересовал, поэтому я стал изучать вопрос. Только после прочтения оригинальной статьи [1] я понял, что в большинстве источников идеи автора представлены упрощенно, искажены и не поняты до конца. Эксперимент с Китайской комнатой ставит вопросы, и пытается дать ответы. Вопросы очень интересные, а ответы, на мой взгляд, неудовлетворительны. Поэтому я долго размышлял и решил сам сформулировать решение данной проблемы, о чем и будет моя статья.
Читать дальше →

В Университете Огайо разработали чип, который может восстанавливать поврежденные ткани в считанные дни

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


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

Дело в том, что в Государственном Университете Огайо разработана технология, которая позволяет быстро восстанавливать пораженные ткани. Эта технология получила название «тканевая нанотрансфекция» (англ. tissue nanotransfection или TNT). Заключается технология в специальном чипе, который «впрыскивает» генетический код в клетки кожи, провоцируя трансформацию клеток из одного типа в другой.

Древние черные дыры можно обнаружить по остаткам поглощенных нейтронных звезд

Время на прочтение3 мин
Охват и читатели11K
image
Черная дыра в представлении художника

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

Недавно группа физиков предложила необычный метод поиска древних черных дыр. Ученые предположили, что такие объекты вполне способны поглощать нейтронные звезды (сформировавшиеся впоследствии, да). Сами они не могут выйти за пределы гравитационного коллапса, но скорость их вращения достаточна для того, чтобы часть вещества все-таки вырвалась из объятий черной дыры.
Читать дальше →

Звонок с Луны: немецкий стартап собирается установить на спутнике Земли базовую LTE-станцию

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

Высадка астронавтов НАСА на Луне много лет назад

Пока Илон Маск решает вопрос по созданию глобальной сети для всей Солнечной системы, другие компании собираются реализовать менее масштабные проекты. Менее масштабные, но все же очень важные. Один из таких проектов — установка на Луне вышки сотовой связи, с тем, чтобы провайдеры могли подписывать астронавтов на дополнительные услуги истосковавшийся по дому космический путешественник мог бы позвонить родным и близким. Это, конечно, достаточно сложно реализовать, но начало, возможно, будет положено уже в следующем году.

Проект связи с Луной сейчас разрабатывает компания Part Time Scientists, которая, кстати, участвовала в проекте Google Lunar X Prize. Цель команды — отправка на Луну ровера в 2018 году. Автомат планировалось направить к месту посадки Apollo 17. И этот план немцы тоже планируют выполнить, но сначала они хотят «добросить» до Луны сигнал оператора мобильной связи Vodafone, плюс доставить на спутник Земли не один луноход, а сразу два.
Читать дальше →

Facebook тайно выпустила приложение в Китае через подставную компанию

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

Марк Цукерберг совершает пробежку по площади Тяньаньмэнь в центре Пекина в 2016 году. Фото: Facebook, via Agence France-Presse — Getty Images

Сайт Facebook и многие приложения этой компании давно заблокированы на территории Китая. Сама социальная сеть заблокирована в 2009 году, Instagram — в 2014-м, а WatsApp частично заблокировали в июле 2017-го. Чтобы изменить ситуацию, Марк Цукерберг встречался с китайским президентом, главным чиновником по вопросам Интернета и другими политиками, демонстративно читал китайскую коммунистическую пропаганду, изучал путунхуа (китайский язык) и даже 22 минуты публично выступал на этом языке.

Ничего не помогло.

Теперь Facebook пробует хитрый путь в обход Великого китайского файрвола.
Читать дальше →

Спорт, как хобби для здоровья, с точки зрения инженера

Время на прочтение14 мин
Охват и читатели81K
image
Картинка из гугла для привлечения внимания.

На GT все чаще обсуждаются вопросы функционального здоровья. В этой статье я хочу привести анализ различных видов активности и связанных с ними адаптаций. Для себя я выбрал основным критерием оптимизации качество жизни в долгосрочной перспективе в сочетании с максимальным удовольствием в текущий момент. Тем не менее, я постараюсь рассмотреть плюсы и минусы различных спортивных (физкультурных) концепций максимально разносторонне и развеять некоторые мифы.

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

Для тех, кому лень читать: наш выбор — качалочка и плавание. Бег, игры и велик — по желанию.
Читать дальше →

Безопасный OpenVPN на VPS за несколько минут

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

Введение


В связи с последними событиями и возможной блокировкой публичных VPN сервисов созрела идея облегчить жизнь людям и сделать скрипт для быстрой установки OpenVPN со всеми настройками и легким выпуском сертификатов.

Скрипт позволяет одной командой создать работающий сервер и создать файлы конфигурации для клиентов в unified формате (то есть с сертификатами, включёнными в файл конфигурации). Кстати, эти файлы подходят для мобильных устройств.

Скрипт создавался для машин с CentOS 7.x или Ubuntu Server 17.x, использование на Ubuntu 16.x. возможно, но там OpenVPN 2.3.x в репозиториях. При необходимости можно добавить другие дистрибутивы, но обычно при покупке VPS можно выбрать систему и это не так важно.
Читать дальше →

Автономный способ обхода DPI и эффективный способ обхода блокировок сайтов по IP-адресу

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

Существует два распространенных типа подключения DPI: пассивный и активный.

Пассивный DPI

Пассивный DPI — DPI, подключенный в провайдерскую сеть параллельно (не в разрез) либо через пассивный оптический сплиттер, либо с использованием зеркалирования исходящего от пользователей трафика. Такое подключение не замедляет скорость работы сети провайдера в случае недостаточной производительности DPI, из-за чего применяется у крупных провайдеров. DPI с таким типом подключения технически может только выявлять попытку запроса запрещенного контента, но не пресекать ее. Чтобы обойти это ограничение и заблокировать доступ на запрещенный сайт, DPI отправляет пользователю, запрашивающему заблокированный URL, специально сформированный HTTP-пакет с перенаправлением на страницу-заглушку провайдера, словно такой ответ прислал сам запрашиваемый ресурс (подделывается IP-адрес отправителя и TCP sequence). Из-за того, что DPI физически расположен ближе к пользователю, чем запрашиваемый сайт, подделанный ответ доходит до устройства пользователя быстрее, чем настоящий ответ от сайта.
Читать дальше →

Исследование соответствия интернет-магазинов закону 152 ФЗ «О персональных данных»

Время на прочтение2 мин
Охват и читатели5.1K
Исследование соответствия интернет-магазинов закону 152 ФЗ «О персональных данных" проведено некоммерческим сайтом 152rf.com. Как известно, в случае если ваш сайт обрабатывает персональные данные россиян, вам необходимо предупреждать об этом ваших пользователей. Если на сайте не будет галочки «Согласие на обработку персональных данных», либо не будет «Политики конфиденциальности», владелец сайта может получить достаточно крупный штраф, в зависимости от найденных нарушений. В данном исследовании было проверено 36 750 российских интернет-магазинов.
Читать дальше →

Синхронизируем уведомления CI с Telegram

Время на прочтение3 мин
Охват и читатели25K
Cегодня я хотел бы поделиться своим опытом синхронизации уведомлений Continuous Integration серверов (Bamboo, Jenkins, TeamCity и тп.) с бесплатным мессенджером от Павла Дурова — Telegram.

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

Для организации данной синхронизации мы будем использовать BOT API от телеграмма, Gmail API от Google, а также наш ubuntu сервер на Digital Ocean.
Читать дальше →

Быстрое вычисление факториала — PrimeSwing

Время на прочтение3 мин
Охват и читатели16K
Наткнувшись недавно на эту статью, я понял, что редко упоминаются способы вычисления факториала, отличные от банального перемножения последовательных чисел. Нужно эту ситуацию исправить.
Предлагаю рассмотреть «асимптотически наиболее быстрый» алгоритм вычисления факториала!
Читать дальше →

Информация

В рейтинге
846-й
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность