Pull to refresh
0
Виктор Гвоздев @Vicnailread⁠-⁠only

Програмист

Send message

Пишем простой WYSIWYG-редактор с помощью ProseMirror

Reading time7 min
Views8.6K
Когда в Sports.ru понадобился свой WYSIWYG-редактор, мы решили сделать его на основе библиотеки ProseMirror. Одной из ключевых особенностей этого инструмента является модульность и широкие возможности кастомизации, поэтому с его помощью можно очень тонко подогнать редактор под любой проект. В частности, ProseMirror уже используют в The New York Times и The Guardian. В этой статье мы расскажем о том, как с помощью ProseMirror написать свой WYSIWYG-редактор.

Пишем простой WYSIWYG-редактор с помощью ProseMirror
Читать дальше →
Total votes 14: ↑12 and ↓2+10
Comments3

Витамин D. Краткий экскурс

Reading time8 min
Views118K
Приветствую всех Хаброжителей!

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

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

Пишу простым языком, с минимумом медицинской и фармацевтической терминологии.
Читать дальше →
Total votes 102: ↑84 and ↓18+66
Comments386

Оптимизация node.js приложения

Reading time5 min
Views16K
Дано: старое http node.js приложение и возросшая нагрузка на него.

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

Давайте попробуем пойти путем оптимизации и разобраться, как можно найти и улучшить слабые места приложения. А быть может ускориться не трогая ни строчки кода :)

Всех заинтересованных добро пожаловать под кат!
Читать дальше →
Total votes 48: ↑45 and ↓3+42
Comments11

Как в Android'е передать переменную из фрагмента в активность?

Reading time4 min
Views17K
Рассказ о том, как в Android'е передать информацию из фрагмента (Fragment) в активность (Activity). Информация будет полезной для новичков (джуниоров), осваивающих программирование для Android, и вряд ли будет интересной для миддлов и сеньоров.

Запускаем IDE (integrated development environment) Android Studio. Создаём новый проект: File -> New -> New Project. Выбираем «Empty Activity», жмём «Next».
Читать дальше →
Total votes 29: ↑17 and ↓12+5
Comments26

Делаем проект на Node.js с использованием Mongoose, Express, Cluster. Часть 2.1

Reading time7 min
Views20K

Введение


Здраствуйте, дорогие хабровчане! Сегодня у нас в основном будут маленькие изменения, но изменений много. В этой части мы будем:


  • Создавать свой логгер
  • Записывать в лог запросы и время их обработки
  • Исправлять ошибки, которые мы допустили в первой части.
  • Разбираться с авторизациеей
  • Разбираться с некоторыми классами
  • Конфиги!
Читать дальше →
Total votes 19: ↑15 and ↓4+11
Comments8

Добавление водяного знака на все картинки сайта

Reading time5 min
Views18K

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


Мы решили написать универсальный скрипт, который можно запустить из консоли или прямо в браузере и обновить все картинки на сайте.

Читать дальше →
Total votes 32: ↑12 and ↓20-8
Comments29

Дайджест свежих материалов из мира фронтенда за последнюю неделю №320 (18 — 24 июня 2018)

Reading time3 min
Views13K
Предлагаем вашему вниманию подборку с ссылками на новые материалы из области фронтенда и около него.


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

Создание игры Tower Defense в Unity — Часть 2

Reading time18 min
Views21K
image

Это вторая часть туториала «Создание игры Tower Defense в Unity». Мы создаём в Unity игру жанра tower defense, и к концу первой части, научились размещать и апгрейдить монстров. Также у нас есть один враг, нападающий на печенье.

Однако враг пока не знает, куда ему смотреть! Кроме того, нападение в одиночку выглядит странно. В этой части туториала мы добавим волны врагов и вооружим монстров, чтобы они могли защищать драгоценную печеньку.
Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments1

Опыт настройки и использования WSL (подсистемы Linux в Windows 10)

Reading time9 min
Views253K

К написанию данной статьи меня побудил вопрос на Тостере, связанный с WSL. Я, после нескольких лет использования систем на ядре Linux, около полугода назад перешел к использованию Windows 10 на домашнем ПК. Зависимость от терминала и Linux окружения в моей работе практически сразу привели меня к вопросу: или ставить виртуалку или попробовать WSL. Я выбрал второе, и остался вполне доволен.


Под катом я расскажу как установить и настроить WSL, на какие я наткнулся проблемы и ограничения, как запускать Linux приложения из Windows и наоборот, а так же как интегрировать элементы окружения Xfce в окружение рабочего стола Windows.


Читать дальше →
Total votes 67: ↑64 and ↓3+61
Comments82

Синонимы, которые сбивают с толку новичков: say, tell, speak, talk

Reading time4 min
Views23K
Английский язык, как и русский, богат на многозначные слова. А еще довольно часто бывает так, что в русском мы используем одно многозначное слово, а в английском для каждого значения отводится отдельное слово. Со временем студенты, конечно, запоминают разницу. Если же вы только начали изучать язык, то специально для вас мы подготовили серию статей о синонимах, в использовании которых новички ошибаются чаще всего. Давайте вместе разберемся, чем же эти слова друг от друга отличаются и как употреблять их в речи правильно.

image
Читать дальше →
Total votes 25: ↑23 and ↓2+21
Comments20

Идея о том, как можно создать единый трекер здоровья с системой принятия решений

Reading time16 min
Views5.7K
В наше время существует множество различных программ для отслеживания тех или иных показателей организма человека. Однако, нет способа собирать их в одном месте и эффективно анализировать. Нужна программа, которая будет делать три вещи — позволять эффективно собирать данные (иметь набор строго определённых типов с границами и инструкциями), иметь мощный поисковик для нарезки данных, их сопоставления и представления в различных формах, а также возможность писать и сохранять интерпретации к этим данным.

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

В статье представлены реальные примеры из жизни, в которых трекинг был полезен или просто необходим. Рассмотрены переменные, которые можно отслеживать и сопоставлять. Среди них есть физиологические показатели (пульс, давление), показатели окружающей среды (температура, яркость солнца, магнитное поле), питание, а также психологические показатели (индекс счастья, восприятие мультимедиа, хронометрика обучения).


Читать дальше →
Total votes 11: ↑10 and ↓1+9
Comments16

Как я делал свой учет финансов под андроид с блэкджеком, СМС и ФНС

Reading time9 min
Views45K

Введение


Все началось в далеком 2011-м году, когда я купил свой первый андроид смартфон и открыл для себя удивительный мир андроид маркета. Именно там я нашел великолепное приложение для учета финансов Financisto. Несколько лет я трекал в нем свои расходы и доходы, сильно привык, однако были и слабые стороны:


  • необходимость вводить все транзакции вручную. Притом, что доля безналичных платежей непреклонно росла, а банк на каждый чих шлет вам смс.
  • нет глобального взгляда на бюджет в длительном временном разрезе. То есть хотелось видеть таблицу, предположим, на год, где для каждого месяца было бы видно, сколько планировалось потратить и заработать и сколько вышло по факту, плюс итого по всем строкам и столбцам. Тут ориентиром был YNAB.
  • нет синхронизации между устройствами. Да был Flowzr, но как-то он мне не зашел.

Если вторая проблема решилась экспортом в CSV и всемогущим экселем, то с остальными нужно было что-то делать. Очевидный вариант — сменить программу. Поизучав предложение, пришел к выводу, что все приложения делятся на скудные по функционалу и на дорогие:) Тем временем шел 2015-й год и мне все сильнее хотелось изучить разработку под мобильные девайсы. Что ж, звезды сходятся, принято решение пилить свое приложение!


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



Читать дальше →
Total votes 46: ↑45 and ↓1+44
Comments67

Открытый вебинар: «Области видимости и невидимости»

Reading time1 min
Views2.2K
И снова здравствуйте!

Делимся с вами очередным открытым уроком, который мы проводили в рамках курса «Разработчик C++». На уроке Сергей Кольцов разбирал проблему деинициализации, которая довольно часто возникает в разработке ПО с использованием legacy или native-кода.


Как всегда ждём вопрос и комментарии тут или сегодня на Дне открытых дверей.
Total votes 12: ↑11 and ↓1+10
Comments0

Vue.js и как его понять

Reading time8 min
Views47K
В своей работе, мне относительно недавно пришлось столкнуться с фреймворком Vue.js, т.к. до этого, я занимался в основном backend разработкой, пришлось со многим разбираться и многое было сложновато понять, особенно, когда раньше использовал только jQuery. В рамках данной статьи, я хочу помочь своему читателю разобраться с теми проблемами в понимании, с которыми столкнулся я. Конечно проблемы на этапе изучения чего-то нового у всех возникают разные, но и не мало тех, у кого они будут похожи, именно на это и будет направлена данная статья.
Читать дальше →
Total votes 18: ↑15 and ↓3+12
Comments15

Хуки жизненного цикла Vue.js

Reading time4 min
Views182K


Хуки жизненного цикла (lifecycle hooks) — важная часть любого серьёзного компонента. Нам часто нужно знать, когда компонент был создан, добавлен в DOM, обновлён или уничтожен. Хуки жизненного цикла показывают нам, как работает «за кулисами» выбранная библиотека. Они часто вызывают у новичков трепет или беспокойство. К счастью, понять принцип работы хуков несложно, см. схему:

Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments14

Полезное дизайнеру / разработчику. Свежие утилиты и инструменты для ускорения работы. Выпуск № 9

Reading time4 min
Views20K


Пока дизайнеры продолжают испытывать восторг от появления возможности прототипирования в двух известных инструментах, анонсированных в один день; мир независимых разработчиков продолжает выпускать всякие нужные инструменты. В 9-м выпуске 20 ссылок
Читать дальше →
Total votes 20: ↑18 and ↓2+16
Comments1

Пишем компонент — таблицу, не совсем обычным способом

Reading time6 min
Views26K
Еще одна небольшая статейка попроще вдогонку. Расскажу, как я рисую таблицы во Vue.

Компонентов-таблиц для Vue наделано немало. С различными возможностями. И везде по-разному таблица собирается в template страницы или какого-то компонента.

В основном происходит это как-то так:

<template>
  <cmp-table :items="items" :columns="columns"/>
</template>

<script>
export default {
  name: 'page',
  data() {
    return {
      items: [ 
        { id: 1, name: 'Sony' } , 
        { id: 2, name: 'Apple' }, 
        { id: 3, name: 'Samsung' } ],
      columns: [ 
        { prop: 'id', title: 'ID' }, 
        { prop: 'name', title: 'Name' } ]
    }
  }
}
</script>
Читать дальше →
Total votes 19: ↑17 and ↓2+15
Comments12

Непрерывные переходы между общими элементами: из RecyclerView во ViewPager

Reading time9 min
Views14K

Использование переходов в Material Design дает приложению визуальную непрерывность. Пока пользователь ходит по приложению, элементы интерфейса в нем меняют состояние. Анимации переходов соответствующих элементов от одного экрана к другому подчеркивают идею о том, что интерфейсы осязаемы.


Целью этой статьи является предоставление гайдлайнов и реализации для определенных непрерывных переходов между фрагментами ОС Android. Мы продемострируем, как реализовать переход из картинки в RecyclerView в картинку внутри ViewPager и обратно, используя "общие элементы" (shared elements) чтобы определить, как и какие элементы участвуют в переходе. Мы также обработаем сложный случай перехода обратно в сетку после листания на странице к элементу, который в сетке изначально был за пределами экрана.


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



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


От переводчика. Далее будет довольно много кода и гифок (по прикидкам, мегабайт на 20).

Читать дальше →
Total votes 30: ↑27 and ↓3+24
Comments0

Введение в Data Vault

Reading time6 min
Views119K


Большинство компаний сегодня накапливают различные данные, полученные в процессе работы. Часто данные приходят из различных источников — структурированные и не очень, иногда в режиме реального времени, а иногда они доступны в строго определенные периоды. Все это разнообразие нужно структурированно хранить, чтоб потом успешно анализировать, рисовать красивые отчеты и вовремя замечать аномалии. Для этих целей проектируется хранилище данных (Data Warehouse, DWH).

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

Кому будет интересна эта статья?


  • Ищете более функциональную альтернативу схеме «звезды» и Третьей Нормальной Форме?
  • У Вас уже есть хранилище данных, но его тяжело дорабатывать?
  • Нужна хорошая поддержка историчности, а текущая архитектура для этого не подходит?
  • Возникают проблемы при сборе данных из нескольких источников?

Если на какой-либо из этих вопросов Вы ответили утвердительно, и при этом не знакомы с Data Vault — прошу заглянуть под кат!
Читать дальше →
Total votes 9: ↑9 and ↓0+9
Comments2

Основные принципы C++: Правила выражений и операторов

Reading time5 min
Views19K
Бобра!

Что ж, мы плавно выходим на старт второго потока группы «Разработчик С++» и разбираем интересные материалы, которые накопились у преподавателя в свободное от работы и преподавания время. Сегодня рассмотрим (а потом и продолжим) серию материалов, где разбираются отдельные пункты С++ Core Guidelines.

Поехали.

В C++ Core Guidelines много правил, посвященных выражениям и операторам. Если быть точным, то более 50 правил посвящено объявлениям, выражениям, операторам и арифметическим выражениям.



*перевод
Информативные названия

Оптимальная длина переменных

  • Не должны быть слишком длинными (maximimNumberOfPointsInModernOlympics.) или слишком короткими (например, x, x1)
  • Длинные названия сложно печатать, короткие названия недостаточно информативны..
  • Дебажить программы с названиями от 8 до 20 символов гораздо проще
  • Гайдлайны не заставляют вас срочно менять названия переменных на имена из 9-15 или 10-16 символов. Но если вы найдете в своем коде более короткие названия, убедитесь, что они достаточно информативны.

Слишком длинные: numberOfPeopleOnTheUsOlympicTeam; numberOfSeatsInTheStadium; maximumNumberOfPointsInModernOlympics
Слишком короткие: n; np; ntmn; ns; nslsd; m; mp; max; points
В самый раз: numTeamMembers, teamMembersCount

Читать дальше →
Total votes 16: ↑14 and ↓2+12
Comments32

Information

Rating
Does not participate
Location
Красногорск, Москва и Московская обл., Россия
Date of birth
Registered
Activity

Specialization

Fullstack Developer, Web Developer
Lead
Git
Linux
MongoDB
Nginx
RESTful API
PostgreSQL
Docker