Русский
Русский
English
Статистика
Реклама

Текст

Анонс как писать статьи в IT-журналы и блоги

22.11.2020 20:18:28 | Автор: admin


Завтра, 23 ноября, в 20:00 в наших соцсетях выступит Андрей Письменный, главный редактор Xakep.ru.

Андрей начал карьеру в ИТ-журналистике в 2006 году, когда параллельно с учебой в техническом вузе начал писать для Компьюленты одного из первых онлайн-СМИ в России. Вскоре занял должность редактора в Компьютерре, где работал над онлайновой версией журнала.

Андрей успел посотрудничать как автор и редактор со многими российскими ИТ-изданиями: Mobi, Nomobile, Ferra.ru, Игромания, Железо и другими. С 2013 года список пополнил журнал Хакер, а в 2015 году Андрей стал его шеф-редактором. Перед командой тогда стояла задача превратить культовый журнал для компьютерных хулиганов в успешное цифровое издание с подписной моделью. Планы удалось реализовать.

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

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




О чем расскажет Андрей


  • Вступление: вкратце про меня и про Хакер
  • Почему технарь должен уметь писать
  • Как найти, выбрать и сформулировать интересную тему
  • Как победить чистый лист
  • Как писать лучше: простые советы для тех, кто не хочет читать учебник
  • Как заставить себя дописать статью
  • Разбор примеров текста


Кроме того вы можете задать вопрос Андрею здесь в комментариях или в инстаграме и он ответит на них в прямом эфире.



Как не пропустить эфир?


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


До встречи в эфире!

Подробнее..

Перевод Почему так сложно извлекать текст из PDF?

13.10.2020 16:15:52 | Автор: admin
Перевод статьи с сайта компании FilingDB, составляющей базу данных из документации европейских компаний

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

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

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

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

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

Ниже описывается, какие особенности PDF-файлов делают сложной или даже невозможной задачу извлечения из них текста.

Защита от чтения PDF


Вы могли встречать PDF-файлы, запрещающие копировать из них текстовое содержимое. К примеру, вот, что выдаёт программа SumatraPDF при попытке скопировать текст из защищённого от копирования документа:



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

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

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

Символы за пределами страниц


Частенько в PDF можно встретить больше текстовых данных, чем те, что показаны на странице. Возьмём эту страницу из ежегодного отчёта Nestle за 2010-й.



К этой странице прикреплено больше текста, чем видно. В частности, в содержимом, связанном с нею, можно найти следующее:
KitKat отметила свой 75-й день рождения в 2010-м, но остаётся молодой и успевает за тенденциями, имея более 2,5 млн фанатов на Facebook. Её продукция продаётся в более чем 70 странах, а продажи хорошо растут в развитых странах и на развивающихся рынках, например, на Среднем Востоке, в Индии и России. Япония второй по величине рынок компании.


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

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

Мелкие или невидимые символы


Иногда на странице PDF можно встретить очень маленькие или вообще невидимые символы. Вот, к примеру, страница из отчёта Nestle за 2012 год.



На странице имеется мелкий белый текст на белом фоне, где написано следующее:
Wyeth Nutrition logo Identity Guidance to markets

Vevey Octobre 2012 RCC/CI&D


Иногда это делается для повышения доступности, с теми же целями, которым служит тег alt в HTML.

Слишком много пробелов


Иногда в PDF между буквами слов вставлены дополнительные пробелы. Это наверняка сделано в целях кернинга (изменения интервала между символами).

К примеру, в отчёте Hikma Pharma от 2013 года есть такой текст:



Если его скопировать, получим:

ch a i r m a n ' s s tat em en t

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

Недостаточно пробелов


Иногда в PDF не хватает пробелов, или они заменены другим символом.

Пример 1: следующая выдержка сделана из ежегодного отчёта SEB за 2017.



Извлечённый текст:

Tenyearsafterthefinancialcrisisstarted

Пример 2: отчёт Eurobank от 2013 содержит следующее:



Извлечённый текст:

On_April_7,_2013,_the_competent_authorities

И снова лучше всего оказалось использовать для таких страниц OCR.

Встроенные шрифты


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


В PDF символы хранятся в виде чисел, кодов символов [codepoints]. Чтобы понять, что нужно выводить на экран, рендерер должен пройти цепочку от кода символа к названию глифа, а потом к самому глифу.

К примеру, PDF может содержать код символа 116, который он сопоставляет с названием глифа t, который, в свою очередь, сопоставлен глифу, описывающему, как выводить на экран символ t.



Большинство PDF используют стандартную кодировку символов. Кодировка символов это набор правил, присваивающих смысл самим кодам символов. К примеру:
  • В ASCII и Unicode для обозначения буквы tиспользуется код символа 116.
  • Unicode сопоставляет код символа 9786 глифу белый смайлик, который выводится, как, а в ASCII такой код не определён.


Однако в PDF-документе иногда используется собственная кодировка символов и специальные шрифты. Это может показаться странным, но документ может обозначать букву t кодом символа 1. Он сопоставит код символа 1 названию глифа c1, которое будет сопоставлено глифу, описывающему, как выводить букву t.



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

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


Один из способов обойти это извлечь глифы шрифтов из документа, прогнать их через OCR, построить соответствие между шрифтом и Unicode. Это позволит вама переводить кодировку, связанную со шрифтом, в Unicode, к примеру: код символа 1 соответствует названию c1, которое, судя по глифу, должно обозначать t, которому соответствует код Unicode 116.

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

Распознавание слов и параграфов


Воссоздание параграфов и даже слов из аморфного символьного супа PDF-файлов задача сложная.

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

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

У простейших реализаций таких алгоритмов сложность легко может достичь O(n), из-за чего обработка плотно забитых страниц может проходить долго.

Порядок текста и параграфов


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

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



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

Рассмотрим данное расположение компонентов в два столбца, где описано приготовление овощного салата.



В западном мире разумно предположить, что чтение идёт слева направо и сверху вниз. Поэтому мы, не изучая содержимого текста, можем свести все варианты к двум: A B C D и A C B D.

Изучив содержание, поняв, о чём там говорится, и зная, что овощи моют перед нарезкой, мы можем понять, что правильным порядком будет A C B D. Алгоритмически это определить крайне сложно.

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

Встроенные изображения


Нередко часть содержимого документа (или весь документ) оказывается отсканированным изображением. В таких случаях в нём нет текстовых данных, и приходится прибегать к OCR.

К примеру, ежегодный отчёт Yell от 2011 года доступен только в виде скана:



Почему бы просто всё не распознать?


Хотя OCR может помочь с некоторыми описанными проблемами, у него тоже есть свои недочёты.
  • Длительное время обработки. Запуск OCR на скане из PDF обычно отнимает на порядок больше времени (а то и ещё дольше), чем прямое извлечение текста из PDF.
  • Сложности с нестандартными символами и глифами. Алгоритмам OCR сложно работать с новыми символами смайликами, звёздочками, кружочками, квадратиками (в списках), надстрочными индексами, сложными математическими символами, и т.п.
  • Нет подсказок о последовательности текста. Упорядочивать текст, извлекаемый из PDF-документа, легче, поскольку большую часть времени этот порядок соответствует порядку вставки текста в файл. При извлечении текста с изображений таких подсказок не будет.


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


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

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

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

Перевод Создание совершенной печатной машины из Sublime Text

19.04.2021 10:09:21 | Автор: admin
UPD: Прошло больше месяца с тех пор, как я написал первоначальный черновик этой статьи. С тех пор я опубликовал еще три записи в блоге и более двадцати на моем канале в Телеграм. Настройки зарекомендовали себя фантастически, мне он очень нравится, и у меня нет желания искать где-либо еще.

Я был давним поклонником iA Writer из-за того, что писал. Я купил оригинальную версию для iPad, оригинальную версию macOS (когда она еще называлась MacOS X), версию для Android и даже ту, которую они переиздали как платное обновление по полной цене. На мой взгляд, в нем есть идеальный баланс между функциями и простотой, дизайном и направленностью.

Вот скриншот первоначальной версии iA Writer от 2011 года:

image

А вот как это выглядит сейчас, в 2021 году:

image

Дизайн настолько вне времени, что практически не изменился за 10 лет.
И я этим доволен, я не собираюсь жаловаться. Это здорово и для вдохновения, и для нововведений, и для фактического воплощения. Я искренне рекомендую его всем, кто пишет.

Ограничения iA Writer


Тем не менее, со временем я начал чувствовать, что это не идеально подходит для моего конкретного рабочего процесса:

  • iA Writer предназначен для работы с одним документом за раз. Я предпочитаю работать с проектами и папками, переключаясь между файлами.
  • Библиотека iA Writer привязана к iCloud, и вы должны хранить там все свои файлы. Недавно я отказался от iCloud и вообще предпочитаю, когда инструменты не определяют, где мне хранить файлы.
  • При наличии собственного блога публикация состоит из периодического редактирования CSS/JS/шаблонов, для чего iA Writer, опять же, не оптимизирован.
  • Я привык к таким удобствам Sublime, как несколько курсоров, поиск в файлах, Go Anywhere и интеграция с Git. Чувствуешь себя скованно, не имея этого всего под рукой.


Оптимизация Sublime Text для письменной работы


Я решил попробовать повторить то, что делает iA Writer, но внутри Sublime Text. Это мои настройки.

Цветовая схема


К счастью, iA Writer использует абсолютный минимум цветов, поэтому повторить эту часть было проще всего.

image

Исходный код: github.com/tonsky/sublime-scheme-writer.

В Package Control: Цветовая схема Writer.

P.S. Да, есть и темная версия.

Шрифт


iA Writer дебютировал с проприетарным шрифтом Nitti, но позже переключился на IBM Plex Mono, который выпускается под лицензией Open Font License.

После нескольких попыток и ошибок мне удалось установить размер шрифта, высоту строки и ширину страницы с параметрами, соответствующими тому, что делает iA Writer:

image

Параметры следующие:

font_face: IBM Plex Mono,
font_size: 16,
line_padding_bottom: 3,
line_padding_top: 3,
wrap_width: 72

Это уже очень хорошее соответствие, но перфекционист во мне хотел получить точное соответствие. Две вещи требовали корректировки: немного увеличенный вес шрифта (текст вместо обычного) и дополнительные 3,5% ширины символа. Поэтому я взял на себя смелость и модифицировал оригинальный IBM Plex Mono, чтобы он соответствовал этим характеристикам.

Сморите:

image

Совпадает почти идеально! Вы можете получить мою версию IBM Plex Mono на github.com/tonsky/font-writer.

Смена профиля


Мы настроены на то, чтобы писать, но как нам вернуться к кодированию?

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

Встречайте Profile Switcher! Он хранит несколько отдельных файлов Preferences.sublime-settings и мгновенно переключается между ними.

image

image

Источники: github.com/tonsky/sublime-profiles

В управлении пакетами: Profile Switcher.

P.S. Альтернативный способ поместить настройки для записи в файл настроек для синтаксиса Markdown. Мне этот подход нравится меньше, потому что он влияет, например, на Sublime Merge diff view и все файлы разметки, некоторые из которых я не хочу видеть в режиме записи.

Кроме того, Profile Switcher кажется чем-то, что может быть полезно не только для написания/кодирования duo.

Все вместе (TL;DR)


  1. Скачайте и установите шрифт Writer.
  2. Через Package Control установите цветовую схему Writer
  3. Через Package Control установите Profile Switcher.
  4. Создайте профиль Writing с помощью команды Profiles: Create profile.
  5. Поместите эти настройки сюда (просто замените все, что у вас есть):


{
caret_extra_width: 2,
draw_centered: правда,
draw_indent_guides: ложь,
draw_white_space: [нет],
font_face: Writer,
font_size: 16,
желоб: ложь,
highlight_line: ложь,
line_padding_bottom: 3,
line_padding_top: 3,
маржа: 10,
scroll_context_lines: 2,
scroll_past_end: 0,5,
word_wrap: правда,
wrap_width: 72,
color_scheme: Пакеты / sublime-scheme-writer / Writer.sublime-color-scheme,
theme: Adaptive.sublime-theme,
}

Вы должны увидеть что-то вроде этого:

image

Сравните с тем, с чего мы начали:

image

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

Отсутствующие функции


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

Дуоширинный шрифт


Чего ждать? Дуоширинный? Это что?

Что ж, это еще одна гениальная идея от iA: сделать W и M 1,5 ширину, оставив остальную часть шрифта моноширинной. Он по-прежнему выглядит и ощущается моноширинным, но Ms и W больше не уродливы без причины. Хотелось бы, чтобы таких шрифтов было больше.

image

Можем ли мы воспроизвести это в Sublime Text? И да и нет. ST может отображать не моноширинные шрифты, но отключает полужирный/курсивный шрифт, если шрифт не моноширинный.

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

Если вы хотите попробовать дуоширинный шрифт, его можно бесплатно загрузить по ссылке github.com/iaolo/iA-Fonts.

Висячая пунктуация


Функция, которую я люблю с самой первой версии, единственный способ форматировать заголовки Markdown.

image

Почему это так круто? Если ### выровнено по основному тексту, вам нужно пропустить ### и найти первую значимую букву.

Если он висит снаружи, ничто не сможет помешать вам.

Динамическая типографика


Еще одна вещь, которую сложно воспроизвести в Sublime Text, это динамическая типографика. Насколько я понимаю, iA Writer динамически переключается между несколькими версиями с разным интервалом и весом в зависимости от текущего размера шрифта и разрешения экрана. Это сложно реконструировать и еще сложнее повторить в Sublime Text.

Хотя, с профилями

Подсветка синтаксиса


Во-первых, да, в iA Writer есть подсветка синтаксиса для простого английского. Выглядит это так:

image

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

Режим фокусировки


В режиме фокусировки выделено только текущее предложение, все остальное затенено. Это помогает попасть в зону, хотелось бы, чтобы это можно было сделать и в ST.

image

Заключение


Sublime Text можно довольно хорошо настроить и превратить в фантастический инструмент для письменной работы.

Однако специализированное программное обеспечение, такое как iA Writer, может делать больше.

Надеюсь, вы найдете эту информацию полезной или (что еще лучше!) вдохновитесь написать что-нибудь.

6 апреля 2021 г.



Наши серверы можно использовать для разработки и продакшена на любом языке.

Зарегистрируйтесь по ссылке выше или кликнув на баннер и получите 10% скидку на первый месяц аренды сервера любой конфигурации!

Подробнее..

Перевод CSS работа с текстом на изображениях

15.04.2021 14:13:15 | Автор: admin

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


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

Вступление

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

Слева без оверлея, справа с оверлеем.Слева без оверлея, справа с оверлеем.

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

Обзор возможных решений

Давайте посмотрим на возможные решения.

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

Решения

Наложение градиента

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

При реализации наложения градиента у нас есть два варианта:

  • Использовать отдельный элемент для градиента (псевдоэлемент или пустой <div>)

  • Применить градиент как фоновое изображение.

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

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

.card__content {  position: absolute;  /* other styles (left, top, right, and padding) */  background: linear-gradient(to top, rgba(0, 0, 0, 0.85), transparent);}

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

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

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

min-height к элементу .card__content.

Flexbox для перемещения содержимого вниз.

.card__content {  position: absolute;  /* other styles (left, top, right, and padding) */  display: flex;  flex-direction: column;  justify-content: flex-end;  background: linear-gradient(to top, rgba(0, 0, 0, 0.85), transparent);}

Другое решение большой padding-top, с ним не нужны min-height и flexbox.

.card__content {  position: absolute;  padding-top: 60px;  background: linear-gradient(to top, rgba(0, 0, 0, 0.85), transparent);}

Обратите внимание на разницу между левой и правой карточками. Градиент больше по высоте.

Выглядит хорошо. Можем ли мы сделать лучше? Определённо да!

Смягчение градиента

Присмотревшись, вы заметите, где заканчивается градиент, то есть у него резкая граница.

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

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

К счастью, г-н Андреас Ларсен создал удобные плагины PostCSS и Sketch, которые помогают преобразовывать резкий градиент в более мягкий.

Вот градиент CSS для примера выше:

.card__content {  background-image: linear-gradient(    0deg,    hsla(0, 0%, 35.29%, 0) 0%,    hsla(0, 0%, 34.53%, 0.034375) 16.36%,    hsla(0, 0%, 32.42%, 0.125) 33.34%,    hsla(0, 0%, 29.18%, 0.253125) 50.1%,    hsla(0, 0%, 24.96%, 0.4) 65.75%,    hsla(0, 0%, 19.85%, 0.546875) 79.43%,    hsla(0, 0%, 13.95%, 0.675) 90.28%,    hsla(0, 0%, 7.32%, 0.765625) 97.43%,    hsla(0, 0%, 0%, 0.8) 100%  );}

Сравните карточки со смягчением градиента и без него.

Горизонтальные градиенты

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

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

background: linear-gradient(  to right,  hsl(0, 0%, 0%) 0%,  hsla(0, 0%, 0%, 0.964) 7.4%,  hsla(0, 0%, 0%, 0.918) 15.3%,  hsla(0, 0%, 0%, 0.862) 23.4%,  hsla(0, 0%, 0%, 0.799) 31.6%,  hsla(0, 0%, 0%, 0.73) 39.9%,  hsla(0, 0%, 0%, 0.655) 48.2%,  hsla(0, 0%, 0%, 0.577) 56.2%,  hsla(0, 0%, 0%, 0.497) 64%,  hsla(0, 0%, 0%, 0.417) 71.3%,  hsla(0, 0%, 0%, 0.337) 78.1%,  hsla(0, 0%, 0%, 0.259) 84.2%,  hsla(0, 0%, 0%, 0.186) 89.6%,  hsla(0, 0%, 0%, 0.117) 94.1%,  hsla(0, 0%, 0%, 0.054) 97.6%,  hsla(0, 0%, 0%, 0) 100%);

Смешивание сплошного цвета и градиента

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

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

<div class="hero">  <img src="cover.jpg" alt="" />  <div class="hero__content">    <h2>Unlimited movies, TV shows, and more.</h2>    <p>Watch anywhere. Cancel anytime.</p>  </div></div>
.hero:after {  content: "";  position: absolute;  left: 0;  top: 0;  width: 100%;  height: 100%;  background-color: rgba(0, 0, 0, 0.4);  background-image: linear-gradient(    to top,    rgba(0, 0, 0, 0.8),    rgba(0, 0, 0, 0) 60%,    rgba(0, 0, 0, 0.8) 100%  );}

Вот наглядное объяснение того, как работает этот паттерн.

Наложение градиента и тень текста

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

.whatever-text {  text-shadow: 0 2px 3px rgba(0, 0, 0, 0.3);}

Наложение градиента, тень текста и непрозрачность

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

.player__icon {  opacity: 0.9;}.player__time {  color: #fff;  text-shadow: 0 0 5px #fff;}

Что в этом нового? Значки и проигрыватель имеют непрозрачность в 90 %. Это помогает им смешаться с фоном под ними. Создаётся ощущение, что элементы управления вмешаны в изображение.

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

Текст и элементы интерфейса хорошо читаются, даже когда изображение полностью беоеТекст и элементы интерфейса хорошо читаются, даже когда изображение полностью беое

Youtube делает то же самое со своими видео.

Вот что мне понравилось в подходе Youtube:

  • Тёмная рамка для каждого значка, чтобы он лучше выделялся.

  • Чёрная тень вместо белой для времени видео.

Радиальный градиент

Интересное решение, о котором я узнал от Netflix, радиальный градиент. Вот как он работает:

  1. Установите основной цвет заднего фона.

  2. Поместите изображение в верхний правый угол с шириной 75 %.

  3. Наложение соответствует размеру и положению изображения.

.hero {  background-color: #000;  min-height: 300px;}.hero__image {  position: absolute;  right: 0;  top: 0;  width: 75%;  height: 100%;  object-fit: cover;}.hero:after {  content: "";  position: absolute;  right: 0;  top: 0;  width: 75%;  height: 100%;  background: radial-gradient(    ellipse 100% 100% at right center,    transparent 80%,    #000  );}

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

Выбор удобного пользователю цвета наложения

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

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

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

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

В приведённом выше примере я выбрал сплошной цвет под заголовком, а коэффициент контрастности составляет 4,74, такой коэффициент считается хорошим.

Работа с Firefox DevTools

Спасибо Гийсу Вейфейкену: он рассказал мне, что Firefox может тестировать цветовой контраст на градиентах. Это отличная функция.

Узнайте, как прокачаться в других специальностях или освоить их с нуля:

Другие профессии и курсы
Подробнее..

Как написать симпатичный чейнджлог опыт Авито

25.05.2021 12:05:50 | Автор: admin

Привет! Меня зовут Гера, я продуктовый редактор вАвито. Пишу тексты для интерфейсов ирассылок, аещё чейнджлоги дляGooglePlay иAppStore. Это тексты, вкоторых рассказывается, что появилось вновой версии приложения. По-английски их ещё иногда называют what'snew или releasenotes.

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

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

А зачем оно всё

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

Есть ли какая-то логика вприменении шаблонов неизвестноЕсть ли какая-то логика вприменении шаблонов неизвестно

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

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

Читать такие сообщения приятно. Особенно учитывая, что это пустышка новых фич врелизе не былоЧитать такие сообщения приятно. Особенно учитывая, что это пустышка новых фич врелизе не было

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

Процесс в Авито

Сжатые сроки

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

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

Неуловимые изменения

Вместе с задачей начейнджлог редактор получает таблицу сизменениями врелизе.

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

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

Есть и ещё одна сложность. Почти все фичи сначала тестируются начасти пользователей всреднем наАвито одновременно крутятся 80экспериментов. Даже если изменение решают катить, отследить этот момент непросто. Фичу могут включить безрелиза набэкенде, тогда отдельной задачи и не появится.

Кто виноват? Что делать?

Детективная работа

Чтобы собрать информацию, нужно превратиться в сыщика идипломата.

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

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

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

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

Формальности

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

Затем записываю текст в файлик систорией чейнджлогов он ведётся сиюля 2018года иотдаю релиз-инженеру, который заливает новую версию приложения встор.

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

Советы по написанию

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

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

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

Соблюдайте законы сторов

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

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

Так выглядят примерно 99,9% чейнджлоговТак выглядят примерно 99,9% чейнджлогов

Также помните олимитах. Это актуально скорее дляGooglePlay: внём ограничение 500символов. ВAppStore 4000, нужно ещё умудриться столько написать: это четверть этой статьи.

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

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

Помните, очём икак уже писали

Человек видит чейнджлоги примерно водном итомже месте авAppStore даже может полистатьисторию версий. Поэтому начинайте иструктурируйте текст по-разному всоседних релизах.

У нас есть файлик с историей чейнджлоговУ нас есть файлик с историей чейнджлогов

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

Непишите отестах

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

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

Рассказывайте омасштабных изменениях

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

Речь о фиче, которой могут воспользоваться практически все пользователи Авито, которые начнут создавать объявление. Не рассказать о таком было бы преступлениемРечь о фиче, которой могут воспользоваться практически все пользователи Авито, которые начнут создавать объявление. Не рассказать о таком было бы преступлениемКонечно, Яндекс.Картами пользуются не только вМоскве, но москвичей много и обновление дляних значимоеКонечно, Яндекс.Картами пользуются не только вМоскве, но москвичей много и обновление дляних значимое

Иллюстрируйте пользу

Если позволяет место, добавьте наглядных примеров, чтобы ценность изменения стала более явной.

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

Аккуратно говорите обошибках искорости работы

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

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

Это была неприятная проблема, но не суперстрашная. Поэтому уместно разбавить текст чем-то забавнымЭто была неприятная проблема, но не суперстрашная. Поэтому уместно разбавить текст чем-то забавнымWhoosh кратко и чётко описывает решённую проблему. Но без последнего предложения вполне можно было обойтись: оважном изменении уже рассказалиWhoosh кратко и чётко описывает решённую проблему. Но без последнего предложения вполне можно было обойтись: оважном изменении уже рассказалиТак Яндекс.Такси скоро разгонится допервой космической скорости. Нет ничего страшного вповторении, но это выглядит завиральноТак Яндекс.Такси скоро разгонится допервой космической скорости. Нет ничего страшного вповторении, но это выглядит завирально

Если шутите, то без кринжа

В Авито мы некасаемся политики идругих острых тем. Если шутка рождается сама походу написания, проверяемеё накринжовость, оскорбительность ипонятность.

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

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

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

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

Однажды у нас вышел милый чейнджлог опопулярной породе собак:

Но пользователей Авито так много, что кто-то всё равно непонял:

Непревращайтесь вроботов

Хотьипишем отехнических штуках, важно оставаться человеками.

В принципе тут чувствуешь, что с тобой говорит РЖД, а не человек В принципе тут чувствуешь, что с тобой говорит РЖД, а не человек

Что делать, если писать неочем

В Авито в 2020году на Android вышло 46релизов, и 16 то есть треть были счейнджлогами-пустышками. На то есть причины: иногда редактору не удаётся найти интересную тему, а иногда их действительно нет.

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

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

Или об интересном исследовании:

Можно написать что-то ситуативное например, привязаться кчемпионату мира пофутболу:

Или рассказать очём-то, что можно найти наАвито:

Если соблюсти формальности и сказать обисправлениях, можно аккуратно прорекламировать икакой-то свой проект:

Кратко: как писать симпатичные чейнджлоги

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

  • Говорите, что изменилось. Вряд ли вам нужно, чтобы релиз отклонили, особенно, если внём исправлена неприятная ошибка.

  • Не преувеличивайте. Если приложение нестало работать быстрее уабсолютного большинства пользователей, не стоит говорить, что всё внезапно начнёт летать.

  • Будьте последовательны. Чейнджлог ещё одна точка соприкосновения пользователя спродуктом. Если обычно общаетесь навы и,вообще, деловито, нестоит писать Зацени, обновление пушка!

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

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

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

Подробнее..

Законотворчество и программирование заметка об интерпретации текстов

09.06.2021 18:07:37 | Автор: admin

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

class HelloWorld {    public static void main(String[] args) {        System.out.println("Hello World!");    }}

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

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

Переменные

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

Статья 24.7 Федерального закона от N89-ФЗ "Об отходах производства и потребления" (далее закон N89-ФЗ) предполагает, что региональные операторы заключают договоры на оказание услуг по обращению
...На основании закона N89-ФЗ прошу того-то и того-то.
В данном случае мы в начале текста вводим переменную закон N89-ФЗ (такие переменные всегда final), и можем её использовать дальше.

В пользоветльском соглашении habr.com все переменные объявляются в первом разделе перед основным текстом:
1.1. Внастоящем документе ивытекающих или связанных сним отношениях Сторон применяются следующие термины иопределения:
Соглашение настоящий документ совсеми дополнениями, изменениями иуказанными внем обязательными документами, атакже договор, заключенный наего основании.
Пользователь дееспособное физическое лицо старше 18лет, присоединившееся кнастоящему Соглашению всобственном интересе либо выступающее отимени ивинтересах представляемого имюридического лица.
И так далее.

Если переменные не определены, то могут возникнуть проблемы:

public static void main(String[] args) throws IOException {    System.out.println(hello);}java: cannot find symbol  symbol:   variable hello

В примере выше нам везёт нам об ошибке скажет компилятор. Но в праве нет компилятора:

УК РФСтатья 43. Понятие и цели наказания:
1. Наказание есть мера государственного принуждения, назначаемая по приговору суда. Наказание применяется к лицу, признанному виновным в совершении преступления, и заключается в предусмотренных настоящим Кодексом лишении или ограничении прав и свобод этого лица.
2. Наказание применяется в целях восстановления социальной справедливости, а также в целях исправления осуждённого и предупреждения совершения новых преступлений.

Когда читаешь этот текст, сразу возникает неоднозначность, ведь используется неопределённая переменная: социальная справедливость. Что это? Убийство за убийство? Зуб за зуб? А может, посчитаем справедливость в рублях? Есть ли уверенность, что два интерператотора будут понимать это одинаково?
Кстати, тут есть ещё кое-что интересное: предупреждение совершения новых преступлений. Самый простой и гарантированный способ предупреждения совершения новых преступлений смертная казнь. Тогда цель выполняется полностью: процент рецедивов будет нулевым. Но то ли имелось ввиду при написание текста закона? Ведь используются другие методы предупреждения, и причины их использования остаются вне этого текста.

Плагины и бланкетные нормы

Бланкетная норма это норма, предоставляющая государственным органам, должностным лицам право самостоятельно устанавливать правила поведения в определённых рамках. К примеру, Федеральный закон N 196-ФЗ "О безопасности дорожного движения" устанавливает полномочия государственных органов, давая им право устанавливать правила дорожного движения (определим в этом тексте переменную, будем называть правила дорожного движения покороче ПДД). В свою очередь, постановлением правительства (то есть уже не законодательного, а исполнительного органа) устанавливаются ПДД. Ещё есть глава 12 КоАП, которая устанавливает санкции (и процедуру их применения) за нарушения ПДД. Таким образом, имея закон N 196-ФЗ и КоАП, можно менять ПДД хоть каждый день, не меняя при этом тексты законов (постановление правительства законом не является).

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

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

Версионирование

В мире разработки ПО мы всё время работаем с разными версиями программ, библиотек, API и так далее. В мире права тоже всё время идёт работа с версиями. Только там всё очень продвинуто всегда используются самые последние версии законов, постановлений, регламентов и прочего! Никакого legacy. Релизим новую версию, и всё, она сразу везде применяется!

Есть аналогия. К примеру, в Android SDK есть класс Context, у которого есть метод:

public abstract int checkSelfPermission (String permission)

Однако, в документации отмечено, что он добавлен в версии SDK 23. Это значит, что если приложение работает на устройстве с версией Android < 23 (Android 6.0), то мы его использовать не можем.

А теперь давайте взглянем на этот документ:

см. http://personeltest.ru/aways/habr.com/ru/post/480510/ - Хроника противостояния Рамблера и Nginxсм. http://personeltest.ru/aways/habr.com/ru/post/480510/ - Хроника противостояния Рамблера и Nginx

Да, это постановление о производстве обыска по делу Rambler & nginx. В тексте мы читаем:

В соответсии со ст. 1295 ГК РФ, программа для ЭВМ энджиникс является служеюным произведением, и исключительное право на нёё, а именно в соовтесии со ст. 1229 ГК РФ право использовать распоряжатться ей, принадлжеит ООО Рамблер Интернет Холдинг.

Однако, постановление описыват событие, имевшее место в 2004 году, когда ст. 1295 и 1229 ещё не существовало! NoSuchMethodError!

Diff

А что, если нам нужно старый закон заменить новым? Но не целиком, а внести небольшие правки? В данном случае всё просто:

git checkout -b new_lawgit commit -m "new speed limit"git push origin new_law

Да, с правками в текст законов работают также как и с правками в исходные коды. Их можно сравнивать:

А сам диф (в данном случае диф называется Федеральный закон от 24.07.2007 N 210-ФЗ (ред. от 31.12.2014) "О внесении изменений в Кодекс Российской Федерации об административных правонарушениях") при этом выглядит примерно так:

в статье 12.9:
а) утратил силу с 1 сентября 2013 года. - Федеральный закон от 23.07.2013 N 196-ФЗ;
б) в части 2: в абзаце первом слова "от 20 до 40" заменить словами "более 20, но не более 40";

---

А какие аналогии подмечали вы?

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru