Pull to refresh
21
0
Константин Куцылло @trikadin

Javascript-разработчик

Экспериментируем с шаблонами литералов в TypeScript: как покрыть типами DSL

Reading time 8 min
Views 7K

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

Иногда проверка различных идей носит чисто экспериментальный характер. Так, на волне нового релиза TypeScript я решил попробовать типизировать DSL запросов к MongoDB (синтаксис запросов довольно прост, но при этом функционален и широко известен).

Под катом — результат. Я бы написал «не пытайтесь повторить это в своем рабочем проекте», но вдруг какие-то мысли и способы применения TypeScript окажутся полезными и вам.
Читать дальше →
Total votes 58: ↑57 and ↓1 +56
Comments 8

Типографика в вебе

Reading time 5 min
Views 133K
Статья поможет разобраться с основными терминами в типографике. А чтобы информация лучше и легче воспринималась, скучные тексты проиллюстрированы веселыми картинками. Так же в статье собраны самые распространенные ошибки, которые допускаются веб-дизайнерами при работе с текстом и даны рекомендации как их избежать.

image

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

Для начала давайте разберемся с терминологией. Наверняка большинство терминов вам знакомы, но еще разок ознакомиться с определениями не будет лишним. Возможно, это дополнит ту информацию, которой вы уже обладаете.
Читать дальше →
Total votes 23: ↑19 and ↓4 +15
Comments 34

6 нежданчиков от Джулии

Reading time 19 min
Views 9.5K


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


Во время поисков наткнулся на курс программирования для экономистов (помимо Джулии там есть и Питон). Опытные могут пробежаться по экспресс курсу или ознакомиться с книгой How to Think Like a Computer Scientist


Далее предоставлен перевод материала из блога Christopher Rackauckas 7 Julia Gotchas and How to Handle Them

Читать дальше →
Total votes 24: ↑23 and ↓1 +22
Comments 19

Parrot Security OS — альтернатива Kali Linux

Reading time 3 min
Views 85K
image
 
Parrot Security OS — набирающий популярность security-дистрибутив, основанный на Debian-linux. Простой в освоении, подходит и для новичков и для профессионалов. В этой статье я расскажу об этом дистрибутиве и о развитии проекта от одного из контрибьюторов M. Emrah ÜNSÜR с которым мне удалось пообщаться.
Читать дальше →
Total votes 32: ↑30 and ↓2 +28
Comments 10

Progressive Web Apps: WhoAmI

Reading time 3 min
Views 95K
Интерес к разработке приложений для мобильных операционных систем в сообществе разработчиков стабильно растёт, количество инструментов и подходов позволяющих создавать приложения становится всё больше. Сегодня я хочу написать о одном из новых подходов, а именно о Progressive Web Apps.



Читать далее
Total votes 17: ↑12 and ↓5 +7
Comments 13

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

Reading time 8 min
Views 41K


GitHub предоставил возможность миллионам разработчиков с легкостью публиковать свои проекты и тем самым привлекать пользователей и единомышленников. Часто перед разработчиками возникает проблема неэффективного использования ресурсов — они тратят сотни часов на создание проекта с целью продвинуть его на GitHub, а получают максимум две звезды.
Читать дальше →
Total votes 88: ↑74 and ↓14 +60
Comments 37

Ищем и скачиваем непопулярные и старые файлы в интернете

Reading time 14 min
Views 201K
Преимущественно медиафайлы. На полном серьезе, без шуток.

Введение

Бывает, случается так, что вы хотите скачать альбом 2007 года исполнителя, который кроме вас известен 3.5 людям, какой-нибудь испанский ска-панк или малопопулярный спидкор европейского происхождения. Находите BitTorrent-раздачу, ставите на закачку, быстро скачиваете 14.7%, и… все. Проходит день, неделя, месяц, а процент скачанного не увеличивается. Вы ищете этот альбом в поисковике, натыкаетесь на форумы, показывающие ссылки только после регистрации и 5 написанных сообщений, регистрируетесь, флудите в мертвых темах, вам открываются ссылки на файлообменники вроде rapidshare и megaupload, которые уже сто лет как умерли.

Попытка скачать хотя бы один файл
Увы, частая ситуация в попытке хоть что-то скачать

Такое случается. В последнее время, к сожалению, случается чаще: правообладатели и правоохранительные органы всерьез взялись за файлообмен; в прошлом году закрылись или были закрыты KickassTorrents, BlackCat Games, what.cd, btdigg, torrentz.eu, EX.ua, fs.to, torrents.net.ua, и еще куча других сайтов. И если поиск свежих рипов фильмов, сериалов, музыки, мультиков все еще не представляет большой проблемы, несмотря на многократно участившееся удаления со стороны правообладателей контента из поисковых систем, торрент-трекеров и файлообменников, то поиск и скачивание оригинала (DVD или Blu-Ray) фильмов и сериалов или просто ТВ-рипов 7-летней давности на не-английском и не-русском языке — не такая уж простая задача.
Читать дальше →
Total votes 215: ↑213 and ↓2 +211
Comments 74

Производительность старта JavaScript

Reading time 11 min
Views 27K


Веб-разработчики знают, как легко разрастаются размеры веб-страниц. Но загрузка страницы — это не просто передача байтов по проводу. Когда браузер загрузил скрипты, ему нужно их отпарсить, интерпретировать и запустить. В статье мы внимательно рассмотрим эту фазу и узнаем, почему она может стать причиной замедления запуска вашего приложения и как это исправить.
Total votes 55: ↑55 and ↓0 +55
Comments 3

Что в имени тебе моем: как качественно «пробить» человека в сети Интернет?

Reading time 5 min
Views 196K
Мы постоянно встречаемся в своей жизни с новыми людьми, и стоит констатировать, что помимо хороших друзей нам попадаются мутные товарищи, а иногда и отъявленные мошенники. Любовь наших сограждан оставить свой след в интернете и старания наших ИТ-компаний по автоматизации всего и вся позволяют нам довольно оперативно собирать интересующую информацию о конкретных персонах по открытым источникам. Чтобы это делать быстро и качественно, нам нужно владеть простой методологией разведывательной работы и знать, где и какую информацию о человеке можно добыть в интернете.
Читать дальше →
Total votes 90: ↑70 and ↓20 +50
Comments 56

То, что вам никто не говорил о z-index

Reading time 3 min
Views 356K

Проблема z-index в том, что многие просто не понимают, как он работает.
Всё, описанное ниже, есть в спецификации W3C. К сожалению, не все её читают.

Описание проблемы:


Итак, пусть у нас есть HTML код, состоящий из 3 элементов.
Каждый из них внутри себя содержит по одному . А каждый , в свою очередь, имеет свой фон: красный, зеленый и синий, соответственно. Плюс ко всему, каждый позиционирован абсолютно левого верхнего края документа таким образом, что он немного перекрывает собой следующий за ним . Первый имеет z-index
, равный 1, у остальных двух z-index не задан.
Читать дальше →
Total votes 112: ↑109 and ↓3 +106
Comments 30

Анимации на GPU: делаем это правильно

Reading time 20 min
Views 54K

Думаю, все уже знают, что современные браузеры умеют рисовать некоторые части страницы на GPU. Особенно это заметно на анимациях. Например, анимация, сделанная с помощью CSS-свойства transform выглядит гораздо приятнее и плавнее, чем анимация, сделанная через top/left. Однако на вопрос «как правильно делать анимации на GPU?» обычно отвечают что-то вроде «используй transform: translateZ(0) или will-change: transform». Эти свойства уже стали чем-то вроде zoom: 1 для IE6 (если вы понимаете, о чём я ;) для подготовки слоя для анимации на GPU или композиции (compositing), как это предпочитают называть разработчики браузеров.


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

Total votes 78: ↑78 and ↓0 +78
Comments 26

«Пишите письма»: Три техники верстки хороших email’ов

Reading time 3 min
Views 12K
Верстке писем и рассылок посвящено огромное количество обучающих статей. В таком объеме информации очень легко заблудиться, а писать письма и делать рассылку все-таки нужно. Поэтому сегодня мы подготовили материал, в котором собрали три популярные техники для эффективной верстки email’ов, подходящие для начинающих верстальщиков.


Читать дальше →
Total votes 14: ↑11 and ↓3 +8
Comments 9

Мои прохладные истории

Reading time 4 min
Views 63K
Приезжали тут представители одной западной корпорации в очередной раз. Выпили. Спросили про наши варварские особенности IT. Ну я и рассказал пару баек. Чухна не поверила, говорит, мне повезло, и это всё статистический выброс. Мне так почему-то не кажется — подобных историй у каждого с чемодан.



Один раз коллега из L2-поддержки говорит: забери сумочку на объект, раз уж в тот же город едешь. Ок, говорю, не вопрос, конечно заберу. Приезжаю в офис с портфелем, а там стоят три охранника и этот вот товарищ из L2. У них с собой сумка чёрная спортивная, здоровенная. Открывается с трудом, но всё равно открываю, заглядываю — а там одна-к-одной плашки оперативной памяти для серверов-молотилок одной компании, условно «на три буквы».

Примерно прикидываю ценность «сумочки»: говорю, что, друг, тысяч триста долларов тут, да? Не, говорит, тут полмиллиона. Езжай давай. Вот парни тебя до входа в аэропорт проводят, а дальше ты уж сам. Из аэропорта прибытия я не выходил, пока встречающий не забрал сумочку.
Читать дальше →
Total votes 116: ↑103 and ↓13 +90
Comments 93

Уменьшаем размер публикуемых npm модулей

Reading time 6 min
Views 8.1K
По умолчанию npm публикует в registry весь модуль целиком. За исключением явно указанных в .gitignore файлов. Это отбрасывает зависимости, но все равно позволяет куче не очень нужных файлов просочиться в опубликованное. После чего благодарные пользователи ждут, пока все это скачается. Для grunt, кстати, ждать придется порядка 6 мегабайт. А он такой обычно не один.

Я решил разобраться, как измерить размер своих модулей после публикации и, по возможности, этот размер уменьшить. В качестве примера буду использовать модуль check-more-types, который содержит всего несколько файлов. Плюс юнит тесты и документацию, которая собирается в README markdown файл.
Читать дальше →
Total votes 44: ↑43 and ↓1 +42
Comments 8

Язык описания шаблонов Snakeskin

Reading time 13 min
Views 9.4K
Snakeskin

This is Frank, a snake-cowboy who loves templates.




Привет! Хочу рассказать о своей разработке — языке программирования текстовых шаблонов «Snakeskin». Проекту больше трех лет, всеми детскими болезнями, я полагаю, он благополучно переболел (и излечился), поэтому хочу поделиться результатом.


Демка


Основной репозиторий


Документация


Плагины для Gulp, Grunt, Webpack и прочее


Gitter — здесь можно задать любой интересующий вопрос

Читать дальше →
Total votes 19: ↑16 and ↓3 +13
Comments 27

Внезапный диван леопардовой расцветки

Reading time 8 min
Views 83K
Если вы интересуетесь искусственным интеллектом и прочим распознаванием, то наверняка уже видели эту картинку:


А если не видели, то это результаты Хинтона и Крижевского по классификации ImageNet-2010 глубокой сверточной сетью

Давайте взглянем на ее правый угол, где алгоритм опознал леопарда с достаточной уверенностью, разместив с большим отрывом на втором и третьем месте ягуара и гепарда.

Это вообще довольно любопытный результат, если задуматься. Потому что… скажем, вы знаете, как отличить одного большого пятнистого котика от другого большого пятнистого котика? Я, например, нет. Наверняка есть какие-то зоологические, достаточно тонкие различия, типа общей стройности/массивности и пропорций тела, но мы же все-таки говорим о компьютерном алгоритме, которые до сих пор допускают какие-то вот такие достаточно глупые с человеческой точки зрения ошибки. Как он это делает, черт возьми? Может, тут что-то связанное с контекстом и фоном (леопарда вероятнее обнаружить на дереве или в кустах, а гепарда в саванне)? В общем, когда я впервые задумался над конкретно этим результатом, мне показалось, что это очень круто и мощно, разумные машины где-то за углом и поджидают нас, да здравствует deep learning и все такое.

Так вот, на самом деле все совершенно не так.
под катом пятна
Total votes 148: ↑145 and ↓3 +142
Comments 141

Всё (или почти всё) о пробеле

Reading time 13 min
Views 133K
Как следует из заголовка, речь в статье пойдёт о неотъемлемой части любого русскоязычного (и не только) текста — о пробеле. Мы затронем историю пробела, виды пробелов, вопросы употребления пробела в веб-типографике.

Вообще говоря, пробел — это любое пустое место в рукописном, печатном или отображаемом на любом другом носителе тексте. Так что пробелы бывают разные:
  • спусковые (большие вертикальные пропуски в первой полосе издания) и концевые пробелы полосы,
  • абзацные отступы и концевые пробелы абзаца,
  • межстрочные пробелы (между строками текста),
  • межсловные пробелы (между словами в одной строке),
  • межбуквенные пробелы (между буквами в слове).
Далее речь пойдёт о межсловных пробелах, разделяющих слова, и функционально принадлежащих к знакам препинания.
Читать дальше →
Total votes 134: ↑130 and ↓4 +126
Comments 132

WebGL для всех

Reading time 11 min
Views 52K


Идея данной статьи родилась после нескольких мучительных недель изучения WebGL. На личном примере выяснилось, что люди, не сталкивающиеся до этого с 3D-графикой, имеют в основном ошибочные представления о работе данной технологии. К тому же была проблема с поиском информации в интернете.

WebGL, в отличие от Javascript, имеет высокий порог вхождения, его до сих пор мало кто использует, а ещё меньше тех, кто об этом пишет. Большинство руководств или статей перепрыгивают сразу на использование какой-нибудь библиотеки. Но мы-то с вами знаем, что большие универсальные инструменты не всегда пригодны для наших задач или, возможно, делают это на неприемлемом уровне: проигрывают в скорости, поставляются с ненужным багажом и т.д.

Этой статьёй хочется облегчить порог вхождения в чистый WebGL, дать начальное представление и подсказать, куда двигаться дальше.
Поехали!
Total votes 70: ↑66 and ↓4 +62
Comments 24

Абсолютный минимум. Как квантовая теория объясняет наш мир

Reading time 4 min
Views 30K
Привет, Хаброжители!
Мы пополнили нашу серию New Science книгой Майкла Файера

image

Физика — это сложнейшая комплексная наука, она насколько сложна, настолько и увлекательна. Если отбросить математическую составляющую, физика сразу становится доступной любому человеку, обладающему любопытством и воображением. Мы легко поймем концепцию теории гравитации, обойдясь без сложных математических уравнений. Поэтому всем, кто задумывается о том, что делает ягоды черники синими, а клубники — красными; кто сомневается, что звук распространяется в виде волн; кто интересуется, почему поведение света так отличается от любого другого явления во Вселенной, нужно понять, что все дело — в квантовой физике.
Эта книга презентует (и демистифицирует) для обычных людей волшебный мир квантовой науки, как ни одна другая книга. Она рассказывает о базовых научных понятиях, от световых частиц до состояний материи и причинах негативного влияния парниковых газов, раскрывая каждую тему без использования специфической научной терминологии — примерами из обычной повседневной жизни. Безусловно, книга по квантовой физике не может обойтись без минимального набора формул и уравнений, но это необходимый минимум, понятный большинству читателей. По мнению автора, книга, популяризирующая науку, должна быть доступной, но не опускаться до уровня читателя, а поднимать и развивать его интеллект и общий культурный уровень.Написанная в лучших традициях Стивена Хокинга и Льюиса Томаса, книга популяризирует увлекательные открытия из области квантовой физики и химии, сочетая представления и суждения современных ученых с яркими и наглядными примерами из повседневной жизни.
Читать дальше →
Total votes 21: ↑15 and ↓6 +9
Comments 21

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity