Флэш или слэш как правильно: Косая черта перед подписью — как ее понимать?

Содержание

Косая черта перед подписью — как ее понимать?

В деловом обороте распространена такая практика. Если документ подписывает не тот человек, данные которого указаны в реквизитах, перед подписью ставят косую черту. Она якобы означает, что руку приложил заместитель. Но достаточно ли этого значка, чтобы документ имел юридическую силу? И как правильно оформить документы, если их подписывает заместитель?
Наталия Гуренкова, эксперт «УНП»

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

Договор подписал заместитель

Традиция ставить черту перед подписью заместителя существует уже давно.

И так же давно она находится за рамками правового регулирования.

Еще в 1988 году Главархив СССР разъяснил, как быть, если отсутствует должностное лицо, подпись которого заготовлена на проекте документа. В приказе от 25.05.88 № 33 архивное ведомство установило, что в подобной ситуации в документе необходимо указать фактическую должность лица, подписывающего документ, и его фамилию. Исправления можно внести чернилами или машинописным способом (например: «и.о.», «зам.»). Но недопустимо подписывать документы с предлогом «за» или с проставлением косой черты перед наименованием должности.

Сегодня действует еще один стандарт по оформлению документов: Унифицированная система организационно-распорядительной документации*. Правда, в этом стандарте ни слова не сказано о том, как должен подписаться заместитель. Но это не значит, что косая черта узаконена. Ведь приказ Главархива № 33 никто не отменял, и он продолжает действовать на территории РФ.

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

Но как быть, если в бухгалтерию поступит договор, который со стороны контрагента подписан с косой чертой?

Работа над ошибками

Сама по себе косая черта не лишит договор силы. Но если не будут указаны фамилия и должность лица, который его подписал, суд может решить, что это неустановленное лицо (постановление Федерального арбитражного суда Московского округа от 15.07.02 № КГ-А40/4377-02). Контрагенты могут отказаться исполнять обязательства по такой сделке, ее могут не признать и налоговики. Это особенно неприятно если речь идет о договоре, по которому компания собирается учесть расходы для целей налогообложения прибыли и применить вычет по НДС.

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

А именно: вписать в договор фамилию и должность лица, подписавшего договор, и ссылку на реквизиты документа, которым лицо уполномочено на совершение сделки. Лучше всего, если к договору будет приложена копия такого документа.

Есть еще один вариант. Если контрагент в последующем одобрит сделку, из-за косой черты можно не беспокоиться. О том, какие именно действия можно расценивать как одобрение сделки, сказано в пункте 5 информационного письма Президиума ВАС РФ от 23.10.2000 № 57. Партнера можно считать одобрившим сделку, если он полностью или частично оплатил товары, принял их для использования, полностью или частично уплатил санкции или другие суммы в связи с нарушением обязательства, реализует другие права и обязанности по сделке и т. д.

Особо о счетах-фактурах

Еще один важный документ, на котором должен ставить подпись руководитель: счет-фактура (п. 6 ст. 169 НК РФ).

Что делать, если к вам поступит счет-фактура с косой чертой перед подписью? Как выяснила «УНП», в отделе косвенных налогов департамента налоговой и таможенно-тарифной политики Минфина России считают, что сама по себе косая черта перед должностью руководителя не приведет к отказу в вычете НДС.

Вместе с тем необходимо проверить, соответствуют ли требованиям налогового законодательства остальные условия, относящиеся к оформлению подписи. В пункте 6 статьи 169 НК РФ сказано, что подписать счет-фактуру может любое уполномоченное лицо. Полномочия можно передать приказом по организации или доверенностью от имени организации.

Стандартные реквизиты бланка счета-фактуры предусматривают, что его подписывает руководитель. Минфин разъяснил, что, если документ подписывает другое лицо, его должность можно не указывать. Главное, чтобы была расшифровка подписи (письмо Минфина России от 16.06.04 № 03-03-11/97). Тем не менее не будет ошибкой, если лицо, подписавшее счет-фактуру от имени поставщика, укажет свою должность (письмо ФНС России от 20.05.05 № 03-1-03/838/8).

* ГОСТ Р 6.30-2003, утвержден постановлением Госкомстата России от 03.03.03 № 65-ст.

Вам надо по-другому работать с наличкой. Кого прижмут налоговики и банки? Забирайте запись, пожалуй, лучшего вебинара «Клерка»: «Как будут контролировать наличку по 115-ФЗ».  

Только сегодня можно забрать запись со скидкой 60%. Программу вебинара смотрите здесь

Создание гиперссылок — Изучение веб-разработки

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

Предварительные требования:Базовое знакомство с HTML, описанное в статье Начало работы c HTML. Форматирование текста в HTML, описанное в статье Основы редактирования текста в HTML.
Задача:Научиться эффективно использовать гиперссылки и связывать несколько файлов вместе.

Гиперссылки — одно из самых интересных нововведений Интернета. Они были особенностью Сети с самого начала, но именно они превращают Интернет в Интернет.  Они позволяют нам связывать наши документы с любым другим документом (или ресурсом), с которым мы хотим. С их помощью мы также можем связывать документы с их конкретными частями, и мы можем сделать приложения доступными на простом веб-адресе (сравните это с локальными приложениями, которые должны быть установлены, и другими такими же вещами). Почти любой веб-контент может быть преобразован в ссылку, так что когда вы кликаете по ней (или иным образом активируете), она заставляет веб-браузер перейти на другой веб-адрес (URL.)

Примечание: URL-адрес может указывать на файлы HTML, текстовые файлы, изображения, текстовые документы, видео и аудиофайлы и все остальное, что может жить в Интернете. Если веб-браузер не знает, как отображать или обрабатывать файл, он спросит вас, хотите ли вы открыть файл (в этом случае обязанность открытия или обработки файла передаётся в соответствующее локальное приложение на устройстве) или загрузить файл (в этом случае вы можете попытаться разобраться с ним позже).

Например, домашняя страница BBC содержит большое количество ссылок, которые указывают не только на множество новостей, но и на различные области сайта (меню), страницы входа / регистрации (пользовательские инструменты) и многое другое.

Простая ссылка создаётся путём обёртывания текста (или другого содержимого, смотрите  Ссылки-блоки), который вы хотите превратить в ссылку, в элемент <a>, и придания этому элементу атрибута href (который также известен как гипертекстовая ссылка, или цель), который будет содержать веб-адрес, на который вы хотите указать ссылку.

<p>Я создал ссылку на
  <a href="https://www.mozilla.org/ru/">домашнюю страницу Mozilla</a>.
</p>

Это дало нам следующий результат:

Я создал ссылку на домашнюю страницу Mozilla.

Добавляем информацию через атрибут title

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

<p>Я создал ссылку на
  <a href="https://www.mozilla.org/ru/"
     title="Лучшее место для поиска дополнительной информации
     о миссии Mozilla и о том, как внести свой вклад">домашнюю страницу Mozilla
  </a>.
</p>

Вот что получилось (описание появится, если навести курсор на ссылку):

Я создал ссылку на домашнюю страницу Mozilla.

Примечание: Описание из атрибута title отображается только при наведении курсора, значит люди, полагающиеся на клавиатурные элементы управления для навигации по веб-страницам, будут испытывать трудности с доступом к информации, которую содержит title. Если информация заголовка действительно важна для удобства использования страницы, то вы должны представить её таким образом, который будет доступен для всех пользователей, например, поместив её в обычный текст.

Активное изучение: создаём собственную ссылку

Время упражнения: мы хотели бы, чтобы вы создали любой HTML-документ в текстовом редакторе на своём компьютере (наш базовый пример подойдёт.)

  • Попробуйте добавить в тело HTML один или несколько абзацев или другие элементы, о которых вы уже знаете.
  • Теперь превратите некоторые фрагменты документа в ссылки.
  • Добавьте ссылкам атрибут title.

Ссылки-блоки

Как упоминалось ранее, вы можете превратить любой элемент в ссылку, даже блочный элемент. Если у вас есть изображение, которые вы хотели бы превратить в ссылку, вы можете просто поместить изображение между тегами <a></a>.

<a href="https://www.mozilla.org/ru/">
  <img src="mozilla-image.png" alt="логотип mozilla со ссылкой на их домашнюю страницу">
</a>

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

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

URL-адрес (Uniform Resource Locator, или единый указатель ресурса, но так его никто не называет) — это просто строка текста, которая определяет, где что-то находится в Интернете. Например, домашняя страница Mozilla находится по адресу https://www.mozilla.org/ru/.

URL-адреса используют пути для поиска файлов. Пути указывают, где в файловой системе находится файл, который вас интересует. Давайте рассмотрим простой пример структуры каталогов (смотрите каталог creating-hyperlinks.)

Корень структуры — каталог  creating-hyperlinks. При работе на локальном веб-сайте у вас будет один каталог, в который входит весь сайт. В корне у нас есть два файла — index.html и contacts.html. На настоящем веб-сайте index.html был бы нашей домашней, или лендинг-страницей (веб-страницей, которая служит точкой входа для веб-сайта или определённого раздела веб-сайта).

В корне есть ещё два каталога —  pdfs и projects. У каждого из них есть один файл внутри — project-brief.pdf и index.html, соответственно. Обратите внимание на то, что вы можете довольно успешно иметь два index.html файла в одном проекте, пока они находятся в разных местах файловой системы.  Многие веб-сайты так делают. Второй index.html, возможно, будет главной лендинг-страницей для связанной с проектом информации.

  • Тот же каталог: Если вы хотите подключить ссылку внутри index.html (верхний уровень index.html), указывающую на contacts.html, вам просто нужно указать имя файла, на который вы хотите установить ссылку, так как он находится в том же каталоге, что и текущий файл. Таким образом, URL-адрес, который вы используете — contacts.html:

    <p>Хотите связаться с конкретным сотрудником?
       Найдите подробную информацию на нашей
      <a href="contacts. html">странице контактов</a>.
    </p>
  • Перемещение вниз в подкаталоги: Если вы хотите подключить ссылку внутри index.html (верхний уровень index.html), указывающую на projects/index.html, вам нужно спуститься ниже в директории projects перед тем, как указать файл, который вы хотите. Это делается путём указания имени каталога, после которого идёт слеш и затем имя файла. Итак, URL-адрес, который вы используете — projects/index.html:

    <p>Посетите мою
      <a href="projects/index.html">домашнюю страницу проекта</a>.
    </p>
  • Перемещение обратно в родительские каталоги: Если вы хотите подключить ссылку внутри projects/index.html, указывающую на pdfs/project-brief.pdf, вам нужно будет подняться на уровень каталога, затем спустится в каталог pdf. «Подняться вверх на уровень каталога» обозначается двумя точками — . . — так, URL-адрес, который вы используете ../pdfs/project-brief.pdf:

    <p>Ссылка на
      <a href="../pdfs/project-brief.pdf">краткое описание моего проекта</a>.
    </p>

Примечание: вы можете объединить несколько экземпляров этих функций в сложные URL-адреса, если необходимо, например: 
../../../сложный/путь/к/моему/файлу.html.

Фрагменты документа

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

<h3>Почтовый адрес</h3>

Затем, чтобы связаться с  этим конкретным  id, вы должны включить его в конец URL-адреса, которому предшествует знак решётки, например:

<p>Хотите написать мне письмо? Используйте наш
  <a href="contacts. html#Почтовый_адрес">почтовый адрес</a>.
</p>

Вы даже можете использовать ссылку на фрагмент документа отдельно для ссылки на другую часть того же документа:

<p>
  <a href="#Почтовый_адрес">Почтовый адрес кампании</a>
  можно найти в нижней части этой страницы.
</p>

Абсолютные и относительные URL-адреса

Два понятия, с которыми вы столкнётесь в Интернете, — это абсолютный URL и относительный URL:

Абсолютный URL
Указывает на местоположение, определяемое его абсолютным местоположением в Интернете, включая протокол и доменное имя. Например, если страница index.html загружается в каталог, называемый projects, который находится внутри корня веб-сервера, а домен веб-сайта — http://www.example.com, страница будет доступна по адресу http://www.example.com/projects/index. html (или даже просто http://www.example.com/projects/), так как большинство веб-серверов просто ищет целевую страницу, такую ​​как index.html, для загрузки, если он не указан в URL-адресе.).

Абсолютный URL всегда будет указывать на одно и то же местоположение, независимо от того, где он используется.

Относительный URL
Указывает расположение относительно файла, с которого вы связываетесь, это больше похоже на случай, который мы рассматривали в предыдущей секции. Для примера, если мы хотим указать со страницы http://www.example.com/projects/index.html на PDF файл, находящийся в той же директории, наш URL может быть просто названием файла —  project-brief.pdf — никакой дополнительной информации не требуется. Если PDF расположен в поддиректории pdfs внутри каталога projects, относительная ссылка будет pdfs/project-brief.pdf (аналогичный абсолютный URL был бы http://www. example.com/projects/pdfs/project-brief.pdf.).

Относительный URL будет указывать на различные места, в зависимости от того, где находится файл, в котором он используется, — например, если мы переместим наш файл index.html из каталога projects в корневой каталог веб-сервера (верхний уровень, не в директорию) , то относительный URL pdfs/project-brief.pdf будет вести на http://www.example.com/pdfs/project-brief.pdf, а не на http://www.example.com/projects/pdfs/project-brief.pdf.

Советуем вам основательно разобраться в этой теме!

При написании ссылок рекомендуется следовать некоторым правилам. Давайте рассмотрим их.

Используйте чёткие формулировки описания ссылок

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

  • Пользователям программ читающих с экрана нравится переходить по ссылкам на странице, читая адрес ссылки в тексте.
  • Поисковые системы используют текст ссылки для индексирования файлов, поэтому рекомендуется включать ключевые слова в текст ссылки, чтобы эффективно описывать, куда ведёт ссылка.
  • Пользователи часто бегло просматривают страницу, не читая каждое слово, и их глаза будут привлечены к тексту, который выделяется, например, ссылки. Им будет полезно описание того, куда ведёт ссылка.

Взгляните на этот пример:

Хороший текст ссылки: Скачать Firefox

<p><a href="https://firefox.com/">
  Скачать Firefox
</a></p>

Плохой текст ссылки: Нажми сюда, чтобы скачать Firefox

<p><a href="https://firefox.com/">
  Нажми сюда
</a>
чтобы скачать Firefox</p>

Советы:

  • Не пишите URL-адрес как часть текста ссылки. URL-адреса выглядят сложными, а звучат ещё сложнее, когда программы чтения с экрана читают их по буквам.
  • Не пишите «ссылка» или «ссылки на» в тексте ссылки — это лишнее. Программы чтения с экрана сами проговаривают, что есть ссылка. На экране пользователи также видят, что есть ссылка, потому что ссылки, как правило, оформлены в другом цвете и подчёркнуты (подчёркивая ссылки, вы соблюдаете правила хорошего тона, поскольку пользователи привыкли к этому).
  • Следите за тем, чтобы текст ссылки был как можно короче. Длинный текст ссылки особенно раздражает пользователей программ чтения с экрана, которым придётся услышать всё, что написано.
  • Минимизируйте случаи, когда несколько копий одного и того же текста ссылок указывает на разные страницы. Это может вызвать проблемы для пользователей программ чтения с экрана, которые часто вызывают список ссылок — несколько ссылок, помеченных как «нажмите здесь», «нажмите здесь», «нажмите здесь», будут путать.

Используйте относительные ссылки, где это возможно

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

  • Во-первых, гораздо проще прописать в коде относительные URL-адреса, как правило, они намного короче абсолютных URL-адресов, что значительно упрощает чтение кода
  • Во-вторых, использование относительных URL-адресов эффективней по следующей причине. Когда вы используете абсолютный URL-адрес, браузер начинает поиск реального местоположения сервера запрашивая адрес у Domain Name System (DNS; также прочтите Как работает web), затем он переходит на этот сервер и находит файл, который запрашивается. С относительным URL-адресом проще: браузер просто ищет файл, который запрашивается на том же сервере. Используя абсолютные URL-адреса вместо относительных, вы постоянно нагружаете свой браузер дополнительной работой.

Создавая ссылки на не HTML ресурсы — добавляйте описание

Когда вы создаёте ссылку на файл, нажав на который можно загрузить документ PDF или Word или открыть просмотр видео, прослушивание аудио файла или перейти на страницу с другим, неожиданным для пользователя результатом (всплывающее окно или загрузка Flash-фильма), добавляйте чёткую формулировку, чтобы уменьшить путаницу. Отсутствие описания может раздражать пользователя. Приведём пример:

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

Посмотрите на примеры, чтобы увидеть, как добавить описание:

<p><a href="http://www.example.com/large-report.pdf">
  Скачать отчёт о продажах (PDF, 10MB)
</a></p>

<p><a href="http://www.example.com/video-stream/">
  Посмотреть видео (видео откроется в отдельном окне, HD качество)
</a></p>

<p><a href="http://www.example.com/car-game">
  Играть в гонки (необходим Flash)
</a></p>

Используйте атрибут download, когда создаёте ссылку

Когда создаёте ссылку на файл, который должен быть загружен, а не открыт в браузере, можете использовать атрибут download, чтобы создать имя файла по умолчанию для сохранения . Приведём пример ссылки для загрузки браузера Firefox 39:

<a href="https://download.mozilla.org/?product=firefox-39.0-SSL&os=win&lang=en-US"
   download="firefox-39-installer.exe">
  Скачать Firefox 39 для Windows
</a>

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

Вам нужно скачать или создать следующие страницы в одном каталоге (Смотрите navigation-menu-start):

Что делать:

  1. Добавьте неупорядоченный список в указанном месте в любом html-файле. Список должен состоять из имён страниц (index, projects и т.д.). Меню навигации обычно представляет собой список ссылок, поэтому создание неупорядоченного списка семантически верно.
  2. Создайте ссылки каждому элементу списка, ведущие на эти страницы.
  3. Скопируйте созданное меню в каждую страницу.
  4. На каждой странице удалите только ссылку, которая указывает на эту же страницу (на странице index.html удалить ссылку index и так далее). Дело в том, что, находясь на странице index.html, нам незачем видеть ссылку в меню на эту же страницу. С одной стороны, нам незачем ещё раз переходить на эту же страницу, с другой, такой приём помогает визуально определить, смотря на меню, в какой части сайта мы находимся.

Когда закончите задание, посмотрите, как это должно выглядеть:

Если не удаётся сделать, или вы не уверены, что сделали верно, посмотрите наш вариант navigation-menu-marked-up.

Можно создавать ссылки или кнопки, которые при нажатии открывают новое исходящее сообщение электронной почты, а не ссылку на ресурс или страницу. Для этого используется элемент <a> и mailto: — адрес почты.

Самыми простыми и часто используемыми формами mailto: являются  subject, cc, bcc и body; дальше прописываем адрес электронной почты. Например:

<a href="mailto:[email protected]">Отправить письмо для nowhere</a>

В результате получим ссылку вида: Отправить письмо для nowhere.

Сам адрес электронной почты не является обязательным для заполнения. Если оставить это поле пустым (в поле href оставить только «mailto:»), откроется новое исходящее сообщение почтовой программой, в поле получателя будет пусто. Это можно использовать для кнопки «Поделиться».

Особенности и детали

Помимо адреса электронной почты, вы можете предоставить другую информацию. Фактически, любые стандартные поля для отправки почты могут быть добавлены к указанному вами адресу mailto. Часто используемыми из них являются «subject», «cc» и «body» (которые не являются истинным полем заголовка, но позволяют указать дополнительную информацию для нового сообщения электронной почты). Каждое поле и его значение задаются в качестве условия запроса.

Вот пример который включает cc(кому отправить копию сообщения, все получатели письма видят список тех кто это письмо получит), bcc(скрытый адрес получателя, никто из получателей не будет видеть полный список получателей письма), subject(тема письма) и body(текст сообщения):

<a href="mailto:[email protected][email protected]&[email protected]&amp;subject=The%20subject%20of%20the%20email &amp;body=The%20body%20of%20the%20email">
  Send mail with cc, bcc, subject and body
</a>

Примечание: Значение каждого поля должно быть написано в URL-кодировке (то есть с непечатаемыми символами и пробелами percent-escaped). Обратите внимание на знак вопроса (?) для разделения основного адреса и дополнительных полей, амперсанд (&) для разделения каждого поля mailto: URL. Для этого используется стандартное описание URL запроса. Прочтите о методе GET, чтобы лучше понимать описание URL запроса.

Вот несколько примеров использования mailto URLs:

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

Быстрый старт — Документация Flask (русский перевод) 0.10.1

Рвётесь в бой? Эта страница даёт хорошее введение в Flask. Предполагается, что вы уже имеете установленный Flask. Если это не так, обратитесь к секции Инсталляция.

Минимальное приложение

Минимальное приложение Flask выглядит примерно так:

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World!'

if __name__ == '__main__':
    app.run()

Просто сохраните его под именем наподобие hello. py и запустите с помощью вашего интерпретатора Python. Только, пожалуйста, не давайте приложению имя flask.py, так как это вызовет конфликт с самим Flask.

$ python hello.py
 * Running on http://127.0.0.1:5000/

Проследовав по ссылке http://127.0.0.1:5000/ вы увидите ваше приветствие миру.

Итак, что же делает этот код?

  1. Сначала мы импортировали класс Flask. Экземпляр этого класса и будет вашим WSGI-приложением.
  2. Далее мы создаём экземпляр этого класса. Первый аргумент — это имя модуля или пакета приложения. Если вы используете единственный модуль (как в этом примере), вам следует использовать __name__, потому что в зависимости от того, запущен ли код как приложение, или был импортирован как модуль, это имя будет разным ('__main__' или актуальное имя импортированного модуля соответственно). Это нужно, чтобы Flask знал, где искать шаблоны, статические файлы и прочее. Для дополнительной информации, смотрите документацию Flask.
  3. Далее, мы используем декоратор route(), чтобы сказать Flask, какой из URL должен запускать нашу функцию.
  4. Функция, которой дано имя, используемое также для генерации URL-адресов для этой конкретной функции, возвращает сообщение, которое мы хотим отобразить в браузере пользователя.
  5. Наконец, для запуска локального сервера с нашим приложением, мы используем функцию run(). Благодаря конструкции if __name__ == '__main__' можно быть уверенным, что сервер запустится только при непосредственном вызове скрипта из интерпретатора Python, а не при его импортировании в качестве модуля.

Для остановки сервера, нажмите Ctrl+C.

Публично доступный сервер

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

Если у вас отключена опция debug или вы доверяете пользователям в сети, вы можете сделать сервер публично доступным, просто изменив вызов метода run() таким вот образом:

Это укажет вашей операционной системе, чтобы она слушала сеть со всех публичных IP-адресов.

Режим отладки

Метод run() чудесно подходит для запуска локального сервера для разработки, но вы будете должны перезапускать его всякий раз при изменении вашего кода. Это не очень здорово, и Flask здесь может облегчить жизнь. Если вы включаете поддержку отладки, сервер перезагрузит сам себя при изменении кода, кроме того, если что-то пойдёт не так, это обеспечит вас полезным отладчиком.

Существует два способа включить отладку. Или установите флаг в объекте приложения:

app.debug = True
app.run()

Или передайте его как параметр при запуске:

Оба метода вызовут одинаковый эффект.

Внимание.

Несмотря на то, что интерактивный отладчик не работает в многопоточных окружениях (что делает его практически неспособным к использованию на реальных рабочих серверах), тем не менее, он позволяет выполнение произвольного кода. Это делает его главной угрозой безопасности, и поэтому он никогда не должен использоваться на реальных «боевых» серверах.

Снимок экрана с отладчиком в действии:

Предполагаете использовать другой отладчик? Тогда смотрите Работа с отладчиками.

Маршрутизация

Современные веб-приложения используют «красивые» URL. Это помогает людям запомнить эти URL, это особенно удобно для приложений, используемых с мобильных устройств с более медленным сетевым соединением. Если пользователь может перейти сразу на желаемую страницу, без предварительного посещения начальной страницы, он с большей вероятностью вернётся на эту страницу и в следующий раз.

Как вы увидели ранее, декоратор route() используется для привязки функции к URL. Вот простейшие примеры:

@app.route('/')
def index():
    return 'Index Page'

@app.route('/hello')
def hello():
    return 'Hello World'

Но это еще не все! Вы можете сделать определенные части URL динамически меняющимися и задействовать в функции несколько правил.

Правила для переменной части

Чтобы добавлять к адресу URL переменные части, можно эти особые части выделить как <variable_name>. Затем подобные части передаются в вашу функцию в качестве аргумента — в виде ключевого слова. Также может быть использован конвертер — с помощью задания правила следующего вида <converter:variable_name>. Вот несколько интересных примеров

@app.route('/user/<username>')
def show_user_profile(username):
    # показать профиль данного пользователя
    return 'User %s' % username

@app.route('/post/<int:post_id>')
def show_post(post_id):
    # вывести сообщение с данным id, id - целое число
    return 'Post %d' % post_id

Существуют следующие конвертеры:

intпринимаются целочисленные значения
floatкак и int, только значения с плавающей точкой
pathподобно поведению по умолчанию, но допускаются слэши

Уникальные URL / Перенаправления

Правила для URL, работающие в Flask, основаны на модуле маршрутизации Werkzeug. Этот модуль реализован в соответствие с идеей обеспечения красивых и уникальных URL-адресов на основе исторически попавшего в обиход — из поведения Apache и более ранних HTTP серверов.

Возьмём два правила:

@app.route('/projects/')
def projects():
    return 'The project page'

@app.route('/about')
def about():
    return 'The about page'

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

Однако, во втором случае, URL определен без косой черты — как путь к файлу на UNIX-подобных системах. Доступ к URL с завершающей косой чертой будет приводить к появлению ошибки 404 «Not Found».

Такое поведение позволяет продолжить работать с относительными URL, даже если в конце строки URL пропущен слэш — в соответствии с тем, как работают Apache и другие сервера. Кроме того, URL-адреса останутся уникальными, что поможет поисковым системам избежать повторной переиндексации страницы.

Построение (генерация) URL

Раз Flask может искать соответствия в URL, может ли он их генерировать? Конечно, да. Для построения URL для специфической функции, вы можете использовать функцию url_for(). В качестве первого аргумента она принимает имя функции, кроме того она принимает ряд именованных аргументов, каждый из которых соответствует переменной части правила для URL. Неизвестные переменные части добавляются к URL в качестве параметров запроса. Вот некоторые примеры:

>>> from flask import Flask, url_for
>>> app = Flask(__name__)
>>> @app.route('/')
... def index(): pass
...
>>> @app.route('/login')
... def login(): pass
...
>>> @app.route('/user/<username>')
... def profile(username): pass
...
>>> with app.test_request_context():
...  print url_for('index')
.. .  print url_for('login')
...  print url_for('login', next='/')
...  print url_for('profile', username='John Doe')
...
/
/login
/login?next=/
/user/John%20Doe

(Здесь также использован метод test_request_context(), который будет объяснён ниже. Он просит Flask вести себя так, как будто он обрабатывает запрос, даже если мы взаимодействуем с ним через оболочку Python. Взгляните на нижеследующее объяснение. Локальные объекты контекста (context locals).

Зачем Вам может потребоваться формировать URL-ы с помощью функции их обращения url_for() вместо того, чтобы жёстко задать их в ваших шаблонах? Для этого есть три веские причины:

1. По сравнению с жёстким заданием URL внутри кода обратный порядок часто является более наглядным. Более того, он позволяет менять URL за один шаг, и забыть про необходимость изменять URL повсюду. 2. Построение URL будет прозрачно для вас осуществлять экранирование специальных символов и данных Unicode, так что вам не придётся отдельно иметь с ними дела. 3. Если ваше приложение размещено не в корневой папке URL root (а, скажем, в /myapplication вместо /), данную ситуацию нужным для вас образом обработает функция url_for().

Методы HTTP

HTTP (протокол, на котором общаются веб-приложения) может использовать различные методы для доступа к URL-адресам. По умолчанию, route отвечает лишь на запросы типа GET, но это можно изменить, снабдив декоратор route() аргументом methods. Вот некоторые примеры:

from flask import request

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        do_the_login()
    else:
        show_the_login_form()

Если присутствует метод GET, то автоматически будет добавлен и HEAD. Вам не придётся иметь с ним дело. Также, при этом можно быть уверенным, что запросы HEAD будут обработаны в соответствии с требованиями HTTP RFC (документ с описанием протокола HTTP), так что вам не требуется ничего знать об этой части спецификации HTTP. Кроме того, начиная с Flask версии 0.6, для вас будет автоматически реализован метод OPTIONS автоматически.

Не имеете понятия, что такое метод HTTP? Не беспокойтесь, здесь приводится быстрое введение в методы HTTP, и почему они важны:

HTTP-метод (также часто называемый командой) сообщает серверу, что хочет сделать клиент с запрашиваемой страницей. Очень распространены Следующие методы:

GET
Браузер говорит серверу, чтобы он просто получил информацию, хранимую на этой странице, и отослал её. Возможно, это самый распространённый метод.
HEAD
Браузер просит сервер получить информацию, но его интересует только заголовки, а не содержимое страницы. Приложение предполагает обработать их так же, как если бы был получен запрос GET, но без доставки фактического содержимого. В Flask, вам вовсе не требуется иметь дело с этим методом, так как нижележащая библиотека Werkzeug сделает всё за вас.
POST
Браузер говорит серверу, что он хочет сообщить этому URL некоторую новую информацию, и что сервер должен убедиться, что данные сохранены и сохранены в единожды. Обычно, аналогичным образом происходит передача из HTML форм на сервер данных.
PUT
Похоже на POST, только сервер может вызвать процедуру сохранения несколько раз, перезаписывая старые значения более одного раза. Здесь вы можете спросить, зачем это нужно, и есть несколько веских причин, чтобы делать это подобным образом. Предположим, во время передачи произошла потеря соединения: в этой ситуации система между браузером и сервером, ничего не нарушая, может совершенно спокойно получить запрос во второй раз. С POST такое было бы невозможно, потому что он может быть вызван только один раз.
DELETE
Удалить информацию, расположенную в указанном месте.
OPTIONS
Обеспечивает быстрый способ выяснения клиентом поддерживаемых для данного URL методов. Начиная с Flask 0.6, это работает для вас автоматически.

Теперь самое интересное: в HTML 4 и XHTML1, единственными методами, которыми форма может отправить серверу данные, являются GET и POST. Но для JavaScript и будущих стандартов HTML вы также можете использовать и другие методы. Кроме того, в последнее время HTTP стал довольно популярным, и теперь браузеры уже не единственные клиенты, использующие HTTP. Например, его используют многие системы контроля версий.

Статические файлы

Динамические веб-приложения также нуждаются и в статических файлах. Обычно, именно из них берутся файлы CSS и JavaScript. В идеале ваш веб-сервер уже сконфигурирован так, чтобы обслуживать их для вас, однако в ходе разработке это также может делать и сам Flask. Просто создайте внутри вашего пакета или модуля папку с названием static, и она будет доступна из приложения как /static.

Чтобы сформировать для статических файлов URL, используйте специальное окончание 'static':

url_for('static', filename='style. css')

Этот файл должен храниться в файловой системе как static/style.css.

Визуализация шаблонов

Генерация HTML из Python — невесёлое и на самом деле довольно сложное занятие, так как вам необходимо самостоятельно заботиться о безопасности приложения, производя для HTML обработку специальных последовательностей (escaping). Поэтому внутри Flask уже автоматически преднастроен шаблонизатор Jinja2.

Для визуализации шаблона вы можете использовать метод render_template(). Всё, что вам необходимо — это указать имя шаблона, а также переменные в виде именованных аргументов, которые вы хотите передать движку обработки шаблонов:

from flask import render_template

@app.route('/hello/')
@app.route('/hello/<name>')
def hello(name=None):
    return render_template('hello.html', name=name)

Flask будет искать шаблоны в папке templates. Поэтому, если ваше приложение выполнено в виде модуля, эта папка будет рядом с модулем, а если в виде пакета, она будет внутри вашего пакета:

Первый случай — модуль:

/application. py
/templates
    /hello.html

Второй случай — пакет:

/application
    /__init__.py
    /templates
        /hello.html

При работе с шаблонами вы можете использовать всю мощь Jinja2. За дополнительной информацией обратитесь к официальной Документации по шаблонам Jinja2

Вот пример шаблона:

<!doctype html>
<title>Hello from Flask</title>
{% if name %}
  <h2>Hello {{ name }}!</h2>
{% else %}
  <h2>Hello World!</h2>
{% endif %}

Также, внутри шаблонов вы имеете доступ к объектам request, session и g , а также к функции get_flashed_messages().

Шаблоны особенно полезны при использовании наследования. Если вам интересно, как это работает, обратитесь к документации по заготовкам Template Inheritance. Проще говоря, наследование шаблонов позволяет разместить определённые элементы (такие, как заголовки, элементы навигации и «подвал» страницы) на каждой странице.

Автоматическая обработка специальных (escape-) последовательностей (escaping) включена по умолчанию, поэтому если name содержит HTML, он будет экранирован автоматически. Если вы можете доверять переменной и знаете, что в ней будет безопасный HTML (например, потому что он пришёл из модуля конвертирования разметки wiki в HTML), вы можете пометить её в шаблоне, как безопасную — с использованием класса Markup или фильтра |safe. За дополнительными примерами обратитесь к документации по Jinja2.

Вот основные возможности по работе с классом Markup:

>>> from flask import Markup
>>> Markup('<strong>Hello %s!</strong>') % '<blink>hacker</blink>'
Markup(u'<strong>Hello &lt;blink&gt;hacker&lt;/blink&gt;!</strong>')
>>> Markup.escape('<blink>hacker</blink>')
Markup(u'&lt;blink&gt;hacker&lt;/blink&gt;')
>>> Markup('<em>Marked up</em> &raquo; HTML'). striptags()
u'Marked up \xbb HTML'

Изменено в версии 0.5: Автоматическая обработка escape-последовательностей больше не активирована для всех шаблонов. Вот расширения шаблонов, которые активизируют автообработку: .html, .htm, .xml, .xhtml. Шаблоны, загруженные из строк, не будут обрабатывать специальные последовательности.

Доступ к данным запроса

Для веб-приложений важно, чтобы они реагировали на данные, которые клиент отправляет серверу. В Flask эта информация предоставляется глобальным объектом request. Если у вас есть некоторый опыт по работе с Python, вас может удивить, как этот объект может быть глобальным, и как Flask при этом умудрился остаться ориентированным на многопоточное выполнение.

Локальные объекты контекста (context locals)

Информация от инсайдера

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

Некоторые объекты в Flask являются глобальными, но необычного типа. Эти объекты фактически являются прокси (посредниками) к объектам, локальным для конкретного контекста. Труднопроизносимо. Но на самом деле довольно легко понять.

Представьте себе контекст, обрабатывающий поток. Приходит запрос, и веб-сервер решает породить новый поток (или нечто иное — базовый объект может иметь дело с системой параллельного выполнения не на базе потоков). Когда Flask начинает осуществлять свою внутреннюю обработку запроса, он выясняет, что текущий поток является активным контекстом и связывает текущее приложение и окружение WSGI с этим контекстом (потоком). Он делает это с умом — так, что одно приложение может, не ломаясь, вызывать другое приложение.

Итак, что это означает для вас? В принципе, вы можете полностью игнорировать, что это так, если вы не делаете чего-либо вроде тестирования модулей. Вы заметите, что код, зависящий от объекта запроса, неожиданно будет работать неправильно, так как отсутствует объект запроса. Решением является самостоятельное создание объекта запроса и его привязка к контексту. Простейшим решением для тестирования модулей является использование менеджера контекстов test_request_context(). В сочетании с оператором with этот менеджер свяжет тестовый запрос так, что вы сможете с ним взаимодействовать. Вот пример:

from flask import request

with app.test_request_context('/hello', method='POST'):
    # теперь, и до конца блока with, вы можете что-либо делать
    # с контекстом, например, вызывать простые assert-ы:
    assert request.path == '/hello'
    assert request.method == 'POST'

Другая возможность — это передача целого окружения WSGI методу request_context() method:

from flask import request

with app.request_context(environ):
    assert request.method == 'POST'

Объект запроса

Объект запроса документирован в секции API, мы не будем рассматривать его здесь подробно (смотри request). Вот широкий взгляд на некоторые наиболее распространённые операции. Прежде всего, вам необходимо импортировать его из модуля flask:

from flask import request

В настоящее время метод запроса доступен через использование атрибута method. Для доступа к данным формы (данным, которые передаются в запросах типа POST или PUT), вы можете использовать атрибут form. Вот полноценный пример работы с двумя упомянутыми выше атрибутами:

@app.route('/login', methods=['POST', 'GET'])
def login():
    error = None
    if request.method == 'POST':
        if valid_login(request.form['username'],
                       request.form['password']):
            return log_the_user_in(request.form['username'])
        else:
            error = 'Invalid username/password'
    # следущий код выполняется при методе запроса GET
    # или при признании полномочий недействительными
    return render_template('login.html', error=error)

Что произойдёт, если ключ, указанный в атрибуте form, не существует? В этом случае будет возбуждена специальная ошибка KeyError. Вы можете перехватить её подобно стандартной KeyError, но если вы этого не сделаете, вместо этого будет показана страница с ошибкой HTTP 400 Bad Request. Так что во многих ситуациях вам не придётся иметь дело с этой проблемой.

Для доступа к параметрам, представленным в URL (?ключ=значение), вы можете использовать атрибут args:

searchword = request.args.get('key', '')

Мы рекомендуем доступ к параметрам внутри URL через get или через перехват KeyError, так как пользователь может изменить URL, а предъявление ему страницы с ошибкой 400 bad request не является дружественным.

За полным списком методов и атрибутов объекта запроса, обратитесь к следующей документации: request.

Загрузка файлов на сервер

В Flask обработка загружаемых на сервер файлов является несложным занятием. Просто убедитесь, что вы в вашей HTML-форме не забыли установить атрибут enctype="multipart/form-data", в противном случае браузер вообще не передаст файл.

Загруженные на сервер файлы сохраняются в памяти или во временной папке внутри файловой системы. Вы можете получить к ним доступ, через атрибут объекта запроса files. Каждый загруженный файл сохраняется в этом словаре. Он ведёт себя так же, как стандартный объект Python file, однако он также имеет метод save(), который вам позволяет сохранить данный файл внутрь файловой системы сервера. Вот простой пример, показывающий, как это работает:

from flask import request

@app.route('/upload', methods=['GET', 'POST'])
def upload_file():
    if request.method == 'POST':
        f = request.files['the_file']
        f.save('/var/www/uploads/uploaded_file.txt')
    ...

Если вы хотите до загрузки файла в приложение узнать, как он назван на стороне клиента, вы можете просмотреть атрибут filename. Однако, имейте в виду, что данному значению никогда не стоит доверять, потому что оно может быть подделано. Если вы хотите использовать имя файла на клиентской стороне для сохранения файла на сервере, пропустите его через функцию secure_filename(), которой вас снабдил Werkzeug:

from flask import request
from werkzeug import secure_filename

@app.route('/upload', methods=['GET', 'POST'])
def upload_file():
    if request.method == 'POST':
        f = request.files['the_file']
        f.save('/var/www/uploads/' + secure_filename(f.filename))
    ...

Некоторые более удачные примеры можно найти в разделе заготовок: Загрузка файлов.

Cookies

Для доступа к cookies можно использовать атрибут cookies. Для установки cookies можно использовать метод объектов ответа set_cookie. Атрибут объектов запроса cookies — это словарь со всеми cookies, которые передаёт клиент. Если вы хотите использовать сессии, то не используйте cookies напрямую, вместо этого используйте во Flask Сессии, который при работе с cookies даст вам некоторую дополнительную безопасность.

Чтение cookies:

from flask import request

@app.route('/')
def index():
    username = request.cookies.get('username')
    # Чтобы не получить в случае отсутствия cookie ошибку KeyError
    # используйте cookies.get(key) вместо cookies[key]

Сохранение cookies:

from flask import make_response

@app.route('/')
def index():
    resp = make_response(render_template(...))
    resp.set_cookie('username', 'the username')
    return resp

Заметьте, что cookies устанавливаются в объектах ответа. Так как вы обычно просто возвращаете строки из функций представления, Flask конвертирует их для вас в объекты ответа. Если вы это хотите сделать явно, то можете использовать функцию, make_response(), затем изменив её.

Иногда вы можете захотеть установить cookie в точке, где объект ответа ещё не существует. Это можно сделать, используя заготовку deferred-callbacks.

Также об этом можно почитать здесь: Об ответах.

Ошибки и перенаправления

Чтобы перенаправить пользователя в иную конечную точку, используйте функцию redirect(); для того, чтобы преждевременно прервать запрос с кодом ошибки, используйте функцию abort() function:

from flask import abort, redirect, url_for

@app.route('/')
def index():
    return redirect(url_for('login'))

@app.route('/login')
def login():
    abort(401)
    this_is_never_executed()

Это довольно бессмысленный пример, потому что пользователь будет перенаправлен с индексной страницы на страницу, на которую у него нет доступа (401 означает отказ в доступе), однако он показывает, как это работает.

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

from flask import render_template

@app.errorhandler(404)
def page_not_found(error):
    return render_template('page_not_found.html'), 404

Обратите внимание на 404 после вызова render_template(). Это сообщит Flask, что код статуса для этой страницы должен быть 404, что означает «не найдено». По умолчанию предполагается код «200», который означает «всё прошло хорошо».

Об ответах

Возвращаемое из функции представления значение автоматически для вас конвертируется вас в объект ответа. Если возвращаемое значение является строкой, оно конвертируется в объект ответа в строку в виде тела ответа, код статуса 200 OK и в mimetype со значением text/html. Логика, которую применяет Flask для конвертации возвращаемых значений в объекты ответа следующая:

  1. Если возвращается объект ответа корректного типа, он прямо возвращается из представления.
  2. Если это строка, создаётся объект ответа с этими же данными и параметрами по умолчанию.
  3. Если возвращается кортеж, его элементы могут предоставлять дополнительную информацию. Такие кортежи должны соответствовать форме (ответ, статус, заголовки), кортеж должен содержать хотя бы один из перечисленных элементов. Значение статус заменит код статуса, а элемент заголовки может быть или списком или словарём с дополнительными значениями заголовка.
  4. Если ничего из перечисленного не совпало, Flask предполагает, что возвращаемое значение — это допустимая WSGI-заявка, и конвертирует его в объект ответа.

Если вы хотите в результате ответа заполучить объект внутри представления, то можете использовать функцию make_response().

Представим, что вы имеете подобное представление:

@app.errorhandler(404)
def not_found(error):
    return render_template('error.html'), 404

Вам надо всего лишь обернуть возвращаемое выражение функцией make_response() и получить объект ответа для его модификации, а затем вернуть его:

@app.errorhandler(404)
def not_found(error):
    resp = make_response(render_template('error.html'), 404)
    resp.headers['X-Something'] = 'A value'
    return resp

Сессии

В дополнение к объекту ответа есть ещё один объект, называемый session, который позволяет вам сохранять от одного запроса к другому информацию, специфичную для пользователя. Это реализовано для вас поверх cookies, при этом используется криптографическая подпись этих cookie. Это означает, что пользователь может посмотреть на содержимое cookie, но не может ничего в ней изменить, если он конечно не знает значение секретного ключа, использованного для создания подписи.

В случае использования сессий вам необходимо установить значение этого секретного ключа. Вот как работают сессии:

from flask import Flask, session, redirect, url_for, escape, request

app = Flask(__name__)

@app.route('/')
def index():
    if 'username' in session:
        return 'Logged in as %s' % escape(session['username'])
    return 'You are not logged in'

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        session['username'] = request.form['username']
        return redirect(url_for('index'))
    return '''
        <form action="" method="post">
            <p><input type=text name=username>
            <p><input type=submit value=Login>
        </form>
    '''

@app.route('/logout')
def logout():
    # удалить из сессии имя пользователя, если оно там есть
    session.pop('username', None)
    return redirect(url_for('index'))

# set the secret key.  keep this really secret:
app.secret_key = 'A0Zr98j/3yX R~XHH!jmN]LWX/,?RT'

Упомянутая escape() осуществляет для вас обработку специальных последовательностей (escaping), что необходимо, если вы не используете движок шаблонов (как в этом примере).

Как генерировать хорошие секретные ключи

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

>>> import os
>>> os.urandom(24)
'\xfd{H\xe5<\x95\xf9\xe3\x96.5\xd1\x01O<!\xd5\xa2\xa0\x9fR"\xa1\xa8'

Просто возьмите, скопируйте/вставьте это в ваш код, вот и готово.

Замечание о сессиях на базе cookie: Flask возьмёт значения, которые вы помещаете в объект сессии, и сериализует их в cookie. Если вы обнаружили какие-либо значения, которые не сохраняются между запросами, а cookies реально включены, а никаких ясных сообщений об ошибках не было, проверьте размер cookie в ответах вашей страницы и сравните с размером, поддерживаемым веб-браузером.

Message Flashing

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

Чтобы вызвать всплывающие сообщения, используйте метод flash(), чтобы заполучить сообщения, можно использовать метод, также доступный для шаблонов — get_flashed_messages(). Полный пример приведён в разделе Всплывающие сообщения.

Ведение журналов

Добавлено в версии 0.3.

Иногда может возникнуть ситуация, в которой вы имеете дело с данными, которые должны быть корректными, но в действительности это не так. К примеру, у вас может быть некий код клиентской стороны, который посылает HTTP-запрос к серверу, однако он очевидным образом неверен. Это может произойти из-за манипуляции пользователя с данными, или из-за неудачной работы клиентского кода. В большинстве случаев ответом, адекватным ситуации будет 400 Bad Request, но иногда, когда надо, чтобы код продолжал работать, это не годится.

Вы по-прежнему хотите иметь журнал того, что пошло не так. Вот где могут пригодиться объекты создания журнала logger. Начиная с Flask 0.3, инструмент для журналирования уже настроен для использования.

Вот некоторые примеры вызовов функции журналирования:

app.logger.debug('Значение для отладки')
app.logger.warning('Предупреждение: (%d яблок)', 42)
app.logger.error('Ошибка')

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

Как зацепиться (hooking) к промежуточному слою WSGI

Если вы хотите добавить в ваше приложение слой промежуточного, или связующего для WSGI программного обеспечения (middleware), вы можете обернуть внутреннее WSGI-приложение. К примеру, если вы хотите использовать одно из middleware из пакета Werkzeug для обхода известных багов в lighttpd, вы можете сделать это подобным образом:

from werkzeug.contrib.fixers import LighttpdCGIRootFix
app.wsgi_app = LighttpdCGIRootFix(app.wsgi_app)

Развёртывание приложения на веб-сервере

Готовы к развёртыванию на сервере вашего нового приложения Flask? В завершение краткого руководства, вы можете немедленно развернуть приложение на одной из платформ хостинга, предоставляющих бесплатное размещение для малых проектов:

Другие места, где можно разместить ваше приложение:

Если вы управляете собственными хостами и желаете разместиться у себя, смотрите раздел Варианты развёртывания. / узел / файл /(.*)/(.*)/?$ /php/node-file.php?file=$1&name=$2; │} Но это не соответствует лидирующий слэш URL. Как я могу написать правило, которое соответствует URLs, которые выглядят как http://example.com/node/file/abcd/1234/ http://example.com/node/file/abcd/1234

Neo4j Уменьшить функции на отношения

У меня есть база данных, которая имеет игрок, подключенные к играм через отношения. Отношения имеет свойство playtimeTwoWeeks, которые я хочу использовать, чтобы узнать, сколько времени каждая игра была сыграна любым пользователем. Таким образом, у меня есть этот запрос MATCH (п: Player) — [р: Пьесы] — (G: игры) С п, р, г ВОЗВРАТ г, СНИЖЕНИЯ (воспр = 0, играть в р | воспр + play.playtimeTwoWeeks) AS total_playtime что я не уверен, что это правильно или нет, но я не могу проверить это, потому что я получаю несоответствие типа ошибки: ожидаемую коллекцию но отношения (линия 3, колонка 40), указывая на р я видел некоторые другие примеры и я, кажется, Я делаю правильно, но я не могу понять, что случилось с запросом.

Myriad Pro румынские символов

Я имею проблему отображения T с запятой под ним и S с запятой под ним. Я пытался отправить его кодируется как UTF-8, ISO-8859-1 / 2, но она не отображается в вспышке. PHP скрипт создает XML с классом DOMDocument. http://www.php.net/manual/en/class.domdocument.php мне нужно найти способ, чтобы отобразить эти символы.

JSON-LD always framing single object as array

Есть ли способ, чтобы всегда заставить отдельные объекты в массивы с EasyRdf? Если есть несколько значений, как РДФ: тип я получаю массив, как этот. Обратите внимание, что свойство @type является массивом. { «@Context»: { «Этон»: «http://ethon.consensys.net/», «ethstats»: «http://ethereum.ethstats.io/»}, «@graph»: [{ » @Id «: «ethstats: Uncle_0x5cd50096dbb856a6d1befa6de8f9c20decb299f375154427d90761dc0b101109», «@type»: [» Этон: дядя » «Этон: Блок»], «Этон: blockCreationTime»: «2015-07-30T15: 26: 58.000Z»,» Этон : blockHash «: «0x5cd50096dbb856a6d1befa6de8f9c20decb299f375154427d90761dc0b101109», «Этон: число»: «1» }]} Но если есть только один РДФ: введите свойство @type не является массивом. { «@Context»: { «Этон»: «http://ethon.consensys.net/», «ethstats»: «http://ethereum.ethstats.io/»}, «@graph»: [{ » @Id «: «ethstats: Uncle_0x5cd50096dbb856a6d1befa6de8f9c20decb299f375154427d90761dc0b101109», «@type»: «Этон: дядя», «Этон: blockCreationTime»: «2015-07-30T15: 26: 58.000Z», «Этон: blockHash»: «0x5cd50096dbb856a6d1befa6de8f9c20decb299f375154427d90761dc0b101109», «Этон: число»: «1»}]} При сериализации граф, я отправить EasyRdf опций ‘кадр’ => (объект) [ ‘@context’ => (объект) [ ‘

Solr: Проверьте, если документ существует без получения документа

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

Косая черта: грамматические правила использования косой черты

Существует два типа косой черты: обратная косая черта (\) и косая черта (/) . Обратная косая черта используется только для компьютерного кодирования. Косая черта, которую часто называют просто косой чертой, представляет собой знак препинания, используемый в английском языке. Единственный раз, когда уместно использовать запятую после косой черты, — это когда демонстрируются перерывы между строками стихов, песен или пьес.

Вот совет: Хотите, чтобы ваш текст всегда выглядел великолепно? Grammarly может уберечь вас от орфографических ошибок, грамматических и пунктуационных ошибок и других проблем с написанием на всех ваших любимых веб-сайтах.

Что означает / означает между словами?

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

На отдельные строки в прозе

Косая черта может показать разрыв строки в стихотворении, песне или пьесе, обычно если несколько коротких строк записываются вместе на одной длинной строке. Рассмотрим два примера ниже:

Обратите внимание, что после каждой косой черты есть пробел.

указать или

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

Для формирования сокращений

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

Обратите внимание, что в этих случаях после косой черты пробел не требуется.

Для обозначения родственных и конфликтных отношений

Косая черта также может использоваться для обозначения связи или конфликта между двумя словами или фразами в предложении.Некоторые примеры включают:

для обозначения дат и дробей

Одним из наиболее распространенных способов использования косой черты является указание дат и дробей:

Пробел до и после косой черты

Многие люди задаются вопросом, использовать ли пробел до и после косой черты. Это зависит. Когда косая черта обозначает альтернативу только двум словам, не используйте пробелы до или после.

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

Пример: Добавьте в рецепт хлопья чили и / или черный перец.

Пример: Первая мировая война / Первая мировая война

Пример:

У Марии был ягненок /

Его шерсть была бела как снег

Официальное руководство по персонажам Alex (с правильным вводом Slash Elbow): StreetFighter

трещит по костяшкам пальцев

  • После обычных бросков Алекса или Powerbomb НЕ БРОСАЙТЕСЬ БРОСЬТЕ в умного противника.Все они оставляют его отрицательным при рывке. Вместо этого используйте легкий удар локтем. Это безопасно сделать немедленно, и удар сразу после броска вперед даже оставляет его с +7 мясистым, давая ему время для комбо-кр. mp (который может быть V-триггером в дальний кр. hp …). В противном случае просто идите вперед и сохраняйте давление оттуда

  • Однако все версии Air Knee Smash + при ударе, а затем рывке, поэтому обязательно угрожайте / продвигайтесь после этого хода

  • Medium Flash Chop является одним из Лучшие наступательные орудия Алекса (они правильно поняли).Он +3 при попадании, поэтому, когда он близок, он заставляет оппонента играть в угадывание 50/50 Powerbomb или Medium Punch, в которые они должны играть, не считая непобедимого разворота. Единственная проблема в том, что это только комбо из ул. hp, counterhit st. mp или Sledgehammer, но это небольшая проблема, учитывая, насколько хороши и важны эти ходы для игры Алекса в любом случае. средний Flash Chop.Это не так разрушительно (немного), но его потенциал смешения неоценим.

  • Это потребует некоторого исследования, но знайте, самый быстрый ли противник Алекса — 3 кадра или 4 кадра. Как уже говорилось, если вы нажмете Medium Flash Chop, это не имеет значения, но чаще вы попадете в легкий, который составляет всего +2. Это означает, что на 3-х фреймерах вы должны использовать lp вместо mp. На 4 фреймерах Light Flash Chop с таким же успехом мог бы быть Medium

  • Все вариации Alex’s Head Crush и Air Stampede (Stomp) можно немного контролировать, а не только версии EX.Просто задержитесь, чтобы сократить дистанцию ​​атаки, или задержитесь вперед, чтобы увеличить ее

  • EX Air Stampede неуязвим для снарядов вскоре после запуска. Это бесценный инструмент против дугообразных снарядов Дхалсима и Фанга.

  • Находясь в V-Trigger, вы можете нажать V-Trigger, если атака приближается к парированию, вместо выполнения Sledgehammer, даже несколько раз. Если вы нажмете его (от атаки противника), он даже не войдет в Кувалду (удерживайте, если хотите), так что вы можете наказать чем-то более подходящим, если нужно.

  • Алекс — Король Counterhit от нокдаунов, так что используйте его легкие атаки и ул.mp пробивает в полной мере. Cr. lp в стоячий mp, кр. lk (низкое попадание) в стоячий мп, стоячий мп в стоячий мп, это бесценные комбинации, и лучше всего они могут нажать «Подтвердить» для V-Trigger Cancel / Sledgehammer

Итак, это хорошо для начала. Есть еще много всего, откуда это взялось.

Adobe fix: Если у вас есть Flash, у вас проблема

Сегодня люди, стоящие за безопасностью программного обеспечения Adobe, обнаружили исправление ошибки во Flash.Вы можете не использовать Flash активно — вы можете даже не осознавать, что он на вашем компьютере (то есть настольном компьютере), но он вполне может быть там. Хорошие новости для пользователей компьютеров Apple — это вредоносное ПО, похоже, связано с Windows. Может быть. Очень вероятно, но не совсем.

Объявление Adobe об этом обновлении должно было появиться автоматически на большинстве компьютеров, на которых запущен Flash, в любом количестве странных мест. Информацию можно найти в бюллетене по безопасности Adobe, где ему присвоен номер бюллетеня APSB18-19.На этой неделе они заявили, что есть эксплойт для программного обеспечения CVE-2018-5002 во Flash, и пометили эту уязвимость как ПРИОРИТЕТ 1! Это означает очень важное, самое важное, самое важное из всех.

Обновления безопасности были отправлены в Adobe Flash Player для Windows, macOS, Linux и Chrome OS. Недостаток не обязательно нацелен на все эти системы, но обновление будет ТОЛЬКО на всякий случай. «Эти обновления устраняют критические уязвимости в Adobe Flash Player 29.0.0.171 и более ранних версиях», — сказал Adobe.«Успешная эксплуатация может привести к выполнению произвольного кода в контексте текущего пользователя».

Короче говоря, когда вы получаете электронное письмо с определенным вложением и открываете это вложение, код … принимает ваши документы Office. Или что-то вдоль этих линий. Точная формулировка Adobe: «Эти атаки используют документы Office со встроенным вредоносным контентом Flash Player, распространяемые по электронной почте». Еще одна хорошая новость заключается в том, что этот эксплойт до сих пор использовался только в «ограниченных целевых атаках на пользователей Windows».

Чтобы исправить все это, примите обновление Adobe Flash, которое выстреливает прямо вам в лицо, когда оно появляется на вашем компьютере. Хотя, если вы не уверены, что обновление поступило непосредственно от Adobe, вы можете обратиться непосредственно в Adobe, чтобы убедиться, что вы получаете то, что вам нужно. Щелкните или коснитесь этой ссылки в абзаце выше, обозначенном Бюллетень безопасности Adobe , и как можно скорее перейдите по ссылкам на нужное вам обновление!

Что такое флэш-распродажа? ⚡ Узнайте, как продавать миллиарды на автопилоте

  • Узнайте, поможет ли флэш-продажа вашему бизнесу или навредит ему, четыре причины, по которым они терпят неудачу, и пять передовых методов стратегии флэш-продаж
  • Узнайте, как поставить свою следующую распродажу флэш-памяти на «автопилоте» с Launchpad
  • Узнайте от реальных брендов об их флэш-распродажах — и не только в Черную пятницу

Бум или спад за очень короткий период продаж.

Независимо от того, выпускает ли ваш бренд эксклюзивный новый продукт или проводит рекламную акцию во время одного из крупнейших торговых событий года, такого как Черная пятница, киберпонедельник (BFCM), многие из этих транзакций будут происходить во время мгновенных продаж.

Онлайн-продажи за пятидневный период BFCM превысили 28 миллиардов долларов в 2019 году, при этом большая часть продаж происходит в течение четырехчасового окна в Киберпонедельник.

Adobe утверждает, что эти «золотые часы розничной торговли» связаны с «FOMO по сделке», то есть из-за страха пропустить сделки в последнюю минуту ближе к концу дня.

Но прежде чем вы начнете резко снижать цены, рекламировать свою распродажу и ждать, пока покупатели выбьют ваши цифровые двери, вам нужно сначала кое-что спланировать:

  1. Что такое флэш-распродажа?
  2. Вы готовы провести флэш-распродажу?
  3. Помните о долгосрочном использовании CLTV
  4. Причины неудачных продаж флэш-памяти
  5. 5 лучших практик успешных продавцов флеш-памяти ⚡
  6. Включите автопилот для следующей продажи
  7. Будущее флеш-продаж
  8. Часто задаваемые вопросы о распродаже Flash

1.Что такое флэш-распродажа?

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

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

2. Готовы ли вы провести флэш-распродажу?

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

Но лучший сценарий стоит затраченных усилий. Вот что видели самые успешные продавцы Shopify, когда проводили флеш-сделки. Рентабельность инвестиций — это не только продажи, но и узнаваемость бренда.

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

Стоит ли проводить флэш-распродажу? Во-первых, спросите себя, пытаетесь ли вы достичь одной из следующих целей:

  • Выгрузить излишки запасов
  • Привлечь клиентов
  • Рост выручки
  • Поднимите прибыль

Флэш-сделки можно эффективно использовать для всего вышеперечисленного.

Распродажа за секунды.

Получите контрольный список флэш-продаж

Gymshark бьет рекорды по флэш-продажам

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

«Флэш-продажи всегда были частью ДНК Gymshark, — говорит Себ Миллс, технический директор по продуктам Gymshark.«Из нашей первой кампании в Черную пятницу, когда мы не понимали масштаб (праздников) в глобальном масштабе, что привело к довольно большому шоку, когда мы увидели огромную волну трафика и заказов».

Обычно Gymshark проводит две флеш-акции в год. У компании есть летняя распродажа и флеш-мероприятие «Черная пятница, киберпонедельник» (BFCM), которое она называет «Blackout», во время которого ее знаменитый яркий и почти переэкспонированный креатив становится черным.

«Все становится темным и черным, — говорит Ноэль Мак, бренд-директор Gymshark.«Модели носят черное на черной одежде, и мы даже будем размещать в Instagram совершенно пустые черные изображения без подписи, чтобы заинтриговать нашего потребителя. Это настоящий отход от нашего обычного содержания «.

Последняя кампания Blackout в 2019 году побила все предыдущие рекорды Gymshark:

  • 9-дневная кампания
  • 650 000 заказов в первые 5 часов
  • Продажи за первый час превысили $ 400 000
  • Превзошла всю кампанию Blackout 2018 чуть более чем за 4 часа
  • 1 млн уникальных клиентов
  • 1.1м заказов на кампанию
  • 13м сессий для кампании

Миллс и его команда постоянно экспериментируют, корректируют и оптимизируют свои флеш-промо. Это окупилось, поскольку, по словам Миллса, каждая продажа Gymshark побила рекорд предыдущего года.

3. Помните о долгосрочном использовании CLTV

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

Отслеживайте flash-покупки ваших новых клиентов, чтобы увидеть:

  • Если у вас есть возможность перепродать
  • Если у вас есть возможность перекрестных продаж
  • Если покупатели становятся лояльными

В этом разделе показано, как точно рассчитать CLTV (среди других ключевых показателей):

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

Однако, если клиенты флэш-памяти выгодно отличаются от CLTV, сравните продажи флэш-памяти с затратами на другие методы приобретения и соответствующим образом уравновесите рост выручки.

Исследования показывают, что довольные покупатели возвращаются, чтобы потратить еще 385% от первой покупки.

4. Причины неудачных продаж флэш-памяти

История изобилует неудачными flash-продажами и трупами компаний, построенных на бизнес-моделях flash-продаж:

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

# 1: сбой доставки

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

Восприятие покупателя формируется не только до и во время продажи, но и тем, что происходит после совершения покупки. Быстрая доставка товаров для быстрой распродажи имеет первостепенное значение. Почти две трети потребителей ожидают, что их заказы будут доставлены в течение 1-3 дней, и более половины хотят, чтобы вы предлагали доставку в течение ночи.

Сделайте свое предложение ярким, предложив бесплатную доставку. Это не только поможет вам дифференцировать свой бренд и лучше конкурировать с Amazon, но и бесплатная доставка может также увеличить вашу среднюю стоимость заказа (AOV).Исследования показывают, что 48% потребителей готовы добавить дополнительные товары в свои тележки, чтобы получить право на бесплатную доставку.

# 2: Сбой инвентаризации

По данным поставщика решений для электронной торговли, 45% товаров распродаются быстрее, чем ожидалось. Один из способов по-настоящему разочаровать клиентов — вызвать ажиотаж, использовать дефицит, чтобы привлечь их к себе, а затем сказать им, что нужного им товара нет в наличии.

«Да, мы гарантируем, что у нас будет достаточно запасов, прежде чем запускать флэш-продажи», — говорит Брайан Лим, основатель и генеральный директор Emazing Group, семьи брендов, ведущих образ жизни и самовыражения.«Мы должны спланировать это за несколько месяцев вперед. Еще один совет — переместить эти продукты ближе к нашим упаковочным станциям до даты продажи, чтобы повысить эффективность сбора, упаковки и отгрузки ».

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

Разочарованные потребители часто высказываются в социальных сетях, что, в свою очередь, вредит вашему бренду.Для количественной оценки 44% из более чем 2700 комментариев, изученных в ходе анализа контента страниц Facebook, управляемых продавцами флеш-памяти, были отрицательными.

Устранение сбоев инвентаря и связанных с ним последствий достигается за счет выполнения четырех действий:

  • Изучите спрос и соответствующим образом подготовьте свою цепочку поставок
  • Будьте прозрачны в отношении своего инвентаря, добавляя количество инвентаря на страницы ваших продуктов
  • Будьте готовы сказать «извините» и постоянно общайтесь с покупателями, если вы ошиблись.
  • Воспринимайте дефицит как исключительность и приглашайте посетителей, которые прибывают слишком поздно, чтобы получить уведомление о вашей следующей продаже по электронной почте или через Facebook Messenger.

Gymshark’s Mills предполагает, что распределение запасов также имеет решающее значение:

«Еще один урок, извлеченный из многолетней практики, заключается в том, чтобы обеспечить полную оптимизацию разделения запасов по магазинам.Для нас это включает в себя анализ и прогнозирование продаж, чтобы определить процентное распределение запасов, выделяемых каждому магазину, мы также обеспечиваем достаточные буферные запасы для защиты от перепродажи ».

# 3: Боты терпят неудачу

GQ охарактеризовал рост продаж кроссовок как «лотерейные билеты», отметив, что «в реальных лотереях люди нашли способы использовать систему в свою пользу. «Боты» — компьютерные программы, которые могут проложить себе путь к оплате через электронную торговлю быстрее, чем любой человек, — являются самым популярным взломом.”

И дело не только в обуви. Продукты ограниченного выпуска — от косметики до спортивных штанов и сумок для подгузников — пострадали от вторжения ботов. Они также часто посещают мероприятия с большими скидками и праздничные акции.

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

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

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

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

Есть несколько способов перехитрить ботов. Одним из решений является использование форм Captcha — викторин или графических тестов — при оформлении заказа. В Shopify Plus вы можете легко запланировать защиту от ботов в своем администраторе перед продажами.

Общедоступный метод — заблокировать хорошо известных ботов для «скальпирования продукта», и многие бренды будут платить за приложения, которые остановят этих ботов. Это, безусловно, полезный вариант, но он очень похож на игру в Whack-a-Mole: вы получаете несколько ботов, но появляются новые. А для существующих ботов им легко изменить свою серверную ферму или IP-адрес или использовать VPN и обойти блокировки, оставив вас на исходе.

Бренды

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

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

Недавнее исследование потребителей, проведенное Splitit, показало, что 87% онлайн-покупателей бросают свои тележки для покупок во время оформления заказа, если процесс был слишком медленным или сложным. А 55% покупателей, которые бросают тележки, поклялись бы никогда не возвращаться на сайт продавца. Эти цифры могут иметь разрушительные последствия для вашего бренда в долгосрочной перспективе, поэтому защита от ботов является ключом к вашему успеху в качестве онлайн-продавца флэш-памяти.

# 4: Ошибка сайта

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

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

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

Примечание о неисправности:

Не все ваши эксперименты по продаже флэш-памяти увенчаются успехом. Важно извлекать уроки из каждой попытки и использовать эту информацию для более эффективных экспериментов и продаж. Gymshark’s Mills предлагает этот совет:

В Gymshark мы живем в соответствии с философией «быстро терпеть неудачу, быстрее учиться». Когда дело доходит до продаж флэш-памяти, один из наших главных уроков — не быть излишне самоуверенным и всегда иметь план A, B и C на случай, если что-то пойдет не так.

«Примером этого для нас является наличие плана на случай, если что-то пойдет не так (например, коммуникация с клиентами уже спланирована и разработана)»

5. 5 лучших практик успешных продавцов флеш-памяти

1. Выберите подходящее время

Обычные магазины научили нас, что люди отказываются от сна, выстраиваются в очередь перед рассветом и ведут себя так, как в противном случае они могли бы не очень много. Но это не значит, что нам нужно «открывать двери» в 4 часа утра.

Когда следует проводить флэш-распродажу?

Это вопрос, который я задал Грегу Мерреллу из Simplistic — партнеру Shopify Plus, который не только работает с мега-ритейлерами, такими как Fashion Nova, но также создает сайты с разовыми предложениями для сопровождения выступлений крупных СМИ на таких мероприятиях, как Good Morning America , Shark Tank и Ellen .

Его ответ: «Извините, что разочаровал, но мы не рекомендуем никаких« оптимальных »расписаний для планирования флэш-распродаж, — говорит Меррелл, — так же, как нет оптимальных расписаний для рекламы. График будет зависеть от вашего продукта и целевого клиента ».

Это означает, что взгляните на свою аналитику и посмотрите, появятся ли какие-либо модели покупок:

  • Какой день (дни) недели люди обычно покупают?
  • Какое время суток люди обычно покупают?
  • Когда у вас самые высокие показатели открываемости электронной почты?

Помня о предупреждении Меррелла, мы можем предложить некоторые отправные точки для определения времени с использованием данных из Launchpad — инструмента автоматизации для крупных онлайн-событий на Shopify Plus, который мы рассмотрим подробнее ниже:

Как долго должна длиться флэш-распродажа?

Хотя некоторые из наших брендов заключают срочные сделки на последний день, исследования показывают, что чем короче, тем лучше:

Во сколько они должны закончиться?

Давайте еще раз посмотрим на данные Launchpad:

2.Определите ваш целевой рынок

То, как вы определяете свой целевой рынок, зависит от цели, которую вы ставите для своей флэш-продажи.

  • Выгрузить излишки запасов
  • Привлечь клиентов
  • Рост выручки
  • Поднимите прибыль

Если цель — привлечь новых клиентов :

  • Не рекламируйте сделку прямо через существующий список рассылки
  • Определите потребителей, которые проявили интерес к продуктам, которые скоро появятся в продаже, или которые следуют за конкурентом с аналогичными продуктами
  • Переманивать этих потребителей, ориентируясь на аудитории конкурентов в Facebook или создавая список их идентификаторов в Twitter.
  • Выполнять ограниченное время Google Рекламы, которая запускается только по ключевым словам, связанным с вашими продуктами.
  • Попросите цели PPC подписаться на отдельный список адресов электронной почты VIP в обмен на ранний доступ или какое-либо другое преимущество для компенсации затрат на PPC

Например, Morphe использовал Reddit для тестирования и уточнения своего подхода:

Если целью является увеличение прибыли от существующих клиентов , целевые клиенты на основе:

  • Предыдущий интерес к продажам или конкретным продуктам
  • Профили наиболее или наименее ценных клиентов
  • Неактивные клиенты

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

Боитесь слишком сильно занять нишу? Имейте в виду, что чем шире ваша сеть, тем ниже, вероятно, будет коэффициент конверсии, тем выше будет ваша цена за клик и тем ниже будет рентабельность инвестиций.

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

3. Правильный выбор товаров для успешной продажи

Вы можете решить провести мгновенную сделку по вашему шатровому продукту и покончить с этим за 2-3 часа, не задумываясь об этом. Это может работать хорошо и быть единственным вариантом для компании электронной коммерции с тонким каталогом артикулов.

Однако, если вы розничный продавец с тысячами товаров, многие из которых не продаются так быстро, как вам хотелось бы, как вы определите те, которые могут работать лучше всего в мгновенной сделке?

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

Если ваша распродажа флэш-памяти предназначена для привлечения новых клиентов:

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

Если ваша продажа флэш-памяти нацелена на существующих клиентов:

  • Выбирайте товары с учетом высокого трафика или небольших объемов закупок
  • Flash продает товары только тем сегментам, которые проявляли к ним некоторый интерес в прошлом (посещали страницу продукта, нажимали на объявление и т. Д.))
  • Держите «секретную» и текущую распродажу для существующих клиентов, продвигая через электронные письма о брошенных корзинах
Fashion Nova использует текущую флеш-страницу как часть электронного письма о брошенной тележке

4. Продвигайте дефицит и ценность

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

Вот почему дефицит (количество и объем продаж) является фундаментом, на котором вы строите свой маркетинговый комплекс. Например, рассмотрим «24-часовую флэш-распродажу», «летнюю флэш-распродажу» или даже повторяющуюся «флэш-распродажу в пятницу».Согласно исследованиям, ключом к успеху является общение с людьми по электронной почте незадолго до начала продажи.

Проверьте, генерируют ли PPC-объявления в дни, предшествующие продаже, подписки, которые гарантируют вам прямой доступ к потенциальным клиентам в последнюю минуту. Но помните: именно электронная почта привлекает больше всего трафика. Фактически, электронное письмо, отправленное в течение 24 часов с момента начала продажи, привело к увеличению количества транзакций на 35%.

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

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

  • 81% флеш-продаж приходится на Facebook
  • Facebook конвертирует 2,9% по сравнению с 1,45% по другим каналам
  • Цена за конверсию Facebook в 33 доллара превосходит цену за конверсию для всего сайта в 73
  • долларов.

Ключ к определению того, какой канал с наибольшей вероятностью принесет вам лучшую рентабельность инвестиций, как обычно, скрывается в данных:

  • Где ваши потенциальные клиенты и клиенты проводят время?
  • Какой процент вашего маркетинга в настоящее время идет на эти каналы?
  • Какие каналы обеспечивают самые высокие показатели CTR и конверсий, а также самые низкие затраты на привлечение клиентов (CAC)?

Оцените свои расходы в зависимости от того, где и как вы в прошлом успешно продавали товары.

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

5. Сделайте свою продажу флеш-памяти особенной

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

Регистрационные вспышки

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

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

VIP или ранняя вспышка

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

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

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

«Как бренд, ваша задача — знать своего клиента, — говорит Грег Меррелл, — использовать этот опыт, чтобы предоставить ему отличное предложение по тому, что он хочет, в удобное для него время.

«Мгновенная распродажа не должна быть возможностью — или, что можно воспринимать как возможность — избавиться от старых запасов, которые необходимо ликвидировать. Это должно быть наградой в первую очередь для ваших самых больших поклонников и близких последователей. Они ваши евангелисты, и их молва во многом поможет увеличить продажи ».

6. Поставьте вашу следующую продажу на автопилот

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

  • Раскрытие продуктов
  • Изменения навигации
  • Обновления целевой страницы
  • Загрузка изображений героев
  • Изменения страницы коллекции
  • Публикация новой домашней страницы

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

Вот почему многие бренды, использующие Shopify Plus, автоматизируют свои продажи с помощью Launchpad, который, как мы упоминали выше, позволяет вам легко планировать компоненты вашей продажи заранее, координировать и автоматически выполнять все, что связано с вашей продажей flash. Launchpad также позволяет брендам откатывать все изменения сразу после продажи и восстанавливать свою традиционную витрину онлайн-магазина одним нажатием кнопки.

Фотовспышка: блендеры

Blenders, популярный бренд очков, продающий поляризованные солнцезащитные очки и лыжные очки, является лидером продаж флэш-памяти, используя возможности автоматизации до 10-кратного увеличения продаж за счет мгновенного переключения между флэш-продажами.Blenders использовали Launchpad Shopify Plus для создания двух отдельных дизайнов сайтов: один для флэш-распродажи в Черную пятницу, другой для новой акции в Киберпонедельник:

«Когда все начинается в полночь, вам не нужно оставаться до полуночи, чтобы внести все эти изменения», — говорит генеральный директор Blenders Чейз Фишер. «Наши предложения были переведены на Launchpad. Мы переключили наши темы на выход через Launchpad. Они успешно все протолкнули ».

Вспышка со скидкой: 100% Pure

До того, как бренд органической косметики 100% Pure начал использовать Launchpad для включения флэш-памяти и основных продаж на автопилоте, сотрудники кропотливо работали до поздней ночи, чтобы не мешать покупателям в обычные часы работы.

Помимо повышения эффективности на 100% Pure, интерактивная панель управления Launchpad позволяет сотрудникам в режиме реального времени вносить изменения, которые увеличивают продажи. Поскольку использование Launchpad для автоматизации крупных торговых мероприятий 100% Pure составляет:

  • Экономия 12 часов на распродаже или кампании
  • Перераспределение сотен часов в год
  • Автоматизация продаж и кампаний для стимулирования роста на 40% по сравнению с аналогичным периодом прошлого года

«Launchpad экономит нам кучу времени», — говорит инженер Крис Тран. «Вместо того, чтобы выполнять всю эту утомительную ручную работу, я теперь могу сосредоточиться на более важной работе, такой как анализ нашей аналитики, чтобы обнаружить закономерности, которые помогут увеличить продажи.”

7. Будущее флеш-продаж

Вместо того, чтобы спрашивать, каким может быть будущее продаж flash-памяти, уместнее будет сказать: «Flash — это будущее ».

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

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

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

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

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

Мы обещаем вознаградить вас новой магией флэш-распродаж в ближайшие годы.

Будьте в курсе последних тенденций и идей в области электронной коммерции с нашим еженедельным информационным бюллетенем

Запишите меня

8. Краткий обзор: Часто задаваемые вопросы о Flash-распродажах

Хотите, чтобы все это было сведено к минимуму? Эй, мы тебя слышим. Вот ответы на ваши самые популярные вопросы.

  • Что такое флэш-распродажа? Скидка или рекламная акция, предлагаемая на короткий период времени.Это задействует FOMO сделки покупателей и чувство срочности, поощряя импульсивные покупки.
  • Что означает «флэш-распродажа»? Большая распродажа со скидкой, которая происходит в мгновение ока!
  • Как сделать флэш-распродажу? Это серьезный вопрос с подробным, подробным и пошаговым ответом. Не волнуйтесь, это несложно! Но вы действительно хотите быть готовы к крупным продажам и посещению веб-сайта.
  • Как долго длится флэш-распродажа? Исследования показывают, что чем короче, тем лучше, но трехчасовые флэш-продажи, по-видимому, являются оптимальным вариантом для повышения скорости транзакции и кликабельности.
  • Насколько эффективны флэш-продажи? Короткие продажи с большими скидками очень эффективны для увеличения трафика, коэффициента конверсии и дохода для краткосрочных выигрышей. И, если вы сделаете их правильно, они также могут увеличить пожизненную ценность клиента для более долгосрочной выгоды.
  • Почему компании делают флэш-продажи? Предложение крутых скидок в течение небольшого промежутка времени может помочь увеличить чистую прибыль, увеличить жизненную ценность клиента и начать отношения с клиентами, которых в противном случае у вас не было бы.
  • Как выиграть флеш-распродажи? Хорошо, мы будем переводить эту поисковую фразу как означающую «Как мне получить наилучшие возможные результаты от моей флэш-продажи?» И вот ответ: не относитесь к своей продаже как к способу быстро заработать деньги (хотя это так). Относитесь к этому как к отличному способу начать отношения с новыми клиентами, которых вы иначе могли бы не встретить. Подарите этим новым клиентам отличные впечатления от продажи флеш-памяти, чтобы они вернулись и увеличили свой CLV (пожизненная ценность клиента).
  • Что такое стратегия флэш-продаж? Один из ключей к стратегии flash — продвигать продажу задолго до ограниченного окна продаж. Рекламируйте в своих социальных сетях от трех дней до недели заранее и убедитесь, что вы указываете «отличный товар», который вы продаете, и большую скидку, по которой вы его продаете. Потому что никакие маркетинговые кампании не могут спасти флеш-распродажу, если они не сочетают в себе отличные товары с большой скидкой!
  • Примеры флеш-распродаж? Конечно.Вот некоторые из наших любимых.

Возвращение Майкла Китона в роли Бэтмена в фильме «Флэш — невыполненная сделка»

Поклонники Бэтмена сошли с ума, когда появилась новость о том, что Майкл Китон вернется в роли Крестоносца в плаще в фильме « « Флэш » , который стал бы первым из нескольких фильмов, которые вернут версию Темного рыцаря Тима Бертона.Но, возможно, пришло время сдержать это волнение, потому что, по словам самого звезды Beetlejuice , планирование и сохраняющаяся озабоченность COVID-19 может помешать актеру заключить сделку.

Майкл Китон недавно дал интервью Deadline, и обсуждение неизбежно перешло к новостям об актере, воспроизводящем роль Брюса Уэйна и Бэтмена в другом взгляде на путешествие во времени, прыгающую по вселенной сюжетную линию Flashpoint из DC Comics.Хотя казалось, что это было в значительной степени решенным для актера сниматься в The Flash вместе с Ezra Miller , Китон выразил некоторые сомнения в том, произойдет ли это на самом деле. Актер сказал:

«Мне нужна минута, чтобы подумать об этом, потому что я такой удачливый и благословенный, у меня сейчас так много всего происходит. Я действительно занят работой. Я не знаю, почему, но я люблю, и поэтому , да, я имею в виду, вы знаете, по правде говоря, где-то на моем iPad есть итерация целой вещи «Flash», которую я еще не успел [прочитать].Я позвонил им и сказал: «Я должен быть с вами честен. Я не могу сейчас ни на что смотреть ».

С тех пор, как Майкл Китон номинирован на Оскар в фильме Birdman , актер пережил невероятное возрождение, благодаря чему он играл в таких фильмах, как Spotlight , The Founder , The Trial of the Chicago 7 и даже возвращение к жанру комиксов со звездной злодейской ролью в «Человек-паук : Возвращение домой ».Китон продолжил рассказывать о своем плотном графике:

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

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

Помимо планирования, Китона все еще волнует еще кое-что, и я уверен, что многие согласятся с ним. Актера добавлено:

«Честно говоря, вы знаете, что меня больше всего беспокоит во всей этой чепухе? … Это COVID. Меня больше беспокоит. Я больше слежу за ситуацией с COVID в Великобритании, чем за что-либо еще.Это все определит, и вот почему я живу за городом здесь, на 17 акрах, и держусь подальше от всех, потому что COVID меня очень обеспокоил. Так что это первое, что я хочу сказать обо всех проектах. Я смотрю на это и думаю: эта штука меня буквально убьет? И знаете, если этого не произойдет, тогда мы поговорим «.

Несмотря на то, что вакцина COVID-19 распространяется повсюду, опасения Китона справедливы. Третья волна пандемии коронавируса в настоящее время захлестывает Европу, а другая может быть на пути в Соединенное Королевство и Соединенные Штаты.Существуют варианты COVID-19, которые гораздо более заразительны, чем первоначальное распространение, что вызывает большее беспокойство во всем мире. Это может снова повлиять на производство фильмов и телепрограмм, но, надеюсь, вакцина будет и дальше распространяться с высокими темпами, и мы все еще сможем избавиться от этого раньше, чем позже.

Выпуск Flash в настоящее время запланирован на 4 ноября 2022 года, но мы посмотрим, сохранится ли эта дата.

Новый генеральный директор сокращает почти 200 рабочих мест, 150 продуктов • Реестр

OCZ, стартап флеш-систем хранения данных, который чрезмерно расширился за счет выпуска новых твердотельных накопителей, прежде чем обеспечить надежного поставщика микросхем флэш-памяти NAND, потребовал от нового генерального директора Ральфа Шмитта избавиться от лишних продуктов и 198 сотрудников.

Основатель и генеральный директор

Райан Петерсен ушел в отставку в сентябре

года.

Шмитт был назначен в октябре, чтобы очистить закон от OCZ. Он резит быстро и довольно глубоко, поскользнувшись на мелочах, около 200 сотрудников, и пытается отделить зерно от плевел на фронте потребительских твердотельных накопителей.

Будет сохранено около 150 вариантов продуктов, что на 80 процентов сократит то, что OCZ называет ценными продуктами, при этом в настоящее время основное внимание уделяется массовым и высококачественным потребительским товарам, а также товарам для предприятий и OEM.Мы можем увидеть меньше Agility, Vertex, Octane, Petrol, RevoDrive и других продуктов.

Также похоже, что OCZ избавится от лишних запасов. В заявлении говорится: «Компания… оценила свои запасы и в настоящее время вносит необходимые корректировки, включая монетизацию некоторых запасов, чтобы лучше согласовать свои продуктовые предложения и высвободить денежные средства для бизнеса».

Общая численность персонала сокращается на 28 процентов, при этом 32 процента приходится на производственный завод OCZ в Тайване, в который входят несколько подрядчиков.По состоянию на конец февраля этого года в OCZ на полную ставку работало 708 человек, около 450 из них — за пределами США. Сокращение на 28% означает, что 198 человек получают уведомления; ой.

Эти увольнения и изъятие продукции из эксплуатации должны существенно сократить расходы: 20 миллионов долларов в год, упомянутый Аароном Рейкерс, аналитиком Stifel Nicolaus. Шмитт, без сомнения, надеется, что он сокращает жир, а не мышцы из тела OCZ — режет глубоко, но не слишком глубоко.

У

OCZ до сих пор нет даты для подачи своего последнего квартального отчета за 10 кварталов в SEC из-за трудностей с расчетом затрат на схемы стимулирования клиентов, созданные в эпоху Петерсена. ®

Городской тезаурус — поиск синонимов для сленговых слов

Как вы, наверное, заметили, сленговые синонимы слова «термин» перечислены выше. Обратите внимание, что из-за характера алгоритма некоторые результаты, возвращаемые вашим запросом, могут быть только концепциями, идеями или словами, которые связаны с словом «термин» (возможно, незначительно).Это просто из-за того, как работает алгоритм поиска.

Вы также могли заметить, что многие из синонимов или родственных сленговых слов являются расистскими / сексистскими / оскорбительными / прямо ужасающими — в основном это благодаря прекрасному сообществу в Urban Dictionary (не связанному с Urban Thesaurus). Городской тезаурус ползет по сети и собирает миллионы различных сленговых терминов, многие из которых взяты из UD и оказываются действительно ужасными и нечувствительными (я полагаю, такова природа городского сленга).Надеюсь, родственные слова и синонимы для слова «термин» немного более мягкие, чем в среднем.

Городской тезаурус

Городской тезаурус был создан путем индексации миллионов различных сленговых терминов, которые определены на таких сайтах, как Городской словарь. Эти индексы затем используются для нахождения корреляций между сленговыми терминами. Официальный API городского словаря используется для отображения определений при наведении курсора. Обратите внимание, что этот тезаурус никоим образом не связан с Urban Dictionary.

Из-за того, как работает алгоритм, тезаурус дает вам в основном связанных сленговых слов, а не точных синонимов. Чем выше в списке термины, тем больше вероятность, что они имеют отношение к слову или фразе, которые вы искали. Алгоритм поиска достаточно хорошо обрабатывает фразы и строки слов, поэтому, например, если вам нужны слова, связанные с lol и rofl , вы можете ввести lol rofl , и он должен дать вам кучу связанных сленговых терминов.Или вы можете попробовать парень или девушка , чтобы получить слова, которые могут означать одно из этих слов (например, bae ). Также обратите внимание, что из-за характера Интернета (и особенно UD) в результатах часто будет много ужасных и оскорбительных терминов.

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

Особая благодарность разработчикам открытого кода, который использовался в этом проекте: @krisk, @HubSpot и @mongodb.

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

Обратите внимание, что Urban Thesaurus использует сторонние скрипты (такие как Google Analytics и рекламные объявления), которые используют файлы cookie. Чтобы узнать больше, см. Политику конфиденциальности.

.

Leave a comment