Search
Write a publication
Pull to refresh
0
0
Vasiliy @JMS

Пользователь

Send message

String.raw: некоторые возможности и ограничения

Reading time3 min
Views10K

I. Возможности


Когда я прочитал на MDN: «The static String.raw() method is a tag function of template literals, similar to the r prefix in Python or the @ prefix in C# for string literals» — я здорово обрадовался, потому что мне часто не хватало в JavaScript чего-то вроде одиночных кавычек в Perl.

Я сразу придумал несколько видов использования и стал активно применять их в скриптах.

1. Определение путей к файлам Windows без двойного экранирования.

const r = String.raw;

const test_module = require(r`e:\DOC\prg\js\node\-lib\test.js`);

2. Определение путей к ключам реестра Windows.

const r = String.raw;

const Winreg = require('winreg');

const regKey = new Winreg({
  hive: Winreg.HKCU,
  key: r`\Software\MPC-HC\MPC-HC\Settings`
});

3. Создание сложных регулярных выражений из составных литералов.

См. пример кода в одной из недавних статей.

II. Ограничения


Однако со временем я стал натыкаться на неожиданные ограничения. Написав об одном из них в багтрекер V8, я получил отрезвляющее объяснение. Оказывается, хоть String.raw и выдаёт строку без интерпретации экранированных литералов, на стадии парсинга кода анализатор всё равно требует, чтобы литералы соответствовали правилам. Из этого следуют неочевидные ограничения для упомянутых случаев применения.
Читать дальше →

Multiple dispatch в C#

Reading time7 min
Views30K
Мы уже рассмотрели две статьи, где функционал C# dynamic мог привести к неожиданному поведению кода.
На этот раз я бы хотел показать позитивную сторону, где динамическая диспетчеризация позволяет упростить код, оставаясь при этом строго-типизированным.

В этом посте мы узнаем:
  • возможные варианты реализации шаблона множественная диспетчеризация (multiple/double dispatch & co.)
  • как избавиться от реализовать Exception Handling Block из Enterprise Library за пару минут. И, конечно же, упростить policy-based модель обработки ошибок
  • dynamic – эффективнее Вашего кода

Читать дальше →

Почему светодиодные споты слепят

Reading time1 min
Views38K
Заменяя в подвесных потолках галогенные лампы-споты (они же софиты) на светодиодные, многие столкнулись с проблемой: со старыми лампами освещение было комфортное, а светодиодные споты начинают слепить — смотреть на них невозможно.



Читать дальше →

Как производители светодиодных ламп обманывают покупателей

Reading time3 min
Views137K
Популярность светодиодного освещения растёт. Количество российских производителей светодиодных ламп приближается к сотне. К сожалению, некоторые из них не стесняются обманывать покупателя, за одно дискредитируя других производителей. Ведь покупатель неудачно купив одни лампы, потом побоится покупать другие.

Вот две лампы «Экономка». Судя по картинкам, покупатель должен понять, что они потребляют 5 Вт, а светят, как 60-ваттные лампы накаливания.



Читать дальше →

Lamptest.ru: протестировано 557 ламп

Reading time3 min
Views29K
Летом я запустил проект по тестированию светодиодных ламп lamptest.ru. Я планировал тестировать по 10-15 ламп в месяц, но получилось совсем по-другому. Протестировано уже 557 ламп (из них 17 люминесцентных, 59 ламп накаливания, все остальные светодиодные). Такое большое количество ламп удалось протестировать благодаря успешному народному сбору средств (краудфандингу), который продолжается и сейчас.



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

Читать дальше →

Светодиодные лампы: пробуем разобраться с эквивалентом

Reading time3 min
Views87K
Большинство покупателей светодиодных ламп ориентируется по эквиваленту лампы накаливания. Они приблизительно представляют, как светит 40- 60- или 95-ваттная лампа и подбирают светодиодные лампы исходя из этого. И тут начинаются чудеса. Все производители указывают совершенно разные значения эквивалента. На lamptest.ru собраны данные уже более, чем по 500 светодиодным лампам и картина выглядит весьма забавно.



Читать дальше →

Точность измерений

Reading time3 min
Views59K
Я столкнулся с фактом, который удивил меня и скорее всего удивит и вас. Оказывается, измерить напряжение в сети с точностью хотя бы до одного вольта — почти невыполнимая задача.



Шесть приборов на этом фото показывают разные значения, причём максимальное отличается от минимального, более чем на 6 вольт.

Читать дальше →

Сравнение процесса перехода Angular2 приложения до версии beta.0 на языках Dart и TypeScript

Reading time5 min
Views8.6K
Примечание от переводчика: перевести эту статью меня побудила запись в соц сети от автора, запись была следующего содержания: "#Angular2 для #dartlang 11.7 KB меньше чем JS версия. Я выжал что мог из обоих.". Меня это ошеломило, как так, транслируемый язык, который тянет хаки для собственной работы, кроссбраузерность и еще кучу библиотек помимо Angular, и после уродования и минификации обоих вариантов побеждает не JS. Это же так естественно, что за удобство языка приходится платить размером и скоростью работы результата. В синтетических тестах результат трансляции опережает по производительности чистый JS, в реальной работе разница в производительности незаметна. Итого получается, размер собранного Dart-проекта будет примерно равен JS-проекту, скорость работы примерно одинакова. Последнее обновление Dart позволяет в несколько строк подключить любую JS-библиотеку. А писать на Dart это одно удовольствие. Последнее утверждение частично раскрывается переведённой статьёй, приятного чтения.
Читать дальше →

SDK для внедрения поддержки электронных книг в формате FB2

Reading time10 min
Views18K


Вы знаете, что «нобелевку» по научной фантастике получил китайский автор Лю Цысинь (Liu Cixin, 劉慈欣) с произведением The Three-Body Problem ( 三體). На эту книгу обратили внимание Барак Обама (пруф) и Марк Цукерберг (пруф).

image
Ольга Браатхен по своей инициативе перевела книгу на русский (вот тут можно качнуть fb2), за что ей большое спасибо.

Еще один кандидат на «нобелевку» в 2016 — это Нил Стивенсон (написавший «Лавину» и «Криптономикон») с произведением Seveneves (качнуть на английском можно тут, жаль, что на русский никто не взялся переводить).

Разработчики компании EDISON создали программу Управления доступом к электронным документам, о чем я писал пару лет назад, а сегодня речь пойдет об SDK для внедрения поддержки электронных книг в формате FB2.

Читать дальше →

Поисковая оптимизация для AppStore и Google Play или ASO

Reading time6 min
Views35K
Поисковая оптимизация для AppStore и Google Play — это комплекс мер по улучшению видимости мобильных приложений в поисковой выдаче AppStore и Google Play Market. Сокращенно называется ASO — Appstore Search Optimization.

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

ASO: основы продвижения мобильных приложений

Reading time3 min
Views74K
Итак, вы создали своё первое приложение, загрузили его в магазин, и оно не привлекает пользователей, что же делать?
Ответ на этот вопрос всегда лежит в подготовке вашего приложения до релиза: занялись ли вы ASO оптимизацией, какую маркетинговую стратегию выбрали, где разместили информацию о вашем приложении?

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

image
Читать дальше →

Очередной способ обхода Windows AppLocker

Reading time2 min
Views27K
image

Несколько лет назад компания Microsoft анонсировала новый инструмент — AppLocker, который, по задумке разработчиков, был призван повысить уровень безопасности при работе в Windows. Не так давно исследователь Кейси Смит (Casey Smith) обнаружил в данном функционале уязвимость, позволяющую обойти его. Смит нашел способ, при котором в системе можно запустить любое приложение в обход AppLocker и без прав администратора.

Что такое AppLocker


AppLocker от Microsoft работает исходя из черных и белых списков приложений, которые могут быть запущены в системе. Поставляться он начал как компонент операционных систем Win 7 и WinServer 2008 R2. С его помощью системные администраторы получили возможность создавать правила для запуска исполняемых файлов .exe, .com, а так же файлов с расширениями .msi, .msp, .bat, .scr, .js, .dll и другие.
Читать дальше →

Как я взломал Facebook и обнаружил чужой бэкдор

Reading time6 min
Views87K


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

Подпольный рынок кардеров. Перевод книги «KingPIN». Глава 27. «Web War One»

Reading time9 min
Views11K
Самая долгожданная глава. И вопрос: «Так мы будем издавать книгу на русском или нет?»

Кевин Поулсен, редактор журнала WIRED, а в детстве blackhat хакер Dark Dante, написал книгу про «одного своего знакомого».

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

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

Второе дыхание «квест по переводу книги» получил благодаря компании Edison.
Как арестовывали Макса читайте в Главе 33: «Стратегия выхода», как накрыли всю сеть Глава 34: «DarkMarket».

Глава 27. «Первая сетевая война»

(за перевод спасибо Lorian_Grace)

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

Криптовымогатель Jigsaw играет с пользователем, как персонаж фильма «Пила» (+ инструкция по обезвреживанию)

Reading time3 min
Views23K
Зловред удаляет файлы раз в час и при попытках перезагрузить ПК



Зловредных программ, угрожающих сохранности данных пользователя, становится все больше. Не успели решить проблему с криптовымогателем Petya, шифрующим жесткий диск пользователя вместо отдельных файлов, как появилось еще одно ransomware — криптовымогатель Jigsaw. Это ПО не просто шифрует файлы пользователя и требует выкуп за их дешифровку. Каждые 60 минут удаляется один файл пользователя, также данные уничтожаются вымогателем и при попытке перезагрузить ПК. Через некоторое время ежечасная «экзекуция» затрагивает уже не один, а больше файлов. При перезагрузке же удаляется не один и не два файла, а сразу тысяча.

Все это очень сильно действует на пользователя, и тот, в большинстве случаев, предпочитает заплатить. При этом на экране выдается инструкция о том, сколько нужно заплатить (биткоин-эквивалент $150) и где можно взять биткоины для оплаты «выкупа». Уже страшно? В общем-то, все это может подействовать и на технически подготовленного пользователя… Но выход есть — как и в случае с Petya, нашлись пользователи, которые научились обезвреживать ransomware. Теперь эти пользователи делятся опытом с другими.
Читать дальше →

Перегружаем стандартные DataAnnotation атрибуты для использования с custom resource provider

Reading time3 min
Views5.4K
Представьте, что у вас есть legacy проект Asp.NET MVC версии 5, которому немало лет. В нем используется самописный ResourceProvider, который умеет доставать из базы ресурс и показывать его на UI. В зависимости от различных условий (например, от того, откуда пользователь пришел на сайт), ресурсы будут показаны разные. Теперь пришло время сделать так, чтобы все намертво захардкоженные строки в Data Annotation атрибутах, такие как:
[Display(Name = "Username")]
[Required(ErrorMessage = "Please enter the username")]
[StringLength(64, ErrorMessage = "Username cannot exceed 64 characters")]
public string Username{ get; set; }

тоже могли получать свои значения, используя ResourceProvider. Как это сделать, используя немного наследования и доступной в Asp.NET MVC кастомизации, я покажу под катом.
Читать дальше →

Cello — язык программирования живой клетки

Reading time4 min
Views31K
Приветствуем вас на страницах блога iCover! Технология программного кода «Cello», разработанная совместной группой ученых Массачусетского технологического института (MIT), Бостонского университета и Национального института стандартов и технологий позволяет прописывать в ДНК клеток бактерий требуемый набор свойств и создавать биологические схемы с нужными логическими параметрами, работающие прямо внутри живой клетки.

image
Подробнее

Long Polling для Android

Reading time6 min
Views20K
Прочитав статью, стал внедрять в web проекты Long Polling. На nginx крутится серверная часть, на javascript клиенты слушают каналы. Прежде всего это было очень полезно для личных сообщений на сайте.
Потом в поддержку web проектов стали разрабатываться приложения под Android. Встал вопрос: как реализовать многопользовательский проект, в котором равнозначно участвовали бы как браузерные клиенты, так и мобильные приложения. Так как Long Polling уже был внедрён в браузерные версии, решено было написать java модуль и для Android.
Читать дальше →

Создание приложений реального времени с помощью Server-Sent Events

Reading time7 min
Views54K
Буквально недавно стало известно, что Firefox 6 получит SSE (уже есть в Opera 10.6+, Chrome, WebKit 5+, iOS Safari 4+, Opera Mobile 10+) так, что поддержка более половины всех браузеров (охват аудитории пользователей) уже не за горами. Настало время присмотреться к этой технологии. SSE предложил Ian Hickson более 7 лет назад, но только год назад она стала появляться в браузерах. У нас же есть WebSockets зачем нам ещё один какой-то протокол?! Но во всем есть свои плюсы и минусы, давайте посмотрим чем же SSE может быть полезен.

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

Long Polling от А до Я своими руками

Reading time5 min
Views55K
Как реализовать long polling с помощью Nginx и Javascript в сети достаточно много материала. Но полного руководства я ещё не встречал. То возникают проблемы с компиляцией модуля под Nginx, то в браузере вертится иконка загрузки при long poll запросах. Под катом, полный материал как же все таки это сделать правильно.
Читать дальше →

Information

Rating
Does not participate
Location
Ростов-на-Дону, Ростовская обл., Россия
Date of birth
Registered
Activity