Задать вопрос
  • Есть ли хорошие книги для начала изучения c#?

    Подойдёт для начала эти сайты: metanit и professorweb.
    Ответ написан
    Комментировать
  • Много ли времени отнимает SEO одного сайты?

    Eridani
    @Eridani
    Мимо проходил
    СЕО - не только работа по чеклисту, настройка тех. части и написание текстов, давно уже СЕО - совокупность работы маркетолога, программиста и дизайнера, ну и где-то там копирайтер, и самая ответственная работа тут у маркетолога-аналитика, который будет анализировать сайт, поведение и стараться сделать сайт лучше, составлять ТЗ на разработку новых компонентов, которые упрощали бы пользование сайтом, давали новый полезный функционал и, собственно, все то, что было бы необходимо для того, чтобы посетитель нашел ответы на все его вопросы, иными словами сделать так, чтобы сайт с ним "говорил" не хуже манагера-консультанта в магазине.

    Это такой продукт, который можно улучшать бесконечно.
    Ответ написан
    3 комментария
  • Как указать src изображения из переменной во Vue.js?

    Fragster
    @Fragster
    помогло? отметь решением!
    При использовании шаблона webpack из vue-cli картинки, которые должны идти без обработки, следует класть в static (или её подпапку), и пути к ним писать так, как будто бы static лежит в корне, рядом с index.html. Если хочется класть в assets (или используется другой шаблон/полностью ручная настройка), то следует настроить webpack таким образом, чтобы имена картинок после url-loader или другого используемого модуля были предсказуемы (например при ресайзе - указывать целевое разрешение в имени файла) и указывать уже это выходное имя файла в свойстве.
    Ответ написан
    1 комментарий
  • Webpack не находит модуль '@babel/core'. Как пофиксить?

    miraage
    @miraage
    Старый прогер
    Какой-то пакет из ваших зависимостей требует babel 7+, а у вас - 6.
    Читайте, обновляйтесь.

    https://babeljs.io/blog/2018/08/27/7.0.0
    Ответ написан
    1 комментарий
  • Временное убежище на случай падения хостинга?

    Sanasol
    @Sanasol
    нельзя просто так взять и загуглить ошибку
    https://poiskvps.ru/
    можно купить целых два собственных виртуальных сервера за 100 рублей.

    Даже школьник способен найти несколько сотен рублей в месяц на свои нужды(скины в дотке купить или в вов погонять), а зажимать 100 рублей ну это уже какой-то ад.

    Но я не миллионер, чтобы вливать ещё и ещё

    100 рублей и я не миллионер, самому-то не смешно?
    Ответ написан
    5 комментариев
  • Как установить плагин в Nuxt.js?

    petrovnr
    @petrovnr Автор вопроса
    Господа, сам нашел ответ убив 3 дня)
    1. Vuetify не поддерживается в Nuxt.js
    2. Поддерживается ElementUI

    Инструкция как установить:
    3.0) npm install element-ui -S

    3.1) nuxt.config.js
    module.exports = {
        plugins: ['~plugins/element-ui.js'],


    3.2) ~plugins/ekement-ui.js
    import Vue from 'vue'
    
    const ElementUI = require('element-ui')
    const locale = require('element-ui/lib/locale/lang/ru-RU')
    Vue.use(ElementUI, {local)} // если вставить global ничего не меняется, пока я не понял почему так


    3.3 ~pages/index.vue
    <template>
    <div>
        <el-row>
            <el-col :span="24">
                <el-button>Default Button</el-button>
                <el-button type="primary">Primary Button</el-button>
                <el-button type="text">Text Button</el-button>
            </el-col>
        </el-row>
        <el-row>
            <el-col :span="24">
                <el-input-number v-model="num1" :min="1" :max="10"></el-input-number>
            </el-col>
        </el-row>
    </div>
    </template>
    
    <script>
    export default {
        layout: 'teub',
        data() {
            return {
                num1: 1
            }
        }
    }
    </script>
    
    <style>
    body {
        font-family: "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", Arial, sans-serif;
        padding-top: 50px;
    }
    
    .el-row {
        padding: 10px;
        text-align: center;
    }
    </style>
    Ответ написан
    2 комментария
  • Как реализуется SPA-приложение, на примере Vue.js?

    @Barmunk
    На laravel есть реализация SPA приложения, можете его изучить, как раз собрано все, что вас интересует

    https://github.com/codecasts/spa-starter-kit

    Client side
    Vue.js 2.0 project create with vue-cli + webpack template
    Centralized state management with Vuex
    Route management with Vue-router
    Authentication with JWT
    Keep user signed in using local stored info
    HTTP requests with Axios
    ESLint with AirBNB preset
    Pagination integrated with Laravel's LengthAwarePaginator
    Alerts and Confirmation Alerts provided by SweetAlert

    Server side
    Laravel 5.3
    Authentication with JWT
    Fractal
    Web service RESTful with Dingo (planned)
    Ответ написан
    2 комментария
  • Книги по Нейронным сетям, ИИ и машинному зрению?

    @Junior007 Автор вопроса
    Нашел то, что искал: Репозиторий на GitHub

    В описании есть 8 книг, которые искать не нужно уже в репозитории + 3 онлайн курса (ссылки) и еще статьи. Вдруг кто тоже искать будет.
    Ответ написан
    Комментировать
  • В чём разница между url, href и src?

    HamSter007
    @HamSter007
    HTML/CSS верстальщик
    HTML BOOK

    ----------------------------------------------------------------------------------------------------

    URL Адрес - Адреса применяются для указания пути к файлу, например, для установки фоновой картинки на странице. Для этого применяется ключевое слово url(), внутри скобок пишется относительный или абсолютный адрес файла.

    Свойство: url(<адрес>);

    ----------------------------------------------------------------------------------------------------

    Атрибут href - Задает адрес документа, на который следует перейти.

    <a href="URL">...</a>

    ----------------------------------------------------------------------------------------------------

    Атрибут src - Указывает адрес файла (URL), который будет загружаться во фрейм. Это может быть HTML-документ, изображение или серверная программа.

    <iframe src="URL">...</iframe>

    ----------------------------------------------------------------------------------------------------

    P.S:
    Поисковик не помог.
    ... Очень жаль, потому что в сети очень много информации на этот счет.

    url - адрес, путь.
    src, href - атрибуты тега.
    Ответ написан
    Комментировать
  • Как написать фронтенд для web приложения на go?

    @bnytiki
    Это - читали?
    https://golang.org/doc/articles/wiki/#tmp_6

    Пример работы с массивом:

    В шаблоне html писать так
    <ul>
    {{range .}}
    <li>{{.Item}}</li>
    {{end}}
    </ul>


    В тексте на Go этому соответствует примерно это:
    array:= []string{"abba", "bo", "rat"}
    ExecuteTemplate("templateName", arrray)
    Ответ написан
    3 комментария
  • Как вывести значения переменной на html страницу в go?

    @FireGM
    t.ExecuteTemplate(w, "shedule", struct{Test string}{Test: test})


    И в template обращаться к {{.Test}}
    Ответ написан
    2 комментария
  • Стоит ли браться полному новичку за язык Go?

    fedorez
    @fedorez
    Хатуль мадан
    в вашем вопросе огромная методическая ошибка видится мне.
    вы _изучаете_ язык пытаясь штудировать книжки. а это сложно. скучно. и вы бросаете.
    притяну-ка я за уши пример из реального мира - людские языки изучают лингвисты. это высшее образование. в то же самое время языком _пользуются_ пятилетние дети, используя множество его конструкций для своих нужд. сами-сами. а десятилетние дети уже могут на языке создавать достаточно сложные и даже красивые штуки.

    берите задачу и решайте её используя какой-либо язык, не нужно его заучивать по книжкам. придумайте что-то, что было б интересно вам. и пишите. подсматривая в руководства, документацию и форумы. например хеллоуворлды которые я ваял были мне дико полезны не только тем что я на них качался, но и решали мои практические ежедневные задачи, облегчая жизнь.
    удачи
    Ответ написан
    2 комментария
  • Как развиваться начинающему web-разработчику?

    @toZavtra
    Принимаю заказы, пишите vasya@incream.org
    Послушай человека, у которого 4 года опыта управления веб-студией.

    Тебе нужно в первую очередь понять, где ты хочешь работать и только потом уже думать о технологиях и их прокачке. Когда ты узнаешь, где ты хочешь работать, над какими проектами, то узнаешь и какие технологии там используются. Потом устраивайся туда junior'ом и так вырастешь быстрее всего.
    Заодно, посмотришь, надо ли тебе оно и может тебе идти в другую область с другими технологиями.

    Помимо программистских советов есть еще чисто практичные и зачастую они решают, например, ты любишь делать законченный продукт или ковыряться в старом коде? Все эти басни и бредни про фреймворки, пойми, эти люди, которые до тебя писали код на твоей будущей работе, мозгами намного хуже тех же программистов, которые создали тот же Wordpress, зато они позволяют себе хаять его. Так вот ты придешь и будешь за таким человеком искать ЕГО баги 4-х летней давности. А представь, что баги эти от кривой архитектуры.

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

    Поэтому, в чем лучше кодить: в wordpress или в каком-нибудь symfony - это вопрос спорный, холиварный. Ни то ни другое не идеальное. Соответственно, какой стек технологий тебе учить, выбирать нужно отталкиваясь от того, чем хочешь заниматься. А учить стек лучше не на курсах, а идти джуниором.

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

    Потом, не забывай еще главное, мы живем в стране, где даже автомобиль нормальный сделать не могут, качество разработки здесь абсолютно такое же, то есть никакое, люди они одинаковые, что в АВТОВАЗЕ, что в Яндексе, поэтому на весь этот флёр вокруг каких-то там разработчиков клади болт.

    Я тебе расскажу, как это работает с точки зрения бизнеса в России, а не со стороны парняги в свитере и очёчках:
    1) Есть богатый дядя, который наворовал в своё время денег, у него есть сын, сын начитался хабра и бизнес молодости, взял у бати своего миллионов 50-100 и пошел пилить абсолютно никому не нужный стартап, нанял 30 человек, поставил компы, вот сюда нужно знать не столько сами технологии, сколько МОДНЫЕ технологии, смотришь модные тренды и их учишь или просишься джуниором, вауаля, и вот ты в струе.
    Делали делали, сыночке надоело пилить стартап, у него пати на мальдивах, свадьба, дети и тд - все разбежались.
    2) Есть государство или крупная контора, которая так или иначе, принадлежит кому-то из власть имущих, им нужно какой-то проект, они этот проект отдают фирме (то есть сыну, брату, свату), у которой сайт визитка. Эта фирма отдаёт это другой фирме, та отдает это еще двум-пяти фирмам. Где-то там в конце сидишь ты за компом и делаешь то, что тебе написали в ТЗ. Чтобы тебе что-то изменить в этом ТЗ, это должно пройти через 8 ртов и кучу согласований, и ты вообще лучше сиди и поменьше высовывайся. В таких конторах будешь пилить и пилить какую-нибудь хрень, в которой уже запутались все вокруг, но ты как-то делай, ведь скоро сдача. А потом они за два дня до сдачи, всей аравой посредников и программистов собираются в одном месте и наконец-то звонят главному заказчику и спрашивают, а как надо делать, то есть то, что ты спрашивал месяц назад. Иногда этот брейншторм помогает, иногда нет. Как туда устроиться? Опять таки, иди джуном.
    Примечательно, что качество продукта таких контор обычно хуже самой захудалой Джумлы, зато там все хаят CMS, но чтобы им в продукте прикрутить голосовалку, им нужно напрячь 8 ртов, распилить бюджет в тысяч 180-400, через кучу согласований сделать всё через жопу, но через ООП и какую-нибудь Symfony. Круто.
    3) Компании типа Яндекса, каких-нибудь банков. В таких компаниях обычно умные люди только на самом верху - это основатели компании, усмотреть за всеми аспектами фирмы им технически невозможно, поэтому часть продукта у них хорошая, основная, например, как поиск у гугла, а 90% других сервисов полное говно (посмотрите, что сделали эти "умы" из яндекса, вроде, с кинопоиском). Зато ЧСВ у каждого там Васи на уровне основателя компании. Вот эти Васи и делают там 90% продуктов, которые, как-бы второстепенны. Чтобы туда попасть надо не технологии учить, а изучать тренды какого-нибудь хабра, что там сейчас ценятся, какие авторы зарубежные: "Мега алгоритмическое программирование Алана Коуэла" и тд, таких книжек прочитать штук 10, выучить всё азы чистого программирования без фреймворков, одеться как мудак, чтобы выглядеть еще мудачее того гика, который тебя будет собеседовать, а то они ранимые и завистливые и опять таки, устроиться джуном.
    4) Компании локальные по созданию сайтов и прочего программирования. В таких фирмах свободы намного больше, чем в первых трёх, но нет столько денег, зато сразу видно продукт, который делаешь. Тут тебе пригодится и вордпресс и битрикс. Туда тоже лучше идти джуном. В таких компаниях шанс того, что ты потом запустишь боком собственный проект намного выше, т.к. у тебя будет опыт создания веб-сервисов, сайтов за Реальные сроки и ты будешь видеть ход их развития. Но с точки зрения денег, редкий случай, когда они тебе могут предложить даже столько, сколько в стартапе.
    Поэтому, если для души программировать, получать удовольствие, то варианты 1 и 4. Если хочется работы, от которой многие воют, то 2, 3.

    5) Есть еще компании, которые работают на запад, денег сейчас там в теории, может быть столько же, сколько и в стартапе у богатого буратино, там тебе сильно повезет, если будете делать пункт 4, если 2-3, то можешь брать веревку и мыло.
    Стартапы таким компаниям дают мало когда, ведь хипстеру миллионеру нужна атмосфера, нужны работнички перед глазами, а не на аутсорце. А вот латать баги в 6 летнем коде по цене продавщицы в ларьке Нью-Йорка - это запросто, это аутсорц. Текучка в таких местах дикая, поэтому они, отчаявшись, ищут негров за рубежом, никто вменяемый этим заниматься не хочет у них на родине. Поэтому если на аутсорце будет создание сайтов или каких-нибудь новых систем, это большая удача.
    Туда тоже нужно идти джуниором. Еще они почти всегда требуют английский, а если у тебя есть английский, зачем тебе они?

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

    Есть еще лайфхак, берешь абонемент в дорогой фитнес центр и знакомишься там с парнями, когда-нибудь тебе повезет и выйдешь на кого-нибудь богатого из чиновничков или олигаршьих родственников. Всем говори, что ты программист и у тебя есть "команда". Этого хватит, у богатых всегда "куча идей" куда бы просрать бабки (стартап) или наоборот где-то "намутить денег" (пункт 2). Они тебе сами предложат "тему", если ты обмолвишься, что ты программист. Всё, что у тебя будет к тому моменту, это сайт визитка, понимаешь к чему я клоню? Пункт 2, но ты будешь сверху, вторым ртом. Если повезет, будет и пункт 1, но ты будешь ко-фаундерем, ты посмотришь модные технологии и будешь под смузи составлять вакансии с reactJS, Angular, high load и еще кучу умных слов. А на биржах заказы пусть обычные люди ищут, которые за деревьями леса не видят. Или идут через жопу в пункт 2, когда надо заходить с другой стороны. Think different.
    Тот, кто на основании выше написанного лайфхака понял, что он ходил по кругу, а ключик в другом месте открывается, может мне скинуть денег за совет на кошелек R738086405346
    Точнее, это даже не совет, это инструкция, которая действительно рабочая.
    Ответ написан
    2 комментария
  • Как развиваться начинающему web-разработчику?

    thecoding
    @thecoding
    Full-stack Dev
    Я бы вам первоначально посоветовал изучать не стеки , а проектирование архитектуры высоконагруженных проектов,проектов с сильной бизнес логикой.
    Почитайте и посмотрите лекции Олега Бунина (HighLoad++)
    Изучите MVC(O-OP)
    GIT (обязательно)
    Unix (Linux)
    Если у вас есть общие знания и какая то практика разработки на PHP , то начните с Yii 2, в Symphony и Laravel пока не лезьте.
    Потом вливаетесь в какой нибудь OpenSource Project.
    Дальше все само собой пойдет.
    Или возьмите какой нибудь более менее интересный репозиторий на GitHub и попробуйте запилить что то свое, только ручками код пишите, смотрите архитектуру и вникайте.
    А интернет магазин по продаже трусов для соседки Нины(условно) можно и на OpenCart поднять)))Один хрен не взлетит до Ulmart.
    Ответ написан
    3 комментария
  • Как развиваться начинающему web-разработчику?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Я в начале 2000-х писал приложение для учета некоммунальных услуг ЖКХ для местного МУПа. Начинался этот проект как тестовое задание для приема на работу.

    Писать можно было на чем угодно, но на тот момент для меня лучшим инструментом казался Clipper 5.x, которым я, как мне тогда казалось, более-менее владел.

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

    Забегая вперед скажу, что автоматизация, в конце концов, удалась, из режима работы 3 человека по 8 часов в день 6 дней в неделю, за 6 месяцев после начала внедрения, вышли в режим 1 человек 2 часа в день 5 дней в неделю... Т.е. 3*8*6*4 = 576 человеко-часов превратилось в 2*5*4 = 40 ч/ч, КПД был увеличен в 14.4 раза.

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

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

    Далее я реализовывал эти пути как разумел и предоставлял тётушкам.

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

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

    Первые месяцы они вели двойной учет, по старинке в своей огромной бухгалтерской книге, и в программе, и программу проверяли по книге. Через 2-3 месяца они убедились, что в программе "цифры" точнее, ошибки отлавливаются быстрее, меньшими усилиями, и стали уже свою книгу проверять по программе. Через 5-6 месяцев я написал им модуль расчета и распечатки месячного отчета, и они перестали вести свою книгу, просто печатали ее каждый месяц на огромном матричном принтере.

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

    Условно можно разделить основной функционал приложения на 2 фазы - ввод/редактирование/просмотр данных и построение отчетов/выборок. С отчетами и выборками тёмный лес, т.к. требования меняются непредсказуемым образом любое количество раз в году (по началу), а вот с вводом и редактированием данных в целом ситуация стабильная, тем более за предыдущие 3 версии я достаточно хорошо исследовал этот процесс.

    Ввод/редактирование данных осуществляется посредством форм, которые, в общем случае, повторяют структуру таблицы БД, за исключением случаев, когда присоединяются поля из справочников.

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

    Первейшая проблема программ на Clipper 5.x это банальное отсутствие таблиц БД, либо слетевшие индексы. Это первое, чем я озаботился. программа при запуске проверяет наличие или отсутствие таблиц и индексов, и чего не хватает - достраивает на лету. Таким образом можно потерять данные, но программа, все равно, работать будет. Чтобы это стало возможным, потребовалось в программе прописать структуры таблиц БД и индексов.

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

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

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

    Причем генератор грамотно отрабатывал множественную вложенность, и каждый вызываемый справочник имел полный функционал CRU (Create, Read, Update), включая фильтрацию по столбцам и сортировку.

    Таким образом я создал мощный и гибкий генератор интерфейсов, а разработка CRU-части приложения сводилась к разработке описания структур таблиц, индексов и метаописания форм.

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

    Для реализации этого функционала пришлось пропатчить стандартный грид TBrowse (он применяется для просмотра таблиц).

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

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

    P.S.: когда я мигрировал в веб, через некоторое время я снова вынужден был пройти аналогичный путь, в результате которого родился простенький AJAX-фреймворк на стеке PHP+Smarty+DBSimple+jQuery. Сегодня я всеми силами стараюсь от него уйти, хотя для своих задач он достаточно хорош. Был опыт, когда на шареном хостинге за 5 баксов проект на этом фреймворке со скрипом но держал 30-40 тысяч уников в сутки (после ряда оптимизаций) и достаточно хорошо был защищен от топорного взлома через SQL-инъекции благодаря DBSimple...
    Ответ написан
    1 комментарий
  • GIT как правильно пользоваться?

    @xfg
    Github Flow за 5 минут.

    1. Создал ветку для фичи/фикса
    2. Сделал в ветку несколько коммитов
    3. Отправил пулл риквест
    4. Обсудил с коллегами пулл риквест и при необходимости внес правки
    5. Прогнал ветку через тесты.
    6. Влил в master
    7. Выкатил master на продакшн

    Если фича ветка долго не мержится и начинает расходиться с master веткой, то вливаем master в фичу ветку и продолжаем.

    Если кто-то из команды хочет руками потестить новую фичу, то может сделать
    git checkout -b new-feature origin/new-feature
    И потестить руками локально на своей дев машине.

    Update: Если sql база, то пишут миграции. Можно посмотреть в любом фреймворке что это и как использовать. После каждого git pull пробуем накатить миграции через консоль (можно хук для гита написать) и если есть новые миграции, то они применятся к локальной базе. Если nosql база типа mongo, то ничего не надо, они schemaless.

    На продакшине, вытягиваем код из гита в отдельную директорию. Применяем миграции к базе, затем симлинк переключаем с директории со старой версией проекта на директорию с новой версией проекта. Если миграции ломают старую версию проекта, то предварительно нужно выключить проект, чтобы у пользователей не сыпались всякие непойманные исключения. Это вкратце, для всего этого нужно подобрать себе уже готовый инструмент деплоя, который это все автоматически будет делать.
    Ответ написан
    5 комментариев
  • GIT как правильно пользоваться?

    sabramovskikh
    @sabramovskikh
    Вкратце (могу ошибиться в некоторых пунктах)
    1)Каждый ставит что ему удобно (denwer, xampp, openserver (под виндой рекомендую openserver))
    2) Ставите каждому git
    3) Регаешься на битбакете. Регаешься на битбакете, создаешь команду, пока вас трое там бесплатно будет. Создаешь там пустой проект
    4) Создаешь проект на VPS (на нем уже стоит гит обычно)
    5) делаешь init git на VPS и пушишь в проект на битбакете
    6) Каждому сливаешь с сервера файлы и каждый делает у клон репа с гита
    7) Работаете, делаете комиты, пишите на битбакет.
    8) Потом пулить с битбакета на VPS
    Ответ написан
    6 комментариев
  • Развертывание web приложения на Go?

    evnuh
    @evnuh
    Поиск Гугл помог мне, впусти и ты его в свой дом
    Как это работает, чтобы понимали. Я опишу истинно правильный путь, но долгий: (как подсказал pygame , по бенчмаркам https://gist.github.com/hgfischer/7965620 всё же нативный хттп сервер в Go быстрее, чем nginx с fcgi, т.к. у Go гавняная реализация fcgi, поэтому вместо fcgi быстрее будет обычный http proxy_pass).

    1) Ставится веб-сервер нормальный, а не тот, который есть в самом Go. То есть, ставим nginx. Настраиваем ему все url маршруты, настраиваем отдачу статики.

    2) За динамикой nginx будет обращаться к нашему Go демону. По протоколу fast-cgi. Именно по нему, потому что nginx его умеет и вообще он хорош (upd: но не в Go). Это короч бинарный протокол по которому nginx передаёт в нашу Go программу HTTP заголовки запроса от браузера и получает обратно HTTP ответ. Для этого ставим простейшую обёртку для fast-cgi под названием spawn-fcgi, она будет преднастраивать и запускать нашу Go программу, готовую для общения по протоколу fast-cgi.

    3) На случай, если наша Go программа падает. Либо уже у нас есть система, которая следит за демонами и поднимает их в случае падения (systemd, upstart), тогда конфигурируем её, либо ставим таковую и тоже конфигурируем.

    Привожу пример как это всё сделано у меня (самый популярный стек технологий) на Debian:

    1) nginx
    server {
    	server_name otboi.****;
    	listen 80;
    	include fastcgi_params;
    ...
    	
    	location / {
    		fastcgi_pass unix:/var/run/otboinik.sock;
    	}


    2) systemd конфиг, который стартует нашу Go программу, завёрнутую в spawn-fcgi
    [Unit]
    Description=Otboinik
    
    [Service]
    Restart=always
    Environment=OTBOINIK_BIN=/opt/гыы/otboinik/bin/otboinik
    Environment=OTBOINIK_PID=/var/run/otboinik.pid
    Environment=OTBOINIK_USER=гыыыы
    Environment=OTBOINIK_SOCKET=/var/run/otboinik.sock
    Environment=OTBOINIK_SOCKET_USER=гыыыыы
    Environment=OTBOINIK_SOCKET_MODE=0666
    ExecStart=/usr/bin/spawn-fcgi -s $OTBOINIK_SOCKET -M $OTBOINIK_SOCKET_MODE -n -P $OTBOINIK_PID -u $OTBOINIK_USER -U $OTBOINIK_SOCKET_USER -G $OTBOINIK_SOCKET_USER $OTBOINIK_BIN
    
    [Install]
    WantedBy=multi-user.target


    3) Сам Go код
    import (
    	"net/http"
    	"net/http/fcgi"
    )
    
    type Server struct {
    }
    
    func (s Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
           // чиста пример
            jsonblob := r.FormValue("events")
    	if jsonblob == "" {
    		w.WriteHeader(http.StatusNotAcceptable)
    		return
    	}
    }
    
    func main() {
    	server := Server{}
    
    	func() {
    		fcgi.Serve(nil, server)
    	}()
    
    	waitchan := make(chan int, 1)
    	<-waitchan
    }
    Ответ написан
    4 комментария
  • Музыка для кодинга, под что вы программируете?

    @Vanch
    Люблю под The Glitch Mob.
    Ответ написан
    Комментировать