Правильный вариант: Для начала сделай (пользователям) хорошо, принимая GDPR с огромными штрафами (для сайтоводов) за игнор прайваси, а потом сделай (пользователям) хорошо второй раз, запрещая умникам отказывать пользователям в предоставлении контента, пока те не согласятся на слежку через куки.
Люди жалуются на то, что отказ от куки приводит к невозможности получения контента (заводят куки-воллы, по аналогии с пэй-воллами).
Одна из идей GDPR в том, что предоставление контента не может быть обусловлено обязательным разрешением на сбор персональной информации.
Тем, кто не понял — еще раз пояснили. Для совсем тупых — штрафы, да.
Гордость берёт за такое продвинутое регулирование. И если в некоторых вопросах евробюрократы не такие молодцы, то в отстаивании права личности перед цифровыми корпорациями — ну просто зайки.
Проверка на null даст значительно больше информации, чем проверка на typeof null.
Отдельно Вам доставит (скорее всего, проблем) попытка поработать с null как с объектом
a = {}.field //undefined
b = null.field //TypeError: null has no properties
c = null
d = c.field //TypeError: c is null
Строка задаётся последовательностью элементов строки. Определив, что именно считать «элементом» строки (байт, кодпоинт или непрерывное визуальное представление нескольких кодпоинтов, например, «эмоджи»), можно создать правила выделения элементов из строки, после выделения элементов — определить их порядок, затем переопределить его в соответствии с условиями задачи и создать новую строку с переопределенным порядком элементов.
Проблема в том, что за каким-то чудом последовательности кодпоинтов стали изображать визуально слитно. И если в применении к алфавитным символам это (с большим скепсисом) еще можно принять за необходимость, то составные свистелки «эмоджи» — просто за гранью добра и зла.
Не хотели расширять формальную спецификацию UTF и для этого… барабанная дробь… расширили её, введя составные иероглифы.
Таким образом, реальный парсер UTF теперь в любом случае должен содержать дерево всех допустимых комбинаций в виде структуры или конечного автомата — уже не суть.
Локальные проблемы типа тех, что JS split() не использует правильный парсер, всего лишь следствие того бардака, что устроили с прекрасной кодировкой UTF любители слать картинки непременно негритянской руки текстом.
Хреново знал английский, пока он был не особо нужен. Не комплексовал и был счастлив.
Когда от языка стало зависеть слишком многое, он как-то сам собою быстренько подтянулся до приемлемого уровня. Но не выше, ибо лень.
Никаких космических технологий в том OneHalf'е то и нет.
В своё время шуму он наделал скорее благодаря зловредности (втихую шифровал диск), чем какому-то супер полиморфизму.
Но для тех времен было прикольно, да. Похоронил Aidstest вместе с идеей простого сигнатурного сканера.
Dr.Web оказался молодцом, не только детектируя эту заразу в загрузочном секторе, но и при удачном стечении обстоятельств расшифровывая диск. Не помню, был ли их «эвристический анализ» частичным эмулятором или тупо строил дерево возможных переходов.
В те славные времена касперский имел штатную возможность для написания и подключения наколеночного плагина для детектирования и лечения вирусов, не известных лаборатории и не включенных в основную базу сканера.
в 1С запрещено изменять код, если поменяешь — посадят
Слишком хорошо, чтобы быть правдой.
С удовольствием посадил бы куда понадежнее одного чудо-франча, снявшего с поддержки спецконфу и накостылившего всякой хрени прям внутри стандартных форм.
Пытаюсь объяснить заказчикам, что иногда бывает один раз дешево, потом всю жизнь сердито. Но нет. К некоторым понимание приходит исключительно через собственный негативный опыт.
Просто разные парадигмы.
У них: «Вау! Ну и фрик! Круто! Спляши еще!» (пусть расцветают все уродские цветы)
У нас: «Ну и дебил! Кто ж так делает?! Убейся.» (делай правильно, будь как все (какими все хотели бы быть, но, разумеется, не всем дано))
начинающие программисты далеко не всегда знают заранее и наперед, какой тип данных им понадобится через N строчек.
Этому они и должны учиться, если хотят стать инженерами, а не ремесленниками.
Разумеется, это очень субъективно.
Как человек, начавший с бэйсика, и перешедший к C через ассемблер, могу сказать, что прекрасно помню, как изучение С вызывало только положительные эмоции. Потому что было абсолютно понятно, какого ускорения и упрощения люди добились с его помощью.
Я считаю, что понимая низкоуровненвые вещи, значительно проще понять абстракции, выстроенные поверх них. Здесь есть принципиальная разница между «понять» и «использовать». Использовать — уровень технаря ПТУ (при всём уважении к золоторуким мастерам), понять — инженера конструктора.
У меня есть небольшой опыт обучения ребёнка (1шт.) программированию. Так вот, бэйсик и ассемблер мы, по очевидным причинам, пропустили а начали с основ устройства процессора и памяти компьютера, и С99. Не сказать, что начало было лёгким и простым. Зато, хорошенько поднатаскавшись кодить операции с основными структурами данных вручную, человек с радостью воспринял С++/ООП и его немалые удобства, затем поглядел на Java до уровня понимания, чем она отличается, чем уникальна и в чем основные подвохи, по моему совету углубился в JavaScript/Node.js (как основу сегодняшнего бизнес-веба), что-то там покрутил на Python (но в отсутствии реальных больших задач, я полагаю, не сильно больше поверхностного представления о нём получил).
Так вот теперь он стоит на распутье, полезно ли будет ему потратить 5 лет жизни на усиленный матан, дифуры, дискретку и не первой свежести знания по практическому программированию в университете, или же развиваться самостоятельно в интересных ему направлениях и достойных командах.
Вот этот выбор между реальными немалыми деньгами сегодня и 5ти-летними инвестициями не понятно во что, я Вам скажу, похлеще того, с какого же именно языка нужно было начинать.
банковское приложение и хочется автоввод пришедшей СМС
У этого приложения в безопасности только дыра.
вот было у нас приложение которое показывает с какого оператора нам звонят или допустим КТО звонит (дергая свою базу)
Вы большими буквами предупреждали пользователей, что отправляете информацию о том, кто и когда ему звонил на свои сервера (и храните там её, в лучшем случае, в логах)?
Языки с явными типами проще для понимания начинающими, чем языки с неявными (и закулисными их преобразованиями по неочевидным правилам). Тип у переменной в рантайме есть всегда.
Иногда, чтобы понять где и какие углы можно безболезненно срезать, нужно разобраться в сущности и причинах расположения данных углов. После этого можно будет выбирать, когда резать, когда — нет.
Люди жалуются на то, что отказ от куки приводит к невозможности получения контента (заводят куки-воллы, по аналогии с пэй-воллами).
Одна из идей GDPR в том, что предоставление контента не может быть обусловлено обязательным разрешением на сбор персональной информации.
Тем, кто не понял — еще раз пояснили. Для совсем тупых — штрафы, да.
Гордость берёт за такое продвинутое регулирование. И если в некоторых вопросах евробюрократы не такие молодцы, то в отстаивании права личности перед цифровыми корпорациями — ну просто зайки.
Проникся уважением к человеку, не зная его лично.
Майки тож не лыком шиты, Вы думали только гугол-зло??
(Не замечая, что его любимый тул ездит гусеницами по кривым рельсам)
Отдельно Вам доставит (скорее всего, проблем) попытка поработать с null как с объектом
Строка задаётся последовательностью элементов строки. Определив, что именно считать «элементом» строки (байт, кодпоинт или непрерывное визуальное представление нескольких кодпоинтов, например, «эмоджи»), можно создать правила выделения элементов из строки, после выделения элементов — определить их порядок, затем переопределить его в соответствии с условиями задачи и создать новую строку с переопределенным порядком элементов.
Проблема в том, что за каким-то чудом последовательности кодпоинтов стали изображать визуально слитно. И если в применении к алфавитным символам это (с большим скепсисом) еще можно принять за необходимость, то составные свистелки «эмоджи» — просто за гранью добра и зла.
Не хотели расширять формальную спецификацию UTF и для этого… барабанная дробь… расширили её, введя составные иероглифы.
Таким образом, реальный парсер UTF теперь в любом случае должен содержать дерево всех допустимых комбинаций в виде структуры или конечного автомата — уже не суть.
Локальные проблемы типа тех, что JS split() не использует правильный парсер, всего лишь следствие того бардака, что устроили с прекрасной кодировкой UTF любители слать картинки непременно негритянской руки текстом.
Не ходите в проекты/организации, где разработчикам требуется «typeof null»
Нервы с годового бонуса назад не откупишь.
Когда от языка стало зависеть слишком многое, он как-то сам собою быстренько подтянулся до приемлемого уровня. Но не выше, ибо лень.
В своё время шуму он наделал скорее благодаря зловредности (втихую шифровал диск), чем какому-то супер полиморфизму.
Но для тех времен было прикольно, да. Похоронил Aidstest вместе с идеей простого сигнатурного сканера.
Dr.Web оказался молодцом, не только детектируя эту заразу в загрузочном секторе, но и при удачном стечении обстоятельств расшифровывая диск. Не помню, был ли их «эвристический анализ» частичным эмулятором или тупо строил дерево возможных переходов.
В те славные времена касперский имел штатную возможность для написания и подключения наколеночного плагина для детектирования и лечения вирусов, не известных лаборатории и не включенных в основную базу сканера.
Слишком хорошо, чтобы быть правдой.
С удовольствием посадил бы куда понадежнее одного чудо-франча, снявшего с поддержки спецконфу и накостылившего всякой хрени прям внутри стандартных форм.
Пытаюсь объяснить заказчикам, что иногда бывает один раз дешево, потом всю жизнь сердито. Но нет. К некоторым понимание приходит исключительно через собственный негативный опыт.
У них: «Вау! Ну и фрик! Круто! Спляши еще!» (пусть расцветают все
уродскиецветы)У нас: «Ну и дебил! Кто ж так делает?! Убейся.» (делай правильно, будь как все (какими все хотели бы быть, но, разумеется, не всем дано))
Этому они и должны учиться, если хотят стать инженерами, а не ремесленниками.
Разумеется, это очень субъективно.
Как человек, начавший с бэйсика, и перешедший к C через ассемблер, могу сказать, что прекрасно помню, как изучение С вызывало только положительные эмоции. Потому что было абсолютно понятно, какого ускорения и упрощения люди добились с его помощью.
Я считаю, что понимая низкоуровненвые вещи, значительно проще понять абстракции, выстроенные поверх них. Здесь есть принципиальная разница между «понять» и «использовать». Использовать — уровень технаря ПТУ (при всём уважении к золоторуким мастерам), понять — инженера конструктора.
У меня есть небольшой опыт обучения ребёнка (1шт.) программированию. Так вот, бэйсик и ассемблер мы, по очевидным причинам, пропустили а начали с основ устройства процессора и памяти компьютера, и С99. Не сказать, что начало было лёгким и простым. Зато, хорошенько поднатаскавшись кодить операции с основными структурами данных вручную, человек с радостью воспринял С++/ООП и его немалые удобства, затем поглядел на Java до уровня понимания, чем она отличается, чем уникальна и в чем основные подвохи, по моему совету углубился в JavaScript/Node.js (как основу сегодняшнего бизнес-веба), что-то там покрутил на Python (но в отсутствии реальных больших задач, я полагаю, не сильно больше поверхностного представления о нём получил).
Так вот теперь он стоит на распутье, полезно ли будет ему потратить 5 лет жизни на усиленный матан, дифуры, дискретку и не первой свежести знания по практическому программированию в университете, или же развиваться самостоятельно в интересных ему направлениях и достойных командах.
Вот этот выбор между реальными немалыми деньгами сегодня и 5ти-летними инвестициями не понятно во что, я Вам скажу, похлеще того, с какого же именно языка нужно было начинать.
У этого приложения в безопасности только дыра.
Вы большими буквами предупреждали пользователей, что отправляете информацию о том, кто и когда ему звонил на свои сервера (и храните там её, в лучшем случае, в логах)?
Сейчас бы решать Windows'95 проблемы в 2019 году.
Иногда, чтобы понять где и какие углы можно безболезненно срезать, нужно разобраться в сущности и причинах расположения данных углов. После этого можно будет выбирать, когда резать, когда — нет.
Как будто это что-то плохое