Блог

  • Настройки безопасности Linux Server

    Настройки безопасности Linux Server

    Отключаем перл если не нужен

    chmod 700 /usr/bin/perl

    Если есть cpanel то

    groupadd trusty
    usermod -a -G trusty cpanel
    chgrp compiler /usr/bin/perl
    chmod 750 /usr/bin/perl

    Отключаем сигнатуры сервера.

    /etc/apache2/apache2.conf

    ServerSignature Off
    ServerTokens Prod

    Отключаем листинг директорий.

    a2dismod autoindex
    
    sudo service apache2 restart

     

  • Установка Linux на Raid1. Решение проблем с загрузкой Linux на Riad.

    Установка Linux на Raid1. Решение проблем с загрузкой Linux на Riad.

    Откройте терминал(Ctrl+Alt+T), скопируйте и выполните следующие команды:

    sudo add-apt-repository ppa:yannubuntu/boot-repair
    sudo apt-get update
    sudo apt-get install -y boot-repair
    boot-repair

    После выполнения команд следуйте инструкциями в окне boot-repair

  • Date range picker for bootstrap russian localization. Выбор диапазона дат для бутстрап с русской локализацией.

    Скачать  date range picker на русском языке.

    daterangepicker — по этой ссылке вы можете скачать пример и протестировать его у себя. Jquery date range picker with russian localisation.

    Jquery плагин для выбор диапазона дат.

    Код примера.

    <!-- Include Required Prerequisites -->
    <script type="text/javascript" src="http://cdn.jsdelivr.net/jquery/1/jquery.min.js"></script>
    <script type="text/javascript" src="http://cdn.jsdelivr.net/momentjs/latest/moment.min.js"></script>
    <link rel="stylesheet" type="text/css" href="http://cdn.jsdelivr.net/bootstrap/3/css/bootstrap.css" />
     
    <!-- Include Date Range Picker -->
    <script type="text/javascript" src="http://cdn.jsdelivr.net/bootstrap.daterangepicker/2/daterangepicker.js"></script>
    <link rel="stylesheet" type="text/css" href="http://cdn.jsdelivr.net/bootstrap.daterangepicker/2/daterangepicker.css" />
    
    <input type="text" name="daterange" value="01/01/2015 - 01/31/2015" />
    
    <script type="text/javascript">
    $(function() {
    $('input[name="daterange"]').daterangepicker({
     "locale": {
            "format": "MM/DD/YYYY",
            "separator": " - ",
            "applyLabel": "Применить",
            "cancelLabel": "Отмена",
            "fromLabel": "От",
            "toLabel": "До",
            "customRangeLabel": "Свой",
            "daysOfWeek": [
                "Вс",
                "Пн",
                "Вт",
                "Ср",
                "Чт",
                "Пт",
                "Сб"
            ],
            "monthNames": [
                "Январь",
                "Февраль",
                "Март",
                "Апрель",
                "Май",
                "Июнь",
                "Июль",
                "Август",
                "Сентябрь",
                "Октябрь",
                "Ноябрь",
                "Декабрь"
            ],
            "firstDay": 1
        }
    });});
    
    </script>

     

  • Альтернативная красивая функция alert для jQuery. User friendly alert message jQuery.

    alert = function(what){
        // if the element hasn't been appended to the body element
        if($("#alert_bar").length==0){
            // customize the bar with css
            var bar = $("<div/>").css({
                'display':'none',
                'position':'fixed',
                'top':'0px',
                'left':'0px',
                'zIndex':'99950',
                'width':'100%',
                'margin':'0px',
                'padding':'5px auto 9px auto',
                'textAlign':'center',
                'fontSize':'16px',
                'background':'#fff',
                'color':'red',
                'borderBottom':'solid 1px #333'
            })
            bar.attr("id","alert_bar")
            $('body').prepend(bar)
        }
        // close button
        $("#alert_bar").html('<div style="text-align:right;font-size:10px;color:red"><span style="cursor:pointer" onclick="$(\'#alert_bar\').slideUp()"></span></div><div>'+what+'</div>')
        $("#alert_bar").slideDown();
        
            
             auto = 2000;
            window.setTimeout(function(){
                $("#alert_bar").slideUp()
            },auto);
        
    }

     

  • Загрузка данных на сервер в асинхронном режиме Android Studio

    private String getPostDataString(HashMap<String, String> params) throws UnsupportedEncodingException {//функция формирования POST данных для отправки на сервер
          StringBuilder result = new StringBuilder();
          boolean first = true;
          for(Map.Entry<String, String> entry : params.entrySet()){
              if (first)
                  first = false;
              else
                  result.append("&");
    
              result.append(URLEncoder.encode(entry.getKey(), "UTF-8"));
              result.append("=");
              result.append(URLEncoder.encode(entry.getValue(), "UTF-8"));
          }
    
          return result.toString();//возвращаем сформированную строку для POST данных которые будут отправляться на сервер rateandshare.kz
      }
      //--------------------------------Загрузка изображения--------------------------------
      private class DownloadWebPageTask1 extends AsyncTask<ImageAndName, Void, String> {//загрузка изображения на сервер
          String attachmentName = "bitmap";//имя прикрепленных данных
          String attachmentFileName = "bitmap.jpg";//имя файла
          String crlf = "\r\n";//символ перехода на новую строку
          String twoHyphens = "--";//спец символы для создания POST запроса
          String boundary =  "*****";//спец символы для создания POST запроса
          @Override
          protected String doInBackground(ImageAndName... params) {
              URL url = null;
    
              String response = "";
              String requestURL="android.gorodmoy.com";//адрес куда мы будем отправлять POST данные для обработки
              try {
                  url = new URL(requestURL);//создаем объект url из строкового типа requestURL
                  //сохранение данных в из картинки в массив
                  Bitmap bmp = params[0].Bmp;//Получаем изображение которое мы сфотографировали
                  String Name=params[0].Name;//Получаем имя изображения которое состоит из времени когда была сделагна фотография и идентификатора телефона
                  attachmentFileName=Name+".jpg";//добавляем расширение файла
                  ByteArrayOutputStream stream = new ByteArrayOutputStream();//создаем объект для передачи потоковых бинарных данных. Это используется для передачи изображений
                  bmp.compress(Bitmap.CompressFormat.JPEG, 100, stream);//преобразуем наше изображение из BMP формата в JPEG
                  byte[] byteArray = stream.toByteArray();//Преобразуем изображение в массив байтов
                  //передача данных
                  HttpURLConnection httpUrlConnection = null;//объявляем объект для создания интернет соединения
    
                  httpUrlConnection = (HttpURLConnection) url.openConnection();// открываем соединени с сайтом
                  httpUrlConnection.setUseCaches(false); // запрещаем использовать кэширования.
                  httpUrlConnection.setDoOutput(true);//разрешаем использование POST запросов (в нашем случае для передачи изображения)
    
                  httpUrlConnection.setRequestMethod("POST");//устанавливаем метод передачи данных
                  httpUrlConnection.setRequestProperty("Connection", "Keep-Alive");// настройка соединения для повторного использования соединений HTTP
                  httpUrlConnection.setRequestProperty("Cache-Control", "no-cache");//запрет на кэширование
                  httpUrlConnection.setRequestProperty(
                          "Content-Type", "multipart/form-data;boundary=" + this.boundary);//настройка POST данных для передачи данных частями. Используется при передачи больших объемов данных.
    
                  DataOutputStream request = new DataOutputStream(
                          httpUrlConnection.getOutputStream());//создаем объект для передачи данных
    
                  request.writeBytes(this.twoHyphens + this.boundary + this.crlf);//начинаем запись POST данных по стандарту. Формируем POST запрос
                  request.writeBytes("Content-Disposition: form-data; name=\"" +
                          this.attachmentName + "\";filename=\"" +
                          this.attachmentFileName + "\"" + this.crlf);
                  request.writeBytes(this.crlf);
                  request.write(byteArray);
                  request.writeBytes(this.crlf);
                  request.writeBytes(this.twoHyphens + this.boundary +
                          this.twoHyphens + this.crlf);
                  request.flush();
                  request.close();//закрываем запрос
                  InputStream responseStream = new
                          BufferedInputStream(httpUrlConnection.getInputStream());//получаем ответ от сервера
    
                  BufferedReader responseStreamReader =
                          new BufferedReader(new InputStreamReader(responseStream));
    
                  String line = "";
                  StringBuilder stringBuilder = new StringBuilder();
    
                  while ((line = responseStreamReader.readLine()) != null) {//читаем данные с сервера
                      stringBuilder.append(line).append("\n");
                  }
                  responseStreamReader.close();
    
                  response = stringBuilder.toString();
                  responseStream.close();
                  httpUrlConnection.disconnect();
    
              } catch (Exception e) {
                  Toast toast = Toast.makeText(getApplicationContext(),// если произошли ошибки при передаче данных то мы выводим сообщение об ошибке
                          "Произошла ошибка при загрузке отзыва на сайт. Попробуйте еще раз!", Toast.LENGTH_LONG);
                  toast.show();
                  e.printStackTrace();
              }
    
              return response;//возвращаем ответ сервера.
          }
    
    
          @Override
          protected void onPostExecute(String result) {//обрабатываем ответ сервера при успешной загрузке данных
    
              Toast toast = Toast.makeText(getApplicationContext(),// если произошли ошибки при передаче данных то мы выводим сообщение об ошибке
                      "Спасибо вам за отзыв. Ваш отзыв успешно загружен на сайт rateandshare.kz!", Toast.LENGTH_LONG);
              toast.show();
    
    
          }
      }
      //--------------------------------Загрузка описания и кода--------------------------------
      private class ImageAndName // Создаем свой класс в котором будет находиться имя картинки и сама картинка. Это необходимо для того чтобы передать данные на сервер в одном объекте
      {
          String Name;
          Bitmap Bmp;
    
      }
      private class DownloadWebPageTask extends AsyncTask<String, Void, String> {//класс для передачи данных на сервер в асинхронном режиме.
          @Override
          protected String doInBackground(String... params) {//выполнение фонового асинхронного задания. В нашем случае используется для передачи данных на сервер
              URL url = null;//создаем объект в котором будет храниться адрес страницы на которую мы будем отправлять POST данные
    
              String response = "";//Переменная для хранения ответа сервера
              String requestURL=params[0];//Адрес в интернет на который мы будем передвать пост данные
              try {
                  url = new URL(requestURL);//Создаем объект адреса в интернет
    
                  HttpURLConnection conn = (HttpURLConnection) url.openConnection();//открываем соединение с веб страницей
                  conn.setReadTimeout(15000);//устанавливаем таймаут ответа сервера в процессе чтения страницы на 15 секунд
                  conn.setConnectTimeout(15000);//Устанавливаем таймаут времени соединения с сервером на 15 секунд
                  conn.setRequestMethod("POST");//Задаем метод передачи данных POST
                  conn.setDoInput(true);//Разрешаем передачу данных на сервер
                  conn.setDoOutput(true);//Разрешаем прием данных с сервера
    
    
                  OutputStream os = conn.getOutputStream();//Объявляем объет для передачи данных на сервер
                  BufferedWriter writer = new BufferedWriter(//инициализируем объект для записи данных на сервер
                          new OutputStreamWriter(os, "UTF-8"));
                  HashMap<String, String> postDataParams;//Объявляем объект для хранения передаваемых данных
                  postDataParams=new HashMap<String, String>();//инициализируем объект для хранения передаваемых данных
    
                  //Add Key/Value pairs
                  postDataParams.put("name", params[1]);//Задаем значения POST данных
                  postDataParams.put("imei", params[2]);
    
    
                  writer.write(getPostDataString(postDataParams));//Передаем данные на сервер
    
                  writer.flush();//Сохранить данные из кэша
                  writer.close();//завершить передачу данных на свервер
                  os.close();//Завершить соединение с сервером
                  int responseCode=conn.getResponseCode();//получить код отвечающий за результат соединения
    
                  if (responseCode == HttpsURLConnection.HTTP_OK) {//если все прошло успешно
                      String line;//переменная в которой будем записывать ответ сервера
                      BufferedReader br=new BufferedReader(new InputStreamReader(conn.getInputStream()));//создаем объект чтения данных с сервера
                      while ((line=br.readLine()) != null) {//читаем пока есть данные
                          response+=line;
                      }
                  }
                  else {
                      response="";// в случае ошибки отвер пустой.
    
                  }
              } catch (Exception e) {
                  e.printStackTrace();//стандартный обработчик исключений
              }
    
              return response;//возвращаем ответ сервера
          }
    
    
          @Override
          protected void onPostExecute(String result) {
    
              //productDescription.setText(result);
          }
      }
    
      public void downloadWebpage() {
    
          //--------Загрузка текстовых данных--------------
          TelephonyManager telephonyManager = (TelephonyManager) getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE);//создаем объект для получения imei кода который будем использовать как идентификатор пользователя
          String imei = telephonyManager.getDeviceId();//получаем imei код
    
          String S1;//объявляем переменные в которых будем хранить параметры передаваемые на сервер
          S1="Алексей Каверин";
          try {
    
              S1 = URLEncoder.encode(S1, "UTF-8");//кодируем данные для передачи на сервер
    
          } catch (Exception e) {
              // произошла ошибка.
              Toast toast = Toast.makeText(getApplicationContext(),// если произошли ошибки при передаче данных то мы выводим сообщение об ошибке
                      "Возникла ошибка при передаче данных на сервер. Проверьте подключение к интернет и повторите отправку.", Toast.LENGTH_LONG);
              toast.show();
          }
    
    
    
          DownloadWebPageTask task = new DownloadWebPageTask();//создаем объект для загрузки данных на сервер
    
    
          task.execute(new String[]{"http://android.gorodmoy.com", S1, imei});//запускаем загружку данных на сервер
    
          //---------------Загрузка изображения
        //  DownloadWebPageTask1 task1 = new DownloadWebPageTask1();//создаем объект для загурзки изображения на сервер
         // ImageAndName IMN = new ImageAndName();//создаем объект в котором будем хранить фото и имя файла
          //IMN.Bmp = myphoto;//записываем фото
      //    IMN.Name = S5;//записываем имя файла
        //  task1.execute(IMN);//запускаем передачу данныха на сервер.
    
    
    
    
      }
      //--------------------------------------------------------------------------------------------------------- загрузка производителя ссервера
    
    
    

     

  • Android studio Проект по работе с картой. Геолокация.

    package com.example.admin.myapplication;
    
    import android.Manifest;
    
    import android.content.DialogInterface;
    import android.content.pm.PackageManager;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    
    import com.google.android.gms.maps.CameraUpdateFactory;
    import com.google.android.gms.maps.GoogleMap;
    import com.google.android.gms.maps.MapView;
    import com.google.android.gms.maps.MapsInitializer;
    import com.google.android.gms.maps.OnMapReadyCallback;
    import com.google.android.gms.maps.model.CameraPosition;
    import com.google.android.gms.maps.model.LatLng;
    
    public class MainActivity extends AppCompatActivity {
    
        GoogleMap googleMap;//объект гугл карты
        MapView mMapView;//объект для отображения карты
    
        static double TARGET_LATITUDE = 49.8240877;//координаты на карте
        static double TARGET_LONGITUDE = 72.8887742;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            mMapView = (MapView) findViewById(R.id.mapView);//получаем карту
            mMapView.onCreate(savedInstanceState);//создаем карут
    
            mMapView.onResume(); // необходимо для отображения карты
    
            try {
                MapsInitializer.initialize(this.getApplicationContext());//инициализируем карту
            } catch (Exception e) {
                e.printStackTrace();
            }
    
            mMapView.getMapAsync(new OnMapReadyCallback() {
                @Override
                public void onMapReady(GoogleMap mMap) {//получаем карту в асинхронном режиме
                    googleMap = mMap;
    
                    // показать кнопку перемещения в моую локацию
                    int status = getPackageManager().checkPermission(Manifest.permission.ACCESS_COARSE_LOCATION,//проверка есть ли у приложения доступ к геоданным
                            getPackageName());
                    if (status != PackageManager.PERMISSION_GRANTED)return ;//если нет доступа к геоданным то мы возвращаем null что означает локацию определить невозможно
                    googleMap.setMyLocationEnabled(true);
    
                    // отображаем маркер на карте по умолчанию это Сидней
                    LatLng sydney = new LatLng(TARGET_LATITUDE,   TARGET_LONGITUDE);
    
    
                    // для автоматического масштабирования карты и управления камерой
                    CameraPosition cameraPosition = new CameraPosition.Builder().target(sydney).zoom(12).build();
                    googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
                }
            });
    
        }
    }
    

     

    Манифест

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.admin.myapplication">
    
        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
            <activity android:name=".MainActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
    
            <meta-data
                android:name="com.google.android.geo.API_KEY"
                android:value="AIzaSyB9W_3A70USW6tb4Rlhfq0BaNSho30Zse8"/>
    
        </application>
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
        <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    
    
    </manifest>

    Дизайн

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/activity_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context="com.example.admin.myapplication.MainActivity">
    
    
    
        <com.google.android.gms.maps.MapView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/mapView" />
    </RelativeLayout>
    

     

  • Куки сессии POST GET и Ajax в MVC. Урок 6. MVC ASP.NET в Караганде.

    Куки сессии POST GET и Ajax в MVC. Урок 6. MVC ASP.NET в Караганде.

    Теоретическая часть.

    Контроллеры часто нуждаются в доступе к данным из входящего запроса, таким как значения строки запроса, значения формы и параметры, извлеченные из URL системой маршрутизации. Существуют три основных способа доступа к таким данным:

    • извлечение данных из набора объектов контекста;
    • передача данных в качестве параметров методу действия;
    • явное обращение к средству привязки моделей инфраструктуры.

    В этой статье мы рассмотрим подходы к получению исходных данных для методов действий, концентрируя основное внимание на объектах контекста и параметрах методов действий.

    Получение данных из объектов контекста

    Когда вы создаете контроллер путем его наследования от базового класса Controller, то получаете в свое распоряжение набор удобных свойств для доступа к информации, касающейся запроса. К таким свойствам относятся Request, Response, RouteData, HttpContext и Server. Каждое перечисленное свойство отвечает за конкретный аспект запроса. Мы называем их удобными свойствами, поскольку каждое из них извлекает определенный тип данных из экземпляра ControllerContext для запроса (который доступен через свойство Controller.ControllerContext).

    Наиболее часто используемые объекты контекста и свойства описаны в таблице ниже:

    Часто используемые объекты контекста ControllerContext и свойства
    Свойство Тип Описание
    Request.QueryString NameValueCollection Переменные GET, отправленные с этим запросом
    Request.Form NameValueCollection Переменные POST, отправленные с этим запросом
    Request.Cookies HttpCookieCollection Cookie-наборы, отправленные браузером с этим запросом
    Request.HttpMethod string Метод HTTP (команда наподобие GET или POST), используемый для этого запроса
    Request.Headers NameValueCollection Полный набор заголовков HTTP, отправленных с этим запросом
    Request.Url Uri Элемент RouteTable.Routes, выбранный для этого запроса
    Request.UserHostAddress string IP-адрес пользователя, сделавшего этот запрос
    RouteData.Route RouteBase Элемент Routetable.Routes, выбранный для этого запроса
    RouteData.Values RouteValueDictionary Активные параметры маршрута (либо извлеченные из URL, либо стандартные значения)
    HttpContext.Application HttpApplicationStateBase Хранилище состояния приложения
    HttpContext.Cache Cache Хранилище кеша приложения
    HttpContext.Items IDictionary Хранилище состояния для текущего запроса
    HttpContext.Session HttpSessionStateBase Хранилище состояния для сеанса посетителя
    User IPrincipal Аутентификационная информация о вошедшем пользователе
    TempData TempDataDictionary Временные элементы данных, сохраненные для текущего пользователя

    Отдельные свойства, которые здесь упоминались — Request, HttpContext и т.д. — предоставляют объекты контекста. Здесь они подробно не рассматриваются (поскольку являются частью платформы ASP.NET), но следует знать, что такие объекты предоставляют доступ к полезной информации и средствам, и более подробно вы можете прочитать о них в разделе, посвященном

    Метод действия может использовать любой из этих объектов контекста для получения информации о запросе, как демонстрируется в примере ниже:

     

    Давайте попробуем получить данные описанные выше. Для этого нам понадобиться создать MVC проект.

    В HomeController вывести данные из объектов контекста.

    // Получить доступ к разнообразным свойствам из объектов контекста
    ViewBag.userName = User.Identity.Name;
    ViewBag.serverName = Server.MachineName;
    ViewBag.clientIP = Request.UserHostAddress;
    ViewBag.dateStamp = HttpContext.Timestamp;

    // Параметры адресной строки
    ViewBag.QueryString = Request.QueryString;
    ViewBag.myURL = Request.Url.AbsoluteUri;

    Вывести их в представлении Index.

    <h1>Параметры проекта</h1>
    Имя пользователя:
    @ViewBag.userName
    <br/>
    Имя сервера:
    @ViewBag.serverName
    <br />
    IP адрес:
    @ViewBag.clientIP
    <br />
    dateStamp:
    @ViewBag.dateStamp
    <br />
    QueryString:
    @ViewBag.QueryString
    <br>
    URL:
    @ViewBag.myURL
    <br />

    Зарегистрировать пользователя и посмотреть отобразится ли его имя в параметрах контекста.

     

    Давайте получим Get параметры из адресной строки.

    public ActionResult Index(string city)

    Добавим в индекс метод  параметр string city

    Изменим адресную строку и добавим GET параметр

    http://localhost:3509/Home/Index?city=city

    Выведем его в Index представлении через ViewBag

    Создадим форму и получим пост параметры и отобразим их.

    <form method='post'>
      <div class="form-group">
        <label for="email">Email address:</label>
        <input type="email" name='email' class="form-control" id="email">
      </div>
      <div class="form-group">
        <label for="pwd">Password:</label>
        <input type="password" name='password' class="form-control" id="pwd">
      </div>
      <div class="checkbox">
        <label><input type="checkbox"> Remember me</label>
      </div>
      <button type="submit" class="btn btn-default">Submit</button>
    </form>

    В контроллере добавьте метод для обработки post данных

    [HttpPost]
            public ActionResult Index()
            {
                // Получить доступ к разнообразным свойствам из объектов контекста
                ViewBag.email = Request.Form["email"];
                ViewBag.password = Request.Form["password"];
                
                return View();
            }

    Отобразите в представлении пароль и емайл

    email:
    @ViewBag.email
    <br>
    password:
    @ViewBag.password

    Работа с Cookie

    Задать значение куки

    var userCookie =new HttpCookie(«user», «Алексей»);

    userCookie.Expires.AddDays(365);

    HttpContext.Response.Cookies.Add(userCookie);

    Стереть куки

    var user = new HttpCookie("user")
                    {
                        Expires = DateTime.Now.AddDays(-1),
                        Value = null
                    };
                Response.Cookies.Add(user);

    ViewBag.CookieEmail = Request.Cookies[«email»].Value;

    Отобразите значение куки email.

    Работа с сессиями

    Session[«name»] = «Tom»;

    Создание AJAX формы в ASP.NET

    Казалось бы, зачем в данном случае Ajax, если мы можем, например, в форму вводить имя автора и отправлять на сервер, а сервер в качестве ответа возвратит нам страницу с нужным результатом. Но, как выше уже говорилось, AJAX поможет нам избежать перезагрузки всей страницы и выполнить загрузку данных в асинхронном режиме, что несомненно повышает производительность приложения.

    Установим AJAX

    Install-Package Microsoft.jQuery.Unobtrusive.Ajax

    Добавим AJAX форму.

    <div class="jumbotron">
        <h1>Параметры проекта</h1>
        @using (Ajax.BeginForm("myAJAX", new AjaxOptions { UpdateTargetId = "results" }))
        {
            <input type="text" name="name" />
            <input type="submit" value="Поиск" />
        }
        <div id="results"></div>
    </div>
    @Scripts.Render("~/scripts/jquery-1.10.2.min.js")
    @Scripts.Render("~/scripts/jquery.unobtrusive-ajax.min.js")

    Добавим код для обработки AJAX в Home контроллер

    [HttpPost]
          public ActionResult myAJAX(string name)
          {
              ViewBag.Message = name;
              return PartialView("");
          }

    Добавим частичное представление для отображения результатов AJAX

    Протестируем форму.

  • Курсы технического обслуживания. Курсы по установке и настройке Windows. Диагностика компьютера. Урок 3

    Курсы технического обслуживания. Курсы по установке и настройке Windows. Диагностика компьютера. Урок 3

    Программа урока.

    1. Создание загрузочной флешки используя Media Creation Tool. Установка и настройка Windows 10.
    2. Диагностика температуры процессора используя Core-temp
    3. Диагностика процессора использования Intel Cpu Test утилиты
    4. Диагностика компьютера используя CPU-Z обзор понятия сокет и чипсет.
    5. Диагностика графического адаптера используя GPU Z
    6. Диагностика производительности системы используя Cinebench.

     

     

  • Программирование макросов в EXCEL используя Visual Basic for Applications в Караганде. Программа курса. Обучающий центр IKurs.kz

    Программирование макросов в EXCEL используя Visual Basic for Applications в Караганде. Программа курса. Обучающий центр IKurs.kz

    В нашем центре проводятся индивидуальные занятия по обучению как программировать макросы в EXCEL.

    VBA (Visual basic for applicaions)  — инструмент позволяющий создавать макросы и автоматизировать рутинные операции в таблицах Excel.

     

    Курс углубленного изучения Excel в Караганде.

    Программа курса по написанию макросов в Excel

    1. Запись собственных макросов и их изучение. Запись данных в ячейки.
    2. Обращение к рабочим листам и книгам. Навигация по ячейкам. Относительная и абсолютная адресация.
    3. Переменные, операции с ними и операторы сравнения.
    4. Массивы и операции с ними.
    5. Условия If, Select Case.
    6. Циклы For, While, Foreach.
    7. Простые алгоритмы поиска и сортировки.
    8. Собственные функции и процедуры.
    9. Строковые функции.
    10. Выпадающие списки.
    11. Пользовательские формы.
    12. События в Excel.

     

  • Бланк технического обслуживания компьютера. Замена термопасты. Курсы обслуживания компьютеров в Караганде. Урок 2.

    Бланк технического обслуживания компьютера. Замена термопасты. Курсы обслуживания компьютеров в Караганде. Урок 2.

    Инструкция по техобслуживанию компьютера

     

    ФИО_______________________                                                     Дата заполнения ____________

     

    Модель материнской платы :_________________________

    Серийный номер материнской платы: _________________________

     

    Тест на работоспособность перед техническим обслуживанием.

    Включить компьютер  
    Войти в БИОС  
    Загрузить заводские настройки  
    Оставить на 15 минут в рабочем состоянии  
    Записать температуру материнской платы  
    Записать температуру процессора  

     

    Визуальный осмотр.

    Следы перегрева на разъемах  
    Налет пыли грязи на плате (при наличии очистить спиртом)  
    Наличие окисления на разъемах  
    Следы пайки описать если есть  
    Сколы на разъемах деталях  
    Повреждения лака. Царапины на плате  
    Вздутые конденсаторы. Перечислить если есть.  

     

    Замена термопасты

    Отсоединить разъем вентилятора  
    Снять радиатор  
    Очистить старую термопасту  
    Есть ли царапины на радиаторе?  
    Нанести свежую термопасту  
    Установить радиатор  
    Закрепить радиатор  
    Установить вентилятор и подсоединить питание  

     

     

     

     

    Тест на работоспособность после технического обслуживания.

    Включить компьютер  
    Войти в БИОС  
    Загрузить заводские настройки  
    Оставить на 15 минут в рабочем состоянии  
    Записать температуру материнской платы  
    Записать температуру процессора  

     

     

    Описание состояния платы и дефектов.

    Заключение:

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    Подпись __________

    Скачать бланк проверки компьютера.

    Бланк проверки компьютера.