Сегодня я был изумлен тем, как обычно позитивное и дружелюбное сообщество Vue.js скатилось в печальное противостояние. Две недели назад создатель Vue Эван Ю опубликовал предложение (RFC) с новым функциональным API для компонентов в грядущем Vue 3.0. Сегодня критическое обсуждение на Reddit и аналогичные комментарии на Hacker News вызвали наплыв разработчиков в изначальный RFC с возмущениями, порой даже чересчур резкими.
Web-developer
Как стать долларовым миллионером за 30 лет, лежа на диване
На Хабре недавно вышел пост ״Новичкам фондового рынка: честные разговоры о трейдинге״. Этот пост, опубликованный в одном из самых читаемых блогов Хабра, вводит людей в заблуждение и создает у них ложное представление о том, что игра на бирже — хороший способ заработка. Это вынудило меня написать комментарий, постепенно переросший в целую статью, с детальным разбором того, почему трейдинг — это не способ разбогатеть, а способ потерять деньги, и о том, как на самом деле заработать на инвестициях.
8 распространенных структур данных на примере JavaScript
Звучит ли это знакомо: «Я начал заниматься веб разработкой после прохождения курсов»?
Возможно, вы хотите улучшить свои знания основ информатики в части структур данных и алгоритмов. Сегодня мы поговорим о некоторых наиболее распространенных структурах данных на примере JS.
1. Стек (вызовов) (Stack)
Стек следует принципу LIFO (Last In First Out — последним вошел, первым вышел). Если вы сложили книги друг на друга, и захотели взять самую нижнюю книгу, то сначала возьмете верхнюю, затем следующую и т.д. Кнопка «Назад» в браузере позволяет перейти (вернуться) на предыдущую страницу.
Регулярные выражения для валидации распространенных видов данных
Визуальный генератор регулярных выражений
Большинство из нас, впервые столкнувшись с данной проблемой, начинают забивать в поисковых системах что-то типа: «regexp online generator» и к своему великому сожалению осознают что
А как же составить это самое регулярное выражение?
До недавнего времени существовало 2 ответа на этот вопрос:
- Изучить документацию по регулярным выражениям и составить регулярку самому
- Попросить кого-то более опытного сделать это за вас
Теперь, после нескольких месяцев разработки, рад представить и 3-й ответ:
» Генератор регулярных выражений
История
Давным давно, в одном проекте пришел довольно интересный и сложный запрос от внутренних пользователей. Персоналу технической поддержки нужно было самим задавать правила валидации для определенных полей, разным пользователям. Правила должны были часто и очень оперативно изменяться.
Ликбез по респираторам. Помогает ли респиратор от заражения вирусом. Обзор 11 респираторов
На волне повышенного внимания к китайскому коронавирусу и выросшего спроса на медицинские маски и другие индивидуальные средства защиты органов дыхания, я решил прояснить для себя вопрос — какие вообще бывают респираторы, как они работают и от чего защищают.
Как увлажняется кожа, и что бывает, когда вы маниакально моете руки спиртом при COVID-19
Человек с трудом растворяется в воде, потому что почти весь завёрнут в гидроизоляцию. Это липидный слой кожи, состоящий, как прямо следует из названия, из жиров. То есть с одной стороны, нам нужна увлажнённая кожа, влажные глаза, влажный нос и другие органы, а с другой — наша же собственная изоляция частично мешает свободно подавать влагу туда и обратно.
Сейчас нас начали доставать знакомые, которые узнали о пользе мытья рук. И у них сохнет кожа от мыла, средств дезинфекции и прочего. Если вы начнёте соблюдать правила ВОЗ, то разные органы будут сохнуть и у вас тоже. Поэтому давайте немного поговорим о том, как же это устроено.
Если вы польёте на руку водопроводной водой, то через некоторое время кожа на ней будет суше (особенно это заметно зимой). В этот момент люди иногда думают, что нарушаются какие-то базовые законы мироздания. На деле за счёт содержащихся в воде элементов (в основном кальция и хлора) вы нарушаете липидный слой и выносите с кожи ещё часть веществ, которые удерживали влагу. Результат — ваши руки чистые. И сухие.
Если бы вода могла проникать в кожу, то человек растворялся бы в ванне. В смысле он так делает где-то на третьи сутки (и даже может принять форму и размер ванны, что доставляет известную радость судмедэкспертам и патологам). Но обычный живой человек в достаточной степени водонерастворим.
IPv6 — прекрасный мир, стоящий скорого перехода на него
Представляем PHP 7.4: Производительность, Возможности, Устаревший Функционал
PHP постоянно развивается, и только что мир увидело их последнее обновление — PHP 7.4. Производительность и скорость продолжают расти, в чём мы убедились ещё в предыдущих релизах PHP 7. Предварительная загрузка — одно из самых ярких обновлений. Эта возможность позволяет значительно ускорить выполнение скрипта и делает код чище и быстрее благодаря уменьшённому количеству строк кода.
PHP является важным элементом всемирной паутины и используется более чем на 79% всех сайтов. Известные сайты, такие как Facebook, Википедия, WordPress и многие другие используют PHP.
Мы можем увидеть что скорость веб-сайтов WordPress увеличивается вдвое, если сравним сайты, работающие на PHP 5 и 7. От последней версии больше всего выиграют сайты на WordPress.
Независимое глубокое клонирование объектов в JavaScript
Number
, String
, Boolean
, Symbol
и др) и ссылочные (Array
, Object
, Function
, Maps
, Sets
и др) типы данных. Нужно отметить, что примитивные типы данных, являются иммутабельными — их значения не могут быть модифицированы, а только перезаписаны новым полным значением, а вот с ссылочными типами данных все наоборот. Например, объявим переменные типа Number
и Object
:let num = 5;
let obj = { a: 5 };
Мы не можем модифицировать переменную
num
, нам лишь можно перезаписать ее значение, а вот переменную obj мы модифицировать можем:let num = 10;
let obj = { a: 5, b: 6 };
Как видим, в первом случае мы перезаписали значение переменной, а во втором расширили объект. Отсюда делаем вывод, что примитивные типы данных невозможно расширять, а с ссылочными типами данных мы можем это делать, даже с модификатором
const
. Последние можно заморозить, к примеру, с помощью
Object.freeze(obj)
, но данная тема выходит за рамки статьи (ссылки для любознательных Object.defineProperty, защита объекта от изменения).Как типы данных передаются в функции в JavaScript? Каждый js-программист наверняка без труда ответит на этот вопрос, но все же скажем: примитивные типы данных передаются в функцию всегда только по значению, а ссылочные всегда только по ссылке. И вот тут с последними, в некоторых ситуациях, возникают проблемы.
Zip-файлы: история, объяснение и реализация
Мне давно было интересно, как сжимаются данные, в том числе в Zip-файлах. Однажды я решил удовлетворить своё любопытство: узнать, как работает сжатие, и написать собственную Zip-программу. Реализация превратилась в захватывающее упражнение в программировании. Получаешь огромное удовольствие от создания отлаженной машины, которая берёт данные, перекладывает их биты в более эффективное представление, а затем собирает обратно. Надеюсь, вам тоже будет интересно об этом читать.
В статье очень подробно объясняется, как работают Zip-файлы и схема сжатия: LZ77-сжатие, алгоритм Хаффмана, алгоритм Deflate и прочее. Вы узнаете историю развития технологии и посмотрите довольно эффективные примеры реализации, написанные с нуля на С. Исходный код лежит тут: hwzip-1.0.zip.
Как сделать ваш HTML отзывчивым, добавив одну строку кода на CSS
В этой статье я научу вас, как использовать CSS Grid для создания крутой сетки изображений, которая изменяет количество столбцов в зависимости от ширины экрана или окна браузера.
Самое крутое, что для добавления отзывчивости потребуется написать одну строчку кода на CSS
Последовательное скачивание в uTorrent за 2 клика
Прочитав публикацию «uTorrent на страже online просмотра», был удивлен, что до сих пор не опубликован способ включить возможность последовательного скачивания файлов, не прибегая к дополнительному софту вроде BEncode Editor, а просто и быстро — буквально за два клика.
Итак:
Восстановление классической клавиатуры IBM Model F
Оригинальная IBM Model F продавалась с IBM PC 5150 — первым IBM PC
Для многих качество клавиатуры не имеет большого значения: для них это дешёвое периферийное устройство без разницы, какого производителя. Но некоторые люди, которые работают с клавиатурой по 8-12 часов в день, начинают понимать, что клавиатуры бывают разными. Словно механик, который покупает гаечные ключи одной и той же фирмы, или столяр, предпочитающий рубанок 150-летней давности, так и они осознают, что раньше инструменты делали лучше, чем сейчас. Это сложно описать словами, но старые механические клавиатуры не тягучие, клавиши нажимаются чётко и точно, по ним не нужно стучать, они более эргономичные. Они даже звучат приятнее.
Хотя в последние годы на волне новой моды производители выпускают современные механические модели класса hi-end, но ни одна из них не превзойдёт лучшую клавиатуру в истории компьютерной техники — классическую IBM Model F, которая выпускалась в 1981-1994 гг.
Приготовься к введению в России социального рейтинга
Уже сегодня банки формируют свои предложения исходя из данных собранных их приложениями на смартфонах клиентов. В частности ставка по кредиту, которую вам предложат, сильно зависит от файлов, размещенных на вашем устройстве, и сайтов, которые вы посещали. Именно поэтому банки так настойчиво предлагают их установить (даже отказывая в обслуживании, сославшись на возможность выполнения необходимых действий самостоятельно). Для этого банковские клиенты требуют максимальных прав на устройстве. Например, Сбербанк Онлайн утверждает, что ему необходим доступ к файловой системе для… поиска вирусов на устройстве.
Вам может показаться, что получение низкой ставки по кредиту за социально полезные действия- перспектива далекого будущего. Но уже сегодня ставка ипотеки для молодой семьи находится в районе 10%, тогда как остальные предложения близки к 20%. Т.е. это уже давно реальность, просто вы не придавали этому значения.
Я считаю, что ряд непопулярных решений будет принят в течении последнего президентского срока Владимира Путина: этому человеку больше не надо «сохранять лицо». Поэтому до 2024 года мы увидим новый виток «закручивания гаек», в том числе введение социального рейтинга в России.
Как разработчик, я никогда не знаю себе цену, потому что её нет. Но вся система построена так, как будто она есть
Каждый раз перед собесом я говорю себе: "Спокойно, не нужно ничего выдумывать, доучивать и врать, твоих знаний и опыта достаточно для того, что бы работать у них. Ты усилишь любую команду, тебе есть что предложить, а пробелы в твоих знаниях — приемлемы. Если бы они знали о твоих навыках всё, что знаешь ты, они бы точно тебя взяли". Но когда начинается собеседование, я всегда перестаю в это верить. Все два часа интервью я хожу как по минному полю, что бы не дай бог не спалиться, что я чего-то не знаю.
Шпаргалка по пакетному менеджеру NPM
npm — это пакетный менеджер node.js. С его помощью можно управлять модулями и зависимостями.
Небольшая шпаргалка всех моих любимых команд npm:
- Установка npm
- Обновление npm
- Поиск пакетов в npm
- Просмотр информации о пакете
- Локальная установка пакетов
- Установка пакета в наше приложение
- Понимание разницы между глобальной и локальной установкой
- Глобальная установка пакетов
- Удаление локально установленного пакета
- Удаление глобально установленного пакета
- Установка определённой версии пакета
- Установка модуля с Github
- Связи любых пакетов локально
- Связи локальных пакетов для нескольких приложений
- Отмена связи между пакетами приложения
- Отмена связи пакета в системе
- Создание нового пакета
- Добавление нового пользователя
- Публикация пакета в репозиторий npm
- Удаление пакета из репозитория npm
- Управление правами доступа к пакетам в репозитории npm
Обфускация JavaScript
Первый способ
Он всем известен — обфускация минимизаторами такими как JS Packer, JSmin, YUI Compressor, Closure compiler или можно просто пугуглить «JavaScript Obfuscator» и найдется ещё сто штук разных обфускаторов.
Они превращают существующий код
function MyClass(){
this.foo = function(argument1, argument2){
var addedArgs = parseInt(argument1)+parseInt(argument2);
return addedArgs;
}
var anonymousInnerFunction = function(){
// do stuff here!
}
}
В какой-то такой вид:
function MyClass(){this.foo=function(c,b){var d=parseInt(c)+parseInt(b);return d};var a=function(){}};
Или такой:
var _0xd799=["\x66\x6F\x6F"];function MyClass(){this[_0xd799[0]]=function (_0xefcax2,_0xefcax3){var _0xefcax4=parseInt(_0xefcax2)+parseInt(_0xefcax3);return _0xefcax4;} ;var _0xefcax5=function (){} ;} ;
Или вот такой:
eval(function(p,a,c,k,e,d){e=function(c){return c};if(!''.replace(/^/,String)){while(c--){d[c]=k[c]||c}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('4 0="3 5!";9 2(1){6(1+"\\7"+0)}2("8");',10,10,'a|msg|MsgBox|Hello|var|World|alert|n|OK|function'.split('|'),0,{}))
Но ничего не стоит его восстановить с помощью jsbeautifier.org либо просто убрать eval и получить исходный код, многое потеряем, но смысл кода восстановим. Ну и с первого взгляда мы видим, что перед нами JavaScript.
Все это были цветочки под катом жесткие методы обфускации.
Разбор неисправных ноутбучных аккумуляторов. Заметки электровелосипедиста
По роду деятельности более 6 лет занимаюсь ремонтом и сборкой Li-ion аккумуляторных батарей для электровелосипедов.
У меня часто оказываются неисправные ноутбучные аккумуляторы, которые отдают мастера по ремонту компьютерной техники за небольшие деньги.
Элегантные паттерны в современном JavaScript (сборная статья по циклу от Bill Sourour)
RORO
Абревиатура обозначает Receive an object, return an object — получить объект, вернуть объект. Привожу ссылку на оригинал статьи: ссылка
Билл писал, что пришёл к способу написанию функций при котором большинство из них принимают только один параметр — объект с аргументами функций. Возвращают они также объект результатов. На эту идею Билла вдохновила деструктуризация(одна из фич ES6).
Для тех, кто не знает о деструктуризации приведу необходимые пояснения по ходу рассказа.
Информация
- В рейтинге
- Не участвует
- Дата рождения
- Зарегистрирован
- Активность