Именно так и никак иначе: null в C# — однозначно ошибочное решение, бездумно скопированное из более ранних языков.
Этот ящик Пандоры был открыт еще при создании языка ALGOL W великим Хоаром, который позднее назвал собственную идею ошибкой на миллиард долларов.
Лучшая историческая альтернатива
Разумеется, она была, причем очевидная по современным меркам
Самое трагичное, что все это не было откровением и даже новинкой уже к моменту проектирования первой версии языка. Увы, тогда матерых функциональщиков в команде Хейлсберга не было.
Лекарства для текущей реальности
Хотя прогноз очень серьезный, летального исхода можно избежать за счет применения различных практик и инструментов. Способы и их особенности пронумерованы для удобства ссылок.
Явные проверки на null в операторе if. Очень прямолинейный способ с массой серьезных недостатков.
Атрибут NotNull. Немного упрощает использование явных проверок
Паттерн проектирования Null object. Очень хороший способ, но с ограниченной сферой применения.
Конвенция о возврате живых объектов по умолчанию. Очень просто и эффективно.
Любой метод или свойство, для которых явно не заявлена возможность возвращать null, должны всегда предоставлять полноценный объект. Для поддержания достаточно выработки хорошей привычки, например, посредством ревью кода.
Конвенция о стандартных способах явно указать что свойство или метод может вернуть null: например, префикс Try или суффикс OrDefault в имени метода. Органичное дополнение к возврату полноценных объектов по умолчанию. Достоинства и недостатки те же.
Для удобства сделаем процедуру, печатающую состояние булевого параметра:
и включим опцию печати сообщений на консоль:
Привычные операторы сравнения пасуют перед NULLом:
Сравнение с NULLом
Соответственно, IS NOT NULL действует наоборот: вернёт истину, если значение операнда отлично от NULLа и ложь, если он является NULLом:
DECODE идёт против системы:
Пример с составными индексами находится в параграфе про индексы.
Логические операции и NULL
В большинстве случаев неизвестный результат обрабатывается как ЛОЖЬ :
Отрицание неизвестности даёт неизвестность:
Операторы IN и NOT IN
Для начала сделаем несколько предварительных действий. Для тестов создадим таблицу T с одним числовым столбцом A и четырьмя строками: 1, 2, 3 и NULL
Включим трассировку запроса (для этого надо обладать ролью PLUSTRACE ). В листингах от трассировки оставлена только часть filter, чтобы показать, во что разворачиваются указанные в запросе условия.
Предварительные действия закончены, давайте теперь поработаем с операторами. Попробуем выбрать все записи, которые входят в набор (1, 2, NULL) :
Попробуем теперь с NOT IN :
Вообще ни одной записи! Давайте разберёмся, почему тройка не попала в результаты запроса. Посчитаем вручную фильтр, который применила СУБД, для случая A=3 :
Из-за особенностей трёхзначной логики NOT IN вообще не дружит с NULLами: как только NULL попал в условия отбора, данных не ждите.
NULL и пустая строка
Здесь Oracle отходит от стандарта ANSI SQL и провозглашает эквивалентность NULLа и пустой строки. Это, пожалуй, одна из наиболее спорных фич, которая время от времени рождает многостраничные обсуждения с переходом на личности, поливанием друг друга фекалиями и прочими непременными атрибутами жёстких споров. Судя по документации, Oracle и сам бы не прочь изменить эту ситуацию (там сказано, что хоть сейчас пустая строка и обрабатывается как NULL, в будущих релизах это может измениться), но на сегодняшний день под эту СУБД написано такое колоссальное количество кода, что взять и поменять поведение системы вряд ли реально. Тем более, говорить об этом они начали как минимум с седьмой версии СУБД (1992-1996 годы), а сейчас уже двенадцатая на подходе.
NULL и пустая строка эквивалентны:
непременный атрибут жёсткого спора:
Длина пустой строки не определена:
Сравнение с пустой строкой невозможно:
Критики подхода, предлагаемого Ораклом, говорят о том, что пустая строка не обязательно обозначает неизвестность. Например, менеджер по продажам заполняет карточку клиента. Он может указать его контактный телефон (555-123456), может указать, что он неизвестен (NULL), а может и указать, что контактный телефон отсутствует (пустая строка). С оракловым способом хранения пустых строк реализовать последний вариант будет проблемно. С точки зрения семантики довод правильный, но у меня на него всегда возникает вопрос, полного ответа на который я так и не получил: как менеджер введёт в поле «телефон» пустую строку и как он в дальнейшем отличит его от NULLа? Варианты, конечно, есть, но всё-таки…
Вообще-то, если говорить про PL/SQL, то где-то глубоко внутри его движка пустая строка и NULL различаются. Один из способов увидеть это связан с тем, что ассоциативные коллекции позволяют сохранить элемент с индексом » (пустая строка), но не позволяют сохранить элемент с индексом NULL:
Использовать такие финты ушами на практике не стоит. Во избежание проблем лучше усвоить правило из доки: пустая строка и NULL в оракле неразличимы.
Математика NULLа
Этот маленький абзац писался пятничным вечером под пиво, на фоне пятничного РЕН-ТВшного фильма. Переписывать его лень, уж извините.
Очевидно, что мы ничем не сможем помочь Коле: неизвестное количество любовников Маши до замужества сводит все расчёты к одному значению — неизвестно. Oracle, хоть и назвался оракулом, в этом вопросе уходит не дальше, чем участники битвы экстрасенсов: он даёт очевидные ответы только на очевидные вопросы. Хотя, надо признать, что Oracle гораздо честнее: в случае с Колей он не будет заниматься психоанализом и сразу скажет: «я не знаю»:
С конкатенацией дела обстоят по другому: вы можете добавить NULL к строке и это её не изменит. Такая вот политика двойных стандартов.
NULL и агрегатные функции
Таблица с данными. Используется ниже много раз:
Пустые значения игнорируются агрегатами:
Набор данных только из NULLов:
Пустой набор данных:
NULL в OLAP
Удобная фишка sqlplus: при выводе данных заменяет NULL на указанную строку:
Группа: User Сообщений: 48 Регистрация: 25.5.2011 Поблагодарили: 24 раза Репутация: 2
От куда же берутся Nulled версии скриптов? Пираты покупают или крадут легальную версию скрипта. Далее производят удаление компонентов защищающих данный скрипт от нелегального копирования(Стучалка). Так же по возможности удаляют любые упоминания о разработчиках скрипта, так называемые «Копирайты» и чаще всего заменяют их своими. Благодаря этому пираты могут продавать нелегальные зануленные скрипты мирным пользователям, а те в свою очередь и не догадаются об этом, пока им не придет письмо о том что они используют не лицензионный скрипт.
Какие последствия могут быть за использование и распространение варез или нуленных версий?
Так что в случае с DLE не обязательно покупать лицензию, о том как бороться с хостерами и SoftNews Media Group, будет приведено чуть ниже. Запомните что DLE не единственные такие в своем роде. В данном случае закон на нашей стороне.
Как бороться с хостерами и разработчиками скриптов? далее я вам расскажу о том как же можно обойти лицензию, в примере так же будет приведен движок DLE. А так же расскажу как общаться по этому поводу с вашим хостером, да бы вас не закрыли и вы не потеряли всех данных на сайте. Что делать если вам пришло письмо:
Во всем рунете Вам посоветуют лишь два варианта: 1) Забить на письмо и забыть о нем. 2) Ответить со следующим содержанием:
Здравствуйте. Я хотел бы приобрести Ваш продукт для сайта своей фирмы. Совершая покупку Вашего скрипта, я хотел бы убедиться, что Ваша компания имеет всю необходимую документацию для осуществления подобной деятельности. В связи с этим я прошу выслать мне скан-копии документов, подтверждающих Ваше право заниматься продажей программных продуктов, в частности, cms «Data Life Engine». Документы, которые меня интересуют: 1. Свидетельство о регистрации ИП, ООО, ОАО или ЗАО «SoftNews Media Group». 2. Свидетельство о регистрации авторского права на программный продукт «Data Life Engine». 3. Свидетельство о регистрации в налоговых органах компании «SoftNews Media Group».
Также в ответном письмо прошу выслать банковские реквизиты компании и координаты официального представительства в России, для оплаты путем безналичного расчета и заключения нотариально заверенного договора. E-mail для связи: google@gmail.com
Да, разумеется вы не сможете обратится в техническую поддержку и скачать свежие версии с dle-news.ru. Но думаю что используя честных нуллеров, можно прожить и без этого. Тем более в рунете очень много сайтов которые занимаются не официальной поддержкой DLE и других движков. По этим принципам вы можете попробовать обойти и других разработчиков. Но помните, если скрипт качественный и он заслуживает своих денег, то лучше не поскупитесь и оплатите его хотя бы в знак благодарности. Если вдруг письмо пришло не вам а вашему хостеру: если вдруг так произошло, то хостер обязательно с вами свяжется и должен предложить вам ультиматум по средствам покупки скрипта или же прекращение услуг с его стороны без возврата денежных средств. В данном случае, можно попробовать привести все то что я описал выше, таким образом вы можете убедить хостера забить на письмо. Или же вам просто придется искать нового хостинг провайдера. Сейчас популярные хостинги продвигаются под девизом «Скоростные абузоустойчевые хостинги». Абузоустойчевые? Что это? Это когда хостер получает письмо, от разработчика лицензионного скрипта, далее он его просто удаляет и не кого не трогает по этому поводу. Удобно и без проблемно. Смысл в том что прекращать выделять вам хостинг будет им не выгодно, вы же должны заплатить деньги за хостинг, а то что вы должны заплатить деньги за скрипт их это уже не волнует, дело наше как говорится.
Что дают варез или нулленные версии их пользователям?
Почему стоит отказаться от использования nulled-плагинов и тем WordPress на своем сайте
Все мы знаем, что WordPress – свободное программное обеспечение, которое отлично подходит для начинающих пользователей, блогеров и даже для серьезных компаний. Платформа дополнена сотнями тысяч плагинов, тем, расширений, созданных разработчиками со всего мира. В WordPress есть тысячи бесплатных тем и плагинов, которые можно легко использовать в качестве альтернативы платным версиям. Это упрощает жизнь многим владельцам веб-сайтов!
Однако даже обычному пользователю порой требуются платные плагины, позволяющие получить дополнительные бонусы и возможности для сайта. Многие пользователи прибегают к «обнуленным» (nulled) версиям премиум-плагинов, т.е. платному программному обеспечению, полученному из спорных источников. Все это вызывает массу вопросов, поскольку такие nulled-продукты могут сильно навредить сайту.
Мотивы поставщиков nulled-софта
Перед тем, как мы коснемся последствий для пользователей пиратских версий, давайте рассмотрим преимущества, которые nulled-хосты получают от бесплатного распространения платных плагинов. «Обнуленные» плагины и темы в большинстве своем распространяются поставщиками через разные небезопасные источники. Сайты, с которых производится загрузка бесплатных премиум-плагинов и тем WordPress, нередко имеют непрофессиональный вид. Даже если это популярный сайт, вы вряд ли сможете установить его владельцев, поскольку чаще всего nulled-провайдеры не являются реальными компаниями.
Обычно это анонимные провайдеры, которые внедряют скрипты и код в nulled-версии софта. Если вы установите такой софт на свой сайт, то он скрытно инфицирует ваши файлы. Провайдер втайне от вас с помощью скриптов и кода может выводить свои собственные рекламные объявления у вас на сайте. Либо наполнить ваш сайт спам-ссылками, всплывающими окнами, баннерами – все это может вести к сбоям в работе вашего сайта. В результате этого ваш ресурс будет работать очень медленно, и в итоге он отпугнет посетителей, которые быстро покинут сайт. Это увеличит показатель отказов.
Кроме того, такие провайдеры могут украсть у вас личные данные, email, адреса, платежную информацию. Они могут завалить ваш почтовый ящик спамом, попытаться украсть ваш сайт или ваши деньги. Опять же, вы вряд ли найдете месторасположение этих лиц или их данные, потому, если вдруг вы захотите организовать судебное разбирательство, сделать это будет практически невозможно.
Теперь давайте посмотрим, почему мы предлагаем пользователям отказаться от использования пиратских nulled-решений в WordPress:
Вы не будете иметь действующую лицензию
Если вы отказываетесь от оплаты премиального плагина или темы, у вас не будет валидного, уникального лицензионного ключа. Вы становитесь неэтичным пользователем, поскольку вы не зарегистрированы в качестве проверенного клиента в базах данных компании. Поскольку вы не приобретали софт на оригинальном сайте или у разработчика плагина/темы, вы никак не связаны с поставщиком – компания не способна вас отследить или зарегистрировать. Вы становитесь непроверенным пользователем, который незаконно использует продукт, защищенный авторскими правами.
Вы не получите обновлений программы
Активные разработчики тем и плагинов для WordPress регулярно выпускают обновленные версии, которые улучшают производительность и функционирование вашего сайта. В каждом релизе обычно имеется много нововведений и улучшений: исправления багов, новые опции, патчи безопасности и т.д.
Если вы устанавливаете «обнуленную» тему или плагин на своем WordPress-сайте, вы лишаетесь этой очень важной услуги, доступной для лицензированных пользователей премиум-версии. Следовательно, являясь непроверенным клиентом с устаревшими плагинами, вы в итоге получите кривой, небезопасный сайт, который может в любое время перестать функционировать.
Также стоит помнить о том, что WordPress тоже обновляется. Для лучшей производительности вы всегда должны устанавливать последние версии системы. Важно, чтобы используемые вами плагины, темы и расширения были совместимыми со свежей версией WP.
Если вы обновите ядро WordPress, но продолжите использовать nulled-версии, они могут оказаться несовместимыми с новой версией WP. Следовательно, сайт может перестать адекватно функционировать или просто сломается.
Поддержание WordPress, ваших плагинов и тем в обновленном виде гарантирует, что ваш сайт будет быстро работать, будет защищен от разных ошибок или багов.
У вас не будет доступа к новым возможностям
Если вы отказываетесь от автоматических обновлений, вы лишаетесь доступа ко всем новым функциям и возможностям продукта. Новый функционал позволяет расширить ваш сайт, увеличить производительность и привлечь больше трафика/продаж. Вы даже не узнаете, что в продукте вышли новые опции и возможности, если вы не подписаны на блог или новостную рассылку разработчиков.
Ваш сайт останется небезопасным и уязвимым
Когда мы только начинаем вести свой сайт, наша первая проблема заключается в том, чтобы правильно его настроить. Посетители должны легко перемещаться по страницам, их должен привлекать ваш ресурс, чтобы они задерживались на нем. Что будет, если пользователи не смогут беспрепятственно просматривать ваш сайт? Как быть, если ваш сайт ломается каждые несколько секунд? Что делать, если пользователя постоянно бомбардируют нежелательными всплывающими окнами, которые мешают ему работать с сайтом?
Все это случится, если вы будете поддерживать сайт с nulled-плагинами и темами WordPress.
Почему это происходит? Nulled-софт часто поставляется вместе с вредоносным кодом и скриптами, которые встроены в него, что, естественно, влияет на функционирование вашего ресурса. Известно, что эти вредоносные коды и скрипты впоследствии распространяются по всему сайту через специальные файлы, которые тяжело отследить, обнаружить и убрать простому пользователю. Даже экспертам понадобится много времени и сил, чтобы очистить зараженные файлы и устранить векторы атак.
Использование пиратских плагинов и тем делает ваш сайт уязвимым к атакам со стороны хакеров и вредоносного софта. Вы не получаете обновлений, а потому пиратский продукт быстро станет устаревшим. Это ведет к тому, что ваш сайт тоже станет глючным и будет открыт для вредоносных атак.
Поддержка будет недоступна
Премиум-плагины часто поставляются с многочисленными возможностями и параметрами, которые достаточно сложно настроить обычному пользователю. Для многих pro-плагинов имеются руководства, доступные только лицензированным клиентам. Бесплатная круглосуточная поддержка от специализированных сотрудников компании доступна тоже только для лицензированных клиентов. Пользователи бесплатных версий могут получить определенный уровень поддержки через тикеты или email, но пользователи nulled-софта лишены такой возможности, поскольку у них нет лицензии, которая бы подтверждала права владения копией плагина.
Если вы используете nulled-версии, вы остаетесь один на один с любыми проблемами. Вам придется искать сторонних разработчиков, когда вам потребуется помощь.
Поиск помощи в других местах – это тоже будет стоить вам времени, денег и энергии. Если сторонний специалист, которого вы найдете, окажется плохим, то вы можете только усугубить ситуацию. Ваш сайт перестанет работать после неудачных фиксов.
Не будем забывать о том, что разработчики плагинов и тем WordPress тратят много времени на создание своих продуктов, нанимают технических специалистов, которые могут оказать наилучшую поддержку, чтобы вы могли без проблем поддерживать свой сайт. Эти специалисты прорабатывают документацию, учебные руководства, видео, отвечают на запросы пользователей. Если вы отказываетесь от легального способа использования программного обеспечения, вы в итоге лишаетесь возможности получить все эти дополнительные услуги – к примеру, пользовательскую поддержку.
Вы будете открыты для атак со стороны вредоносного ПО, хакеров и шпионских программ
Вы не получаете обновлений, новых функций, защиты и поддержки со стороны разработчиков, а потому ваш сайт WordPress становится чрезвычайно уязвимым к атакам вирусов, вредоносного ПО и хакеров. У nulled-плагинов и тем нередко есть вшитый вредоносный код, который используется для кражи информации и помогает поддерживать постоянную лазейку для доступа к вашему сайту.
Если вы ведете свой интернет-магазин или сообщество, это может стать для вас смертельно опасным. Вредоносные коды и скрипты способны привести к краже конфиденциальной информации с вашего сайта – имен пользователей, их паролей, email-адресов, данных кредитных карт, данных по платежам и т.д.
Вы можете столкнуться с утечками персональных данных и другой информации
Утечки данных ваших клиентов – самое худшее, что только может произойти. Это ставит под угрозу целостность вашего сайта и приводит к тому, что ваш бизнес лишается доверия. Негативный эффект от использования nulled-тем и плагинов масштабен. Когда вред уже причинен, очень сложно вернуть все в норму. Украденные персональные данные несут опасность не только для вашего сайта, но и для вашего бизнеса.
Ваши клиенты могут легко потерять веру в вас и ваш бизнес. Доверие клиентов – определяющий фактор в бизнесе. Кража личной информации означает плохую репутацию, что может легко «отключить» новый трафик и новые продажи. Запуск nulled плагинов и тем на сайте WordPress может вести к тому, что даже существующие клиенты перестанут обращаться в компанию.
Вы получите негативное влияние на SEO
Обнуленные темы и плагины WordPress ведут к снижению SEO-показателей. Пиратские версии имеются скрытые коды, которые добавляют спам-ссылки, вирусы, навязчивые всплывающие окна, перенаправляющие посетителей на другие сайты. Это может вести к тому, что ваш сайт будет зависать и рушиться в процессе работы. Поисковые системы быстро увидят это и могут оштрафовать ваш сайт, снизив его показатели ранжирования или полностью исключив ресурс из индекса.
Бесчисленные часы, усилия и навыки, которые вы вложили в получение хороших показателей в поиске, будут перечеркнуты этими спам-ссылками, перебоями и всплывающими окнами. Чтобы вернуться на прежние позиции, может потребоваться несколько месяцев. Порой это может вести к необходимости создания нового сайта.
Набитый спамом сайт выглядит для клиентов ненадежным, потому многие покинут его, не совершив покупок.
Вы совершаете уголовное преступление
Если вы используете взломанные премиум-темы и плагины WordPress неэтично, это уже является преступлением, подлежащим наказанию в соответствии с гражданским или уголовным законодательством, что зависит от тяжести обстоятельств. Последствия будут очевидны, если разработчик защитил авторские права на код своего продукта. Федеральный закон предусматривает серьезные санкции в отношении лиц, обвиняемых в пиратстве и нарушении авторских прав, что может вести к гражданским или уголовным делам.
Разработчики теряют деньги из-за вас
Плагины, темы, расширения и многое другое – это результат умений, талантов, тяжелой работы и образования разработчиков. Если вы используете защищенную авторским правом работу неэтично, вы лишаете разработчиков средств к существованию.
Люди тратят много времени и денег на то, чтобы создавать решения, отвечающие интересам пользователей. Они создают сайты, нанимают специалистов поддержки, арендуют офисы, поддерживают рекламу, делают продвижение в социальных сетях и т.д. Использование обнуленного ПО вредит их бизнесу, и они в итоге теряют деньги.
Заключение
Обнуленные плагины и темы WordPress катастрофичны для бизнеса. Они несут в себе больше негатива, чем пользы. Из-за них ваш сайт может перестать функционировать, на сайте могут появиться вирусы, вредоносные скрипты, что сделает ваш ресурс медленным, уязвимым для хакеров и т.д. Разработчики лишаются своего хлеба, теряют энтузиазм для того, чтобы создавать инновационные продукты.
Нет лицензионного ключа – значит, вы не сможете получать поддержку и обновления. В итоге вы получите тормозной сайт, забитый спамом, что в итоге приведет к снижению доверия клиентов. Утрата доверия к бизнесу грозит серьезными последствиями для последнего. Иногда это попросту непоправимо.
Есть что добавить? Пишите в комментариях свое мнение!
Что такое приложение Null, как его настроить и стоит ли удалять
Иногда пользователи iPhone сталкиваются с непонятным приложением «Null». Это приложение может запрашивать:
доступ к камере и микрофону;
доступ к личным файлам;
доступ к геолокации;
Пользователь может начать паниковать, ведь он не устанавливал такое приложение, а оно запрашивает конфиденциальные данные. «Взлом или вирус?» — первая мысль, которая может прийти. Ни то и ни другое. Вообще, приложение Null — это не какое-то конкретное приложение. Под этим приложением может скрываться любое приложение, даже которым вы раньше активно пользовались.
Приложение Null
Такие приложения работают, не нанося вред а телефону, а лишь озадачивают вл а дельцев устройств. Приложение Null может появит ь ся в айфоне несколькими способами.
Как появляется приложение Null на iPhone
Приложение Null п о является на устройстве по одной из трех причин:
Приложение устанавливается в обход App Store. На iPhone можно устанавливать приложения из сторонних магазинов. Делается это через «доверенные сертификаты». Случается такое, что «сертификат» перестает быть действительным, тогда установленная программа превращается в «приложение Null».
Можно ли исправить приложение Null
Есть несколько способов, как побороть приложение Null:
Заключение
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.