• Как контролировать инициализацию переменной Go?

    Обычно выносят такой тип в отдельный пакет, делают тип приватным и публичную функцию New, возвращающую подготовленный объект.

    //// users/users.go
    package users
    
    type user struct {
      name string
    }
    
    func New(name string) *user {
        u := user{
            name: name,
        }
        if name == "" {
            u.name = "Nobody"
        }
        return &u
    }
    
    ///// main.go
    package main
    
    import "github.com/yourproject/users"
    
    func main() {
        user := users.New("")
        ...........
    }
    Ответ написан
    Комментировать
  • Как написать тест чтобы защититься от race condition?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    Race detector достаточно умный, не требует ничего военно-специфического вроде sync.WaitGroup. Чтобы диагностировать race достаточно просто обратиться к незащищенным данным асинхронно.
    func TestRaceDeposit(t *testing.T) {
      setBalance(0)
      go Deposit(10)   //Просто этого вызова уже достаточно
      Deposit(10)
      if Balance() != 20 {
        t.Errorf("unexpected balance: value - %d expect 20", Balance())
      }
    }
    Ответ написан
    3 комментария
  • Как написать тест чтобы защититься от race condition?

    @ghostiam
    На Go писатель, серверов пинатель.
    Я бы написал так
    func TestRaceDeposit(t *testing.T) {
    	setBalance(0)
    
    	var wg sync.WaitGroup
    	for i := 0; i < 10; i++ {
    		wg.Add(1)
    		go func() {
    			Deposit(10)
    			wg.Done()
    		}()
    	}
    
    	wg.Wait()
    
    	expect := 100
    	got := Balance()
    	if got != expect {
    		t.Errorf("unexpected balance: value - %d expect %d", got, expect)
    	}
    }
    Ответ написан
    2 комментария
  • GO массив в WHERE id IN ()?

    @PapaStifflera
    Родился, вырос...
    db.Query("SELECT * FROM words WHERE id = ANY($1);", pq.Array(list))
    Ответ написан
    Комментировать
  • Как делать юнит тесты для контроллеров и моделей?

    xEpozZ
    @xEpozZ
    Веб-разработчик
    Для контроллеров пишутся уже не unit тесты. Для них актуальны приемочные и функциональные.

    Тест для моделей - слишком абстрактный вопрос.
    Абстрактный ответ на него - так же, как вы делали для функции.
    Ответ написан
    Комментировать
  • Почему не работают мои команды созданные через make:command (Laravel)?

    JhaoDa
    @JhaoDa
    LaravelRUS Team
    Если таки посмотреть картинку, то можно заметить там интересную зелёную строчку в самом низу. Предлагаю на неё помедитировать и подумать...

    upd: из новой картинки стало ясно, что у автора на уровне артизана (или РНР) конфликт чего-то с чем-то, отсюда и неправильный мёд.
    Ответ написан
  • Какие выбрать платные курсы по изучению php?

    Посмотрите Дмитрия Лаврика. Точно не помню есть ли у него php с самого нуля, но преподает он очень круто. Выше советовали Елисеева и он крут, но у него видосы по 6 часов идут))
    Ответ написан
    Комментировать
  • Какие выбрать платные курсы по изучению php?

    Konata69lol
    @Konata69lol
    backend developer (php/go)
    У Елисеева посмотрите. Очень хорошо владеет php и oop.
    И laracasts по основам php, если lara не нужна.
    Ответ написан
    3 комментария
  • Как защитить html?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Придётся сделать канвас-прослойку и рендерить HTML на сервере, а отображать - в канвасе.
    Редактирование - придётся всё запрослоить... (А что делать?!)
    Ответ написан
    Комментировать
  • Как защитить html?

    notiv-nt
    @notiv-nt
    Как ваше ничего? Да, моё тоже
    Как идея рендерить на сервере и отдавать картинку клиенту
    Ответ написан
    Комментировать
  • Зачем в современном php фреймворки?

    Ну вот вы сами себе противоречите
    плохо не использовать фреймворки в современном php?

    наш микро фреймворк документирован

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

    Ну а на Ваш вопрос - Зачем в современном php фреймворки можно ответить очень просто - А зачем Вы в процессе разработки создали свой микрофреймворк?
    Ответ написан
    Комментировать
  • Как создать таблицу из другой с использованием другого sequence для id столбца?

    Melkij
    @Melkij
    PostgreSQL DBA
    melkij=> create table identity_test (i int primary key generated by default as identity, val int);
    CREATE TABLE
    melkij=> insert into identity_test (val) values (1);
    INSERT 0 1
    melkij=> table identity_test;
     i | val 
    ---+-----
     1 |   1
    (1 строка)
    
    melkij=> create table identity_test_like (like identity_test INCLUDING COMMENTS INCLUDING CONSTRAINTS INCLUDING DEFAULTS INCLUDING INDEXES);
    CREATE TABLE
    melkij=> \d identity_test_like
                        Таблица "public.identity_test_like"
     Столбец |   Тип   | Правило сортировки | Допустимость NULL | По умолчанию 
    ---------+---------+--------------------+-------------------+--------------
     i       | integer |                    | not null          | 
     val     | integer |                    |                   | 
    Индексы:
        "identity_test_like_pkey" PRIMARY KEY, btree (i)
    
    melkij=> \d identity_test
                                    Таблица "public.identity_test"
     Столбец |   Тип   | Правило сортировки | Допустимость NULL |           По умолчанию           
    ---------+---------+--------------------+-------------------+----------------------------------
     i       | integer |                    | not null          | generated by default as identity
     val     | integer |                    |                   | 
    Индексы:
        "identity_test_pkey" PRIMARY KEY, btree (i)


    include identity нет - identity не скопирован. Всё выглядит корректно.

    Если же вы не про identity, а про синтаксический сахар serial - то его nextval был скопирован потому вы сами это попросили через INCLUDING DEFAULTS.
    Типа данных serial нет. Это синтаксический сахар вокруг поля int, создания sequence и указания nextval в default.
    Ответ написан
    Комментировать
  • Как перевести из float в string для функции bcdiv?

    TommyV888
    @TommyV888 Куратор тега PHP
    -
    strval и (string) возвращают строку в экспоненциальном формате, например 0.000011 вернет "1.1E-5", а bcdiv и подобные функции не поддерживают запись в таком виде. Используйте number_format для конвертации числа в строку:
    number_format(0.000011, 6, '.', '');
    Ответ написан
    Комментировать
  • Как построить URL для данного роута?

    Alex_Wells
    @Alex_Wells
    PHP/Kotlin
    $router->get('profiles', 'ProfileController@index');
    $router->get('profiles/{id}', 'ProfileController@show');


    Это два разных раута. Обрабатывать их нужно в разных местах.
    Ответ написан
    1 комментарий
  • Вы часто делали тестовые задания? Как относитесь к ним?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Люди разные и по разному реагируют на разные виды собеседований. Я вот люблю тестовые, потому что на технических интервью теряюсь и могу не ответить даже на очень простые вопросы или не решить даже очень простые задачки. Часто причина отрицательного отношения к тестовым объясняется тем, что соискатель тратит личное время и силы на задание, а его потом не берут. Четыре неудачных попытки - месяц бесплатной работы.
    Ответ написан
    Комментировать
  • Вы часто делали тестовые задания? Как относитесь к ним?

    Moskus
    @Moskus
    Когда хочется спросить "почему говорят", нужно спрашивать у тех, кто говорит, а не у посторонних. Иначе, вы вырываете проблему из контекста. Может быть (а тут так и есть) речь идет не о всех тестовых заданиях и не в любом случае? Вы об этом не задумались?

    Второе, чем вы вырываете проблему из контекста - это то, что вы, вероятно, не заметили, что когда говорят о вреде тестовых заданий (точнее - о том, что это плохой признак), речь не идёт о кандидате без истории. Когда речь о более или менее квалифицированном специалисте, наниматель выступает в роли продавца, а не покупателя, он должен "продать" условия работы в компании. И если он выкатывает задание, это значит, что в компании спустя рукава или крайне формально относятся к найму, либо мнят о себе слишком много, либо просто не понимают, зачем им такой специалист, и, соответственно, не могут оценить его рабочие качества быстро и сходу. Только к вашему случаю это не имеет прямого отношения, потому что вам работа была нужна больше, чем им - работник.
    Ответ написан
    6 комментариев
  • Почему не работает команда go run?

    @ghostiam
    На Go писатель, серверов пинатель.
    Нужно проверять ошибку которую возвращает ListenAndServe, там будет ошибка что не удалось занять порт, так как без прав root нельзя слушать порты менее 1024.
    Ответ написан
    Комментировать
  • Где сохранять логи плагина в Wordpress?

    @Mofsy
    Ехал Грека через реку. Видит Грека в реке рак.
    Просто создать свою директорию в wp-content
    Так же просто, как прост мой ответ.

    PS:
    - Папка wp-content может переименовываться, использовать константу.
    - Ничего не пере-затрется.
    Ответ написан
    1 комментарий
  • Стоит ли делать супер-навороченный персональный сайт-портфолио?

    PavelMonro
    @PavelMonro
    Сильно не стоит. Тоже когда делал слишком заморачивался по каждой мелочи. Главное сделай чтобы смотретлся завершёно, а улучшить ты его всегда сможешь.
    Ответ написан
    5 комментариев
  • Как убрать ошибку Cannot modify header information - headers already sent by?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Ошибка возникает в случае, если вы УЖЕ отправили что-то на вывод в браузере и да - пробел это тоже вывод.

    В вашем случае часть кода должна выглядеть как-то так:

    <?php 
    require "db.php"
    
    if ( isset($_SESSION['logger_user']) )
    {
    	header("Location: http://fit-pro.tk/home.php");
    	exit();
    }
    ?><!DOCTYPE html>
    <html lang="en">
    Ответ написан
    Комментировать