рдкреНрд░рддрд┐ рджрд┐рди 100 рд╣рдЬрд╛рд░ рджреМрд░реЗ (рдбреАрдмреНрд░реАрдлрд┐рдВрдЧ рдФрд░ рдПрдХ рдирдпрд╛ рдкреНрд░рдпреЛрдЧ)

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

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



рдХреНрд╡реЗрд░реА рдЕрдиреБрд╕реВрдЪреА

рдЫрд╡рд┐

рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 7 рдЕрдиреБрд░реЛрдзреЛрдВ рдкрд░ (рд╢рд╛рдо рдХреЛ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╣реИрдмрд░ рдХрд╛ рдореБрдЦреНрдп рдкреГрд╖реНрда рдЦреЛрд▓рддреЗ рд╣реИрдВ)ред рджрд┐рди рдореЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдВрдХрдбрд╝рд╛ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 10 рдЕрдиреБрд░реЛрдзреЛрдВ рддрдХ рдмрдврд╝ рдЬрд╛рддрд╛ рд╣реИред

рд╕реАрдкреАрдпреВ рд╕рдордп рдЧреНрд░рд╛рдл

рдЫрд╡рд┐

рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЕрдкреНрд░рд┐рдп рдХреНрд╖рдг рдХреЛ рдЧреНрд░рд╛рдл рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреА рдХрдореА рдХреЗ рд░реВрдк рдореЗрдВ рдкрдХрдбрд╝ рд▓реЗрддрд╛ рд╣реИред рдЗрд╕ рд╕рдордп, рд▓реЗрдЦ рдореБрдЦреНрдп рдкреГрд╖реНрда рдкрд░ рдерд╛, рд▓реЗрдХрд┐рди рдЪрд┐рддреНрд░ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджрд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдореБрдлреНрдд рд╕реАрдорд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдИ рдереАред рд╕реБрдмрд╣ рд╕реНрдерд┐рддрд┐ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ред

рдкрд╣рд▓реЗ рджрд┐рди рдХреА рдЦрдкрдд

рдЫрд╡рд┐

10 рдмрдЬреЗ рддрдХ рдПрдорд╕реАрдХреЗ рдореЗрдВ рд╕рдВрд╕рд╛рдзрди рдХреА рдЦрдкрдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ (10 рдмрдЬреЗ рдХреЗ рдмрд╛рдж рд╕реЗ рд╕рдВрд╕рд╛рдзрди рдХрд╛рдЙрдВрдЯрд░ рд░реАрд╕реЗрдЯ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ)ред 10 рдШрдВрдЯреЗ рддрдХ, рд▓рдЧрднрдЧ рдЙрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдХреБрд▓ рд▓рдЧрднрдЧ 150 рд╣рдЬрд╝рд╛рд░ рдЕрдиреБрд░реЛрдз рдФрд░ 500 рдПрдордмреА рдЯреНрд░реИрдлрд╝рд┐рдХ (рд╕реНрдереИрддрд┐рдХ рдЪрд┐рддреНрд░ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛, рд▓реЗрдХрд┐рди рд╡реЗ рдмрд╣реБрдд рдЫреЛрдЯреЗ рд╣реИрдВ)ред

рджреМрдбрд╝рдиреЗ рд╡рд╛рд▓реЗ рдЕрдзрд┐рдХрд╛рд░рд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЧрд▓рддреА рд╕реЗ рдореИрдВрдиреЗ рд╕реНрдХреНрд░реАрди рдХреЛ рд░рдирд┐рдВрдЧ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЗ рд╕рд╛рде рд╣рдЯрд╛ рджрд┐рдпрд╛ред рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 6 рдЖрдЧрдВрддреБрдХреЛрдВ рдХреЗ рд╕рд╛рде, 16 рдЙрджрд╛рд╣рд░рдг рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЧрдП (рдпрд╣ рдЕрдзрд┐рдХрддрдо рд╣реИ рдЬреЛ рдореИрдВрдиреЗ рд░рд┐рдХреЙрд░реНрдб рдХрд┐рдпрд╛ рд╣реИ)ред

рдирд┐рд╖реЗрдз рдЕрдиреБрд░реЛрдз ???

рдЫрд╡рд┐

рдФрд░ рдпрд╣рд╛рдБ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред рдХреБрдЫ рд╕рдордп рдмрд╛рдж, рдПрдХ рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реБрдИ: рд▓рдЧрднрдЧ рд╣рд░ 5 рд╡реЗрдВ рдЕрдиреБрд░реЛрдз рдХреЛ рдФрд╕рдд рд╕реЗ 5-10 рдЧреБрдирд╛ рдЕрдзрд┐рдХ (рдФрд╕рддрди, 0.5 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХрд╛рдЙрдВрдЯрд░) рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╢реБрд░реВ рд╣реБрдЖред рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдХрдИ рдпрд╛рддреНрд░рд╛рдУрдВ рдХреЗ рд╕рд╛рде рднреА, рдпрд╣ рдирд╣реАрдВ рджреЗрдЦрд╛ рдЧрдпрд╛ рдерд╛ред рдЕрдм рддрдХ рд╕реНрдерд┐рддрд┐ рдирд╣реАрдВ рдмрджрд▓реА рд╣реИ, рдЬрдм рдмрд╣реБрдд рдХрдо рджреМрд░реЗ рд╣реБрдП рдереЗред

рдЗрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреИрд╕реЗ рдХрд░реЗрдВ? рд╡рд┐рдХрд▓реНрдк:

1. рдЕрдиреБрд░реЛрдз рдХреЛ рдЧрд░реНрдо рдХрд░реЗрдВред рдирд╣реАрдВ, рдЪреВрдВрдХрд┐ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЙрддрд░рд╛рдИ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕рдордп рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдЧреНрд░рд╛рдл рдореЗрдВ 3 рдЧрд▓рдд рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдмреАрдЪ рдХрд╛ рд╕рдордп рдПрдХ рдорд┐рдирдЯ рд╕реЗ рднреА рдХрдо рд╣реИ)ред
2. рдПрдХ рд╣реА рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рднрдВрдбрд╛рд░ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рдПрдХ рд╕рд╛рде рд╕рдВрд╢реЛрдзрдиред рдирд╣реАрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдмреАрдЪ 10 рд╕реЗрдХрдВрдб рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рдмреАрдд рдЪреБрдХрд╛ рд╣реИред
3. рдЖрд╡реЗрджрди рдЕрдкреНрд░рднрд╛рд╡реА рдХреЗ рд░реВрдк рдореЗрдВ рд╕реАрдорд┐рдд рдерд╛ред

рдЖрдЦрд┐рд░реА рдмрдЪрддрд╛ рд╣реИред рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐, рдФрд╕рддрди, рдЕрдиреБрд░реЛрдз 1 рд╕реЗрдХрдВрдб (рд▓рдЧрднрдЧ 0.5 рд╕реЗрдХрдВрдб) рд╕реЗ рдХрдо рд╕рдордп рдореЗрдВ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рдерд╛ред рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЕрдХреНрд╖рдорддрд╛ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╣рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ ...

рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдореЗрд░реЗ рд▓рд┐рдП, рдпреЗ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдПрдХ рд░рд╣рд╕реНрдп рд╣реИрдВред

рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХрд░рдирд╛

рдпрджрд┐ рд╕рдорд╕реНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣реИ рдХрд┐ рдЖрд╡реЗрджрди рдЕрдХреНрд╖рдо рдХреЗ рд░реВрдк рдореЗрдВ рд╕реАрдорд┐рдд рдерд╛, рддреЛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдирдП рдХрд╛рдЙрдВрдЯрд░ рдХреЛрдб (org.toyz.litetext рдкрд╣рд▓реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛) рдХреЗ рд╕рд╛рде рджреЛрд╣рд░рд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рд▓рдЧрднрдЧ 7 рдЧреБрдирд╛ рддреЗрдЬреА рд╕реЗ рдЪрд▓рддрд╛ рд╣реИред рдбреНрд░рд╛рдЗрдВрдЧ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╛рдлреА рдкреНрд░рднрд╛рд╡реА рд╣реИ (рдХреЛрдб рдиреАрдЪреЗ рд╣реИ - рдЖрдк рдЗрд╕реЗ рдЕрдкрдиреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред

рджреВрд╕рд░рд╛ рд╕рдВрд╕реНрдХрд░рдг:

public final class DynamicImage
{
//
private static final String FOLDER = "resources" ;

private static Image backgroundImage;

private static final Map< String , Image> imageTable = new Hashtable < String , Image>();

static
{
try
{
backgroundImage = makeImage( "appengine.png" );

imageTable.put( "1" ,
makeImage( "1.png" ));
imageTable.put( "2" ,
makeImage( "2.png" ));
imageTable.put( "3" ,
makeImage( "3.png" ));
imageTable.put( "4" ,
makeImage( "4.png" ));
imageTable.put( "5" ,
makeImage( "5.png" ));
imageTable.put( "6" ,
makeImage( "6.png" ));
imageTable.put( "7" ,
makeImage( "7.png" ));
imageTable.put( "8" ,
makeImage( "8.png" ));
imageTable.put( "9" ,
makeImage( "9.png" ));
imageTable.put( "0" ,
makeImage( "0.png" ));

imageTable.put( "(" ,
makeImage( "leftBracket.png" ));
imageTable.put( ")" ,
makeImage( "rightBracket.png" ));
}
catch (IOException exception)
{
throw new RuntimeException(exception);
}
}

public Image drawText( String text,
Anchor anchor,
long backgroundColor)
{
if ( null == text)
throw new ArgumentNullException( "text" );

if ( null == anchor)
throw new ArgumentNullException( "anchor" );

Collection<Composite> compositeCollection = new ArrayList <Composite>();

// background
compositeCollection.add(ImagesServiceFactory.makeComposite(backgroundImage,
0,
0,
1f,
Anchor.TOP_LEFT));

int xOffset = 0;

for ( int pos = 0; pos < text.length(); pos++)
{
String symbol = Character.toString(text.charAt(pos));

if (!imageTable.containsKey(symbol))
continue ;

Image image = imageTable. get (symbol);

compositeCollection.add(ImagesServiceFactory.makeComposite(image,
xOffset,
0,
1f,
anchor));

xOffset += image.getWidth();
}

return ImagesServiceFactory.getImagesService().composite(compositeCollection,
backgroundImage.getWidth(),
backgroundImage.getHeight(),
backgroundColor);
}

private static Image makeImage( String imageName)
throws IOException
{
InputStream inputStream = null ;
ByteArrayOutputStream outputStream = null ;

try
{
String filePath = FOLDER + File .separatorChar + imageName;
inputStream = DynamicImage. class .getResourceAsStream(filePath);

if ( null == inputStream)
throw new IllegalStateException( "filePath=" + filePath);

outputStream = new ByteArrayOutputStream();

int length;
byte [] buffer = new byte [1024];

while ((length = inputStream.read(buffer,
0,
buffer.length)) > 0)
{
outputStream.write(buffer,
0,
length);
}

outputStream.flush();

return ImagesServiceFactory.makeImage(outputStream.toByteArray());
}
finally
{
if ( null != inputStream)
inputStream.close();

if ( null != outputStream)
outputStream.close();
}
}
}

* This source code was highlighted with Source Code Highlighter .


рдореИрдВ рд╕рдореБрджрд╛рдп рд╕реЗ рдкреНрд░рдпреЛрдЧ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реВрдВред рдореИрдВ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реВрдВрдЧрд╛ред

рдкреНрд░рдпреЛрдЧ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдиреЗ рдореБрдЭреЗ рдЦреБрд╢ рдХрд░ рджрд┐рдпрд╛! рдЖрдзреЗ рджрд┐рди рдХреЗ рд▓рд┐рдП, рдХрд╛рдЙрдВрдЯрд░ рдХреЛ рд▓рдЧрднрдЧ 100 рд╣рдЬрд╛рд░ рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЦреЛрд▓рд╛ рдЧрдпрд╛ (рдЬреИрд╕рд╛ рдХрд┐ рдЕрдкреЗрдХреНрд╖рд┐рдд рдерд╛)ред рдЙрд╕реА рд╕рдордп, 1 рдЬреАрдмреА рдЯреНрд░реИрдлрд╝рд┐рдХ рдЦрд░реНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдареАрдХ рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдореИрдВрдиреЗ рддрд╕реНрд╡реАрд░ рдХреЛ рдХрдо рдХрд░ рджрд┐рдпрд╛, рдЕрдиреНрдпрдерд╛ рдпрд╣ 3% рд╕реАрдорд╛ рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ:)

рдЫрд╡рд┐

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд░рдирд┐рдВрдЧ рдЕрдзрд┐рдХрд╛рд░рд┐рдпреЛрдВ рдХреА рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ 9 рдкреАрд╕реА рдереАред (рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 8 рдЕрдиреБрд░реЛрдзреЛрдВ рдкрд░):

рдЫрд╡рд┐

рдФрд░ рдЗрд╕ рдХреНрд╖рдг рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рджреЗрд░реА рдХреЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдпрд╣рд╛рдБ рд▓реЙрдЧ рд╕реЗ рдПрдХ рдЕрдВрд╢ рд╣реИ:

рдЫрд╡рд┐

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд▓рд┐рдЦрд╛ рдФрд░ рдЖрдИрдкреА рдкрддреЗ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ред рдпрд╣ рдореБрдлрд╝реНрдд рдХреЗ рд▓рд┐рдП рдмрд╛рд╣рд░ рдЖрдпрд╛ рдерд╛! рдкрд░реНрдпрд╛рдкреНрдд рдореБрдХреНрдд рд╕рдВрд╕рд╛рдзрди!

рдирд┐рд╖реНрдХрд░реНрд╖

рдЙрдЪрд┐рдд рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рде, GAE рдПрдХ рдЬрдмрд░рджрд╕реНрдд рднрд╛рд░ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред Google рдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдИ рд╕рдкрдиреЗ рджреЗрдЦреЗ рдереЗ: рдХреЗрд╡рд▓ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХрд░рдирд╛ (рд╕рдм рдХреБрдЫ рдЙрдЪрд┐рдд рд╣реИ: рдпрджрд┐ рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдХреБрдЫ рднреА рднреБрдЧрддрд╛рди рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛)ред рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдРрд╕реА рд╕реЗрд╡рд╛рдПрдБ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдЗрддрдиреЗ рд╕рд╛рд░реЗ рдЖрдЧрдВрддреБрдХреЛрдВ рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░реЗрдВред

Source: https://habr.com/ru/post/In115731/


All Articles