Пишем свой Uploader с нуля на javascript используя FileApi. Часть4

В частях 1, 2, 3 мы научились читать файлы с диска.Теперь попробуем разобрать процесс отправки файлов на сервер с помощью технологии ajax.

В начале вспомним как работать с аяксом для передачи файла на сервер:

  1. Метод передачи будет POST
  2. Обязательно нужно будет указать Content-Type, а именно multipart/form-data
  3. Правильно сформировать само тело сообщения

Получим следующий код(по пунктам):

var request = new XMLHttpRequest(); 
request.onreadystatechange = ajaxReady; 
request.open('POST', 'uploader.php', true); // (1)
request.setRequestHeader('Content-Type', contentType); // (2)
request.sendAsBinary(createTestMsg()); // (3)

Continue reading

Почта gmail со своего домена

Как оказалось совсем не трудно связать свой домен с гугловым почтовым сервером, причем бесплатно. То есть если у вас есть домен виде mydomain.com, то вы сможете себе сделать почтовый ящик с адресом info@mydomain.com или somename@mydomain.com. Вся процедура не займет больше часа.

Continue reading

Пишем свой Uploader с нуля на javascript используя FileApi. Часть3

В этой части мы рассмотрим ключевой момент: чтение файла частями – это очень важно при отправке больших файлов( от 400-700МБ ), т.к. если мы будем пытаться их читать целиком – это вызовет дикие тормоза браузера.

Continue reading

Что нужно для создания внешнего ключа(FOREIGN KEY) в MySQL

Все или почти все слышали что есть такое понятие как внешний ключ, но не все его умеют использовать. Поэтому я выкину теорию “зачем это нужно” и “на сколько это полезно” и сразу перейду к практике. Давайте разберемся что нам необходимо для создания внешнего ключа в MySQL:

1. Движок(engine) обеих связываемых таблиц должен быть InnoDB.

2. Связываемые поля должны быть проиндексированы и иметь один тип ( размер и знак должен быть один )

Continue reading

Совсем немного о многопроцессовости в PHP

Только ключевые моменты:

– магия происходит с помощью функции pcntl_fork.

– работает только в CGI и CLI-режимах

– немного кода

$pid = pcntl_fork();
// создался дочерний процесс, все просто
// но дальше основная магия: выполнение едет в 2 независимых потока
// и все что будет дальше выполнится 2 раза
// резонный вопрос: как нам определить основной потом и дочерний
// а вот так:
if ($pid == -1) {
    //функции не удалось создать поток - ошибка
} elseif ($pid) {
    //если идентификатор есть - это родительский поток
} else {
    //если нет - соответственно дочерний
}
i++; //а этот код будет выполнен обеими потоками

Continue reading

Пишем свой Uploader с нуля на javascript используя FileApi. Часть2

Вот и созрело продолжение первой части, где мы разобрались как можно использовать родной объект FileReader для чтения файла.

Давайте еще добавим прогресс чтения файла для нашего загрузчика. Для этого зададим callback метод для FileReader:

reader.onprogress = updateProgress;

Continue reading

Схема расположения мест Skoda&Hyundai

Делаю репост полезной информации по новому поезду.

Вагоны 1 и 6 (головные):

2 этаж (места с 1 по 23 по схеме 2+1) – 1 класс
Места с 1 по 15 – двуместные (два кресла рядом). Места 1-4 – со столиком.
Места с 16 по 23 – одноместные (без «соседа»). Места 22 и 23 – друг напротив друга и со столиком.

1 этаж – 2 класс (места с 24 по 42 по схеме 2+2)
места 24, 25, 26, 27 в 1 вагоне – для проводников
места 43, 44, 45, 46 в 1 и 6 вагонах – для инвалидов-колясочников

6 вагон – штабной.

Continue reading