
Danil
17.06.2016
13:49:31
лул

Paul
17.06.2016
13:49:38

Danil
17.06.2016
13:49:48
свежее просто ещё

Kate
17.06.2016
13:49:51

Google

Roman
17.06.2016
13:49:53

Danil
17.06.2016
13:50:09

Cykooz
17.06.2016
13:50:35
@freesex Попробуй задачу перевести в "физический" план, что бы понятнее было как надо действовать. Например так: "есть корзина с разными грибами, надо узнать сколько грибов каждого типа". Вот как бы ты стала это делать сидя рядом с этой корзинкой?

Roman
17.06.2016
13:50:39
без пруфов?
ты хочешь от неё пруфов? )) отзывы клиентов?

Alexey
17.06.2016
13:50:58

Roman
17.06.2016
13:51:00

Danil
17.06.2016
13:51:01

Alexey
17.06.2016
13:51:07
ну и аптайм конечно же.

Vladimir
17.06.2016
13:51:13
Норм тусовка

Danil
17.06.2016
13:51:14
пробег!

Roman
17.06.2016
13:51:15
http://www.slideshare.net/profyclub_ru/postgresql-nginx-c2h5oh-cinemood

Cykooz
17.06.2016
13:51:26
плохой пример.
Если человек вообще не представляет с какой стороны подойти к задаче - это отличный пример

Roman
17.06.2016
13:51:27
вот вам для разрядки ))

Google

Alexey
17.06.2016
13:51:30

Kate
17.06.2016
13:51:31

Roman
17.06.2016
13:51:42
http://pgday.ru/ru/2016/papers/74
вот от того же докладчика ))

Danil
17.06.2016
13:51:53
а чо тут как обычно веб-программистов большинство?

Alexey
17.06.2016
13:51:55
"от авторов" — мудацкая калька с английского и французского.
летайте самолётами аэрофлот от туполева

Roman
17.06.2016
13:52:13

Cykooz
17.06.2016
13:52:21

dmks
17.06.2016
13:52:36
Веганов,тут,кстати, тоже нет

Danil
17.06.2016
13:52:44
(на самом деле нет)

Denis
17.06.2016
13:52:48
Я полувеб

Alexey
17.06.2016
13:52:49
вегетарианец есть. но он, жопа, читер и пьёт молоко.

Danil
17.06.2016
13:52:53
но не смог сдержаться

Eugene
17.06.2016
13:53:01

Danil
17.06.2016
13:53:04
на полшишечки?

Denis
17.06.2016
13:53:13
Это full stack

Danil
17.06.2016
13:53:16
или веб только понечётным дням?

Google

Eugene
17.06.2016
13:53:17
как будто нам чуждо общаться на какие-либо другие темы

Denis
17.06.2016
13:53:17
Любитель

Danil
17.06.2016
13:53:30
фуллстеки это те люди, которые не знают в какую сторону на x86 стек растёт, да?

Denis
17.06.2016
13:53:53
Если пишешь что-то один, других вариантов нет

Danil
17.06.2016
13:53:55
(не то что бы питон программисту это надо было)

Denis
17.06.2016
13:54:00
А стек вниз растет

Roman
17.06.2016
13:54:12

Cykooz
17.06.2016
13:56:04
А стек вниз растет
Т.к. стек обычно находится в оперативе, то осталось узнать как расположены планки памяти в компе, дабы понять куда же относительно пола растёт стек - вверх, вниз или вдоль

Denis
17.06.2016
13:56:56

Roman
17.06.2016
13:57:00
@kalaverin кстати, хочешь тру-стори? ))

Alexey
17.06.2016
13:57:07
давай конешно :)

Aragaer
17.06.2016
13:57:49
main(int c,char**a){char*b=a[1];*a=b;while(*b++)**a-*b&&(printf("%c%d",**a,b-*a),*a=b);}

Danil
17.06.2016
13:58:04

Aragaer
17.06.2016
13:58:05
и можно еще усилить градус невпупенности, понизив портабельность
ну еще один разочек

Alexey
17.06.2016
13:58:20
портативность.

Aragaer
17.06.2016
13:59:02
main(char*b,char**a){*a=b=a[1];while(*b++)**a-*b&&(printf("%c%d",**a,b-*a),*a=b);}
./dna aaaabbbccd
a4b3c2d1

Vadim
17.06.2016
13:59:48

Google

Alexey
17.06.2016
14:00:27
https://new.vk.com/feed?w=wall-90767168_50237
Ну всё, пиздец, полетело по сообществам контактика.

Aragaer
17.06.2016
14:01:05
хм... можно еще 1 байтик сэкономить - сделать for и первое присваивание засунуть внутрь

Denis
17.06.2016
14:02:08
Вообще-то в таких задачах ввод на stdin подается

Admin
ERROR: S client not available

Aragaer
17.06.2016
14:02:23
я обычно в кодгольфе аргументы читаю
но суть та же, да

Roman
17.06.2016
14:03:44
давай конешно :)
вообщем, есть же прекрасный splice(2), который как в мане и написано "moves data between two file descriptors without copying between kernel address space and user address space" и "Though we talk of copying, actual copies are generally avoided".
т.е. оно на самом деле вместо копирования играется с указателями в памяти ядра и использует память pipe(2) как буфер в памяти ядра, которым приложение может управлять.
решил я сделать красивую обертку над этим в виде класса, подсчитывать сколько байтиков в пайпе осталось, сколько занято итп. и столкнулся с дивным поведением: места ещё дофига(пайп по дефолту 64кб), а мне уже прилетает EAGAIN при попытке писать в пайп.
стал экспериментировать и вот что обнаружил: делаем пайп размером в 8кб и сплайсим в пайп всего по 1 байту. и уже на 3й раз прилетает EAGAIN, хотя записали мы всего 2 байта.

Aragaer
17.06.2016
14:05:32
а с другой стороны кто-то читает?

Roman
17.06.2016
14:05:34
для 16кб можно уже 4 раза сделать splice(2) с 1 байтом, для 64кб - 16.

dmks
17.06.2016
14:05:47

Aragaer
17.06.2016
14:05:47
имеет

Roman
17.06.2016
14:06:05
имеет
с другой стороны если сделать read(2) - прочитаешь 1 байт.

Alexey
17.06.2016
14:06:21
я, кстати, чот такое видел года два назад, поплевались и закостылили чем-то.

Roman
17.06.2016
14:06:26
тут поинт в том, что у тебя в пайпе место ещё есть

Aragaer
17.06.2016
14:06:40
ващет poll чтобы понять, что пайп доступен для записи

Roman
17.06.2016
14:06:41
а разгадка простая: ядро оперирует страницами :)

Aragaer
17.06.2016
14:07:16
и запись в пайп любого размера сжирает целую страницу? ок

Google

Roman
17.06.2016
14:07:18
т.е. всё округляется до PAGESIZE :)

dmks
17.06.2016
14:08:00

Aragaer
17.06.2016
14:08:16
ну смысл сплайса в том, чтобы перенести из одного дескриптора в другой, но ничего никуда не копировать
он вообще ничего ниоткуда не читает и ничего никуда не пишут

Roman
17.06.2016
14:08:51

Aragaer
17.06.2016
14:08:55
он берет страницу, в которой живет байт, после чего меняет маппинги и говорит "ну все, теперь эта страница в другом файле, как вы и хотели

Roman
17.06.2016
14:09:04
а по факту надо думать в терминологии страничек

Aragaer
17.06.2016
14:09:49
Though we talk of copying, actual copies are generally avoided. The kernel does this by implementing a pipe buffer as a set of reference-counted pointers to pages of kernel memory. The kernel creates "copies" of pages in a buffer by creating new pointers (for the output buffer) referring to the
pages, and increasing the reference counts for the pages: only pointers are copied, not the pages of the buffer.

Roman
17.06.2016
14:10:06
кстати, можно парой splice + mmap сделать забавный вариант zero-copy
вообщем, делал я тут простенькие сообщения поверх tcp с фреймингом в виде длины в префиксе.
так вот, можно создать файл в tmpfs, открыть его с O_DIRECT и mmap'нуть на чтение, а в сам файл писать через splice.