рдкрд╛рд╕реНрдХрд▓ рдореЗрдВ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╡рд┐рдХрд╛рд╕ (рдмреИрдХрдПрдВрдб)

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдкрд╛рд╕реНрдХрд▓, рдбреЗрд▓реНрдлреА / рдПрдлрдкреАрд╕реА рдореЗрдВ рд╕рд╛рдЗрдЯреЗрдВ рдХреНрдпреЛрдВ, рдХреНрдпреЛрдВ рдФрд░ рдХреИрд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред
рд╕рдВрднрд╡рддрдГ "рдкрд╛рд╕реНрдХрд▓ рд╕рд╛рдЗрдЯ" рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЬреБрдбрд╝реА рд╣реИ:

writeln('Content-type: text/html');

рд▓реЗрдХрд┐рди рдирд╣реАрдВ, рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ! рд╣рд╛рд▓рд╛рдБрдХрд┐, рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рд╛рдЗрдЯ рдХрд╛ рд╕реЛрд░реНрд╕ рдХреЛрдб (рд▓рдЧрднрдЧ рд╕рднреА) GitHub рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред

рдХрд┐рд╕ рд▓рд┐рдП?


рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореИрдВ рдХрднреА рднреА рдкреЗрд╢реЗрд╡рд░ рд╡реЗрдм рдбреЗрд╡рд▓рдкрд░ рдирд╣реАрдВ рд╣реВрдВ - рдореИрдВ рдЧреЗрдо рдмрдирд╛рддрд╛ рд╣реВрдВред рдПрдХ рдЦреЗрд▓, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдХ рдСрдирд▓рд╛рдЗрди рдПрдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдЗрд╕рд▓рд┐рдП, рдРрд╕рд╛ рд╣реБрдЖ рдХрд┐ рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдЦреЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдФрд░ рд╕рд╛рдЗрдЯреЗрдВ рдмрдирд╛рдиреА рд╢реБрд░реВ рдХрд░ рджреАрдВред Perl рдкрд░ CGI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ - 2000 рдХреЗ рд╢реБрд░реБрдЖрддреА / рдордзреНрдп рдореЗрдВ рдпрд╣ рд▓реЛрдХрдкреНрд░рд┐рдп рдерд╛ред рд╕рдорд╕реНрдпрд╛ рдареАрдХ рд╣реЛрдиреЗ рддрдХ рд╕рдм рдХреБрдЫ рдареАрдХ рдерд╛ред

2013 рдореЗрдВ, рд╣рдордиреЗ рд╕реНрдкреЗрдХреНрдЯреНрд░реЛрдореЗрдВрд╕рд░ рдЧреЗрдо рдХреЗ рд▓рд┐рдП рдСрдирд▓рд╛рдЗрди рдЯреВрд░реНрдирд╛рдореЗрдВрдЯ рдЖрдпреЛрдЬрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЧреЗрдо рдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдПрдХ рдЯреВрд░реНрдирд╛рдореЗрдВрдЯ рдкреЗрдЬ рдмрдирд╛рдпрд╛, рдЬрд┐рд╕рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рдХрд┐ рдХрд┐рд╕рдХреЗ рд╕рд╛рде рдЦреЗрд▓рдирд╛ рд╣реИ, рд╡рд░реНрддрдорд╛рди рдкрд░рд┐рдгрд╛рдо, рдЖрджрд┐ред рдЯреВрд░реНрдирд╛рдореЗрдВрдЯ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЗ рдкреЗрдЬ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдФрд░ ... рд▓реЛрдб рдирд╣реАрдВ рд╣реБрдЖред рд▓реЛрдЧреЛрдВ рдиреЗ F5 рджрдмрд╛рдпрд╛, рд╕рдорд╕реНрдпрд╛ рдХреЛ рдФрд░ рдмрдврд╝рд╛ рджрд┐рдпрд╛ред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдПрдХ рд╕реАрдЬреАрдЖрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 4-5 рдЕрдиреБрд░реЛрдз рднреА, рдПрдХ рдЕрд▓рдЧ рдкрд░реНрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╢реБрд░реВ рдХрд┐рдП рдЧрдП, рд╕рд░реНрд╡рд░ рдХреЛ рдХрд╛рдлреА рдзреАрдорд╛ рдХрд░ рджреЗрддреЗ рд╣реИрдВ, рдФрд░> рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 10 рдЕрдиреБрд░реЛрдз рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рджреБрд░реНрдЧрдо рдмрдирд╛рддреЗ рд╣реИрдВред

рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдпрд╣ рддрдирд╛рд╡ рдкрд░реАрдХреНрд╖рдг рд░рд┐рд╣рд░реНрд╕рд▓ рдЯреВрд░реНрдирд╛рдореЗрдВрдЯ рдХреЗ рджреМрд░рд╛рди рд╣реБрдЖ: рдмрд╛рдж рдореЗрдВ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЯреВрд░реНрдирд╛рдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдЕрдкрдбреЗрдЯреЗрдб рд╕реНрдЯреЗрдЯрд┐рдХ рдкреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред

рдХреНрдпреЛрдВ?


рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЬрдм рдПрдХ рдирдП рдЧреЗрдо рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕рд╛рдЗрдЯ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЙрддреНрдкрдиреНрди рд╣реБрдИ , рддреЛ рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИ - рдХрд┐рд╕ рдкрд░? рдкрд░реНрд▓ рдкрд░ рдмреНрд░реЗрдХ рд╕реАрдЬреАрдЖрдИ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИред рдкрд░реНрд▓ рдореЗрдВ FastCGI? рдореИрдВ рдХрд▓реНрдкрдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХрд┐ рдкрд░реНрд▓ рдореЗрдВ рдПрдХ рдмрд╣реБрд╕реНрддрд░реАрдп рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдХреИрд╕реЗ рд▓рд┐рдЦрд╛ рдФрд░ рдбрд┐рдмреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдореБрдЭреЗ рд╕рд╛рдзрд╛рд░рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдкрд░реНрдпрд╛рдкреНрдд рд╕рдорд╕реНрдпрд╛рдПрдВ рдереАрдВред Node.js? рд╢рд╛рдпрдж рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реЛрдЧрд╛, рдЕрдЧрд░ рдЬреЗрдПрд╕ рд╕реЗ рдХреБрдЫ рджреБрд╢реНрдордиреА рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред рдФрд░ рдЪреВрдВрдХрд┐ рдЧреЗрдо рдЦреБрдж рдФрд░ рдЗрд╕рдХреЗ рд╕рд░реНрд╡рд░ рдкрд╛рд╕реНрдХрд▓ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдбреЗрд▓реНрдлреА, рд▓реЗрдХрд┐рди рдПрдлрдкреАрд╕реА рднреА рдЕрдЪреНрдЫрд╛ рд╣реИ) рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдЙрддреНрдкрдиреНрди рд╣реБрдЖ - рдХреНрдпрд╛ рд╣рдореЗрдВ рдЙрд╕реА рднрд╛рд╖рд╛ рдореЗрдВ рд╕рд╛рдЗрдЯ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП? рдпрд╣ рдЧреЗрдо рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдХреЛ рд╕рд░рд▓ рдХрд░реЗрдЧрд╛ред "рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдпрд╛рддрдирд╛ рдирд╣реАрдВ рд╣реИ!" рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛, рдФрд░ рдпрд╣ рдПрдХ рдХреЛрд╢рд┐рд╢ рджреЗрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

рдХреИрд╕реЗ?


рдореИрдВрдиреЗ SimpleCGI (SCGI) рдХреЛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЪреБрдирд╛: рдпрд╣ FastCGI рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреБрдЫ рд╕рд░рд▓ рд╣реИ, рдФрд░ рдмрд╛рдж рдХреЗ рдлрд╛рдпрджреЗ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИрдВ - рд╡рд┐рднрд┐рдиреНрди рд╕рд░реНрд╡рд░реЛрдВ рдХреЛ рдмреИрдХреЗрдВрдб рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд╕рдм рдХреБрдЫ рдПрдХ рд╣реА рд╕рд░реНрд╡рд░ рдкрд░ рдЪрд▓рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдХрд╛рд░реНрдп рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд SCGI- рдврд╛рдВрдЪреЗ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЙрдмрд▓рд╛ рд╣реБрдЖ рд╣реИ рдЬреЛ рд╕рд░реНрд╡рд░ рд╕реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреБрдЫ рдЦрд╛рд▓реА, рдЯреЗрдореНрдкрд▓реЗрдЯреЛрдВ рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ HTML рдкреГрд╖реНрда рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдо рдПрдХ рдРрд╕рд╛ рдореЙрдбреНрдпреВрд▓ рдврд╛рдВрдЪрд╛ рд╣реИ ред рдЗрд╕рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рднрд╛рдЧ рд╣реЛрддреЗ рд╣реИрдВ:

  • рдореБрдЦреНрдп рд▓реВрдк : рдЖрдиреЗ рд╡рд╛рд▓реЗ рдХрдиреЗрдХреНрд╢рдиреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдХрддрд╛рд░ рдореЗрдВ рд░рдЦрддрд╛ рд╣реИред рд╕реЙрдХреЗрдЯреНрд╕ рдХреЛ рдХрдиреЗрдХреНрд╢рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд╕рд╛рдзрд┐рдд рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░-рдирд┐рд░реНрдорд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдмрдВрдж рдХрд░ рджреЗрддреЗ рд╣реИрдВред
  • (N ): , . worker' тАФ .
  • : HTML- ( ) . .
  • : ( CGI.pm Perl). , ..


рдкрд░реНрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдПрдХ рдмрд╣реБрдд рд╣реА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╕рд╛рдЗрдЯ рдкрд░ рдЫреЛрдЯреЗ рдмрджрд▓рд╛рд╡ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ: рдмрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдФрд░ рдпрд╣ рд╕рдВрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕рдВрдХрд▓рди, рддреИрдирд╛рддреА рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВред рдмреЗрд╢рдХ, рдкрд╛рд╕реНрдХрд▓ рдПрдХ рд╕рдВрдХрд▓рд┐рдд рднрд╛рд╖рд╛ рд╣реИ, рдпрд╣ рдЙрд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдореИрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдП рдмрд┐рдирд╛ рдЬрдм рднреА рд╕рдВрднрд╡ рд╣реЛ рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рд▓рдЪреАрд▓рд╛ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред

рд╡рд╣ рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░рддреА рд╣реИред рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдлрд╝рд╛рдЗрд▓реЗрдВ "рдЯреЗрдореНрдкреНрд▓реЗрдЯ" рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣реЛрддреА рд╣реИрдВ: рд╡реЗ рддрдм рднрд░реА рдЬрд╛рддреА рд╣реИрдВ рдЬрдм рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддреА рд╣реИ рдФрд░ рдмрджрд▓ рдЬрд╛рдиреЗ рдкрд░ рдкреБрдирдГ рд▓реЛрдб рднреА рд╣реЛ рдЬрд╛рддреА рд╣реИ - рдЗрд╕ рддрд░рд╣ рдЖрдк рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдП рдмрд┐рдирд╛ рдбрд╛рдпрдирд╛рдорд┐рдХ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд╕рд╛рде рдореЗрдВ, рд╡реЗ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХрд╛ рдПрдХ рд╢рдмреНрджрдХреЛрд╢ (рдпрд╛ рд╣реИрд╢) рдмрдирд╛рддреЗ рд╣реИрдВ: {"name" -> "value"}ред рдпрд╣ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд╛ рдПрдХ рд╕реНрдерд┐рд░ рд╢рдмреНрджрдХреЛрд╢ рд╣реИ - рдпрд╣ рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╣реИ рдФрд░ рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░рд╣рддреА рд╣реИ (рдЬрдм рддрдХ рдХрд┐ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдирд╣реАрдВ рдмрджрд▓рддреА)ред рдПрдХ рдФрд░ рдПрдХ рд╣реИ - рдПрдХ рдЧрддрд┐рд╢реАрд▓ рд╢рдмреНрджрдХреЛрд╢, рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдЦрд╛рд▓реА рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЧрддрд┐рд╢реАрд▓ рдбреЗрдЯрд╛ рд╣реИрдВрдбрд▓рд░ рд╕реЗ рднрд░рд╛ рд╣реИ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗред рд╕реНрдерд┐рд░ рдФрд░ рдЧрддрд┐рд╢реАрд▓ рдбреЗрдЯрд╛ рдХреЛ рдорд┐рд▓рд╛рдХрд░, рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо рдмрдирддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдЯреЗрдореНрдкрд▓реЗрдЯ рдШреЛрд╖рдгрд╛:

#NEWSFEED_ITEM:
<div class=NewsHeader>
 <a href='/$LANG_LC/forum/thread/$NEWS_ID'><IF_NEWS_PINNED>[TOP]  </IF_NEWS_PINNED>$NEWS_DATE   $NEWS_TITLE</a>
</div>
<div class=NewsText>$NEWS_TEXT
 <div align=right>
  <a href='/$LANG_LC/forum/thread/$NEWS_ID'>$COMMENTS</a>
 </div>
</div>

рдпрд╣ NEWSFEED_ITEM рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╛рдЪрд╛рд░ рдлрд╝реАрдб рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдерд┐рд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╣реИ, рдЗрд╕рдХреЗ рдЕрдВрджрд░ рдХрдИ рдЕрдиреНрдп рдЯреЗрдореНрдкрд▓реЗрдЯ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП NEWS_TEXT - рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рд╕рдорд╛рдЪрд╛рд░ рдкрд╛рда рд╡рд╛рд▓рд╛ рдПрдХ рдЧрддрд┐рд╢реАрд▓ рдЯреЗрдореНрдкрд▓реЗрдЯред рдЕрдиреБрд╡рд╛рдж рдпрд╣ рд╣реИ рдХрд┐ $ TEMPLATE_NAME рдлреЙрд░реНрдо рдХреЗ рд╕рднреА рд╕рдмреНрд╕рдЯреНрд░рд┐рдВрдЧ рдХреЛ рдЗрд╕ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рдорд╛рди рдХреЗ рд╕рд╛рде рдкреБрди: рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣рд╛рдВ рдЖрдк рд╕рд╢рд░реНрдд рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдП pseudotag рдХреЛ рднреА рдиреЛрдЯрд┐рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: <IF_TEMPLATE_NAME> - рдЕрдиреБрд╡рд╛рдж рдХреЗ рджреМрд░рд╛рди, рдРрд╕реЗ рдЯреИрдЧ рд╣рдЯрд╛ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдореВрд▓реНрдп рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рдЗрд╕ рдкреНрд░рд╛рд░реВрдк рдХреЛ рдЪреБрдирд╛ - рдПрдЪрдЯреАрдПрдордПрд▓ рдЯреИрдЧ рдХреЗ рд░реВрдк рдореЗрдВ, рддрд╛рдХрд┐ рдЬрдм рдПрдХ рдЯреЗрдХреНрд╕реНрдЯ рдПрдбрд┐рдЯрд░ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕рдВрдкрд╛рджрд┐рдд рд╣реЛ рдФрд░ рдПрдХ рдпреБрдЧреНрдорд┐рдд рдЯреИрдЧ рджреЗрдЦрдирд╛ рдЖрд╕рд╛рди рд╣реЛред

рдЗрд╕ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдлрд╝реАрдб рдЬреЗрдирд░реЗрд╢рди рдХреЛрдб рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:


    result:='';
    //       NEWSFEED_ITEM      result
    for i:=0 to n-1 do begin
      id:=StrToIntDef(sa[i*c],0);
      title:=sa[i*c+1];
      cnt:=StrToIntDef(sa[i*c+2],1)-1;
      flags:=StrToIntDef(sa[i*c+3],0);
      //     
      db.Query('SELECT msg,created FROM messages WHERE topic=%d ORDER BY id LIMIT 1', 
        [id]);
      if db.lastErrorCode<>0 then continue;
      text:=db.Next;
      date:=db.NextDate;
      //    ( temp)
      temp.Put('NEWS_ID',id,true);
      temp.Put('NEWS_DATE',FormatDate(date,true),true);
      temp.Put('NEWS_TITLE',title,true);
      temp.Put('NEWS_PINNED',flags and 4>0,true);
      comLink:='$LNK_READ_MORE | ';
      if cnt>0 then comLink:=comLink+inttostr(cnt)+' $LNK_COMMENTS'
        else comLink:=comLink+'$LNK_LEAVE_COMMENT';
      temp.Put('NEWS_TEXT',text,true);
      temp.Put('COMMENTS',comLink,true);
      //   
      result:=result+BuildTemplate('#NEWSFEED_ITEM');
    end;

рд╕реНрдерд╛рдиреАрдпрдХрд░рдг


рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкреНрд▓реЗрдЯ рднреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡реИрд╢реНрд╡рд┐рдХ (рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ) рдХреНрд▓рд╛рдЗрдВрдЯрд▓реИрдВрдЧ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдпрджрд┐ рдЕрдиреБрд░реЛрдз рд╣реИрдВрдбрд▓рд░ рдХреЛ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд░реВрд╕реА рдореЗрдВ рдПрдХ рдкреЗрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдХреНрд▓рд╛рдЗрдВрдЯрд▓реИрдВрдЧ рдореЗрдВ "рдЖрд░рдпреВ" рдореВрд▓реНрдп рд▓рд┐рдЦрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЕрдиреБрд╡рд╛рджрдХ, рдХреЛ рдЯреЗрдХреНрд╕реНрдЯ рдореЗрдВ $ TEMPLATE_NAME рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ, рд╣рдореЗрд╢рд╛ рдкрд╣рд▓реЗ $ TEMPLATE_NAME рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреЗ рд▓рд┐рдП рдпрд╣ рдХреЗрд╡рд▓ рдкрд╛рда рдХреЗ рд╕рд╛рде рдкреНрд░рддреНрдпреЗрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд▓рд┐рдП рджреВрд╕рд░реА рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ:

#TITLE_NEWS:News
#TITLE_NEWS_RU:

рдПрдХ рд░реВрдкрд░реЗрдЦрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг


рд╕рд░рд▓ рд╕рд╛рдЗрдЯ рдХреЛрдб рдЙрджрд╛рд╣рд░рдг:

program website;
uses SysUtils, SCGI;

//    
function IndexPage:AnsiString; stdcall;
 begin
   result:=FormatHeaders('text/html')+BuildTemplate('#INDEX.HTM');
 end;

begin
 SetCurrentDir(ExtractFileDir(ParamStr(0)));
 SCGI.Initialize; //  
 AddHandler('/',IndexPage); //     '/'
 SCGI.RunServer; //      
end.

рд╕рдВрдкреВрд░реНрдг


рдореИрдВрдиреЗ 2015 рдХреЗ рдЕрдВрдд рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рд╛рдЗрдЯ astralheroes.com рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд░реВрдкрд░реЗрдЦрд╛ рд▓рд┐рдЦреА рдереАред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдорддреМрд░ рдкрд░ рд╣реЛрддрд╛ рд╣реИ, рдкрд╣рд▓реЗ рдкреИрдирдХреЗрдХ рдереЛрдбрд╝рд╛ рдвреЗрд▓реЗрджрд╛рд░ рдирд┐рдХрд▓рд╛ - рдХреЛрдб рдХреБрдЫ рдЧрдбрд╝рдмрдбрд╝ рдФрд░ рднреНрд░рдорд┐рдд рд╣реЛ рдЧрдпрд╛, рдЕрдЧрд▓реА рд╕рд╛рдЗрдЯ рдмреЗрд╣рддрд░ рд╣реЛ рд░рд╣реА рд╣реИред рдлрд┐рд░ рднреА, рдореИрдВ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдФрд░ рдкрд░рд┐рдгрд╛рдо рд╕реЗ рд╕рдВрддреБрд╖реНрдЯ рд╣реВрдВ: рд╕рд╛рдЗрдЯ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ, рдЖрд╕рд╛рдиреА рд╕реЗ рдбреАрдмрдЧ рдФрд░ рдЕрдкрдбреЗрдЯ рд╣реЛ рдЬрд╛рддреА рд╣реИред

рдЬрд╛рдБрдЪ - рдкрд░рд┐рдгрд╛рдо:

  • рдореБрдЭреЗ рдЙрдореНрдореАрдж рдереА рдХрд┐ рдХреЙрдореНрдкреИрдХреНрдЯ рдкрд░реНрд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рд╕рд╛рдЗрдЯ рдХреЛрдб рдмрд╣реБрдд рдлреВрд▓рд╛ рд╣реБрдЖ рд╣реИ, рд▓реЗрдХрд┐рди рдирд╣реАрдВ - рдкрд╛рд╕реНрдХрд▓ рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рд╕рдорд╛рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкрд░реНрд▓ рдореЗрдВ рд▓рдЧрднрдЧ рджреЛрдЧреБрдиреА рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рджрд┐рдЦрддрд╛ рд╣реИред
  • ! Perl тАФ , - 100 , , . - - тАФ . Delphi .
  • Perl. -, , , . -, Perl, , .
  • : , , . .
  • . , , ( ), , . , , тАФ . .

    , . тАФ . , :



    , тАФ . , .

?


рдЧреАрдерд╣рдм рдХреЗ рд╕реВрддреНрд░: github.com/Cooler2/ApusEngineExamples

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдПрдХ рд╕рдмрдореЙрдбреНрдпреВрд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП "- - рдХреНрд░реЗрд╕реНрдХреНрдпреВрд╡ " рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдХреНрд▓реЛрди рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ ред

рд╕рд╛рдЗрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реИ: "AH-Website \ Backend \ src \ website.dpr"

рдпрд╣ рд╡рд░реНрддрдорд╛рди рд╕рд╛рдЗрдЯ рдХреА рдкреВрд░реА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдирд╣реАрдВ рд╣реИ: рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдореИрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЗ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдкреНрд░рдХрд╛рд╢рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рдореИрдВ рд╕реАрдЬреАрдЖрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рднреА рдкреНрд░рдХрд╛рд╢рд┐рдд рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╡рд┐рд╖рдп рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВред рдлрд┐рд░ рднреА, рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдХрд╛рдо рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реБрдП, рд▓реЙрдиреНрдЪ рдФрд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

рд╕рд╛рдЗрдЯ рдХреЛрдб рдХрд╛ рдкреНрд░рдХрд╛рд╢рди, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЗрдВрдЬрди рдХреЛрдб рдЬреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдХреЛ рдкреИрдЯрд░рди рдкрд░ рдореБрдЭреЗ рдкреНрд░рд╛рдкреНрдд рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╡ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛редред рдореИрдВ рдЙрди рд╕рднреА рдХрд╛ рдЖрднрд╛рд░ рд╡реНрдпрдХреНрдд рдХрд░рддрд╛ рд╣реВрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдореЗрд░рд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдФрд░ рдЖрдкрд╕реЗ рдЬреБрдбрд╝рдиреЗ рдХрд╛ рдЖрдЧреНрд░рд╣ рдХрд┐рдпрд╛ - рдЖрдЧреЗ рднреА рдмрд╣реБрдд рд╕рд╛рд░реА рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рддреЗрдВ рд╣реИрдВ :)

рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

All Articles