Как стать автором
Обновить
134
0
Дулин Марат @mdevils

FullStack Software Developer

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

Сборник упражнений по TypeScript

Время на прочтение1 мин
Количество просмотров13K
В прошлом году я в свободное время написал сборник упражнений по TypeScript для своей команды, чтобы помочь ребятам подтянуть свой уровень. В этом году доработал напильником и решил выложить в общий доступ. Задания начинаются с простых и заканчиваются очень сложными, где нужны не только знания TypeScript, но и знания node.js.

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


Пользуйтесь на здоровье. Можете слать мне пулл-реквесты и задавать вопросы. Фидбек приветствуется.
Всего голосов 7: ↑5 и ↓2+3
Комментарии9

JSCS, CST и новое начало

Время на прочтение3 мин
Количество просмотров8.4K
Мы наконец-то выпустили JSCS версии 3.0, и надо сказать, что помимо энтузиазма, мы испытываем еще и некоторую грусть. Над новой мажорной версией мы работали много и долго, это было довольно интересно и местами захватывающе. Грустно от того, что это будет последней версией JSCS.

С помощью вас, JavaScript разработчиков, которые помогали JSCS, проект смог достичь успеха. Около 5 тысяч звезд на гитхабе и более 27 тысяч скачиваний npm пакета в день. Тем не менее, мы приняли решение не выпускать новых мажорных версий и впоследствии прекратить работу над проектом.
Что дальше?
Всего голосов 26: ↑25 и ↓1+24
Комментарии13

Как ESLint реагирует на ситуацию с удалением пакетов из NPM

Время на прочтение3 мин
Количество просмотров13K
После того, как произошла ситуация с удалением пакетов из NPM, которая затронула огромное количество пользователей пакетов babel, jscs и многих других (об этом можно почитать здесь: «A discussion about the breaking of the Internet»), многие разработчики Open Source начали рассуждать о будущем NPM и экосистемы JS в целом.

Мнения разделились:


Ну а команды крупных Open Source пакетов, на которые свалилось огромное количество тикетов в github, всерьез задумались о том, как не допустить такой ситуации в будущем. Особенно пострадали те проекты, которые часто используются в CI, так как именно пользователи CI в первую очередь заметили проблемы с отсутствующими зависимостями. Одним из таких проектов является ESLint, имеющий порядка 70 тысяч установок в день, большинство из которых приходится на CI-сборки.
Читать дальше →
Всего голосов 21: ↑19 и ↓2+17
Комментарии21

JSCS: JavaScript Code Style

Время на прочтение3 мин
Количество просмотров59K
Когда девять месяцев назад я написал для себя маленькую консольную утилиту, я и не подозревал, что вскоре она превратится в серьёзный и единственный в своём роде инструмент, которым будут пользоваться даже такие известные всем команды, как jQuery, Bootstrap, Angular. Сейчас, когда я пишу эту статью, у моего проекта на гитхабе 1010 звёздочек, и мне очень радостно думать о том, что так много людей смогли с помощью моей придумки сделать свою работу удобнее.

История этого проекта началась с моей личной боли.

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

Читать дальше →
Всего голосов 126: ↑121 и ↓5+116
Комментарии118

Vow: самые быстрые промисы

Время на прочтение1 мин
Количество просмотров13K
Хочу предоставить вашему вниманию библиотеку Vow, которую написал мой коллега Дмитрий Филатов dfilatov.

Библиотека реализует Promises/A+, работает очень быстро и требует малого объема памяти. По тестам производительности сильно опережает Q, но при этом сохраняет асинхронную манеру работы.

Работа с Vow выглядит так же просто, как работа с Q. Из недостатков (по сравнению с Q) можно лишь выделить отсутствие progress.

Пример кода с использованием Vow:
function readFile(filename, encoding) {
    var promise = Vow.promise();
    fs.readFile(filename, encoding, function(err, data) {
        if (err) return promise.reject(err);
        promise.fulfill(data);
    });
    return promise;
}
Vow.all([readFile('test1.txt', 'utf8'), readFile('test2.txt', 'utf8')]).then(function(results) {
    console.log(results.join('\n'));
});

Читать дальше →
Всего голосов 43: ↑36 и ↓7+29
Комментарии19

Две истории о TimeMachine

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

Time Machine — инновационная система резервного копирования, встроенная непосредственно в Mac OS X 10.5 «Leopard». Для работы cовместно с Time Machine в среде Mac OS X компанией Apple Inc. выпущена точка доступа Time Capsule.

Хочу рассказать две истории о том, как Time Machine спас меня.

Прошу под кат
Всего голосов 133: ↑78 и ↓55+23
Комментарии134

Победа копирастов на примере PlayStation Portable

Время на прочтение2 мин
Количество просмотров1.4K
На хабре часто обсуждают возможное будущее, в котором не будет пиратства. И тогда производители контента снизят цены, будут лояльными к пользователям и чуть ли не будут раздавать все за бесценок. Так ли это будет? Похоже, что совсем нет.
Читать дальше →
Всего голосов 167: ↑113 и ↓54+59
Комментарии274

Несколько советов для PHP-разработчиков

Время на прочтение4 мин
Количество просмотров7.9K
image Хочу опубликовать небольшой сборник советов для современных PHP-разработчиков. Я умышленно не связываю их с теми или иными фреймворками, библиотеками и тп. Надеюсь, что мои советы помогут кому-то лучше понять PHP, научиться лучше его использовать. Некоторые из них могут быть не специфичны для PHP, но для программирования в общем.
Читать дальше →
Всего голосов 214: ↑156 и ↓58+98
Комментарии202

encached: кеширующий сервер

Время на прочтение2 мин
Количество просмотров2.2K
Идея написания сервера кеша приходила ко мне давно, но небыло подходящего повода и инструмента, чтобы начать над ним работу. Сделать свой сервер кеша мне хотелось по двум причинам: опыт, возможность легко добавлять нужные мне функции (кто видел код memcached, тот меня поймет). Основной проблемой для меня был C++. Несмотря на то, что я нередко с ним сталкиваюсь, он мне не нравится совсем. Я не буду начинать холивар и писать о его недостатках. Он мне не нравится так же как кефир с детства: мы с ним несовместимы. Поэтому для меня было большой новостью существование FreePascal. Когда-то давно у меня был опыт работы на Delphi, поэтому с Pascal я был «на ты». Особенно меня удивило то, что FreePascal оказался кроссплатформенным (чем Delphi совсем не блистал).
Читать дальше →
Всего голосов 77: ↑46 и ↓31+15
Комментарии95

Лечим треск при проигровании звуков в Pidgin

Время на прочтение1 мин
Количество просмотров2K
Публикую статью от guglez.

Часто сталкиваюсь с неприятной проблемой — при проигровании Pidgin-ом звуков идет неприятный треск. Проблему эту наблюдал не только у себя. Сегодня решил наконец-то разобраться в чем дело.
Читать дальше →
Всего голосов 45: ↑38 и ↓7+31
Комментарии31

Потоки данных

Время на прочтение3 мин
Количество просмотров69K
BASH Статья посвящена работой с потоками данных в bash. Я постарался написать ее наиболее доступным и простым языком, чтобы было понятно даже новичкам в Linux.


В одной из моих статей мы рассматривали запись звука в файл с помощью команды:

cat /dev/audio > /tmp/my.sound

Эта команда читает файл (устройство) /dev/audio с помощью команды cat и перенаправляет информацию из него в файл /tmp/my.sound (с помощью оператора >).

Читать дальше →
Всего голосов 109: ↑88 и ↓21+67
Комментарии43

Имена методов и функций

Время на прочтение3 мин
Количество просмотров35K
Изучая всякого рода системы, я обнаружил, что у многих наблюдаются проблемы с именованием методов. Это побудило меня написать статью.

странный кусок кода
Читать дальше →
Всего голосов 138: ↑120 и ↓18+102
Комментарии176

Кнопки навигации по постам

Время на прочтение1 мин
Количество просмотров638
Однажды я разбирал код Хабрахабра и обнаружил одну интересную вещь: по постам можно перемещаться используя клавиатуру.

Доступные кнопки


j — следующий пост.

k — предыдущий пост.

h — переход к началу страницы.

Работают эти кнопки на страницах с лентами постов.

Благодарности


Благодарим имперского веб-технолога Виктора Вяльчина и Лялю.
Всего голосов 106: ↑103 и ↓3+100
Комментарии53

Расширяем Хабр

Время на прочтение1 мин
Количество просмотров770
Однажды, устав играть в Counter-Strike 1.6, решил, что можно убить оставшееся время более продуктивно (особенно в условиях мирового финансового кризиса). На память мне пришла притча, приписываемая Лао-Цзы, мораль которой сводилась к тому, что из сложного можно получить простое, даже не прибегая к рисовой водке. Проще говоря, сделал два маленьких улучшения для правой панельки на странице топиков:



Чтобы установить расширения, надо иметь Firefox с установленным GreaseMonkey.
Читать дальше →
Всего голосов 85: ↑76 и ↓9+67
Комментарии69

IDE своими руками: проектирование

Время на прочтение2 мин
Количество просмотров9.9K
Давно хотелось рассказать о том как делать сложные проекты с проектирования до выпуска. Считается, что IDE — это довольно сложные системы. Это очень хорошо. Есть простор для проектирования, применения паттернов, построения иерархии классов.

Примеры успешных IDE:
  • Visual Studio
  • Eclipse
  • IDEA
Мне уже не терпится начать…
Читать дальше →
Всего голосов 95: ↑66.5 и ↓28.5+38
Комментарии150

Горячие клавиши

Время на прочтение1 мин
Количество просмотров1.4K
Чтобы порадовать хабрапользователей, мы ввели горячие клавиши на Хабре:

Ctrl + ← (Alt + ←)
    Переход на предыдущую страницу (для страниц с постраничной навигацией)

Ctrl + → (Alt + →)
    Переход на следующую страницу (для страниц с постраничной навигацией)

Alt + R
    Подгрузка новых комментариев (на странице просмотра хабратопика)

Alt + C
    Переход к следующему новому комментарию (на странице просмотра хабратопика)

Если горячие клавиши не заработают, попробуйте сбросить кэш броузера.
Всего голосов 86: ↑75 и ↓11+64
Комментарии49

Купил новый компьютер? Старый тоже пригодится

Время на прочтение4 мин
Количество просмотров7.7K
Так получилось, что я люблю программирование и компьютеры. Поэтому у каждого члена моей семьи было по одному PC. У меня стационарный (Ubuntu), у мамы тоже (Windows XP), а у жены — ноутбук (Windows Vista). Была задача — организовать интернет для всей этой техники. Провайдер мне его отдает по PPTP. Недолго думая (и будучи лентяем) я докупил обычные Ethernet-сетевые карты, вставил на стационарные компы и соединил все компьютеры проводами (если честно, я еще купил WiFi модуль для своего компа, но тупо не смог настроить для ubuntu).

Шло время, потребности росли (особенно потребности в мобильности рабочего места) и я стал обладателем ноутбука MacBook Pro. Что делать со старым компьютером? Выбрасывать? Было жалко… Ведь почти руками его собирал в течение двух лет. И тогда я решил — будет сервером! Я почистил компьютер и заново поставил туда Ubuntu Linux.
Читать дальше →
Всего голосов 225: ↑159 и ↓66+93
Комментарии250

Работаем с массивами в JavaScript без велосипедов

Время на прочтение2 мин
Количество просмотров42K
Эту статью я хочу посвятить тонкостям работы с массивами в JavaScript.

Наверное, у каждого JavaScript-разработчика есть фунции (самописные или библиотечные) $ (выбор элемента по id) и $$ (выбор элементов по CSS-классу). Если мы выбираем несколько элементов по CSS-классу, то мы хотим произвести с ними определенные действия. Напрашивается цикл. А если нужна выборка среди них? Преобразования? Действия над нужными элементами? Непростой получается код.

JavaScript не стоит на месте, Mozilla неустанно улучшает JavaSript в своем движке Gecko и грех не пользоваться этими нововведениями. В JavaScript 1.6 добавлены новые полезные методы для упрощения кода, необходимого в вышеописанных ситуациях.
Читать дальше →
Всего голосов 49: ↑44 и ↓5+39
Комментарии57

Композиции к месту

Время на прочтение1 мин
Количество просмотров929
Довольно часто я смотрю различные фильмы/анимационные фильмы и встречаю моменты, когда песня очень-очень в тему (иногда до слёз раздирает).

Mulholland Drive & Prison Break


В этих двух замечательных фильмах в очень удачный момент звучала песня:
Rebekah Del Río — Llorando
Читать дальше →
Всего голосов 16: ↑5 и ↓11-6
Комментарии5

Информация

В рейтинге
Не участвует
Откуда
Berlin, Berlin, Германия
Дата рождения
Зарегистрирован
Активность