Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π˜ΡΠΊΡƒΡΡΡ‚Π²ΠΎ программирования для UnixΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 96

Автор Π Π΅ΠΉΠΌΠΎΠ½Π΄ Π­Ρ€ΠΈΠΊ Π‘Ρ‚ΠΈΠ²Π΅Π½

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, слСдуСт ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ подходят для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ интСрфСйсов. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, ΠΈΠΌΠ΅ΡŽΡ‰Π°Ρ интСрфСйс, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ интСрфСйсу компилятора, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€, Ссли Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ (ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€Ρ‹ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ²).

11.6.1. МодСль Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°

МодСлью проСктирования интСрфСйсов, которая Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ связываСтся с ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой Unix, являСтся Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ (filter). ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°-Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° стандартном Π²Π²ΠΎΠ΄Π΅, трансформируСт ΠΈΡ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, послС Ρ‡Π΅Π³ΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния), ΠΈ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, Π½ΠΎ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ связи ΠΈΠ»ΠΈ Π²Π²ΠΎΠ΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄ Π²ΠΎ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ.

Двумя классичСскими ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ tr(1) ΠΈ grep( 1). ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° tr(1) прСдставляСт собой ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ, которая ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° стандартном Π²Π²ΠΎΠ΄Π΅ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π½Π° стандартном Π²Ρ‹Π²ΠΎΠ΄Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ прСобразования, Π·Π°Π΄Π°Π½Π½ΡƒΡŽ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° grep(1) Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΈΠ· ΠΏΠΎΡ‚ΠΎΠΊΠ° стандартного Π²Π²ΠΎΠ΄Π° строки, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΎΡ‚Π±ΠΎΡ€Π° строки ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ Π½Π° стандартный Π²Ρ‹Π²ΠΎΠ΄. Π’Ρ€Π΅Ρ‚ΡŒΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°-Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ β€” ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° sort( 1), которая сортируСт входящиС строки согласно критСриям, Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС, ΠΈ отправляСт отсортированный Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² ΠΏΠΎΡ‚ΠΎΠΊ стандартного Π²Ρ‹Π²ΠΎΠ΄Π°.

ОбС ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ grep(1) ΠΈ sort(1) (Π½ΠΎ Π½Π΅ tr( 1)) способны Π² качСствС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° (ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²), ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ стандартный Π²Π²ΠΎΠ΄, Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΡŽΡ‚ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ ΠΏΠΎΡ‚ΠΎΠΊ Π²Π²ΠΎΠ΄Π° прСдставлял собой соСдинСниС содСрТимого Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² Π² порядкС слСдования ΠΈΡ… ΠΈΠΌΠ΅Π½ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС. (Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Ρ‚Π°ΠΊΠΆΠ΅ оТидаСтся, Ρ‡Ρ‚ΠΎ Π²Π²ΠΎΠ΄ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС символа "-" Π² качСствС ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° Π²Ρ‹Π½ΡƒΠΆΠ΄Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ со стандартного Π²Π²ΠΎΠ΄Π°.) ΠŸΡ€ΠΎΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Ρ‚Π°ΠΊΠΈΡ… "cat-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ…" Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² являСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° cat(1), ΠΏΡ€ΠΈΡ‡Π΅ΠΌ прСдполагаСтся, Ρ‡Ρ‚ΠΎ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΡŽΡ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ, Ссли Π½Π΅ сущСствуСт спСцифичСских для прилоТСния ΠΏΡ€ΠΈΡ‡ΠΈΠ½ ΠΈΠ½Π°Ρ‡Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹, Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС.

ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ нСсколько Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€Π°Π²ΠΈΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ частично сформулированы Π² Π³Π»Π°Π²Π΅ 1.

1. ΠŸΠΎΠΌΠ½ΠΈΡ‚ΡŒ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΡŽ ΠŸΠΎΡΡ‚Π΅Π»Π°: Π±Ρ‹Ρ‚ΡŒ ΡΠ½ΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΊ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌΡ‹ΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈ строгим ΠΊ отправляСмым Π΄Π°Π½Π½Ρ‹ΠΌ. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ свободныС ΠΈ Π½Π΅ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹, насколько это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈ Π²Ρ‹ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ насколько Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ структурированный ΠΈ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΉ исходящий Ρ„ΠΎΡ€ΠΌΠ°Ρ‚. БоблюдСниС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ условия сокращаСт Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€ΡƒΠΏΠΊΠΈΠΌ Π² ситуации Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠ³ΠΎ примСнСния ΠΈ сломаСтся Π² Ρ‡ΡƒΠΆΠΈΡ… Ρ€ΡƒΠΊΠ°Ρ… (ΠΈΠ»ΠΈ Π² Ρ†Π΅Π½Ρ‚Ρ€Π΅ Ρ‡ΡƒΠΆΠΎΠΉ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ связки). БоблюдСниС Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ условия ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π² качСствС Π²Π²ΠΎΠ΄Π° для Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

2. Π’ Ρ…ΠΎΠ΄Π΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ слСдуСт ΠΎΡ‚Π±Ρ€Π°ΡΡ‹Π²Π°Ρ‚ΡŒ Π½Π΅Π½ΡƒΠΆΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π² качСствС Π²Π²ΠΎΠ΄Π° для Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. ΠžΡ‚Π±Ρ€ΠΎΡˆΠ΅Π½Π½Π°Ρ информация β€” информация, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π΅ смоТСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… этапов ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π°.

3. ΠŸΡ€ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ Π½Π΅ слСдуСт Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ излишнюю ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ. НСобходимо ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ добавлСния нСсущСствСнной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈ пСрСформатирования, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡΠ»ΠΎΠΆΠ½ΠΈΡ‚ΡŒ Π°Π½Π°Π»ΠΈΠ· ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…. НаиболСС распространСнными ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ Ρ‚Π°ΠΊΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠ΅ космСтичСскиС добавлСния, ΠΊΠ°ΠΊ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ, ΠΊΠΎΠ»ΠΎΠ½Ρ‚ΠΈΡ‚ΡƒΠ»Ρ‹, пустыС строки ΠΈ Π»ΠΈΠ½Π΅ΠΉΠΊΠΈ, ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹Π΅ сводки ΠΈ прСобразования, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²Ρ‹Ρ€ΠΎΠ²Π½Π΅Π½Π½Ρ‹Ρ… столбцов ΠΈΠ»ΠΈ запись "150%" вмСсто коэффициСнта "1.5". ЗначСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ Π΄Π°Ρ‚Ρ‹ β€” ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ особого бСспокойства, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈΡ… слоТно Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…. Π›ΡŽΠ±Ρ‹Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ дополнСния Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки. Если разрабатываСмая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π΄Π°Ρ‚Ρ‹, Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ являСтся Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΡ… Π² IS08601-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°Ρ… YYYY-MM-DD ΠΈ hh:mm:ss, ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ Π΅Ρ‰Π΅ Π»ΡƒΡ‡ΡˆΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эти Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

Π’Π΅Ρ€ΠΌΠΈΠ½ "Ρ„ΠΈΠ»ΡŒΡ‚Ρ€" для Π΄Π°Π½Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ являСтся Π΄Π°Π²Π½ΠΎ ΡƒΠΊΠΎΡ€Π΅Π½ΠΈΠ²ΡˆΠΈΠΌΡΡ ΠΆΠ°Ρ€Π³ΠΎΠ½ΠΎΠΌ Unix.

ΠŸΠΎΠ½ΡΡ‚ΠΈΠ΅ "Ρ„ΠΈΠ»ΡŒΡ‚Ρ€" Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄Π°Π²Π½ΠΎ ΡƒΠΊΠΎΡ€Π΅Π½ΠΈΠ»ΠΎΡΡŒ. Оно стало ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя, Ρ‡Ρ‚ΠΎ ΠΈ ΠΊΠ°Π½Π°Π»Ρ‹ (pipes). Π’Π΅Ρ€ΠΌΠΈΠ½ Π±Ρ‹Π» заимствован Ρƒ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠ²-элСктриков: Π΄Π°Π½Π½Ρ‹Π΅ поступали ΠΎΡ‚ источника Ρ‡Π΅Ρ€Π΅Π· Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ Π² ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊ. Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠΎΠΌ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠΎΠΌ ΠΌΠΎΠ³ Π±Ρ‹Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ процСсс, Π»ΠΈΠ±ΠΎ Ρ„Π°ΠΉΠ». ΠšΠΎΠ»Π»Π΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠ²-элСктриков, "Ρ†Π΅ΠΏΡŒ" (circuit), Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ рассматривался, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ "водопроводная ΠΌΠ΅Ρ‚Π°Ρ„ΠΎΡ€Π°" для ΠΏΠΎΡ‚ΠΎΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΡƒΠΆΠ΅ Ρ‚Π²Π΅Ρ€Π΄ΠΎ ΡƒΠΊΡ€Π΅ΠΏΠΈΠ»Π°ΡΡŒ.

Π”ΡƒΠ³ ΠœΠ°ΠΊΠΈΠ»Ρ€ΠΎΠΉ.

НСкоторыС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠΌΠ΅ΡŽΡ‚ конструкторскиС ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°ΠΌ, Π½ΠΎ Π΅Ρ‰Π΅ ΠΏΡ€ΠΎΡ‰Π΅ (ΠΈ, Ρ‡Ρ‚ΠΎ сущСствСнно, ΠΈΡ… ΠΏΡ€ΠΎΡ‰Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² сцСнарий). Ими ΡΠ²Π»ΡΡŽΡ‚ΡΡ заклинания (cantrips), источники (sources) ΠΈ ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠΈ (sinks).

11.6.2. МодСль заклинаний

МодСль Π·Π°ΠΊΠ»ΠΈΠ½Π°Π½ΠΈΠΉ являСтся ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΈΠ· ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ проСктирования интСрфСйсов. НСт Π½ΠΈ Π²Π²ΠΎΠ΄Π°, Π½ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹Π·ΠΎΠ² ΠΈ числовой ΠΊΠΎΠ΄ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ. Π Π΅ΠΆΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ заклинания контролируСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ условиями запуска. НС сущСствуСт Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΡ‰Π΅ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² сцСнариях, Ρ‡Π΅ΠΌ заклинания.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, модСль Π·Π°ΠΊΠ»ΠΈΠ½Π°Π½ΠΈΠΉ являСтся Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ стандартом Π² ситуациях, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π²ΠΎ врСмя выполнСния Π½Π΅ трСбуСтся Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, ΠΊΡ€ΠΎΠΌΠ΅ получСния довольно простых установок ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… условий ΠΈΠ»ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Unix-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ учатся ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡΡ‚ΠΎΡΡ‚ΡŒ соблазну написания Π±ΠΎΠ»Π΅Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΊΠΎΠ³Π΄Π° для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ Π²ΠΏΠΎΠ»Π½Π΅ подходят заклинания. Набором Π·Π°ΠΊΠ»ΠΈΠ½Π°Π½ΠΈΠΉ всСгда ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠ· ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ ΡƒΠΏΠ°ΠΊΠΎΠ²Ρ‰ΠΈΠΊΠ° ΠΈΠ»ΠΈ shell-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² сцСнарии ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ слоТнСС. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΡΡ‚ΠΈΠ»ΡŒ программирования Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ пытался Π½Π°ΠΉΡ‚ΠΈ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ заклинания для своСго срСдства, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΠΎΠ΄Π΄Π°Π²Π°Ρ‚ΡŒΡΡ соблазну написания ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ интСрфСйса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ слоТнСС Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² сцСнарии. А Π² ситуациях, ΠΊΠΎΠ³Π΄Π° ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ каТСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½ΡƒΡŽ для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Unix модСль проСктирования с ΠΎΡ‚Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ядра ΠΎΡ‚ интСрфСйса. НСрСдко Π²Π΅Ρ€Π½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ являСтся написаниС Π½Π° ΠΊΠ°ΠΊΠΎΠΌ-Π»ΠΈΠ±ΠΎ языкС сцСнариСв ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ ΡƒΠΏΠ°ΠΊΠΎΠ²Ρ‰ΠΈΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ для выполнСния Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π·Π°ΠΊΠ»ΠΈΠ½Π°Π½ΠΈΠ΅.

Консольная ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° clear(1), которая просто ΠΎΡ‡ΠΈΡ‰Π°Π΅Ρ‚ экран, являСтся Π·Π°ΠΊΠ»ΠΈΠ½Π°Π½ΠΈΠ΅ΠΌ Π² Ρ‡ΠΈΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π΅Π³ΠΎ Ρ„ΠΎΡ€ΠΌ. Данная ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ классичСскими ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ Π³Ρ‚(1) ΠΈ touch(1). ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° startx(1), которая примСняСтся для запуска Π₯-сСрвСра, прСдставляСт собой комплСксный ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ для Ρ†Π΅Π»ΠΎΠ³ΠΎ класса ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π²Ρ‹Π·ΠΎΠ²Π° Π΄Π΅ΠΌΠΎΠ½ΠΎΠ².

НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ данная модСль проСктирования являСтся довольно распространСнной, ΠΎΠ½Π° Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π° Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ названия; Ρ‚Π΅Ρ€ΠΌΠΈΠ½ "заклинания" (cantrips) ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π½ Π°Π²Ρ‚ΠΎΡ€ΠΎΠΌ. (Cantrips β€” ΡˆΠΎΡ‚Π»Π°Π½Π΄ΡΠΊΠΎΠ΅ слово, ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰Π΅Π΅ магичСскоС Π·Π°ΠΊΠ»ΠΈΠ½Π°Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Π½ΠΎ Π² популярной фантастичСской Ρ€ΠΎΠ»Π΅Π²ΠΎΠΉ ΠΈΠ³Ρ€Π΅ для обозначСния волшСбного слова, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΎ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ с минимальной ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΎΠΉ ΠΈΠ»ΠΈ Π±Π΅Π· ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ.)

11.6.3. МодСль источника

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠΎΠΌ (source) являСтся Ρ„ΠΈΠ»ΡŒΡ‚Ρ€-подобная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, Π° Π΅Π΅ Π²Ρ‹Π²ΠΎΠ΄ управляСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ условиями. ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ являСтся ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° Π¬( 1), ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для отобраТСния содСрТимого ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² Π² Unix. Π’ число Π΄Ρ€ΡƒΠ³ΠΈΡ… классичСских ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² входят ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ who(1)nps(1).