• Как лучше BDD'ить с Rspec'ом?

    Fahrenhe17
    @Fahrenhe17
    Ruby on Rails developer
    Все, что написано ниже - сугубо субъективно и за чистую и единственную истину ни в коем случае воспринимать все не нужно.

    1. Что тестировать?
    Вопрос очень холиварный. Правда. Лично я делаю в бОльшем кол-ве integration tests, т.е. тестируется то, что видит пользователь. к тестам API это конечно не относится. Но так же тестирую более-менее сложные actions в контроллере. Так же я не тестирую простые валидации.
    Вывод: Для начала лучше тестировать каждый байт трафика между пользователем и сервером. Просто что-бы привыкнуть к тестам. Что-бы написать тест занимало меньше времени, чем любой, самый простой кусок кода в приложении.

    2. Название блоков.
    Скажу двумя словами от себя и вот ресурс. Там где-то в начале об этом вроде говорится.
    От себя - пишите названия так, что-бы при команде
    rspec --format documentation
    вам выводились более-менее связные предложения.

    p.s. Очень рекомендую главу RSpec из этой книги.

    Наверняка я ошибаюсь в чем-то и гуру рельсов меня поправят. Я буду только рад. :)
    Ответ написан
    Комментировать
  • Что скажете про Debian 8, как ОСь для веб-разработки?

    un1t
    @un1t
    Я давно пробовал разные дистры Slack, Mandriva, Fedora и прочее. Ubuntu был первый дистрибутив, после установки которого не преходилось пересобирать ядро два дня мучаться с отображением русских букв. Вот с тех пор на убунте и сижу, и на сервере у нас везде тоже убунта. Самый популярный дистр, по нему больше всего инфы и чаще выходят всякие патчи. Смысла сейчас смотреть на что-то другое не вижу. Рекомендую использовть LTS версии, т.е. в данный момент 14.04. Лучше потратить это время на что-то другое.
    Ответ написан
    Комментировать
  • Что скажете про Debian 8, как ОСь для веб-разработки?

    @AVKor
    А немцы тут при чём? Там разработчики со всего мира.

    Это универсальная ОС, подходит для всего. Самая большая официальная база пакетов. Нет дебильного деления на отдельные ветки, как в бунтах. Из одного источника ставится хоть сервер, хоть десктоп с любым DE/WM.

    Пользуюсь с конца 90-х годов.
    Ответ написан
    Комментировать
  • Что скажете про Debian 8, как ОСь для веб-разработки?

    s0ci0pat
    @s0ci0pat
    I'm Awesome
    На самом деле все просто: если достаточно хорошо разбираешься в linux, то конечно ставь Debian. Иначе, лучше оставайся на mint/ubuntu
    Ответ написан
    2 комментария
  • Что скажете про Debian 8, как ОСь для веб-разработки?

    @sunrails
    А чем минт / убунта не устроили? Для разработки все, что вам нужно и там и там есть.
    Ответ написан
    4 комментария
  • Как интегрировать socket.io в express-generator?

    @Aves
    Да много разных способов можно придумать, например в app.js добавить
    app.io = function(server) {
        var io = require('socket.io')(server);
        io.on('connection', function (socket) {
            //...
        });
    }

    А в bin/www app.io(server);

    Или выделить обработчик в отдельный модуль
    // routes/socket.js
    function handler(socket) {
        // ...
    }
    
    module.exports = handler;
    
    // app.js
    var io = require('socket.io');
    var socket = require('./routes/socket');
    
    app.io = function(server) {
        io(server).on('connection', socket);
    };
    
    // bin/www
    app.io(server);
    Ответ написан
    Комментировать
  • Какой шаблонизатор для чата лучше подойдёт (node.js, express)?

    @amatory10
    Если jade не устраивает можно с тем же успехом взять ejs тот же jade с привычным html синтаксисом.
    Ответ написан
    4 комментария
  • Какой шаблонизатор для чата лучше подойдёт (node.js, express)?

    kirill89
    @kirill89
    Используйте jade: на сервере для рендеринга страниц при отдаче, на клиенте для рендеринга сообщений чата.
    Ответ написан
    Комментировать
  • Как и на чём лучше писать блог?

    woonem
    @woonem
    Вот вам скрипт для блога:
    spoiler
    <?php
    
    $dir='./news/';
    $app[feed][config][newslimit]=5;
    $app[feed][title]='Блог';
    $app[server][host]=$_SERVER[HTTP_HOST];
    
    $app[server][get]=$_GET;
    $app[system][quotestart]='<div class="quote">'."\n";
    $app[system][quotestop]='</div>'."\n";
    
    function panelbar($name=false, $variable=false, $right=false, $nocut=false, $html=false){
    global $app;
    if(strlen($variable) > 55 & !$nocut){
    $variable=substr($variable, 0, 55);
    $variable.="...";
    }
    if(!$html){
    $variable=htmlspecialchars($variable);
    $variable=str_replace("\n", "<br>", $variable);
    }
    
    $return='<div class="frame">'."\n";
    if($right){
    $return.='<div class="onestr, clearfix">
    <div class="leftstr">'.$name.'</div>
    <div class="rightstr">'.$right."</div>
    </div>\n";
    }else
    $return.=$name."<br>\n";
    $return.=$app[system][quotestart].$variable.$app[system][quotestop]."\n";
    $return.="</div>\n";
    
    return $return;
    }
    
    $page=(float)$app[server][get][page];
    if(!$page or $page<1) $page=1;
    
    if($page>1)
    $app[feed][display].=panelbar('<a href="http://'.$app[server][host].'/?page='.($page-1).'">Предыдущие &gt;</a>').'<br>';
    
    $i=(count(scandir($dir))-2);
    $i-=(($page-1)*$app[feed][config][newslimit]);
    $a=($i-$app[feed][config][newslimit]);
    
    while(true){
    if($i<=$a or !file_exists($dir.$i)) break;
    
    list($name, $date, $preview, $text)=explode("\n", file_get_contents($dir.$i));
    
    $app[feed][display].=panelbar('<h1>'.$name.'</h1>', $preview, $date, true, true);
    $app[feed][display].=panelbar('<a href="http://'.$app[server][host].'/?id='.$i.'">Просмотреть полностью</a>', '');
    $app[feed][display].='<br>';
    
    $i--;
    }
    
    if(file_exists($dir.($i-1)))
    $app[feed][display].=panelbar('<a href="http://'.$app[server][host].'/?page='.($page+1).'">Следующие &gt;</a>');
    
    if($app[server][get][id]){
    list($name, $date, $preview, $text)=explode("\n", file_get_contents($dir.(float)$app[server][get][id]));
    $app[feed][title]=$name.' - '.$app[feed][title];
    $app[feed][description]=strip_tags($preview);
    $app[feed][display]=panelbar('<h1>'.$name.'</h1>', $text, $date, true, true);
    $app[feed][display].=panelbar('Поделиться', '', '<script type="text/javascript" src="//yastatic.net/share/share.js" charset="utf-8"></script><div class="yashare-auto-init" data-yashareL10n="ru" data-yashareType="small" data-yashareQuickServices="vkontakte,facebook,twitter,odnoklassniki,moimir,lj,gplus" data-yashareTheme="counter"></div>', true, true);
    }
    
    if(!$app[feed][display])
    $app[feed][display]='Нет новостей.';
    
    $page='feed';
    
    ?><!DOCTYPE html>
    <html>
    <head>
    <meta name="viewport" content="width=device-width, user-scalable=no">
    <link rel="icon" href="http://<?=$app[server][host]?>/favicon.ico">
    <meta name="description" content="<?=$app[feed][description]?>">
    <meta charset="utf-8">
    <meta name="Document-state" content="Dynamic">
    <meta name="revisit-after" content="3 days">
    <title><?=$app[$page][title]?></title>
    <style>
    @import url(https://fonts.googleapis.com/css?family=Roboto:400,300,700&subset=latin,cyrillic);
    
    *{
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
    }
    
    body{
    font-weight: 400;
    font-family: 'Roboto', sans-serif;
    font-size: 16px;
    line-height: 23px;
    word-wrap: break-word;
    margin: 0;
    }
    
    h1{
    color: #08f;
    font-size: 22px;
    margin: 0;
    margin-bottom: 4px;
    }
    
    h1, h2, h3, h4, h5{ font-weight: 300; }
    
    a{
    margin: 0;
    color: #08f;
    text-decoration: none;
    }
    
    a:hover{ color: #058; }
    
    .button{
    white-space: nowrap;
    margin: 0;
    margin-top: 1px;
    border: 1px solid #08f;
    background: #08f;
    padding: 9px;
    color: #fff !important;
    text-decoration: none !important;
    }
    
    a[class="button"]{
    line-height: 48px !important;
    } 
    
    .button:hover{
    background: #06d;
    }
    
    .frame{
    border: 1px solid #ddd;
    padding: 8px;
    padding-top: 7px;
    }
    
    .header{
    position: fixed;
    left: 0;
    top: 0;
    font-weight: 400;
    font-size: 16px;
    color: #ffffff;
    width: 100%;
    background-color: rgba(20, 20, 20, 0.7);
    padding: 16px;
    padding-left: 32px;
    text-align: center;
    }
    
    .fat{
    display: inline-block;
    width: 100%;
    max-width: 800px;
    font-weight: 700;
    font-size: 26px;
    text-align: left;
    color: #ffffff !important;
    }
    
    .block{
    max-width: 800px;
    text-align: left;
    width: 100%;
    height: 100%;
    padding: 16px;
    padding-top: 68px;
    padding-bottom: 68px;
    }
    
    .onestr{
    display: inline-block;
    float: left;
    width: 100%;
    }
    
    .leftstr, .rightstr{
    float: left;
    display: inline-block;
    margin: 0;
    padding: 0;
    }
    
    .rightstr{
    margin-left: 5px;
    float: right;
    }
    
    .clearfix{
    *zoom: 1;
    }
    
    .clearfix:after{
    content: "";
    display: table;
    clear: both;
    }
    
    .quote{
    vertical-align: text-top;
    line-height: 22px;
    border-left: 4px solid #08f;
    padding-left: 5px;
    margin: 0;
    text-align: left;
    display: block;
    }
    </style>
    </head>
    <body>
    <div class="header">
    <a class="fat" href="http://<?=$app[server][host]?>">Blog</a>
    </div>
    <center>
    <div class="block">
    <?=$app[$page][display]?>
    </div>
    </center>
    </body>
    </html>
    Ответ написан
    Комментировать
  • Как сделать удаление постов (flask)?

    @andreypaa
    Вот взял пример кода из своего проекта, не претендую на супер точность, но вроде все работает норм.
    Соответственно, некоторые вещи придется заменить, но в целом думаю понятно как сделать.

    @blueprint.route("/event/delete/<int:event_id>", methods=['GET'])
    @login_required
    def event_del(event_id):
        event = Event.query.filter_by(id=event_id, user_id=current_user.id).first()
        if event:
            event.delete()
            flash("Event is deleted", 'success')
        else:
            flash("Event can not deleted", 'error')
    
        return redirect(url_for('events_list'))
    Ответ написан
    1 комментарий
  • Как и на чём лучше писать блог?

    webinar
    @webinar Куратор тега PHP
    Учим yii: https://youtu.be/-WRMlGHLgRg
    Для чего? Если для себя - пишите как хотите. На заказ, проще взять готовую CMS. Свой проект с перспективами роста - только ООП и если хотите написать до конца года и иметь защищенную систему без огромных дыр - только framework.
    Ответ написан
    Комментировать
  • Сложно ли написать свой блог на nodejs?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Пройдите бесплатный курс https://university.mongodb.com/courses/M101JS/about и вас научат делать блог на ноде и монге.
    Ответ написан
    2 комментария
  • Сложно ли написать свой блог на nodejs?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    автор Impress Application Server для Node.js
    Блог это конечно же решаемая задача для ноды, но эта ниша уже занята другими языками и фреймворками, поэтому блоги на ноде пишут редко, подробнее посмотрите вот этот мой ответ о том, что лучше писать на ноде, что имеет смысл, а что нет: Что можно написать на Node.js?
    Мой Вам совет, учите сначала платформу, смотрите видеоуроки тут https://learn.javascript.ru/nodejs-screencast пробуйте свои сыли на практике тут nodeschool.io и выбирайте готовый движек для блогов тут https://github.com/sindresorhus/awesome-nodejs
    Сделать блог это может означать:
    1. Взять движек блогов и сделать на нем блог
    2. Написать движек блогов и сделать на нем блог
    Делать блог на голом экспрессе, это почти то же, делать блог вообще на голой ноде, это можно только если Вы уже профессионал и хорошо понимаете, что делаете. Иначе нужно идти по первому варианту и брать все готовое, вот еще одно место где это готовое можно поискать: nodeframework.com
    Например: https://ghost.org/ или hexo.io
    Ответ написан
    Комментировать
  • Как и на чём лучше писать блог?

    archakov06
    @archakov06
    Frontend-разработчик (ReactJS)
    WordPress, DLE (самое простое для начинающего)
    Ответ написан
    Комментировать
  • Какие полезные видео или вебинары по PHP фреймворкам вы знаете?

    Alexufo
    @Alexufo
    противоречивый, сложный, весь компьютерный.
    Хочу освоить все php фреймворки за очень короткий промежуток времени...ссылки на любые видео уроки или вебинары

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

    Зашибись! Найден рецепт беспроблемного обучения) 25 кадр не хотите?)

    Если коротко:
    Ребята кодят на php в свободное время. А выпросите как от корпораций целой ниши. Рекламок, съездов, тусовок, диаграмм, видео уроков, мнений знатоков и пр. Точнее не просите, а веруете в это, поскольку гугл вам не дал ответа. Быть может... этого всего и нет и приходится дальше ломать мозг как все?) И это и есть правда?))

    Да.. и кроме вас не сделает ни видеоуроков ни вебинаров по всему функционалу фреймворков. Готов поспорить. Так что вот на вас вся надежда. Изучайте, снимайте,вкладывайте.. бум смотреть)
    Ответ написан
    2 комментария