рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрдбрд╝реЗ JSON рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рддреЗрдЬреА рд╕реЗ deserialization

рдХрдЯрд░ рдХреЗ рддрд╣рдд рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд JSON рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЬрд▓реНрджреА рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдХреИрд╕реЗ рдХрд░реЗрдВ, рдЗрд╕рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд▓реЗрдХрд┐рди рдЙрдкрдпреЛрдЧреА рд╡рд┐рд╡рд░рдг рд╣реИред рдХреЛрдИ рдореИрдиреБрдЕрд▓ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдирд╣реАрдВред рдФрд░ рдЕрдЧрд░ рдЖрдкрдХреЛ рдкреБрд░рд╛рдиреЗ рд╕реНрдорд╛рд░реНрдЯрдлрд╝реЛрди рдкрд░ рдЖрдЙрдЯрдСрдлрд╝рдореИрдореЛрд░реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ - рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬреЛ рдПрдВрдбреНрд░реЙрдЗрдб 2.X рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрдЯ рдХреЗ рддрд╣рдд рдирдореВрдирд╛ рдХреЛрдб рдХреЗ рд╕рд╛рде рдЬреАрдердм рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рд▓рд┐рдВрдХ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдХреЛрдИ рдЪрд┐рддреНрд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдПрдХ рдЫреЛрдЯреА рдЧреЛрд▓реА рдХреЗ рд▓рд┐рдП рдПрдХ рдЬрдЧрд╣ рд╣реИред

рдЗрд╕рд▓рд┐рдП, рд╡рд░реНрддрдорд╛рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░, рдореБрдЭреЗ рд╕реЗрд╡рд╛ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рдерд╛, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рдЕрдВрджрд░ рдШреЛрдВрд╕рд▓реЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдвреЗрд░ рд╢рд╛рдорд┐рд▓ рдерд╛, рдЬрд┐рд╕рдХреЗ рдЕрдВрджрд░ рдРрд╕реА рд╡рд╕реНрддреБрдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ ... рдбреЗрдЯрд╛ JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдерд╛, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ gzip- рд╕рдВрдкреАрдбрд╝рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдлрд┐рд░ рднреА рд╕рдВрдЪрд░рд┐рдд рдбреЗрдЯрд╛ рдХреЗ рдЖрдХрд╛рд░ рдореЗрдВ рдЕрдВрддрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдерд╛ (рд╕рдВрдХреБрдЪрд┐рдд рд░реВрдк рдореЗрдВ 4 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рдмрдирд╛рдо 300 рдХрд┐рд▓реЛрдмрд╛рдЗрдЯ - рдпрд╣ рдореЛрдмрд╛рдЗрд▓ рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдордЬрд╛рдХ рдирд╣реАрдВ рд╣реИ)ред

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

рдпрд╣ рд╡рд╣ рд╡рд╕реНрддреБ рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдЙрдбрд╝рддреА рд╣реБрдИ рджрд┐рдЦрддреА рд╣реИ:

public class HumorItem { public String text; public String url; } public class HumorItems { List<HumorItem> Items; //    ,    ,   . } 

рдФрд░ рдЗрд╕рд▓рд┐рдП - рд╡рд╣ рдХреЛрдб рдЬреЛ рдЗрд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдбрд┐рд╕реНрдХреНрд░рд╛рдЗрдм рдХрд░рддрд╛ рд╣реИред
рдХреЛрдб рдХрд╛ рдкрд╣рд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг
 public class LoadData extends AsyncTask<Void, Void, Void> { String _url=""; public LoadData(String url){ _url=url; } @Override protected Void doInBackground(Void... voids) { try { //  HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(_url); HttpResponse response = httpclient.execute(httppost); HttpEntity httpEntity=response.getEntity(); InputStream stream = AndroidHttpClient.getUngzippedContent(httpEntity); //  gzip-  BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(stream)); StringBuilder responseBuilder= new StringBuilder(); char[] buff = new char[1024*512]; int read; while((read = bufferedReader.read(buff)) != -1) { responseBuilder.append(buff, 0, read) ; Log.d(" " + PrepareSize(responseBuilder.length())); } //   HumorItems list= Gson.fromJson(responseBuilder.toString(),HumorItems.class); //  for (HumorItem message:list.Items){ Log.d(": "+message.text); Log.d(": "+message.url); Log.d("-------------------"); } Log.d("  "+list.Items.size()); } catch (IOException e) { e.printStackTrace(); Log.e(" "+e.getMessage()); } return null; } } 

Wrapper рдФрд░ рдлрд╛рдЗрд▓ рд╕рд╛рдЗрдЬ рдореЗрдердб рд▓реЙрдЧ рдХрд░реЗрдВ
 public class Log { public static final String TAG="hhh"; public static void d(String text){ android.util.Log.d(TAG,text); } public static void e(String text){ android.util.Log.e(TAG,text); } } public String PrepareSize(long size){ if (size<1024){ return size+" ."; }else { return size/1024+" ."; } } 

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

Google рдиреЗ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд╕рд░рд▓ рдЙрдкрд╛рдп рд╕реБрдЭрд╛рдпрд╛ - AndroidManifest рдлрд╝рд╛рдЗрд▓ рдореЗрдВ bigHeap рдбрд╛рд▓рд╛ред

 <application [...] android:largeHeap="true"> 

рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЕрдкрдиреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ RAM рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╡рд┐рдХрд▓реНрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрд▓рд╕реА рдФрд░ рд╕рд░рд▓ рд╣реИ, рд▓реЗрдХрд┐рди 3 рдЬреА рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдиреАрдЪреЗ рдХреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдлреЛрди рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВред рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣рд╛рд░рд╡рд╛рджреА рджреГрд╖реНрдЯрд┐рдХреЛрдг - "рдпрджрд┐ рдЖрдк рдЕрдзрд┐рдХ рд▓реЛрд╣рд╛ рдЦрд░реАрдж рд╕рдХрддреЗ рд╣реИрдВ рддреЛ рдЕрдиреБрдХреВрд▓рди рдХреНрдпреЛрдВ рдХрд░реЗрдВ?"

рдЖрдЧреЗ, рдХрдИ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЗ рдмрд╛рдж, рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рд╕рд░рд▓ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирд╛ рдЧрдпрд╛:

рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдирд╣реАрдВ рдХрд╣рд╛:
рдХреЛрдб рдХрд╛ рджреВрд╕рд░рд╛ рд╕рдВрд╕реНрдХрд░рдг рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рд╣реИ
 public class LoadBigDataTmpFile extends AsyncTask<Void, Void, Void> { String _url=""; File cache_dir; public LoadBigDataTmpFile(String url){ _url=url; cache_dir = getExternalCacheDir(); } @Override protected Void doInBackground(Void... voids) { try { //  HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(_url); HttpResponse response = httpclient.execute(httppost); HttpEntity httpEntity=response.getEntity(); InputStream stream = AndroidHttpClient.getUngzippedContent(httpEntity); //  -      BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(stream)); File file = new File(cache_dir, "temp_json_new.json"); if (file.exists()){ //    -     file.delete(); } file.createNewFile(); FileOutputStream fileOutputStream=new FileOutputStream(file,true); BufferedWriter bufferedWriter=new BufferedWriter(new OutputStreamWriter(fileOutputStream)); char[] buff = new char[1024*1024]; int read; long FullSize=0; while((read = bufferedReader.read(buff)) != -1) { bufferedWriter.write(buff,0,read); //   FullSize+=read; Log.d(" " + PrepareSize(FullSize)); } bufferedWriter.flush(); fileOutputStream.close(); //   Log.d(" ..."); FileInputStream fileInputStream=new FileInputStream(file); InputStreamReader reader = new InputStreamReader(fileInputStream); HumorItems list= Gson.fromJson(reader,HumorItems.class); Log.d(" ."); /  for (HumorItem message:list.Items){ Log.d(": "+message.text); Log.d(": "+message.url); Log.d("-------------------"); } Log.d("  "+list.Items.size()); } catch (IOException e) { e.printStackTrace(); Log.e(" "+e.getMessage()); } return null; } } 

рд╡рд╣ рд╕рдм рд╣реИред рдХреЛрдб рдХрд╛ рдореБрдХрд╛рдмрд▓рд╛ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рдПрдХ рдзрдорд╛рдХреЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЖрдк рдЗрд╕реЗ рдФрд░ рднреА рдЖрд╕рд╛рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмрд┐рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рддреАрд╕рд░рд╛ рдХреЛрдб рд╡рд┐рдХрд▓реНрдк - рдХреЛрдИ рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ
 public class LoadBigData extends AsyncTask<Void, Void, Void> { String _url=""; public LoadBigData(String url){ _url=url; } @Override protected Void doInBackground(Void... voids) { try { //  HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(_url); HttpResponse response = httpclient.execute(httppost); HttpEntity httpEntity=response.getEntity(); InputStream stream = AndroidHttpClient.getUngzippedContent(httpEntity); //     BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(stream)); //      InputStreamReader reader = new InputStreamReader(stream); HumorItems list= Gson.fromJson(reader,HumorItems.class); //  for (HumorItem message:list.Items){ Log.d(": "+message.text); Log.d(": "+message.url); Log.d("-------------------"); } Log.d("  "+list.Items.size()); } catch (IOException e) { e.printStackTrace(); Log.e(" "+e.getMessage()); } return null; } } 

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

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

рдПрдХ рдмреЛрдирд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рдХреБрдЫ рдЖрдВрдХрдбрд╝реЗред
рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЖрдХрд╛рд░рдЕрдВрджрд░ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛рдПрдореБрд▓реЗрдЯрд░ рдбрд┐рд╕реЗрд░рд┐рдПрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдЯрд╛рдЗрдорд╣рд╛рдИрд╕реНрдХреНрд░реАрди рдмреВрд╕реНрдЯ рдбрд┐рд╕реЗрд░рд░рд▓рд╛рдЗрдЬреЗрд╢рди рдЯрд╛рдЗрдо
5.79 рдПрдордмреА400035 рд╕реЗрдХрдВрдб2 рд╕реЗрдХрдВрдб
13.3 рдПрдордмреА90001 рдорд┐рдирдЯ 11 рд╕реЗрдХрдВрдб5 рд╕реЗрдХрдВрдб

рдЙрдкрдпреЛрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЬреАрдердм рдкрд░ рд╣реИ , рдкрд░реАрдХреНрд╖рдг рдлрд╛рдЗрд▓реЗрдВ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рд╣реИрдВред
Gson рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рд▓рд┐рдВрдХ ред

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

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

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


All Articles