рд╣рдо рдЕрдкрдиреЗ рд▓рд╛рдн рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдореЗрдВ рдкреЛрд╕реНрдЯрд▓ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ

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

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

рдФрд░ рд╡рд╣ рд╣реИ! рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛, рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рдФрд░, рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, рд░реВрд╕реА рдкреЛрд╕реНрдЯ рд╕реЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕реВрдЪрдХрд╛рдВрдХ рдбреЗрдЯрд╛рдмреЗрд╕ред

рдорд┐рд▓рд┐рдП: vinfo.russianpost.ru/database/ops.html

рдбреЗрдЯрд╛рдмреЗрд╕ рдпреБрд╡рд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдбреАрдмреАрдПрдл рдкреНрд░рд╛рд░реВрдк рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд╛рд╣рд░ рдХреЗ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ рдФрд░ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ (рдорд╣реАрдиреЗ рдореЗрдВ рджреЛ рдмрд╛рд░) рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдмреЗрд╢рдХ, рдпрд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ FIAS рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕рдХреЗ рдХрд╛рд░рдг, рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓ (рд╕рд┐рд░реНрдл рдПрдХ рддрд╛рд▓рд┐рдХрд╛!) рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рд░реНрдердХ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЛ рд╕рдбрд╝рдХ рдФрд░ рдШрд░ рдкрд░ рд╕рдЯреАрдХрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЧрд╛рдВрд╡ рд╣реА рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ - рдЖрдк рдпрд╣рд╛рдВ рд╣реИрдВ

рд╣рдо рдЦреБрд╢реА рдХреЛ рдЙрдкрд╡рд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ ... рдареАрдХ рд╣реИ, рдЪрд▓реЛ рд╕рд╛рдЗрдЯ рдкрд░ рдЬрд╛рдПрдВред


рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЦреБрд╢реА рд╕реЗ рдЖрдзрд╛рд░ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ рдЗрд╕реЗ рдХрд╛рдХрддрдореБрдирд╕ рдореЛрдбрд░реНрдирдХреНрдпреВрдПрд▓ (рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдиреЙрдирдПрд╕рдХреНрдпреВрдПрд▓) рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПред

рд╣рдо Google рдореЗрдВ рдЦреЛрдЬ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо Yandex рдореЗрдВ рдЦреЛрдЬрддреЗ рд╣реИрдВ, рд╣рдо apt-cache рдореЗрдВ рдЦреЛрдЬ рдХрд░рддреЗ рд╣реИрдВ, рдмрд╛рдж рд╡рд╛рд▓рд╛ рдЖрдирдВрдж рд╣рдореЗрдВ рджреЗрддрд╛ рд╣реИ:

envek@envek-work:~$ apt-cache search dbf pgdbf - converter of XBase / FoxPro tables to PostgreSQL dbf2mysql - xBase <--> MySQL 

рдорд╣рд╛рди, рдХреИрд╕реЗ! рдореИрдВ Postgres рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдореИрдВ рдЗрд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░ рджреВрдВрдЧрд╛ред рдЖрдзрд╛рд░ dosovskaya рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП iconv рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВрдЧреЗред рд╡реИрд╕реЗ, pgdbf (> = 0.6.2) рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рд╕реНрд╡рдпрдВ рд╢рд░реНрдорд┐рдВрджрдЧреА рдФрд░ рдХреЙрд▓ рдЖрдЗрдХрдирд╡ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдЕрднреА рддрдХ рдЙрдмрдВрдЯреВ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪреЗ рд╣реИрдВред

 mv {PIndx08,post_indices}.dbf #  ,     pgdbf -u post_indices.dbf | iconv -f CP866 > post_indices.sql #  

рдЦреИрд░, рдЕрдм рд╣рдореЗрдВ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред

рдореИрдВ рд░реВрдмреА рдСрди рд░реЗрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдореИрдВ рдЗрд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рджрд┐рдЦрд╛рддрд╛ рд╣реВрдВред рдЬреЛ рд░реЗрд▓ рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддрд╛ рд╣реИ, рд╡рд╣ рд╕реНрдХреНрд░реЙрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рд╣рдо рдПрдХ рдореЙрдбрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╣рдорд╛рд░реА рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрдЧреА рдФрд░ рдЖрд╡реЗрджрди рдореЗрдВ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░реЗрдЧреА
 rails g model PostIndex 

рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдореЗрдВ, рд╣рдо рдореВрд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рддрд╛рд▓рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдзреНрдпрд╛рди рд╕реЗ рдХреЙрдкреА рдХрд░рддреЗ рд╣реИрдВ, рдЗрдВрдбреЗрдХреНрд╕ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдмрдирд╛рддреЗ рд╣реИрдВ:
 class CreatePostIndices < ActiveRecord::Migration def change create_table :post_indices, id: false do |t| t.string :index, limit: 6 t.string :ops_name, limit: 60 t.string :ops_type, limit: 50 t.string :ops_subm, limit: 6 t.string :region, limit: 60 t.string :autonom, limit: 60 t.string :area, limit: 60 t.string :city, limit: 60 t.string :city_1, limit: 60 t.date :act_date t.string :index_old, limit: 6 t.index :index_old end reversible do |to| to.up do execute 'ALTER TABLE post_indices ADD PRIMARY KEY (index);' end end end end 

рдереЛрдбрд╝рд╛ рдЕрдиреБрдХреВрд▓рди рдореЙрдбрд▓:
 class PostIndex < ActiveRecord::Base self.primary_key = 'index' end 

рд╣рдо рдПрдХ рд╕рд░рд▓ рдХрдВрдЯреНрд░реЛрд▓рд░ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдореЗрдВ рдЬрд┐рдк рдХреЛрдб рдХреЛ json рдлреЙрд░реНрдореЗрдЯ рдореЗрдВ рджреЗрдЧрд╛:
 #  : rails generate controller PostIndices class PostIndicesController < ApplicationController def get @index = PostIndex.where(index: params[:index]).first @index = PostIndex.where(index_old: params[:index]).order(:index).first! unless @index respond_to do |format| format.json { render json: @index.to_json(only: [:index, :region, :area, :city]) } end end end 

рд╣рдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ / рдорд╛рд░реНрдЧреЛрдВ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдЙрд╕ рдорд╛рд░реНрдЧ рдкрд░ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрд╡реЗрджрди рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╡рд╛рдВрдЫрд┐рдд рдЕрдиреБрдХреНрд░рдорд┐рдд рд▓реМрдЯрд╛рдПрдЧрд╛:
 get '/post_index/:index(.:format)', controller: :post_indices, action: :get 

рдФрд░, рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг: html рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЬрд╛рджреВ рдХрд░реЗрдЧрд╛ред

HTML рдлреЙрд░реНрдо:
 <form id='address_form'> <table> <tr> <td><label for='address_postcode'> </label></td> <td> <input class='postcode_field' id='address_postcode' name='address[postcode]'> <p class='description'>   ,  ┬л┬╗, ┬л┬╗  ┬л┬╗  .</p> </td> </tr> <tr> <td><label for='address_region'>//</label></td> <td><input class='region_field' id='address_region' name='address[region]'></td> </tr> <tr> <td><label for='address_area'></label></td> <td><input class='area_field' id='address_area' name='address[area]'></td> </tr> <tr> <td><label for='address_city'>/</label></td> <td><input class='city_field' id='address_city' name='address[city]'></td> </tr> </table> </form> 

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреЗ рд╕рд╛рде, рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдФрд░ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╡рд┐рд╕реНрддреГрдд)
 jQuery(document).ready(function($){ $('.postcode_field').on('keyup change', function () { //    var postcode_field = $(this); var form = postcode_field.parents("form"); var region_field = $('.region_field', form); var area_field = $('.area_field', form); var city_field = $('.city_field', form); //    region_field.val(''); area_field.val(''); city_field.val(''); //     -     var postcode = this.value; if (postcode.length == 6) { jQuery.ajax({ dataType: "jsonp", url: 'http://postindexapi.ru/'+postcode+'.json?callback=?', beforeSend: function() { //  ,    $("td:last-child p.description.notice, td:last-child p.description.alert", postcode_field.parents("tr")).remove(); $('<p class="description notice loading"></p>').text("тАж").appendTo($("td:last-child", postcode_field.parents("tr"))) }, success: function(data){ postcode_field.val(data.index); region_field.val(data.region); area_field.val(data.area); city_field.val(data.city); if (data.index != postcode) { var message = "    : "+postcode+",   : "+data.index; $('<p class="description notice"></p>').text(message).appendTo($("td:last-child", postcode_field.parents("tr"))) } }, error: function (jqxhr, status, e) { var message = '       !'+e; if (e == 'Not Found') message = '      '; if (status == 'timeout') message = '     .   .'; $('<p class="description alert"></p>').text(message).appendTo($("td:last-child", postcode_field.parents("tr"))) console.debug(jqxhr, status, e); }, complete: function () { //   $("td:last-child p.description.loading", postcode_field.parents("tr")).remove(); } }); } }); }); 

рдФрд░, рд╡реЙрдпрд▓рд╛, рдЬрдм рдЖрдк рдЗрдВрдбреЗрдХреНрд╕ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕ рдХреНрд╖реЗрддреНрд░, рд╢рд╣рд░, рдФрд░ рдЗрд╕реА рддрд░рд╣ рд╕реЗ рд╕реНрдерд╛рдирд╛рдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рдмреЛрдирд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдореМрдЬреВрджрд╛ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдкреБрд░рд╛рдиреЗ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреЛ рд╕рд╣реА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдмрд╣реБрдд рдмрд╛рд░ рд▓реЛрдЧреЛрдВ рдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреБрд░рд╛рдиреА рдкреБрд░рд╛рдиреА рд╕реВрдЪрдХрд╛рдВрдХ рд╡рд╛рд▓реЗ рд░рд┐рд╢реНрддреЗрджрд╛рд░реЛрдВ рдХреЗ рдкрддреЗ рд╣реИрдВ)ред



рдПрдХ рдФрд░ рдмрд╛рдд: рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╣рдореЗрд╢рд╛ рддрд╛рдЬрд╝рд╛ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд░реЗрдХ рдХрд╛рд░реНрдп рдмрдирд╛рдПрдВ, рдЬреЛ рдореБрдХреБрдЯ рдкрд░ рдЪрд▓реЗрдЧрд╛, рд╣рд░ рджреЛ рд╕рдкреНрддрд╛рд╣ рдореЗрдВ рдХрд╣реЗрдВ, рдФрд░ рдпрд╣ рд╕рдм рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХрд░реЗрдВ (рдЬреЗрдордлрд╛рдЗрд▓ рдореЗрдВ рдЖрдкрдХреЗ рдкрд╛рд╕ gem 'nokogiri' рдиреЛрдХрдЧрд┐рд░реА gem 'nokogiri' рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЖрдк require: false рд╕рд╛рде require: false ) :

 require 'open-uri' require 'fileutils' require 'nokogiri' namespace :post_index do desc 'Update used post indices database to latest' task update: :environment do # Get info about post indices database url_prefix = 'http://info.russianpost.ru/database' doc = Nokogiri::HTML(open("#{url_prefix}/ops.html")) file = doc.at_css('a[name=newdbdata]+table tr:last-child td:nth-child(4) a').attr :href FileUtils.mkdir_p "#{Rails.root}/tmp/post_indices" dir = Pathname.new("#{Rails.root}/tmp/post_indices") filepath = Pathname.new("#{dir}/#{file}") filepath_success = Pathname.new("#{dir}/#{file}.success") if filepath.exist? and filepath_success.exist? puts 'Already up-to-date.' else # Download, unzip, rename and convert post indices file sh "wget #{url_prefix}/#{file} -O #{filepath}" sh "unzip -o #{filepath} -d #{dir}" dbf_filename = filepath.to_s.gsub /\.zip$/, '.DBF' sh "cp -f #{dbf_filename} #{dir}/post_indices.dbf" sh "pgdbf -u #{dir}/post_indices.dbf | iconv -f CP866 > #{dir}/post_indices.sql" # Import in database config = Abitur::Application.config.database_configuration[::Rails.env] dbh, dbu, dbp, db = config['host'], config['username'], config['password'], config['database'] sh "PGPASSWORD=#{dbp} psql -U #{dbu} -w -h #{dbh} #{db} < #{dir}/post_indices.sql" # Clean up FileUtils.rm [dbf_filename, "#{dir}/post_indices.dbf", "#{dir}/post_indices.sql"], force: true FileUtils.touch filepath_success end end end 

рд╕рд╛рд░рд╛рдВрд╢


рдкреЗрд╢реЗрд╡рд░реЛрдВ : рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рдЙрдкрдпреЛрдЧ рдФрд░ рд░рдЦрд░рдЦрд╛рд╡ рдореЗрдВ рдЖрд╕рд╛рдиреА, рдЕрдк рдЯреВ рдбреЗрдЯ, рдХрдо рд╡рдЬрди
рд╡рд┐рдкрдХреНрд╖ : рдХрдо рд╡рд┐рд╕реНрддрд╛рд░ (рдХреЗрд╡рд▓ рдирд┐рдкрдЯрд╛рди рдХреЗ рд▓рд┐рдП), рдХреИрдк рдХреА рд╕рднреА рд╕реАрдЯреЗрдВ, рд░реВрд╕, рдореЗрд▓ рдХрд╛ рдореЗрд▓ рдХреНрдпреЛрдВ?

рдФрд░ рдЖрд▓рд╕реА рдХреЗ рд▓рд┐рдП


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

рдХреГрддрдЬреНрдЮрддрд╛ рдХреЗ рд╕рд╛рде, рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдФрд░ рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рднреА рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЬреАрдердм рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдХрд┐рд╕реА рднреА рд╕реБрдЭрд╛рд╡ рдФрд░ рд╕реБрдЭрд╛рд╡: github.com/Envek/postindexapi.ru

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

UPD : 2018 рддрдХ, рд╡рд┐рд▓реБрдкреНрдд рд╣реЛ рдЪреБрдХреА рдорд┐рдиреА-рд╕рд░реНрд╡рд┐рд╕ postindexapi.ru рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЕрд▓реЗрдХреНрд╕рд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЙрд╕реЗ рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред рдЗрд╕рдХреА рд╕реЗрд╡рд╛ рдХрд╛ рдПрдкреАрдЖрдИ рд▓реЗрдЦ рдореЗрдВ рджрд┐рдП рдЧрдП рд╕реЗ рдЕрд▓рдЧ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрд▓рдЧ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ ред

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


All Articles