Как стать автором
Обновить
7
0

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

Отправить сообщение

ES6 по-человечески

Время на прочтение11 мин
Количество просмотров583K

От переводчика:
Предлагаю вашему вниманию перевод краткого (действительно краткого) руководства по ES6. В нём можно ознакомиться с основными понятиями стандарта.
Оригинальный текст в некоторых случаях был дополнен или заменён на более подходящий источник. Например, часть определения ключевого слова const является переводом документации с MDN.
Чтобы лучше разобраться в некоторых концепциях (для выполнения качественного перевода) использовалось описание стандарта на сайте MDN, руководство "You Don't Know JS: ES6 & Beyond" и учебник Ильи Кантора.


Перевод выложил на Гитхаб: https://github.com/etnolover/ES6-for-humans-translation. В случае нахождения ошибок пишите, исправлю.
Ссылка на оригинальный текст: https://github.com/metagrover/ES6-for-humans


Update 22.07.2016: добавил опрос про const


Содержание



Читать дальше →
Всего голосов 62: ↑60 и ↓2+58
Комментарии87

«Кто мутит воду – 2»: или всё, что вы хотели знать об обратном осмосе

Время на прочтение13 мин
Количество просмотров321K


Мой первый материал — сравнение бытовых фильтров для воды «Кто мутит воду» готовился в запале исследователя-переселенца. Когда впервые переезжаешь в свою собственную квартиру, начинаешь уделять внимание мелочам — потому что делаешь и покупаешь для себя, и надо, чтобы всё было «на века». В посте я поделился опытом сравнения фильтров-кувшинов и сорбционных проточных фильтров разных производителей. Планов будить воинствующих комментаторов изначально не было… А потом в дверь личку постучали и сказали: «Пиши ещё, гостем будешь!». И я написал.
Всего голосов 99: ↑82 и ↓17+65
Комментарии351

Тюнинг сетевого стека Linux для ленивых

Время на прочтение5 мин
Количество просмотров91K

Сетевой стек Linux по умолчанию замечательно работает на десктопах. На серверах с нагрузкой чуть выше средней уже приходится разбираться как всё нужно правильно настраивать. На моей текущей работе этим приходится заниматься едва ли не в промышленных масштабах, так что без автоматизации никуда – объяснять каждому коллеге что и как устроено долго, а заставлять людей читать ≈300 страниц английского текста, перемешанного с кодом на C… Можно и нужно, но результаты будут не через час и не через день. Поэтому я попробовал накидать набор утилит для тюнинга сетевого стека и руководство по их использованию, не уходящее в специфические детали определённых задач, которое при этом остаётся достаточно компактным для того, чтобы его можно было прочитать меньше чем за час и вынести из него хоть какую-то пользу.

Читать дальше →
Всего голосов 94: ↑94 и ↓0+94
Комментарии45

Облако Mail.ru в Total Commander

Время на прочтение2 мин
Количество просмотров103K
Да, это именно то, что вы представили. Доступ к cloud.mail.ru как к диску прямо внутри файлового менеджера. Ссылка в конце статьи.

А ещё TC научился показывать иконки во вкладках!

Будем откровенны: безальтернативный механизм работы с облаком Mail.ru через синхронизацию очень неудобен. По сути, у пользователя нет полноценного контроля над единичными файлами; всё, что предлагает ему стандартный клиент — двустороннее зеркалирование указанных им данных. Если же нужно отойти от этого сценария, скажем, скачать из облачного архива единственный файл на несинхронизированном устройстве — приходится запускать браузер и пытаться сделать что-то через веб-интерфейс, в котором даже поиска нет. Учитывая, что содержимое облачных каталогов подгружается по мере прокрутки, поиск в браузере может и не помочь.
Есть и другие кейсы, при которых работа с облаком становится затруднительна. Доступ к облаку по webdav, который решил бы все проблемы, отключён (хотя работал какое-то время после запуска сервиса).
При этом сервис бесплатно предоставляет довольно значительный объём хранилища (раздачу террабайтов все помнят?), лимитирования скорости я ни разу не замечал, и за всё время работы с сервисом нареканий к нему не возникло. Для резервирования и пересылки не слишком приватных данных облако Mail.ru подходит очень хорошо. Ограниченность клиента — единственная проблема.

Раз она есть — надо её решать.
Читать дальше →
Всего голосов 72: ↑67 и ↓5+62
Комментарии159

Что браузеры делают с вашим JavaScript-кодом: об оптимизациях в JS-движках на примере V8

Время на прочтение7 мин
Количество просмотров40K
Оптимизация кода начинается не столько с изучения особенностей языка программирования, сколько с понимания схемы работы всей «технологической цепочки», задействованной при создании приложения — от алгоритма программы до компилятора.

Мы поговорили с Вячеславом Егоровым aka mraleph, инженером из Google, компиляторщиком до мозга костей, который работал над JavaScript движком под названием V8, встроенным в Chromium (и, как следствие в Chrome, Android версию браузера, облачную операционную систему Chrome OS) и в менее известный Maxthone.
JavaScript-программистам Вячеслав, скорее всего, известен как автор постов про внутренности V8 и как докладчик, увлеченно показывающий машинный код на конференциях для Web-разработчиков.

В настоящее время Вячеслав активно работает в Google над Dart VM.
В этом интервью он рассказал о том, что происходит внутри движка, выполняющего динамический JS-код и поделился примерами, как выполняются некоторые оптимизации и почему важно глубоко понимать работу движка, чтобы обеспечить быстрое выполнение кода.

Читать дальше →
Всего голосов 61: ↑58 и ↓3+55
Комментарии34

Интервью с CYBERMANIAC

Время на прочтение38 мин
Количество просмотров30K
Если вы знаете, и помните человека под ником CYBERMANIAC, для вас этот разговор будет похож на внезапное обнаружение половины студенческой зарплаты во внутреннем кармане старой куртки. Для тех кто никогда не слышал о Станиславе, я думаю будет тоже интересно почитать о небольшой, но уникальной искре времени начал интернета в далеком от столиц городов России глазами CYBERMANIAC'а. Он мне показался неизменным с 00 годов да и настолько изолированным, что очень уж захотел написать о нем.

Мы осторожно поговорим о жизни программиста в глубинке, о языках программирования с момента появления их в России: Forth, Borland Pascal, Delphi ,C#, MegaBasic, Java, SQL, C++. о япоском языке, о змеях, о национальных напитках, о Сократе, о советских объективах, о звездах, человеческих страхах.

CYBERMANIAC носит в себе большой опыт в крекинге, написании утилит, автор Neo Sign 0f Misery, древней электронной книги “Теоретические основы крекинга”, а так же автор многим любимого windows scanner и большого фотолюбителя-звездочета. Интервью получилось многим больше, чем я рассчитывал. Но надеюсь, для вас будут звучать колокольчиками похожие мысли. Именно их мы и слушаем, когда читаем…
Читать дальше →
Всего голосов 57: ↑49 и ↓8+41
Комментарии13

История зрения или миф о «нечленимой сложности»

Время на прочтение12 мин
Количество просмотров46K
Факты не перестают существовать
оттого, что ими пренебрегают.

Олдос Хаксли

Попытаюсь развеять «миф о нечленимой сложности» на примере глаза. Его часто любят приводить в пример креационисты.

Основная претензия звучит так: «Если глаз создала эволюция, то как она смогла создать столь сложный инструмент без промежуточных форм? Какая польза в половине глаза?» (есть ещё вариант с половиной крыла, по сути, мало отличающийся от этого вопроса).

Я далёк от биологии, но ответ на этот вопрос могу попробовать дать, поскольку это не так сложно, как кажется, и потому, что «ничто в биологии не имеет смысла, кроме как в свете эволюции», как сказал Ф.Г. Добржанский. Только с этой позиции «необъяснимое», на первый взгляд, биологическое явление становится простым и логичным.

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

Отрывок из книги «Самое грандиозное шоу на Земле»
Глаз позвоночного в своем лучшем случае, скажем у ястреба или человека, это превосходный точный инструмент, способный на чудеса высокого разрешения, конкурирующий с лучшими приборами от Цейсса и Никона. Будь это не так, Цейсс и Никон напрасно бы тратили время, производя фотографии высокого разрешения для наших глаз. С другой стороны, Германн фон Гельмгольц, великий германский ученый 19 века (вы можете назвать его физиком, но его вклад в биологию и психологию еще больше), сказал о глазе:

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

Одна из причин, по которым глаз кажется лучше, чем его оценил физик Гельмгольц, в том, что позже мозг выполняет удивительную работу по улучшению изображения, как ультра-сложный автоматический фотошоп. Что касается оптики, человеческий глаз достигает качества Цейсса/Никона только в фовеальной области — центральной части сетчатки, которую мы используем для чтения. Когда мы сканируем сцену, мы передвигаем фовеальную область в разные части изображения, видя каждую в максимальной четкости и деталях, и мозговой «фотошоп» обманывает нас, заставляя думать, что мы видим всю сцену в одном и том же качестве детализации. Высококачественные Цейссы и Никоны между тем на самом деле отражают всю сцену с почти одинаковой четкостью.

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

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

Но теперь представьте, что я скажу вам, что фотоэлементы глаза направлены назад, в обратную сторону от сцены, на которую смотрят. «Провода» соединяющие светочувствительные клетки с мозгом идут через всю поверхность сетчатки, так что световые лучи должны пройти через ковер собравшихся проводков перед тем, как попасть на светочувствительные клетки. Это неразумно, но все и того хуже. Одно из последствий того, что светочувствительные клетки направлены назад — то, что провода, передающие данные от них, должны как-то пройти через сетчатку назад к мозгу. В глазу позвоночного они собираются к особому отверстию в сетчатке, где ныряют сквозь нее. Отверстие, заполненное нервами, называется слепым пятном, поскольку оно не видит, но «пятно» — это слишком мягко сказано, поскольку оно весьма велико, скорее, как слепая область, что тем не менее не является слишком большим неудобством для нас благодаря «автоматическому фотошопу» мозга. И снова, верните его [инструмент] назад, он не просто плохо спроектирован, это дизайн полного идиота.

Или нет? Будь это так, глаз бы ужасно видел, но это не так. Он, в действительности, очень хорош. Он хорош потому, что естественный отбор, как чистильщик работая над бесчисленным множеством мелких деталей, прошелся после большой исходной ошибки установки сетчатки задом наперед и спас высококачественный точный инструмент. Это напоминает мне сагу о телескопе Хаббла. Вы помните, он был запущен в 1990 году и, обнаружилось, что он имеет крупный дефект. Из-за незамеченной ошибки в калибровке аппарата, когда его полировали на земле, основное зеркало хотя и немного, но [функционально-] значимо отклонялось от нужной формы. Дефект обнаружился после того, как телескоп был запущен на орбиту. Решение было смело и изобретательно. Астронавты, доставленные на телескоп, успешно смонтировали на нем нечто вроде очков. После этого телескоп заработал очень хорошо, и три последующих сервисных миссии обеспечили дальнейшее улучшение. Я хочу сказать, что даже крупный дефект конструкции, грубая ошибка может быть скорректирована последующей починкой, искусность и тонкость которой при соответствующих обстоятельствах совершенно компенсируют исходную ошибку. В эволюции в основном крупные мутации, даже если они могут привести к улучшению в правильном направлении, почти всегда требуют много дальнейших поправок, операций по зачистке множеством мелких мутаций, возникающих позднее и получающих преимущество при отборе, поскольку сглаживают острые кромки, оставленные исходной крупной мутацией. Вот почему люди и ястребы видят так хорошо, несмотря на грубую ошибку в их исходной конструкции. Снова Гельмгольц:

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

Каждый организм — и результат и, одновременно, жертва своей собственной истории. На каждом шаге эволюции отбор обеспечивает решение актуальных задач, без учёта перспективы. Заглядывать в будущие перспективы развития в эволюции просто некому (кроме «Создателей» из сказок, нарушающих принцип причинности – один из основных постулатов науки). Главный механизм эволюции — преимущественное выживание и оставление потомства существами, более приспособленными к тому образу жизни, который они ведут в данный момент, в той динамично изменяющейся среде, которая их окружает. Конечно, выживание, помноженное на отрезки времени, слабо понимаемые неискушённым разумом. В каждый следующий момент приспособления, которые были достигнуты на предыдущем этапе, могут оказаться морально безнадёжно устаревшими и стать «ископаемыми» генами.
Исследовать
Всего голосов 64: ↑62 и ↓2+60
Комментарии351

Поиск с помощью регулярных выражений может быть простым и быстрым

Время на прочтение21 мин
Количество просмотров49K
В этой статье мы рассмотрим два способа поиска с помощью регулярных выражений. Один широко распространён и используется в стандартных интерпретаторах многих языков. Второй мало где применяется, в основном в реализациях awk и grep. Оба подхода сильно различаются по своей производительности:



В первом случае поиск занимает A?nAn времени, во втором — An.

Степени обозначают повторяемость строк, то есть A?3A3 — это то же самое, что и A?A?A?AAA. Графики отражают время, требуемое для поиска через регулярные выражения.

Обратите внимание, что в Perl для поиска строки из 29 символов требуется более 60 секунд. А при втором методе — 20 микросекунд. Это не ошибка. При поиске 29-символьной строки Thompson NFA работает примерно в миллион раз быстрее. Если нужно найти 100-символьную строку, то Thompson NFA справится менее чем за 200 микросекунд, а Perl понадобится более 1015 лет. Причём он взят лишь для примера, во многих других языках наблюдается та же картина — в Python, PHP, Ruby и т. д. Ниже мы рассмотрим этот вопрос более детально.

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

Возникает логичный вопрос: а почему бы в Perl не использовать метод Thompson NFA? Это возможно и следует делать, и об этом пойдёт далее речь.
Читать дальше →
Всего голосов 85: ↑79 и ↓6+73
Комментарии14

Как работает реляционная БД

Время на прочтение51 мин
Количество просмотров537K
Реляционные базы данных (РБД) используются повсюду. Они бывают самых разных видов, от маленьких и полезных SQLite до мощных Teradata. Но в то же время существует очень немного статей, объясняющих принцип действия и устройство реляционных баз данных. Да и те, что есть — довольно поверхностные, без особых подробностей. Зато по более «модным» направлениям (большие данные, NoSQL или JS) написано гораздо больше статей, причём куда более глубоких. Вероятно, такая ситуация сложилась из-за того, что реляционные БД — вещь «старая» и слишком скучная, чтобы разбирать её вне университетских программ, исследовательских работ и книг.

На самом деле, мало кто действительно понимает, как работают реляционные БД. А многие разработчики очень не любят, когда они чего-то не понимают. Если реляционные БД используют порядка 40 лет, значит тому есть причина. РБД — штука очень интересная, поскольку в ее основе лежат полезные и широко используемые понятия. Если вы хотели бы разобраться в том, как работают РБД, то эта статья для вас.
Читать дальше →
Всего голосов 232: ↑229 и ↓3+226
Комментарии134

Проблема читов в онлайн-играх

Время на прочтение8 мин
Количество просмотров85K


Большинство крупных многопользовательских игр рано или поздно сталкиваются с тем, что не все пользователи играют честно. В нашем шутере Warface в какой-то момент это стало ощущаться особенно сильно. Для борьбы с читерами мы используем целый комплекс решений. Одним из компонентов этого комплекса является наша внутренняя разработка под названием MRAC (Mail.Ru AntiCheat). После ее внедрения мы добились хороших результатов: среднее количество ежедневно улетающих в бан читерских аккаунтов упало с 17000 в начале года до 1500 сейчас, при том, что количество жалоб от пользователей на читеров существенно уменьшилось. На выявление подозрительной активности и блокировку аккаунта сейчас уходит примерно 5 минут, вместо прежних 20. Сейчас система распознает и реагирует на более чем 200 сигнатур читерского ПО и постоянно совершенствуется.
Читать дальше →
Всего голосов 61: ↑50 и ↓11+39
Комментарии98

Взломать Wi-Fi за 10 часов

Время на прочтение12 мин
Количество просмотров1.5M
Еще не так давно казалось, что беспроводная сеть, защищенная с помощью технологии WPA2, вполне безопасна. Подобрать простой ключ для подключения действительно возможно. Но если установить по-настоящему длинный ключ, то сбрутить его не помогут ни радужные таблицы, ни даже ускорения за счет GPU. Но, как оказалось, подключиться к беспроводной сети можно и без этого — воспользовавшись недавно найденной уязвимостью в протоколе WPS.


Читать дальше →
Всего голосов 304: ↑294 и ↓10+284
Комментарии164

Настройка IPTV в TomatoUSB + udpxy

Время на прочтение5 мин
Количество просмотров41K

На Хабре уже рассматривался вопрос о настройке и просмотре IPTV через роутер на различных прошивках — openWRT, DDWRT и прочих, но никто не описывал подробно как настроить IPTV на прошивке Tomato за счёт перенаправления UDP трафика провайдера в TCP трафик клиента с помощью приложения udpxy. В этой статье я подробно опишу процесс установки и запуска udpxy на прошивке tomato v1.28, а так же расскажу как сделать мост WAN to LAN для отдельной IPTV приставки, ибо сам я потратил очень много времени чтобы разобраться во всём этом, и будь у меня под рукой подобная статья я бы справился намного быстрее.
Читать дальше →
Всего голосов 5: ↑5 и ↓0+5
Комментарии6

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность

Специализация

Системный аналитик, Бизнес-аналитик
JavaScript
Node.js
Vue.js
Express
Webpack