Pull to refresh
134
0
Дулин Марат @mdevils

FullStack Software Developer

Send message

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

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

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


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

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

Reading time3 min
Views8.5K
Мы наконец-то выпустили JSCS версии 3.0, и надо сказать, что помимо энтузиазма, мы испытываем еще и некоторую грусть. Над новой мажорной версией мы работали много и долго, это было довольно интересно и местами захватывающе. Грустно от того, что это будет последней версией JSCS.

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

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

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

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


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

JSCS: JavaScript Code Style

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

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

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

Читать дальше →
Total votes 126: ↑121 and ↓5+116
Comments118

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

Reading time1 min
Views13K
Хочу предоставить вашему вниманию библиотеку 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'));
});

Читать дальше →
Total votes 43: ↑36 and ↓7+29
Comments19

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

Reading time2 min
Views13K

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

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

Прошу под кат
Total votes 133: ↑78 and ↓55+23
Comments134

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

Reading time2 min
Views1.4K
На хабре часто обсуждают возможное будущее, в котором не будет пиратства. И тогда производители контента снизят цены, будут лояльными к пользователям и чуть ли не будут раздавать все за бесценок. Так ли это будет? Похоже, что совсем нет.
Читать дальше →
Total votes 167: ↑113 and ↓54+59
Comments274

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

Reading time4 min
Views7.9K
image Хочу опубликовать небольшой сборник советов для современных PHP-разработчиков. Я умышленно не связываю их с теми или иными фреймворками, библиотеками и тп. Надеюсь, что мои советы помогут кому-то лучше понять PHP, научиться лучше его использовать. Некоторые из них могут быть не специфичны для PHP, но для программирования в общем.
Читать дальше →
Total votes 214: ↑156 and ↓58+98
Comments202

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

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

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

Reading time1 min
Views2K
Публикую статью от guglez.

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

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

Reading time3 min
Views70K
BASH Статья посвящена работой с потоками данных в bash. Я постарался написать ее наиболее доступным и простым языком, чтобы было понятно даже новичкам в Linux.


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

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

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

Читать дальше →
Total votes 109: ↑88 and ↓21+67
Comments43

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

Reading time1 min
Views661
Однажды я разбирал код Хабрахабра и обнаружил одну интересную вещь: по постам можно перемещаться используя клавиатуру.

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


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

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

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

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

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


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

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

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



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

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

Reading time2 min
Views10K
Давно хотелось рассказать о том как делать сложные проекты с проектирования до выпуска. Считается, что IDE — это довольно сложные системы. Это очень хорошо. Есть простор для проектирования, применения паттернов, построения иерархии классов.

Примеры успешных IDE:
  • Visual Studio
  • Eclipse
  • IDEA
Мне уже не терпится начать…
Читать дальше →
Total votes 94: ↑66 and ↓28+38
Comments150

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

Reading time1 min
Views1.4K
Чтобы порадовать хабрапользователей, мы ввели горячие клавиши на Хабре:

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

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

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

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

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

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

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

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

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

Reading time2 min
Views42K
Эту статью я хочу посвятить тонкостям работы с массивами в JavaScript.

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

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

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

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

Mulholland Drive & Prison Break


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

Information

Rating
Does not participate
Location
Berlin, Berlin, Германия
Date of birth
Registered
Activity