Пример алиасы

Мой второй пример о поддержке алиасов в Go.

За последние несколько лет, Google собрал команду, сфокусированную на крупномасштабных изменениях в коде, вроде миграций API и исправлений багов по всей кодовой в базе, состоящей из миллионов файлов исходных кодов и миллиардов строк кода, написанных на C++, Go, Java, Python и других языках

Одна из вещей, которую я усвоил из их трудов, было то, что при замене в API старого имени на новое, важно иметь возможность делать изменения шаг за шагом, а не всё за один раз. Чтобы это сделать, должна быть возможность задекларировать, что под старым именем, подразумевается новое

В C++ есть #define, typedef и использование деклараций позволяют это сделать, но в Go такого механизма не было. И поскольку одной из главных задача перед Go стоит умение масштабироваться в больших кодовых базах, было очевидно, что нам нужен какой-то механизм перехода от старых имён к новым во время рефакторинга, и что другие компании также упрутся в эту проблему по мере роста их кодовых баз на Go.

В марте 2016 я начал обсуждать с Робертом Грисмайером и Робом Пайком то, как Go мог бы справляться с многошаговым рефакторингом кодовых баз, и мы пришли к идее алиасов (alias declarations), которые были именно тем механизмом, что нужно. В тот момент я был очень доволен тем, как Go развивался. Мы обсуждали идею алиасов ещё с ранних дней Go — на самом деле первый черновик спецификации Go содержит пример, использующий алиасы — но, каждый раз при обсуждении алиасов, и, чуть позже, алиасов типов, мы не сильно понимали для чего они могут быть важны, поэтому мы отложили идею. Теперь же мы предлагали добавить алиасы в язык не потому что они были прямо элегентным концептом, а потому что они решали очень серьезную практическую проблему, к тому же помогали Go лучше решать поставленную перед ним задачу масштабируемости разработки. Я искренне надеюсь, что это послужит хорошей моделью для будущих изменений в Go.

Чуть позднее той же весной Роберт и Роб написали предложение, и Роберт предоставил его на коротком докладе (lightning talk) на GopherCon 2016. Следующие несколько месяцев были достаточно смутными, и точно не могут служить примером того, как делать изменения в Go. Один из многих уроков, который мы тогда вынесли была важность описания значимости проблемы.

Минуту назад я объяснил вам суть проблемы, дав некоторую минимальную информацию о том, как и почему эта проблема может возникнуть, но не дав конкретных примеров о том, как вам вообще решить, коснётся ли эта проблема вас когда-нибудь или нет. То предложение и доклад оперировали абстрактными примерами, включающими пакеты C, L, L1 и C1..Cn, но ничего конкретного, с чем программисты могли ассоциировать проблему. В результате, большая часть ответной реакции от сообщества была основана на идее того, что алиасы решают проблему Google, и которая не актуальна для остальных.

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

Осенью мы начали заново. Я выступил с докладом и написал статью, подробно объясняющую проблему, используя множество конкретных примеров из реальных open-source проектов, показывающих, что эта проблема актуальна для всех, а не только для Google. Теперь, после того как больше людей поняли проблему и могли оценить её важность, мы смогли начать продуктивное обсуждение о том, какое решение подойдёт лучше всего. Результатом этого стало то, что алиасы типов будут и помогут Go лучше масштабироваться во всё более крупных кодовых базах.

Регистрация на рейс

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

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

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

9dc383b21521a5061ba7d2e4d7544d29.jpg

Выпуск Go 2

d86b8e7929f81c0cdffe8b203ca50cd2.png

В заключение, как же мы будем выпускать Go 2?

Я думаю, наилучший план будет выпускать обратно-совместимые части Go 2 постепенно, шаг за шагом, по ходу обычного плана релизов Go 1. У такого подхода есть несколько важных свойств. Во-первых, это сохраняет релизов Go 1, позволяя своевременно планировать исправления ошибок и улучшения, от которых зависят пользователи. Во-вторых, это позволяет избежать разделения усилий на Go 1 и Go 2. В-третьих, это спасает от расхождения между Go 1 и Go 2, облегчая в итоге всем жизнь при миграции. В-четвертых, это позволяет нам сконцентрироваться на работе над одним изменением за раз, что позволит сохранять качество. В-пятых, это будет заставлять нас выбирать решения, которые обратно-совместимы.

Нам потребуется время и планирование перед тем, как какие-либо изменения вообще начнут попадать в релизы Go 1, но, вполне вероятно, что мы можем увидеть мелкие изменения уже где-то через год, в Go 1.12 или около того. Это также даст нам время завершить сначала проект с управлением зависимостями.

Когда все обратно-совместимые изменения будут внедрены, допустим в Go 1.20, тогда мы сможем приступить к обратно-несовместимым изменениям в Go 2. Если окажется так, что не будет обратно-несовместимых изменений, то мы просто объявим, что Go 1.20 это и есть Go 2. В любом случае, на том этапе мы плавно перейдем от работы над Go 1.X релизами к Go 2.X, возможно с более продлённым окном поддержки для финальных Go 1.X релизов.

Это всё пока немного спекулятивно, и только что упомянутые номера релизов это всего лишь заглушки для грубой оценки, но я хочу явно донести, что мы не оставляем Go 1 в стороне, и, на самом деле, мы будем способствовать продлению периода разработки Go 1 настолько долго, насколько это максимально возможно.

Вы можете нам помочь

Почему предпочитают данный ресурс

Каковы преимущества использования сервиса Go2See? Отзывы (частные отклики реальных покупателей) выделяют следующие плюсы данного ресурса:

  • Надежность. Компания официально существует уже с 2009 года, располагается в городе Санкт-Петербурге (адрес головного офиса — ул. Радищева, 39).
  • Безопасность. Все оплаты проводятся в соответствии со всеми правилами «Виза» и «МастерКард», а личные данные пассажиров передаются исключительно через особое защищенное соединение SSL.
  • Удобство. Существует возможность забронировать билет и совершить оплату непосредственно на ресурсе Go2See. Отзывы о покупке билетов подтверждают, что все процессы происходят без задержек и трудностей.
  • Выгода. Сотрудники сервиса отыскивают наиболее низкие цены на ряде ресурсов. Вы получаете возможность получать бонусы за каждую покупку.

Обмен и возврат

Порой возникает необходимость обменять или вернуть авиабилет, уже приобретенный на ресурсе Go2See. Отзывы о компании рекомендуют сразу обращаться за этим в службу поддержки сайта. При этом, как правило, потребуется внести определенный сервисный сбор, который зависит непосредственно от сервисного пакета, который вы выбрали. Некоторые билеты, к сожалению, не могут быть обменены или возвращены, если их тариф не предусматривает этого

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

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

78a414f9e9205ff00f38e03a4fc0be34.jpg

Задачи

Задачи перед Go сегодня стоят точно такие же, какими были в 2007 году. Мы хотим сделать программистов более эффективными в управлении двумя видами масштабируемости: масштабируемости систем, особенно многопоточных(concurrent) систем, взаимодействующих со многими другими серверами — широко представленными в виде серверов для облака, и масштабируемость разработки, особенно большие кодовые базы, над которыми работают множество программистов, часто удалённо — как, например, современная open-source модель разработки.

Эти виды масштабируемости сегодня присутствуют в компаниях всех размеров. Даже стартап из 5 человек может использовать большие облачные API сервисы, предоставленные другими компаниями и использовать больше open-source софта, чем софта, который они пишут сами. Масштабируемость систем и масштабируемость разработки также актуальны для стартапа, как и для Google.

Наша цель для Go 2 — исправить основные недочёты в Go, мешающие масштабируемости.

(Если вы хотите больше узнать про эти задачи, посмотрите статью Роба Пайка 2012 года “Go at Google: Language Design in the Service of Software Engineering” и мой доклад с GopherCon 2015 “”.)

Описание Приложения


Go2bus – это мобильная версия портала информирования пассажиров, в которой Вы можете отслеживать местоположение общественного транспорта в реальном времени! Актуальные данные от диспетчерского центра, точная информация о местоположении нужного Вам транспорта и маршрутное расписание. Наше приложение поможет Вам экономить время и планировать свои поездки, Вы всегда будете знать, во сколько именно должен подойти нужный трамвай, автобус, троллейбус или маршрутное такси. Самые часто используемые маршруты Вы можете добавить в избранное, чтобы они всегда были под рукой

Установите приложение, выберите свой город из списка и в путь!Доступно для городов: Артем, Белогорск, Владивосток, Горно-Алтайск, Кемерово, Калининград, Находка, Новоалтайск, Уссурийск, Юрга, ЭлистаВНИМАНИЕ! Длительное использование GPS в фоновом режиме значительно сокращает заряд батареи.ATTENTION! Continued use of GPS running in background can dramatically decrease battery life.

Журнал Изменений / Что Нового


Убран баннер «Wokka Lokka»

Вам Также Могут Понравиться Эти Приложения

  • 2014-03-24

    St. Pete busses
    Удобное приложение, позволяющее посмотреть, где находится сейчас автобус, троллейбус или трамвай нужного вам маршрута!Отличительной особенностью данного…

  • 2018-11-30

    Transport Cheboksary
    Public transport for Cheboksary and Nonocheboksarsk

  • 2017-11-21

    Транспорт Томска
    Public transportation in Tomsk on the map online.

  • 2018-09-20

    Astana Bus Free
    Current information on the forecast bus routes of the city of Astana.

  • 2016-03-03

    How to get from A to B. Routes
    We offer the shortes routes on public transport to save your time!

  • 2018-08-27

    WikiRoutes. Public transport
    Public transportation database

  • 2018-02-06

    Schedule of transport in Moscow
    Reliable ground transportation in Moscow online.

  • 2018-12-17

    Trafi
    All transport in one place

  • 2018-09-03

    Avenue — Public Transport
    Welcome to Avenue

  • 2018-09-26

    moovel
    Accurate transit data and trip planning

  • 2018-12-08

    Bustime
    tracks buses and other public transport online and shows routes on the map

Городская интерактивная афиша 2do2go.ru разработала новый формат

Источник: Москва 24

ородская интерактивная афиша  будет радовать читателей новым форматом подачи информации. Основными нововведениями стали структура новостей в каталогах, персонализация данных и карта. На днях планируется обновление верстки сайта.Теперь каждый желающий может найти информацию афиши в социальных сетях, щелкунув по соответствующей кнопке, а еще – воспользоваться бизнес-кабинетом. Раздел «В городе» отныне всегда на виду. Серьезная переработка затронула и страницу событий.Также выделены кнопки СМС/Email оповещений с сохранением функции уведомлений о грядущем событии. А еще у пользователей появилась возможность подписаться на получение полезной информации. При помощи обновленной карты теперь можно искать не только популярные события, но и изучать городские маршруты, гиды из рубрик.

М24.ru и интерактивная афиша 2do2go стали информационными партнерами

Источник: Москва 24

Интерактивная афиша 2do2go стала информационным партнером портала М24.ru. Теперь команда проекта будет готовить для читателей нашего сайта подборку интересных событий и мест столицы.  – это уникальный проект, который помогает жителям мегаполиса в выборе досуга. Главные его преимущества – гибкость в настройке, удобство использования и возможность самостоятельно добавлять новые события. Найти интересное мероприятие можно с помощью специального фильтра – по увлечениям или местонахождению. Также благодаря бесплатной функции SMS-напоминаний, москвичи не забудут о своих планах – система автоматически напомнит о них в указанное время.Изначально проект существовал в виде страниц «Интересное в Москве» и «Моя Москва» в популярных социальных сетях. Сейчас у него появился собственный сайт, который, несмотря на «молодость», пользуется у москвичей большой популярностью.

О компании

Рассматриваемый ресурс представляет собой онлайн-сервис для организации путешествий. Функционирует он уже более семи лет. Благодаря ресурсу Go2See существует возможность найти и приобрести авиабилеты и билеты на железнодорожный транспорт, взять в прокат автомобиль, забронировать номер в гостинице или арендовать апартаменты. Именно данный ресурс является официальным агентом Международной ассоциации воздушного транспорта, что объясняет его абсолютную надежность. С его помощью вы сможете приобрести билет на любое направление по наиболее низкой стоимости.

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

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

Сделать разумный выбор можно, исследовав содержащиеся в Сети о сайте Go2See отзывы. AWD — сервис, который оказывает в этом неоценимую помощь. Именно на этом ресурсе можно найти советы путешественникам, основанный на реальном опыте. Справиться без такого рода информации было бы крайне сложно.

В Москве запущена интернет-афиша 2do2go

Источник:

Начал действовать новый онлайн проект 2do2go, представляющий полную афишу событий Москвы. Создатели сервиса — компания «Фабрика Информационных Технологий», известная такими реализованными проектами, как «Виртуальная школа», «Муниципальные услуги в области образования» и социальной группой «Интересное в Москве», которая собрала около 200 000 подписчиков.

Как заявляют создатели, 2do2go — это открытый, бесплатный и «умный» портал, который поможет отыскать каждому жителю мегаполиса самые занятные события и мероприятия. Главные преимущества интернет-гида — гибкость, удобство и открытость. Выбирать события можно не только с помощью установленных фильтров относительно увлечений, но и по местонахождению пользователя, используя уникальную карту. Карта имеет «тепловой» эффект: чем больше людей ставят отметку на событии, тем ярче становится цвет выбранного места. Эти функции доступны без регистрации. Также на сайте можно обсуждать мероприятия, делиться опытом, приглашать друзей или просматривать их любимые места, чтобы составить им компанию. В ближайшее время появится возможность покупать билеты прямо на портале.

Кроме основных поисковых функций 2do2go предлагает некоторые развлечения. Например, если человек теряется в выборе предложенных мероприятий, игровой автомат на bandit.2do2go.ru поможет ему не только определиться с предпочтениями, но и получить сервисный бонус от организаторов.

Как обещает один из авторов проекта Федор Жерновой: «Теперь москвичам не надо перебирать множество сайтов в поисках информации о том, куда пойти и чем заняться. Вся информация находится в одном месте. Пользователи 2do2go.ru ни за что не пропустят ничего интересного и не останутся одиноки в своем выборе. 2do2go должен стать народной афишей, где представлены не только топовые мероприятия, но и события на 10-20 человек».

править OS X

[править] Xquartz (required by X2Go Client)

X2Go OS X клиент использует OS X X11 сервер который может быть полученздесь.

  • X11 сервер должен быть сконфигурирован для принятия удаленных сессий в его настройках.
  • После установки XQuartz, пользователь должен выйти (log off) и войти (log in) еще раз.
  • Другие подсказки доступны здесь на английском языке…

Что бы скопировать и вставить данную команду, выделите её мышкой и используйте — ⌘+V :


echo «*VT100.translations: #override Meta <KeyPress> V: insert-selection(PRIMARY, CUT_BUFFER0) \n» > ~/.Xdefaults

[править] X2Go Client

Скачать образ диска можно здесь: X2Go for OS X.

Выберите вашу ОС, не пытайтесь выбрать версию выше чем ваша.

После всего откройте образ и установите» x2goclient.app в ваши /Приложения/.

[] Системные настройки

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

Решения

f6a2c57f560b872e74c962caa6935ae2.png

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

Одна из проблем, которую мы, возможно, будем решать, это то, что компьютеры часто при базовых арифметических вычислениях выдают дополнительные результаты, но в Go нет прямого доступа к этим результатам. В 2013 Роберт предложил, что мы можем расширить идею двойных выражений (“comma-ok”) на арифметические операции. Например, если и , скажем, uint32 значения, вернет не только обычные нижние 32 бита, но и верхние 32 бита умножения

Эта проблема не выглядела особо важной, поэтому мы записали потенциальное решение, но не реализовывали его. Мы ждали

Совсем недавно, мы разработали для Go 1.9 новый пакет math/bits, в котором находятся различные функции для манипулирования битами:

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

Другая проблема, которую мы могли бы хотеть решить после выхода Go 1 был факт того, что горутины и разделённая (shared) память позволяли слишком легко создать ситуацию гонки (races) в Go программах, приводящих к падениям и прочим проблемам в работе. Решение, основанное на изменении языка, могло бы заключаться в том, чтобы найти какой-то способ гарантировать отсутствие ситуаций гонки, сделать так, чтобы такие программы не компилировались, например. Как это сделать для такого языка, как Go пока что остается открытым вопросом в мире языков программирования. Вместо этого мы добавили базовый инструмент, который очень просто использовать — этот инструмент, стал неотъемлемой частью опыта работы с Go. В этом случае наилучшим решением оказалось изменение в runtime и в инструментарии, а не изменение языка.

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

Как купить авиабилет

Потребуется всего несколько минут для того, чтобы приобрести для себя билеты на сайте Go2See. Отзывы о покупке подтверждают простоту проведения данной операции. Для этого необходимо:

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

После этого на ваш электронный адрес будут отправлены электронные билеты на ваш рейс.

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

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

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

Пример високосные секунды

Мой первый пример связан с временем.

Представьте, что вы хотите замерить, сколько времени занимает некое событие. Вы сначала запоминаете время начала, запускаете событие, записываете время конца и затем вычитаете время начала из времени конца. Если событие заняло 10 миллисекунд, операция вычитания вернёт вам ровно 10 миллисекунд, возможно плюс-минус маленькую погрешность измерения.

Эта очевидная процедура может не сработать во время “високосной секунды” (leap second). Когда наши часы не совсем точно синхронизированы с дневным вращением Земли, специальная високосная секунда — официально это секунды 23:59 и 60 — вставляется прямо перед полуночью. В отличие от високосного года, у високосных секунд нет легко предсказуемого паттерна, что затрудняет автоматизацию их учета в программах и API. Вместо того, чтобы ввести специальную, 61-ю, секунду, операционные системы обычно реализуют високосную секунду переводя часы на секунду назад аккурат перед полуночью, так что при этом 23:59 происходит дважды. Такой сдвиг часов выглядит, как поворот времени вспять, и наш замер 10-миллисекундного события теперь может оказаться отрицательным значением в 990 миллисекунд.

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

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

В октябре 2015 появился баг-репорт о том, что Go программы некорректно возвращают длительность событий во время подобных сдвигов часов, особенно в случае с високосной секундой. Предложенное решение было также и заголовком репорта: “Добавить новый API для доступа к монотонным часам”. Тогда я утверждал, что проблема не была достаточно значима, чтобы ради неё создавать новый API. Несколько месяцев перед этим, для високосной секунды в середине 2015 года, Akamai, Amazon и Google научились замедлять свои часы таким образом, что эта дополнительная секунда “размазывалась” по всему дню и не нужно было переводить часы назад. Всё шло к тому, что повсеместное использовать этого подхода “размазывания секунды” позволило бы избавиться от перевода часов вообще и проблема исчезнет сама собой. Для контраста, добавление нового API в Go добавило бы две новые проблемы: мы должны были бы объяснять про эти два типа часов, обучать пользователей когда использовать какой из них и конвертировать массу существующего кода, и всё лишь для ситуации, которая очень редка и, скорее всего, вообще исчезнет сама.

Мы поступили так, как делаем всегда, когда решение проблемы не очевидно — мы стали ждать. Ожидание даёт нам больше времени, чтобы накопить больше опыта и углубить понимание проблемы, плюс больше времени на поиски хорошего решения. В этом случае, ожидание добавило понимание серьёзности проблемы, в виде сбоя в работе Cloudflare, к счастью незначительного. Их Go код замеряющий длительность DNS запросов во время високосной секунды в конце 2016 года возвращал негативное значение, подобное примеру с -990 миллисекундами выше, и это приводило к панике на их серверах, поломав около 0.2% всех запросов в самом пике проблемы.

Cloudflare это именно тот тип облачных систем, для которых Go и создавался, и у них случился сбой в продакшене из-за того, что Go не мог замерять время правильно. Дальше, и это ключевой момент тут, Cloudflare написали про свой опыт — Джон Грэхем-Камминг опубликовал блог-пост “Как и почему високосная секунда повлияла на DNS Cloudflare”

Рассказав конкретные детали и подробности инцидента и их опыт работы с Go, Джон и Cloudflare помогли нам понять, что проблема неточного замера во время високосной секунды была слишком важной, чтобы оставлять её не решенной. Через два месяца после публикации статьи, мы разработали и реализовали решение, которое появится в Go 1.9 (и, кстати, мы сделали это )

Процесс

Это поднимает важный вопрос. Какой процесс разработки Go в целом?

В ранние дни Go, когда нас было всего пятеро, мы работали в паре смежных офисов, разделённых стеклянной стеной. Было очень просто собрать всех в одной комнате, обсудить какую-то проблему, вернуться на свои места и тут же реализовать решение. Если во время реализации возникало какое-то затруднение, было легко снова собраться и обсудить. В офисе Роба и Роберта был маленький диванчик и белая доска, и обычно кто-то из нас заходил и начинал писать пример на доске. Как правило к моменту, когда пример был написан, все остальные находили момент, на котором можно было сделать паузу в текущей задаче, и были готовы сесть и обсудить код. Такой неформальный подход, само собой, невозможно масштабировать на размер Go сообщества сегодня.

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

5e24b7b5bbcc391ef57ada52b76032e8.png

Первый шаг — использовать Go, чтобы наработать опыт работы с ним.

Второй шаг — идентифицировать проблему в Go, которая, вероятно, нуждается в решении и выразить её, объяснить другим, представить её в письменном виде.

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

Четвертый шаг — реализовать решение, проверить его и улучшить, основываясь на результатах проверки.

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

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

И хотя я не думаю, что мы когда-либо рассказывали про этот процесс целиком, но мы объясняли его по частям. В 2012, когда мы выпустили Go 1 и сказали, что настало время начать использовать Go и перестать изменять, мы объясняли первый шаг. В 2015, когда мы представили изменения в процесс предложений (proposals) для Go, мы объясняли шаги 3, 4 и 5. Но мы никогда не объясняли второй шаг подробно, и я бы хотел сделать это сейчас.

(Более подробно про разработку Go 1 и про прекращение изменений в языке, посмотрите доклад Роба Пайка и Эндрю Герранда на OSCON в 2012 году “The Path to Go 1.”. Более детально про процесс предложений можно посмотреть в докладе Эндрю Герранда на GopherCon в 2015 “How Go was Made” и в )

Нужна ли транзитная виза

Как определить, необходимо ли оформлять транзитную визу для перелета? Для этого следует рассмотреть несколько частных случаев.

Например, если пассажир летит в безвизовую страну, делая при этом одну пересадку в каком-либо городе Европы, транзитная виза ему не понадобится. Однако это действительно только для тех аэропортов, в которых есть транзитная зона. Если же пересадки делаются в двух городах, необходим актуальный Шенген.

Если вы намерены пересечь США, Канаду или Австралию, придется обязательно оформить транзитную визу. Аналогичная ситуация с пересадкой в Великобритании. Однако только при необходимости смены аэропорта.

Если вы летите через Великобританию для транзитной страны также понадобится.

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

Дизайн

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

0d600a021179e80a88acb6eed93e44a6.jpg

Несмотря на миниатюрный размер, деталек очень много. Хорошо сделаны кнопки, щелкают при нажатии, под заглушкой microUSB и 3,5 мм (JBL, давай уже только USB-C, хорош), можно положить Go на спинку, можно поставить на торец, для этого предусмотрели маленькие ножки внизу. Приятно видеть такую заботу. 

478a2459d54f1c21f5820ec434297d45.jpg

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

c5cee4579caa217e0f6bd568921a13ef.jpg

править GNULinux установка из исходных кодов в tarball

Исходники X2Go доступны тут.

X2Go относится к теме «Программное обеспечение»   ±
Программное обеспечение позволяет Вашему компьютеру работать
[править]
Компании Apple • Microsoft • Soft Xpansion Ukraine • Softmap • TrueConf
Операционные системы Android • FreeBSD • Linux (GNU/Linux, Линуксоид) • Mac OS • iOS • Unix • uOS • Windows (95 • 98 • XP • 2000 • Vista • 7 • 8 • 10 • Server 2012 • Windows Phone) • ReactOS
Браузеры Google Chrome • Internet Explorer • Firefox • Opera • Rosenfox Portable • Safari • Интернет@mail.ru • Яндекс.Браузер • Амиго • WorldWideWeb • W3m • Chromium
Расширения для браузера Anonymox • CensureBlock • Deepest Sender • Feedly • Ghostery • MR Tech Toolkit • StumbleUpon
Для сайтов Apache (.htaccess) • Denwer • JQuery • MySQL • Nginx • PHP • XAMPP • OpenVZ • МетаМорфный МультиДизайн
Файлообмен Emule • I2PSnark • RetroShare • Shareman • Torrent • Zona
Для работы с MediaWiki AutoWikiBrowser • Huggle (CPS) • WikiHistory
Мессенджеры Clikclap • ICQ • QIP • IRC • Jabber • Mail.Ru Агент • Miranda IM • QIP Infium • Skype • XMPP • MSN • Telegram • WhatsApp • Viber • Cryptocat
Текстовые редакторы AkelPad • ClickHelp • EtherPad • Microsoft FrontPage • Microsoft Word • Notepad • Notepad++
Графические редакторы DNG4PS (2) • ScreenSender • Photoshop (фотошоп)
Анонимайзеры TOR • I2P • anonymouse
SEO SeoRank • Statist-Motivator
Эпичное BolgenOS • bugoga • Антивирус Иммунитет • Вишмастер • Война редакторов • Pidora
Разное Межсистемность • Пасхальное яйцо • Пользовательское соглашение • Раскладка Ильи Бирмана • СУФД • DjVu • Enduro/X • IT happens • IZCITY.com • Piwik • Repl.it • Украинский национальный антивирус • Платформа AggreGate • ArtMoney • Glype • iSafer • teamtools • • X2Go

Нормы багажа

Важно помнить, что свои собственные ограничения в отношении багажа (его веса, габаритов, типа провозимых вещей и разрешенной ручной клади) имеет каждая авиакомпания, представленная на ресурсе Go2See. Отзывы покупателей подтверждают, что с ними необходимо ознакомиться заранее, чтобы позже избежать неприятных сюрпризов

Некоторые авиакомпании ожидают, что багаж будет оплачен дополнительно. Это актуально для лоукост-перевозчиков, которые не включают его стоимость в цену билета. Важно заранее ознакомиться с подобными требованиями.

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

Также существует возможность оплатить стоимость багажа, который не включен в цену билетов, непосредственно на сайте Go2See. Отзывы покупателей сообщают о невероятном удобстве данной услуги. Другими возможности оплатить багаж появятся на сайте самой авиакомпании и на стойке регистрации непосредственно в аэропорту отправления.

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

6a6696a83daec6f2d2a1b21bb9ab1f92.jpg

Препятствия

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

Go 2 должен способствовать всем этим разработчикам. Мы должны просить их забыть старые привычки и выучить новые только если выгода от этого действительно того стоит. Например, перед Go 1, метод интерфейсного типа назывался . В Go 1 мы переименовали его в , чтобы отличить типы для ошибок от других типов, который просто могут иметь отформатированное строчное представление. Однажды я реализовывал тип, удовлетворяющий интерфейсу, и, не думая, называл метод , вместо , что, конечно же, не скомпилировалось. Даже через 5 лет я всё ещё не до конца забыл старый способ. Этот пример проясняющего переименования было важным и полезным изменением для Go 1, но был бы слишком разрушительным для Go 2 без действительно очень весомой причины.

Go 2 должен также хорошо дружить с существующим Go 1 кодом. Мы не должны расколоть Go экосистему. Смешанные программы, в которых пакеты написаны на Go 2 и импортируют пакеты на Go 1 или наоборот, должны безпрепятственно работать в течении переходного периода в несколько лет. Нам ещё предстоит придумать, как именно этого достичь; инструментарий для автоматического исправления и статического анализа вроде go fix определённо сыграют тут свою роль.

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

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

Сегодня я буду концентрироваться на возможных крупных изменениях, таких как дополнительная поддержка обработки ошибок или добавление неизменяемых (immutable) или read-only значений, или добавления какой-нибудь формы generics, или ещё какой-нибудь важной пока не озвученной темы. Мы сможем сделать только несколько таких крупных изменений

И мы должны будем выбрать их очень внимательно.

2do2go.ru о предстоящих интересных событиях и мероприятиях в столице

Источник: Эхо Москвы

Появился еще один бесплатный сервис, благодаря которому вы сможете узнать о предстоящих интересных событиях и мероприятиях в столице. Сайт о котором пойдет сегодня речь 2do2go.ru Пишется ресурс так цифрами и буквами 2do 2go.ru. Создатели сделали очень удобную систему поиска. Для начала вам предложат выбрать из категорий: посидеть, посмотреть, погулять, отдохнуть активно, научиться или тренироваться. далее у каждой категории есть несколько подпунктов: метро, интернет, открытый воздух и многое другое. Скажу честно, что шансов найти что-то новое мало, пожалуй, только в разделе «научиться». Очень хорошая подборка обучающих программ по самым разным интересам от экономики до дизайна и и игры на гитаре. Чтобы полноценно пользоваться сайтом, вам даже не нужно регистрироваться. Можно так же зайти через фейсбук или контакт Если вам понравится то или иное мероприятие, концерт или кино, то можно отметить его нажав на кнопку «это интересно» , чем больше людей это сделает , тем более ярким цветом оно будет выделяется в афише. Это поможет другим посетителям сайта сразу обратить внимания на самые интересные по мнению большинства мероприятия в городе. Также вы можете подписаться на рассылку «Интересное в Москве в социальной сети в контакте и Моя Москва в Фейсбуке.Пожалуй единственное чем отличается этот сайт-афиша от других, тем, что он позволяет не только находить интересные мероприятия, но и уведомляет пользователей о них по средствам СМС-сообщений. Проект работает пока только в Москве но в самом вверху сайта, если нажать на слово Москва вылезет письмо в котором говориться: Если у вас есть команда, которая готова заняться развитием проекта в вашем городе -напишите нам Сайт, о котором я вам сегодня рассказывала 

Объяснение проблем

191918803c39b5df1a4e7af0155fcde5.png

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

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

Компьютер никогда нас не спросит “Почему этот случай для теста важен? А ты уверен, что это именно та проблема, которую ты должен решать? Точно ли решение этой проблемы это самая важная задача, которой ты должен заниматься?”. Возможно, однажды так и будет, но точно не сегодня.

Давайте взглянем на старый пример из 2011. Вот, что я написал про переименование в , когда мы планировали Go 1.

error.Value
(rsc) Проблема, которую мы имеем в низкоуровневых библиотеках заключается в том, что всё зависит от “os” из-за os.Error, поэтому сложно делать вещи, которые пакет os сам мог бы использовать (как пример с time.Nano ниже). Если бы не os.Error, не было было бы столько других пакетов, которые зависят от пакета os. Сугубо вычислительные пакеты вроде hash/* или strconv или strings или bytes могли бы обойтись без него, к примеру. Я планирую исследовать (пока что ничего не предлагая) определить пакет error примерно с таким API:
package error
type Value interface { String() string }
func New(s string) Value

Он начинается с краткой однострочной формулировки проблемы: в низкоуровневых библиотеках всё импортирует “os” ради . Далее идут 5 строк, которые я подчеркнул, описывающие значимость проблемы: пакеты, которые “os” использует не могут использовать тип error в своих API, и другие пакеты зависят от по причинам никак не связанным с работой операционной системы.

Убедят ли вас эти 5 строк, что проблема стоит внимания? Это зависит от того, насколько хорошо вы можете заполнить контекст, который я оставил за рамками: чтобы быть понятым, нужно уметь предугадать, что другие люди знают. Для моей аудитории в то время — десять других людей в команде Google работающей над Go, которые читали этот документ — этих 50 слов было достаточно. Чтобы представить ту же самую проблему аудитории на конференции GothamGo прошлой осенью — аудитории с гораздо более разнообразным опытом — я должен быть предоставить больше контекста, и я использовал уже 200 слов, плюс примеры реального кода и диаграмму. И это факт, что современное Go сообщество, которое пытается объяснить важность какой-либо проблемы, должно добавлять контекст, причём проиллюстрированный конкретными примерами, который можно было бы исключить в беседе с вашими коллегами, например.

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

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here