<?php
// index.php
try {
$app = new \Framework\App();
$app->run();
} catch (\Framework\AccessException) {
$status = 403;
$message = 'Forbidden';
} catch (\Framework\ValidationException) {
$status = 400;
$message = 'Bad request';
} catch (\Exception $e) {
$status = 500;
$message = 'Internal server error';
}
{
"link_type":"LINKTYPE_ETHERNET",
"link":{
"dhost":"...",
"shost":"...",
"ethertype":2048,
"ip":{
"version":4,
"header_length":5,
"header_bytes":20,
"diffserv":0,
"total_length":58,
"identification":13447,
"flags":{"reserved":0,"df":1,"mf":0},
"fragment_offset":0,
"ttl":113,
"protocol":6,
"header_checksum":22392,
"saddr":"...",
"daddr":"...",
"protocol_name":"TCP",
"tcp":{
"sport":8088,
"dport":59906,
"seqno":1455344501,
"ackno":1469993398,
"data_offset":66,
"header_bytes":32,
"reserved":0,
"flags":{"cwr":0,"ece":0,"urg":0,"ack":1,"psh":1,"rst":0,"syn":0,"fin":0},
"window_size":258,
"checksum":36646,
"urgent_pointer":0,
"options":{"timestamp":340036816,"echo":667434095},
"data_end":72,
"data_bytes":6,
"data":[...]
}
}
},
"pcap_header":{"tv_sec":1381693846,"tv_usec":835169,"caplen":72,"len":72,"link_type":"LINKTYPE_ETHERNET","time_ms":1381693846835.169}
}
{
"link_type":"LINKTYPE_ETHERNET",
"link":{
"dhost":"...",
"shost":"...",
"ethertype":2048,
"ip":{
"version":4,
"header_length":5,
"header_bytes":20,
"diffserv":0,
"total_length":1492,
"identification":13446,
"flags":{"reserved":0,"df":1,"mf":0},
"fragment_offset":0,
"ttl":113,
"protocol":6,
"header_checksum":20959,
"saddr":"...",
"daddr":"...",
"protocol_name":"TCP",
"tcp":{
"sport":8088,
"dport":59906,
"seqno":1455343061,
"ackno":1469993398,
"data_offset":66,
"header_bytes":32,
"reserved":0,
"flags":{"cwr":0,"ece":0,"urg":0,"ack":1,"psh":0,"rst":0,"syn":0,"fin":0},
"window_size":258,
"checksum":59362,
"urgent_pointer":0,
"options":{"timestamp":340036816,"echo":667434095},
"data_end":1506,
"data_bytes":1440,
"data":[...]
}
}
},
"pcap_header":{"tv_sec":1381693846,"tv_usec":835771,"caplen":1506,"len":1506,"link_type":"LINKTYPE_ETHERNET","time_ms":1381693846835.771}
}
Например, часто ли можно встретить спецификации внутреннего апи, тесты (хоть какого-то рода) и т.п.
Как следствие, в большинстве случаев работа в студии подразумевает под собой генерацию говнокода, лишь бы быстрее.
При работе над проектом долгое время (как бы это смешно не звучало в контексте стартапов) подход совершенно другой. И я не про перфекционизм, а про здравый смысл.