Записки программиста, обо всем и ни о чем. Но, наверное, больше профессионального.

2012-05-17

Краткость — сестра

Когда я прочел этот пост, я восхитился уровнем сжатия информации. Сколько всего понаписано про REST, на форумах кипят страсти, книги пишут. А достаточно знать всего-то:

  1. (Самое главное) При проектировании структуры URL’ов вложить в нее максимальное количество смысла, представляя это как некий язык запросов к вашим данным, читаемый и понимаемый человеком. Например, вместо http://domain/engine.php?func=123&id=test для получения данных о пользователе, должно быть http://domain/users/test.
  2. Максимально полно использовать стандартные команды и коды ответов HTTP. Не только GET и POST, но и, например, PUT, DELETE, OPTION, HEAD, и не только коды ответа 200 и 500, а множество других.
  3. При проектировании HTTP-ответов следует добавлять в ответ информацию о возможных переходах из текущего состояния сессии в другие состояния.


И эта информация покрывает суть темы процентов на 80, если не на все 90% (не упомянут stateless). Ч0тко.
Приблизительно как и со Scrum, где тоже достаточно знать не слишком много всякого, чтобы начать применять методологию. Почитали про Sprint, Backlog, ProductOwner и вперед, покорять вершины.


А вот еще пример резкого сокращения. Сокращаем трудозатраты на написание TCP/IP серверов

А именно – мы поговорим об некоторых способах создания прикладных TCP/IP серверов, крайне редко, к сожалению, используемых в прикладном программировании, которые почти не требуют написания программного кода. С чего начинает программист, когда перед ним ставится задача написания TCP/IP сервера, особенно если это клиент-серверное TCP/IP приложение для него – хронологически первое в его биографии? C судорожной проработки техники написания IP коммуникаций, сравнения механизмов BSD socket с механизмами TLI SRV4 и т. д. Далее: многие часы бдения над инициализацией socket, установлением соединения … и отладка, отладка, отладка. С учётом того обстоятельства, что отладка сетевых приложений на порядок сложнее локальных, даже при самом смелом использовании таких механизмов как BPF (Berkley Packet Filter) и сетевых сниферов, таких как tcpdump или wireshark. Не случайно, один из самых известных программистских анекдотов объясняет фразу «программировать TCP/IP» как , в более понятной форма, «писать музыку для борделя».
...
Давайте напишем такую простую (проще уже не бывает) программу (исходный файл mycopy.cc, исполнимый - mycopy):
#include "common.cc.h" 
#include "common.c.h" 

int main( void ) { 
   char buf[ 80 ]; 
   // установить построчный режим ввода, но и это не обязательно… 
   setvbuf( stdout, NULL, _IOLBF, 0 ); // или setlinebuf( stdout ); 
   while( true ) { 
      cin >> buf; 
      cout << buf << endl; 
   }
   return EXIT_SUCCESS; 
}
Что это? Это - полнофункциональный TCP/IP сетевой эхо-сервер! Не верите?


Как говорится, не верите — проверьте.

Комментариев нет:

Отправить комментарий

Архив блога

Ярлыки

linux (241) python (191) citation (186) web-develop (170) gov.ru (159) video (124) бытовуха (115) sysadm (100) GIS (97) Zope(Plone) (88) бурчалки (84) Book (83) programming (82) грабли (77) Fun (76) development (73) windsurfing (72) Microsoft (64) hiload (62) internet provider (57) opensource (57) security (57) опыт (55) movie (52) Wisdom (51) ML (47) driving (45) hardware (45) language (45) money (42) JS (41) curse (40) bigdata (39) DBMS (38) ArcGIS (34) history (31) PDA (30) howto (30) holyday (29) Google (27) Oracle (27) tourism (27) virtbox (27) health (26) vacation (24) AI (23) Autodesk (23) SQL (23) Java (22) humor (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) Apache (16) Manager (15) web-browser (15) Никонов (15) functional programming (14) happiness (14) music (14) todo (14) Klaipeda (13) PHP (13) course (13) scala (13) weapon (13) HTTP. Apache (12) SSH (12) frameworks (12) hero (12) im (12) settings (12) HTML (11) SciTE (11) USA (11) crypto (11) game (11) map (11) HTTPD (9) ODF (9) Photo (9) купи/продай (9) benchmark (8) documentation (8) 3D (7) CS (7) DNS (7) NoSQL (7) cloud (7) django (7) gun (7) matroska (7) telephony (7) Microsoft Office (6) VCS (6) bluetooth (6) pidgin (6) proxy (6) Donald Knuth (5) ETL (5) NVIDIA (5) Palanga (5) REST (5) bash (5) flash (5) keyboard (5) price (5) samba (5) CGI (4) LISP (4) RoR (4) cache (4) car (4) display (4) holywar (4) nginx (4) pistol (4) spark (4) xml (4) Лебедев (4) IDE (3) IE8 (3) J2EE (3) NTFS (3) RDP (3) holiday (3) mount (3) Гоблин (3) кухня (3) урюк (3) AMQP (2) ERP (2) IE7 (2) NAS (2) Naudoc (2) PDF (2) address (2) air (2) british (2) coffee (2) fitness (2) font (2) ftp (2) fuckup (2) messaging (2) notify (2) sharepoint (2) ssl/tls (2) stardict (2) tests (2) tunnel (2) udev (2) APT (1) CRUD (1) Canyonlands (1) Cyprus (1) DVDShrink (1) Jabber (1) K9Copy (1) Matlab (1) Portugal (1) VBA (1) WD My Book (1) autoit (1) bike (1) cannabis (1) chat (1) concurrent (1) dbf (1) ext4 (1) idioten (1) join (1) krusader (1) license (1) life (1) migration (1) mindmap (1) navitel (1) pneumatic weapon (1) quiz (1) regexp (1) robot (1) science (1) serialization (1) spatial (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)