Pull to refresh
42
0
Виктор @vtk

User

Send message
Спасибо за статью! Использую ваш код как отправную точку для своего эксперимента. Смутила вот эта строчка:

lines[ 0 ] = lines[ 0 ] + lastTcpLine;

вроде должно быть наоборот:

lines[ 0 ] = lastTcpLine + lines[ 0 ];

Так же ни в одной строчке не будет \n после split('\n'), так что можно не проверять:

if( lines[ lastTcpLineNum ].indexOf('\n') == -1 )

В итоге пришел к такому варианту (как раз последняя строка в массиве будет пустой, если весь кусок данных оканчивается \n):


let lastTcpLine = '';
tcpdump.stdout.on('data', data=>{
    let lines = `${lastTcpLine}${data}`.split('\n');
    lastTcpLine = lines.pop();
    lines.map(line=>console.log(line));
});

Еще заметил, что такой spawn копит данные по 4-8Кб, что мне не подходит, потому что я хочу сразу увидеть пакет. поэтому переписал spawn по примеру stackoverflow.com/a/27360991/1276731 на:

spawn('stdbuf', ['-oL', '-eL', 'tcpdump', '-n'])

Еще Homestead довольно простая и удобная штука.
На волне путаницы трассировки и профилирования, решил поближе присмотреться к профилированию. Насколько я понял его формат, там собрана только статистическая информация, грубо говоря сколько раз одна функция вызывала другую. Бесспорно, это полезно для профилирования кода в котором вы уже разбираетесь. Но Profiler Snapshot не позволяет отследить стек конкретного вызова функции.

Грепнуть трейс легко. Можно даже список файлов вытащить :)

cat abc.xt | sed -r 's~^.*/path/to/host(.*):.*$~\1~' | sort | uniq -c

Сложнее перейти к предыдущему/следующему вызову, особенно когда нужно относительно далеко забраться от найденного вызова.
Спасибо за ссылку! Но, как я понял после беглого просмотра, там речь про лог профилирования, а не трассировки.
Возможно я не вижу чего-то очевидного, или какой-нить кнопки в PHPStorm, но как эти два инстумента связанны с Execution trace?
извиняюсь, не туда написал.
а Simple Made Easy есть где-то в виде текста/субтитров? на infoq.com то ли нету, то ли мне не по глазам. в google тоже не густо.
Тоже сначала так показалось. Но фишка в том, что оно из callback-ов ловит исключения. Я правда по исходнику так и не понял каким образом они ловятся. А вообще, почему в таком коде pastebin.com/cix7GvjF, 'free exception' попадает то в один domain, то в другой, то вообще в uncachedException вываливается? Это же полный атас. Вы уж простите, но проще Erlang выучить.
Я правильно понимаю что только в Erlang реализована вытесняющая многозадачность для процессов виртуальной машины? Во всех остальных реализациях модели акторов (например в akka) вы не можете просто так взять и выполнить блокирующую операцию.
А виджеты как-то можно делать в ChicagoBoss? Типа список последних новостей/продуктов в боковой колонке. То что находится в /src/view/lib как я понял позволяет либо только шаблон подключить своим тегом, либо только функцию. А так чтобы это было похоже на контроллер который сам получит данные и отдаст их в шаблон?
ну да, но ведь в javascript вроде как все объекты — хеш-таблицы, в том числе Array. и for(var i in ) хорошо справляется с любыми индексами, почему бы forEach() не работать так же? Тем более forEach в Опере с этим справляется.

Хотя если подумать, там где я использую Array, как разреженный массив, можно просто использовать Object. Но тогда из вариантов обхода у меня остается только вариант с for(var i in ).
forEach() в первой версии использовался и на сервере и на клиенте. браузеры тоже сильно тормозили тогда. поэтому forEach() -> for(var i in ...) — это оказалась и серверная и клиентская оптимизация. так как node.js и chrome используют один js движок, то тесты в chrome так же относятся к node.js. Хотя судя по словам donnerjack13589 — это может быть просто бага и в будущем будет лучше вернуть все на forEach().
как только доберусь до этого, сделаю чтобы можно было менять команду, пока игра не началась.
Согласен по всем пунктам. Но сам я далек от дизайна. И realtime приложения совсем не мой конек. Вот втягиваюсь, так сказать. Думаю со временем все будет посимпатичнее.
согласен, ужас. я пока не знаю, как передавать бинарные данные через socket.io.
спасибо за подсказку. тогда да, лучше проверять на undefined. исправлю.
несколько человек говорили об этом в чате. скажите какой у вас браузер и ось? может получится изловить багу.
в планах, к сожалению времени мало на танчики.
а вы хоть видели как я проверяю наличие WebSocket?
смотрите как это тупо — code.google.com/p/battle-city-js/source/browse/src/client.js#84 :)
1

Information

Rating
Does not participate
Location
Барнаул, Алтайский край, Россия
Date of birth
Registered
Activity