SlideShare a Scribd company logo
1 of 19
Download to read offline
ИспользованиС  Go
Π²  бэкСндС прилоТСния Β 
Π‘ΠΌΠΎΡ‚Ρ€ΠΈ+
ΠœΠΈΡ…Π°ΠΈΠ»  Балосин
ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
ΠœΠΈΡ…Π°ΠΈΠ»  Балосин. Β  ИспользованиС Β Go Π²  бэкСндС прилоТСния Β  Π‘ΠΌΠΎΡ‚Ρ€ΠΈ+ 2
Π§Ρ‚ΠΎ  использовали
β€’ Go
β€’ PostgreSQL
β€’ Ruby on Β Rails  – ActiveAdmin, Β ΠΈΠΌΠΏΠΎΡ€Ρ‚  статистики
β€’ Python  – систСмныС  тСсты
β€’ Memcached
β€’ Chef
β€’ Zabbix
β€’ Graylog2
β€’ Slate
3ΠœΠΈΡ…Π°ΠΈΠ»  Балосин. Β  ИспользованиС Β Go Π²  бэкСндС прилоТСния Β  Π‘ΠΌΠΎΡ‚Ρ€ΠΈ+
Π’Ρ‹Π±ΠΎΡ€ Β ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°
β€’ Π”Π°Π½Π½Ρ‹Π΅ Β Π½Π° Β ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°Ρ… Β Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Β ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ Β Π² Β 
Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Β Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ
β€’ Π”Π°Π½Π½Ρ‹Π΅,  синхронизируСмыС  с Β ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ, Β Π½Π΅ Β 
ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ
β€’ Бтатистика Β ΠΈ  составы Β ΠΊΠΎΠΌΠ°Π½Π΄ Β ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ Β 
ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ Β GET  запросами
β€’ 100  тыс. Β ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ
4ΠœΠΈΡ…Π°ΠΈΠ»  Балосин. Β  ИспользованиС Β Go Π²  бэкСндС прилоТСния Β  Π‘ΠΌΠΎΡ‚Ρ€ΠΈ+
Π’Ρ‹Π±ΠΎΡ€ Β ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°
β€’ Websocket – ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΠΎ
β€’ Server-­‐Sent Β Events Β (SSE)  – Π²  самый Β Ρ€Π°Π·!
5ΠœΠΈΡ…Π°ΠΈΠ»  Балосин. Β  ИспользованиС Β Go Π²  бэкСндС прилоТСния Β  Π‘ΠΌΠΎΡ‚Ρ€ΠΈ+
Server-­‐Sent Β Events
6ΠœΠΈΡ…Π°ΠΈΠ»  Балосин. Β  ИспользованиС Β Go Π²  бэкСндС прилоТСния Β  Π‘ΠΌΠΎΡ‚Ρ€ΠΈ+
Content-­‐Type: Β text/event-­‐stream
event: Β Person
data: Β {β€œid”: Β 10, Β name: Β β€Π˜Π»ΡŒΡ Β ΠšΠΎΠ²Π°Π»ΡŒΡ‡ΡƒΠΊβ€}nn
Server-­‐Sent Β Events
7ΠœΠΈΡ…Π°ΠΈΠ»  Балосин. Β  ИспользованиС Β Go Π²  бэкСндС прилоТСния Β  Π‘ΠΌΠΎΡ‚Ρ€ΠΈ+
Server-­‐Sent Β Events
8ΠœΠΈΡ…Π°ΠΈΠ»  Балосин. Β  ИспользованиС Β Go Π²  бэкСндС прилоТСния Β  Π‘ΠΌΠΎΡ‚Ρ€ΠΈ+
func (h *APIHandler) UpdatesLive(rw http.ResponseWriter, req *http.Request) {
updates := make(chan interface{}, 100)
h.DataUpdates.Subscribe(updates)
defer h.DataUpdates.Unsubscribe(updates)
h.setSseHeaders(rw)
h.pingAndFlush(rw, strconv.FormatInt(time.Now().UnixNano(), 10))
for {
select {
case data, ok := <-updates:
if !ok {
return
}
switch v := data.(type) {
case int64: // unix time ping
h.pingAndFlush(rw, strconv.FormatInt(v, 10))
case reform.Struct:
h.writeSseStruct(rw, req, v)
rw.(http.Flusher).Flush()
}
}
}
}
Server-­‐Sent Β Events
9ΠœΠΈΡ…Π°ΠΈΠ»  Балосин. Β  ИспользованиС Β Go Π²  бэкСндС прилоТСния Β  Π‘ΠΌΠΎΡ‚Ρ€ΠΈ+
func (*APIHandler) setSseHeaders(rw http.ResponseWriter) {
rw.Header().Set("Content-Type", "text/event-stream; charset=utf-8")
}
func (h *APIHandler) writeSseStruct(rw http.ResponseWriter, req *http.Request, str
reform.Struct) {
b, err := json.Marshal(str)
_, err = fmt.Fprint(rw, "event:"+str.View().Name()+"n")
_, err = fmt.Fprint(rw, "data:")
_, err = rw.Write(b)
_, err = fmt.Fprint(rw, "nn")
}
func (*APIHandler) pingAndFlush(rw http.ResponseWriter, data string) {
_, err := fmt.Fprintf(rw, ":%snn", data)
rw.(http.Flusher).Flush()
}
ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Β ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Β ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ
10ΠœΠΈΡ…Π°ΠΈΠ»  Балосин. Β  ИспользованиС Β Go Π²  бэкСндС прилоТСния Β  Π‘ΠΌΠΎΡ‚Ρ€ΠΈ+
PostgreSQL: Β Listen/Notify
11ΠœΠΈΡ…Π°ΠΈΠ»  Балосин. Β  ИспользованиС Β Go Π²  бэкСндС прилоТСния Β  Π‘ΠΌΠΎΡ‚Ρ€ΠΈ+
CREATE OR REPLACE FUNCTION data_updated() RETURNS trigger AS $$
BEGIN
IF TG_OP = 'INSERT' OR OLD <> NEW THEN
PERFORM pg_notify('data_updates', TG_TABLE_NAME || ' ' ||
NEW.id);
END IF;
RETURN NULL;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER on_season_update
AFTER INSERT OR UPDATE
ON seasons
FOR EACH ROW
EXECUTE PROCEDURE data_updated();
PostgreSQL: Β Listen/Notify
func ListenForDataUpdates(config *utils.DbConfig) (*utils.Fanout, error) {
f := utils.NewFanout()
l := pq.NewListener("user=smotri-api dbname=smotri", 50*time.Millisecond, 10*time.Second)
err := l.Listen("data_updates")
err = l.Ping()
go func() {
pingTicker := time.Tick(15 * time.Second)
for {
var n *pq.Notification
select {
case t := <-pingTicker:
un := t.UnixNano()
logger.Printf("data_updates: ping %d", un)
f.Publish(un)
continue
case n = <-l.Notify:
if n == nil {
logger.Printf("data_updates: reconnected")
continue
}
}
...
f.Publish(str)
}
}
return f, nil
}
12
Golang: Β Fan-­‐out
13ΠœΠΈΡ…Π°ΠΈΠ»  Балосин. Β  ИспользованиС Β Go Π²  бэкСндС прилоТСния Β  Π‘ΠΌΠΎΡ‚Ρ€ΠΈ+
Golang: Β Fan-­‐out
14
type Fanout struct {
m sync.Mutex
s map[chan<- interface{}]struct{}
c bool
}
func NewFanout() *Fanout {
return &Fanout{s: make(map[chan<- interface{}]struct{})}
}
func (f *Fanout) Connected() {
f.m.Lock()
f.c = true
f.m.Unlock()
}
func (f *Fanout) Disconnected() {
f.m.Lock()
f.c = false
for c := range f.s {
delete(f.s, c)
close(c)
}
f.m.Unlock()
}
Golang: Β Fan-­‐out
15
func (f *Fanout) Subscribe(c chan<- interface{}) {
f.m.Lock()
defer f.m.Unlock()
if !f.c {
panic(errors.New("fanout: not connected"))
}
f.s[c] = struct{}{}
}
func (f *Fanout) Unsubscribe(c chan<- interface{}) {
f.m.Lock()
_, ok := f.s[c]
if ok {
delete(f.s, c)
close(c)
}
f.m.Unlock()
}
func (f *Fanout) Publish(v interface{}) {
f.m.Lock()
for c := range f.s {
select {
case c <- v:
default:
delete(f.s, c)
close(c)
}
}
f.m.Unlock()
}
Π˜Π½Ρ„Ρ€Π°ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°
16ΠœΠΈΡ…Π°ΠΈΠ»  Балосин. Β  ИспользованиС Β Go Π²  бэкСндС прилоТСния Β  Π‘ΠΌΠΎΡ‚Ρ€ΠΈ+
ΠŸΠ»ΡŽΡΡ‹ Β Go
β€’ Rich Β http Β library
β€’ ΠšΠ°Π½Π°Π»Ρ‹
β€’ Race Β detector
β€’ Минимализм Β ΠΈ  простота
17ΠœΠΈΡ…Π°ΠΈΠ»  Балосин. Β  ИспользованиС Β Go Π²  бэкСндС прилоТСния Β  Π‘ΠΌΠΎΡ‚Ρ€ΠΈ+
ΠœΠΈΠ½ΡƒΡΡ‹ Β Go
β€’ if Β err Β != Β nil
18ΠœΠΈΡ…Π°ΠΈΠ»  Балосин. Β  ИспользованиС Β Go Π²  бэкСндС прилоТСния Β  Π‘ΠΌΠΎΡ‚Ρ€ΠΈ+
Бпасибо!
P.S. Β WE Β ARE Β HIRING!

More Related Content

What's hot

Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ°, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΡ‚Π΄Π°Ρ‡Π° статики
Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ°, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΡ‚Π΄Π°Ρ‡Π° статикиЗагрузка, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΡ‚Π΄Π°Ρ‡Π° статики
Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ°, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΡ‚Π΄Π°Ρ‡Π° статикиKirill Mokevnin
Β 
Π”Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Π΄Π°Π³ΠΈ Π² Apache Airflow
Π”Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Π΄Π°Π³ΠΈ Π² Apache AirflowΠ”Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Π΄Π°Π³ΠΈ Π² Apache Airflow
Π”Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Π΄Π°Π³ΠΈ Π² Apache AirflowRamblerML
Β 
Π˜Π³ΠΎΡ€ΡŒ Π›ΡŽΠ±ΠΈΠ½ - АвтотСстированиС Π²Π΅Π±-сСрвиса с Ruby ΠΈ Rspec
Π˜Π³ΠΎΡ€ΡŒ Π›ΡŽΠ±ΠΈΠ½ - АвтотСстированиС Π²Π΅Π±-сСрвиса с Ruby ΠΈ RspecΠ˜Π³ΠΎΡ€ΡŒ Π›ΡŽΠ±ΠΈΠ½ - АвтотСстированиС Π²Π΅Π±-сСрвиса с Ruby ΠΈ Rspec
Π˜Π³ΠΎΡ€ΡŒ Π›ΡŽΠ±ΠΈΠ½ - АвтотСстированиС Π²Π΅Π±-сСрвиса с Ruby ΠΈ Rspecilyubin
Β 
ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Web ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° python
ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Web ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° pythonΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Web ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° python
ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Web ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° pythonSlach
Β 
НСйронныС сСти Π½Π° JS
НСйронныС сСти Π½Π° JSНСйронныС сСти Π½Π° JS
НСйронныС сСти Π½Π° JSVsevolod Rodionov
Β 
Π”ΠΎΠΊΠ»Π°Π΄ Ильи АблССва Π½Π° DevOps Meetup "ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ высоконагруТСнного ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°".
Π”ΠΎΠΊΠ»Π°Π΄ Ильи АблССва Π½Π° DevOps Meetup "ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ высоконагруТСнного ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°".Π”ΠΎΠΊΠ»Π°Π΄ Ильи АблССва Π½Π° DevOps Meetup "ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ высоконагруТСнного ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°".
Π”ΠΎΠΊΠ»Π°Π΄ Ильи АблССва Π½Π° DevOps Meetup "ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ высоконагруТСнного ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°".Badoo Development
Β 
Π ΠΎΠΌΠ°Π½ Π˜ΠΌΠ°Π½ΠΊΡƒΠ»ΠΎΠ²-«БыстрыС ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ прилоТСния с Sync APIΒ»
Π ΠΎΠΌΠ°Π½ Π˜ΠΌΠ°Π½ΠΊΡƒΠ»ΠΎΠ²-«БыстрыС ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ прилоТСния с Sync APIΒ»Π ΠΎΠΌΠ°Π½ Π˜ΠΌΠ°Π½ΠΊΡƒΠ»ΠΎΠ²-«БыстрыС ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ прилоТСния с Sync APIΒ»
Π ΠΎΠΌΠ°Π½ Π˜ΠΌΠ°Π½ΠΊΡƒΠ»ΠΎΠ²-«БыстрыС ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ прилоТСния с Sync APIΒ»Tanya Denisyuk
Β 
PostgreSQL + PostGIS + TimescaleDB - storage for monitoring systems
PostgreSQL + PostGIS + TimescaleDB - storage for monitoring systemsPostgreSQL + PostGIS + TimescaleDB - storage for monitoring systems
PostgreSQL + PostGIS + TimescaleDB - storage for monitoring systemsIvan Muratov
Β 
Π§Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ Π² PostgreSQL 9.5 / Илья КосмодСмьянский (PostgreSQL-Co...
Π§Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ Π² PostgreSQL 9.5 / Илья КосмодСмьянский (PostgreSQL-Co...Π§Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ Π² PostgreSQL 9.5 / Илья КосмодСмьянский (PostgreSQL-Co...
Π§Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ Π² PostgreSQL 9.5 / Илья КосмодСмьянский (PostgreSQL-Co...Ontico
Β 
ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΉ Π² PostgreSQL / ΠšΡƒΡ€Π±Π°Π½Π³Π°Π»ΠΈΠ΅Π² Π˜Π»ΡŒΠ΄ΡƒΡ (Postgres Professional)
ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΉ Π² PostgreSQL / ΠšΡƒΡ€Π±Π°Π½Π³Π°Π»ΠΈΠ΅Π² Π˜Π»ΡŒΠ΄ΡƒΡ (Postgres Professional)ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΉ Π² PostgreSQL / ΠšΡƒΡ€Π±Π°Π½Π³Π°Π»ΠΈΠ΅Π² Π˜Π»ΡŒΠ΄ΡƒΡ (Postgres Professional)
ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΉ Π² PostgreSQL / ΠšΡƒΡ€Π±Π°Π½Π³Π°Π»ΠΈΠ΅Π² Π˜Π»ΡŒΠ΄ΡƒΡ (Postgres Professional)Ontico
Β 
Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ для PostgreSQL
Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ для PostgreSQLΠ Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ для PostgreSQL
Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ для PostgreSQLAnastasia Lubennikova
Β 
JavaScript Π½Π° сСрвСрС, 1ms Π½Π° Ρ‚Ρ€Π°Π½ΡΡ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ (АндрСй Π‘ΡƒΠΌΠΈΠ½)
JavaScript Π½Π° сСрвСрС, 1ms Π½Π° Ρ‚Ρ€Π°Π½ΡΡ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ (АндрСй Π‘ΡƒΠΌΠΈΠ½)JavaScript Π½Π° сСрвСрС, 1ms Π½Π° Ρ‚Ρ€Π°Π½ΡΡ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ (АндрСй Π‘ΡƒΠΌΠΈΠ½)
JavaScript Π½Π° сСрвСрС, 1ms Π½Π° Ρ‚Ρ€Π°Π½ΡΡ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ (АндрСй Π‘ΡƒΠΌΠΈΠ½)Ontico
Β 
БСмь тысяч Rps, ΠΎΠ΄ΠΈΠ½ go
БСмь тысяч Rps, ΠΎΠ΄ΠΈΠ½ goБСмь тысяч Rps, ΠΎΠ΄ΠΈΠ½ go
БСмь тысяч Rps, ΠΎΠ΄ΠΈΠ½ goBadoo Development
Β 
PowerShell
PowerShellPowerShell
PowerShellGetDev.NET
Β 
Π Π°Π±ΠΎΡ‚Π° с Git Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ЯндСкс.Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€Π° β€” Алёна Π¦Π°Ρ€Ρ‘Π²Π°
Π Π°Π±ΠΎΡ‚Π° с Git Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ЯндСкс.Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€Π° β€” Алёна Π¦Π°Ρ€Ρ‘Π²Π°Π Π°Π±ΠΎΡ‚Π° с Git Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ЯндСкс.Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€Π° β€” Алёна Π¦Π°Ρ€Ρ‘Π²Π°
Π Π°Π±ΠΎΡ‚Π° с Git Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ЯндСкс.Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€Π° β€” Алёна Π¦Π°Ρ€Ρ‘Π²Π°Yandex
Β 
Thumbtack Expertise Days # 5 - Ansible
Thumbtack Expertise Days # 5 - AnsibleThumbtack Expertise Days # 5 - Ansible
Thumbtack Expertise Days # 5 - AnsibleAlexey Remnev
Β 
Linux API с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π²Π΅Π±-сСрвСра / Π’Π°Π»Π΅Π½Ρ‚ΠΈΠ½ Π‘Π°Ρ€Ρ‚Π΅Π½Π΅Π² (NGINX,...
Linux API с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π²Π΅Π±-сСрвСра / Π’Π°Π»Π΅Π½Ρ‚ΠΈΠ½ Π‘Π°Ρ€Ρ‚Π΅Π½Π΅Π² (NGINX,...Linux API с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π²Π΅Π±-сСрвСра / Π’Π°Π»Π΅Π½Ρ‚ΠΈΠ½ Π‘Π°Ρ€Ρ‚Π΅Π½Π΅Π² (NGINX,...
Linux API с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π²Π΅Π±-сСрвСра / Π’Π°Π»Π΅Π½Ρ‚ΠΈΠ½ Π‘Π°Ρ€Ρ‚Π΅Π½Π΅Π² (NGINX,...Ontico
Β 
Batch processing in rails
Batch processing in railsBatch processing in rails
Batch processing in railssergeymoiseev
Β 

What's hot (19)

Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ°, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΡ‚Π΄Π°Ρ‡Π° статики
Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ°, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΡ‚Π΄Π°Ρ‡Π° статикиЗагрузка, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΡ‚Π΄Π°Ρ‡Π° статики
Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ°, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΡ‚Π΄Π°Ρ‡Π° статики
Β 
Π”Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Π΄Π°Π³ΠΈ Π² Apache Airflow
Π”Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Π΄Π°Π³ΠΈ Π² Apache AirflowΠ”Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Π΄Π°Π³ΠΈ Π² Apache Airflow
Π”Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Π΄Π°Π³ΠΈ Π² Apache Airflow
Β 
ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° Php 7 ΠΈ ΠΈΡ‚ΠΎΠ³ΠΈ
ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° Php 7 ΠΈ ΠΈΡ‚ΠΎΠ³ΠΈΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° Php 7 ΠΈ ΠΈΡ‚ΠΎΠ³ΠΈ
ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° Php 7 ΠΈ ΠΈΡ‚ΠΎΠ³ΠΈ
Β 
Π˜Π³ΠΎΡ€ΡŒ Π›ΡŽΠ±ΠΈΠ½ - АвтотСстированиС Π²Π΅Π±-сСрвиса с Ruby ΠΈ Rspec
Π˜Π³ΠΎΡ€ΡŒ Π›ΡŽΠ±ΠΈΠ½ - АвтотСстированиС Π²Π΅Π±-сСрвиса с Ruby ΠΈ RspecΠ˜Π³ΠΎΡ€ΡŒ Π›ΡŽΠ±ΠΈΠ½ - АвтотСстированиС Π²Π΅Π±-сСрвиса с Ruby ΠΈ Rspec
Π˜Π³ΠΎΡ€ΡŒ Π›ΡŽΠ±ΠΈΠ½ - АвтотСстированиС Π²Π΅Π±-сСрвиса с Ruby ΠΈ Rspec
Β 
ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Web ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° python
ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Web ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° pythonΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Web ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° python
ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Web ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° python
Β 
НСйронныС сСти Π½Π° JS
НСйронныС сСти Π½Π° JSНСйронныС сСти Π½Π° JS
НСйронныС сСти Π½Π° JS
Β 
Π”ΠΎΠΊΠ»Π°Π΄ Ильи АблССва Π½Π° DevOps Meetup "ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ высоконагруТСнного ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°".
Π”ΠΎΠΊΠ»Π°Π΄ Ильи АблССва Π½Π° DevOps Meetup "ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ высоконагруТСнного ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°".Π”ΠΎΠΊΠ»Π°Π΄ Ильи АблССва Π½Π° DevOps Meetup "ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ высоконагруТСнного ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°".
Π”ΠΎΠΊΠ»Π°Π΄ Ильи АблССва Π½Π° DevOps Meetup "ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ высоконагруТСнного ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°".
Β 
Π ΠΎΠΌΠ°Π½ Π˜ΠΌΠ°Π½ΠΊΡƒΠ»ΠΎΠ²-«БыстрыС ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ прилоТСния с Sync APIΒ»
Π ΠΎΠΌΠ°Π½ Π˜ΠΌΠ°Π½ΠΊΡƒΠ»ΠΎΠ²-«БыстрыС ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ прилоТСния с Sync APIΒ»Π ΠΎΠΌΠ°Π½ Π˜ΠΌΠ°Π½ΠΊΡƒΠ»ΠΎΠ²-«БыстрыС ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ прилоТСния с Sync APIΒ»
Π ΠΎΠΌΠ°Π½ Π˜ΠΌΠ°Π½ΠΊΡƒΠ»ΠΎΠ²-«БыстрыС ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ прилоТСния с Sync APIΒ»
Β 
PostgreSQL + PostGIS + TimescaleDB - storage for monitoring systems
PostgreSQL + PostGIS + TimescaleDB - storage for monitoring systemsPostgreSQL + PostGIS + TimescaleDB - storage for monitoring systems
PostgreSQL + PostGIS + TimescaleDB - storage for monitoring systems
Β 
Π§Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ Π² PostgreSQL 9.5 / Илья КосмодСмьянский (PostgreSQL-Co...
Π§Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ Π² PostgreSQL 9.5 / Илья КосмодСмьянский (PostgreSQL-Co...Π§Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ Π² PostgreSQL 9.5 / Илья КосмодСмьянский (PostgreSQL-Co...
Π§Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ Π² PostgreSQL 9.5 / Илья КосмодСмьянский (PostgreSQL-Co...
Β 
ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΉ Π² PostgreSQL / ΠšΡƒΡ€Π±Π°Π½Π³Π°Π»ΠΈΠ΅Π² Π˜Π»ΡŒΠ΄ΡƒΡ (Postgres Professional)
ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΉ Π² PostgreSQL / ΠšΡƒΡ€Π±Π°Π½Π³Π°Π»ΠΈΠ΅Π² Π˜Π»ΡŒΠ΄ΡƒΡ (Postgres Professional)ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΉ Π² PostgreSQL / ΠšΡƒΡ€Π±Π°Π½Π³Π°Π»ΠΈΠ΅Π² Π˜Π»ΡŒΠ΄ΡƒΡ (Postgres Professional)
ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΉ Π² PostgreSQL / ΠšΡƒΡ€Π±Π°Π½Π³Π°Π»ΠΈΠ΅Π² Π˜Π»ΡŒΠ΄ΡƒΡ (Postgres Professional)
Β 
Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ для PostgreSQL
Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ для PostgreSQLΠ Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ для PostgreSQL
Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ для PostgreSQL
Β 
JavaScript Π½Π° сСрвСрС, 1ms Π½Π° Ρ‚Ρ€Π°Π½ΡΡ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ (АндрСй Π‘ΡƒΠΌΠΈΠ½)
JavaScript Π½Π° сСрвСрС, 1ms Π½Π° Ρ‚Ρ€Π°Π½ΡΡ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ (АндрСй Π‘ΡƒΠΌΠΈΠ½)JavaScript Π½Π° сСрвСрС, 1ms Π½Π° Ρ‚Ρ€Π°Π½ΡΡ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ (АндрСй Π‘ΡƒΠΌΠΈΠ½)
JavaScript Π½Π° сСрвСрС, 1ms Π½Π° Ρ‚Ρ€Π°Π½ΡΡ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ (АндрСй Π‘ΡƒΠΌΠΈΠ½)
Β 
БСмь тысяч Rps, ΠΎΠ΄ΠΈΠ½ go
БСмь тысяч Rps, ΠΎΠ΄ΠΈΠ½ goБСмь тысяч Rps, ΠΎΠ΄ΠΈΠ½ go
БСмь тысяч Rps, ΠΎΠ΄ΠΈΠ½ go
Β 
PowerShell
PowerShellPowerShell
PowerShell
Β 
Π Π°Π±ΠΎΡ‚Π° с Git Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ЯндСкс.Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€Π° β€” Алёна Π¦Π°Ρ€Ρ‘Π²Π°
Π Π°Π±ΠΎΡ‚Π° с Git Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ЯндСкс.Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€Π° β€” Алёна Π¦Π°Ρ€Ρ‘Π²Π°Π Π°Π±ΠΎΡ‚Π° с Git Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ЯндСкс.Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€Π° β€” Алёна Π¦Π°Ρ€Ρ‘Π²Π°
Π Π°Π±ΠΎΡ‚Π° с Git Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ЯндСкс.Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€Π° β€” Алёна Π¦Π°Ρ€Ρ‘Π²Π°
Β 
Thumbtack Expertise Days # 5 - Ansible
Thumbtack Expertise Days # 5 - AnsibleThumbtack Expertise Days # 5 - Ansible
Thumbtack Expertise Days # 5 - Ansible
Β 
Linux API с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π²Π΅Π±-сСрвСра / Π’Π°Π»Π΅Π½Ρ‚ΠΈΠ½ Π‘Π°Ρ€Ρ‚Π΅Π½Π΅Π² (NGINX,...
Linux API с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π²Π΅Π±-сСрвСра / Π’Π°Π»Π΅Π½Ρ‚ΠΈΠ½ Π‘Π°Ρ€Ρ‚Π΅Π½Π΅Π² (NGINX,...Linux API с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π²Π΅Π±-сСрвСра / Π’Π°Π»Π΅Π½Ρ‚ΠΈΠ½ Π‘Π°Ρ€Ρ‚Π΅Π½Π΅Π² (NGINX,...
Linux API с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π²Π΅Π±-сСрвСра / Π’Π°Π»Π΅Π½Ρ‚ΠΈΠ½ Π‘Π°Ρ€Ρ‚Π΅Π½Π΅Π² (NGINX,...
Β 
Batch processing in rails
Batch processing in railsBatch processing in rails
Batch processing in rails
Β 

Viewers also liked

Go meetup 2015 04-23
Go meetup 2015 04-23Go meetup 2015 04-23
Go meetup 2015 04-23Maxim Dementyev
Β 
Π”ΠΎΠΊΠ»Π°Π΄ Антона ΠŸΠΎΠ²Π°Ρ€ΠΎΠ²Π° "Go in Badoo" с Golang Meetup
Π”ΠΎΠΊΠ»Π°Π΄ Антона ΠŸΠΎΠ²Π°Ρ€ΠΎΠ²Π° "Go in Badoo" с Golang MeetupΠ”ΠΎΠΊΠ»Π°Π΄ Антона ΠŸΠΎΠ²Π°Ρ€ΠΎΠ²Π° "Go in Badoo" с Golang Meetup
Π”ΠΎΠΊΠ»Π°Π΄ Антона ΠŸΠΎΠ²Π°Ρ€ΠΎΠ²Π° "Go in Badoo" с Golang MeetupBadoo Development
Β 
Sweating the UX Details
Sweating the UX DetailsSweating the UX Details
Sweating the UX DetailsStephen Anderson
Β 
(НС)бСзопасный frontend
(НС)бСзопасный frontend(НС)бСзопасный frontend
(НС)бСзопасный frontendSergey Belov
Β 
Sketchnotes-SF Meetup :: Round 17 :: People & Faces [Wed Apr 29, 2015]
Sketchnotes-SF Meetup :: Round 17 :: People & Faces [Wed Apr 29, 2015]Sketchnotes-SF Meetup :: Round 17 :: People & Faces [Wed Apr 29, 2015]
Sketchnotes-SF Meetup :: Round 17 :: People & Faces [Wed Apr 29, 2015]Kate Rutter
Β 
Digital Sketchnotes 101
Digital Sketchnotes 101Digital Sketchnotes 101
Digital Sketchnotes 101Karen Bosch
Β 
Sketchnote Mini-Workshop: DSGNDAY 2014
Sketchnote Mini-Workshop: DSGNDAY 2014Sketchnote Mini-Workshop: DSGNDAY 2014
Sketchnote Mini-Workshop: DSGNDAY 2014Mike Rohde
Β 
BeeGo для Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈΜ†, API ΠΈ Π΄Π΅ΠΌΠΎΠ½ΠΎΠ²
BeeGo для Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈΜ†, API ΠΈ Π΄Π΅ΠΌΠΎΠ½ΠΎΠ²BeeGo для Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈΜ†, API ΠΈ Π΄Π΅ΠΌΠΎΠ½ΠΎΠ²
BeeGo для Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈΜ†, API ΠΈ Π΄Π΅ΠΌΠΎΠ½ΠΎΠ²Anton Piskunov
Β 
RTB DSP Π½Π° языкС Go: ΡƒΠΊΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅ buzzwords
RTB DSP Π½Π° языкС Go: ΡƒΠΊΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅ buzzwordsRTB DSP Π½Π° языкС Go: ΡƒΠΊΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅ buzzwords
RTB DSP Π½Π° языкС Go: ΡƒΠΊΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅ buzzwordsDaniel Podolsky
Β 
Tk conf daniel-podolsky-sqlvsnosql
Tk conf daniel-podolsky-sqlvsnosqlTk conf daniel-podolsky-sqlvsnosql
Tk conf daniel-podolsky-sqlvsnosqlDaniel Podolsky
Β 
ΠŸΠ΅Ρ‚Ρ€ Π›Π΅ΠΌΠ΅Π½ΠΊΠΎΠ²: Golang ΠΈ Fedora
ΠŸΠ΅Ρ‚Ρ€ Π›Π΅ΠΌΠ΅Π½ΠΊΠΎΠ²: Golang ΠΈ FedoraΠŸΠ΅Ρ‚Ρ€ Π›Π΅ΠΌΠ΅Π½ΠΊΠΎΠ²: Golang ΠΈ Fedora
ΠŸΠ΅Ρ‚Ρ€ Π›Π΅ΠΌΠ΅Π½ΠΊΠΎΠ²: Golang ΠΈ FedoraYandex
Β 
Codefest 2016 - Go Π² Openprovider
Codefest 2016 - Go Π² OpenproviderCodefest 2016 - Go Π² Openprovider
Codefest 2016 - Go Π² OpenproviderIgor Dolzhikov
Β 
Go Π² автобусС
Go Π² автобусСGo Π² автобусС
Go Π² автобусСArtem Kovardin
Β 
ΠžΠ±Π·ΠΎΡ€Π½Π°Ρ экскурсия ΠΏΠΎ runit
ΠžΠ±Π·ΠΎΡ€Π½Π°Ρ экскурсия ΠΏΠΎ runitΠžΠ±Π·ΠΎΡ€Π½Π°Ρ экскурсия ΠΏΠΎ runit
ΠžΠ±Π·ΠΎΡ€Π½Π°Ρ экскурсия ΠΏΠΎ runitAlexander Shcherbinin
Β 
РИЀ+ΠšΠ˜Π‘ 2016: ΠΊΠ°ΠΊ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΠΎΡ‡Ρ‚ΠΈ 2 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° Ρ€ΡƒΠ±Π»Π΅ΠΉ ΠΈ Ρ‚Π°ΠΊ ΠΈ Π½Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ бизнСс
РИЀ+ΠšΠ˜Π‘ 2016: ΠΊΠ°ΠΊ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΠΎΡ‡Ρ‚ΠΈ 2 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° Ρ€ΡƒΠ±Π»Π΅ΠΉ ΠΈ Ρ‚Π°ΠΊ ΠΈ Π½Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ бизнСсРИЀ+ΠšΠ˜Π‘ 2016: ΠΊΠ°ΠΊ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΠΎΡ‡Ρ‚ΠΈ 2 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° Ρ€ΡƒΠ±Π»Π΅ΠΉ ΠΈ Ρ‚Π°ΠΊ ΠΈ Π½Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ бизнСс
РИЀ+ΠšΠ˜Π‘ 2016: ΠΊΠ°ΠΊ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΠΎΡ‡Ρ‚ΠΈ 2 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° Ρ€ΡƒΠ±Π»Π΅ΠΉ ΠΈ Ρ‚Π°ΠΊ ΠΈ Π½Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ бизнСсAnton Piskunov
Β 
Как Π’ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Go
Как Π’ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ GoКак Π’ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Go
Как Π’ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ GoArtem Kovardin
Β 
Dynamic Ruby. Lesson #1: Object model
Dynamic Ruby. Lesson #1: Object modelDynamic Ruby. Lesson #1: Object model
Dynamic Ruby. Lesson #1: Object modelAlex Mikitenko
Β 
Ruby строки
Ruby строкиRuby строки
Ruby строкиEvgeny Smirnov
Β 

Viewers also liked (20)

Go meetup 2015 04-23
Go meetup 2015 04-23Go meetup 2015 04-23
Go meetup 2015 04-23
Β 
Π”ΠΎΠΊΠ»Π°Π΄ Антона ΠŸΠΎΠ²Π°Ρ€ΠΎΠ²Π° "Go in Badoo" с Golang Meetup
Π”ΠΎΠΊΠ»Π°Π΄ Антона ΠŸΠΎΠ²Π°Ρ€ΠΎΠ²Π° "Go in Badoo" с Golang MeetupΠ”ΠΎΠΊΠ»Π°Π΄ Антона ΠŸΠΎΠ²Π°Ρ€ΠΎΠ²Π° "Go in Badoo" с Golang Meetup
Π”ΠΎΠΊΠ»Π°Π΄ Антона ΠŸΠΎΠ²Π°Ρ€ΠΎΠ²Π° "Go in Badoo" с Golang Meetup
Β 
Sweating the UX Details
Sweating the UX DetailsSweating the UX Details
Sweating the UX Details
Β 
(НС)бСзопасный frontend
(НС)бСзопасный frontend(НС)бСзопасный frontend
(НС)бСзопасный frontend
Β 
Sketchnotes-SF Meetup :: Round 17 :: People & Faces [Wed Apr 29, 2015]
Sketchnotes-SF Meetup :: Round 17 :: People & Faces [Wed Apr 29, 2015]Sketchnotes-SF Meetup :: Round 17 :: People & Faces [Wed Apr 29, 2015]
Sketchnotes-SF Meetup :: Round 17 :: People & Faces [Wed Apr 29, 2015]
Β 
Digital Sketchnotes 101
Digital Sketchnotes 101Digital Sketchnotes 101
Digital Sketchnotes 101
Β 
Sketchnote Mini-Workshop: DSGNDAY 2014
Sketchnote Mini-Workshop: DSGNDAY 2014Sketchnote Mini-Workshop: DSGNDAY 2014
Sketchnote Mini-Workshop: DSGNDAY 2014
Β 
BeeGo для Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈΜ†, API ΠΈ Π΄Π΅ΠΌΠΎΠ½ΠΎΠ²
BeeGo для Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈΜ†, API ΠΈ Π΄Π΅ΠΌΠΎΠ½ΠΎΠ²BeeGo для Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈΜ†, API ΠΈ Π΄Π΅ΠΌΠΎΠ½ΠΎΠ²
BeeGo для Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈΜ†, API ΠΈ Π΄Π΅ΠΌΠΎΠ½ΠΎΠ²
Β 
RTB DSP Π½Π° языкС Go: ΡƒΠΊΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅ buzzwords
RTB DSP Π½Π° языкС Go: ΡƒΠΊΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅ buzzwordsRTB DSP Π½Π° языкС Go: ΡƒΠΊΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅ buzzwords
RTB DSP Π½Π° языкС Go: ΡƒΠΊΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅ buzzwords
Β 
Tk conf daniel-podolsky-sqlvsnosql
Tk conf daniel-podolsky-sqlvsnosqlTk conf daniel-podolsky-sqlvsnosql
Tk conf daniel-podolsky-sqlvsnosql
Β 
ΠŸΠ΅Ρ‚Ρ€ Π›Π΅ΠΌΠ΅Π½ΠΊΠΎΠ²: Golang ΠΈ Fedora
ΠŸΠ΅Ρ‚Ρ€ Π›Π΅ΠΌΠ΅Π½ΠΊΠΎΠ²: Golang ΠΈ FedoraΠŸΠ΅Ρ‚Ρ€ Π›Π΅ΠΌΠ΅Π½ΠΊΠΎΠ²: Golang ΠΈ Fedora
ΠŸΠ΅Ρ‚Ρ€ Π›Π΅ΠΌΠ΅Π½ΠΊΠΎΠ²: Golang ΠΈ Fedora
Β 
Codefest 2016 - Go Π² Openprovider
Codefest 2016 - Go Π² OpenproviderCodefest 2016 - Go Π² Openprovider
Codefest 2016 - Go Π² Openprovider
Β 
Go Π² автобусС
Go Π² автобусСGo Π² автобусС
Go Π² автобусС
Β 
ΠžΠ±Π·ΠΎΡ€Π½Π°Ρ экскурсия ΠΏΠΎ runit
ΠžΠ±Π·ΠΎΡ€Π½Π°Ρ экскурсия ΠΏΠΎ runitΠžΠ±Π·ΠΎΡ€Π½Π°Ρ экскурсия ΠΏΠΎ runit
ΠžΠ±Π·ΠΎΡ€Π½Π°Ρ экскурсия ΠΏΠΎ runit
Β 
Golang
GolangGolang
Golang
Β 
РИЀ+ΠšΠ˜Π‘ 2016: ΠΊΠ°ΠΊ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΠΎΡ‡Ρ‚ΠΈ 2 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° Ρ€ΡƒΠ±Π»Π΅ΠΉ ΠΈ Ρ‚Π°ΠΊ ΠΈ Π½Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ бизнСс
РИЀ+ΠšΠ˜Π‘ 2016: ΠΊΠ°ΠΊ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΠΎΡ‡Ρ‚ΠΈ 2 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° Ρ€ΡƒΠ±Π»Π΅ΠΉ ΠΈ Ρ‚Π°ΠΊ ΠΈ Π½Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ бизнСсРИЀ+ΠšΠ˜Π‘ 2016: ΠΊΠ°ΠΊ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΠΎΡ‡Ρ‚ΠΈ 2 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° Ρ€ΡƒΠ±Π»Π΅ΠΉ ΠΈ Ρ‚Π°ΠΊ ΠΈ Π½Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ бизнСс
РИЀ+ΠšΠ˜Π‘ 2016: ΠΊΠ°ΠΊ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΠΎΡ‡Ρ‚ΠΈ 2 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° Ρ€ΡƒΠ±Π»Π΅ΠΉ ΠΈ Ρ‚Π°ΠΊ ΠΈ Π½Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ бизнСс
Β 
Как Π’ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Go
Как Π’ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ GoКак Π’ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Go
Как Π’ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Go
Β 
Dynamic Ruby. Lesson #1: Object model
Dynamic Ruby. Lesson #1: Object modelDynamic Ruby. Lesson #1: Object model
Dynamic Ruby. Lesson #1: Object model
Β 
Ruby строки
Ruby строкиRuby строки
Ruby строки
Β 
OOP Π² Go
OOP Π² GoOOP Π² Go
OOP Π² Go
Β 

Similar to Go meetup smotri+ 23.04.2015

PHP 5.4: Π§Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ?
PHP 5.4: Π§Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ?PHP 5.4: Π§Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ?
PHP 5.4: Π§Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ?phpdevby
Β 
Mihail davidov js-ajax
Mihail davidov js-ajaxMihail davidov js-ajax
Mihail davidov js-ajaxYandex
Β 
ΠœΠΈΡ…Π°ΠΈΠ» Π”Π°Π²Ρ‹Π΄ΠΎΠ² β€” Вранспорт, Ajax
ΠœΠΈΡ…Π°ΠΈΠ» Π”Π°Π²Ρ‹Π΄ΠΎΠ² β€” Вранспорт, AjaxΠœΠΈΡ…Π°ΠΈΠ» Π”Π°Π²Ρ‹Π΄ΠΎΠ² β€” Вранспорт, Ajax
ΠœΠΈΡ…Π°ΠΈΠ» Π”Π°Π²Ρ‹Π΄ΠΎΠ² β€” Вранспорт, AjaxYandex
Β 
Π¨ΠΊΠΎΠ»Π°-студия Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ для iOS. ЛСкция 4. Π Π°Π±ΠΎΡ‚Π° с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ
Π¨ΠΊΠΎΠ»Π°-студия Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ для iOS. ЛСкция 4. Π Π°Π±ΠΎΡ‚Π° с Π΄Π°Π½Π½Ρ‹ΠΌΠΈΠ¨ΠΊΠΎΠ»Π°-студия Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ для iOS. ЛСкция 4. Π Π°Π±ΠΎΡ‚Π° с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ
Π¨ΠΊΠΎΠ»Π°-студия Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ для iOS. ЛСкция 4. Π Π°Π±ΠΎΡ‚Π° с Π΄Π°Π½Π½Ρ‹ΠΌΠΈΠ“Π»Π΅Π± Варасов
Β 
Pavel Dovbush Toster
Pavel Dovbush Toster Pavel Dovbush Toster
Pavel Dovbush Toster Pavel Dovbush
Β 
Behat в PHP с использованиСм Behat и Mink
Behat в PHP с использованиСм Behat и MinkBehat в PHP с использованиСм Behat и Mink
Behat в PHP с использованиСм Behat и Minktyomo4ka
Β 
ΠšΡƒΠ»ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ мастСр-класс "Π“ΠΎΡ‚ΠΎΠ²ΠΈΠΌ бСзопасный офис Π½ΠΎΠ²ΠΎΠ³ΠΎ поколСния Π½Π° основС C...
ΠšΡƒΠ»ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ мастСр-класс "Π“ΠΎΡ‚ΠΎΠ²ΠΈΠΌ бСзопасный офис Π½ΠΎΠ²ΠΎΠ³ΠΎ поколСния Π½Π° основС C...ΠšΡƒΠ»ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ мастСр-класс "Π“ΠΎΡ‚ΠΎΠ²ΠΈΠΌ бСзопасный офис Π½ΠΎΠ²ΠΎΠ³ΠΎ поколСния Π½Π° основС C...
ΠšΡƒΠ»ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ мастСр-класс "Π“ΠΎΡ‚ΠΎΠ²ΠΈΠΌ бСзопасный офис Π½ΠΎΠ²ΠΎΠ³ΠΎ поколСния Π½Π° основС C...Cisco Russia
Β 
Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Perl ΠΏΠΎΠ΄ Raspberry PI
Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Perl ΠΏΠΎΠ΄ Raspberry PIΠ Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Perl ΠΏΠΎΠ΄ Raspberry PI
Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Perl ΠΏΠΎΠ΄ Raspberry PIIlya Chesnokov
Β 
ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…: взгляд ΠΈΠ·Π½ΡƒΡ‚Ρ€ΠΈ / Π”ΠΌΠΈΡ‚Ρ€ΠΈΠΉ Π•ΠΌΠ°Π½ΠΎΠ² (Firebird P...
ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…: взгляд ΠΈΠ·Π½ΡƒΡ‚Ρ€ΠΈ / Π”ΠΌΠΈΡ‚Ρ€ΠΈΠΉ Π•ΠΌΠ°Π½ΠΎΠ² (Firebird P...ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…: взгляд ΠΈΠ·Π½ΡƒΡ‚Ρ€ΠΈ / Π”ΠΌΠΈΡ‚Ρ€ΠΈΠΉ Π•ΠΌΠ°Π½ΠΎΠ² (Firebird P...
ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…: взгляд ΠΈΠ·Π½ΡƒΡ‚Ρ€ΠΈ / Π”ΠΌΠΈΡ‚Ρ€ΠΈΠΉ Π•ΠΌΠ°Π½ΠΎΠ² (Firebird P...Ontico
Β 
Π±Π΅Π³ΡƒΠ½
Π±Π΅Π³ΡƒΠ½Π±Π΅Π³ΡƒΠ½
Π±Π΅Π³ΡƒΠ½HighLoad2009
Β 
АвтотСстированиС Π²Π΅Π±-сСрвиса с Ruby ΠΈ Rspec
АвтотСстированиС Π²Π΅Π±-сСрвиса с Ruby ΠΈ RspecАвтотСстированиС Π²Π΅Π±-сСрвиса с Ruby ΠΈ Rspec
АвтотСстированиС Π²Π΅Π±-сСрвиса с Ruby ΠΈ RspecSQALab
Β 
View ΠΊΠ°ΠΊ чистая функция ΠΎΡ‚ состояния Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… - Илья Π‘Π΅Π΄Π°, bro.agency
View ΠΊΠ°ΠΊ чистая функция ΠΎΡ‚ состояния Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…  - Илья Π‘Π΅Π΄Π°, bro.agencyView ΠΊΠ°ΠΊ чистая функция ΠΎΡ‚ состояния Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…  - Илья Π‘Π΅Π΄Π°, bro.agency
View ΠΊΠ°ΠΊ чистая функция ΠΎΡ‚ состояния Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… - Илья Π‘Π΅Π΄Π°, bro.agencyit-people
Β 
"Π”Π΅ΠΏΠ»ΠΎΠΉ ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€" ΠœΡƒΡ€Π°Ρ‚ Кабилов (Avito)
"Π”Π΅ΠΏΠ»ΠΎΠΉ ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€" ΠœΡƒΡ€Π°Ρ‚ Кабилов (Avito)"Π”Π΅ΠΏΠ»ΠΎΠΉ ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€" ΠœΡƒΡ€Π°Ρ‚ Кабилов (Avito)
"Π”Π΅ΠΏΠ»ΠΎΠΉ ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€" ΠœΡƒΡ€Π°Ρ‚ Кабилов (Avito)AvitoTech
Β 
ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΡƒΡ‚Π°Ρ‚ΠΎΡ€ΠΎΠ² для Π¦ΠžΠ” Cisco Nexus
ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΡƒΡ‚Π°Ρ‚ΠΎΡ€ΠΎΠ² для Π¦ΠžΠ” Cisco NexusΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΡƒΡ‚Π°Ρ‚ΠΎΡ€ΠΎΠ² для Π¦ΠžΠ” Cisco Nexus
ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΡƒΡ‚Π°Ρ‚ΠΎΡ€ΠΎΠ² для Π¦ΠžΠ” Cisco NexusCisco Russia
Β 
Java 9: what is there beyond modularization
Java 9: what is there beyond modularizationJava 9: what is there beyond modularization
Java 9: what is there beyond modularizationIvan Krylov
Β 
Антон Π¨Π»ΠΎΠΌΠ°. Drupal ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ.
Антон Π¨Π»ΠΎΠΌΠ°. Drupal ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ. Антон Π¨Π»ΠΎΠΌΠ°. Drupal ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ.
Антон Π¨Π»ΠΎΠΌΠ°. Drupal ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ. DrupalSib
Β 
Psgi app
Psgi appPsgi app
Psgi appund3f
Β 
Easy authcache 2 ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для pro Ρ€ΠΎΠ΄ΠΈΠΎΠ½ΠΎΠ² ΠΈΠ³ΠΎΡ€ΡŒ
Easy authcache 2   ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для pro Ρ€ΠΎΠ΄ΠΈΠΎΠ½ΠΎΠ² ΠΈΠ³ΠΎΡ€ΡŒEasy authcache 2   ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для pro Ρ€ΠΎΠ΄ΠΈΠΎΠ½ΠΎΠ² ΠΈΠ³ΠΎΡ€ΡŒ
Easy authcache 2 ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для pro Ρ€ΠΎΠ΄ΠΈΠΎΠ½ΠΎΠ² ΠΈΠ³ΠΎΡ€ΡŒdrupalconf
Β 

Similar to Go meetup smotri+ 23.04.2015 (20)

PHP 5.4: Π§Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ?
PHP 5.4: Π§Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ?PHP 5.4: Π§Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ?
PHP 5.4: Π§Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ?
Β 
Mihail davidov js-ajax
Mihail davidov js-ajaxMihail davidov js-ajax
Mihail davidov js-ajax
Β 
ΠœΠΈΡ…Π°ΠΈΠ» Π”Π°Π²Ρ‹Π΄ΠΎΠ² β€” Вранспорт, Ajax
ΠœΠΈΡ…Π°ΠΈΠ» Π”Π°Π²Ρ‹Π΄ΠΎΠ² β€” Вранспорт, AjaxΠœΠΈΡ…Π°ΠΈΠ» Π”Π°Π²Ρ‹Π΄ΠΎΠ² β€” Вранспорт, Ajax
ΠœΠΈΡ…Π°ΠΈΠ» Π”Π°Π²Ρ‹Π΄ΠΎΠ² β€” Вранспорт, Ajax
Β 
Π¨ΠΊΠΎΠ»Π°-студия Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ для iOS. ЛСкция 4. Π Π°Π±ΠΎΡ‚Π° с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ
Π¨ΠΊΠΎΠ»Π°-студия Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ для iOS. ЛСкция 4. Π Π°Π±ΠΎΡ‚Π° с Π΄Π°Π½Π½Ρ‹ΠΌΠΈΠ¨ΠΊΠΎΠ»Π°-студия Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ для iOS. ЛСкция 4. Π Π°Π±ΠΎΡ‚Π° с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ
Π¨ΠΊΠΎΠ»Π°-студия Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ для iOS. ЛСкция 4. Π Π°Π±ΠΎΡ‚Π° с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ
Β 
JSSDK: Начало
JSSDK: НачалоJSSDK: Начало
JSSDK: Начало
Β 
Pavel Dovbush Toster
Pavel Dovbush Toster Pavel Dovbush Toster
Pavel Dovbush Toster
Β 
Behat в PHP с использованиСм Behat и Mink
Behat в PHP с использованиСм Behat и MinkBehat в PHP с использованиСм Behat и Mink
Behat в PHP с использованиСм Behat и Mink
Β 
ΠšΡƒΠ»ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ мастСр-класс "Π“ΠΎΡ‚ΠΎΠ²ΠΈΠΌ бСзопасный офис Π½ΠΎΠ²ΠΎΠ³ΠΎ поколСния Π½Π° основС C...
ΠšΡƒΠ»ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ мастСр-класс "Π“ΠΎΡ‚ΠΎΠ²ΠΈΠΌ бСзопасный офис Π½ΠΎΠ²ΠΎΠ³ΠΎ поколСния Π½Π° основС C...ΠšΡƒΠ»ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ мастСр-класс "Π“ΠΎΡ‚ΠΎΠ²ΠΈΠΌ бСзопасный офис Π½ΠΎΠ²ΠΎΠ³ΠΎ поколСния Π½Π° основС C...
ΠšΡƒΠ»ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ мастСр-класс "Π“ΠΎΡ‚ΠΎΠ²ΠΈΠΌ бСзопасный офис Π½ΠΎΠ²ΠΎΠ³ΠΎ поколСния Π½Π° основС C...
Β 
Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Perl ΠΏΠΎΠ΄ Raspberry PI
Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Perl ΠΏΠΎΠ΄ Raspberry PIΠ Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Perl ΠΏΠΎΠ΄ Raspberry PI
Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Perl ΠΏΠΎΠ΄ Raspberry PI
Β 
ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…: взгляд ΠΈΠ·Π½ΡƒΡ‚Ρ€ΠΈ / Π”ΠΌΠΈΡ‚Ρ€ΠΈΠΉ Π•ΠΌΠ°Π½ΠΎΠ² (Firebird P...
ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…: взгляд ΠΈΠ·Π½ΡƒΡ‚Ρ€ΠΈ / Π”ΠΌΠΈΡ‚Ρ€ΠΈΠΉ Π•ΠΌΠ°Π½ΠΎΠ² (Firebird P...ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…: взгляд ΠΈΠ·Π½ΡƒΡ‚Ρ€ΠΈ / Π”ΠΌΠΈΡ‚Ρ€ΠΈΠΉ Π•ΠΌΠ°Π½ΠΎΠ² (Firebird P...
ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…: взгляд ΠΈΠ·Π½ΡƒΡ‚Ρ€ΠΈ / Π”ΠΌΠΈΡ‚Ρ€ΠΈΠΉ Π•ΠΌΠ°Π½ΠΎΠ² (Firebird P...
Β 
Jsfwdays 2013-2
Jsfwdays 2013-2Jsfwdays 2013-2
Jsfwdays 2013-2
Β 
Π±Π΅Π³ΡƒΠ½
Π±Π΅Π³ΡƒΠ½Π±Π΅Π³ΡƒΠ½
Π±Π΅Π³ΡƒΠ½
Β 
АвтотСстированиС Π²Π΅Π±-сСрвиса с Ruby ΠΈ Rspec
АвтотСстированиС Π²Π΅Π±-сСрвиса с Ruby ΠΈ RspecАвтотСстированиС Π²Π΅Π±-сСрвиса с Ruby ΠΈ Rspec
АвтотСстированиС Π²Π΅Π±-сСрвиса с Ruby ΠΈ Rspec
Β 
View ΠΊΠ°ΠΊ чистая функция ΠΎΡ‚ состояния Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… - Илья Π‘Π΅Π΄Π°, bro.agency
View ΠΊΠ°ΠΊ чистая функция ΠΎΡ‚ состояния Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…  - Илья Π‘Π΅Π΄Π°, bro.agencyView ΠΊΠ°ΠΊ чистая функция ΠΎΡ‚ состояния Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…  - Илья Π‘Π΅Π΄Π°, bro.agency
View ΠΊΠ°ΠΊ чистая функция ΠΎΡ‚ состояния Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… - Илья Π‘Π΅Π΄Π°, bro.agency
Β 
"Π”Π΅ΠΏΠ»ΠΎΠΉ ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€" ΠœΡƒΡ€Π°Ρ‚ Кабилов (Avito)
"Π”Π΅ΠΏΠ»ΠΎΠΉ ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€" ΠœΡƒΡ€Π°Ρ‚ Кабилов (Avito)"Π”Π΅ΠΏΠ»ΠΎΠΉ ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€" ΠœΡƒΡ€Π°Ρ‚ Кабилов (Avito)
"Π”Π΅ΠΏΠ»ΠΎΠΉ ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€" ΠœΡƒΡ€Π°Ρ‚ Кабилов (Avito)
Β 
ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΡƒΡ‚Π°Ρ‚ΠΎΡ€ΠΎΠ² для Π¦ΠžΠ” Cisco Nexus
ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΡƒΡ‚Π°Ρ‚ΠΎΡ€ΠΎΠ² для Π¦ΠžΠ” Cisco NexusΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΡƒΡ‚Π°Ρ‚ΠΎΡ€ΠΎΠ² для Π¦ΠžΠ” Cisco Nexus
ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΡƒΡ‚Π°Ρ‚ΠΎΡ€ΠΎΠ² для Π¦ΠžΠ” Cisco Nexus
Β 
Java 9: what is there beyond modularization
Java 9: what is there beyond modularizationJava 9: what is there beyond modularization
Java 9: what is there beyond modularization
Β 
Антон Π¨Π»ΠΎΠΌΠ°. Drupal ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ.
Антон Π¨Π»ΠΎΠΌΠ°. Drupal ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ. Антон Π¨Π»ΠΎΠΌΠ°. Drupal ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ.
Антон Π¨Π»ΠΎΠΌΠ°. Drupal ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ.
Β 
Psgi app
Psgi appPsgi app
Psgi app
Β 
Easy authcache 2 ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для pro Ρ€ΠΎΠ΄ΠΈΠΎΠ½ΠΎΠ² ΠΈΠ³ΠΎΡ€ΡŒ
Easy authcache 2   ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для pro Ρ€ΠΎΠ΄ΠΈΠΎΠ½ΠΎΠ² ΠΈΠ³ΠΎΡ€ΡŒEasy authcache 2   ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для pro Ρ€ΠΎΠ΄ΠΈΠΎΠ½ΠΎΠ² ΠΈΠ³ΠΎΡ€ΡŒ
Easy authcache 2 ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для pro Ρ€ΠΎΠ΄ΠΈΠΎΠ½ΠΎΠ² ΠΈΠ³ΠΎΡ€ΡŒ
Β 

Go meetup smotri+ 23.04.2015

  • 1. ИспользованиС Β Go Π²  бэкСндС прилоТСния Β  Π‘ΠΌΠΎΡ‚Ρ€ΠΈ+ ΠœΠΈΡ…Π°ΠΈΠ»  Балосин
  • 2. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠœΠΈΡ…Π°ΠΈΠ»  Балосин. Β  ИспользованиС Β Go Π²  бэкСндС прилоТСния Β  Π‘ΠΌΠΎΡ‚Ρ€ΠΈ+ 2
  • 3. Π§Ρ‚ΠΎ  использовали β€’ Go β€’ PostgreSQL β€’ Ruby on Β Rails  – ActiveAdmin, Β ΠΈΠΌΠΏΠΎΡ€Ρ‚  статистики β€’ Python  – систСмныС  тСсты β€’ Memcached β€’ Chef β€’ Zabbix β€’ Graylog2 β€’ Slate 3ΠœΠΈΡ…Π°ΠΈΠ»  Балосин. Β  ИспользованиС Β Go Π²  бэкСндС прилоТСния Β  Π‘ΠΌΠΎΡ‚Ρ€ΠΈ+
  • 4. Π’Ρ‹Π±ΠΎΡ€ Β ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° β€’ Π”Π°Π½Π½Ρ‹Π΅ Β Π½Π° Β ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°Ρ… Β Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Β ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ Β Π² Β  Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Β Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ β€’ Π”Π°Π½Π½Ρ‹Π΅,  синхронизируСмыС  с Β ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ, Β Π½Π΅ Β  ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ β€’ Бтатистика Β ΠΈ  составы Β ΠΊΠΎΠΌΠ°Π½Π΄ Β ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ Β  ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ Β GET  запросами β€’ 100  тыс. Β ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ 4ΠœΠΈΡ…Π°ΠΈΠ»  Балосин. Β  ИспользованиС Β Go Π²  бэкСндС прилоТСния Β  Π‘ΠΌΠΎΡ‚Ρ€ΠΈ+
  • 5. Π’Ρ‹Π±ΠΎΡ€ Β ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° β€’ Websocket – ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΠΎ β€’ Server-­‐Sent Β Events Β (SSE)  – Π²  самый Β Ρ€Π°Π·! 5ΠœΠΈΡ…Π°ΠΈΠ»  Балосин. Β  ИспользованиС Β Go Π²  бэкСндС прилоТСния Β  Π‘ΠΌΠΎΡ‚Ρ€ΠΈ+
  • 6. Server-­‐Sent Β Events 6ΠœΠΈΡ…Π°ΠΈΠ»  Балосин. Β  ИспользованиС Β Go Π²  бэкСндС прилоТСния Β  Π‘ΠΌΠΎΡ‚Ρ€ΠΈ+ Content-­‐Type: Β text/event-­‐stream event: Β Person data: Β {β€œid”: Β 10, Β name: Β β€Π˜Π»ΡŒΡ Β ΠšΠΎΠ²Π°Π»ΡŒΡ‡ΡƒΠΊβ€}nn
  • 7. Server-­‐Sent Β Events 7ΠœΠΈΡ…Π°ΠΈΠ»  Балосин. Β  ИспользованиС Β Go Π²  бэкСндС прилоТСния Β  Π‘ΠΌΠΎΡ‚Ρ€ΠΈ+
  • 8. Server-­‐Sent Β Events 8ΠœΠΈΡ…Π°ΠΈΠ»  Балосин. Β  ИспользованиС Β Go Π²  бэкСндС прилоТСния Β  Π‘ΠΌΠΎΡ‚Ρ€ΠΈ+ func (h *APIHandler) UpdatesLive(rw http.ResponseWriter, req *http.Request) { updates := make(chan interface{}, 100) h.DataUpdates.Subscribe(updates) defer h.DataUpdates.Unsubscribe(updates) h.setSseHeaders(rw) h.pingAndFlush(rw, strconv.FormatInt(time.Now().UnixNano(), 10)) for { select { case data, ok := <-updates: if !ok { return } switch v := data.(type) { case int64: // unix time ping h.pingAndFlush(rw, strconv.FormatInt(v, 10)) case reform.Struct: h.writeSseStruct(rw, req, v) rw.(http.Flusher).Flush() } } } }
  • 9. Server-­‐Sent Β Events 9ΠœΠΈΡ…Π°ΠΈΠ»  Балосин. Β  ИспользованиС Β Go Π²  бэкСндС прилоТСния Β  Π‘ΠΌΠΎΡ‚Ρ€ΠΈ+ func (*APIHandler) setSseHeaders(rw http.ResponseWriter) { rw.Header().Set("Content-Type", "text/event-stream; charset=utf-8") } func (h *APIHandler) writeSseStruct(rw http.ResponseWriter, req *http.Request, str reform.Struct) { b, err := json.Marshal(str) _, err = fmt.Fprint(rw, "event:"+str.View().Name()+"n") _, err = fmt.Fprint(rw, "data:") _, err = rw.Write(b) _, err = fmt.Fprint(rw, "nn") } func (*APIHandler) pingAndFlush(rw http.ResponseWriter, data string) { _, err := fmt.Fprintf(rw, ":%snn", data) rw.(http.Flusher).Flush() }
  • 10. ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Β ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Β ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ 10ΠœΠΈΡ…Π°ΠΈΠ»  Балосин. Β  ИспользованиС Β Go Π²  бэкСндС прилоТСния Β  Π‘ΠΌΠΎΡ‚Ρ€ΠΈ+
  • 11. PostgreSQL: Β Listen/Notify 11ΠœΠΈΡ…Π°ΠΈΠ»  Балосин. Β  ИспользованиС Β Go Π²  бэкСндС прилоТСния Β  Π‘ΠΌΠΎΡ‚Ρ€ΠΈ+ CREATE OR REPLACE FUNCTION data_updated() RETURNS trigger AS $$ BEGIN IF TG_OP = 'INSERT' OR OLD <> NEW THEN PERFORM pg_notify('data_updates', TG_TABLE_NAME || ' ' || NEW.id); END IF; RETURN NULL; END; $$ LANGUAGE plpgsql; CREATE TRIGGER on_season_update AFTER INSERT OR UPDATE ON seasons FOR EACH ROW EXECUTE PROCEDURE data_updated();
  • 12. PostgreSQL: Β Listen/Notify func ListenForDataUpdates(config *utils.DbConfig) (*utils.Fanout, error) { f := utils.NewFanout() l := pq.NewListener("user=smotri-api dbname=smotri", 50*time.Millisecond, 10*time.Second) err := l.Listen("data_updates") err = l.Ping() go func() { pingTicker := time.Tick(15 * time.Second) for { var n *pq.Notification select { case t := <-pingTicker: un := t.UnixNano() logger.Printf("data_updates: ping %d", un) f.Publish(un) continue case n = <-l.Notify: if n == nil { logger.Printf("data_updates: reconnected") continue } } ... f.Publish(str) } } return f, nil } 12
  • 13. Golang: Β Fan-­‐out 13ΠœΠΈΡ…Π°ΠΈΠ»  Балосин. Β  ИспользованиС Β Go Π²  бэкСндС прилоТСния Β  Π‘ΠΌΠΎΡ‚Ρ€ΠΈ+
  • 14. Golang: Β Fan-­‐out 14 type Fanout struct { m sync.Mutex s map[chan<- interface{}]struct{} c bool } func NewFanout() *Fanout { return &Fanout{s: make(map[chan<- interface{}]struct{})} } func (f *Fanout) Connected() { f.m.Lock() f.c = true f.m.Unlock() } func (f *Fanout) Disconnected() { f.m.Lock() f.c = false for c := range f.s { delete(f.s, c) close(c) } f.m.Unlock() }
  • 15. Golang: Β Fan-­‐out 15 func (f *Fanout) Subscribe(c chan<- interface{}) { f.m.Lock() defer f.m.Unlock() if !f.c { panic(errors.New("fanout: not connected")) } f.s[c] = struct{}{} } func (f *Fanout) Unsubscribe(c chan<- interface{}) { f.m.Lock() _, ok := f.s[c] if ok { delete(f.s, c) close(c) } f.m.Unlock() } func (f *Fanout) Publish(v interface{}) { f.m.Lock() for c := range f.s { select { case c <- v: default: delete(f.s, c) close(c) } } f.m.Unlock() }
  • 16. Π˜Π½Ρ„Ρ€Π°ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° 16ΠœΠΈΡ…Π°ΠΈΠ»  Балосин. Β  ИспользованиС Β Go Π²  бэкСндС прилоТСния Β  Π‘ΠΌΠΎΡ‚Ρ€ΠΈ+
  • 17. ΠŸΠ»ΡŽΡΡ‹ Β Go β€’ Rich Β http Β library β€’ ΠšΠ°Π½Π°Π»Ρ‹ β€’ Race Β detector β€’ Минимализм Β ΠΈ  простота 17ΠœΠΈΡ…Π°ΠΈΠ»  Балосин. Β  ИспользованиС Β Go Π²  бэкСндС прилоТСния Β  Π‘ΠΌΠΎΡ‚Ρ€ΠΈ+
  • 18. ΠœΠΈΠ½ΡƒΡΡ‹ Β Go β€’ if Β err Β != Β nil 18ΠœΠΈΡ…Π°ΠΈΠ»  Балосин. Β  ИспользованиС Β Go Π²  бэкСндС прилоТСния Β  Π‘ΠΌΠΎΡ‚Ρ€ΠΈ+