@proGO

Страница 218 из 1674
Daniel
16.09.2016
08:50:05
И?

Vladislav
16.09.2016
08:50:40
но читабельность кода остается на уровне функция(переменная).метод()

а хотелось бы простоту из серии переменная.метод() для стандартных типов данных

Andrew
16.09.2016
08:51:22
а почему просто функцию не сделать?

Google
Vladislav
16.09.2016
08:52:42
ну потому что функционал как минимум - это работа с определенным типом данных

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

Daniel
16.09.2016
08:55:32
Типа того. Но оптимизатор это оптимизирует

Vladislav
16.09.2016
08:56:29
это понятно, просто не логично, чтобы мне сделать метод для стандартного типа, приходиться делать кастыль ввиде промежуточного типа

Roman
16.09.2016
08:56:34
Херня это, а не подход
Почему? Я так делаю и все збс

Phil
16.09.2016
08:59:09
Херня это, а не подход
сам питон так делает

Daniel
16.09.2016
08:59:14
это понятно, просто не логично, чтобы мне сделать метод для стандартного типа, приходиться делать кастыль ввиде промежуточного типа
А как бы иначе компайлер интерфейсы выводил? Сканировал дерево сорцов целиком каждый раз?

Roman
16.09.2016
08:59:31
ну в питоне они ts только потому что gil
Имхо, треды не нужны. Вообще, для сетевых задач лучше процессы + ipc + возможность сериализовать контекст.

Daniel
16.09.2016
09:01:40
Чем лучше? Больше пространства для ошибок?

Roman
16.09.2016
09:02:39
Чем лучше? Больше пространства для ошибок?
Больше возможностей для изоляции.

Плюс, нет вот этой боли с setuid :)

Daniel
16.09.2016
09:03:30
Почему? Я так делаю и все збс
Ты еще и не так делаешь. Но это - переусложнение системы с неясными целями

Roman
16.09.2016
09:04:54
Ты еще и не так делаешь. Но это - переусложнение системы с неясными целями
Ну смотри: у тебя процесс падает на каком-нибудь запросе.

Google
Daniel
16.09.2016
09:05:16
Пока не падал

Roman
16.09.2016
09:06:39
Ну это пока :)

Daniel
16.09.2016
09:08:01
Ну - лет 15 уже ни разу ни в яве, ни в гошечке. Думаю - и не упадет уже

Anton
16.09.2016
09:10:41
Ну - лет 15 уже ни разу ни в яве, ни в гошечке. Думаю - и не упадет уже
Подскажи, а на чем тебе удобнее (нравится) писать больше?

Daniel
16.09.2016
09:11:27
На перле :)

Но он умер

Из явы и го - на го

Anton
16.09.2016
09:14:00
Roman
16.09.2016
09:14:12
Смотри: у меня процесс слушает сокет и делает accept(). Еще он слушает unix-сокет к которому подключены воркеры. Когда приходит клиент после accept() я отдаю fd воркеру. Если неуспех, то пробую другой воркер.

Daniel
16.09.2016
09:15:13
Да

Roman
16.09.2016
09:15:15
В такой схеме воркер может быть написан на чем угодно(как и мастер), воркеров легко шатдаунить

Daniel
16.09.2016
09:15:22
Да

Roman
16.09.2016
09:16:05
И балансить между воркерами можно по своему алгоритму

Daniel
16.09.2016
09:16:12
Да

В чем поинт?

А у меня вот в памяти кеш базы на 20 гигов. И мне актуально его пошарить между воркерами

Daniel
16.09.2016
09:18:05
Ну или треды

Roman
16.09.2016
09:19:02
В чем поинт?
Не потерять ни одного запроса. Никаких прокси/балансеров(по крайней мере на уровне приложения)

Опять, же разные куски могут быть на разных языках.

Google
Daniel
16.09.2016
09:20:13
Айн райх, айн фольк, айн фюрер

Roman
16.09.2016
09:20:43
Ну или треды
Плохой вариант. С shm ты можешь еще и персистентность :)

Subbotin
16.09.2016
09:20:46
и этот фюрер - си.

Daniel
16.09.2016
09:21:27
Персистентность у меня в базе

Daniel
16.09.2016
09:22:20
и этот фюрер - си.
Поди напиши то, что мы пишем, на С :(

Плюшка
16.09.2016
09:23:16
Поди напиши то, что мы пишем, на С :(
на си можно все написать

Subbotin
16.09.2016
09:23:20
да все можно написать на си. говно вопрос. вопрос трудозатрат на разработку нужных функций.

Roman
16.09.2016
09:23:50
Zver
16.09.2016
09:28:25
Каждый воркер в отдельном процессе слишком накладно для системы. Больше ресурсов отьедается, временные расходы на взаимодействие между воркерами.

Daniel
16.09.2016
09:32:41
Форк тут ничего не меняет

Roman
16.09.2016
09:32:48
Сисколл - где-то 38 нс

Форк тут ничего не меняет
Почему? Память шарится

Daniel
16.09.2016
09:34:40
Да сколько той памяти, что шарится?.. слезы

Zver
16.09.2016
09:34:51
Почему? Память шарится
А есть которая не шарится.

Zver
16.09.2016
09:46:25
Это если пару процессов, то спички, а если сотни? Шарятся только исполнимый код, да и так по мелочи, а все остальное изолируется. Банально переключение процессов кучу времени отъедает. В одном приложении тот же кеш или другие общие данные можно держать в диком количестве, к которым будет быстрый доступ, и не нужно будет межпроцессного взаимодействия, на которое требуется заметно большее время. Если с теми же воркерами в процессах система начнет задыхаться с несколькими сотнями, то с зелеными потоками там тысячи, а то и миллионы(где-то попадалась такая инфа).

Google
Roman
16.09.2016
09:59:12
Running test 'malloc' with 32 tasks Threads 0.15 +/- 0.02 seconds Processes 0.15 +/- 0.01 seconds

Running test 'readwrite' with 32 tasks Threads 0.13 +/- 0.01 seconds Processes 0.11 +/- 0.01 seconds

Oleh
16.09.2016
09:59:37
на каком языке тестил?

Roman
16.09.2016
09:59:42
Running test 'fstat' with 32 tasks Threads 0.57 +/- 0.01 seconds Processes 0.51 +/- 0.01 seconds

https://www.samba.org/~tridge/talks/threads.pdf

Zver
16.09.2016
10:01:21
Roman
16.09.2016
10:02:57
Ну в том же самом апаче сотни или десятки обычно.
и? в nginx их относительно немного ))

Admin
ERROR: S client not available

Zver
16.09.2016
10:23:45
В мапе нативно хранить данные все равно не выйдет и придется их засовывать и извлекать.

Oleh
16.09.2016
10:31:18
то как другие видят)

Roman
16.09.2016
10:34:04
Тут ничего сложного. Стивенс, "взаимодействие процессов"

Vladislav
16.09.2016
10:39:03
а как можно мэпы со структурой использовать, может кто мини пример привести?

Zver
16.09.2016
10:39:15
Тут ничего сложного. Стивенс, "взаимодействие процессов"
Но все равно приятней данные просто в канал в ГО затолкать, чем чем опосредованно.

Vladislav
16.09.2016
10:39:23
я хочу по ключу string записывать два int значения

type Letters struct { Count int Rank int } var letter map[string]*Letters

пытаюсь вот так, но почему-то не взлетает...

Google
Zver
16.09.2016
10:40:38
Должно.

Vladislav
16.09.2016
10:40:55
panic: runtime error: invalid memory address or nil pointer dereference

и да, я пытаюсь в функции это вернуть

Мерлин
16.09.2016
10:41:19
panic: runtime error: invalid memory address or nil pointer dereference
ЧТД А кто объект создавать будет? Пушкин?

Zver
16.09.2016
10:41:27
Для маленьких структур не обязательно по ссылке.

Oleh
16.09.2016
10:41:43
через & ссылку создаешь?

Vladislav
16.09.2016
10:42:06
ЧТД А кто объект создавать будет? Пушкин?
эммм, не совсем понял, про какой объект идет речь

Zver
16.09.2016
10:42:26
Код в студию.

Создания мапа и заполнения.

Мерлин
16.09.2016
10:42:47
эммм, не совсем понял, про какой объект идет речь
Покажи код Вот ты добавляешь новые данные Как?

Vladislav
16.09.2016
10:43:05
func countlet(st string) map[string]*Letters { let := make(map[string]*Letters) for _, v := range st { //let[strings.ToLower(string(v))] = int(v) if (int(v) <= 1103 && int(v) >= 1072) || int(v) == 1105 { let[strings.ToLower(string(v))].Count = let[strings.ToLower(string(v))].Count + 1 } } return let }

Zver
16.09.2016
10:43:59
Это что за трешь?

Vladislav
16.09.2016
10:44:33
пытаюсь посчитать количество каждой буквы в строке

Мерлин
16.09.2016
10:44:44
У тебя для начала типы не совпадают

let[strings.ToLower(string(v))] = int(v)

Zver
16.09.2016
10:46:30
let[something] = &Leter{1,2}

Vladislav
16.09.2016
10:46:32
let[strings.ToLower(string(v))] = int(v)
это строчка в каменте

let[something] = &Leter{1,2}
я должен сразу оба значения заполнять?

Мерлин
16.09.2016
10:47:08
Daniel
16.09.2016
10:47:11
и? в nginx их относительно немного ))
это потому, что он ничего не делает

Мерлин
16.09.2016
10:48:20
я должен сразу оба значения заполнять?
У тебя значение указателя по умолчанию nil Ты сначала должен создать структуру, взять указатель на неё и положить в мапу А лучше использовать не мапу указателей здесь, а мапу структур

Страница 218 из 1674