Go for IT. Часть вторая

    Go4IT


    Ранее в сериале: S01E01: Неуловимый Go

    Теория заГовора.


    Стоит ли растекаться мыслью по древу, погрязая в теологических спорах? Мы же взрослые люди — давайте достанем и измерим! Итак, не откладывая идею в долгий ящик, ставим понятные цели — создать за 48 часов «ХабрUp», способный привлечь внимание миллионной аудитории и, что само собой разумеется, выдержать нагрузку и принести прибыль.

    Только таким способом я cмогу убедительно продемонстрировать лёгкость и применимость Go language для создания Web-проектов.

    Тут ко мне возникнут два закономерных вопроса:
    1. А не хитрожопый ли я Борис Бритва, желающий таким образом пропиарить новый стартап?
    2. А не домашняя ли это заготовка, давно дожидавшаяся своей очереди в закромах?

    За ответами на эти вопросы и за сутью проекта, извольте под кат, почтенные коллеги!

    Голливудская улыбка или Голодный оскал капитализма?


    Увы, я не вижу способов разуверить вас в этом, хотя одна идейка имеется. Любой из читателей/писателей может предложить свою идею «ХабрАпа» и я внедрю её в жизнь в течении «других 48 часов». Но есть нюанс — раз уж такой недоверчивый человек заподозрит меня в корысти, то разочаровывать его в этом я не стану. То есть идея должна принести хотя бы 1 млн рублей в течении двух месяцев.

    Gold for party


    Почему такая сумма? Вот тут мы подходим ко второму интересному моменту. Пиратская Партия, к созданию которой я когда-то приложился, пытается собрать один миллион рублей, необходимый для официальной регистрации. Можете относиться к этому как угодно, а я готов поддержать это начинание just for fun.

    Иные возможности причинить блаГо


    Ну, а если кто-то совершенно против пиратов, то половину отдадим петербургскому приюту для животных «Ржевка». Если же кому-то противны и котики, то я с такими людьми даже разговаривать не желаю. Фу-фу-фу :)

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

    Coitus, ergo sum


    И ещё последний довод в свою защиту. Как нетрудно заметить, язык у меня подвешен ладно, да и в голове не опилки. Нескромно, но факт. Ergo, мне нет нужды «пиариться» столь изощрённым способом на грани фола. Я вообще предпочту остаться анонимусом-креативусом, насколько это возможно.

    Те же, кто останется верен убеждению в постановочности сего действа, от всей души желаю расслабиться и попытаться получить удовольствие хотя бы от шоу :)

    Нелепые отГоворки


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

    Городим оГород


    Нет, мы не будем создавать очередной клон «Весёлой фермы», переиначив его в симулятор управления лунопарком с блекджеком и представительницами древнейшей профессии. Хотя… Записал и отложил.

    Погоня, погоня, погоня...


    У заочного монолога есть один недостаток — трудно представить себе реакцию аудитории. Поэтому я представлю себе, что вы всё же мне поверили. Итак, с написания первой части статьи и до сегодняшнего обеда я копал. Копал в Рунете, в поисках найти небольшую, но зияющую дыру, пригодную для втискивания хабрапчика, периодически отвлекаясь на стимуляторы в виде лошадиных доз кофе (по стилю изложения, вероятно заметно) и лёгкое чтиво. Заглянув за обновлениями на блог Никонова (внимательно слежу за его публикациями о Pussy Riot и антиклерикальной деятельностью), глаза упёрлись в одинадцатую строку, рекламирующую книгу «Апргрейд обезьяны» под новым названием «Венец творения».

    … горячей крови


    Бац. Есть контакт. Вообще-то очень сложно описать ту логическую цепочку, которая от случайного Inspiration приводит к Implementation. Кстати, хорошая такая была книжка в советском отрочестве «От идеи — до модели». Если интересна цепочка и методика поиска идей, спрашивайте — отвечу.

    В голове что-то щёлкнуло и я привычно проговорил «Homo Sapiens, блин. Венец творения, блин». Но проговорил с ошибкой, поскольку «второе ядро» было занято мучительными родовыми схватками. Получилось — «User Sapiens». И словечко мне так понравилось, что стало распутываться в концепцию.

    … есть Город золотой...


    Вот сидим мы тут с вами, все такие умные и красивые, а где-то там, в далёкой и не очень глубинке — живут простые смертные — пользователи. И живут они, надо заметить, весьма скверно. То вирус подхватят, то на лохотрон наткнутся. А поскольку недавно я читал КМБ(п) для мон папа и для родителей мон амур, возникла мысль благотворительного проекта — «Апгрейда» User Defaultus до состояния User Sapiens. Ну хотя бы дотянуть их до Habilis. И если не мы, то кто? Все вокруг помогают детям, норовя защитить их от тлетворного влияния злых сетевых педобиров, а кто же позаботится о наших родителях, которые столь же наивно отправляют СМС-ки и попадаются на удочку нигерийских принцев?

    Но одних родителей маловато будет для создания резонанса и привлечения необходимого HighLoad-а. Следовательно, необходимо расширить круг до всех пользователей, включая и начинающих свой эволюционный путь, только-только откидыващих хвосты двоек по алгебре. Будет ли такой проект пользоваться спросом? Я в этом уверен процентов на 75. Достаточно приправить немного глазурью и отполировать до блеска, чтобы получился торт. Эта задача, кстати, выходит за рамки статей, но вы тоже можете и поучаствовать и последить за рождением, взрослением и неизбежной смертью проекта (с вероятностью близкой к 100%, я всё равно заброшу этот проект после достижения поставленной цели).

    Go, Джонни, Go!


    Вернёмся к Go и его применении для поставленной задачи. Итак, для свежевыдуманного (см. выше и ниже) проекта, я буду использовать Go, только Go, и ничего кроме Go. Тем самым продемонстрирую, что данный язык применим для fastdeva ничуть не хуже чем Python/Django или Ruby/Rails. Но устанавливать жёсткость правил игры я предоставлю вам. Тут есть два варианта реализации. Либо я вообще не использую никаких сторонних библиотек и проектов на серверной стороне проекта (кроме Nginx на фронтенде), то есть использую только стандартные библиотеки, либо всё же мы будем разумными людьми и позволим себе вместо изобретения велосипедов использовать готовые Mongo, Redis и другие сторонние пакеты. Пока почтенная публика будет обдумывать как лучше обустроить для меня прокрустово ложе, я в это время займусь контентом, рисованием и созданием клиентской части проекта.

    Show must Go on


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

    Обновление от 06.04.2012


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

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

    Подробнее
    Реклама
    Комментарии 35
    • +3
      Литератуура…
      • +5
        По существу: раз это fastdev, то думаю будет правильным "использовать готовые Mongo, Redis и другие сторонние пакеты", но только там, где оно надо.
        • +1
          клиентский интерфейс можно вообще на готовом каком нить bootstrap сделать
        • 0
          А смысл не использовать mongo\redis? Для того чтобы научить пользователей писать своё хранилище данных? Автор ставит перед собой цель доказать многоуважаемой хабрааудитории что Go пригоден для фестдева веб проекта, а не хранилища данных. Тем более если будут использоваться набирающие сейчас популярность NoSql технологиии.

          P.s Я думаю что книжка по Го вашего авторства с лёгкостью побьёт продажи какой нибудь Дарьи Донцовой или Бориса Акунина.
          • 0
            Псоле ее прочтения клиент будет иГоГокать.
            • +5
              Mongoло-татарское Иго :)
            • +1
              Я вообще хотел предложить развёртывание на платформе Google App Engine, но банальное отстутствие ещё одной сим-карты для авторизации SMS-кой перечеркнуло эту возможность. Да и быстродействие там хромает, откровенно говоря. Но надо бы, надо бы предоставить читателям и такую возможность. В конце концов GAE предоставляет неплохие технические возможности для стартапов с нулевым бюджетом. Буду надеяться, что кто-нибудь предложит стоящую идею проекта, чтобы продемонстрировать ещё и особенности работы с Гуглохранилищем.
              • 0
                На мой скромный взгляд, интереснее «на своем сервере» делать. Чтобы всё потрогать руками, до всего дотянуться.

                Например, Nginx фронт-эндом, Twister бек-эндом. И Go-приложение в 3 экземплярах.
                Безо всяких fastcgi, scgi и прочих *wsgi.

                Чтобы увидеть все преимущества, слабые места, тюнинговать, возрадоваться и — в продакшн.
                • 0
                  Гхм. А зачем смешивать Twister и 3-Go? Тут либо одно, либо другое.
                  • 0
                    Каждый Go будет иметь в себе по одному Twister, тогда так?

                    Я к тому, что стоит использовать уже проверенный сервер, а не изобретать велосипед писать свой с нуля.
                    Поправьте, если я в корне ошибаюсь.
                    • 0
                      Стандартная библиотека net/http тоже хорошо проверена. Впрочем, как скажете. Любой каприз, пока я ещё занят малеванием UI :)
                      • 0
                        Вам виднее, но действительно, показательней будет сделать на стандартной библиотеке, без использования готовых фреймворков.

                        Для чистоты эксперимента.
                        • +3
                          Предложение — сначала сделать что-то более-менее рабочее (пара итераций типа) на «голом» Go, а потом «отрефакторить» на Twister, показав его плюсы (или минусы :) ).
                          • +1
                            Вот коллега точно сформулировал! Плюсую комментарием (плюсики на сегодня все закончились).
                            • +2
                              Принято.
                • 0
                  Эх, а я уже Go установил, приготовился код писать…

                  По поводу использования — по-моему, разумно будет использовать совсем сторонние пакеты типа Mongo и биндинги к ним, а фреймворки, которые уже пишутся, не трогать :)
                  • 0
                    Апрельские иды пришли, но ещё не прошли. Я уже и код пишу, и Inkscape терзаю, и предложенный bootstrap изучаю.
                  • –2
                    Лучшее возьмите какой-нибудь фреймворк для проекта и продемонстрируйте полную быстроту разработки — разработку на Go без фремворков на хабре ужу демонстрировали.
                    • 0
                      Судя по всему это демонстрация это перевод документации.
                    • +3
                      Вот один из немногих авторов, которого интересно и забавно читать! Две статьи, ничего по сути не содержащие, кроме туманных обещаний, а все равно было круто. Уже прям не терпится чтоб скорей начался экшен! Прозреваю, что автор до конца не трансформируется в «сухого и педантичного ворчуна», и далее будет много лирических оступлений, но оно ж только к лучшему.

                      Ближе к теме: я как раз решил, что пришло время погрузится в новый язык/технологию (новую для меня, конечно). После некоторых раздумий решил остановится на джаве (все-таки она давно себя зарекомендовала, там и комьюнити, и т.д. и т.п.), но теперь вот подумал, может ну ее, «дворник старый, молодым вперед шагать». К тому же только вот сегодня наткнулся на сайт одного сервиса (не сочтите за рекламу, я не могу сказать про него ничего как хорошего, так и плохого), где есть примеры для разных языков, и я лишний раз задумался, а стоит ли писать столько на Джаве, когда можно писать столько кхм… не на Джаве. Ей богу, пальцы то тоже не казеные :) Кстати, может кому-то из знакомых с Go будет не лень написать пример интеграции того же сервиса для Go, чисто для сравнения?

                      P.S. Но каков стиль, каков стиль! Я прям завидую. Надо было тоже начинать с юридического образования! :)
                      • +3
                        Надо было тоже начинать с юридического образования! :)

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

                        package main
                        
                        import (
                                "log"
                                "net/smtp"
                        )
                        
                        func main() {
                        auth := smtp.PlainAuth("", "user@example.com", "password", "mail.example.com", )
                        
                        err := smtp.SendMail("mail.example.com:25", auth, "sender@example.org",[]string{"recipient@example.net"},[]byte("This is the email body."), )
                        
                        if err != nil {log.Fatal(err)}
                        }
                        
                        • 0
                          Что ж, весьма компактно. Спасибо! Ждем продолжения.
                      • 0
                        А у меня такой вопрос появился после прочтения всего этого — как в Go обстоят дела с IDE? А то мне, например, как человеку, сильно избалованному всякими идеями, нетбинсами и решарперами, хочется иметь как минимум автодополнение и всякие плюшки из серии перехода к определению функции, подсказок по аргументам, настраивоемое автоформатирование кода, хотя бы простейшие рефакторинги (например переименование, вынос куска кода в функцию) и т. д.
                        • 0
                          Теоретически — хреново. Практически — никак. Есть разные плагины подсветки синтаксиса и автозавершения, но все они работают так, что лучше их не использовать :)
                          • 0
                            Вроде бандл для TextMate вполне сносный.
                          • 0
                            А вы чем пользуетесь? Я как то ради интереса искал, есть всякие штуки вроде liteide, но у самого времени попробовать особо не было…
                            • 0
                              Geany. Без плагинов.
                            • 0
                              Статья обновлена. Пожалуйста, прочтите последний абзац.
                              • +2
                                Нужно больше заголовков.
                                • +1
                                  С интересом слежу за развитием событий. Подливая масла в огонь: чтобы быть честными, вы go с pypy сравнивали? Есть подозрение что pypy может уравнять разницу в скорости. Может и не 1 в 1, но все же.
                                  • 0
                                    Сравним, спасибо за идею.
                                  • +1
                                    Резонный вопрос… И где?
                                    • 0
                                      Бобик сдох…
                                      • 0
                                        В итоге всё заглохло?
                                        Куда делся автор? (Последний раз был на сайте 25 апреля 2012 в 09:11)

                                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.