Обновить
3
0
msa@msa

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

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

Сложно о простоте Go

Время на прочтение10 мин
Охват и читатели30K
Читая о языке Go, вы часто будете слышать слово “простота”. Но разные люди трактуют это слово по разному, особенно в контексте разработки ПО, а многие, зачастую, даже не осознают, почему это вообще используется, как характеристика языка. В этой статье мы попытаемся концептуально подойти к вопросу “сложности” и “простоты” в разработке ПО, и посмотрим, почему и зачем язык Go поставил простоту как краеугольный камень своего дизайна.


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

Почему Go превосходит посредственность

Время на прочтение3 мин
Охват и читатели29K
В апреле 2001 Пол Грэм написал статью «Превосходя посредственность» («Beating the averages» — ориг).

Этот пост о том, почему Go, следуя статье, и есть то самое секретное оружие, которое должно быть у каждого стартапа.

Секретное оружие


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

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

gb — менеджмент зависимостей для Go

Время на прочтение8 мин
Охват и читатели21K
Отсутствие в Go нативного менеджера зависимостей и версий является одним из самых частых пунктов в критике языка. В этой статье мы рассмотрим проблему детальнее и познакомимся с новым проектом, с лаконичным именем gb, который набирает популярность в Go-коммьюнити и обещает вскоре стать де-факто стандартом для управления зависимостями и версиями в Go.


(Credit orig.photo: Nathan Youngman)

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

Анонс книги Брайана Кернигана «The Go Programming Language»

Время на прочтение2 мин
Охват и читатели19K
На Амазоне анонсировали новую книгу Брайана Кернигана и Алана Донована с ёмким названием «The Go Programming Language». Кто не в курсе — Брайан Керниган это один из соавторов Unix, автор cron-а и автор одной из самых культовых книг в мире программирования "The C Programming Language", написанную вместе с Деннисом Ричи в 1978-м.

Книга доступна для предзаказа, релиз бумажной версии запланирован на 27 августа 2015.


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

Почему Go обречён на успех (обновлено)

Время на прочтение6 мин
Охват и читатели43K
TL;DR Golang был разработан специально для того, чтобы расцвести в больших проектах, которые пишут большие группы программистов разных уровней, и в мире нет такой группы больше, чем open-source сообщество.



Абсолютно всё в жизни основано на компромиссах — первый закон термодинамики доказывает это, и языки программирования тут не исключение. Компромиссы в Go не уникальны, но именно благодаря их удачному сочетанию, Go и случился. Законы физики также утверждают, что каждое действие порождает противодействие, и, с ростом популярности, также возрастает количество критики в адрес языка, иногда обоснованной, иногда не очень. Позвольте мне объяснить, почему я считаю, что эта критика не важна, и Go обречён на успех несмотря ни на что.
Читать дальше →

Видео докладов с Golang Moscow

Время на прочтение1 мин
Охват и читатели13K
Готовы видео докладов с митапа Golang Moscow и мы с радостью с вами ими делимся.

1. «Go в Badoo»
Антон einstein_man Поваров




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

Сниффинг истории браузера с помощью favicon

Время на прочтение2 мин
Охват и читатели29K
Метод позволяет определить посещаемые пользователем сайты с помощью запроса иконок сайта со страницы. Идея этого метода пришла мне в голову при обсуждении с другом возможностей аналитики поведения пользователей на его сайте. Мы обсуждали, какие метрики нужно и какие не нужно собирать о его посетителях. Я подумал, что было бы неплохо узнать, какими еще сайтами пользуются его посетителями. В голову тут же пришел старый, но известный способ с CSS-стилями.

Тот способ основывается на использовании метода DOM элемента getComputedStyle. Будучи вызванным у HTMLAnchorElement, он позволяет различать :visited и обычные состояния ссылок на популярные сайты.

Баг давно закрыли и больше им воспользоваться нельзя.

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

Ниже приведен полный исходный код proof-of-concept реализации этого способа. С его помощью можно продемонстрировать, что вы посещаете сайт habrahabr.ru, но ни разу не были на сайте hornet.com.
Читать дальше →

Как я уменьшил Docker образ на 98.8% при помощи fanotify

Время на прочтение8 мин
Охват и читатели23K
Предлагаю читателям «Хабрахабра» перевод публикации «How I shrunk a Docker image by 98.8% – featuring fanotify».

Несколько недель назад я делал внутренний доклад о Docker. Во время презентации один из админов спросил простой на первый взгляд вопрос: «Есть ли что-то вроде „программы похудения для Docker образов“»?

Для решения этой проблемы вы можете найти несколько вполне адекватных подходов в интернете, вроде удаления директорий кэша, временных файлов, уменьшение разных избыточных пакетов, если не всего образа. Но если подумать, действительно ли нам необходима полностью рабочая Linux система? Какие файлы нам действительно необходимы в отдельно взятом образе? Для Go binary я нашел радикальный и довольно эффективный подход. Он был собран статически, почти без внешних зависимостей. Конечный образ — 6.12 МB.
Читать дальше →

ExpvarMon — консольный мониторинг сервисов на Go

Время на прочтение6 мин
Охват и читатели18K
Для Go-программ существует удобнейший стандартный пакадж expvar, позволяющий одной строчкой подключить вывод дебаг информации в JSON-формате. И чтобы максимально быстро и наглядно мониторить текущее состояние, была написана консольная программа Expvarmon, требующая минимум конфигурации для вывода метрик и дебаг-информации для ваших Go-сервисов.

Функции:
  • single- и multi-services режимы
  • мониторинг локальных и удаленных программ
  • произвольное количество сервисов и переменных
  • поддержка значений для памяти, временных интервалов, bool и произвольных чисел/строк
  • sparkline-графики
  • отображение максимальных значений
  • отображение упавших/рестартовавших сервисов
  • авто-ресайз при изменении размеров шрифта или окна



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

Понимая Docker

Время на прочтение7 мин
Охват и читатели1.1M
Уже несколько месяцев использую docker для структуризации процесса разработки/доставки веб-проектов. Предлагаю читателям «Хабрахабра» перевод вводной статьи о docker — «Understanding docker».

Что такое докер?


Докер — это открытая платформа для разработки, доставки и эксплуатации приложений. Docker разработан для более быстрого выкладывания ваших приложений. С помощью docker вы можете отделить ваше приложение от вашей инфраструктуры и обращаться с инфраструктурой как управляемым приложением. Docker помогает выкладывать ваш код быстрее, быстрее тестировать, быстрее выкладывать приложения и уменьшить время между написанием кода и запуска кода. Docker делает это с помощью легковесной платформы контейнерной виртуализации, используя процессы и утилиты, которые помогают управлять и выкладывать ваши приложения.
Читать дальше →

И снова о Юникоде (Unicode)

Время на прочтение8 мин
Охват и читатели23K
Конечно, о юникоде (Unicode) в интернете море информации (см, например Юникод, некоторые фрагменты текста я взял оттуда), я ни в коей мере не претендую на полное и исчерпывающее описание. Это просто некоторая дополнительная «информация к размышлению».
Читать дальше →

Mesosphere открывает тестовый доступ к своей ОС для дата-центров

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


Про операционные системы для дата-центров начали говорить относительно недавно. И буквально полгода назад компания Mesosphere заявила об успешной разработке подобной операционной системы. Сейчас компания сделала второе заявление: она открывает тестовый доступ к своей ОС, при этом в тестовый период ОС от Mesosphere будет доступна не всем, а предоставляться по заявкам заинтересованных организаций.

Стоит отметить, что некоторые организации и стартапы получили такой доступ. К примеру, Kubernetes, сторонний проект Google, сейчас полностью интегрирован с ОС Mesosphere. Процесс интеграции начался еще в прошлом году, и сейчас, как видим, успешно завершен. Кстати, проект от Mesosphere заинтересовал не только представителей телекоммуникационной сферы, но и инвесторов, которые уже выделили около $50 млн на этот проект. Среди прочих инвесторов — Andreessen-Horowitz, Khosla Ventures, SV Angel и Fuel Capital.
Читать дальше →

CliMate: самая маленькая в мире метеостанция. Обзор и unboxing

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


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

Разработчики утверждают, что это самая маленькая в мире метеостанция, которая, при этом остается практичной. Девайс может измерять температуру воздуха, влажность, а также уровень ультрафиолетового излучения. Информация, передаваемая станцией, обновляется каждые 15 минут, при этом данные поступают в приложение на мобильном устройстве. Разработчики оснастили девайс небольшим объемом автономной памяти, поэтому синхронизацию можно проводить не постоянно (ведь такой возможности может и не быть).
Читать дальше →

Сравнение снимков «Столпов Творения», сделанных телескопом «Хаббл» в разное время

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

Все хорошо знают знаменитые фото «Хаббла» — Столпы Творения.

image
Эти фотографии разделяет почти 20 лет

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

Итак, что же произошло на этом участке неба за 20 лет? Предлагаю полюбоваться, и сравнить эти две фотографии.

Под катом большой GIF.
Читать дальше →

25 лет с «Хабблом»

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

Самый знаменитый космический телескоп уже четверть века на орбите


24 апреля 1990 года на орбиту Земли был выведен космический телескоп, названный в честь американского астронома Эдвина Хаббла. С момента начала работы выросло уже целое поколение людей, которое принимает «Хаббл» за должное, поэтому легко забыть, насколько революционным был этот аппарат. На данный момент он всё ещё работает, возможно, он продержится ещё лет пять. В неделю телескоп передаёт примерно 120 гигабайтов научных данных, за время функционирования снимков набралось на более 10 тысяч научных статей.
40 МБ трафика

godebug — кроссплатформенный дебаггер для Go

Время на прочтение3 мин
Охват и читатели14K
Ребята из компании Mailgun презентовали новый кроссплатформенный дебаггер для Go, который использует оригинальную технологию, в корне отличающуюся от стандартных подходов. Забегая наперед — с помощью Gopherjs этот дебаггер работает даже в браузере.

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

Уменьшение накладных расходов для утилит на golang

Время на прочтение3 мин
Охват и читатели11K
Цель работы — сократить накладные расходы на хранение большого количества утилит, написанных на golang.

Один из побочных эффектов статической компиляции golang — относительно большие накладные расходы на хранение рантайма и всех используемых библиотек внутри каждого исполняемого файла. Например небольшая утилитка, которая только и делает что обращается через сеть к серверу и выполняет простые полученные команды — весит 5.5Мб.
Когда такая утилитка одна — это в современных условиях это еще не страшно. Когда утилиты накапливаются и их становится уже несколько десятков или сотен — чисто по-человечески становится жалко сотен мегабайтов, утекающих «вникуда».

Для решения этой проблемы я написал библиотеку multiex, которой и делюсь с сообществом. С её помощью можно объединить несколько программ в один исполняемый файл с минимальными изменениями внутри кода программ и без изменения внешнего поведения. Мысль была взята у busybox — все программы компилируются в один файл, а выполняемый код выбирается при запуске, исходя из имени запускаемого файла.

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

Пишем симулятор медленных соединений на Go

Время на прочтение6 мин
Охват и читатели16K
В этой статье я хочу показать, как просто в Go можно делать достаточно сложные вещи, и какую мощь в себе несут интерфейсы. Речь пойдет о симуляции медленного соединения — но, в отличие от популярных решений в виде правил для iptables, мы реализуем это на стороне кода — так, чтобы можно было легко использовать, к примеру, в тестах.

Ничего сложного тут не будет, и ради большей наглядности я записал ascii-анимации (с помощью сервиса asciinema), но, надеюсь, будет познавательно.


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

Нативная UI-библиотека для Go

Время на прочтение3 мин
Охват и читатели57K
Один из частых вопросов про Go — существует ли хорошая кроссплатформенная UI-библиотека на Go. Как правило, вопрошающих отсылали либо к go-qml, либо к andilabs/ui (биндинги к C-реализациям нативного UI для каждой платформы), но в целом достойного проекта по нативному Go UI пока не было. На днях же, пару разработчиков из Google открыли для open-source мира проект gxui, который нацелен восполнить нишу нативных UI-библиотек для Go.

Проект еще сырой, но выглядит неплохо и перспективно.

Давайте взглянем поближе.


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

Особенности работы с виртуальными дискaми VirtualBox

Время на прочтение8 мин
Охват и читатели190K
image Статья рассматривает особенности использования виртуальных дисков в VirtualBox, применение разных режимов чтения-записи, принцип и организацию работы snapshot-ов, кэширование ввода/вывода данных, а также некоторые аспекты использования виртуальных дисков с точки зрения информационной безопасности. Для тех, кому интересен пример с безопасностью, можете сразу переходить по якорю к разделу об особых режимах записи.
Читать дальше →

Информация

В рейтинге
Не участвует
Откуда
Украина
Зарегистрирован
Активность