• Работает ли самоподписанный сертификат SSL для локального IP через NAT?

    CityCat4
    @CityCat4 Куратор тега Цифровые сертификаты
    Внимание! Изменился адрес почты!
    Если сертификат выдан на имя (что делается в 99.9%) - то браузеру глубоко пофиг IP, он сверяет имя в сертификате с именем в запросе, ну и в доверенные добавить. Сертификаты на IP есть, их очень редко выдают, но самому понятное дело можно что угодно сделать. Если сертификат на IP - работать не будет, будет орать.
    Ответ написан
    1 комментарий
  • Как быстро освоить angular?

    @toukouva
    Его вообще не нужно осваивать. Мертвая технология.

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

    Ни один умный инженер не согласится работать с такой технологией. И ни один умный заказчик не разрешит разрабатывать себе проект, который может ломаться каждые 6 месяцев с очередным обновлением.
    Ответ написан
  • Как сделать чтоб программа не завершалась?

    rkravchik
    @rkravchik
    System Solutions
    Нужно конкретизировать задачу.
    Если нужно, чтобы программа не завершалась, то можно использовать конструкцию с сигналами os/signal.
    Например так:
    // exit program on ps kill and Ctrl+C...
    	exitc := make(chan os.Signal, 1)
    	signal.Notify(exitc, os.Interrupt, os.Kill, syscall.SIGTERM)
    // some code or goroutines
    // ...
    	sig := <- exitc
    // some cleanup or signal logging and printing

    Если нужно приложение "демонизировать", то посмотрите пакет VividCortex/godaemon.
    Ответ написан
    Комментировать
  • Как поосмортеть порожденные горутины?

    fastpars
    @fastpars
    Привет.
    1. Горунтина != тред/процес. Go сам решает нужен ли ему тред/процесс.
    2. Ваш пример выполняется мгновенно т.к. горунтины не блокируют поток выполнения основной программы main.
    Для того чтобы "подождать выполнения всех горутин gorutine()", можно использовать каналы или WaitGroup из пакета sync .
    3. Ваш цыкл отработает всего 10 раз т.к. "sum += sum" а не "sum++" и не "sum = sum + 1"
    Ответ написан
    Комментировать
  • Какой web framework для Go использовать?

    mzcoding
    @mzcoding
    Web-Разработка
    Да особо никаких, в GO много из коробки.. Можете этот поюзать https://gin-gonic.github.io/gin/
    Ответ написан
    Комментировать
  • Сервер golang не отвечает при частых запросах к БД?

    Вы подключаетесь к базе данных на каждый запрос, это совсем плохо.
    Подключайтесь к базе данных один раз при старте приложения, а при обработке запроса используйте готовое подключение.
    Ответ написан
    1 комментарий
  • Как решить проблему с DATA RACE?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    Здесь два момента
    • go list[i].Request(i)гарантировано инициирует поток, но вовсе не обязательно запускает и this.is_sync = true не исполняется. То есть может быть инициировано сколь угодно много горутин привязанных к одной Loc struct. Приоритет исполнения рутин в Go не детерменирован.
    • Параметры в функцию передаются копированием значения, то есть вызов func (this Loc) IsSync() boolпровоцирует полное копирование Loc, который может быть в работе. Что бы избежать копирования передавайте ссылкой.
    В рамках вашей архитетуры(что бы не менять код сильно) так должно работать
    package main
    
    import (
    	"fmt"
    	"sync/atomic"
    	"time"
    )
    
    // наша структура
    type Loc struct {
    	is_sync *int32
    	Value   int
    }
    
    // метод, который говорит, можно ли запускать метод Request
    func (this *Loc) IsSync() bool {    //Передавайте параметр ссылкой, что бы избежать копирования
    	return (atomic.LoadInt32(this.is_sync) != 0)
    }
    
    // основной запрос, который может длиться несколько секунд
    func (this *Loc) Request(val int) {
    
    	defer func() {
    		atomic.StoreInt32(this.is_sync, 0)
    		fmt.Println("End")
    	}()
    
    	fmt.Println("Request...")
    
    	this.Value = val
    	time.Sleep(time.Second)
    }
    
    var list []Loc
    
    func init() {
    	list = append(list, Loc{is_sync: new(int32)})
    }
    
    func main() {
    	c := time.Tick(time.Second * 2)
    
    	for range c {
    		for i := 0; i < len(list); i++ {
    			if list[i].IsSync() { // если ещё не пришло время, то пропускаем
    				continue
    			}
    			atomic.StoreInt32(list[i].is_sync, 1) //флаг нужно выставить прямо здесь, а не дожидаясь исполнения рутины
    			go list[i].Request(i)
    		}
    	}
    }
    Ответ написан
    Комментировать
  • Перспективы у языка GO?

    evnuh
    @evnuh
    Поиск Гугл помог мне, впусти и ты его в свой дом
    1) Язык - проще некуда. Его собственно и стали разрабатывать как человеческую замену плюсам.
    2) Огромное количество библиотек, любую задачу можно решить на нём уже сейчас.
    3) Скорость и компилируемость.

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

    p.s. ответ не топикстартеру, а всем программистам, кто прочитает. Топикстартер явно не программист и не собирается им быть.
    Ответ написан
    5 комментариев
  • Перспективы у языка GO?

    @lavrentiev
    Back-end разработчик
    А мне понравилось, можно выносить трудоемкие процессы на GO. и + кроссплатформенность и все так легко и просто :)
    Ответ написан
    1 комментарий
  • Какими MySQL менеджером на Ubuntu вы пользуетесь?

    @romteh Автор вопроса
    Всем спасибо за ответы.
    Но я выбрал DBeaver. Похож на HeidiSql.
    Ответ написан
    Комментировать
  • Загрузка данных через AJAX?

    Igogo2012
    @Igogo2012
    В данный момент, есть более новые технологи, например: websocket и Long polling.
    Websocket однозначно будет работать быстрее и как по мне даже интереснее чем простой ajax с таймаутами.
    Ответ написан
    Комментировать
  • Загрузка данных через AJAX?

    @joger
    ключевое слово: websockets
    Ответ написан
    Комментировать
  • NodeJS для разработки проектов?

    Staltec
    @Staltec
    Node.js разработчик
    Уже второй год у моего клиента работает система информатизации производственных процессов на оконном производстве (евроокна). Задачи системы:
    — демонстрация технологических карт изделий на участках конвейера;
    — фиксирование операций с изделиями;
    — предоставление в реальном времени данных о состоянии отдельных изделий и в целом состояния производства;
    — аналитика выработки на участках и конкретными сотрудниками;
    — учёт контроля качества;
    — складской учёт готовых изделий и стеклопакетов;
    — планирование графика отгрузки со склада;
    — автоматическое уведомление клиентов о готовности заказа по SMS;

    Все интерфейсы системы реализованы как реалтайм веб-приложения использующие Socket.io.

    Система писалась на NodeJS версии 0.6, потом была переведена на 0.8 и сейчас уже на 0.10. С переходом проблем не было.
    Максимальный аптайм NodeJS процесса системы который удалось наблюдать — 112 дней. Утечек памяти за это время не зафиксировано.

    Для меня после разработки такого решения, вопрос о серьёзности NodeJS больше не стоит. Сам был убеждённым перлистом. Сейчас ни на чём кроме NodeJS писать нет желания.
    Ответ написан
    Комментировать
  • Вредит ли выключение ПК дискам SSD?

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

    У меня в ноуте SSD. Работает он 3-8 часов в сутки. Я предпочитаю его выключать, т.к. даже если это более вредно для SSD (в чем я сильно сомневаюсь), то вред от пыли которую засосет система охлаждения за 16-21 час возможного простоя гораздо больше.
    Ответ написан
    1 комментарий
  • Рекурсивный алгоритм. На какой стороне его лучше реализовать?

    taliban
    @taliban
    php программист
    Если данных не много, то проще и удобней делать все на клиенте (меню строить в виде дерева, небольшие данные показывать) Но если данные для рекурсии большие, то действительно проще будет один раз поработать над ними и закешировать результат.
    Ответ написан
    Комментировать