19 способов искать информацию в Google, о которых не знает 96% пользователей

google-hummingbird1

Ежедневно миллионы людей используют Google для поиска разнообразной информации. Однако большинство из нас использует только малую часть всех возможностей поиска. Предлагаем вам 19 способов, которые помогут найти необходимую вам информацию в Google наиболее эффективно!

1. Как найти точную фразу или форму слова
Найти точную фразу или форму слова просто! Для этого используйте кавычки «». Возьмите фразу или слово в кавычки, и Google будет искать веб-страницы, где есть ровно такая фраза (форма слова).

Например:
«дивлюсь я на небо»

2. Как найти цитату, в которой пропущено слово
Если вы забыли слово в цитате — не беда! Просто возьмите всю вашу цитату в кавычки и вместо забытого слова поставьте звездочку *. И ваша цитата найдется вместе с забытым словом.

Например:
«чому я * сокіл»

3. Как найти любые из нескольких слов
Просто перечислите все подходящие варианты через вертикальный слеш: |. Google будет искать документы с любым из этих слов.

Например:
вареники | деруны | горілка
дачные участки (борисполь | гатное)

4. Как найти слова в пределах одного предложения
Используйте оператор с красивым именем «амперсанд» — &. Если соединить слова амперсандом, Google найдет документы, где эти слова стоят в одном предложении.

Например:
Памятник Тарасу Шевченко & Киев

5. Как найти документ, содержащий определённое слово
Поставьте перед нужным словом плюс, не отделяя его от слова пробелом. В запрос можно включить несколько обязательных слов.

Например:
Бывший памятник Ленину +бульвар

6. Как исключить слово из поиска
Поставьте минус перед словом, которое вы не хотите видеть в ответах. Так можно исключить даже несколько слов:

Например:
червона рута -ротару -песня
схемы вышивки -спицами

7. Как искать на определенном сайте
Для этого подойдет оператор site. Он позволяет прямо в запросе указать сайт, на котором нужно искать. Только обязательно поставьте после site двоеточие.

Например:
Конституція України site:rada.gov.ua

8. Как искать документы определенного типа
Вам нужен оператор mime. Поставьте в запросе mime, двоеточие и затем тип документа, который вам нужен. Например, pdf или doc.

Например:
заявление на загранпаспорт mime:pdf

9. Как искать на сайтах на определенном языке
С помощью оператора lang. После lang нужно поставить двоеточие и написать, на каком языке вам нужны документы. Если это русский язык, то нужно указать ru, если украинский — uk. Белорусский язык обозначается как be, английский — en, французский — fr.

Например:
void glClearColor lang:ru

10. Поиск по синонимам
Символ ~ для поиска слов, схожих к выбранному. Увидите все ссылки на страницы с синонимами к слову лучшие, но ни одна из них не будет содержать это слово.

Например:
~лучшие фильмы -лучшие

11. Значение слова
Введите в поисковую строку define:, и узнаете значение этого слова.

Например:
define:кильт

12. Обратные ссылки
Наберите links:названиесайта, и вы узнаете ссылки, ведущие на этот сайт.

Например:
links:naked-science.ru/

13. Конвертер величин
Если вам необходимо узнать величины просто введите ваш запрос в строку.

Например:
1 кг в фунтах

14. Узнать курс валют
Чтобы узнать курс валют, достаточно просто ввести запрос.

Например:
1 гривна в рублях

15. Время по городу
Введите запрос, состоящий из «время» и «город», — в первой строке будет точное время этого города.

Например:
time Киев
время Киев

16. Калькулятор
Достаточно вбить пример в строку поиска и нажать поиск — Google выдаст результат уравнения.

Например:
69+1

17. Поиск кэшированной страницы
У Google есть свои сервера, где он хранит кэшированные страницы. Если нужна именно такая: «caсhe:»

Например:
caсhe:naked-science.ru/

18. Прогноз погоды по городу
Так же, как и в случае со временем, в строке поиска используем оператор «weather» и «город». И узнаете прогноз на несколько дней.

Например:
weather Киев

19. Переводчик
Можно переводить слова, не отходя от поисковика. «translate слово into язык».

Например:
translate я люблю into italian

Источник: http://uainfo.org/blognews/1473332698-19-sposobov-iskat-informatsiyu-v-google-o-kotoryh-ne-znaet-96-.html

Заработок на рекламе в интернет, краудфандинг

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

Как пример такого проекта, сайт заработка в интернет Revenue Central: http://revenuecentral.net

На данном сайте, Вы можете заработать на просмотре рекламы в интернет. Просматриваете рекламу и получаете за это начисления в $.

Рекламодатели могут разрекламировать свой интернет-ресурс. Правда, т.к. этот ресурс иностранный, такая реклама более интересна тем, у кого продукция международного значения.

Но, нам, жителям стран СНГ данный проект интересен тем, что за просмотр рекламы, начисления идут в долларах. Т.к. курс доллара сейчас ощутимо большой, то и заработок становится интересным…

Если же вам хочется вложить деньги в проект краудфандинга, то Вы можете стать инвестором данного проекта и за это получать дивиденды от продуктов данной компании.

Как обещают на сайте, в скором времени, кроме рекламы на сайте появится игры с выплатой денег. Т.е. Вы можете не только получить удовольствие от игры в интернет, но и получить деньги.

Можно ли на этом сильно заработать ? Думаю, нет. Но, стоит ли попробывать ? Да!

Ах да, еще один способ заработка — это заработок на реферальных ссылках. Регистрируетесь на сайте, рекламируете его в интернет и получаете начисления за это. Чем больше людей регистрируется — тем больше у Вас начисления.

Заработок на рекламе в интернет

Разработка и создание сайтов, интернет-магазинов, веб-приложений, порталов, лэндингов, мобильных приложений (Киев)

Предметная визуализация

MySQL шпаргалки

Часто, когда разрабатываешь сайт, замечаешь, как на одни и те же грабли наступают разработчики при проектировании базы данных.

Сегодня я решил опубликовать свои шпаргалки, на самые часто встречающиеся ошибки при работе с MySQL.

Работа с бекапами

Делаем бекап
mysqldump -u USER -pPASSWORD DATABASE > /path/to/file/dump.sql

Создаём структуру базы без данных
mysqldump —no-data — u USER -pPASSWORD DATABASE > /path/to/file/schema.sql

Если нужно сделать дамп только одной или нескольких таблиц
mysqldump -u USER -pPASSWORD DATABASE TABLE1 TABLE2 TABLE3 > /path/to/file/dump_table.sql

Создаём бекап и сразу его архивируем
mysqldump -u USER -pPASSWORD DATABASE | gzip > /path/to/outputfile.sql.gz

Создание бекапа с указанием его даты
mysqldump -u USER -pPASSWORD DATABASE | gzip > date +/path/to/outputfile.sql.%Y%m%d.%H%M%S.gz

Заливаем бекап в базу данных
mysql -u USER -pPASSWORD DATABASE < /path/to/dump.sql

Заливаем архив бекапа в базу
gunzip < /path/to/outputfile.sql.gz | mysql -u USER -pPASSWORD DATABASE
или так
zcat /path/to/outputfile.sql.gz | mysql -u USER -pPASSWORD DATABASE

Создаём новую базу данных
mysqladmin -u USER -pPASSWORD create NEWDATABASE

Удобно использовать бекап с дополнительными опциями -Q -c -e, т.е.
mysqldump -Q -c -e -u USER -pPASSWORD DATABASE > /path/to/file/dump.sql, где:

-Q оборачивает имена обратными кавычками
-c делает полную вставку, включая имена колонок
-e делает расширенную вставку. Итоговый файл получается меньше и делается он чуть быстрее

Для просмотра списка баз данных можно использовать команду:
mysqlshow -u USER -pPASSWORD

А так же можно посмотреть список таблиц базы:
mysqlshow -u USER -pPASSWORD DATABASE

Для таблиц InnoDB надо добавлять —single-transaction, это гарантирует целостность данных бекапа.
Для таблиц MyISAN это не актуально, ибо они не поддерживают транзакционность.

Подробнее

Общие факты

Полезно под каждую базу на боевом сервере создавать своего пользователя
Кодировка базы может быть любой, если она UTF8
В большинстве случаев лучше использовать движок InnoDB
В php лучше забыть про сильно устаревшее расширение mysql и по-возможности использовать pdo или mysqli
Новую копию MySQL всегда можно настроить и оптимизировать
Без особой нужды не стоит открывать MySQL наружу. Вместо этого можно сделать проброс портов
ssh -fNL LOCAL_PORT:localhost:3306 REMOTE_USER@REMOTE_HOST

Работа с данными

Числа

На 32-битных системах практически нет смысла ставить для типа INTEGER свойство UNSIGNED, так как такие большие числа в php не поддерживаются.
На 64-битных системах, php поддерживает большие числа, вплоть до MySQL BIGINT со знаком.
Связанные таблицы («Foreign keys») должны иметь полное сходство по структуре ключей. Т.е. если у нас на одной таблице для поля указано «INTEGER UNSIGNED DEFAULT 0 NOT NULL» то и на другой должно быть указано аналогично
Для хранения булевых значений, нужно использовать TINYINT(1)
А деньги лучше хранить в DECIMAL(10, 2), где первое число обозначает количество всех знаков, включая запятую, а второе — количество знаков после запятой. Итого, у нас получится что DECIMAL(10,2) может сохранить 9999999,99

Строки

В старых версиях (до 5.0.3) VARCHAR была ограничена 255 символами, но сейчас можно указывать до 65535 символов
Помните, что тип TEXT ограничен только 64 килобитами, поэтому что бы сохранять «Войну и Мир» пользуйтесь «LONGTEXT»
Самая правильная кодировка для вашей БД UTF8

Даты

Не забывайте, что

DATE, TIME, DATETIME — выводятся в виде строк, поэтому поиск и сравнение дат происходит через преобразование
TIMESTAMP — хранится в виде UNIX_TIMESTAMP, и можно указать автоматически обновлять колонку
Сравнивая типы данных DATETIME и TIMESTAMP, не забывайте делать преобразование типов, например:
SELECT * FROM table WHERE datetime = DATE(timestamp)

Перечисления

Для перечислений правильно использовать тип ENUM
Правильно пишется так: ENUM(‘мама’, ‘мыла’, ‘раму’)
Можно ставить значение по-умолчанию, как и для любой строки
В базе поле с перечислением хранится как число, поэтому скорость работы — потрясающе высокая
Количество перечислений ~ 65 тысяч
dev.mysql.com/doc/refman/4.1/en/storage-requirements.html
help.scibit.com/mascon/masconMySQL_Field_Types.html

Отладка

Если запросы тормозят, то можно включить лог для медленных запросов в /etc/mysql/my.cnf
А потом оптимизировать запросы через EXPLAIN
И наблюдать за запросами удобно через программу mytop

Пожалуйста, сообщите мне, если вы заметили неточность или есть желание поделиться советом или шпаргалкой.

Источник: https://habrahabr.ru/post/105954/

Price Action. Автоматизация торговли по внутреннему бару

Введение

Каждый, кто изучает рынок Forex, рано или поздно сталкивается с Price Action. Это не просто методика чтения графиков, это целая система определения возможного направления движения цены. В данной статье мы детально рассмотрим паттерн «внутренний бар» и создадим эксперта, который будет отслеживать данный паттерн и на его основании принимать торговые решения.

Коротко о Price Action

Что же такое Price Action? Это безындикаторный метод определения движения цены. Определение происходит за счет образовавшихся сложных и простых паттернов, а также построения вспомогательных графических элементов на графике (горизонтальные, вертикальные и трендовые линии, уровни Фибоначчи, уровни поддержки/сопротивления и так далее).

На первый взгляд метод покажется достаточно сложным, но это только на первый взгляд. Преимущества данного метода очевидны, например, если сравнивать с методами, использующими технические индикаторы. Не зря метод Price Action с каждым годом набирает популярность среди трейдеров.

Внутренний бар

Внутренний бар (Inside Bar) — это бар, тело и тень которого находятся полностью в диапазоне предыдущего (определяющего) бара. Максимум внутреннего бара находится ниже максимума, а минимум — выше минимума определяющего бара. Определяющий бар также часто называют измерительным. В качестве паттерна и потенциального сигнала для входа рассматривают внутренний бар вместе с определяющим.

В принятии торговых решений следует учитывать, что паттерн двусторонний и может указывать как на разворот, так и на продолжение тренда.

MT4

MT4

Правила внутреннего бара:

*    Работать с паттерном «внутренний бар» следует на старших временных графиках: H4, D1.
*    Паттерн может быть как разворотным, так и продолжением тренда.
*    Для более точного входа следует применять дополнительные элементы графического анализа: трендовые линии, уровни поддержки/сопротивления, уровни Фибоначчи, другие паттерны Price Action и так далее.
*    Во избежание преждевременного или ложного входа в рынок необходимо использовать отложенные ордера.
*    Внутренние бары, повторяющиеся во флэте, не стоит использовать в качестве сигнала к входу в рынок.

MT4

Исходя из вышеперечисленных правил, определяем качественный внутренний бар. На графике видно, что после резкого падения образовался бычий бар, полностью поглощенный определяющим. В качестве подтверждения — паттерн образован на уровне поддержки. Третьим подтверждением является то, что паттерн не был образован во флэте. Из чего следует, что паттерн удовлетворяет трем правилам, а следовательно, его следует считать качественным.

Определение точек входа, установка стоп-приказов

Мы нашли на графике (рис. 3) качественный внутренний бар. Как же следует входить в рынок и где выставлять стоп-приказы? Рассмотрим рисунок 4.

MT4

Рассмотрим правила входа и установки стоп-приказов на примере выше:

1.    Выставляем отложенный ордер Buy Stop по цене чуть выше цены High (на несколько пунктов, для подтверждения) определяющего бара.
2.    Уровень Stop Loss устанавливаем ниже уровня поддержки и ниже цены Low определяющего бара. Это дает нам дополнительную защиту в случае срабатывания отложенного ордера и разворота, когда цена может вновь отскочить от уровня поддержки и возобновить движение в нужном направлении.
3.    Уровень Take Profit устанавливаем, не доходя до ближайшего уровня сопротивления.

Мы также помним, что внутренний бар может быть предвестником как разворота, так и продолжения тренда. Следовательно, имеет смысл устанавливать Sell Stop ордер.

MT4

Рассмотрим правила входа и установки стоп-приказов на примере выше:

1.    Выставляем отложенный ордер Sell Stop по цене чуть ниже цены Low (на несколько пунктов, для подтверждения) определяющего бара.
2.    Уровень Stop Loss устанавливаем выше цены High определяющего бара.
3.    Уровень Take Profit устанавливаем, не доходя до ближайшего уровня поддержки.

Создание советника для торговли по внутреннему бару

Изучив вышеизложенный материал, мы научились находить качественный внутренний бар на графике, научились правильно и безопасно входить в рынок, а также определили уровни стоп-приказов, чтобы ограничить возможные потери или зафиксировать прибыль.

Далее мы постараемся реализовать алгоритмы советника и автоматизировать торговлю по внутреннему бару.

Открываем MetaEditor из терминала MetaTrader 4 и создаем нового советника (на данном моменте останавливаться подробнее не буду, так как на сайте достаточно литературы по созданию советников). На этапе создания оставляем все параметры пустыми. Назвать их можно как угодно. В итоге должно получиться следующее:

Перенос конструкции графической модели в алгоритмы MQL4

Итак, мы создали советника. Теперь нам нужно определить внутренний бар после закрытия свечи. Для этого мы вводим новые переменные и присваиваем им значения. Смотрите код ниже:

В качестве примера мы рассмотрим одну конструкцию внутреннего бара, когда определяющий бар медвежий (бар 2), а внутренний бар бычий (бар 1). Для этого напишем несколько условий в теле функции OnTick():

*    Создаем переменные, настраиваемые пользователем: стоп-приказы, проскальзывание, время истечения ордеров, магический номер советника, торговый лот. Стоп-лосс можем не указывать, так как будем устанавливать его по правилам внутреннего бара.
*    Вводим локальные переменные для приведения переменных в нормальный вид.
*    Кроме того, мы помним, что стоп-приказы устанавливаются на определенном интервале от значений цен бара. Для этого вводим входную переменную Interval, которая отвечает за интервал между ценами минимума/максимума бара и уровнями стоп-приказов, а также ценой установки отложенного ордера.
*    Вводим переменную timeBarInside, отвечающую за предотвращение повторного открытия ордера на данном паттерне.
*    Вводим переменную bar2size для проверки, что определяющий бар имеет достаточно большой размер. Тем самым, мы можем предположить, что рынок не находится во флэте.

В результате мы получаем следующий код:

Определение уровней стоп-приказов

После всех приготовлений нам осталось только определить уровни стоп-приказов и цены установки ордера. Не забываем также о расчете даты истечения ордера.

В теле функции OnTick() пишем следующий код:

Работа над ошибками исполнения

Если вы когда-либо занимались разработкой советников, то наверняка знаете, что при открытии и установке ордеров достаточно часто встречаются ошибки, такие как время ожидания, неправильные стопы и многие другие. Чтобы исключить их, напишем отдельную функцию, в которую встроим небольшой обработчик основных ошибок.

В результате всех действий получаем следующий код:

Проводим компиляцию. Проверяем наличие записей в логе ошибок.

Тестирование советника

Проверяем советника на работоспособность и отсутствие ошибок. Запускаем тестер стратегий и устанавливаем входные параметры. Я установил следующие:

MT4
1.    Выбираем валютную пару для тестирования. Я выбрал CADJPY.
2.    Обязательно выбираем модель тестирования «Все тики», а также указываем, что тестирование будем проводить на исторических данных. Я выбрал за весь 2014 год.
3.    Указывам период D1.
4.    Запускаем тестирование.
5.    После завершения тестирования проверяем журнал. В результате мы видим, что при тестировании не возникало ошибок исполнения.

Вот пример журнала после тестирования:

MT4

Убедившись в отсутствии ошибок, проводим оптимизацию советника.

Оптимизация

Для оптимизации советника я выбрал следующие параметры:

MT-4

MT-4

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

Результаты оптимизации и тестирования

MT-4

MT-4

Заключение

В рамках данной статьи мы создали рабочего советника, торгующего по внутреннему бару.
Мы убедились, что даже не имея дополнительных фильтров для входа в рынок, паттерны Price Action работают.
Мы доказали работоспособность, не прибегая к хитростям и уловкам, таким как Мартингейл, усреднение и так далее.
Благодаря правильной установке стоп-приказов мы минимизировали просадку.
Мы не прибегали к помощи технических индикаторов, а создали советника исключительно на чтении «голого» графика.

Спасибо за внимание, надеюсь, статья оказалась полезной

Прикрепленные файлы | Загрузить ZIP
insidebar.mq4 (19.53 KB)

Источник: https://www.mql5.com/ru/articles/1771?utm_campaign=MetaEditor+5&utm_medium=special&utm_source=mt5editor+article

Предметная визуализация

Урезание логов в SQL Server 2012

Логи транзакций в MS SQL имеют обыкновение разрастаться, что иногда может привести к окончанию места на диске. Чтобы этого не происходило, в SQL Server существует операция урезания логов (Truncate). Урезание логов производится автоматически, в зависимости от модели восстановления:

• В простой модели (Simple) — после достижения контрольной точки;
• В модели полного восстановления (Full) — после создания бэкапа логов, при условии что со времени предыдущего бэкапа была достигнута контрольная точка.

Но бывают ситуации, когда автоматическое урезание по каким либо причинам не производится и логи занимают все свободное место. Причем происходит это всегда неожиданно и требуется срочно освободить место. В этом случае урезание можно произвести вручную.

Подобная ситуация, как правило, происходит с моделью восстановления Full, при использовании которой лог нельзя обрезать до тех пор, пока в резервную копию не попали все транзакции. Это необходимо для того, чтобы обеспечить наличие непрерывную последовательность номеров (LSN) записей в журнале. Соответственно для урезания надо либо сделать полный бэкап базы, либо (что проще и быстрее) временно перевести ее в режим Simple.

Для урезания лога открываем Management Studio, выбираем нужную базу, кликаем на ней правой клавишей мыши и в открывшемся контекстном меню выбираем пункт «Properties». Переходим на вкладку «Options» и изменяем модель восстановления базы (Recovery model) на Simple.

shrink1Затем в том же контекстном меню переходим в раздел Tasks -> Shrink -> Files. В поле File type выбираем Log, в поле File name указываем имя файла логов. В поле «Shrink action» выбираем «Reorganize pages before releasing unused space», задаем желаемый размер файла и жмем ОК.

Обрезание базы данных MsSQL

После завершения операции возвращаем режим восстановления базы обратно в Full.

Тоже самое можно проделать из Query Analizer с помощью скрипта:

Это всего лишь  один из способов быстрого уменьшения размера логов. Не самый красивый ? но наиболее простой и эффективный.

Источник: http://windowsnotes.ru/database/urezanie-logov-v-sql-server-2012/

Услуги программирования в 1С. Киев

Ajax загрузка файлов средствами jQuery и CodeIgniter

Добрый день!

Долгое время на просторах интернета я искал информацию о реализации AJAX загрузки файлов для CodeIgniter. Разные разработчики предлагали разные технологии и примеры реализации. Я перепробовал их все, но ни одна из них не была достаточно проста и функциональна одновременно. Лишь недавно я открыл для себя jQuery File Uploader. «Он ничем не отличается от остальных» — скажите вы, но это не так. Его главное отличие — это простота и хорошая документация с примерами. В документации разобраны все callback’и, описаны все options. Внедрение в любую систему не занимает много времени.

Сегодня я покажу как можно очень просто организовать multipart загрузку файлов на сервер + drug&drop в CodeIgniter.

jQuery File Uploader + CodeIgniter

Из коробки CodeIgniter предлагает нам использовать библиотеку $this->load->library(‘upload’);, которая позволяет контролировать передаваемые файлы, ограничивая загрузку по типу, размеру, ширине и высоте изображения. Использовать ее легко и удобно, но следует отметить небольшое ограничение налагаемое на INPUT данной библиотекой. Поле INPUT должно обязательно иметь параметр name=«userfile». Соглашаемся с этим фактом и переходим в Controller к функции которая будет вызывать библиотеку Upload и, собственно, сохранять наши файлы на диск.

Пример реализации PHP функции:

Внимание! Для того, что бы у Вас работали все allowed_types необходимо дописать недостающие MIME-Types в конфигурационный файл /application/config/mimes.php

У нас готова функция для сохранения файла на сервер. Переходим к клиентской части. Нам понадобится скачать с Github jQuery File Upload . Плагин предоставляет большие возможности, но все их использовать мы не будет, воспользуемся лишь загрузкой нескольких файлов, drug&drop и progressall.

Подключаем на страницу загрузки необходимые JS:

И CSS файл:

Добавляем наш INPUT на страницу:

Осталось совсем не много — написать upload.js, который будет прослушивать событие изменения поля INPUT и вызывать загрузку выбранного файла. «А где же обещанный Drug&Drop?» — спросите Вы. Drug&Drop уже работает благодаря jQuery File Upload. Вместо вызова стандартного диалога выбора файла вы можете перетащить сразу несколько файлов на страницу и они в порядке очереди загрузятся на сервер.

И на последок Upload.js

data — это наш ответ от сервера, но он не является массивом с информацией о загруженном файле. Вся информация в формате JSON хранится в Data.Result. Кстати говоря console.log(data) поможет найти много интересных вещей, таких как: количество отправленных файлов, ошибки и многое другое.

Вот собственно и все, надеюсь на полезность материала.

Разработка и создание сайтов, интернет-магазинов, веб-приложений, порталов, лэндингов, мобильных приложений (Киев)

Пошаговая инструкция по реализации загрузки файлов на сервер без перезагрузки страницы на PHP + Javascript

Проблема

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

Идея и алгоритм решения

Так как описания и фотографии для получения конечного результата можно изменять очень много раз, решено было осуществить следующую схему работы: фотографии загружаются на сервер на одной при клике на фото-иконку, при этом в случае успеха сервер возвращает имя картинки, а при неуспехе — «error». Соответственно, в случае успеха, фото-иконка заменяется на миниатюру загруженного фото, а в скрытое поле формы соответствующей строки сохраняется её имя, а при неуспехе мы получаем фото-иконку и пустое скрытое поле формы соответствующей строки, отвечающее за имя фото. Текстовая же информация при изменении любого поля формы отправляется на сервер вся в формате массив [имяФото, описаниеДетали, количествоШт] — это наиболее универсально: один и тот же метод отвечает за полное обновление списка товаров при их редактировании или удалении. Как известно, AJAX не умеет отправлять файлы, поэтому реализуем процедуру загрузки с помощью обычной формы, в качестве target которой укажем скрытый фрейм, который и будет перезагружаться вместо страницы.

Практическая реализация

Итак, в нашем распоряжении HTML, PHP и Javascript. Поехали:

1. Верстаем на странице форму для загрузки фото. Она содержит только один input, который мы спрячем с помощью css:

2. Создадим на странице скрытый iframe, который и будет перезагружаться в результате отправки формы с файлом:

3. Верстаем таблицу товаров, с которой и будет работать пользователь:

В строке товара мы имеем:

— иконка, клик которой будет имитировать клик /> в форме загрузки фото,

— это наш скрытый input, отвечающий за имя фото,

— описание,

— количество штук.

3. Пишем PHP-код загрузки файла:

Мой проект на CodeIgniter, поэтому код вот такой, но в целом, суть в следующем: мы просто загружаем и переименовываем полученный из формы файл, если всё проходит успешно, выводим в наш iframe его имя, если нет — «error».

4. Пишем Javascript, который будет контролировать весь процесс:

Вот тут объясню подробнее:

— просто расставляет порядковые номера в таблице,

— отправляет на сервер все текстовые поля нашей таблицы товаров. Их обработку в рамках этой статьи упоминать смысла нет,

— указываем переменные, которые будут содержать ссылку на текущее фото и таймер. Подробнее об этом чуть позже;

— одна из основных функций: отвечает за обработку результата загрузки фото на основе содержимого нашего скрытого iframe. Эта функцию запускается с интервалом при отправке формы фото и заканчивает своё выполнение подстановкой миниатюры фото вместо фото иконки или выдачей сообщения об ошибке при обнаружении изменения содержимого iframe, то есть по окончании обработки фото сервером;

— просто расставляет порядковые номера в таблице при загрузке страницы — я не включил в статью то, что эта страница используется как при первом добавлении товаров в список, так и при редактировании этого списка, то есть таблица товаров может быть изначально не пустой;

— эмулируем клик input file в форме загрузки изображения при клике фото-иконки (так как пользователь может передумать использовать ранее загруженное фото, очищаем его перед выбором следующего);

— отправляем форму загрузки фото на сервер при изменении поля фото;

— вызываем с интервалом вышеописанную функцию обработки результата загрузки фото на сервер;

— при изменении любого поля (в том числе и имени фото) в списке товаров отправляем его весь на сервер;

— добавляет строку в таблицу товаров;

— удаляет строку из таблицы товаров.

 

Источник: https://habrahabr.ru/post/256197/

Разработка и создание сайтов, интернет-магазинов, веб-приложений, порталов, лэндингов, мобильных приложений (Киев)

Логирование в «1С:Підприємство»

linux_and_windows

Часто бывает, необходимо отслеживать состояние часто повторяющихся регламентных заданий. Например, синхронизация данных с IP-телефонией, которая может производиться каждую минуту, синхронизация с сайтами, синхронизация данных с различными системами.

Использовать для этих целей логирование «1С:Підприємство» чрезвычайно не эффективно и не удобно.

В таких случаях удобно использовать подход применяемый в Unix-системах: писать логи в обычные текстовые файлы, а потом делать их обработку через эффективно работающие Unix-команды: grep, tail, cat, less и т.п.

Итак, рассмотрим программную реализацию в «1С:Підприємство»:

Название модуля — К2_Лог

Примеры применения команды:

Фиксация времени выполнения регламентных задач:

В данном примере мы фиксируем время выполнения регламентного задания и записываем данное время в лог. Причем, записываем и начало регламентного задания и окончания. Таким образом, если регламентное задание не завершилось — мы видим, что 2-я строка не записалась.

Фиксация ошибок

В регламентном задании, сообщения не выдаются на экран. Но, их можно писать в лог. Таким образом, если возникают ошибки, имеет смысл их фиксировать в логе.

 

Анализ логов с помощью команд Linux

Операционная система Windows поддерживает очень ограниченный набор команд по работе с тектовыми файлами. Однако, в Linux есть ряд команд, которые позволяют обработать много гигабайтные файлы за считанные секунды.

Мы можем сделать поддержку данных команд. Они, конечно, не гораздо менее эффективно работают, чем в Linux, но позволяют сделать обработку текстовых файлов легким занятием.

Для того, чтоб команды Linux поддерживались в Windows, необходимо сделать ряд вещей:

Необходимо распаковать в системный каталог, доступный в путях пакет UnxUpdates: http://unxutils.sourceforge.net/

После этого в командной строке, будут восприниматься команды Linux.

Вывод на экран последних поступающих строк в логе:

Данная команда полезна для мониторинга поступающих строк в лог-файл.

Поиск нужной строки в логе:

Команда cat — выводит на экран текстовый файл. Команда grep — фильтрует вывод по заданному условию. Таким образом, соединение 2-х данных команд позваляет отфильтровать данные в текстовом файле по заданному выражению.

Вывод на экран строк по заданному слову

Данная команда выводит поступающие строки, в которых заданы указанные слова.

 

Автор: Рудюк С . А. https://corp2.net